From 935a2aa5606d699104caebaae28cd56823c92b1f Mon Sep 17 00:00:00 2001 From: Hugo Shaka Date: Wed, 16 Oct 2024 14:06:30 -0400 Subject: [PATCH 1/5] Remove autoupdate_agent_plan (#47629) --- api/client/proto/event.pb.go | 726 ++++++++------- .../autoupdate/v1/autoupdate_agent_plan.pb.go | 831 ------------------ .../autoupdate/v1/autoupdate_service.pb.go | 627 ++++--------- .../v1/autoupdate_service_grpc.pb.go | 220 +---- .../autoupdate/v1/autoupdate_agent_plan.proto | 136 --- .../autoupdate/v1/autoupdate_service.proto | 37 - .../teleport/legacy/client/proto/event.proto | 5 +- .../autoupdate/autoupdatev1/service_test.go | 12 - 8 files changed, 526 insertions(+), 2068 deletions(-) delete mode 100644 api/gen/proto/go/teleport/autoupdate/v1/autoupdate_agent_plan.pb.go delete mode 100644 api/proto/teleport/autoupdate/v1/autoupdate_agent_plan.proto diff --git a/api/client/proto/event.pb.go b/api/client/proto/event.pb.go index 1ec0f9465ff8..ac356c9c606b 100644 --- a/api/client/proto/event.pb.go +++ b/api/client/proto/event.pb.go @@ -179,7 +179,6 @@ type Event struct { // *Event_AutoUpdateVersion // *Event_StaticHostUserV2 // *Event_UserTask - // *Event_AutoUpdateAgentPlan // *Event_DynamicWindowsDesktop // *Event_ProvisioningPrincipalState Resource isEvent_Resource `protobuf_oneof:"Resource"` @@ -670,13 +669,6 @@ func (x *Event) GetUserTask() *v112.UserTask { return nil } -func (x *Event) GetAutoUpdateAgentPlan() *v111.AutoUpdateAgentPlan { - if x, ok := x.GetResource().(*Event_AutoUpdateAgentPlan); ok { - return x.AutoUpdateAgentPlan - } - return nil -} - func (x *Event) GetDynamicWindowsDesktop() *types.DynamicWindowsDesktopV1 { if x, ok := x.GetResource().(*Event_DynamicWindowsDesktop); ok { return x.DynamicWindowsDesktop @@ -1013,11 +1005,6 @@ type Event_UserTask struct { UserTask *v112.UserTask `protobuf:"bytes,67,opt,name=UserTask,proto3,oneof"` } -type Event_AutoUpdateAgentPlan struct { - // AutoUpdateAgentPlan is a resource for planning agent automatic updates. - AutoUpdateAgentPlan *v111.AutoUpdateAgentPlan `protobuf:"bytes,68,opt,name=AutoUpdateAgentPlan,proto3,oneof"` -} - type Event_DynamicWindowsDesktop struct { // DynamicWindowsDesktop is a resource for dynamic Windows desktop host. DynamicWindowsDesktop *types.DynamicWindowsDesktopV1 `protobuf:"bytes,69,opt,name=DynamicWindowsDesktop,proto3,oneof"` @@ -1155,8 +1142,6 @@ func (*Event_StaticHostUserV2) isEvent_Resource() {} func (*Event_UserTask) isEvent_Resource() {} -func (*Event_AutoUpdateAgentPlan) isEvent_Resource() {} - func (*Event_DynamicWindowsDesktop) isEvent_Resource() {} func (*Event_ProvisioningPrincipalState) isEvent_Resource() {} @@ -1176,358 +1161,350 @@ var file_teleport_legacy_client_proto_event_proto_rawDesc = []byte{ 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x32, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, - 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, - 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6c, - 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x27, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x63, 0x72, 0x6f, 0x77, 0x6e, 0x6a, - 0x65, 0x77, 0x65, 0x6c, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x72, 0x6f, 0x77, 0x6e, 0x6a, 0x65, 0x77, - 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x2f, 0x64, 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x64, - 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x79, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x79, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x3b, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x77, - 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2f, - 0x76, 0x31, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x28, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x74, 0x65, 0x6c, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2f, 0x76, - 0x31, 0x2f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x2d, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x2b, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, - 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x68, 0x6f, 0x73, - 0x74, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x74, 0x65, 0x6c, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, - 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0xd2, 0x25, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0d, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0d, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x56, - 0x32, 0x48, 0x00, 0x52, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x56, 0x32, 0x48, 0x00, 0x52, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x38, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x56, 0x32, 0x48, - 0x00, 0x52, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, - 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x04, 0x55, - 0x73, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x36, - 0x48, 0x00, 0x52, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x48, 0x00, 0x52, - 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x06, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x54, 0x75, 0x6e, 0x6e, - 0x65, 0x6c, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0d, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x54, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x47, 0x0a, 0x10, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x10, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, - 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x33, 0x48, 0x00, 0x52, - 0x0d, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, - 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x57, 0x65, 0x62, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, - 0x32, 0x48, 0x00, 0x52, 0x0a, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x2f, 0x0a, 0x08, 0x57, 0x65, 0x62, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x56, 0x33, 0x48, 0x00, 0x52, 0x08, 0x57, 0x65, 0x62, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x5c, 0x0a, 0x17, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x14, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, 0x17, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, - 0x0a, 0x16, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x32, 0x48, - 0x00, 0x52, 0x16, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x0e, 0x41, 0x75, 0x74, - 0x68, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0e, 0x41, 0x75, - 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x12, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x04, 0x4c, - 0x6f, 0x63, 0x6b, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x48, 0x00, 0x52, 0x04, 0x4c, 0x6f, 0x63, 0x6b, - 0x12, 0x50, 0x0a, 0x13, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x72, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, - 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x34, 0x48, 0x00, 0x52, 0x13, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x56, 0x0a, 0x15, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, - 0x6b, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, - 0x33, 0x48, 0x00, 0x52, 0x15, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, - 0x74, 0x6f, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x57, 0x69, - 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x18, 0x1b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x56, 0x33, 0x48, 0x00, 0x52, 0x0e, 0x57, - 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x12, 0x2f, 0x0a, - 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x56, 0x33, 0x48, 0x00, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x32, - 0x0a, 0x09, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x09, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x70, 0x70, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x56, 0x33, 0x48, 0x00, 0x52, - 0x03, 0x41, 0x70, 0x70, 0x12, 0x41, 0x0a, 0x10, 0x53, 0x6e, 0x6f, 0x77, 0x66, 0x6c, 0x61, 0x6b, - 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x76, 0x31, 0x2f, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x63, 0x72, 0x6f, 0x77, 0x6e, 0x6a, 0x65, 0x77, 0x65, 0x6c, + 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x72, 0x6f, 0x77, 0x6e, 0x6a, 0x65, 0x77, 0x65, 0x6c, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x64, + 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x62, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x74, 0x65, + 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x77, 0x61, 0x69, 0x74, 0x69, + 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x6b, + 0x75, 0x62, 0x65, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x74, 0x65, + 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, + 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, + 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x74, + 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x75, 0x73, + 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x2f, + 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x75, + 0x73, 0x65, 0x72, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x32, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x68, 0x6f, 0x73, 0x74, 0x75, 0x73, 0x65, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x8c, 0x25, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x3f, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, + 0x52, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x12, 0x3e, 0x0a, 0x0d, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x48, + 0x00, 0x52, 0x0d, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x3b, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x56, 0x32, 0x48, 0x00, 0x52, + 0x0c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x41, 0x0a, + 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x48, 0x00, + 0x52, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x38, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0b, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x55, 0x73, + 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x23, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x36, 0x48, 0x00, 0x52, 0x04, + 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x12, 0x3e, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x32, + 0x48, 0x00, 0x52, 0x0d, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x12, 0x47, 0x0a, 0x10, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x10, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0d, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x33, 0x48, 0x00, 0x52, 0x0d, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x41, 0x70, + 0x70, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x10, 0x53, 0x6e, 0x6f, 0x77, 0x66, 0x6c, 0x61, 0x6b, 0x65, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x4b, 0x75, 0x62, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x10, - 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x12, 0x4a, 0x0a, 0x11, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x11, 0x4b, 0x75, 0x62, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x09, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, - 0x72, 0x56, 0x31, 0x48, 0x00, 0x52, 0x09, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x72, - 0x12, 0x44, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, - 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, - 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x56, 0x31, 0x48, 0x00, 0x52, 0x16, 0x53, 0x41, 0x4d, 0x4c, 0x49, + 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x3e, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x33, + 0x48, 0x00, 0x52, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x41, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x56, 0x33, 0x48, 0x00, 0x52, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, + 0x0a, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x08, 0x57, + 0x65, 0x62, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x33, + 0x48, 0x00, 0x52, 0x08, 0x57, 0x65, 0x62, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x5c, 0x0a, 0x17, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, + 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x32, 0x48, + 0x00, 0x52, 0x17, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x16, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, 0x16, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x17, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, + 0x32, 0x48, 0x00, 0x52, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, 0x64, 0x69, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x04, 0x4c, 0x6f, 0x63, 0x6b, 0x18, + 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, + 0x63, 0x6b, 0x56, 0x32, 0x48, 0x00, 0x52, 0x04, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x50, 0x0a, 0x13, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x34, 0x48, 0x00, 0x52, 0x13, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, + 0x0a, 0x15, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, + 0x6b, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, 0x33, 0x48, 0x00, 0x52, + 0x15, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, + 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x56, 0x33, 0x48, 0x00, 0x52, 0x0e, 0x57, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x56, 0x33, 0x48, 0x00, + 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x41, 0x70, + 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, + 0x33, 0x48, 0x00, 0x52, 0x09, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x20, + 0x0a, 0x03, 0x41, 0x70, 0x70, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x56, 0x33, 0x48, 0x00, 0x52, 0x03, 0x41, 0x70, 0x70, + 0x12, 0x41, 0x0a, 0x10, 0x53, 0x6e, 0x6f, 0x77, 0x66, 0x6c, 0x61, 0x6b, 0x65, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, + 0x00, 0x52, 0x10, 0x53, 0x6e, 0x6f, 0x77, 0x66, 0x6c, 0x61, 0x6b, 0x65, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, + 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x10, 0x4b, 0x75, 0x62, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x11, + 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x11, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, + 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x09, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x56, 0x31, 0x48, + 0x00, 0x52, 0x09, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0f, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, + 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, 0x31, 0x48, + 0x00, 0x52, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x24, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x12, 0x3d, 0x0a, 0x0e, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, - 0x52, 0x0e, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x32, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x26, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x48, 0x00, 0x52, 0x09, 0x55, 0x73, 0x65, 0x72, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x55, 0x49, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, - 0x49, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x31, 0x48, 0x00, 0x52, 0x08, 0x55, 0x49, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x49, 0x6d, 0x70, - 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, - 0x52, 0x75, 0x6c, 0x65, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x49, 0x6d, - 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x4f, 0x6b, 0x74, 0x61, - 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x41, 0x73, 0x73, - 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0e, 0x4f, 0x6b, 0x74, - 0x61, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x49, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x31, - 0x48, 0x00, 0x52, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x57, 0x0a, 0x16, 0x48, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, - 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x16, 0x48, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x0a, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6c, 0x69, - 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, - 0x48, 0x00, 0x52, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x54, - 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x00, - 0x52, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x65, - 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0a, - 0x41, 0x75, 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x41, 0x75, 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x12, 0x38, 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x33, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x48, 0x00, 0x52, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x47, 0x0a, 0x0b, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x34, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x48, - 0x00, 0x52, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, - 0x69, 0x65, 0x77, 0x12, 0x6d, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x72, 0x75, 0x6c, - 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x14, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, - 0x6c, 0x65, 0x12, 0x7e, 0x0a, 0x1a, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, + 0x72, 0x56, 0x31, 0x48, 0x00, 0x52, 0x16, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x3d, 0x0a, + 0x0e, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, + 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0e, 0x53, 0x41, + 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x09, + 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x56, 0x31, 0x48, 0x00, 0x52, 0x09, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x2f, 0x0a, 0x08, 0x55, 0x49, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x27, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x49, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x56, 0x31, 0x48, 0x00, 0x52, 0x08, 0x55, 0x49, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x41, 0x0a, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, + 0x75, 0x6c, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, + 0x56, 0x31, 0x48, 0x00, 0x52, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, + 0x52, 0x75, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x41, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x41, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x31, 0x48, 0x00, 0x52, 0x0b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x38, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0b, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x57, 0x0a, 0x16, 0x48, + 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x41, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x48, 0x65, + 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x55, 0x73, + 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x2e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, + 0x52, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x4c, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6c, 0x69, 0x73, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x58, + 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x41, 0x75, 0x64, 0x69, + 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, + 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x48, 0x00, 0x52, 0x0a, 0x41, 0x75, 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x38, + 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, + 0x52, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x4c, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x65, + 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6c, 0x69, 0x73, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x48, 0x00, 0x52, 0x10, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, + 0x6d, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, + 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x14, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x7e, + 0x0a, 0x1a, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x57, 0x61, 0x69, 0x74, + 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x37, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6b, 0x75, + 0x62, 0x65, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x2e, 0x6b, 0x75, 0x62, 0x65, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x65, 0x73, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x1a, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x65, 0x73, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x12, 0x55, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x12, 0x47, 0x6c, 0x6f, - 0x62, 0x61, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x0a, 0x43, 0x72, - 0x6f, 0x77, 0x6e, 0x4a, 0x65, 0x77, 0x65, 0x6c, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x63, 0x72, 0x6f, 0x77, 0x6e, 0x6a, - 0x65, 0x77, 0x65, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x6f, 0x77, 0x6e, 0x4a, 0x65, 0x77, - 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0a, 0x43, 0x72, 0x6f, 0x77, 0x6e, 0x4a, 0x65, 0x77, 0x65, 0x6c, - 0x12, 0x4e, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x64, 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, - 0x52, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x46, 0x0a, 0x0b, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, - 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, - 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x42, 0x6f, 0x74, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x62, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, - 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x13, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x47, - 0x72, 0x61, 0x70, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x55, 0x0a, 0x10, - 0x53, 0x50, 0x49, 0x46, 0x46, 0x45, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x50, 0x49, 0x46, 0x46, 0x45, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x10, 0x53, 0x50, 0x49, 0x46, 0x46, 0x45, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, 0x41, 0x75, 0x74, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x11, 0x41, - 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x11, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, - 0x48, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x56, 0x32, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x48, 0x00, - 0x52, 0x10, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x56, 0x32, 0x12, 0x3d, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x18, 0x43, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x75, 0x73, 0x65, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x5f, 0x0a, 0x13, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x48, 0x00, 0x52, 0x13, 0x41, - 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, - 0x61, 0x6e, 0x12, 0x56, 0x0a, 0x15, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x57, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x18, 0x45, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, - 0x63, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x56, - 0x31, 0x48, 0x00, 0x52, 0x15, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x57, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x12, 0x6a, 0x0a, 0x1a, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, - 0x70, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, - 0x70, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x1a, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x31, 0x10, 0x32, 0x4a, 0x04, - 0x08, 0x3f, 0x10, 0x40, 0x52, 0x12, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, - 0x48, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x2a, 0x2a, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x00, 0x12, - 0x07, 0x0a, 0x03, 0x50, 0x55, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, - 0x54, 0x45, 0x10, 0x02, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x48, 0x00, 0x52, 0x1a, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x57, 0x61, + 0x69, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x55, + 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x10, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x39, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x0a, 0x43, 0x72, 0x6f, 0x77, 0x6e, 0x4a, + 0x65, 0x77, 0x65, 0x6c, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x63, 0x72, 0x6f, 0x77, 0x6e, 0x6a, 0x65, 0x77, 0x65, 0x6c, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x6f, 0x77, 0x6e, 0x4a, 0x65, 0x77, 0x65, 0x6c, 0x48, 0x00, + 0x52, 0x0a, 0x43, 0x72, 0x6f, 0x77, 0x6e, 0x4a, 0x65, 0x77, 0x65, 0x6c, 0x12, 0x4e, 0x0a, 0x0e, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x3b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, + 0x64, 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x46, 0x0a, 0x0b, + 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x3c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x62, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x47, 0x72, + 0x61, 0x70, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x3d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x48, 0x00, 0x52, 0x13, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x70, 0x68, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x55, 0x0a, 0x10, 0x53, 0x50, 0x49, 0x46, + 0x46, 0x45, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x3e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x50, 0x49, 0x46, 0x46, + 0x45, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x53, + 0x50, 0x49, 0x46, 0x46, 0x45, 0x46, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x56, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x41, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, + 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x11, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x48, 0x6f, 0x73, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x56, 0x32, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, + 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x53, 0x74, + 0x61, 0x74, 0x69, 0x63, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x56, 0x32, 0x12, 0x3d, + 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, + 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x54, 0x61, 0x73, + 0x6b, 0x48, 0x00, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x56, 0x0a, + 0x15, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, + 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x18, 0x45, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x57, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x56, 0x31, 0x48, 0x00, 0x52, 0x15, + 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, + 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x12, 0x6a, 0x0a, 0x1a, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x1a, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x69, 0x6e, 0x67, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4a, 0x04, 0x08, + 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x31, 0x10, 0x32, 0x4a, 0x04, 0x08, 0x3f, 0x10, 0x40, 0x4a, + 0x04, 0x08, 0x44, 0x10, 0x45, 0x52, 0x12, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x13, 0x41, 0x75, 0x74, 0x6f, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x2a, 0x2a, + 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x49, + 0x4e, 0x49, 0x54, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x55, 0x54, 0x10, 0x01, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1607,9 +1584,8 @@ var file_teleport_legacy_client_proto_event_proto_goTypes = []any{ (*v111.AutoUpdateVersion)(nil), // 59: teleport.autoupdate.v1.AutoUpdateVersion (*v2.StaticHostUser)(nil), // 60: teleport.userprovisioning.v2.StaticHostUser (*v112.UserTask)(nil), // 61: teleport.usertasks.v1.UserTask - (*v111.AutoUpdateAgentPlan)(nil), // 62: teleport.autoupdate.v1.AutoUpdateAgentPlan - (*types.DynamicWindowsDesktopV1)(nil), // 63: types.DynamicWindowsDesktopV1 - (*v113.PrincipalState)(nil), // 64: teleport.provisioning.v1.PrincipalState + (*types.DynamicWindowsDesktopV1)(nil), // 62: types.DynamicWindowsDesktopV1 + (*v113.PrincipalState)(nil), // 63: teleport.provisioning.v1.PrincipalState } var file_teleport_legacy_client_proto_event_proto_depIdxs = []int32{ 0, // 0: proto.Event.Type:type_name -> proto.Operation @@ -1676,14 +1652,13 @@ var file_teleport_legacy_client_proto_event_proto_depIdxs = []int32{ 59, // 61: proto.Event.AutoUpdateVersion:type_name -> teleport.autoupdate.v1.AutoUpdateVersion 60, // 62: proto.Event.StaticHostUserV2:type_name -> teleport.userprovisioning.v2.StaticHostUser 61, // 63: proto.Event.UserTask:type_name -> teleport.usertasks.v1.UserTask - 62, // 64: proto.Event.AutoUpdateAgentPlan:type_name -> teleport.autoupdate.v1.AutoUpdateAgentPlan - 63, // 65: proto.Event.DynamicWindowsDesktop:type_name -> types.DynamicWindowsDesktopV1 - 64, // 66: proto.Event.ProvisioningPrincipalState:type_name -> teleport.provisioning.v1.PrincipalState - 67, // [67:67] is the sub-list for method output_type - 67, // [67:67] is the sub-list for method input_type - 67, // [67:67] is the sub-list for extension type_name - 67, // [67:67] is the sub-list for extension extendee - 0, // [0:67] is the sub-list for field type_name + 62, // 64: proto.Event.DynamicWindowsDesktop:type_name -> types.DynamicWindowsDesktopV1 + 63, // 65: proto.Event.ProvisioningPrincipalState:type_name -> teleport.provisioning.v1.PrincipalState + 66, // [66:66] is the sub-list for method output_type + 66, // [66:66] is the sub-list for method input_type + 66, // [66:66] is the sub-list for extension type_name + 66, // [66:66] is the sub-list for extension extendee + 0, // [0:66] is the sub-list for field type_name } func init() { file_teleport_legacy_client_proto_event_proto_init() } @@ -1755,7 +1730,6 @@ func file_teleport_legacy_client_proto_event_proto_init() { (*Event_AutoUpdateVersion)(nil), (*Event_StaticHostUserV2)(nil), (*Event_UserTask)(nil), - (*Event_AutoUpdateAgentPlan)(nil), (*Event_DynamicWindowsDesktop)(nil), (*Event_ProvisioningPrincipalState)(nil), } diff --git a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_agent_plan.pb.go b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_agent_plan.pb.go deleted file mode 100644 index 7566b2bbd3e1..000000000000 --- a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_agent_plan.pb.go +++ /dev/null @@ -1,831 +0,0 @@ -// Copyright 2024 Gravitational, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.35.1 -// protoc (unknown) -// source: teleport/autoupdate/v1/autoupdate_agent_plan.proto - -package autoupdate - -import ( - v1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// Schedule type for the rollout -type Schedule int32 - -const ( - // UNSPECIFIED update schedule - Schedule_SCHEDULE_UNSPECIFIED Schedule = 0 - // REGULAR update schedule - Schedule_SCHEDULE_REGULAR Schedule = 1 - // IMMEDIATE update schedule for updating all agents immediately - Schedule_SCHEDULE_IMMEDIATE Schedule = 2 -) - -// Enum value maps for Schedule. -var ( - Schedule_name = map[int32]string{ - 0: "SCHEDULE_UNSPECIFIED", - 1: "SCHEDULE_REGULAR", - 2: "SCHEDULE_IMMEDIATE", - } - Schedule_value = map[string]int32{ - "SCHEDULE_UNSPECIFIED": 0, - "SCHEDULE_REGULAR": 1, - "SCHEDULE_IMMEDIATE": 2, - } -) - -func (x Schedule) Enum() *Schedule { - p := new(Schedule) - *p = x - return p -} - -func (x Schedule) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Schedule) Descriptor() protoreflect.EnumDescriptor { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_enumTypes[0].Descriptor() -} - -func (Schedule) Type() protoreflect.EnumType { - return &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_enumTypes[0] -} - -func (x Schedule) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Schedule.Descriptor instead. -func (Schedule) EnumDescriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescGZIP(), []int{0} -} - -// Strategy type for the rollout -type Strategy int32 - -const ( - // UNSPECIFIED update strategy - Strategy_STRATEGY_UNSPECIFIED Strategy = 0 - // GROUPED update schedule, with no backpressure - Strategy_STRATEGY_GROUPED Strategy = 1 - // BACKPRESSURE update schedule - Strategy_STRATEGY_BACKPRESSURE Strategy = 2 -) - -// Enum value maps for Strategy. -var ( - Strategy_name = map[int32]string{ - 0: "STRATEGY_UNSPECIFIED", - 1: "STRATEGY_GROUPED", - 2: "STRATEGY_BACKPRESSURE", - } - Strategy_value = map[string]int32{ - "STRATEGY_UNSPECIFIED": 0, - "STRATEGY_GROUPED": 1, - "STRATEGY_BACKPRESSURE": 2, - } -) - -func (x Strategy) Enum() *Strategy { - p := new(Strategy) - *p = x - return p -} - -func (x Strategy) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Strategy) Descriptor() protoreflect.EnumDescriptor { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_enumTypes[1].Descriptor() -} - -func (Strategy) Type() protoreflect.EnumType { - return &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_enumTypes[1] -} - -func (x Strategy) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Strategy.Descriptor instead. -func (Strategy) EnumDescriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescGZIP(), []int{1} -} - -// Mode of operation -type Mode int32 - -const ( - // UNSPECIFIED update mode - Mode_MODE_UNSPECIFIED Mode = 0 - // DISABLE updates - Mode_MODE_DISABLE Mode = 1 - // ENABLE updates - Mode_MODE_ENABLE Mode = 2 - // PAUSE updates - Mode_MODE_PAUSE Mode = 3 -) - -// Enum value maps for Mode. -var ( - Mode_name = map[int32]string{ - 0: "MODE_UNSPECIFIED", - 1: "MODE_DISABLE", - 2: "MODE_ENABLE", - 3: "MODE_PAUSE", - } - Mode_value = map[string]int32{ - "MODE_UNSPECIFIED": 0, - "MODE_DISABLE": 1, - "MODE_ENABLE": 2, - "MODE_PAUSE": 3, - } -) - -func (x Mode) Enum() *Mode { - p := new(Mode) - *p = x - return p -} - -func (x Mode) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Mode) Descriptor() protoreflect.EnumDescriptor { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_enumTypes[2].Descriptor() -} - -func (Mode) Type() protoreflect.EnumType { - return &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_enumTypes[2] -} - -func (x Mode) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Mode.Descriptor instead. -func (Mode) EnumDescriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescGZIP(), []int{2} -} - -// State of the rollout -type State int32 - -const ( - // UNSPECIFIED state - State_STATE_UNSPECIFIED State = 0 - // UNSTARTED state - State_STATE_UNSTARTED State = 1 - // CANARY state - State_STATE_CANARY State = 2 - // ACTIVE state - State_STATE_ACTIVE State = 3 - // DONE state - State_STATE_DONE State = 4 - // ROLLEDBACK state - State_STATE_ROLLEDBACK State = 5 -) - -// Enum value maps for State. -var ( - State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "STATE_UNSTARTED", - 2: "STATE_CANARY", - 3: "STATE_ACTIVE", - 4: "STATE_DONE", - 5: "STATE_ROLLEDBACK", - } - State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "STATE_UNSTARTED": 1, - "STATE_CANARY": 2, - "STATE_ACTIVE": 3, - "STATE_DONE": 4, - "STATE_ROLLEDBACK": 5, - } -) - -func (x State) Enum() *State { - p := new(State) - *p = x - return p -} - -func (x State) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (State) Descriptor() protoreflect.EnumDescriptor { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_enumTypes[3].Descriptor() -} - -func (State) Type() protoreflect.EnumType { - return &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_enumTypes[3] -} - -func (x State) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use State.Descriptor instead. -func (State) EnumDescriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescGZIP(), []int{3} -} - -// AutoUpdateAgentPlan holds dynamic configuration settings for agent autoupdates. -type AutoUpdateAgentPlan struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // kind is the kind of the resource. - Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` - // sub_kind is the sub kind of the resource. - SubKind string `protobuf:"bytes,2,opt,name=sub_kind,json=subKind,proto3" json:"sub_kind,omitempty"` - // version is the version of the resource. - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - // metadata is the metadata of the resource. - Metadata *v1.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` - // spec is the spec of the resource. - Spec *AutoUpdateAgentPlanSpec `protobuf:"bytes,5,opt,name=spec,proto3" json:"spec,omitempty"` - // status is the status of the resource. - Status *AutoUpdateAgentPlanStatus `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *AutoUpdateAgentPlan) Reset() { - *x = AutoUpdateAgentPlan{} - mi := &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AutoUpdateAgentPlan) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AutoUpdateAgentPlan) ProtoMessage() {} - -func (x *AutoUpdateAgentPlan) ProtoReflect() protoreflect.Message { - mi := &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AutoUpdateAgentPlan.ProtoReflect.Descriptor instead. -func (*AutoUpdateAgentPlan) Descriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescGZIP(), []int{0} -} - -func (x *AutoUpdateAgentPlan) GetKind() string { - if x != nil { - return x.Kind - } - return "" -} - -func (x *AutoUpdateAgentPlan) GetSubKind() string { - if x != nil { - return x.SubKind - } - return "" -} - -func (x *AutoUpdateAgentPlan) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *AutoUpdateAgentPlan) GetMetadata() *v1.Metadata { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *AutoUpdateAgentPlan) GetSpec() *AutoUpdateAgentPlanSpec { - if x != nil { - return x.Spec - } - return nil -} - -func (x *AutoUpdateAgentPlan) GetStatus() *AutoUpdateAgentPlanStatus { - if x != nil { - return x.Status - } - return nil -} - -// AutoUpdateAgentPlanSpec is the spec for the autoupdate version. -type AutoUpdateAgentPlanSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // start_version is the version to update from. - StartVersion string `protobuf:"bytes,1,opt,name=start_version,json=startVersion,proto3" json:"start_version,omitempty"` - // target_version is the version to update to. - TargetVersion string `protobuf:"bytes,2,opt,name=target_version,json=targetVersion,proto3" json:"target_version,omitempty"` - // schedule to use for the rollout - Schedule Schedule `protobuf:"varint,3,opt,name=schedule,proto3,enum=teleport.autoupdate.v1.Schedule" json:"schedule,omitempty"` - // strategy to use for the rollout - Strategy Strategy `protobuf:"varint,4,opt,name=strategy,proto3,enum=teleport.autoupdate.v1.Strategy" json:"strategy,omitempty"` - // autoupdate_mode to use for the rollout - AutoupdateMode Mode `protobuf:"varint,5,opt,name=autoupdate_mode,json=autoupdateMode,proto3,enum=teleport.autoupdate.v1.Mode" json:"autoupdate_mode,omitempty"` -} - -func (x *AutoUpdateAgentPlanSpec) Reset() { - *x = AutoUpdateAgentPlanSpec{} - mi := &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AutoUpdateAgentPlanSpec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AutoUpdateAgentPlanSpec) ProtoMessage() {} - -func (x *AutoUpdateAgentPlanSpec) ProtoReflect() protoreflect.Message { - mi := &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AutoUpdateAgentPlanSpec.ProtoReflect.Descriptor instead. -func (*AutoUpdateAgentPlanSpec) Descriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescGZIP(), []int{1} -} - -func (x *AutoUpdateAgentPlanSpec) GetStartVersion() string { - if x != nil { - return x.StartVersion - } - return "" -} - -func (x *AutoUpdateAgentPlanSpec) GetTargetVersion() string { - if x != nil { - return x.TargetVersion - } - return "" -} - -func (x *AutoUpdateAgentPlanSpec) GetSchedule() Schedule { - if x != nil { - return x.Schedule - } - return Schedule_SCHEDULE_UNSPECIFIED -} - -func (x *AutoUpdateAgentPlanSpec) GetStrategy() Strategy { - if x != nil { - return x.Strategy - } - return Strategy_STRATEGY_UNSPECIFIED -} - -func (x *AutoUpdateAgentPlanSpec) GetAutoupdateMode() Mode { - if x != nil { - return x.AutoupdateMode - } - return Mode_MODE_UNSPECIFIED -} - -// AutoUpdateAgentPlanStatus is the status for the AutoUpdateAgentPlan. -type AutoUpdateAgentPlanStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // name of the group - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // start_time of the rollout - StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - // initial_count is the number of connected agents at the start of the window. - InitialCount int64 `protobuf:"varint,3,opt,name=initial_count,json=initialCount,proto3" json:"initial_count,omitempty"` - // present_count is the current number of connected agents. - PresentCount int64 `protobuf:"varint,4,opt,name=present_count,json=presentCount,proto3" json:"present_count,omitempty"` - // failed_count specifies the number of failed agents. - FailedCount int64 `protobuf:"varint,5,opt,name=failed_count,json=failedCount,proto3" json:"failed_count,omitempty"` - // canaries is a list of canary agents. - Canaries []*Canary `protobuf:"bytes,6,rep,name=canaries,proto3" json:"canaries,omitempty"` - // progress is the current progress through the rollout. - Progress float32 `protobuf:"fixed32,7,opt,name=progress,proto3" json:"progress,omitempty"` - // state is the current state of the rollout. - State State `protobuf:"varint,8,opt,name=state,proto3,enum=teleport.autoupdate.v1.State" json:"state,omitempty"` - // last_update_time is the time of the previous update for this group. - LastUpdateTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_update_time,json=lastUpdateTime,proto3" json:"last_update_time,omitempty"` - // last_update_reason is the trigger for the last update - LastUpdateReason string `protobuf:"bytes,10,opt,name=last_update_reason,json=lastUpdateReason,proto3" json:"last_update_reason,omitempty"` -} - -func (x *AutoUpdateAgentPlanStatus) Reset() { - *x = AutoUpdateAgentPlanStatus{} - mi := &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AutoUpdateAgentPlanStatus) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AutoUpdateAgentPlanStatus) ProtoMessage() {} - -func (x *AutoUpdateAgentPlanStatus) ProtoReflect() protoreflect.Message { - mi := &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AutoUpdateAgentPlanStatus.ProtoReflect.Descriptor instead. -func (*AutoUpdateAgentPlanStatus) Descriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescGZIP(), []int{2} -} - -func (x *AutoUpdateAgentPlanStatus) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *AutoUpdateAgentPlanStatus) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime - } - return nil -} - -func (x *AutoUpdateAgentPlanStatus) GetInitialCount() int64 { - if x != nil { - return x.InitialCount - } - return 0 -} - -func (x *AutoUpdateAgentPlanStatus) GetPresentCount() int64 { - if x != nil { - return x.PresentCount - } - return 0 -} - -func (x *AutoUpdateAgentPlanStatus) GetFailedCount() int64 { - if x != nil { - return x.FailedCount - } - return 0 -} - -func (x *AutoUpdateAgentPlanStatus) GetCanaries() []*Canary { - if x != nil { - return x.Canaries - } - return nil -} - -func (x *AutoUpdateAgentPlanStatus) GetProgress() float32 { - if x != nil { - return x.Progress - } - return 0 -} - -func (x *AutoUpdateAgentPlanStatus) GetState() State { - if x != nil { - return x.State - } - return State_STATE_UNSPECIFIED -} - -func (x *AutoUpdateAgentPlanStatus) GetLastUpdateTime() *timestamppb.Timestamp { - if x != nil { - return x.LastUpdateTime - } - return nil -} - -func (x *AutoUpdateAgentPlanStatus) GetLastUpdateReason() string { - if x != nil { - return x.LastUpdateReason - } - return "" -} - -// Canary agent -type Canary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // update_uuid of the canary agent - UpdateUuid string `protobuf:"bytes,1,opt,name=update_uuid,json=updateUuid,proto3" json:"update_uuid,omitempty"` - // host_uuid of the canary agent - HostUuid string `protobuf:"bytes,2,opt,name=host_uuid,json=hostUuid,proto3" json:"host_uuid,omitempty"` - // hostname of the canary agent - Hostname string `protobuf:"bytes,3,opt,name=hostname,proto3" json:"hostname,omitempty"` - // success state of the canary agent - Success bool `protobuf:"varint,4,opt,name=success,proto3" json:"success,omitempty"` -} - -func (x *Canary) Reset() { - *x = Canary{} - mi := &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Canary) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Canary) ProtoMessage() {} - -func (x *Canary) ProtoReflect() protoreflect.Message { - mi := &file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Canary.ProtoReflect.Descriptor instead. -func (*Canary) Descriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescGZIP(), []int{3} -} - -func (x *Canary) GetUpdateUuid() string { - if x != nil { - return x.UpdateUuid - } - return "" -} - -func (x *Canary) GetHostUuid() string { - if x != nil { - return x.HostUuid - } - return "" -} - -func (x *Canary) GetHostname() string { - if x != nil { - return x.Hostname - } - return "" -} - -func (x *Canary) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -var File_teleport_autoupdate_v1_autoupdate_agent_plan_proto protoreflect.FileDescriptor - -var file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDesc = []byte{ - 0x0a, 0x32, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, - 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x76, - 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xa8, 0x02, 0x0a, 0x13, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x08, - 0x73, 0x75, 0x62, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x73, 0x75, 0x62, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x65, 0x6c, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, - 0x12, 0x49, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa8, 0x02, 0x0a, 0x17, - 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, - 0x6c, 0x61, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, - 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, - 0x45, 0x0a, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xd8, 0x03, 0x0a, 0x19, 0x41, 0x75, 0x74, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, - 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, - 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x61, - 0x72, 0x79, 0x52, 0x08, 0x63, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, - 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x22, 0x7c, 0x0a, 0x06, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, - 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x68, 0x6f, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2a, - 0x52, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x53, - 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, - 0x45, 0x5f, 0x52, 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x53, - 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x49, 0x4d, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, - 0x45, 0x10, 0x02, 0x2a, 0x55, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, - 0x18, 0x0a, 0x14, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x52, - 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x45, 0x44, 0x10, 0x01, 0x12, - 0x19, 0x0a, 0x15, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x42, 0x41, 0x43, 0x4b, - 0x50, 0x52, 0x45, 0x53, 0x53, 0x55, 0x52, 0x45, 0x10, 0x02, 0x2a, 0x4f, 0x0a, 0x04, 0x4d, 0x6f, - 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x10, 0x03, 0x2a, 0x7d, 0x0a, 0x05, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, - 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x41, 0x52, 0x59, - 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x56, 0x45, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x4f, - 0x4e, 0x45, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x4f, - 0x4c, 0x4c, 0x45, 0x44, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x05, 0x42, 0x56, 0x5a, 0x54, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, - 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescOnce sync.Once - file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescData = file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDesc -) - -func file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescGZIP() []byte { - file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescOnce.Do(func() { - file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescData = protoimpl.X.CompressGZIP(file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescData) - }) - return file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDescData -} - -var file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_goTypes = []any{ - (Schedule)(0), // 0: teleport.autoupdate.v1.Schedule - (Strategy)(0), // 1: teleport.autoupdate.v1.Strategy - (Mode)(0), // 2: teleport.autoupdate.v1.Mode - (State)(0), // 3: teleport.autoupdate.v1.State - (*AutoUpdateAgentPlan)(nil), // 4: teleport.autoupdate.v1.AutoUpdateAgentPlan - (*AutoUpdateAgentPlanSpec)(nil), // 5: teleport.autoupdate.v1.AutoUpdateAgentPlanSpec - (*AutoUpdateAgentPlanStatus)(nil), // 6: teleport.autoupdate.v1.AutoUpdateAgentPlanStatus - (*Canary)(nil), // 7: teleport.autoupdate.v1.Canary - (*v1.Metadata)(nil), // 8: teleport.header.v1.Metadata - (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp -} -var file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_depIdxs = []int32{ - 8, // 0: teleport.autoupdate.v1.AutoUpdateAgentPlan.metadata:type_name -> teleport.header.v1.Metadata - 5, // 1: teleport.autoupdate.v1.AutoUpdateAgentPlan.spec:type_name -> teleport.autoupdate.v1.AutoUpdateAgentPlanSpec - 6, // 2: teleport.autoupdate.v1.AutoUpdateAgentPlan.status:type_name -> teleport.autoupdate.v1.AutoUpdateAgentPlanStatus - 0, // 3: teleport.autoupdate.v1.AutoUpdateAgentPlanSpec.schedule:type_name -> teleport.autoupdate.v1.Schedule - 1, // 4: teleport.autoupdate.v1.AutoUpdateAgentPlanSpec.strategy:type_name -> teleport.autoupdate.v1.Strategy - 2, // 5: teleport.autoupdate.v1.AutoUpdateAgentPlanSpec.autoupdate_mode:type_name -> teleport.autoupdate.v1.Mode - 9, // 6: teleport.autoupdate.v1.AutoUpdateAgentPlanStatus.start_time:type_name -> google.protobuf.Timestamp - 7, // 7: teleport.autoupdate.v1.AutoUpdateAgentPlanStatus.canaries:type_name -> teleport.autoupdate.v1.Canary - 3, // 8: teleport.autoupdate.v1.AutoUpdateAgentPlanStatus.state:type_name -> teleport.autoupdate.v1.State - 9, // 9: teleport.autoupdate.v1.AutoUpdateAgentPlanStatus.last_update_time:type_name -> google.protobuf.Timestamp - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name -} - -func init() { file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_init() } -func file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_init() { - if File_teleport_autoupdate_v1_autoupdate_agent_plan_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDesc, - NumEnums: 4, - NumMessages: 4, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_goTypes, - DependencyIndexes: file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_depIdxs, - EnumInfos: file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_enumTypes, - MessageInfos: file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_msgTypes, - }.Build() - File_teleport_autoupdate_v1_autoupdate_agent_plan_proto = out.File - file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_rawDesc = nil - file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_goTypes = nil - file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_depIdxs = nil -} diff --git a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service.pb.go b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service.pb.go index 28c1a9d2ed4f..e938af2cc8eb 100644 --- a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service.pb.go +++ b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service.pb.go @@ -459,218 +459,6 @@ func (*DeleteAutoUpdateVersionRequest) Descriptor() ([]byte, []int) { return file_teleport_autoupdate_v1_autoupdate_service_proto_rawDescGZIP(), []int{9} } -// Request for GetAutoUpdateAgentPlan. -type GetAutoUpdateAgentPlanRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *GetAutoUpdateAgentPlanRequest) Reset() { - *x = GetAutoUpdateAgentPlanRequest{} - mi := &file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetAutoUpdateAgentPlanRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetAutoUpdateAgentPlanRequest) ProtoMessage() {} - -func (x *GetAutoUpdateAgentPlanRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetAutoUpdateAgentPlanRequest.ProtoReflect.Descriptor instead. -func (*GetAutoUpdateAgentPlanRequest) Descriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_service_proto_rawDescGZIP(), []int{10} -} - -// Request for CreateAutoUpdateAgentPlan. -type CreateAutoUpdateAgentPlanRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Plan *AutoUpdateAgentPlan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` -} - -func (x *CreateAutoUpdateAgentPlanRequest) Reset() { - *x = CreateAutoUpdateAgentPlanRequest{} - mi := &file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateAutoUpdateAgentPlanRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateAutoUpdateAgentPlanRequest) ProtoMessage() {} - -func (x *CreateAutoUpdateAgentPlanRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateAutoUpdateAgentPlanRequest.ProtoReflect.Descriptor instead. -func (*CreateAutoUpdateAgentPlanRequest) Descriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_service_proto_rawDescGZIP(), []int{11} -} - -func (x *CreateAutoUpdateAgentPlanRequest) GetPlan() *AutoUpdateAgentPlan { - if x != nil { - return x.Plan - } - return nil -} - -// Request for UpdateAutoUpdateConfig. -type UpdateAutoUpdateAgentPlanRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Plan *AutoUpdateAgentPlan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` -} - -func (x *UpdateAutoUpdateAgentPlanRequest) Reset() { - *x = UpdateAutoUpdateAgentPlanRequest{} - mi := &file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateAutoUpdateAgentPlanRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateAutoUpdateAgentPlanRequest) ProtoMessage() {} - -func (x *UpdateAutoUpdateAgentPlanRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateAutoUpdateAgentPlanRequest.ProtoReflect.Descriptor instead. -func (*UpdateAutoUpdateAgentPlanRequest) Descriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_service_proto_rawDescGZIP(), []int{12} -} - -func (x *UpdateAutoUpdateAgentPlanRequest) GetPlan() *AutoUpdateAgentPlan { - if x != nil { - return x.Plan - } - return nil -} - -// Request for UpsertAutoUpdateAgentPlan. -type UpsertAutoUpdateAgentPlanRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Plan *AutoUpdateAgentPlan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` -} - -func (x *UpsertAutoUpdateAgentPlanRequest) Reset() { - *x = UpsertAutoUpdateAgentPlanRequest{} - mi := &file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpsertAutoUpdateAgentPlanRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpsertAutoUpdateAgentPlanRequest) ProtoMessage() {} - -func (x *UpsertAutoUpdateAgentPlanRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpsertAutoUpdateAgentPlanRequest.ProtoReflect.Descriptor instead. -func (*UpsertAutoUpdateAgentPlanRequest) Descriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_service_proto_rawDescGZIP(), []int{13} -} - -func (x *UpsertAutoUpdateAgentPlanRequest) GetPlan() *AutoUpdateAgentPlan { - if x != nil { - return x.Plan - } - return nil -} - -// Request for DeleteAutoUpdateAgentPlan. -type DeleteAutoUpdateAgentPlanRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *DeleteAutoUpdateAgentPlanRequest) Reset() { - *x = DeleteAutoUpdateAgentPlanRequest{} - mi := &file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteAutoUpdateAgentPlanRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteAutoUpdateAgentPlanRequest) ProtoMessage() {} - -func (x *DeleteAutoUpdateAgentPlanRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteAutoUpdateAgentPlanRequest.ProtoReflect.Descriptor instead. -func (*DeleteAutoUpdateAgentPlanRequest) Descriptor() ([]byte, []int) { - return file_teleport_autoupdate_v1_autoupdate_service_proto_rawDescGZIP(), []int{14} -} - var File_teleport_autoupdate_v1_autoupdate_service_proto protoreflect.FileDescriptor var file_teleport_autoupdate_v1_autoupdate_service_proto_rawDesc = []byte{ @@ -682,202 +470,135 @@ var file_teleport_autoupdate_v1_autoupdate_service_proto_rawDesc = []byte{ 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, - 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x32, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x61, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, - 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x22, 0x61, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, - 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x61, 0x0a, 0x1d, 0x55, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x47, - 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x65, 0x0a, 0x1e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0x65, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, - 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x1e, 0x55, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, - 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x1f, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x63, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, - 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, - 0x6e, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x22, 0x63, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x70, - 0x6c, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x6c, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x22, 0x63, 0x0a, 0x20, - 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x3f, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, + 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, + 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x04, 0x70, 0x6c, 0x61, - 0x6e, 0x22, 0x22, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x32, 0xbb, 0x0e, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x73, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x32, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, - 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x79, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x22, 0x61, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, + 0x74, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x79, 0x0a, 0x16, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x79, 0x0a, 0x16, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, - 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x22, 0x61, 0x0a, 0x1d, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, + 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, + 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, + 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x67, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x2e, 0x74, 0x65, - 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x76, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, - 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x75, + 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x65, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, + 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x43, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x1e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x75, + 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x7c, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, - 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, - 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x7c, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, 0x74, 0x65, - 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, - 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, - 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x7c, - 0x0a, 0x17, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x20, 0x0a, 0x1e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x32, 0xbf, 0x09, + 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x73, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, + 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x79, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, + 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, - 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x69, 0x0a, 0x17, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x7c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x75, - 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, - 0x6e, 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, - 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, - 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, - 0x6c, 0x61, 0x6e, 0x12, 0x38, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, - 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x79, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, + 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x19, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x38, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, + 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, + 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, + 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x79, + 0x0a, 0x16, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, - 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x12, - 0x82, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x38, 0x2e, + 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x67, 0x0a, 0x16, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, + 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x76, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x7c, 0x0a, 0x17, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, - 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x6d, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x75, - 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, - 0x6e, 0x12, 0x38, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, - 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x42, 0x56, 0x5a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, - 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x31, - 0x3b, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x7c, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, + 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, + 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x7c, 0x0a, 0x17, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, + 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, + 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x69, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x75, + 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, + 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, + 0x56, 0x5a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, + 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, + 0x75, 0x74, 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x75, 0x74, + 0x6f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -892,73 +613,54 @@ func file_teleport_autoupdate_v1_autoupdate_service_proto_rawDescGZIP() []byte { return file_teleport_autoupdate_v1_autoupdate_service_proto_rawDescData } -var file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_teleport_autoupdate_v1_autoupdate_service_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_teleport_autoupdate_v1_autoupdate_service_proto_goTypes = []any{ - (*GetAutoUpdateConfigRequest)(nil), // 0: teleport.autoupdate.v1.GetAutoUpdateConfigRequest - (*CreateAutoUpdateConfigRequest)(nil), // 1: teleport.autoupdate.v1.CreateAutoUpdateConfigRequest - (*UpdateAutoUpdateConfigRequest)(nil), // 2: teleport.autoupdate.v1.UpdateAutoUpdateConfigRequest - (*UpsertAutoUpdateConfigRequest)(nil), // 3: teleport.autoupdate.v1.UpsertAutoUpdateConfigRequest - (*DeleteAutoUpdateConfigRequest)(nil), // 4: teleport.autoupdate.v1.DeleteAutoUpdateConfigRequest - (*GetAutoUpdateVersionRequest)(nil), // 5: teleport.autoupdate.v1.GetAutoUpdateVersionRequest - (*CreateAutoUpdateVersionRequest)(nil), // 6: teleport.autoupdate.v1.CreateAutoUpdateVersionRequest - (*UpdateAutoUpdateVersionRequest)(nil), // 7: teleport.autoupdate.v1.UpdateAutoUpdateVersionRequest - (*UpsertAutoUpdateVersionRequest)(nil), // 8: teleport.autoupdate.v1.UpsertAutoUpdateVersionRequest - (*DeleteAutoUpdateVersionRequest)(nil), // 9: teleport.autoupdate.v1.DeleteAutoUpdateVersionRequest - (*GetAutoUpdateAgentPlanRequest)(nil), // 10: teleport.autoupdate.v1.GetAutoUpdateAgentPlanRequest - (*CreateAutoUpdateAgentPlanRequest)(nil), // 11: teleport.autoupdate.v1.CreateAutoUpdateAgentPlanRequest - (*UpdateAutoUpdateAgentPlanRequest)(nil), // 12: teleport.autoupdate.v1.UpdateAutoUpdateAgentPlanRequest - (*UpsertAutoUpdateAgentPlanRequest)(nil), // 13: teleport.autoupdate.v1.UpsertAutoUpdateAgentPlanRequest - (*DeleteAutoUpdateAgentPlanRequest)(nil), // 14: teleport.autoupdate.v1.DeleteAutoUpdateAgentPlanRequest - (*AutoUpdateConfig)(nil), // 15: teleport.autoupdate.v1.AutoUpdateConfig - (*AutoUpdateVersion)(nil), // 16: teleport.autoupdate.v1.AutoUpdateVersion - (*AutoUpdateAgentPlan)(nil), // 17: teleport.autoupdate.v1.AutoUpdateAgentPlan - (*emptypb.Empty)(nil), // 18: google.protobuf.Empty + (*GetAutoUpdateConfigRequest)(nil), // 0: teleport.autoupdate.v1.GetAutoUpdateConfigRequest + (*CreateAutoUpdateConfigRequest)(nil), // 1: teleport.autoupdate.v1.CreateAutoUpdateConfigRequest + (*UpdateAutoUpdateConfigRequest)(nil), // 2: teleport.autoupdate.v1.UpdateAutoUpdateConfigRequest + (*UpsertAutoUpdateConfigRequest)(nil), // 3: teleport.autoupdate.v1.UpsertAutoUpdateConfigRequest + (*DeleteAutoUpdateConfigRequest)(nil), // 4: teleport.autoupdate.v1.DeleteAutoUpdateConfigRequest + (*GetAutoUpdateVersionRequest)(nil), // 5: teleport.autoupdate.v1.GetAutoUpdateVersionRequest + (*CreateAutoUpdateVersionRequest)(nil), // 6: teleport.autoupdate.v1.CreateAutoUpdateVersionRequest + (*UpdateAutoUpdateVersionRequest)(nil), // 7: teleport.autoupdate.v1.UpdateAutoUpdateVersionRequest + (*UpsertAutoUpdateVersionRequest)(nil), // 8: teleport.autoupdate.v1.UpsertAutoUpdateVersionRequest + (*DeleteAutoUpdateVersionRequest)(nil), // 9: teleport.autoupdate.v1.DeleteAutoUpdateVersionRequest + (*AutoUpdateConfig)(nil), // 10: teleport.autoupdate.v1.AutoUpdateConfig + (*AutoUpdateVersion)(nil), // 11: teleport.autoupdate.v1.AutoUpdateVersion + (*emptypb.Empty)(nil), // 12: google.protobuf.Empty } var file_teleport_autoupdate_v1_autoupdate_service_proto_depIdxs = []int32{ - 15, // 0: teleport.autoupdate.v1.CreateAutoUpdateConfigRequest.config:type_name -> teleport.autoupdate.v1.AutoUpdateConfig - 15, // 1: teleport.autoupdate.v1.UpdateAutoUpdateConfigRequest.config:type_name -> teleport.autoupdate.v1.AutoUpdateConfig - 15, // 2: teleport.autoupdate.v1.UpsertAutoUpdateConfigRequest.config:type_name -> teleport.autoupdate.v1.AutoUpdateConfig - 16, // 3: teleport.autoupdate.v1.CreateAutoUpdateVersionRequest.version:type_name -> teleport.autoupdate.v1.AutoUpdateVersion - 16, // 4: teleport.autoupdate.v1.UpdateAutoUpdateVersionRequest.version:type_name -> teleport.autoupdate.v1.AutoUpdateVersion - 16, // 5: teleport.autoupdate.v1.UpsertAutoUpdateVersionRequest.version:type_name -> teleport.autoupdate.v1.AutoUpdateVersion - 17, // 6: teleport.autoupdate.v1.CreateAutoUpdateAgentPlanRequest.plan:type_name -> teleport.autoupdate.v1.AutoUpdateAgentPlan - 17, // 7: teleport.autoupdate.v1.UpdateAutoUpdateAgentPlanRequest.plan:type_name -> teleport.autoupdate.v1.AutoUpdateAgentPlan - 17, // 8: teleport.autoupdate.v1.UpsertAutoUpdateAgentPlanRequest.plan:type_name -> teleport.autoupdate.v1.AutoUpdateAgentPlan - 0, // 9: teleport.autoupdate.v1.AutoUpdateService.GetAutoUpdateConfig:input_type -> teleport.autoupdate.v1.GetAutoUpdateConfigRequest - 1, // 10: teleport.autoupdate.v1.AutoUpdateService.CreateAutoUpdateConfig:input_type -> teleport.autoupdate.v1.CreateAutoUpdateConfigRequest - 2, // 11: teleport.autoupdate.v1.AutoUpdateService.UpdateAutoUpdateConfig:input_type -> teleport.autoupdate.v1.UpdateAutoUpdateConfigRequest - 3, // 12: teleport.autoupdate.v1.AutoUpdateService.UpsertAutoUpdateConfig:input_type -> teleport.autoupdate.v1.UpsertAutoUpdateConfigRequest - 4, // 13: teleport.autoupdate.v1.AutoUpdateService.DeleteAutoUpdateConfig:input_type -> teleport.autoupdate.v1.DeleteAutoUpdateConfigRequest - 5, // 14: teleport.autoupdate.v1.AutoUpdateService.GetAutoUpdateVersion:input_type -> teleport.autoupdate.v1.GetAutoUpdateVersionRequest - 6, // 15: teleport.autoupdate.v1.AutoUpdateService.CreateAutoUpdateVersion:input_type -> teleport.autoupdate.v1.CreateAutoUpdateVersionRequest - 7, // 16: teleport.autoupdate.v1.AutoUpdateService.UpdateAutoUpdateVersion:input_type -> teleport.autoupdate.v1.UpdateAutoUpdateVersionRequest - 8, // 17: teleport.autoupdate.v1.AutoUpdateService.UpsertAutoUpdateVersion:input_type -> teleport.autoupdate.v1.UpsertAutoUpdateVersionRequest - 9, // 18: teleport.autoupdate.v1.AutoUpdateService.DeleteAutoUpdateVersion:input_type -> teleport.autoupdate.v1.DeleteAutoUpdateVersionRequest - 10, // 19: teleport.autoupdate.v1.AutoUpdateService.GetAutoUpdateAgentPlan:input_type -> teleport.autoupdate.v1.GetAutoUpdateAgentPlanRequest - 11, // 20: teleport.autoupdate.v1.AutoUpdateService.CreateAutoUpdateAgentPlan:input_type -> teleport.autoupdate.v1.CreateAutoUpdateAgentPlanRequest - 12, // 21: teleport.autoupdate.v1.AutoUpdateService.UpdateAutoUpdateAgentPlan:input_type -> teleport.autoupdate.v1.UpdateAutoUpdateAgentPlanRequest - 13, // 22: teleport.autoupdate.v1.AutoUpdateService.UpsertAutoUpdateAgentPlan:input_type -> teleport.autoupdate.v1.UpsertAutoUpdateAgentPlanRequest - 14, // 23: teleport.autoupdate.v1.AutoUpdateService.DeleteAutoUpdateAgentPlan:input_type -> teleport.autoupdate.v1.DeleteAutoUpdateAgentPlanRequest - 15, // 24: teleport.autoupdate.v1.AutoUpdateService.GetAutoUpdateConfig:output_type -> teleport.autoupdate.v1.AutoUpdateConfig - 15, // 25: teleport.autoupdate.v1.AutoUpdateService.CreateAutoUpdateConfig:output_type -> teleport.autoupdate.v1.AutoUpdateConfig - 15, // 26: teleport.autoupdate.v1.AutoUpdateService.UpdateAutoUpdateConfig:output_type -> teleport.autoupdate.v1.AutoUpdateConfig - 15, // 27: teleport.autoupdate.v1.AutoUpdateService.UpsertAutoUpdateConfig:output_type -> teleport.autoupdate.v1.AutoUpdateConfig - 18, // 28: teleport.autoupdate.v1.AutoUpdateService.DeleteAutoUpdateConfig:output_type -> google.protobuf.Empty - 16, // 29: teleport.autoupdate.v1.AutoUpdateService.GetAutoUpdateVersion:output_type -> teleport.autoupdate.v1.AutoUpdateVersion - 16, // 30: teleport.autoupdate.v1.AutoUpdateService.CreateAutoUpdateVersion:output_type -> teleport.autoupdate.v1.AutoUpdateVersion - 16, // 31: teleport.autoupdate.v1.AutoUpdateService.UpdateAutoUpdateVersion:output_type -> teleport.autoupdate.v1.AutoUpdateVersion - 16, // 32: teleport.autoupdate.v1.AutoUpdateService.UpsertAutoUpdateVersion:output_type -> teleport.autoupdate.v1.AutoUpdateVersion - 18, // 33: teleport.autoupdate.v1.AutoUpdateService.DeleteAutoUpdateVersion:output_type -> google.protobuf.Empty - 17, // 34: teleport.autoupdate.v1.AutoUpdateService.GetAutoUpdateAgentPlan:output_type -> teleport.autoupdate.v1.AutoUpdateAgentPlan - 17, // 35: teleport.autoupdate.v1.AutoUpdateService.CreateAutoUpdateAgentPlan:output_type -> teleport.autoupdate.v1.AutoUpdateAgentPlan - 17, // 36: teleport.autoupdate.v1.AutoUpdateService.UpdateAutoUpdateAgentPlan:output_type -> teleport.autoupdate.v1.AutoUpdateAgentPlan - 17, // 37: teleport.autoupdate.v1.AutoUpdateService.UpsertAutoUpdateAgentPlan:output_type -> teleport.autoupdate.v1.AutoUpdateAgentPlan - 18, // 38: teleport.autoupdate.v1.AutoUpdateService.DeleteAutoUpdateAgentPlan:output_type -> google.protobuf.Empty - 24, // [24:39] is the sub-list for method output_type - 9, // [9:24] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 10, // 0: teleport.autoupdate.v1.CreateAutoUpdateConfigRequest.config:type_name -> teleport.autoupdate.v1.AutoUpdateConfig + 10, // 1: teleport.autoupdate.v1.UpdateAutoUpdateConfigRequest.config:type_name -> teleport.autoupdate.v1.AutoUpdateConfig + 10, // 2: teleport.autoupdate.v1.UpsertAutoUpdateConfigRequest.config:type_name -> teleport.autoupdate.v1.AutoUpdateConfig + 11, // 3: teleport.autoupdate.v1.CreateAutoUpdateVersionRequest.version:type_name -> teleport.autoupdate.v1.AutoUpdateVersion + 11, // 4: teleport.autoupdate.v1.UpdateAutoUpdateVersionRequest.version:type_name -> teleport.autoupdate.v1.AutoUpdateVersion + 11, // 5: teleport.autoupdate.v1.UpsertAutoUpdateVersionRequest.version:type_name -> teleport.autoupdate.v1.AutoUpdateVersion + 0, // 6: teleport.autoupdate.v1.AutoUpdateService.GetAutoUpdateConfig:input_type -> teleport.autoupdate.v1.GetAutoUpdateConfigRequest + 1, // 7: teleport.autoupdate.v1.AutoUpdateService.CreateAutoUpdateConfig:input_type -> teleport.autoupdate.v1.CreateAutoUpdateConfigRequest + 2, // 8: teleport.autoupdate.v1.AutoUpdateService.UpdateAutoUpdateConfig:input_type -> teleport.autoupdate.v1.UpdateAutoUpdateConfigRequest + 3, // 9: teleport.autoupdate.v1.AutoUpdateService.UpsertAutoUpdateConfig:input_type -> teleport.autoupdate.v1.UpsertAutoUpdateConfigRequest + 4, // 10: teleport.autoupdate.v1.AutoUpdateService.DeleteAutoUpdateConfig:input_type -> teleport.autoupdate.v1.DeleteAutoUpdateConfigRequest + 5, // 11: teleport.autoupdate.v1.AutoUpdateService.GetAutoUpdateVersion:input_type -> teleport.autoupdate.v1.GetAutoUpdateVersionRequest + 6, // 12: teleport.autoupdate.v1.AutoUpdateService.CreateAutoUpdateVersion:input_type -> teleport.autoupdate.v1.CreateAutoUpdateVersionRequest + 7, // 13: teleport.autoupdate.v1.AutoUpdateService.UpdateAutoUpdateVersion:input_type -> teleport.autoupdate.v1.UpdateAutoUpdateVersionRequest + 8, // 14: teleport.autoupdate.v1.AutoUpdateService.UpsertAutoUpdateVersion:input_type -> teleport.autoupdate.v1.UpsertAutoUpdateVersionRequest + 9, // 15: teleport.autoupdate.v1.AutoUpdateService.DeleteAutoUpdateVersion:input_type -> teleport.autoupdate.v1.DeleteAutoUpdateVersionRequest + 10, // 16: teleport.autoupdate.v1.AutoUpdateService.GetAutoUpdateConfig:output_type -> teleport.autoupdate.v1.AutoUpdateConfig + 10, // 17: teleport.autoupdate.v1.AutoUpdateService.CreateAutoUpdateConfig:output_type -> teleport.autoupdate.v1.AutoUpdateConfig + 10, // 18: teleport.autoupdate.v1.AutoUpdateService.UpdateAutoUpdateConfig:output_type -> teleport.autoupdate.v1.AutoUpdateConfig + 10, // 19: teleport.autoupdate.v1.AutoUpdateService.UpsertAutoUpdateConfig:output_type -> teleport.autoupdate.v1.AutoUpdateConfig + 12, // 20: teleport.autoupdate.v1.AutoUpdateService.DeleteAutoUpdateConfig:output_type -> google.protobuf.Empty + 11, // 21: teleport.autoupdate.v1.AutoUpdateService.GetAutoUpdateVersion:output_type -> teleport.autoupdate.v1.AutoUpdateVersion + 11, // 22: teleport.autoupdate.v1.AutoUpdateService.CreateAutoUpdateVersion:output_type -> teleport.autoupdate.v1.AutoUpdateVersion + 11, // 23: teleport.autoupdate.v1.AutoUpdateService.UpdateAutoUpdateVersion:output_type -> teleport.autoupdate.v1.AutoUpdateVersion + 11, // 24: teleport.autoupdate.v1.AutoUpdateService.UpsertAutoUpdateVersion:output_type -> teleport.autoupdate.v1.AutoUpdateVersion + 12, // 25: teleport.autoupdate.v1.AutoUpdateService.DeleteAutoUpdateVersion:output_type -> google.protobuf.Empty + 16, // [16:26] is the sub-list for method output_type + 6, // [6:16] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_teleport_autoupdate_v1_autoupdate_service_proto_init() } @@ -967,14 +669,13 @@ func file_teleport_autoupdate_v1_autoupdate_service_proto_init() { return } file_teleport_autoupdate_v1_autoupdate_proto_init() - file_teleport_autoupdate_v1_autoupdate_agent_plan_proto_init() type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_teleport_autoupdate_v1_autoupdate_service_proto_rawDesc, NumEnums: 0, - NumMessages: 15, + NumMessages: 10, NumExtensions: 0, NumServices: 1, }, diff --git a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service_grpc.pb.go b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service_grpc.pb.go index 9d6b13080434..46746b2f9ae7 100644 --- a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service_grpc.pb.go +++ b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service_grpc.pb.go @@ -34,21 +34,16 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - AutoUpdateService_GetAutoUpdateConfig_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/GetAutoUpdateConfig" - AutoUpdateService_CreateAutoUpdateConfig_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/CreateAutoUpdateConfig" - AutoUpdateService_UpdateAutoUpdateConfig_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/UpdateAutoUpdateConfig" - AutoUpdateService_UpsertAutoUpdateConfig_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/UpsertAutoUpdateConfig" - AutoUpdateService_DeleteAutoUpdateConfig_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/DeleteAutoUpdateConfig" - AutoUpdateService_GetAutoUpdateVersion_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/GetAutoUpdateVersion" - AutoUpdateService_CreateAutoUpdateVersion_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/CreateAutoUpdateVersion" - AutoUpdateService_UpdateAutoUpdateVersion_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/UpdateAutoUpdateVersion" - AutoUpdateService_UpsertAutoUpdateVersion_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/UpsertAutoUpdateVersion" - AutoUpdateService_DeleteAutoUpdateVersion_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/DeleteAutoUpdateVersion" - AutoUpdateService_GetAutoUpdateAgentPlan_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/GetAutoUpdateAgentPlan" - AutoUpdateService_CreateAutoUpdateAgentPlan_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/CreateAutoUpdateAgentPlan" - AutoUpdateService_UpdateAutoUpdateAgentPlan_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/UpdateAutoUpdateAgentPlan" - AutoUpdateService_UpsertAutoUpdateAgentPlan_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/UpsertAutoUpdateAgentPlan" - AutoUpdateService_DeleteAutoUpdateAgentPlan_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/DeleteAutoUpdateAgentPlan" + AutoUpdateService_GetAutoUpdateConfig_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/GetAutoUpdateConfig" + AutoUpdateService_CreateAutoUpdateConfig_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/CreateAutoUpdateConfig" + AutoUpdateService_UpdateAutoUpdateConfig_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/UpdateAutoUpdateConfig" + AutoUpdateService_UpsertAutoUpdateConfig_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/UpsertAutoUpdateConfig" + AutoUpdateService_DeleteAutoUpdateConfig_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/DeleteAutoUpdateConfig" + AutoUpdateService_GetAutoUpdateVersion_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/GetAutoUpdateVersion" + AutoUpdateService_CreateAutoUpdateVersion_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/CreateAutoUpdateVersion" + AutoUpdateService_UpdateAutoUpdateVersion_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/UpdateAutoUpdateVersion" + AutoUpdateService_UpsertAutoUpdateVersion_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/UpsertAutoUpdateVersion" + AutoUpdateService_DeleteAutoUpdateVersion_FullMethodName = "/teleport.autoupdate.v1.AutoUpdateService/DeleteAutoUpdateVersion" ) // AutoUpdateServiceClient is the client API for AutoUpdateService service. @@ -77,16 +72,6 @@ type AutoUpdateServiceClient interface { UpsertAutoUpdateVersion(ctx context.Context, in *UpsertAutoUpdateVersionRequest, opts ...grpc.CallOption) (*AutoUpdateVersion, error) // DeleteAutoUpdateVersion hard deletes the specified AutoUpdateVersionRequest. DeleteAutoUpdateVersion(ctx context.Context, in *DeleteAutoUpdateVersionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) - // GetAutoUpdateAgentPlan gets the current autoupdate version singleton. - GetAutoUpdateAgentPlan(ctx context.Context, in *GetAutoUpdateAgentPlanRequest, opts ...grpc.CallOption) (*AutoUpdateAgentPlan, error) - // CreateAutoUpdateAgentPlan creates a new AutoUpdateAgentPlan. - CreateAutoUpdateAgentPlan(ctx context.Context, in *CreateAutoUpdateAgentPlanRequest, opts ...grpc.CallOption) (*AutoUpdateAgentPlan, error) - // UpdateAutoUpdateAgentPlan updates AutoUpdateAgentPlan singleton. - UpdateAutoUpdateAgentPlan(ctx context.Context, in *UpdateAutoUpdateAgentPlanRequest, opts ...grpc.CallOption) (*AutoUpdateAgentPlan, error) - // UpsertAutoUpdateAgentPlan creates a new AutoUpdateAgentPlan or replaces an existing AutoUpdateAgentPlan. - UpsertAutoUpdateAgentPlan(ctx context.Context, in *UpsertAutoUpdateAgentPlanRequest, opts ...grpc.CallOption) (*AutoUpdateAgentPlan, error) - // DeleteAutoUpdateAgentPlan hard deletes the specified AutoUpdateAgentPlanRequest. - DeleteAutoUpdateAgentPlan(ctx context.Context, in *DeleteAutoUpdateAgentPlanRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) } type autoUpdateServiceClient struct { @@ -197,56 +182,6 @@ func (c *autoUpdateServiceClient) DeleteAutoUpdateVersion(ctx context.Context, i return out, nil } -func (c *autoUpdateServiceClient) GetAutoUpdateAgentPlan(ctx context.Context, in *GetAutoUpdateAgentPlanRequest, opts ...grpc.CallOption) (*AutoUpdateAgentPlan, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(AutoUpdateAgentPlan) - err := c.cc.Invoke(ctx, AutoUpdateService_GetAutoUpdateAgentPlan_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *autoUpdateServiceClient) CreateAutoUpdateAgentPlan(ctx context.Context, in *CreateAutoUpdateAgentPlanRequest, opts ...grpc.CallOption) (*AutoUpdateAgentPlan, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(AutoUpdateAgentPlan) - err := c.cc.Invoke(ctx, AutoUpdateService_CreateAutoUpdateAgentPlan_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *autoUpdateServiceClient) UpdateAutoUpdateAgentPlan(ctx context.Context, in *UpdateAutoUpdateAgentPlanRequest, opts ...grpc.CallOption) (*AutoUpdateAgentPlan, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(AutoUpdateAgentPlan) - err := c.cc.Invoke(ctx, AutoUpdateService_UpdateAutoUpdateAgentPlan_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *autoUpdateServiceClient) UpsertAutoUpdateAgentPlan(ctx context.Context, in *UpsertAutoUpdateAgentPlanRequest, opts ...grpc.CallOption) (*AutoUpdateAgentPlan, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(AutoUpdateAgentPlan) - err := c.cc.Invoke(ctx, AutoUpdateService_UpsertAutoUpdateAgentPlan_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *autoUpdateServiceClient) DeleteAutoUpdateAgentPlan(ctx context.Context, in *DeleteAutoUpdateAgentPlanRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, AutoUpdateService_DeleteAutoUpdateAgentPlan_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - // AutoUpdateServiceServer is the server API for AutoUpdateService service. // All implementations must embed UnimplementedAutoUpdateServiceServer // for forward compatibility. @@ -273,16 +208,6 @@ type AutoUpdateServiceServer interface { UpsertAutoUpdateVersion(context.Context, *UpsertAutoUpdateVersionRequest) (*AutoUpdateVersion, error) // DeleteAutoUpdateVersion hard deletes the specified AutoUpdateVersionRequest. DeleteAutoUpdateVersion(context.Context, *DeleteAutoUpdateVersionRequest) (*emptypb.Empty, error) - // GetAutoUpdateAgentPlan gets the current autoupdate version singleton. - GetAutoUpdateAgentPlan(context.Context, *GetAutoUpdateAgentPlanRequest) (*AutoUpdateAgentPlan, error) - // CreateAutoUpdateAgentPlan creates a new AutoUpdateAgentPlan. - CreateAutoUpdateAgentPlan(context.Context, *CreateAutoUpdateAgentPlanRequest) (*AutoUpdateAgentPlan, error) - // UpdateAutoUpdateAgentPlan updates AutoUpdateAgentPlan singleton. - UpdateAutoUpdateAgentPlan(context.Context, *UpdateAutoUpdateAgentPlanRequest) (*AutoUpdateAgentPlan, error) - // UpsertAutoUpdateAgentPlan creates a new AutoUpdateAgentPlan or replaces an existing AutoUpdateAgentPlan. - UpsertAutoUpdateAgentPlan(context.Context, *UpsertAutoUpdateAgentPlanRequest) (*AutoUpdateAgentPlan, error) - // DeleteAutoUpdateAgentPlan hard deletes the specified AutoUpdateAgentPlanRequest. - DeleteAutoUpdateAgentPlan(context.Context, *DeleteAutoUpdateAgentPlanRequest) (*emptypb.Empty, error) mustEmbedUnimplementedAutoUpdateServiceServer() } @@ -323,21 +248,6 @@ func (UnimplementedAutoUpdateServiceServer) UpsertAutoUpdateVersion(context.Cont func (UnimplementedAutoUpdateServiceServer) DeleteAutoUpdateVersion(context.Context, *DeleteAutoUpdateVersionRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteAutoUpdateVersion not implemented") } -func (UnimplementedAutoUpdateServiceServer) GetAutoUpdateAgentPlan(context.Context, *GetAutoUpdateAgentPlanRequest) (*AutoUpdateAgentPlan, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAutoUpdateAgentPlan not implemented") -} -func (UnimplementedAutoUpdateServiceServer) CreateAutoUpdateAgentPlan(context.Context, *CreateAutoUpdateAgentPlanRequest) (*AutoUpdateAgentPlan, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateAutoUpdateAgentPlan not implemented") -} -func (UnimplementedAutoUpdateServiceServer) UpdateAutoUpdateAgentPlan(context.Context, *UpdateAutoUpdateAgentPlanRequest) (*AutoUpdateAgentPlan, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateAutoUpdateAgentPlan not implemented") -} -func (UnimplementedAutoUpdateServiceServer) UpsertAutoUpdateAgentPlan(context.Context, *UpsertAutoUpdateAgentPlanRequest) (*AutoUpdateAgentPlan, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpsertAutoUpdateAgentPlan not implemented") -} -func (UnimplementedAutoUpdateServiceServer) DeleteAutoUpdateAgentPlan(context.Context, *DeleteAutoUpdateAgentPlanRequest) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteAutoUpdateAgentPlan not implemented") -} func (UnimplementedAutoUpdateServiceServer) mustEmbedUnimplementedAutoUpdateServiceServer() {} func (UnimplementedAutoUpdateServiceServer) testEmbeddedByValue() {} @@ -539,96 +449,6 @@ func _AutoUpdateService_DeleteAutoUpdateVersion_Handler(srv interface{}, ctx con return interceptor(ctx, in, info, handler) } -func _AutoUpdateService_GetAutoUpdateAgentPlan_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetAutoUpdateAgentPlanRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AutoUpdateServiceServer).GetAutoUpdateAgentPlan(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: AutoUpdateService_GetAutoUpdateAgentPlan_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AutoUpdateServiceServer).GetAutoUpdateAgentPlan(ctx, req.(*GetAutoUpdateAgentPlanRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AutoUpdateService_CreateAutoUpdateAgentPlan_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateAutoUpdateAgentPlanRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AutoUpdateServiceServer).CreateAutoUpdateAgentPlan(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: AutoUpdateService_CreateAutoUpdateAgentPlan_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AutoUpdateServiceServer).CreateAutoUpdateAgentPlan(ctx, req.(*CreateAutoUpdateAgentPlanRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AutoUpdateService_UpdateAutoUpdateAgentPlan_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateAutoUpdateAgentPlanRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AutoUpdateServiceServer).UpdateAutoUpdateAgentPlan(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: AutoUpdateService_UpdateAutoUpdateAgentPlan_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AutoUpdateServiceServer).UpdateAutoUpdateAgentPlan(ctx, req.(*UpdateAutoUpdateAgentPlanRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AutoUpdateService_UpsertAutoUpdateAgentPlan_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpsertAutoUpdateAgentPlanRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AutoUpdateServiceServer).UpsertAutoUpdateAgentPlan(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: AutoUpdateService_UpsertAutoUpdateAgentPlan_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AutoUpdateServiceServer).UpsertAutoUpdateAgentPlan(ctx, req.(*UpsertAutoUpdateAgentPlanRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AutoUpdateService_DeleteAutoUpdateAgentPlan_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteAutoUpdateAgentPlanRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AutoUpdateServiceServer).DeleteAutoUpdateAgentPlan(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: AutoUpdateService_DeleteAutoUpdateAgentPlan_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AutoUpdateServiceServer).DeleteAutoUpdateAgentPlan(ctx, req.(*DeleteAutoUpdateAgentPlanRequest)) - } - return interceptor(ctx, in, info, handler) -} - // AutoUpdateService_ServiceDesc is the grpc.ServiceDesc for AutoUpdateService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -676,26 +496,6 @@ var AutoUpdateService_ServiceDesc = grpc.ServiceDesc{ MethodName: "DeleteAutoUpdateVersion", Handler: _AutoUpdateService_DeleteAutoUpdateVersion_Handler, }, - { - MethodName: "GetAutoUpdateAgentPlan", - Handler: _AutoUpdateService_GetAutoUpdateAgentPlan_Handler, - }, - { - MethodName: "CreateAutoUpdateAgentPlan", - Handler: _AutoUpdateService_CreateAutoUpdateAgentPlan_Handler, - }, - { - MethodName: "UpdateAutoUpdateAgentPlan", - Handler: _AutoUpdateService_UpdateAutoUpdateAgentPlan_Handler, - }, - { - MethodName: "UpsertAutoUpdateAgentPlan", - Handler: _AutoUpdateService_UpsertAutoUpdateAgentPlan_Handler, - }, - { - MethodName: "DeleteAutoUpdateAgentPlan", - Handler: _AutoUpdateService_DeleteAutoUpdateAgentPlan_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "teleport/autoupdate/v1/autoupdate_service.proto", diff --git a/api/proto/teleport/autoupdate/v1/autoupdate_agent_plan.proto b/api/proto/teleport/autoupdate/v1/autoupdate_agent_plan.proto deleted file mode 100644 index 8a955b380179..000000000000 --- a/api/proto/teleport/autoupdate/v1/autoupdate_agent_plan.proto +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright 2024 Gravitational, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package teleport.autoupdate.v1; - -import "google/protobuf/timestamp.proto"; -import "teleport/header/v1/metadata.proto"; - -option go_package = "github.com/gravitational/teleport/api/gen/proto/go/teleport/autoupdate/v1;autoupdate"; - -// AutoUpdateAgentPlan holds dynamic configuration settings for agent autoupdates. -message AutoUpdateAgentPlan { - // kind is the kind of the resource. - string kind = 1; - // sub_kind is the sub kind of the resource. - string sub_kind = 2; - // version is the version of the resource. - string version = 3; - // metadata is the metadata of the resource. - teleport.header.v1.Metadata metadata = 4; - // spec is the spec of the resource. - AutoUpdateAgentPlanSpec spec = 5; - // status is the status of the resource. - AutoUpdateAgentPlanStatus status = 6; -} - -// AutoUpdateAgentPlanSpec is the spec for the autoupdate version. -message AutoUpdateAgentPlanSpec { - // start_version is the version to update from. - string start_version = 1; - // target_version is the version to update to. - string target_version = 2; - // schedule to use for the rollout - Schedule schedule = 3; - // strategy to use for the rollout - Strategy strategy = 4; - // autoupdate_mode to use for the rollout - Mode autoupdate_mode = 5; -} - -// Schedule type for the rollout -enum Schedule { - // UNSPECIFIED update schedule - SCHEDULE_UNSPECIFIED = 0; - // REGULAR update schedule - SCHEDULE_REGULAR = 1; - // IMMEDIATE update schedule for updating all agents immediately - SCHEDULE_IMMEDIATE = 2; -} - -// Strategy type for the rollout -enum Strategy { - // UNSPECIFIED update strategy - STRATEGY_UNSPECIFIED = 0; - // GROUPED update schedule, with no backpressure - STRATEGY_GROUPED = 1; - // BACKPRESSURE update schedule - STRATEGY_BACKPRESSURE = 2; -} - -// Mode of operation -enum Mode { - // UNSPECIFIED update mode - MODE_UNSPECIFIED = 0; - // DISABLE updates - MODE_DISABLE = 1; - // ENABLE updates - MODE_ENABLE = 2; - // PAUSE updates - MODE_PAUSE = 3; -} - -// AutoUpdateAgentPlanStatus is the status for the AutoUpdateAgentPlan. -message AutoUpdateAgentPlanStatus { - // name of the group - string name = 1; - // start_time of the rollout - google.protobuf.Timestamp start_time = 2; - // initial_count is the number of connected agents at the start of the window. - int64 initial_count = 3; - // present_count is the current number of connected agents. - int64 present_count = 4; - // failed_count specifies the number of failed agents. - int64 failed_count = 5; - // canaries is a list of canary agents. - repeated Canary canaries = 6; - // progress is the current progress through the rollout. - float progress = 7; - // state is the current state of the rollout. - State state = 8; - // last_update_time is the time of the previous update for this group. - google.protobuf.Timestamp last_update_time = 9; - // last_update_reason is the trigger for the last update - string last_update_reason = 10; -} - -// Canary agent -message Canary { - // update_uuid of the canary agent - string update_uuid = 1; - // host_uuid of the canary agent - string host_uuid = 2; - // hostname of the canary agent - string hostname = 3; - // success state of the canary agent - bool success = 4; -} - -// State of the rollout -enum State { - // UNSPECIFIED state - STATE_UNSPECIFIED = 0; - // UNSTARTED state - STATE_UNSTARTED = 1; - // CANARY state - STATE_CANARY = 2; - // ACTIVE state - STATE_ACTIVE = 3; - // DONE state - STATE_DONE = 4; - // ROLLEDBACK state - STATE_ROLLEDBACK = 5; -} diff --git a/api/proto/teleport/autoupdate/v1/autoupdate_service.proto b/api/proto/teleport/autoupdate/v1/autoupdate_service.proto index 597d9bd2a80c..efd045306d63 100644 --- a/api/proto/teleport/autoupdate/v1/autoupdate_service.proto +++ b/api/proto/teleport/autoupdate/v1/autoupdate_service.proto @@ -18,7 +18,6 @@ package teleport.autoupdate.v1; import "google/protobuf/empty.proto"; import "teleport/autoupdate/v1/autoupdate.proto"; -import "teleport/autoupdate/v1/autoupdate_agent_plan.proto"; option go_package = "github.com/gravitational/teleport/api/gen/proto/go/teleport/autoupdate/v1;autoupdate"; @@ -53,21 +52,6 @@ service AutoUpdateService { // DeleteAutoUpdateVersion hard deletes the specified AutoUpdateVersionRequest. rpc DeleteAutoUpdateVersion(DeleteAutoUpdateVersionRequest) returns (google.protobuf.Empty); - - // GetAutoUpdateAgentPlan gets the current autoupdate version singleton. - rpc GetAutoUpdateAgentPlan(GetAutoUpdateAgentPlanRequest) returns (AutoUpdateAgentPlan); - - // CreateAutoUpdateAgentPlan creates a new AutoUpdateAgentPlan. - rpc CreateAutoUpdateAgentPlan(CreateAutoUpdateAgentPlanRequest) returns (AutoUpdateAgentPlan); - - // UpdateAutoUpdateAgentPlan updates AutoUpdateAgentPlan singleton. - rpc UpdateAutoUpdateAgentPlan(UpdateAutoUpdateAgentPlanRequest) returns (AutoUpdateAgentPlan); - - // UpsertAutoUpdateAgentPlan creates a new AutoUpdateAgentPlan or replaces an existing AutoUpdateAgentPlan. - rpc UpsertAutoUpdateAgentPlan(UpsertAutoUpdateAgentPlanRequest) returns (AutoUpdateAgentPlan); - - // DeleteAutoUpdateAgentPlan hard deletes the specified AutoUpdateAgentPlanRequest. - rpc DeleteAutoUpdateAgentPlan(DeleteAutoUpdateAgentPlanRequest) returns (google.protobuf.Empty); } // Request for GetAutoUpdateConfig. @@ -111,24 +95,3 @@ message UpsertAutoUpdateVersionRequest { // Request for DeleteAutoUpdateVersion. message DeleteAutoUpdateVersionRequest {} - -// Request for GetAutoUpdateAgentPlan. -message GetAutoUpdateAgentPlanRequest {} - -// Request for CreateAutoUpdateAgentPlan. -message CreateAutoUpdateAgentPlanRequest { - AutoUpdateAgentPlan plan = 1; -} - -// Request for UpdateAutoUpdateConfig. -message UpdateAutoUpdateAgentPlanRequest { - AutoUpdateAgentPlan plan = 1; -} - -// Request for UpsertAutoUpdateAgentPlan. -message UpsertAutoUpdateAgentPlanRequest { - AutoUpdateAgentPlan plan = 1; -} - -// Request for DeleteAutoUpdateAgentPlan. -message DeleteAutoUpdateAgentPlanRequest {} diff --git a/api/proto/teleport/legacy/client/proto/event.proto b/api/proto/teleport/legacy/client/proto/event.proto index ef11e28df5ae..179babd56d6c 100644 --- a/api/proto/teleport/legacy/client/proto/event.proto +++ b/api/proto/teleport/legacy/client/proto/event.proto @@ -19,7 +19,6 @@ package proto; import "teleport/accesslist/v1/accesslist.proto"; import "teleport/accessmonitoringrules/v1/access_monitoring_rules.proto"; import "teleport/autoupdate/v1/autoupdate.proto"; -import "teleport/autoupdate/v1/autoupdate_agent_plan.proto"; import "teleport/clusterconfig/v1/access_graph_settings.proto"; import "teleport/crownjewel/v1/crownjewel.proto"; import "teleport/dbobject/v1/dbobject.proto"; @@ -53,8 +52,10 @@ message Event { reserved 7; reserved 49; reserved 63; + reserved 68; reserved "ExternalCloudAudit"; reserved "StaticHostUser"; + reserved "AutoUpdateAgentPlan"; // Operation identifies operation Operation Type = 1; @@ -189,8 +190,6 @@ message Event { teleport.userprovisioning.v2.StaticHostUser StaticHostUserV2 = 66; // UserTask is a resource for user task. teleport.usertasks.v1.UserTask UserTask = 67; - // AutoUpdateAgentPlan is a resource for planning agent automatic updates. - teleport.autoupdate.v1.AutoUpdateAgentPlan AutoUpdateAgentPlan = 68; // DynamicWindowsDesktop is a resource for dynamic Windows desktop host. types.DynamicWindowsDesktopV1 DynamicWindowsDesktop = 69; // ProvisioningPrincipalState is a resource for tracking the provisioning of diff --git a/lib/auth/autoupdate/autoupdatev1/service_test.go b/lib/auth/autoupdate/autoupdatev1/service_test.go index 862b85b90e40..840fd9bbf94c 100644 --- a/lib/auth/autoupdate/autoupdatev1/service_test.go +++ b/lib/auth/autoupdate/autoupdatev1/service_test.go @@ -210,21 +210,9 @@ func TestServiceAccess(t *testing.T) { }) } - // TODO(hugoShaka): remove this exclusion list once the methods are implemented - var notImplementedYetMethods = []string{ - "GetAutoUpdateAgentPlan", - "CreateAutoUpdateAgentPlan", - "UpdateAutoUpdateAgentPlan", - "UpsertAutoUpdateAgentPlan", - "DeleteAutoUpdateAgentPlan", - } - // verify that all declared methods have matching test cases t.Run("verify coverage", func(t *testing.T) { for _, method := range autoupdate.AutoUpdateService_ServiceDesc.Methods { - if slices.Contains(notImplementedYetMethods, method.MethodName) { - continue - } t.Run(method.MethodName, func(t *testing.T) { match := false for _, testCase := range testCases { From 3f88208093ba1b8ee3155ae86da3c041d063930b Mon Sep 17 00:00:00 2001 From: Zac Bergquist Date: Wed, 16 Oct 2024 12:51:26 -0600 Subject: [PATCH 2/5] Improve troubleshooting for LDAP authentication errors (#42948) This introduces two small changes: 1. Use an aggregate error to make sure the original error is included along with our attempt at providing a better error message. This change should help distinguish between bad authn/invalid cert and valid authentication but insufficient user permissions. 2. Make the CRL Distribution Point in Windows certs optional. This metadata is required in the certs we issue for users to RDP, but it doesn't need to be present in the certs we use to authenticate our service account. The problem with including it when it is not needed is it causes windows to perform a revocation check and log a failure, which can lead to wasted time when troubleshooting. --- lib/auth/desktop.go | 9 ++++++-- lib/auth/windows/ldap.go | 6 ++--- lib/auth/windows/windows.go | 38 ++++++++++++++++++++----------- lib/srv/desktop/windows_server.go | 5 +++- tool/tctl/common/auth_command.go | 3 +++ 5 files changed, 42 insertions(+), 19 deletions(-) diff --git a/lib/auth/desktop.go b/lib/auth/desktop.go index 39542b953a8a..fade2e5b5a04 100644 --- a/lib/auth/desktop.go +++ b/lib/auth/desktop.go @@ -80,8 +80,13 @@ func (a *Server) GenerateWindowsDesktopCert(ctx context.Context, req *proto.Wind NotAfter: a.clock.Now().UTC().Add(req.TTL.Get()), ExtraExtensions: csr.Extensions, KeyUsage: x509.KeyUsageDigitalSignature, - // CRL is required for Windows smartcard certs. - CRLDistributionPoints: []string{req.CRLEndpoint}, + } + + // CRL Distribution Points (CDP) are required for Windows smartcard certs + // for users wanting to RDP. They are not required for the service account + // cert that Teleport itself uses to authenticate for LDAP. + if req.CRLEndpoint != "" { + certReq.CRLDistributionPoints = []string{req.CRLEndpoint} } limitExceeded, err := a.desktopsLimitExceeded(ctx) diff --git a/lib/auth/windows/ldap.go b/lib/auth/windows/ldap.go index 4970500c3462..195dd14f6760 100644 --- a/lib/auth/windows/ldap.go +++ b/lib/auth/windows/ldap.go @@ -184,9 +184,9 @@ func convertLDAPError(err error) error { return trace.ConnectionProblem(err, "network error") case ldap.LDAPResultOperationsError: if strings.Contains(err.Error(), "successful bind must be completed") { - return trace.AccessDenied( - "the LDAP server did not accept Teleport's client certificate, " + - "has the Teleport CA been imported correctly?") + return trace.NewAggregate(trace.AccessDenied( + "the LDAP server did not accept Teleport's client certificate, "+ + "has the Teleport CA been imported correctly?"), err) } case ldap.LDAPResultEntryAlreadyExists: return trace.AlreadyExists("LDAP object already exists: %v", err) diff --git a/lib/auth/windows/windows.go b/lib/auth/windows/windows.go index a7d9aaf17348..c44f7f35be8e 100644 --- a/lib/auth/windows/windows.go +++ b/lib/auth/windows/windows.go @@ -128,19 +128,26 @@ func getCertRequest(req *GenerateCredentialsRequest) (*certRequest, error) { return nil, trace.Wrap(err) } csrPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE REQUEST", Bytes: csrBytes}) - // Note: this CRL DN may or may not be the same DN published in updateCRL. - // - // There can be multiple AD domains connected to Teleport. Each - // windows_desktop_service is connected to a single AD domain and publishes - // CRLs in it. Each service can also handle RDP connections for a different - // domain, with the assumption that some other windows_desktop_service - // published a CRL there. - crlDN := crlDN(req.ClusterName, req.LDAPConfig, req.CAType) - return &certRequest{ - csrPEM: csrPEM, - crlEndpoint: fmt.Sprintf("ldap:///%s?certificateRevocationList?base?objectClass=cRLDistributionPoint", crlDN), - keyDER: keyDER, - }, nil + cr := &certRequest{ + csrPEM: csrPEM, + keyDER: keyDER, + } + + if !req.OmitCDP { + // Note: this CRL DN may or may not be the same DN published in updateCRL. + // + // There can be multiple AD domains connected to Teleport. Each + // windows_desktop_service is connected to a single AD domain and publishes + // CRLs in it. Each service can also handle RDP connections for a different + // domain, with the assumption that some other windows_desktop_service + // published a CRL there. + crlDN := crlDN(req.ClusterName, req.LDAPConfig, req.CAType) + + // TODO(zmb3) consider making Teleport itself the CDP (via HTTP) instead of LDAP + cr.crlEndpoint = fmt.Sprintf("ldap:///%s?certificateRevocationList?base?objectClass=cRLDistributionPoint", crlDN) + } + + return cr, nil } // AuthInterface is a subset of auth.ClientI @@ -181,6 +188,11 @@ type GenerateCredentialsRequest struct { CreateUser bool // Groups are groups that user should be member of Groups []string + + // OmitCDP can be used to prevent Teleport from issuing certs with a + // CRL Distribution Point (CDP). CDPs are required in user certificates + // for RDP, but they can be omitted for certs that are used for LDAP binds. + OmitCDP bool } // GenerateWindowsDesktopCredentials generates a private key / certificate pair for the given diff --git a/lib/srv/desktop/windows_server.go b/lib/srv/desktop/windows_server.go index c158d6c1ce0d..28aaee2a4848 100644 --- a/lib/srv/desktop/windows_server.go +++ b/lib/srv/desktop/windows_server.go @@ -456,6 +456,7 @@ func (s *WindowsService) tlsConfigForLDAP() (*tls.Config, error) { domain: s.cfg.Domain, ttl: windowsDesktopServiceCertTTL, activeDirectorySID: s.cfg.SID, + omitCDP: true, }) if err != nil { return nil, trace.Wrap(err) @@ -1281,7 +1282,8 @@ type generateCredentialsRequest struct { // createUser specifies if Windows user should be created if missing createUser bool // groups are groups that user should be member of - groups []string + groups []string + omitCDP bool } // generateCredentials generates a private key / certificate pair for the given @@ -1309,6 +1311,7 @@ func (s *WindowsService) generateCredentials(ctx context.Context, request genera AuthClient: s.cfg.AuthClient, CreateUser: request.createUser, Groups: request.groups, + OmitCDP: request.omitCDP, }) } diff --git a/tool/tctl/common/auth_command.go b/tool/tctl/common/auth_command.go index 9d68c46e812e..141a38e8fe46 100644 --- a/tool/tctl/common/auth_command.go +++ b/tool/tctl/common/auth_command.go @@ -81,6 +81,7 @@ type AuthCommand struct { windowsDomain string windowsPKIDomain string windowsSID string + omitCDP bool signOverwrite bool password string caType string @@ -152,6 +153,7 @@ func (a *AuthCommand) Initialize(app *kingpin.Application, config *servicecfg.Co a.authSign.Flag("windows-domain", `Active Directory domain for which this cert is valid. Only used when --format is set to "windows"`).StringVar(&a.windowsDomain) a.authSign.Flag("windows-pki-domain", `Active Directory domain where CRLs will be located. Only used when --format is set to "windows"`).StringVar(&a.windowsPKIDomain) a.authSign.Flag("windows-sid", `Optional Security Identifier to embed in the certificate. Only used when --format is set to "windows"`).StringVar(&a.windowsSID) + a.authSign.Flag("omit-cdp", `Omit CRL Distribution Points from the cert. Only used when --format is set to "windows"`).BoolVar(&a.omitCDP) a.authRotate = auth.Command("rotate", "Rotate certificate authorities in the cluster.") a.authRotate.Flag("grace-period", "Grace period keeps previous certificate authorities signatures valid, if set to 0 will force users to re-login and nodes to re-register."). @@ -367,6 +369,7 @@ func (a *AuthCommand) generateWindowsCert(ctx context.Context, clusterAPI certif TTL: a.genTTL, ClusterName: cn.GetClusterName(), LDAPConfig: windows.LDAPConfig{Domain: domain}, + OmitCDP: a.omitCDP, AuthClient: clusterAPI, }) if err != nil { From f37b7bf1405cf0b880afb8acedea0a92d85d8505 Mon Sep 17 00:00:00 2001 From: Gavin Frazar Date: Wed, 16 Oct 2024 12:13:39 -0700 Subject: [PATCH 3/5] audit log postgres session PID (#47525) --- .../teleport/legacy/types/events/events.proto | 4 + api/types/events/events.pb.go | 1520 +++++++++-------- lib/srv/db/audit_test.go | 5 +- lib/srv/db/common/audit.go | 1 + lib/srv/db/common/session.go | 2 + lib/srv/db/postgres/engine.go | 2 + 6 files changed, 789 insertions(+), 745 deletions(-) diff --git a/api/proto/teleport/legacy/types/events/events.proto b/api/proto/teleport/legacy/types/events/events.proto index 28b7d0f5087d..ebf1cc1ee6be 100644 --- a/api/proto/teleport/legacy/types/events/events.proto +++ b/api/proto/teleport/legacy/types/events/events.proto @@ -3041,6 +3041,10 @@ message DatabaseSessionStart { (gogoproto.embed) = true, (gogoproto.jsontag) = "" ]; + // PostgresPID is the Postgres backend PID that was created for a Postgres + // connection. This can be useful for backend process cancellation or + // termination and it is not a sensitive or secret value. + uint32 PostgresPID = 8 [(gogoproto.jsontag) = "postgres_pid,omitempty"]; } // DatabaseSessionQuery is emitted when a user executes a database query. diff --git a/api/types/events/events.pb.go b/api/types/events/events.pb.go index cc00e9994ea4..c3abab4b52bf 100644 --- a/api/types/events/events.pb.go +++ b/api/types/events/events.pb.go @@ -5175,7 +5175,11 @@ type DatabaseSessionStart struct { // Status indicates whether the connection was successful or denied. Status `protobuf:"bytes,6,opt,name=Status,proto3,embedded=Status" json:""` // Database contains database related metadata. - DatabaseMetadata `protobuf:"bytes,7,opt,name=Database,proto3,embedded=Database" json:""` + DatabaseMetadata `protobuf:"bytes,7,opt,name=Database,proto3,embedded=Database" json:""` + // PostgresPID is the Postgres backend PID that was created for a Postgres + // connection. This can be useful for backend process cancellation or + // termination and it is not a sensitive or secret value. + PostgresPID uint32 `protobuf:"varint,8,opt,name=PostgresPID,proto3" json:"postgres_pid,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -14944,15 +14948,15 @@ func init() { } var fileDescriptor_007ba1c3d6266d56 = []byte{ - // 16459 bytes of a gzipped FileDescriptorProto + // 16480 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6d, 0x74, 0x24, 0x49, 0x72, 0x18, 0x86, 0xfe, 0x40, 0x03, 0x08, 0x7c, 0x0c, 0x90, 0xf3, 0x55, 0x3b, 0x3b, 0x3b, 0xd8, 0xad, 0xbd, 0x9b, 0x9b, 0xd9, 0xdb, 0x9d, 0xb9, 0x9d, 0x9d, 0xdd, 0xbd, 0xfd, 0xba, 0xbd, 0x06, 0x1a, 0x18, 0xf4, 0x0c, 0xbe, 0xb6, 0x1a, 0x33, 0x73, 0x7b, 0xe4, 0x5d, 0xb3, 0xd0, 0x95, 0x68, - 0xd4, 0x4e, 0x77, 0x55, 0xb3, 0xaa, 0x7a, 0x30, 0x58, 0x7f, 0xf1, 0x64, 0x8a, 0x22, 0xa5, 0xbb, + 0xd4, 0x4e, 0x77, 0x55, 0xb3, 0xaa, 0x7a, 0x30, 0x58, 0x7f, 0xf1, 0x64, 0x8a, 0x22, 0xc5, 0xbb, 0xd3, 0xf9, 0x68, 0x8a, 0x94, 0x28, 0x59, 0xa4, 0x3e, 0x6c, 0x8a, 0xa6, 0x48, 0x51, 0xa2, 0x49, - 0x1e, 0x69, 0x3e, 0x4b, 0x3a, 0x7f, 0x9c, 0xc4, 0x27, 0x3e, 0x49, 0xb6, 0xf5, 0xf4, 0x6c, 0x19, - 0x27, 0xd3, 0xd6, 0x1f, 0x3c, 0xfb, 0x3d, 0xda, 0xe6, 0xb3, 0xce, 0xb2, 0xec, 0xa7, 0x97, 0x91, + 0x1e, 0x69, 0x3e, 0x4b, 0x3a, 0x7f, 0x9c, 0xc4, 0x67, 0x3e, 0x49, 0xb6, 0xf5, 0xf4, 0x6c, 0x19, + 0x27, 0xd3, 0xd6, 0x1f, 0x3c, 0xfb, 0x3d, 0xda, 0xe6, 0xb3, 0xce, 0xb2, 0xec, 0xe7, 0x97, 0x91, 0x59, 0x55, 0x59, 0x5f, 0x8d, 0xcf, 0x25, 0x16, 0x07, 0xfc, 0x99, 0x41, 0x47, 0x44, 0x46, 0x66, 0x45, 0x46, 0x66, 0x46, 0x66, 0x46, 0x46, 0xc0, 0x75, 0x8f, 0xb6, 0x68, 0xc7, 0x76, 0xbc, 0x9b, 0x2d, 0xda, 0xd4, 0x1b, 0x9b, 0x37, 0xbd, 0xcd, 0x0e, 0x75, 0x6f, 0xd2, 0xc7, 0xd4, 0xf2, 0xfc, @@ -14972,13 +14976,13 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0xfe, 0x9d, 0xad, 0xc9, 0xbe, 0xed, 0xad, 0xc9, 0x22, 0x93, 0xe4, 0x37, 0xbe, 0x3b, 0x99, 0xd3, 0xb0, 0x24, 0x79, 0x1b, 0x86, 0xa7, 0x5b, 0x5d, 0xd7, 0xa3, 0xce, 0xa2, 0xde, 0xa6, 0x4a, 0x09, 0x2b, 0xbc, 0xb4, 0xbd, 0x35, 0x79, 0xa1, 0xc1, 0xc1, 0x75, 0x4b, 0x6f, 0xcb, 0x15, 0xcb, 0xe4, - 0xea, 0x6f, 0xe6, 0xe0, 0x4c, 0x8d, 0xba, 0xae, 0x69, 0x5b, 0x81, 0x6c, 0x3e, 0x09, 0x43, 0x02, + 0xea, 0x6f, 0xe5, 0xe0, 0x4c, 0x8d, 0xba, 0xae, 0x69, 0x5b, 0x81, 0x6c, 0x3e, 0x09, 0x43, 0x02, 0x54, 0xad, 0xa0, 0x7c, 0x86, 0xa6, 0x06, 0xb6, 0xb7, 0x26, 0x0b, 0xae, 0x69, 0x68, 0x21, 0x86, 0x7c, 0x06, 0x06, 0x1e, 0x9a, 0xde, 0xfa, 0xc2, 0x6c, 0x59, 0xc8, 0xe9, 0xc2, 0xf6, 0xd6, 0x24, 0xd9, 0x30, 0xbd, 0xf5, 0x7a, 0x7b, 0x4d, 0x97, 0x2a, 0xf4, 0xc9, 0xc8, 0x3c, 0x8c, 0x2f, 0x3b, 0xe6, 0x63, 0xdd, 0xa3, 0xf7, 0xe8, 0xe6, 0xb2, 0xdd, 0x32, 0x1b, 0x9b, 0x42, 0x8a, 0xcf, 0x6e, 0x6f, 0x4d, 0x5e, 0xee, 0x70, 0x5c, 0xfd, 0x11, 0xdd, 0xac, 0x77, 0x10, 0x2b, 0x31, 0x49, 0x94, - 0x54, 0x7f, 0xab, 0x04, 0x23, 0xf7, 0x5d, 0xea, 0x04, 0xed, 0xbe, 0x0a, 0x45, 0xf6, 0x5b, 0x34, + 0x54, 0x7f, 0xbb, 0x04, 0x23, 0xf7, 0x5d, 0xea, 0x04, 0xed, 0xbe, 0x0a, 0x45, 0xf6, 0x5b, 0x34, 0x19, 0x65, 0xde, 0x75, 0xa9, 0x23, 0xcb, 0x9c, 0xe1, 0xc9, 0x75, 0xe8, 0x9f, 0xb7, 0x9b, 0xa6, 0x25, 0x9a, 0x7d, 0x76, 0x7b, 0x6b, 0xf2, 0x4c, 0x8b, 0x01, 0x24, 0x4a, 0x4e, 0x41, 0x3e, 0x07, 0x23, 0xd5, 0x36, 0xd3, 0x21, 0xdb, 0xd2, 0x3d, 0xdb, 0x11, 0xad, 0x45, 0xe9, 0x9a, 0x12, 0x5c, @@ -15020,7 +15024,7 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0x07, 0x51, 0xb2, 0x02, 0x84, 0xc4, 0xe4, 0x26, 0x0c, 0x2e, 0xb3, 0x75, 0xb6, 0x61, 0xb7, 0x84, 0xf2, 0xe1, 0x52, 0x80, 0x6b, 0xaf, 0x3c, 0x56, 0x7d, 0x22, 0x75, 0x0e, 0xc6, 0xa6, 0x5b, 0x26, 0xb5, 0x3c, 0xb9, 0xd5, 0x6c, 0x24, 0x97, 0x9b, 0xd4, 0xf2, 0xe4, 0x56, 0xe3, 0x98, 0xd7, 0x19, - 0x54, 0x6e, 0x75, 0x40, 0xaa, 0xfe, 0x5e, 0x01, 0x9e, 0xba, 0xd7, 0x5d, 0xa5, 0x8e, 0x45, 0x3d, + 0x54, 0x6e, 0x75, 0x40, 0xaa, 0xfe, 0x7e, 0x01, 0x9e, 0xba, 0xd7, 0x5d, 0xa5, 0x8e, 0x45, 0x3d, 0xea, 0x8a, 0x05, 0x39, 0xe0, 0xba, 0x08, 0x13, 0x09, 0xa4, 0xe0, 0x8e, 0x0b, 0xe5, 0xa3, 0x00, 0x59, 0x17, 0x6b, 0xbc, 0x3c, 0xdb, 0x26, 0x8a, 0x92, 0x39, 0x38, 0x13, 0x02, 0x59, 0x23, 0x5c, 0x25, 0x8f, 0x4b, 0xc9, 0x95, 0xed, 0xad, 0xc9, 0x4b, 0x12, 0x37, 0xd6, 0x6c, 0x59, 0x83, 0xe3, @@ -15036,7 +15040,7 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0x1f, 0x62, 0x80, 0x92, 0x82, 0xaa, 0xb6, 0xf5, 0xa6, 0x6f, 0x31, 0x5f, 0xdb, 0xde, 0x9a, 0xfc, 0x44, 0x6a, 0x1d, 0x26, 0xa3, 0x92, 0x57, 0xe8, 0x2c, 0x4e, 0x44, 0x03, 0x12, 0xe2, 0x16, 0x6d, 0x83, 0xe2, 0x37, 0xf4, 0x23, 0x7f, 0x75, 0x7b, 0x6b, 0xf2, 0x8a, 0xc4, 0xdf, 0xb2, 0x0d, 0x1a, - 0x6f, 0x7e, 0x4a, 0x69, 0xf5, 0x37, 0x0b, 0x70, 0xa5, 0x56, 0x5e, 0x98, 0xaf, 0x1a, 0xbe, 0x49, + 0x6f, 0x7e, 0x4a, 0x69, 0xf5, 0xb7, 0x0a, 0x70, 0xa5, 0x56, 0x5e, 0x98, 0xaf, 0x1a, 0xbe, 0x49, 0xb3, 0xec, 0xd8, 0x8f, 0x4d, 0x43, 0x1a, 0xbd, 0xab, 0x70, 0x31, 0x86, 0x9a, 0x41, 0x2b, 0x2a, 0x30, 0xa6, 0xf1, 0xdb, 0x7c, 0x73, 0xa9, 0x23, 0x68, 0xea, 0xdc, 0xd4, 0x8a, 0x2e, 0xda, 0x59, 0x8c, 0x58, 0x1f, 0xc5, 0x50, 0xb5, 0x75, 0xdb, 0xf1, 0x1a, 0x5d, 0x4f, 0x28, 0x01, 0xf6, 0x51, @@ -15054,16 +15058,16 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0x31, 0x16, 0xcd, 0x0e, 0x19, 0x97, 0x76, 0x62, 0x2c, 0xbe, 0x58, 0x66, 0x1c, 0x67, 0xa2, 0xbe, 0x0f, 0x23, 0x72, 0x41, 0x72, 0x01, 0xb7, 0xd6, 0x7c, 0x9c, 0xe0, 0xa6, 0xdc, 0x34, 0x70, 0x3f, 0xfd, 0x32, 0x0c, 0x57, 0xa8, 0xdb, 0x70, 0xcc, 0x0e, 0xb3, 0x1a, 0x84, 0x92, 0x9f, 0xd9, 0xde, - 0x9a, 0x1c, 0x36, 0x42, 0xb0, 0x26, 0xd3, 0xa8, 0xff, 0x77, 0x0e, 0x2e, 0x30, 0xde, 0x65, 0xd7, + 0x9a, 0x1c, 0x36, 0x42, 0xb0, 0x26, 0xd3, 0xa8, 0xff, 0x57, 0x0e, 0x2e, 0x30, 0xde, 0x65, 0xd7, 0x35, 0x9b, 0x56, 0x5b, 0x5e, 0xb6, 0x5f, 0x84, 0x52, 0x0d, 0xeb, 0x13, 0x35, 0x9d, 0xdb, 0xde, 0x9a, 0x1c, 0xe7, 0x2d, 0x90, 0xf4, 0x50, 0xd0, 0x04, 0xfb, 0xca, 0xfc, 0x0e, 0xfb, 0x4a, 0x66, 0xd2, 0x7a, 0xba, 0xe3, 0x99, 0x56, 0xb3, 0xe6, 0xe9, 0x5e, 0xd7, 0x8d, 0x98, 0xb4, 0x02, 0x53, 0x77, 0x11, 0x15, 0x31, 0x69, 0x23, 0x85, 0xc8, 0xbb, 0x30, 0x32, 0x63, 0x19, 0x21, 0x13, 0x3e, - 0x21, 0x3e, 0xcd, 0x2c, 0x4d, 0x8a, 0xf0, 0x24, 0x8b, 0x48, 0x01, 0xf5, 0xaf, 0xe7, 0x40, 0xe1, + 0x21, 0x3e, 0xcd, 0x2c, 0x4d, 0x8a, 0xf0, 0x24, 0x8b, 0x48, 0x01, 0xf5, 0x6f, 0xe4, 0x40, 0xe1, 0x9b, 0xc0, 0x79, 0xd3, 0xf5, 0x16, 0x68, 0x7b, 0x55, 0x9a, 0x9d, 0x66, 0xfd, 0x5d, 0x25, 0xc3, 0x49, 0x6b, 0x11, 0x9a, 0x02, 0x62, 0x57, 0xd9, 0x32, 0xdd, 0xc4, 0xf6, 0x23, 0x56, 0x8a, 0x54, 0x61, 0x80, 0x73, 0xe6, 0xb6, 0xc4, 0xf0, 0x2d, 0xc5, 0x57, 0x84, 0x78, 0xd5, 0x5c, 0x19, 0xda, - 0x9c, 0x58, 0xde, 0xd0, 0x88, 0xf2, 0xea, 0xdf, 0xc8, 0xc3, 0x78, 0xbc, 0x10, 0x79, 0x08, 0x83, + 0x9c, 0x58, 0xde, 0xd0, 0x88, 0xf2, 0xea, 0xdf, 0xcc, 0xc3, 0x78, 0xbc, 0x10, 0x79, 0x08, 0x83, 0x77, 0x6d, 0xd3, 0xa2, 0xc6, 0x92, 0x85, 0x2d, 0xec, 0x7d, 0x38, 0xe2, 0xdb, 0xe2, 0x67, 0x3f, 0xc0, 0x32, 0x75, 0xd9, 0x82, 0xc5, 0xb3, 0x92, 0x80, 0x19, 0xf9, 0x22, 0x0c, 0x31, 0x1b, 0xf0, 0x31, 0x72, 0xce, 0xef, 0xc8, 0xf9, 0x59, 0xc1, 0xf9, 0x9c, 0xc3, 0x0b, 0x25, 0x59, 0x87, 0xec, @@ -15076,7 +15080,7 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0x1e, 0x7c, 0xce, 0x47, 0x41, 0x78, 0x08, 0x90, 0x05, 0xc1, 0x49, 0x2e, 0xbd, 0x01, 0xc3, 0x12, 0xf1, 0x9e, 0x26, 0xf5, 0x6f, 0x15, 0x65, 0x5d, 0xf7, 0x9b, 0x25, 0x74, 0xfd, 0x26, 0xd3, 0x51, 0xd7, 0x65, 0x56, 0x05, 0x57, 0x72, 0xa1, 0x89, 0x08, 0x8a, 0x6a, 0x22, 0x82, 0xc8, 0x2b, 0x30, - 0xc8, 0x59, 0x04, 0xfb, 0x57, 0xdc, 0xfb, 0x3a, 0x08, 0x8b, 0x2e, 0xcd, 0x01, 0x21, 0xf9, 0xc5, + 0xc8, 0x59, 0x04, 0xfb, 0x57, 0xdc, 0xfb, 0x3a, 0x08, 0x8b, 0x2e, 0xcd, 0x01, 0x21, 0xf9, 0xa5, 0x1c, 0x3c, 0xd3, 0x53, 0x12, 0xa8, 0x0c, 0xc3, 0xb7, 0x5e, 0xdd, 0x97, 0x18, 0xa7, 0x5e, 0xda, 0xde, 0x9a, 0xbc, 0xde, 0x0e, 0x48, 0xea, 0x8e, 0x44, 0x53, 0x6f, 0x70, 0x22, 0xa9, 0x5d, 0xbd, 0x9b, 0xc2, 0x8c, 0x47, 0x5e, 0xe9, 0x2c, 0x1e, 0x1d, 0x59, 0x8d, 0x4d, 0xbf, 0x91, 0xc5, 0xd0, @@ -15100,7 +15104,7 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0x65, 0x28, 0x43, 0xa1, 0x26, 0x9b, 0x1c, 0x53, 0x6f, 0x70, 0x94, 0xac, 0xc9, 0xd1, 0x42, 0x6c, 0x5b, 0x2e, 0xfa, 0x50, 0xa3, 0x0d, 0xdb, 0x61, 0xb6, 0x00, 0x9e, 0x49, 0x8a, 0x6d, 0xb9, 0xcb, 0x71, 0x75, 0xc7, 0x47, 0xca, 0xc6, 0x76, 0xbc, 0xe0, 0xdd, 0xe2, 0xe0, 0xf0, 0xf8, 0x48, 0xfc, - 0x18, 0x59, 0xfd, 0x6b, 0x05, 0x18, 0x16, 0xa4, 0x6c, 0x29, 0x3d, 0x55, 0xf0, 0x83, 0x28, 0x78, + 0x18, 0x59, 0xfd, 0xeb, 0x05, 0x18, 0x16, 0xa4, 0x6c, 0x29, 0x3d, 0x55, 0xf0, 0x83, 0x28, 0x78, 0xaa, 0xa2, 0x96, 0x0e, 0x4b, 0x51, 0xd5, 0xaf, 0xe6, 0x83, 0xd9, 0x68, 0xd9, 0x31, 0xad, 0x83, 0xcd, 0x46, 0x57, 0x01, 0xa6, 0xd7, 0xbb, 0xd6, 0x23, 0x7e, 0x5d, 0x96, 0x0f, 0xaf, 0xcb, 0x1a, 0xa6, 0x26, 0x61, 0xc8, 0x33, 0x50, 0xac, 0x30, 0xfe, 0xac, 0x67, 0x46, 0xa6, 0x86, 0xbe, 0xc3, @@ -15108,14 +15112,14 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0xae, 0x56, 0x19, 0x40, 0xe3, 0x70, 0x72, 0x1b, 0x26, 0x2a, 0xb4, 0xa5, 0x6f, 0x2e, 0x98, 0xad, 0x96, 0xe9, 0xd2, 0x86, 0x6d, 0x19, 0x2e, 0x0a, 0x59, 0x54, 0xd7, 0x76, 0xb5, 0x24, 0x01, 0x51, 0xa1, 0xb4, 0xb4, 0xb6, 0xe6, 0x52, 0x0f, 0xc5, 0x57, 0x98, 0x02, 0x36, 0x39, 0xdb, 0x08, 0xd1, - 0x04, 0x46, 0xfd, 0x95, 0x1c, 0xdb, 0xbd, 0xb8, 0x8f, 0x3c, 0xbb, 0x13, 0x68, 0xf9, 0x81, 0x44, + 0x04, 0x46, 0xfd, 0xd5, 0x1c, 0xdb, 0xbd, 0xb8, 0x8f, 0x3c, 0xbb, 0x13, 0x68, 0xf9, 0x81, 0x44, 0x72, 0x3d, 0xb4, 0x2b, 0xf2, 0xf8, 0xb5, 0x67, 0xc4, 0xd7, 0x0e, 0x08, 0xdb, 0x22, 0xb4, 0x28, - 0x52, 0xbf, 0xaa, 0xb0, 0xc3, 0x57, 0xa9, 0x7f, 0x90, 0x87, 0x8b, 0xa2, 0xc5, 0xd3, 0x2d, 0xb3, + 0x52, 0xbf, 0xaa, 0xb0, 0xc3, 0x57, 0xa9, 0x7f, 0x98, 0x87, 0x8b, 0xa2, 0xc5, 0xd3, 0x2d, 0xb3, 0xb3, 0x6a, 0xeb, 0x8e, 0xa1, 0xd1, 0x06, 0x35, 0x1f, 0xd3, 0xe3, 0x39, 0xf0, 0xa2, 0x43, 0xa7, 0x78, 0x80, 0xa1, 0x73, 0x0b, 0x37, 0x82, 0x4c, 0x32, 0x78, 0xe0, 0xcb, 0x8d, 0x8a, 0xf1, 0xed, 0xad, 0xc9, 0x11, 0x83, 0x83, 0xf1, 0xc8, 0x5f, 0x93, 0x89, 0x98, 0x92, 0xcc, 0x53, 0xab, 0xe9, - 0xad, 0xa3, 0x92, 0xf4, 0x73, 0x25, 0x69, 0x21, 0x44, 0x13, 0x18, 0xf5, 0x7f, 0xcf, 0xc3, 0xb9, - 0xb8, 0xc8, 0x6b, 0xd4, 0x32, 0x4e, 0xe5, 0xfd, 0xd1, 0xc8, 0xfb, 0x0f, 0x0b, 0xf0, 0xb4, 0x28, + 0xad, 0xa3, 0x92, 0xf4, 0x73, 0x25, 0x69, 0x21, 0x44, 0x13, 0x18, 0xf5, 0x7f, 0xcb, 0xc3, 0xb9, + 0xb8, 0xc8, 0x6b, 0xd4, 0x32, 0x4e, 0xe5, 0xfd, 0xd1, 0xc8, 0xfb, 0x8f, 0x0a, 0xf0, 0xb4, 0x28, 0x53, 0x5b, 0xd7, 0x1d, 0x6a, 0x54, 0x4c, 0x87, 0x36, 0x3c, 0xdb, 0xd9, 0x3c, 0xc6, 0x06, 0xd4, 0xe1, 0x89, 0xfd, 0x36, 0x94, 0xc4, 0xf6, 0x9f, 0xaf, 0x33, 0x63, 0x41, 0x4b, 0x10, 0x9a, 0x58, 0xa1, 0xf8, 0xd1, 0x41, 0xac, 0xb3, 0x4a, 0xbb, 0xe9, 0xac, 0xcf, 0xc2, 0x68, 0x20, 0x7a, 0xdc, @@ -15128,16 +15132,16 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0xc3, 0x0e, 0xa8, 0x61, 0xff, 0x38, 0x0f, 0xa3, 0xc1, 0xa6, 0xe9, 0x03, 0xda, 0x38, 0x9a, 0xb5, 0x2a, 0xdc, 0xca, 0x14, 0x0e, 0xbc, 0x95, 0x39, 0x88, 0x42, 0xa9, 0xc1, 0x91, 0x27, 0x37, 0x0d, 0x50, 0x62, 0xfc, 0xc8, 0x33, 0x38, 0xe8, 0x7c, 0x0e, 0x06, 0x16, 0xf4, 0x27, 0x66, 0xbb, 0xdb, - 0x16, 0x56, 0x3a, 0xba, 0x93, 0xb5, 0xf5, 0x27, 0x9a, 0x0f, 0x57, 0xff, 0xbb, 0x1c, 0x8c, 0x09, + 0x16, 0x56, 0x3a, 0xba, 0x93, 0xb5, 0xf5, 0x27, 0x9a, 0x0f, 0x57, 0xff, 0xdb, 0x1c, 0x8c, 0x09, 0xa1, 0x0a, 0xe6, 0x07, 0x92, 0x6a, 0x28, 0x9d, 0xfc, 0x81, 0xa5, 0x53, 0xd8, 0xbf, 0x74, 0xd4, - 0x3f, 0x5f, 0x00, 0x65, 0xd6, 0x6c, 0xd1, 0x15, 0x47, 0xb7, 0xdc, 0x35, 0xea, 0x88, 0xed, 0xf4, + 0xbf, 0x50, 0x00, 0x65, 0xd6, 0x6c, 0xd1, 0x15, 0x47, 0xb7, 0xdc, 0x35, 0xea, 0x88, 0xed, 0xf4, 0x0c, 0x63, 0x75, 0xa0, 0x0f, 0x94, 0xa6, 0x94, 0xfc, 0xbe, 0xa6, 0x94, 0x4f, 0xc3, 0x90, 0x68, 0x4c, 0xe0, 0xca, 0x88, 0xa3, 0xc6, 0xf1, 0x81, 0x5a, 0x88, 0x67, 0xc4, 0xe5, 0x4e, 0xc7, 0xb1, 0x1f, 0x53, 0x87, 0xdf, 0x52, 0x09, 0x62, 0xdd, 0x07, 0x6a, 0x21, 0x5e, 0xe2, 0x4c, 0x7d, 0x7b, 0x51, 0xe6, 0x4c, 0x1d, 0x2d, 0xc4, 0x93, 0x6b, 0x30, 0x38, 0x6f, 0x37, 0x74, 0x14, 0x34, 0x9f, 0x56, 0x46, 0xb6, 0xb7, 0x26, 0x07, 0x5b, 0x02, 0xa6, 0x05, 0x58, 0x46, 0x59, 0xb1, 0x37, 0xac, 0x96, 0xad, 0x73, 0xe7, 0x97, 0x41, 0x4e, 0x69, 0x08, 0x98, 0x16, 0x60, 0x19, 0x25, 0x93, 0x39, - 0x3a, 0x15, 0x0d, 0x86, 0x3c, 0xd7, 0x04, 0x4c, 0x0b, 0xb0, 0xea, 0xaf, 0x14, 0x99, 0xf6, 0xba, + 0x3a, 0x15, 0x0d, 0x86, 0x3c, 0xd7, 0x04, 0x4c, 0x0b, 0xb0, 0xea, 0xaf, 0x16, 0x99, 0xf6, 0xba, 0xe6, 0x87, 0x27, 0x7e, 0x5d, 0x08, 0x07, 0x4c, 0xff, 0x3e, 0x06, 0xcc, 0x89, 0x39, 0xb0, 0x53, 0xff, 0xe5, 0x00, 0x80, 0x90, 0xfe, 0xcc, 0xe9, 0xe6, 0xf0, 0x60, 0x5a, 0x53, 0x81, 0x89, 0x19, 0x6b, 0x5d, 0xb7, 0x1a, 0xd4, 0x08, 0x8f, 0x2d, 0x4b, 0x38, 0xb4, 0xd1, 0x09, 0x92, 0x0a, 0x64, @@ -15152,7 +15156,7 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0xf7, 0x29, 0x28, 0x2c, 0x0b, 0x4f, 0x85, 0x22, 0xb7, 0x67, 0x3a, 0xa6, 0xa1, 0x31, 0x18, 0xb9, 0x0e, 0x83, 0xd3, 0xe8, 0xfe, 0x26, 0x6e, 0x11, 0x8b, 0x7c, 0xfd, 0x6b, 0x20, 0x0c, 0xbd, 0x60, 0x7d, 0x34, 0xf9, 0x24, 0x0c, 0x2c, 0x3b, 0x76, 0xd3, 0xd1, 0xdb, 0x62, 0x0d, 0x46, 0x57, 0x91, - 0x0e, 0x07, 0x69, 0x3e, 0x4e, 0xfd, 0xc9, 0x9c, 0x6f, 0xb6, 0xb3, 0x12, 0xb5, 0x2e, 0x1e, 0xcd, + 0x0e, 0x07, 0x69, 0x3e, 0x4e, 0xfd, 0xa9, 0x9c, 0x6f, 0xb6, 0xb3, 0x12, 0xb5, 0x2e, 0x1e, 0xcd, 0x63, 0xdd, 0x83, 0xbc, 0x84, 0xcb, 0x41, 0x9a, 0x8f, 0x23, 0xd7, 0xa1, 0x7f, 0xc6, 0x71, 0x6c, 0x47, 0xf6, 0x71, 0xa7, 0x0c, 0x20, 0x5f, 0xf7, 0x22, 0x05, 0x79, 0x1d, 0x86, 0xf9, 0x9c, 0xc3, 0x4f, 0x34, 0x0b, 0xbd, 0x6e, 0x4a, 0x65, 0x4a, 0xf5, 0xdb, 0x05, 0xc9, 0x66, 0xe3, 0x12, 0x3f, @@ -15161,10 +15165,10 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0x93, 0xc5, 0x0e, 0xd3, 0x1f, 0x84, 0x22, 0x96, 0x6d, 0x66, 0xf8, 0x8e, 0x89, 0x63, 0xc3, 0x7d, 0xcc, 0x65, 0x28, 0x96, 0x9d, 0xe6, 0x63, 0x31, 0x6b, 0x21, 0x56, 0x77, 0x9a, 0x8f, 0x35, 0x84, 0x92, 0x9b, 0x00, 0x1a, 0xf5, 0xba, 0x8e, 0x85, 0xcf, 0x4f, 0x86, 0xf0, 0xfc, 0x0d, 0x67, 0x43, - 0x07, 0xa1, 0xf5, 0x86, 0x6d, 0x50, 0x4d, 0x22, 0x51, 0xff, 0x6a, 0x78, 0xb1, 0x53, 0x31, 0xdd, + 0x07, 0xa1, 0xf5, 0x86, 0x6d, 0x50, 0x4d, 0x22, 0x51, 0xff, 0x5a, 0x78, 0xb1, 0x53, 0x31, 0xdd, 0x47, 0xa7, 0x5d, 0xb8, 0x87, 0x2e, 0xd4, 0xc5, 0x11, 0x67, 0xb2, 0x93, 0x26, 0xa1, 0x7f, 0xb6, 0xa5, 0x37, 0x5d, 0xec, 0x43, 0xe1, 0x4b, 0xb6, 0xc6, 0x00, 0x1a, 0x87, 0xc7, 0xfa, 0x69, 0x70, - 0xe7, 0x7e, 0xfa, 0xe9, 0xfe, 0x60, 0xb4, 0x2d, 0x52, 0x6f, 0xc3, 0x76, 0x4e, 0xbb, 0x6a, 0xb7, + 0xe7, 0x7e, 0xfa, 0x99, 0xfe, 0x60, 0xb4, 0x2d, 0x52, 0x6f, 0xc3, 0x76, 0x4e, 0xbb, 0x6a, 0xb7, 0x5d, 0x75, 0x15, 0x06, 0x6a, 0x4e, 0x43, 0x3a, 0xba, 0xc0, 0xfd, 0x80, 0xeb, 0x34, 0xf8, 0xb1, 0x85, 0x8f, 0x64, 0x74, 0x15, 0xd7, 0x43, 0xba, 0x81, 0x90, 0xce, 0x70, 0x3d, 0x41, 0x27, 0x90, 0x82, 0x6e, 0xd9, 0x76, 0x3c, 0xd1, 0x71, 0x01, 0x5d, 0xc7, 0x76, 0x3c, 0xcd, 0x47, 0x92, 0x4f, @@ -15174,10 +15178,10 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0x52, 0x99, 0xdb, 0x79, 0xc3, 0xc8, 0x32, 0x10, 0x19, 0x6e, 0x41, 0x39, 0x8a, 0xef, 0xd9, 0x75, 0xfc, 0x5b, 0x13, 0xe4, 0xea, 0x75, 0x18, 0x8f, 0x57, 0x43, 0x86, 0x61, 0x60, 0x7a, 0x69, 0x71, 0x71, 0x66, 0x7a, 0x65, 0xbc, 0x8f, 0x0c, 0x42, 0xb1, 0x36, 0xb3, 0x58, 0x19, 0xcf, 0xa9, 0xbf, - 0x24, 0xcd, 0x20, 0x4c, 0xb5, 0x4e, 0xaf, 0x86, 0x0f, 0x74, 0xdf, 0x32, 0x8e, 0xf7, 0xa1, 0x78, + 0x2c, 0xcd, 0x20, 0x4c, 0xb5, 0x4e, 0xaf, 0x86, 0x0f, 0x74, 0xdf, 0x32, 0x8e, 0xf7, 0xa1, 0x78, 0x62, 0xd0, 0x36, 0x3d, 0x8f, 0x1a, 0x62, 0x95, 0xc0, 0xfb, 0x42, 0xef, 0x89, 0x96, 0xc0, 0x93, 0x17, 0x61, 0x14, 0x61, 0xe2, 0x8a, 0x90, 0xef, 0x8f, 0x45, 0x01, 0xe7, 0x89, 0x16, 0x45, 0xaa, - 0xbf, 0x1b, 0xde, 0x0e, 0xcf, 0x53, 0xfd, 0xb8, 0xde, 0x28, 0x7e, 0x4c, 0xfa, 0x4b, 0xfd, 0xd7, + 0xbf, 0x17, 0xde, 0x0e, 0xcf, 0x53, 0xfd, 0xb8, 0xde, 0x28, 0x7e, 0x4c, 0xfa, 0x4b, 0xfd, 0xd7, 0x45, 0xfe, 0x04, 0x84, 0xbf, 0x17, 0x3c, 0x0a, 0x51, 0x86, 0x47, 0xba, 0x85, 0x3d, 0x1c, 0xe9, 0xbe, 0x08, 0xa5, 0x05, 0xea, 0xad, 0xdb, 0xbe, 0xe3, 0x17, 0x7a, 0xe8, 0xb5, 0x11, 0x22, 0x7b, 0xe8, 0x71, 0x1a, 0xf2, 0x08, 0x88, 0xff, 0x18, 0x30, 0x70, 0xc4, 0xf6, 0x8f, 0x90, 0x2f, 0x26, @@ -15187,14 +15191,14 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0xf9, 0x2e, 0x30, 0xe4, 0xc2, 0xb4, 0x85, 0xbf, 0xdc, 0x11, 0xa7, 0x0b, 0x81, 0xb6, 0x44, 0xdf, 0xf3, 0xc4, 0x65, 0xc5, 0xb1, 0x31, 0x6d, 0x19, 0x3c, 0xc0, 0xe8, 0x5e, 0x82, 0x89, 0x72, 0xa7, 0xd3, 0x32, 0xa9, 0x81, 0xfa, 0xa2, 0x75, 0x5b, 0xd4, 0x15, 0x2e, 0x3f, 0xf8, 0x18, 0x44, 0xe7, - 0xc8, 0x3a, 0x3e, 0x47, 0xad, 0x3b, 0xdd, 0xa8, 0x7f, 0x66, 0xb2, 0xac, 0xfa, 0x67, 0xf2, 0x70, + 0xc8, 0x3a, 0x3e, 0x47, 0xad, 0x3b, 0xdd, 0xa8, 0x7f, 0x66, 0xb2, 0xac, 0xfa, 0x67, 0xf3, 0x70, 0x61, 0xda, 0xa1, 0xba, 0x47, 0x17, 0x66, 0xcb, 0xe5, 0x2e, 0xfa, 0xc8, 0xb5, 0x5a, 0xd4, 0x6a, 0x1e, 0xcd, 0xb0, 0x7e, 0x0b, 0xc6, 0x82, 0x06, 0xd4, 0x1a, 0x76, 0x87, 0xca, 0x0f, 0xab, 0x1a, 0x3e, 0xa6, 0xee, 0x32, 0x94, 0x16, 0x23, 0x25, 0xf7, 0xe0, 0x6c, 0x00, 0x29, 0xb7, 0x5a, 0xf6, 0x86, 0x46, 0xbb, 0x2e, 0x77, 0x8c, 0x1d, 0xe4, 0x8e, 0xb1, 0x21, 0x07, 0x9d, 0xe1, 0xeb, 0x0e, - 0x23, 0xd0, 0xd2, 0x4a, 0xa9, 0x3f, 0x57, 0x80, 0x8b, 0x0f, 0xf4, 0x96, 0x69, 0x84, 0xa2, 0xd1, + 0x23, 0xd0, 0xd2, 0x4a, 0xa9, 0x3f, 0x5f, 0x80, 0x8b, 0x0f, 0xf4, 0x96, 0x69, 0x84, 0xa2, 0xd1, 0xa8, 0xdb, 0xb1, 0x2d, 0x97, 0x1e, 0xa3, 0x51, 0x1a, 0x19, 0x0a, 0xc5, 0x43, 0x19, 0x0a, 0xc9, - 0x2e, 0xea, 0x3f, 0x70, 0x17, 0x95, 0xf6, 0xd5, 0x45, 0xff, 0x5b, 0x0e, 0xc6, 0x7d, 0xc7, 0x7f, + 0x2e, 0xea, 0x3f, 0x70, 0x17, 0x95, 0xf6, 0xd5, 0x45, 0xff, 0x6b, 0x0e, 0xc6, 0x7d, 0xc7, 0x7f, 0xf9, 0x11, 0xb7, 0xe4, 0x95, 0x8e, 0x47, 0x88, 0x31, 0x3f, 0x68, 0xc4, 0x93, 0x1a, 0x0c, 0xcc, 0x3c, 0xe9, 0x98, 0x0e, 0x75, 0x77, 0xe1, 0xc4, 0xfd, 0x8c, 0x38, 0x2e, 0x99, 0xa0, 0xbc, 0x48, 0xe2, 0xa4, 0x84, 0x83, 0xf1, 0x39, 0x1f, 0x7f, 0xfa, 0x30, 0xe5, 0xbf, 0x4c, 0xe7, 0xcf, 0xf9, @@ -15223,32 +15227,32 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0x57, 0x78, 0x19, 0x6c, 0x48, 0x1b, 0xce, 0x94, 0x5d, 0xb7, 0xdb, 0xa6, 0xe1, 0x0d, 0xd5, 0xf8, 0x8e, 0x9f, 0xf1, 0x29, 0xe1, 0xb5, 0xfc, 0xb4, 0x8e, 0x45, 0xf9, 0x05, 0x55, 0xdd, 0x33, 0xe5, 0x1a, 0xf1, 0x5b, 0xe2, 0xbc, 0xef, 0x16, 0x07, 0xc7, 0xc6, 0xcf, 0x68, 0x17, 0x93, 0x8d, 0x59, - 0x31, 0xbd, 0x16, 0x55, 0x7f, 0x27, 0x07, 0x10, 0x0a, 0x98, 0xbc, 0x14, 0x8d, 0x50, 0x94, 0x0b, + 0x31, 0xbd, 0x16, 0x55, 0x7f, 0x37, 0x07, 0x10, 0x0a, 0x98, 0xbc, 0x14, 0x8d, 0x50, 0x94, 0x0b, 0x2f, 0x3a, 0x44, 0xf4, 0x82, 0x48, 0x48, 0x22, 0x72, 0x19, 0x8a, 0x18, 0xe1, 0x22, 0x1f, 0x1e, 0xac, 0x3e, 0x32, 0x2d, 0x43, 0x43, 0x28, 0xc3, 0x4a, 0x4f, 0xd1, 0x11, 0x8b, 0x97, 0xfa, 0xdc, 0x2a, 0xac, 0xc0, 0x99, 0x5a, 0x77, 0xd5, 0xaf, 0x5b, 0x7a, 0x57, 0x87, 0x81, 0x36, 0xdc, 0xee, - 0x6a, 0xf0, 0x18, 0x35, 0x12, 0xc6, 0x24, 0x5a, 0x44, 0xfd, 0x95, 0x5c, 0x6c, 0x16, 0x3c, 0xc2, - 0x45, 0xef, 0x13, 0x49, 0x3f, 0x8d, 0xe4, 0xb4, 0xa4, 0xfe, 0xc5, 0x3c, 0x0c, 0x2f, 0xdb, 0x8e, + 0x6a, 0xf0, 0x18, 0x35, 0x12, 0xc6, 0x24, 0x5a, 0x44, 0xfd, 0xd5, 0x5c, 0x6c, 0x16, 0x3c, 0xc2, + 0x45, 0xef, 0x13, 0x49, 0x3f, 0x8d, 0xe4, 0xb4, 0xa4, 0xfe, 0xa5, 0x3c, 0x0c, 0x2f, 0xdb, 0x8e, 0x27, 0x42, 0x86, 0x1c, 0xef, 0x55, 0x48, 0xda, 0x2b, 0x15, 0xf7, 0xb0, 0x57, 0xba, 0x0c, 0x45, 0xc9, 0x45, 0x99, 0xdf, 0x8b, 0x18, 0x86, 0xa3, 0x21, 0x54, 0xfd, 0x91, 0x3c, 0xc0, 0x17, 0x5e, - 0x7e, 0xf9, 0x04, 0x0b, 0x48, 0xfd, 0xd9, 0x1c, 0x9c, 0x11, 0x17, 0x75, 0x52, 0xac, 0xaf, 0x01, + 0x7e, 0xf9, 0x04, 0x0b, 0x48, 0xfd, 0xb9, 0x1c, 0x9c, 0x11, 0x17, 0x75, 0x52, 0xac, 0xaf, 0x01, 0xff, 0x8a, 0x55, 0x1e, 0x97, 0x1c, 0xa4, 0xf9, 0x38, 0xb6, 0x04, 0xcc, 0x3c, 0x31, 0x3d, 0xbc, 0xab, 0x90, 0x82, 0x7d, 0x51, 0x01, 0x93, 0x97, 0x00, 0x9f, 0x8e, 0xbc, 0xe4, 0x5f, 0x41, 0x16, - 0xc2, 0x75, 0x8f, 0x15, 0x98, 0x49, 0xbd, 0x86, 0x54, 0x7f, 0xbd, 0x08, 0xc5, 0x99, 0x27, 0xb4, + 0xc2, 0x75, 0x8f, 0x15, 0x98, 0x49, 0xbd, 0x86, 0x54, 0x7f, 0xa3, 0x08, 0xc5, 0x99, 0x27, 0xb4, 0x71, 0xcc, 0xbb, 0x46, 0x3a, 0xd8, 0x2c, 0x1e, 0xf0, 0x60, 0x73, 0x3f, 0x3e, 0x15, 0xef, 0x86, 0xfd, 0x59, 0x8a, 0x56, 0x1f, 0xeb, 0xf9, 0x78, 0xf5, 0x7e, 0x4f, 0x1f, 0x3f, 0x97, 0x9c, 0xff, - 0xaa, 0x00, 0x85, 0xda, 0xf4, 0xf2, 0xa9, 0xde, 0x1c, 0xa9, 0xde, 0xf4, 0xbe, 0xb3, 0x56, 0x83, - 0x6b, 0xa8, 0xc1, 0xd0, 0x4b, 0x34, 0x76, 0xe3, 0xf4, 0x87, 0x05, 0x18, 0xab, 0xcd, 0xae, 0x2c, + 0xa2, 0x00, 0x85, 0xda, 0xf4, 0xf2, 0xa9, 0xde, 0x1c, 0xa9, 0xde, 0xf4, 0xbe, 0xb3, 0x56, 0x83, + 0x6b, 0xa8, 0xc1, 0xd0, 0x4b, 0x34, 0x76, 0xe3, 0xf4, 0x47, 0x05, 0x18, 0xab, 0xcd, 0xae, 0x2c, 0x4b, 0x27, 0xc1, 0xf7, 0xb8, 0x27, 0x1f, 0xfa, 0x94, 0xf1, 0x2e, 0xbd, 0x9c, 0xb0, 0x67, 0xee, 0x57, 0x2d, 0xef, 0xb5, 0xdb, 0x0f, 0xf4, 0x56, 0x97, 0xe2, 0xd1, 0x0b, 0xf7, 0xfb, 0x75, 0xcd, - 0x0f, 0xe9, 0xcf, 0xe1, 0xc3, 0x7f, 0x9f, 0x01, 0x79, 0x0b, 0x0a, 0xf7, 0x85, 0x47, 0x46, 0x16, + 0x0f, 0xe9, 0xcf, 0xe3, 0xc3, 0x7f, 0x9f, 0x01, 0x79, 0x0b, 0x0a, 0xf7, 0x85, 0x47, 0x46, 0x16, 0x9f, 0x57, 0x6e, 0x71, 0x3e, 0x6c, 0x12, 0x2c, 0x74, 0x4d, 0x03, 0x39, 0xb0, 0x52, 0xac, 0xf0, 0x1d, 0xb1, 0x00, 0xef, 0xaa, 0x70, 0xd3, 0x2f, 0x7c, 0xa7, 0x5a, 0x21, 0x35, 0x18, 0x5e, 0xa6, 0x4e, 0xdb, 0xc4, 0x8e, 0xf2, 0xe7, 0xec, 0xde, 0x4c, 0xd8, 0x4e, 0x65, 0xb8, 0x13, 0x16, 0x42, 0x66, 0x32, 0x17, 0xf2, 0x3e, 0x00, 0xb7, 0x51, 0x76, 0x19, 0x3f, 0xf2, 0x19, 0xb4, 0xfb, 0xb9, 0x69, 0x99, 0x62, 0xe3, 0x49, 0xcc, 0xc8, 0x23, 0x18, 0x5f, 0xb0, 0x0d, 0x73, 0xcd, 0xe4, 0xae, 0x97, 0x58, 0x41, 0x69, 0x67, 0x87, 0x27, 0x66, 0x4a, 0xb6, 0xa5, 0x72, 0x69, 0xd5, 0x24, 0x18, - 0xab, 0xff, 0x45, 0x3f, 0x14, 0x59, 0xb7, 0x9f, 0x8e, 0xdf, 0x83, 0x8c, 0xdf, 0x32, 0x8c, 0x3f, + 0xab, 0xff, 0x59, 0x3f, 0x14, 0x59, 0xb7, 0x9f, 0x8e, 0xdf, 0x83, 0x8c, 0xdf, 0x32, 0x8c, 0x3f, 0xb4, 0x9d, 0x47, 0xa6, 0xd5, 0x0c, 0xbc, 0xe2, 0xc5, 0xde, 0x14, 0x3d, 0x79, 0x36, 0x38, 0xae, 0x1e, 0x38, 0xd0, 0x6b, 0x09, 0xf2, 0x1d, 0x46, 0xf0, 0x1b, 0x00, 0xfc, 0xad, 0x3b, 0xd2, 0x0c, 0x86, 0xc1, 0x2a, 0xf8, 0x4b, 0x78, 0x74, 0xb4, 0x97, 0x83, 0x55, 0x84, 0xc4, 0x6c, 0x13, 0xce, @@ -15257,723 +15261,724 @@ var fileDescriptor_007ba1c3d6266d56 = []byte{ 0x49, 0x3c, 0xc8, 0x6b, 0xb1, 0x0b, 0x70, 0x12, 0xe1, 0x96, 0x79, 0xff, 0x1d, 0x3a, 0x50, 0x8d, 0xec, 0xe4, 0x40, 0xa5, 0x7e, 0x35, 0x0f, 0x43, 0xb5, 0xee, 0xaa, 0xbb, 0xe9, 0x7a, 0xb4, 0x7d, 0xcc, 0xd5, 0xd8, 0xdf, 0x5e, 0x15, 0x53, 0xb7, 0x57, 0xcf, 0xfb, 0x42, 0x91, 0xce, 0x1d, 0x03, - 0x93, 0xce, 0x17, 0xc7, 0xdf, 0xcc, 0xc3, 0x38, 0xbf, 0x38, 0xab, 0x98, 0x6e, 0xe3, 0x10, 0x9c, + 0x93, 0xce, 0x17, 0xc7, 0xdf, 0xca, 0xc3, 0x38, 0xbf, 0x38, 0xab, 0x98, 0x6e, 0xe3, 0x10, 0x9c, 0xf9, 0x8f, 0x5e, 0x2a, 0x07, 0xbb, 0x6c, 0xde, 0xc5, 0x13, 0x09, 0xf5, 0x2b, 0x79, 0x18, 0x2e, - 0x77, 0xbd, 0xf5, 0xb2, 0x87, 0xba, 0x75, 0x22, 0xf7, 0x27, 0x7f, 0x2f, 0x07, 0x67, 0x58, 0x43, + 0x77, 0xbd, 0xf5, 0xb2, 0x87, 0xba, 0x75, 0x22, 0xf7, 0x27, 0x7f, 0x3f, 0x07, 0x67, 0x58, 0x43, 0x56, 0xec, 0x47, 0xd4, 0x3a, 0x84, 0x83, 0x47, 0xf9, 0x00, 0x31, 0xbf, 0xcf, 0x03, 0x44, 0x5f, 0x96, 0x85, 0xbd, 0xc9, 0x12, 0x8f, 0xcb, 0x35, 0xbb, 0x45, 0x8f, 0xf7, 0x67, 0x1c, 0xe2, 0x71, 0xb9, 0x2f, 0x90, 0x43, 0xb8, 0x9e, 0xf9, 0xfe, 0x12, 0xc8, 0x21, 0x9c, 0x2d, 0x7d, 0x7f, 0x08, 0xe4, 0xdb, 0x39, 0x18, 0x9a, 0xb2, 0xbd, 0x63, 0x3e, 0xf0, 0xc5, 0x57, 0x1c, 0x6f, 0x35, 0xf7, - 0xbf, 0xe2, 0x78, 0xeb, 0xa6, 0xfa, 0x33, 0x79, 0x38, 0x27, 0x62, 0x83, 0x8b, 0xf3, 0x87, 0xd3, - 0xe9, 0x58, 0x0c, 0xb6, 0xa4, 0x68, 0x4e, 0xe7, 0x21, 0x21, 0x9a, 0x5f, 0x28, 0xc0, 0x39, 0x0c, + 0xbf, 0xe2, 0x78, 0xeb, 0xa6, 0xfa, 0xb3, 0x79, 0x38, 0x27, 0x62, 0x83, 0x8b, 0xf3, 0x87, 0xd3, + 0xe9, 0x58, 0x0c, 0xb6, 0xa4, 0x68, 0x4e, 0xe7, 0x21, 0x21, 0x9a, 0x5f, 0x2c, 0xc0, 0x39, 0x0c, 0x65, 0xca, 0xb6, 0x65, 0xdf, 0x07, 0xb6, 0x08, 0x69, 0x44, 0x2f, 0x41, 0x17, 0x52, 0x2e, 0x41, 0xff, 0xd5, 0xd6, 0xe4, 0x6b, 0x4d, 0xd3, 0x5b, 0xef, 0xae, 0xde, 0x68, 0xd8, 0xed, 0x9b, 0x4d, 0x47, 0x7f, 0x6c, 0xf2, 0xeb, 0x3f, 0xbd, 0x75, 0x33, 0x48, 0xb3, 0xa1, 0x77, 0x4c, 0x91, 0x80, 0xa3, 0x86, 0x7b, 0x1d, 0xc6, 0xd5, 0xbf, 0x3e, 0x75, 0x01, 0xee, 0xda, 0xa6, 0x25, 0x7c, 0x0a, 0xb9, 0xa1, 0x5b, 0x63, 0xfb, 0xc3, 0x0f, 0x6c, 0xd3, 0xaa, 0xc7, 0x1d, 0x0b, 0xf7, 0x5a, 0x5f, - 0xc8, 0x5a, 0x93, 0xaa, 0x51, 0xff, 0xdb, 0x1c, 0x3c, 0x15, 0xd5, 0xe2, 0xef, 0x07, 0xdb, 0xf1, - 0xcf, 0xe6, 0xe1, 0xfc, 0x1d, 0x14, 0x4e, 0xe0, 0xc8, 0x71, 0x3a, 0x6f, 0x89, 0xc1, 0x99, 0x22, - 0x9b, 0x53, 0x8b, 0x32, 0x5b, 0x36, 0xa7, 0x93, 0xba, 0x90, 0xcd, 0x3f, 0xc8, 0xc1, 0xd9, 0xa5, - 0x6a, 0x65, 0xfa, 0xfb, 0x64, 0x44, 0x25, 0xbf, 0xe7, 0x98, 0x1b, 0x9c, 0x89, 0xef, 0x39, 0xe6, - 0xa6, 0xe7, 0x37, 0xf3, 0x70, 0xb6, 0x56, 0x5e, 0x98, 0xff, 0x7e, 0x99, 0xc1, 0xa7, 0x65, 0xaf, - 0x43, 0xff, 0x10, 0x4c, 0xd8, 0x02, 0xf2, 0x67, 0x3e, 0xb8, 0x95, 0xed, 0x8d, 0x98, 0x14, 0xca, - 0x31, 0x9f, 0xba, 0x0f, 0x45, 0x28, 0x4c, 0xf3, 0x23, 0xd4, 0xc7, 0x5c, 0xf3, 0xff, 0xcb, 0x12, - 0x0c, 0xdf, 0xeb, 0xae, 0x52, 0xe1, 0x9c, 0x72, 0xa2, 0x4f, 0x7e, 0x6f, 0xc1, 0xb0, 0x10, 0x03, - 0xde, 0x9a, 0x48, 0xc1, 0xf3, 0x44, 0x30, 0x14, 0x1e, 0x9f, 0x48, 0x26, 0x22, 0x97, 0xa1, 0xf8, - 0x80, 0x3a, 0xab, 0xf2, 0xbb, 0xd2, 0xc7, 0xd4, 0x59, 0xd5, 0x10, 0x4a, 0xe6, 0x43, 0x97, 0xf9, - 0xf2, 0x72, 0x15, 0x13, 0xa9, 0x88, 0x0b, 0x1b, 0xcc, 0x0c, 0x13, 0xf8, 0xbd, 0xe9, 0x1d, 0x93, - 0xa7, 0x60, 0x91, 0xdf, 0xb4, 0xc7, 0x4b, 0x92, 0x45, 0x98, 0x90, 0x1d, 0x9f, 0x78, 0x16, 0x91, - 0xc1, 0x14, 0x76, 0x69, 0xf9, 0x43, 0x92, 0x45, 0xc9, 0xbb, 0x30, 0xe2, 0x03, 0xd1, 0x85, 0x6b, - 0x28, 0x0c, 0x5d, 0x1f, 0xb0, 0x8a, 0xa5, 0x28, 0x8a, 0x14, 0x90, 0x19, 0xe0, 0x35, 0x04, 0xa4, - 0x30, 0x88, 0xb9, 0xc4, 0x45, 0x0a, 0x90, 0x57, 0x91, 0x01, 0x3e, 0xf3, 0x40, 0x67, 0x95, 0x61, - 0x7c, 0x74, 0x89, 0x2e, 0xf9, 0x8e, 0x80, 0xf3, 0xa7, 0xb5, 0x11, 0x32, 0xb2, 0x04, 0x10, 0x3a, - 0x15, 0x88, 0x00, 0x06, 0x7b, 0x76, 0x77, 0x90, 0x58, 0xc8, 0xd7, 0x81, 0xa3, 0xfb, 0xb9, 0x0e, - 0x54, 0xff, 0x51, 0x1e, 0x86, 0xcb, 0x9d, 0x4e, 0x30, 0x14, 0x5e, 0x82, 0x52, 0xb9, 0xd3, 0xb9, - 0xaf, 0x55, 0xe5, 0x50, 0xe6, 0x7a, 0xa7, 0x53, 0xef, 0x3a, 0xa6, 0xec, 0x13, 0xca, 0x89, 0xc8, - 0x34, 0x8c, 0x96, 0x3b, 0x9d, 0xe5, 0xee, 0x6a, 0xcb, 0x6c, 0x48, 0x99, 0x91, 0x78, 0xee, 0xb8, - 0x4e, 0xa7, 0xde, 0x41, 0x4c, 0x3c, 0x3d, 0x56, 0xb4, 0x0c, 0xf9, 0x32, 0x86, 0xfd, 0x11, 0x89, - 0x79, 0x78, 0xea, 0x0f, 0x35, 0x08, 0x62, 0x1e, 0xb6, 0xed, 0x46, 0x40, 0xc4, 0x83, 0xbd, 0x5f, - 0xf6, 0x43, 0xe6, 0xb3, 0x8a, 0x12, 0x09, 0x78, 0x42, 0x96, 0xe4, 0x33, 0x30, 0x50, 0xee, 0x74, - 0xa4, 0xfb, 0x26, 0x74, 0x2a, 0x62, 0xa5, 0xe2, 0xb9, 0xcf, 0x04, 0xd9, 0xa5, 0xb7, 0x61, 0x2c, - 0x5a, 0xd9, 0x9e, 0x82, 0xc5, 0x7f, 0x2f, 0x87, 0x1f, 0x74, 0xcc, 0x7d, 0x9a, 0x5f, 0x81, 0x42, - 0xb9, 0xd3, 0x11, 0xf3, 0xd1, 0xd9, 0x94, 0xfe, 0x88, 0x3f, 0x81, 0x2e, 0x77, 0x3a, 0xfe, 0xa7, - 0x1f, 0xf3, 0xc7, 0x11, 0xfb, 0xfa, 0xf4, 0x6f, 0xf3, 0x4f, 0x3f, 0xde, 0x0f, 0x17, 0xd4, 0x5f, - 0x2f, 0xc0, 0x99, 0x72, 0xa7, 0x73, 0x1a, 0x64, 0xfe, 0xb0, 0x1e, 0x5a, 0xbf, 0x0c, 0x20, 0x4d, - 0x8f, 0x03, 0xc1, 0xd3, 0xad, 0x61, 0x69, 0x6a, 0x54, 0x72, 0x9a, 0x44, 0xe4, 0xab, 0xdf, 0xe0, - 0x9e, 0xd4, 0xef, 0x2b, 0x05, 0x9c, 0x8a, 0x8f, 0x7b, 0xd0, 0xa8, 0x8f, 0x4b, 0xb7, 0x89, 0x3e, - 0x28, 0xed, 0xa9, 0x0f, 0xfe, 0x4e, 0x64, 0xf0, 0x60, 0xd0, 0xf2, 0xd3, 0x5e, 0xe8, 0x3f, 0x90, - 0x59, 0x3c, 0x26, 0x0b, 0x53, 0x44, 0xb2, 0xf1, 0x13, 0x29, 0x89, 0xb8, 0x4a, 0x0d, 0x86, 0xaa, - 0x9b, 0x86, 0x16, 0xa3, 0xf5, 0xfb, 0x70, 0x60, 0x4f, 0x7d, 0xb8, 0x95, 0xc7, 0xb7, 0xd3, 0x41, - 0x5c, 0xa6, 0x83, 0xef, 0x2e, 0x6e, 0x02, 0x70, 0xcf, 0x83, 0xc0, 0xad, 0x79, 0x94, 0x87, 0x60, - 0xe1, 0xf9, 0x95, 0x44, 0x08, 0x96, 0x90, 0x24, 0xf0, 0x90, 0x2a, 0xa4, 0x7a, 0x48, 0x5d, 0x87, - 0x41, 0x4d, 0xdf, 0x78, 0xaf, 0x4b, 0x9d, 0x4d, 0x61, 0xce, 0xf0, 0xb0, 0x87, 0xfa, 0x46, 0xfd, - 0x87, 0x19, 0x50, 0x0b, 0xd0, 0x44, 0x0d, 0x1e, 0xdf, 0x4b, 0x1e, 0x21, 0xfc, 0x8c, 0x3c, 0x78, - 0x72, 0xbf, 0x1f, 0x45, 0x27, 0x6f, 0x42, 0xa1, 0xfc, 0xb0, 0x26, 0x24, 0x1b, 0x74, 0x6d, 0xf9, - 0x61, 0x4d, 0xc8, 0x2b, 0xb3, 0xec, 0xc3, 0x9a, 0xfa, 0x95, 0x3c, 0x90, 0x24, 0x25, 0x79, 0x0d, - 0x86, 0x10, 0xda, 0x64, 0x3a, 0x23, 0x27, 0xe6, 0xdc, 0x70, 0xeb, 0x0e, 0x42, 0x23, 0xc6, 0x9d, - 0x4f, 0x4a, 0xde, 0xc0, 0xd4, 0xc7, 0x22, 0x35, 0x5c, 0x24, 0x31, 0xe7, 0x86, 0xeb, 0x27, 0x0b, - 0x8e, 0x65, 0x3e, 0x16, 0xc4, 0x68, 0x17, 0x3e, 0xac, 0xcd, 0xd9, 0xae, 0x27, 0x44, 0xcd, 0xed, - 0xc2, 0x0d, 0x17, 0x33, 0xc2, 0x46, 0xec, 0x42, 0x4e, 0x86, 0x59, 0xad, 0x1e, 0xd6, 0xf8, 0x33, - 0x15, 0x43, 0xb3, 0x5b, 0xbe, 0x41, 0xc9, 0xb3, 0x5a, 0x6d, 0xb8, 0x75, 0xfe, 0xc4, 0xc5, 0xc0, - 0x9c, 0xcb, 0x91, 0xac, 0x56, 0x91, 0x52, 0xea, 0xd7, 0x06, 0x61, 0xbc, 0xa2, 0x7b, 0xfa, 0xaa, - 0xee, 0x52, 0x69, 0x37, 0x7d, 0xc6, 0x87, 0xf9, 0x9f, 0x23, 0xc9, 0xc1, 0x58, 0x4d, 0xf9, 0x9a, - 0x78, 0x01, 0xf2, 0x56, 0xc8, 0x37, 0xc8, 0x39, 0x2a, 0x27, 0x31, 0x5b, 0xad, 0x77, 0x04, 0x58, - 0x4b, 0x10, 0x92, 0x17, 0x61, 0xd8, 0x87, 0xb1, 0x0d, 0x40, 0x21, 0xd4, 0x19, 0x63, 0x95, 0xd9, - 0xff, 0x9a, 0x8c, 0x26, 0x6f, 0xc0, 0x88, 0xff, 0x53, 0x32, 0xad, 0x79, 0x46, 0xb6, 0xd5, 0xc4, - 0xee, 0x49, 0x26, 0x95, 0x8b, 0xe2, 0xfc, 0xd6, 0x1f, 0x29, 0x1a, 0x4b, 0x7a, 0x16, 0x21, 0x25, - 0x3f, 0x0c, 0x63, 0xfe, 0x6f, 0xb1, 0x61, 0xe0, 0xf9, 0xe1, 0x5e, 0x0c, 0x52, 0x3a, 0xc7, 0xc4, - 0x7a, 0x23, 0x4a, 0xce, 0xb7, 0x0e, 0x4f, 0xfb, 0x79, 0xbc, 0x8c, 0xd5, 0xe4, 0xce, 0x21, 0x56, - 0x01, 0xa9, 0xc2, 0x84, 0x0f, 0x09, 0x35, 0x74, 0x20, 0xdc, 0x31, 0x1a, 0xab, 0xf5, 0x54, 0x25, - 0x4d, 0x96, 0x22, 0x2d, 0xb8, 0x1c, 0x01, 0x1a, 0xee, 0xba, 0xb9, 0xe6, 0x89, 0xed, 0x9e, 0x88, - 0x41, 0x2c, 0x12, 0x37, 0x06, 0x5c, 0x39, 0x8d, 0x9f, 0x81, 0x35, 0x9a, 0x1d, 0xaa, 0x27, 0x37, - 0x52, 0x83, 0x73, 0x3e, 0xfe, 0xce, 0xf4, 0xf2, 0xb2, 0x63, 0x7f, 0x40, 0x1b, 0x5e, 0xb5, 0x22, - 0xb6, 0xcb, 0x18, 0x9b, 0xce, 0x58, 0xad, 0x37, 0x1b, 0x1d, 0xa6, 0x14, 0x0c, 0x17, 0x65, 0x9e, - 0x5a, 0x98, 0x3c, 0x80, 0xf3, 0x12, 0x5c, 0x4a, 0x0f, 0x0d, 0xe1, 0x7e, 0x5e, 0x70, 0x4d, 0xcf, - 0x10, 0x9d, 0x5e, 0x9c, 0xbc, 0x0d, 0xa3, 0x3e, 0x82, 0xdf, 0x22, 0x0e, 0xe3, 0x2d, 0x22, 0x0e, - 0x49, 0x63, 0xb5, 0x1e, 0x7f, 0x4d, 0x19, 0x25, 0x96, 0x35, 0x0a, 0x33, 0xea, 0x8f, 0x44, 0x34, - 0xca, 0xdb, 0xec, 0xa4, 0x2a, 0x23, 0x66, 0xd9, 0x7f, 0x37, 0xd4, 0xa8, 0x25, 0xc7, 0x6c, 0x9a, - 0x7c, 0x27, 0xed, 0x3f, 0xa0, 0x5c, 0xad, 0xdb, 0x08, 0x4c, 0xd3, 0x0f, 0x4e, 0x7e, 0xa9, 0x0c, - 0x67, 0x53, 0x74, 0x6c, 0x4f, 0x3b, 0xc6, 0xaf, 0xe6, 0xc3, 0x46, 0x1c, 0xf3, 0x6d, 0xe3, 0x14, - 0x0c, 0xfa, 0x5f, 0x22, 0x8c, 0x07, 0x25, 0x6b, 0x68, 0xc6, 0x79, 0xf8, 0xf8, 0x88, 0x38, 0x8e, - 0xf9, 0x56, 0xf2, 0x30, 0xc4, 0xf1, 0x9d, 0x5c, 0x28, 0x8e, 0x63, 0xbe, 0xbd, 0xfc, 0x07, 0x85, + 0xc8, 0x5a, 0x93, 0xaa, 0x51, 0xff, 0x9b, 0x1c, 0x3c, 0x15, 0xd5, 0xe2, 0xef, 0x07, 0xdb, 0xf1, + 0xcf, 0xe5, 0xe1, 0xfc, 0x1d, 0x14, 0x4e, 0xe0, 0xc8, 0x71, 0x3a, 0x6f, 0x89, 0xc1, 0x99, 0x22, + 0x9b, 0x53, 0x8b, 0x32, 0x5b, 0x36, 0xa7, 0x93, 0xba, 0x90, 0xcd, 0x7f, 0x9d, 0x83, 0xb3, 0x4b, + 0xd5, 0xca, 0xf4, 0xf7, 0xc9, 0x88, 0x4a, 0x7e, 0xcf, 0x31, 0x37, 0x38, 0x13, 0xdf, 0x73, 0xcc, + 0x4d, 0xcf, 0x6f, 0xe6, 0xe1, 0x6c, 0xad, 0xbc, 0x30, 0xff, 0xfd, 0x32, 0x83, 0x4f, 0xcb, 0x5e, + 0x87, 0xfe, 0x21, 0x98, 0xb0, 0x05, 0xe4, 0xcf, 0x7c, 0x70, 0x2b, 0xdb, 0x1b, 0x31, 0x29, 0x94, + 0x63, 0x3e, 0x75, 0x1f, 0x8a, 0x50, 0x98, 0xe6, 0x47, 0xa8, 0x8f, 0xb9, 0xe6, 0xff, 0xe7, 0x25, + 0x18, 0xbe, 0xd7, 0x5d, 0xa5, 0xc2, 0x39, 0xe5, 0x44, 0x9f, 0xfc, 0xde, 0x82, 0x61, 0x21, 0x06, + 0xbc, 0x35, 0x91, 0x82, 0xe7, 0x89, 0x60, 0x28, 0x3c, 0x3e, 0x91, 0x4c, 0x44, 0x2e, 0x43, 0xf1, + 0x01, 0x75, 0x56, 0xe5, 0x77, 0xa5, 0x8f, 0xa9, 0xb3, 0xaa, 0x21, 0x94, 0xcc, 0x87, 0x2e, 0xf3, + 0xe5, 0xe5, 0x2a, 0x26, 0x52, 0x11, 0x17, 0x36, 0x98, 0x19, 0x26, 0xf0, 0x7b, 0xd3, 0x3b, 0x26, + 0x4f, 0xc1, 0x22, 0xbf, 0x69, 0x8f, 0x97, 0x24, 0x8b, 0x30, 0x21, 0x3b, 0x3e, 0xf1, 0x2c, 0x22, + 0x83, 0x29, 0xec, 0xd2, 0xf2, 0x87, 0x24, 0x8b, 0x92, 0x77, 0x61, 0xc4, 0x07, 0xa2, 0x0b, 0xd7, + 0x50, 0x18, 0xba, 0x3e, 0x60, 0x15, 0x4b, 0x51, 0x14, 0x29, 0x20, 0x33, 0xc0, 0x6b, 0x08, 0x48, + 0x61, 0x10, 0x73, 0x89, 0x8b, 0x14, 0x20, 0xaf, 0x22, 0x03, 0x7c, 0xe6, 0x81, 0xce, 0x2a, 0xc3, + 0xf8, 0xe8, 0x12, 0x5d, 0xf2, 0x1d, 0x01, 0xe7, 0x4f, 0x6b, 0x23, 0x64, 0x64, 0x09, 0x20, 0x74, + 0x2a, 0x10, 0x01, 0x0c, 0xf6, 0xec, 0xee, 0x20, 0xb1, 0x90, 0xaf, 0x03, 0x47, 0xf7, 0x73, 0x1d, + 0xa8, 0xfe, 0xa3, 0x3c, 0x0c, 0x97, 0x3b, 0x9d, 0x60, 0x28, 0xbc, 0x04, 0xa5, 0x72, 0xa7, 0x73, + 0x5f, 0xab, 0xca, 0xa1, 0xcc, 0xf5, 0x4e, 0xa7, 0xde, 0x75, 0x4c, 0xd9, 0x27, 0x94, 0x13, 0x91, + 0x69, 0x18, 0x2d, 0x77, 0x3a, 0xcb, 0xdd, 0xd5, 0x96, 0xd9, 0x90, 0x32, 0x23, 0xf1, 0xdc, 0x71, + 0x9d, 0x4e, 0xbd, 0x83, 0x98, 0x78, 0x7a, 0xac, 0x68, 0x19, 0xf2, 0x65, 0x0c, 0xfb, 0x23, 0x12, + 0xf3, 0xf0, 0xd4, 0x1f, 0x6a, 0x10, 0xc4, 0x3c, 0x6c, 0xdb, 0x8d, 0x80, 0x88, 0x07, 0x7b, 0xbf, + 0xec, 0x87, 0xcc, 0x67, 0x15, 0x25, 0x12, 0xf0, 0x84, 0x2c, 0xc9, 0x67, 0x60, 0xa0, 0xdc, 0xe9, + 0x48, 0xf7, 0x4d, 0xe8, 0x54, 0xc4, 0x4a, 0xc5, 0x73, 0x9f, 0x09, 0xb2, 0x4b, 0x6f, 0xc3, 0x58, + 0xb4, 0xb2, 0x3d, 0x05, 0x8b, 0xff, 0x5e, 0x0e, 0x3f, 0xe8, 0x98, 0xfb, 0x34, 0xbf, 0x02, 0x85, + 0x72, 0xa7, 0x23, 0xe6, 0xa3, 0xb3, 0x29, 0xfd, 0x11, 0x7f, 0x02, 0x5d, 0xee, 0x74, 0xfc, 0x4f, + 0x3f, 0xe6, 0x8f, 0x23, 0xf6, 0xf5, 0xe9, 0xdf, 0xe6, 0x9f, 0x7e, 0xbc, 0x1f, 0x2e, 0xa8, 0xbf, + 0x51, 0x80, 0x33, 0xe5, 0x4e, 0xe7, 0x34, 0xc8, 0xfc, 0x61, 0x3d, 0xb4, 0x7e, 0x19, 0x40, 0x9a, + 0x1e, 0x07, 0x82, 0xa7, 0x5b, 0xc3, 0xd2, 0xd4, 0xa8, 0xe4, 0x34, 0x89, 0xc8, 0x57, 0xbf, 0xc1, + 0x3d, 0xa9, 0xdf, 0x57, 0x0a, 0x38, 0x15, 0x1f, 0xf7, 0xa0, 0x51, 0x1f, 0x97, 0x6e, 0x13, 0x7d, + 0x50, 0xda, 0x53, 0x1f, 0xfc, 0xdd, 0xc8, 0xe0, 0xc1, 0xa0, 0xe5, 0xa7, 0xbd, 0xd0, 0x7f, 0x20, + 0xb3, 0x78, 0x4c, 0x16, 0xa6, 0x88, 0x64, 0xe3, 0x27, 0x52, 0x12, 0x71, 0x95, 0x1a, 0x0c, 0x55, + 0x37, 0x0d, 0x2d, 0x46, 0xeb, 0xf7, 0xe1, 0xc0, 0x9e, 0xfa, 0x70, 0x2b, 0x8f, 0x6f, 0xa7, 0x83, + 0xb8, 0x4c, 0x07, 0xdf, 0x5d, 0xdc, 0x04, 0xe0, 0x9e, 0x07, 0x81, 0x5b, 0xf3, 0x28, 0x0f, 0xc1, + 0xc2, 0xf3, 0x2b, 0x89, 0x10, 0x2c, 0x21, 0x49, 0xe0, 0x21, 0x55, 0x48, 0xf5, 0x90, 0xba, 0x0e, + 0x83, 0x9a, 0xbe, 0xf1, 0x5e, 0x97, 0x3a, 0x9b, 0xc2, 0x9c, 0xe1, 0x61, 0x0f, 0xf5, 0x8d, 0xfa, + 0x0f, 0x33, 0xa0, 0x16, 0xa0, 0x89, 0x1a, 0x3c, 0xbe, 0x97, 0x3c, 0x42, 0xf8, 0x19, 0x79, 0xf0, + 0xe4, 0x7e, 0x3f, 0x8a, 0x4e, 0xde, 0x84, 0x42, 0xf9, 0x61, 0x4d, 0x48, 0x36, 0xe8, 0xda, 0xf2, + 0xc3, 0x9a, 0x90, 0x57, 0x66, 0xd9, 0x87, 0x35, 0xf5, 0x2b, 0x79, 0x20, 0x49, 0x4a, 0xf2, 0x1a, + 0x0c, 0x21, 0xb4, 0xc9, 0x74, 0x46, 0x4e, 0xcc, 0xb9, 0xe1, 0xd6, 0x1d, 0x84, 0x46, 0x8c, 0x3b, + 0x9f, 0x94, 0xbc, 0x81, 0xa9, 0x8f, 0x45, 0x6a, 0xb8, 0x48, 0x62, 0xce, 0x0d, 0xd7, 0x4f, 0x16, + 0x1c, 0xcb, 0x7c, 0x2c, 0x88, 0xd1, 0x2e, 0x7c, 0x58, 0x9b, 0xb3, 0x5d, 0x4f, 0x88, 0x9a, 0xdb, + 0x85, 0x1b, 0x2e, 0x66, 0x84, 0x8d, 0xd8, 0x85, 0x9c, 0x0c, 0xb3, 0x5a, 0x3d, 0xac, 0xf1, 0x67, + 0x2a, 0x86, 0x66, 0xb7, 0x7c, 0x83, 0x92, 0x67, 0xb5, 0xda, 0x70, 0xeb, 0xfc, 0x89, 0x8b, 0x81, + 0x39, 0x97, 0x23, 0x59, 0xad, 0x22, 0xa5, 0xd4, 0xaf, 0x0d, 0xc2, 0x78, 0x45, 0xf7, 0xf4, 0x55, + 0xdd, 0xa5, 0xd2, 0x6e, 0xfa, 0x8c, 0x0f, 0xf3, 0x3f, 0x47, 0x92, 0x83, 0xb1, 0x9a, 0xf2, 0x35, + 0xf1, 0x02, 0xe4, 0xad, 0x90, 0x6f, 0x90, 0x73, 0x54, 0x4e, 0x62, 0xb6, 0x5a, 0xef, 0x08, 0xb0, + 0x96, 0x20, 0x24, 0x2f, 0xc2, 0xb0, 0x0f, 0x63, 0x1b, 0x80, 0x42, 0xa8, 0x33, 0xc6, 0x2a, 0xb3, + 0xff, 0x35, 0x19, 0x4d, 0xde, 0x80, 0x11, 0xff, 0xa7, 0x64, 0x5a, 0xf3, 0x8c, 0x6c, 0xab, 0x89, + 0xdd, 0x93, 0x4c, 0x2a, 0x17, 0xc5, 0xf9, 0xad, 0x3f, 0x52, 0x34, 0x96, 0xf4, 0x2c, 0x42, 0x4a, + 0x7e, 0x18, 0xc6, 0xfc, 0xdf, 0x62, 0xc3, 0xc0, 0xf3, 0xc3, 0xbd, 0x18, 0xa4, 0x74, 0x8e, 0x89, + 0xf5, 0x46, 0x94, 0x9c, 0x6f, 0x1d, 0x9e, 0xf6, 0xf3, 0x78, 0x19, 0xab, 0xc9, 0x9d, 0x43, 0xac, + 0x02, 0x52, 0x85, 0x09, 0x1f, 0x12, 0x6a, 0xe8, 0x40, 0xb8, 0x63, 0x34, 0x56, 0xeb, 0xa9, 0x4a, + 0x9a, 0x2c, 0x45, 0x5a, 0x70, 0x39, 0x02, 0x34, 0xdc, 0x75, 0x73, 0xcd, 0x13, 0xdb, 0x3d, 0x11, + 0x83, 0x58, 0x24, 0x6e, 0x0c, 0xb8, 0x72, 0x1a, 0x3f, 0x03, 0x6b, 0x34, 0x3b, 0x54, 0x4f, 0x6e, + 0xa4, 0x06, 0xe7, 0x7c, 0xfc, 0x9d, 0xe9, 0xe5, 0x65, 0xc7, 0xfe, 0x80, 0x36, 0xbc, 0x6a, 0x45, + 0x6c, 0x97, 0x31, 0x36, 0x9d, 0xb1, 0x5a, 0x6f, 0x36, 0x3a, 0x4c, 0x29, 0x18, 0x2e, 0xca, 0x3c, + 0xb5, 0x30, 0x79, 0x00, 0xe7, 0x25, 0xb8, 0x94, 0x1e, 0x1a, 0xc2, 0xfd, 0xbc, 0xe0, 0x9a, 0x9e, + 0x21, 0x3a, 0xbd, 0x38, 0x79, 0x1b, 0x46, 0x7d, 0x04, 0xbf, 0x45, 0x1c, 0xc6, 0x5b, 0x44, 0x1c, + 0x92, 0xc6, 0x6a, 0x3d, 0xfe, 0x9a, 0x32, 0x4a, 0x2c, 0x6b, 0x14, 0x66, 0xd4, 0x1f, 0x89, 0x68, + 0x94, 0xb7, 0xd9, 0x49, 0x55, 0x46, 0xcc, 0xb2, 0xff, 0x6e, 0xa8, 0x51, 0x4b, 0x8e, 0xd9, 0x34, + 0xf9, 0x4e, 0xda, 0x7f, 0x40, 0xb9, 0x5a, 0xb7, 0x11, 0x98, 0xa6, 0x1f, 0x9c, 0xfc, 0x52, 0x19, + 0xce, 0xa6, 0xe8, 0xd8, 0x9e, 0x76, 0x8c, 0x5f, 0xcd, 0x87, 0x8d, 0x38, 0xe6, 0xdb, 0xc6, 0x29, + 0x18, 0xf4, 0xbf, 0x44, 0x18, 0x0f, 0x4a, 0xd6, 0xd0, 0x8c, 0xf3, 0xf0, 0xf1, 0x11, 0x71, 0x1c, + 0xf3, 0xad, 0xe4, 0x61, 0x88, 0xe3, 0x3b, 0xb9, 0x50, 0x1c, 0xc7, 0x7c, 0x7b, 0xf9, 0x93, 0xc5, 0x70, 0x4e, 0x3a, 0xdd, 0x63, 0x1e, 0x96, 0x99, 0x1c, 0xfa, 0xc1, 0x96, 0xf6, 0xf0, 0x90, 0x51, - 0x56, 0xcd, 0x81, 0x7d, 0xaa, 0xe6, 0x3f, 0x49, 0xf6, 0x27, 0x37, 0x3d, 0x8f, 0x65, 0x7f, 0x1e, - 0xc2, 0x60, 0x25, 0xb7, 0xc2, 0x75, 0x8c, 0xdb, 0xe8, 0xfd, 0x52, 0x88, 0xbf, 0x55, 0x61, 0xa2, - 0x47, 0x49, 0xc8, 0x0f, 0xc0, 0xc5, 0x08, 0x60, 0x59, 0x77, 0xf4, 0x36, 0xf5, 0xc2, 0x8c, 0x83, - 0x18, 0xb4, 0xc9, 0x2f, 0x5d, 0xef, 0x04, 0x68, 0x39, 0x8b, 0x61, 0x06, 0x07, 0x49, 0x39, 0x06, - 0xf6, 0xe0, 0x24, 0xfd, 0xd3, 0x85, 0xd0, 0x54, 0x89, 0x06, 0x5f, 0xd5, 0xa8, 0xdb, 0x6d, 0x79, - 0x27, 0xb7, 0x83, 0xf7, 0x97, 0xda, 0x62, 0x0e, 0xce, 0x94, 0xd7, 0xd6, 0x68, 0xc3, 0xf3, 0x63, - 0x4a, 0xbb, 0x22, 0xdc, 0x1e, 0xdf, 0x3a, 0x08, 0x94, 0x88, 0x11, 0x1c, 0xc9, 0x8d, 0x1f, 0x2b, - 0xa6, 0xfe, 0xd3, 0x22, 0x28, 0x81, 0xe9, 0x1e, 0x3c, 0xd4, 0x3a, 0xc2, 0x65, 0xf2, 0x63, 0xd1, - 0x2b, 0x26, 0x4c, 0x84, 0xc2, 0xa8, 0x75, 0xdb, 0x6d, 0x1d, 0x87, 0x1e, 0xdb, 0x1a, 0x4c, 0xc6, - 0x99, 0x85, 0x84, 0x7c, 0x37, 0x70, 0x49, 0xec, 0x06, 0x48, 0xf8, 0x10, 0xae, 0xee, 0x72, 0x16, - 0x5a, 0x92, 0x2b, 0xf9, 0x7a, 0x0e, 0xce, 0xf9, 0x9d, 0xb2, 0xb4, 0xca, 0xcc, 0xe2, 0x69, 0xbb, - 0x6b, 0x79, 0xfe, 0x4e, 0xe4, 0xcd, 0xec, 0xea, 0x78, 0x27, 0xdd, 0x48, 0x2b, 0xcc, 0x5b, 0x12, - 0x04, 0x96, 0x08, 0x14, 0xc2, 0x46, 0x9a, 0x7a, 0x03, 0x89, 0xb4, 0xd4, 0x7a, 0x2f, 0xdd, 0x81, - 0xa7, 0x32, 0x59, 0xee, 0x64, 0x86, 0xf6, 0xcb, 0x66, 0xe8, 0x7f, 0x9f, 0x0b, 0x27, 0xa2, 0x98, - 0x90, 0xc8, 0x0d, 0x80, 0x10, 0x24, 0x36, 0xa6, 0x63, 0xdb, 0x5b, 0x93, 0x10, 0x0a, 0x4d, 0x93, - 0x28, 0xc8, 0x12, 0x94, 0x84, 0x58, 0x78, 0x76, 0xdf, 0x4f, 0xef, 0xd0, 0x0b, 0x37, 0x64, 0x39, - 0xe0, 0xa6, 0x53, 0x7c, 0xb3, 0x60, 0x73, 0xe9, 0x0d, 0x18, 0xde, 0xef, 0x77, 0x7d, 0xbd, 0x00, - 0x44, 0xde, 0x45, 0x1e, 0xa1, 0x89, 0x7d, 0x8c, 0xa7, 0xb0, 0x6b, 0x30, 0xc8, 0x3e, 0x01, 0xf3, - 0x5d, 0x48, 0xf1, 0x6d, 0xbb, 0x02, 0xa6, 0x05, 0xd8, 0x30, 0xb8, 0xd4, 0x40, 0x7a, 0x70, 0x29, - 0xf5, 0xa7, 0x0a, 0x70, 0x41, 0xee, 0x90, 0x0a, 0xc5, 0x90, 0xf9, 0xa7, 0x9d, 0xf2, 0x11, 0x76, - 0x8a, 0x0a, 0x25, 0xbe, 0x79, 0x10, 0xb9, 0x0b, 0xf8, 0xc1, 0x0e, 0x42, 0x34, 0x81, 0x51, 0xff, - 0x97, 0x3c, 0x8c, 0x2e, 0xdb, 0xae, 0xd7, 0x74, 0xa8, 0xbb, 0xac, 0x3b, 0xee, 0x09, 0xee, 0x8e, - 0xcf, 0xc2, 0x28, 0x86, 0x07, 0x6a, 0x53, 0x8b, 0x87, 0xd0, 0xe9, 0x97, 0x92, 0x8d, 0xf8, 0x08, - 0x91, 0x57, 0x2a, 0x42, 0xc8, 0xb4, 0x9f, 0x5b, 0x7e, 0x52, 0xd0, 0x26, 0x6e, 0xf6, 0x71, 0xb8, - 0xfa, 0x97, 0x0a, 0x30, 0xe2, 0x4b, 0x79, 0xca, 0x3c, 0xae, 0x37, 0x35, 0x47, 0x2b, 0xe4, 0x9b, - 0x00, 0xcb, 0xb6, 0xe3, 0xe9, 0xad, 0xc5, 0x50, 0xf3, 0xf1, 0x88, 0xb3, 0x83, 0x50, 0x5e, 0x46, - 0x22, 0xc1, 0xf5, 0x2b, 0x34, 0xab, 0xf9, 0xc4, 0xc4, 0xd7, 0xaf, 0x00, 0xaa, 0x49, 0x14, 0xea, - 0x6f, 0xe7, 0xe1, 0x8c, 0xdf, 0x49, 0x33, 0x4f, 0x68, 0xa3, 0x7b, 0x92, 0xe7, 0xa6, 0xa8, 0xb4, - 0xfb, 0x77, 0x94, 0xb6, 0xfa, 0x7f, 0x49, 0x13, 0xc9, 0x74, 0xcb, 0x3e, 0x9d, 0x48, 0xfe, 0x28, - 0x74, 0x5c, 0xfd, 0xd1, 0x02, 0x9c, 0xf3, 0xa5, 0x3e, 0xdb, 0xb5, 0xf0, 0x70, 0x60, 0x5a, 0x6f, - 0xb5, 0x4e, 0xf2, 0x6e, 0x7c, 0xd8, 0x17, 0xc4, 0x92, 0x88, 0xb7, 0x27, 0x72, 0xfc, 0xad, 0x09, - 0x70, 0xdd, 0x36, 0x0d, 0x4d, 0x26, 0x22, 0xef, 0xc2, 0x88, 0xff, 0xb3, 0xec, 0x34, 0xfd, 0x2d, - 0x38, 0x1e, 0xf5, 0x07, 0x85, 0x74, 0x27, 0x12, 0x56, 0x20, 0x52, 0x40, 0xfd, 0xca, 0x00, 0x5c, - 0x7a, 0x68, 0x5a, 0x86, 0xbd, 0xe1, 0xfa, 0x29, 0x22, 0x8f, 0xfd, 0x51, 0xd7, 0x51, 0xa7, 0x86, - 0x7c, 0x0f, 0xce, 0xc7, 0x45, 0xea, 0x04, 0x81, 0xbb, 0x45, 0xef, 0x6c, 0x70, 0x82, 0xba, 0x9f, - 0x2c, 0x52, 0xdc, 0x97, 0x69, 0xe9, 0x25, 0xe3, 0xd9, 0x26, 0x07, 0x76, 0x93, 0x6d, 0xf2, 0x05, - 0x28, 0x55, 0xec, 0xb6, 0x6e, 0xfa, 0x01, 0x66, 0x70, 0x14, 0x07, 0xf5, 0x22, 0x46, 0x13, 0x14, - 0x8c, 0xbf, 0xa8, 0x18, 0xbb, 0x6c, 0x28, 0xe4, 0xef, 0x17, 0x60, 0x56, 0x9a, 0x26, 0x13, 0x11, - 0x1b, 0x46, 0x45, 0x75, 0xe2, 0x76, 0x0b, 0x70, 0xf3, 0xf4, 0xaa, 0x2f, 0xa3, 0x6c, 0xb5, 0xba, - 0x11, 0x29, 0xc7, 0xb7, 0x51, 0x3c, 0x09, 0xa6, 0xf8, 0x18, 0x7e, 0xcf, 0xa5, 0x45, 0xf9, 0x4b, - 0x42, 0xc0, 0x49, 0x66, 0x38, 0x29, 0x04, 0x9c, 0x65, 0x64, 0x22, 0x32, 0x03, 0x13, 0x18, 0x5e, - 0x39, 0xd8, 0x4a, 0x31, 0x95, 0x18, 0x41, 0xa3, 0x12, 0x2f, 0x4d, 0x78, 0x44, 0x66, 0xf6, 0x71, - 0xf5, 0x86, 0x40, 0x6b, 0xc9, 0x12, 0xe4, 0x29, 0x28, 0x2c, 0xce, 0x97, 0xf1, 0xb6, 0x65, 0x90, - 0xa7, 0x36, 0xb2, 0x5a, 0xba, 0xc6, 0x60, 0x97, 0x3e, 0x0f, 0x24, 0xf9, 0x39, 0x7b, 0xba, 0x51, - 0xf9, 0xaf, 0xa5, 0x2d, 0xdf, 0x71, 0xf7, 0x89, 0x39, 0x8c, 0x89, 0x30, 0x92, 0x55, 0xac, 0xff, - 0xa3, 0xcc, 0x2a, 0x56, 0x3a, 0xd4, 0xac, 0x62, 0xea, 0x2f, 0xe7, 0x60, 0x22, 0x11, 0x82, 0x9c, - 0xbc, 0x02, 0xc0, 0x21, 0x52, 0xa8, 0x47, 0x8c, 0x9d, 0x12, 0x86, 0x25, 0x17, 0xcb, 0x63, 0x48, - 0x46, 0x6e, 0xc2, 0x20, 0xff, 0x25, 0xc2, 0x33, 0x25, 0x8b, 0x74, 0xbb, 0xa6, 0xa1, 0x05, 0x44, - 0x61, 0x2d, 0x78, 0xa7, 0x58, 0x48, 0x2d, 0xe2, 0x6d, 0x76, 0x82, 0x5a, 0x18, 0x99, 0xfa, 0xb5, - 0x3c, 0x8c, 0x04, 0x0d, 0x2e, 0x1b, 0x47, 0xa5, 0x73, 0x25, 0x11, 0xcd, 0xbd, 0xb0, 0x53, 0x34, - 0xf7, 0xd8, 0x7c, 0x2b, 0xc2, 0xb7, 0x1f, 0xde, 0x93, 0xa8, 0x6f, 0xe4, 0xe1, 0x4c, 0x50, 0xeb, - 0x11, 0x5e, 0x5f, 0x7d, 0x8c, 0x44, 0xf2, 0xf5, 0x1c, 0x28, 0x53, 0x66, 0xab, 0x65, 0x5a, 0xcd, - 0xaa, 0xb5, 0x66, 0x3b, 0x6d, 0x9c, 0x10, 0x8f, 0xee, 0x08, 0x57, 0xfd, 0x13, 0x39, 0x98, 0x10, - 0x0d, 0x9a, 0xd6, 0x1d, 0xe3, 0xe8, 0xce, 0xc7, 0xe2, 0x2d, 0x39, 0x3a, 0x7d, 0x51, 0xbf, 0x95, - 0x07, 0x98, 0xb7, 0x1b, 0x8f, 0x8e, 0xf9, 0x8b, 0xaa, 0xb7, 0xa0, 0xc4, 0x63, 0x64, 0x09, 0x8d, - 0x9d, 0x10, 0x2f, 0x87, 0xd8, 0xa7, 0x71, 0xc4, 0xd4, 0xb8, 0x98, 0x8f, 0x4b, 0x3c, 0xc6, 0x96, - 0x92, 0xd3, 0x44, 0x11, 0x56, 0x29, 0xa3, 0x13, 0x0b, 0x46, 0x50, 0x29, 0x83, 0x45, 0x2b, 0xdd, - 0xde, 0x9a, 0x2c, 0xb6, 0xec, 0xc6, 0x23, 0x0d, 0xe9, 0xd5, 0x7f, 0x9d, 0xe3, 0xb2, 0x3b, 0xe6, - 0xef, 0x42, 0xfd, 0xcf, 0x2f, 0xee, 0xf1, 0xf3, 0xff, 0x64, 0x0e, 0xce, 0x69, 0xb4, 0x61, 0x3f, - 0xa6, 0xce, 0xe6, 0xb4, 0x6d, 0xd0, 0x3b, 0xd4, 0xa2, 0xce, 0x51, 0x8d, 0xa8, 0xff, 0x1c, 0xd3, - 0x5f, 0x84, 0x8d, 0xb9, 0xef, 0x52, 0xe3, 0xf8, 0xa4, 0x26, 0x51, 0x7f, 0x6d, 0x00, 0x94, 0x54, - 0xab, 0xf7, 0xd8, 0x9a, 0x73, 0x99, 0x5b, 0x99, 0xe2, 0x61, 0x6d, 0x65, 0xfa, 0xf7, 0xb6, 0x95, - 0x29, 0xed, 0x75, 0x2b, 0x33, 0xb0, 0x9b, 0xad, 0x4c, 0x3b, 0xbe, 0x95, 0x19, 0xc4, 0xad, 0xcc, - 0x2b, 0x3d, 0xb7, 0x32, 0x33, 0x96, 0xb1, 0xcf, 0x8d, 0xcc, 0xb1, 0x4d, 0x9b, 0xbb, 0x9f, 0x1d, - 0xd8, 0x35, 0x36, 0x29, 0x36, 0x6c, 0xc7, 0xa0, 0x86, 0xd8, 0x78, 0xe1, 0xa9, 0xbf, 0x23, 0x60, - 0x5a, 0x80, 0x4d, 0xe4, 0x20, 0x1e, 0xdd, 0x4d, 0x0e, 0xe2, 0x43, 0xd8, 0x7f, 0x7d, 0x35, 0x0f, - 0x13, 0xd3, 0xd4, 0xf1, 0x78, 0x10, 0xce, 0xc3, 0x70, 0x6a, 0x2b, 0xc3, 0x19, 0x89, 0x21, 0x5a, - 0xe4, 0xf9, 0xd0, 0x51, 0xaf, 0x41, 0x1d, 0x2f, 0xee, 0xe7, 0x17, 0xa7, 0x67, 0xd5, 0xfb, 0x79, - 0xc0, 0xc4, 0xd8, 0x0d, 0xaa, 0xf7, 0xe1, 0x5c, 0x90, 0xa6, 0xf8, 0xa5, 0x05, 0xf4, 0x52, 0x6a, - 0xaf, 0xe2, 0xde, 0x53, 0x7b, 0xa9, 0xbf, 0x94, 0x83, 0xab, 0x1a, 0xb5, 0xe8, 0x86, 0xbe, 0xda, - 0xa2, 0x52, 0xb3, 0xc4, 0xca, 0xc0, 0x66, 0x0d, 0xd3, 0x6d, 0xeb, 0x5e, 0x63, 0xfd, 0x40, 0x32, - 0x9a, 0x85, 0x11, 0x79, 0xfe, 0xda, 0xc3, 0xdc, 0x16, 0x29, 0xa7, 0xfe, 0x5a, 0x11, 0x06, 0xa6, - 0x6c, 0xef, 0xae, 0x7d, 0xc0, 0x5c, 0x73, 0xe1, 0x94, 0x9f, 0xdf, 0xc3, 0x59, 0xcf, 0x67, 0xb0, - 0x72, 0x29, 0xfc, 0x3e, 0x3a, 0x81, 0xae, 0xda, 0x89, 0x34, 0x05, 0x3e, 0xd9, 0x1e, 0xb3, 0xcc, - 0xbd, 0x06, 0x43, 0x18, 0xbf, 0x45, 0x3a, 0x8d, 0x45, 0x17, 0x6b, 0x8f, 0x01, 0xe3, 0x75, 0x84, - 0xa4, 0xe4, 0x07, 0x22, 0x51, 0x43, 0x4b, 0x07, 0xcf, 0x4a, 0x27, 0x07, 0x10, 0x7d, 0x85, 0x5f, - 0xe4, 0x61, 0x9b, 0xa4, 0x0c, 0x1e, 0x78, 0x8a, 0x12, 0x6b, 0x52, 0x40, 0x78, 0x88, 0x19, 0xe3, - 0xa6, 0x61, 0x74, 0xca, 0xf6, 0x24, 0x77, 0xde, 0xa1, 0xf0, 0x21, 0x27, 0x93, 0x7c, 0xba, 0x2f, - 0x6f, 0xb4, 0x8c, 0xfa, 0x87, 0x45, 0x18, 0xf1, 0x7f, 0x1e, 0x91, 0xee, 0xbc, 0x04, 0xa5, 0x39, - 0x5b, 0x4a, 0x62, 0x80, 0x2e, 0xc0, 0xeb, 0xb6, 0x1b, 0xf3, 0x6d, 0x16, 0x44, 0x4c, 0xea, 0x8b, - 0xb6, 0x21, 0x3b, 0xb0, 0xa3, 0xd4, 0x2d, 0xdb, 0x48, 0x3c, 0x00, 0x0e, 0x08, 0xc9, 0x55, 0x28, - 0xa2, 0xef, 0xbf, 0x74, 0x90, 0x1f, 0xf3, 0xf7, 0x47, 0xbc, 0xa4, 0x95, 0xa5, 0xbd, 0x6a, 0xe5, - 0xc0, 0x7e, 0xb5, 0x72, 0xf0, 0x70, 0xb5, 0xf2, 0x7d, 0x18, 0xc1, 0x9a, 0xfc, 0x1c, 0x68, 0x3b, - 0x2f, 0xac, 0x4f, 0x89, 0xb5, 0x6f, 0x94, 0xb7, 0x5b, 0x64, 0x42, 0xc3, 0x25, 0x2f, 0xc2, 0x2a, - 0xa6, 0xbb, 0x70, 0x80, 0xed, 0xf4, 0x3f, 0xc9, 0xc1, 0xc0, 0x7d, 0xeb, 0x91, 0x65, 0x6f, 0x1c, - 0x4c, 0xe3, 0x5e, 0x81, 0x61, 0xc1, 0x46, 0x5a, 0x5d, 0xf0, 0x4d, 0x77, 0x97, 0x83, 0xeb, 0xc8, - 0x49, 0x93, 0xa9, 0xc8, 0xdb, 0x41, 0x21, 0x7c, 0xde, 0x53, 0x08, 0xd3, 0x80, 0xf8, 0x85, 0x1a, - 0xd1, 0xcc, 0x05, 0x32, 0x39, 0xb9, 0x0c, 0xc5, 0x0a, 0x6b, 0xaa, 0x14, 0x07, 0x97, 0x35, 0x45, - 0x43, 0xa8, 0xfa, 0xd5, 0x22, 0x8c, 0xc5, 0x0e, 0xbe, 0x5e, 0x80, 0x21, 0x71, 0xf0, 0x64, 0xfa, - 0xa9, 0x14, 0xf0, 0xf9, 0x4f, 0x00, 0xd4, 0x06, 0xf9, 0x9f, 0x55, 0x83, 0x7c, 0x0e, 0x06, 0x6c, - 0x17, 0x17, 0x45, 0xfc, 0x96, 0xb1, 0x70, 0x08, 0x2d, 0xd5, 0x58, 0xdb, 0xf9, 0xe0, 0x10, 0x24, - 0xb2, 0x46, 0xda, 0x2e, 0x7e, 0xda, 0x6d, 0x18, 0xd2, 0x5d, 0x97, 0x7a, 0x75, 0x4f, 0x6f, 0xca, - 0xd9, 0x15, 0x02, 0xa0, 0x3c, 0x3a, 0x10, 0xb8, 0xa2, 0x37, 0xc9, 0xe7, 0x61, 0xb4, 0xe1, 0x50, - 0x5c, 0x36, 0xf5, 0x16, 0x6b, 0xa5, 0x64, 0xd6, 0x46, 0x10, 0xf2, 0xfd, 0x49, 0x88, 0xa8, 0x1a, - 0xe4, 0x01, 0x8c, 0x8a, 0xcf, 0xe1, 0xbe, 0xf7, 0x38, 0xd0, 0xc6, 0xc2, 0x65, 0x8c, 0x8b, 0x84, - 0x7b, 0xdf, 0x8b, 0x27, 0x18, 0x32, 0xb9, 0xcc, 0xd7, 0x90, 0x48, 0xc9, 0x12, 0x90, 0x0d, 0xba, - 0x5a, 0xd7, 0xbb, 0xde, 0x3a, 0xab, 0x8b, 0x07, 0x07, 0x17, 0x49, 0x05, 0xf1, 0xdd, 0x42, 0x12, - 0x2b, 0x3f, 0xe7, 0xd8, 0xa0, 0xab, 0xe5, 0x08, 0x92, 0x3c, 0x84, 0xf3, 0xc9, 0x22, 0xec, 0x93, - 0xf9, 0xe5, 0xc0, 0xf3, 0xdb, 0x5b, 0x93, 0x93, 0xa9, 0x04, 0x12, 0xdb, 0xb3, 0x09, 0xb6, 0x55, - 0xe3, 0x6e, 0x71, 0x70, 0x60, 0x7c, 0x50, 0x1b, 0x63, 0x65, 0x7d, 0x13, 0xd2, 0x34, 0xd4, 0xdf, - 0xcd, 0x31, 0x53, 0x91, 0x7d, 0x10, 0x66, 0x55, 0x66, 0xba, 0xde, 0xde, 0xa3, 0xae, 0xb7, 0xc3, - 0xfc, 0x87, 0x25, 0xb7, 0xc7, 0xec, 0xaa, 0x09, 0x2c, 0xb9, 0x01, 0x25, 0x43, 0x3e, 0x35, 0xbb, - 0x10, 0xed, 0x04, 0xbf, 0x1e, 0x4d, 0x50, 0x91, 0x6b, 0x50, 0x64, 0x4b, 0x56, 0x7c, 0xcb, 0x2c, - 0x5b, 0x17, 0x1a, 0x52, 0xa8, 0x3f, 0x92, 0x87, 0x11, 0xe9, 0x6b, 0x6e, 0x1d, 0xe8, 0x73, 0xde, - 0xdc, 0x5d, 0x33, 0x7d, 0xa7, 0x17, 0xdc, 0x4b, 0xf9, 0x4d, 0xbe, 0x1d, 0x88, 0x62, 0x57, 0x17, - 0x52, 0x42, 0x30, 0xaf, 0x89, 0x0f, 0x2d, 0xed, 0x7e, 0xfb, 0xc8, 0xe8, 0xef, 0x16, 0x07, 0xf3, - 0xe3, 0x85, 0xbb, 0xc5, 0xc1, 0xe2, 0x78, 0x3f, 0x46, 0xd2, 0xc2, 0xe0, 0xd5, 0x7c, 0x6f, 0x6e, - 0xad, 0x99, 0xcd, 0x63, 0xfe, 0xfa, 0xe3, 0x70, 0xa3, 0x8c, 0xc5, 0x64, 0x73, 0xcc, 0x9f, 0x82, - 0x7c, 0xa4, 0xb2, 0x39, 0xcd, 0x97, 0x28, 0x64, 0xf3, 0x4f, 0x73, 0xa0, 0xa4, 0xca, 0xa6, 0x7c, - 0x44, 0x7e, 0x10, 0x87, 0x97, 0x35, 0xf1, 0xf7, 0xf3, 0x30, 0x51, 0xb5, 0x3c, 0xda, 0xe4, 0x3b, - 0xc6, 0x63, 0x3e, 0x55, 0xdc, 0x83, 0x61, 0xe9, 0x63, 0x44, 0x9f, 0x3f, 0x1d, 0xec, 0xc7, 0x43, - 0x54, 0x06, 0x27, 0xb9, 0xf4, 0x21, 0x26, 0x5a, 0x8f, 0x09, 0xf9, 0x98, 0xcf, 0x39, 0xc7, 0x43, - 0xc8, 0xc7, 0x7c, 0xf2, 0xfa, 0x98, 0x0a, 0xf9, 0xff, 0xc8, 0xc1, 0xd9, 0x94, 0xca, 0xc9, 0x55, - 0x18, 0xa8, 0x75, 0x57, 0x31, 0x70, 0x56, 0x2e, 0xf4, 0x18, 0x76, 0xbb, 0xab, 0x18, 0x33, 0x4b, - 0xf3, 0x91, 0x64, 0x05, 0x9f, 0xc7, 0x2f, 0x55, 0x2b, 0xd3, 0x42, 0xaa, 0xaa, 0xf4, 0xd0, 0x9f, - 0x81, 0xd3, 0xbe, 0x2c, 0x78, 0x42, 0x6f, 0x9b, 0x46, 0x23, 0xf6, 0x84, 0x9e, 0x95, 0x21, 0x3f, - 0x08, 0x43, 0xe5, 0x0f, 0xbb, 0x0e, 0x45, 0xbe, 0x5c, 0xe2, 0x9f, 0x08, 0xf8, 0xfa, 0x88, 0x34, - 0xce, 0x3c, 0x1a, 0x00, 0xa3, 0x88, 0xf3, 0x0e, 0x19, 0xaa, 0x5f, 0xcb, 0xc1, 0xa5, 0xec, 0xd6, - 0x91, 0xcf, 0xc0, 0x00, 0xdb, 0x99, 0x97, 0xb5, 0x45, 0xf1, 0xe9, 0x3c, 0xc3, 0xa8, 0xdd, 0xa2, - 0x75, 0xdd, 0x91, 0x8d, 0x7d, 0x9f, 0x8c, 0xbc, 0x03, 0xc3, 0x55, 0xd7, 0xed, 0x52, 0xa7, 0xf6, - 0xca, 0x7d, 0xad, 0x2a, 0xf6, 0x84, 0xb8, 0xe7, 0x30, 0x11, 0x5c, 0x77, 0x5f, 0x89, 0x85, 0xc6, - 0x92, 0xe9, 0xd5, 0x1f, 0xcf, 0xc1, 0xe5, 0x5e, 0x5f, 0x45, 0x5e, 0x81, 0xc1, 0x15, 0x6a, 0xe9, - 0x96, 0x57, 0xad, 0x88, 0x26, 0xe1, 0x16, 0xcb, 0x43, 0x58, 0x74, 0xa7, 0x10, 0x10, 0xb2, 0x42, - 0xfc, 0x5c, 0x31, 0x70, 0x64, 0xe0, 0x67, 0xa0, 0x08, 0x8b, 0x15, 0xf2, 0x09, 0xd5, 0xdf, 0xcb, - 0xc3, 0xc8, 0x72, 0xab, 0xdb, 0x34, 0xa5, 0x85, 0x63, 0xdf, 0xf6, 0xb6, 0x6f, 0xfd, 0xe6, 0xf7, - 0x66, 0xfd, 0xb2, 0xe1, 0xe6, 0xec, 0x73, 0xb8, 0xf9, 0xe5, 0xc8, 0xdb, 0x50, 0xea, 0xe0, 0x77, - 0xc4, 0x4f, 0x62, 0xf9, 0xd7, 0x65, 0x9d, 0xc4, 0xf2, 0x32, 0x6c, 0x7c, 0x35, 0x0e, 0x30, 0xbe, - 0xc2, 0xb2, 0x92, 0x40, 0xc3, 0x45, 0xe2, 0x54, 0xa0, 0x87, 0x22, 0xd0, 0x70, 0x41, 0x38, 0x15, - 0xe8, 0x01, 0x04, 0xfa, 0x6b, 0x79, 0x18, 0x8b, 0x56, 0x49, 0x3e, 0x03, 0xc3, 0xbc, 0x1a, 0x7e, - 0x2e, 0x94, 0x93, 0x9c, 0x8a, 0x43, 0xb0, 0x06, 0xfc, 0x87, 0x38, 0xe0, 0x3a, 0xb3, 0xae, 0xbb, - 0xf5, 0xf0, 0x84, 0x86, 0xdf, 0xdf, 0x0e, 0x72, 0x4f, 0xa8, 0x18, 0x4a, 0x1b, 0x5b, 0xd7, 0xdd, - 0xe9, 0xf0, 0x37, 0x99, 0x01, 0xe2, 0xd0, 0xae, 0x4b, 0xa3, 0x0c, 0x8a, 0xc8, 0x40, 0xa4, 0x77, - 0x8e, 0x63, 0xb5, 0x09, 0x0e, 0x93, 0xd9, 0x7c, 0x29, 0x68, 0x36, 0x2a, 0x43, 0xff, 0x2e, 0x72, - 0x4f, 0x4b, 0xf4, 0xe9, 0xc7, 0x9c, 0x9c, 0xa0, 0xa2, 0x7b, 0x3a, 0xdf, 0x94, 0xfb, 0x1d, 0xa0, - 0xfe, 0x5d, 0x1b, 0xfa, 0x97, 0x2c, 0xba, 0xb4, 0x46, 0x5e, 0x86, 0x21, 0xa6, 0x30, 0xf3, 0x36, - 0xeb, 0xcb, 0x9c, 0xf0, 0x9f, 0x90, 0x34, 0x09, 0x11, 0x73, 0x7d, 0x5a, 0x48, 0x45, 0x6e, 0xf3, - 0xfc, 0xf5, 0x7c, 0x8e, 0x15, 0xda, 0x47, 0xe4, 0x32, 0x1c, 0x33, 0xd7, 0xa7, 0x49, 0x74, 0x7e, - 0x29, 0xf1, 0x40, 0xa7, 0x90, 0x2c, 0xc5, 0x31, 0x7e, 0x29, 0x31, 0x3e, 0xe6, 0xd3, 0x52, 0xc3, - 0xc7, 0x77, 0x4f, 0x49, 0x8a, 0xb9, 0x3e, 0x2d, 0x3d, 0xa5, 0xfc, 0x88, 0xec, 0x50, 0x1a, 0x77, - 0xfa, 0x90, 0x71, 0x73, 0x7d, 0x5a, 0x84, 0x96, 0xbc, 0x0e, 0xc3, 0xe2, 0xf7, 0x5d, 0x5b, 0xdc, - 0x28, 0x4b, 0xd1, 0x84, 0x24, 0xd4, 0x5c, 0x9f, 0x26, 0x53, 0x4a, 0x95, 0x2e, 0x3b, 0xa6, 0xe5, - 0x89, 0x37, 0xca, 0xf1, 0x4a, 0x11, 0x27, 0x55, 0x8a, 0xbf, 0xc9, 0x3b, 0x30, 0x1a, 0x84, 0x69, - 0xfa, 0x80, 0x36, 0x3c, 0x71, 0xf8, 0x7d, 0x3e, 0x56, 0x98, 0x23, 0xe7, 0xfa, 0xb4, 0x28, 0x35, - 0xb9, 0x06, 0x25, 0x8d, 0xba, 0xe6, 0x87, 0xfe, 0x75, 0xf1, 0x98, 0x34, 0xce, 0xcd, 0x0f, 0x99, - 0x94, 0x04, 0x9e, 0xf5, 0x4e, 0x78, 0x3f, 0x2d, 0x8e, 0xaa, 0x49, 0xac, 0x96, 0x19, 0xcb, 0x60, - 0xbd, 0x23, 0x39, 0x27, 0x7c, 0x3e, 0x0c, 0x5e, 0x25, 0x52, 0x5e, 0x0e, 0xc7, 0xa3, 0x04, 0xc8, - 0xd8, 0xb9, 0x3e, 0x2d, 0x46, 0x2f, 0x49, 0xb5, 0x62, 0xba, 0x8f, 0x44, 0xbc, 0xd0, 0xb8, 0x54, - 0x19, 0x4a, 0x92, 0x2a, 0xfb, 0x29, 0x55, 0xbd, 0x48, 0xbd, 0x0d, 0xdb, 0x79, 0x24, 0xa2, 0x83, - 0xc6, 0xab, 0x16, 0x58, 0xa9, 0x6a, 0x01, 0x91, 0xab, 0x66, 0x03, 0x6e, 0x2c, 0xbd, 0x6a, 0xdd, - 0xd3, 0xe5, 0xaa, 0xf9, 0x49, 0x9c, 0xdf, 0x49, 0xf3, 0x54, 0x7f, 0xcc, 0x33, 0x8f, 0x27, 0x3b, - 0x14, 0x71, 0x52, 0x87, 0xe2, 0x6f, 0x56, 0xa9, 0x94, 0x5d, 0x5a, 0xa4, 0x16, 0x0f, 0x2a, 0x95, - 0x50, 0xac, 0x52, 0x39, 0x0f, 0xf5, 0x6d, 0x39, 0xe9, 0xb2, 0x32, 0x11, 0xed, 0xa0, 0x10, 0xc3, - 0x3a, 0x48, 0x4a, 0xce, 0x3c, 0x89, 0x09, 0x5d, 0x15, 0x82, 0xe4, 0xc3, 0x41, 0x0b, 0xa7, 0x97, - 0xe7, 0xfa, 0x34, 0x4c, 0xf5, 0xaa, 0xf2, 0x54, 0xc1, 0xca, 0x59, 0xa4, 0x18, 0xf1, 0x29, 0x18, - 0x6c, 0xae, 0x4f, 0xe3, 0x69, 0x84, 0x5f, 0x96, 0x92, 0xf2, 0x29, 0xe7, 0xa2, 0x53, 0x44, 0x80, - 0x60, 0x53, 0x44, 0x98, 0xba, 0x6f, 0x36, 0x99, 0xb8, 0x4e, 0x39, 0x1f, 0x5d, 0x6a, 0xe2, 0xf8, - 0xb9, 0x3e, 0x2d, 0x99, 0xec, 0xee, 0xf5, 0x48, 0x2e, 0x37, 0xe5, 0x42, 0x2c, 0x84, 0x57, 0x88, - 0x62, 0xe2, 0x92, 0xb3, 0xbe, 0x2d, 0xc5, 0xf2, 0x8e, 0x8b, 0xc9, 0xea, 0x62, 0x74, 0xe3, 0x92, - 0x42, 0x32, 0xd7, 0xa7, 0xa5, 0x95, 0x24, 0xd3, 0x89, 0x8c, 0x6a, 0x8a, 0x12, 0xf5, 0x8d, 0x89, - 0xa1, 0xe7, 0xfa, 0xb4, 0x44, 0x0e, 0xb6, 0xdb, 0x72, 0x2a, 0x33, 0xe5, 0xa9, 0x68, 0x27, 0x86, - 0x18, 0xd6, 0x89, 0x52, 0xca, 0xb3, 0xdb, 0x72, 0x7a, 0x2b, 0xe5, 0x52, 0xb2, 0x54, 0x38, 0x73, - 0x4a, 0x69, 0xb0, 0xb4, 0xf4, 0x8c, 0x3d, 0xca, 0xd3, 0x22, 0x67, 0xaa, 0x28, 0x9f, 0x46, 0x33, - 0xd7, 0xa7, 0xa5, 0x67, 0xfb, 0xd1, 0xd2, 0x53, 0xdd, 0x28, 0x97, 0x7b, 0xf1, 0x0c, 0x5a, 0x97, - 0x9e, 0x26, 0x47, 0xef, 0x91, 0x78, 0x44, 0x79, 0x26, 0x1a, 0x3f, 0x38, 0x93, 0x70, 0xae, 0x4f, - 0xeb, 0x91, 0xbe, 0xe4, 0x7e, 0x46, 0x16, 0x10, 0xe5, 0x4a, 0x34, 0x65, 0x72, 0x2a, 0xd1, 0x5c, - 0x9f, 0x96, 0x91, 0x43, 0xe4, 0x7e, 0x46, 0x92, 0x08, 0x65, 0xb2, 0x27, 0xdb, 0x40, 0x1e, 0x19, - 0x29, 0x26, 0x96, 0x52, 0xf3, 0x2b, 0x28, 0xcf, 0x46, 0x55, 0x37, 0x85, 0x84, 0xa9, 0x6e, 0x5a, - 0x66, 0x86, 0xa5, 0xd4, 0x84, 0x00, 0xca, 0x73, 0x3d, 0x18, 0x06, 0x6d, 0x4c, 0x4d, 0x25, 0xb0, - 0x94, 0x1a, 0x91, 0x5f, 0x51, 0xa3, 0x0c, 0x53, 0x48, 0x18, 0xc3, 0xb4, 0x58, 0xfe, 0x4b, 0xa9, - 0x81, 0xdb, 0x95, 0xe7, 0x7b, 0x30, 0x0c, 0x5b, 0x98, 0x16, 0xf2, 0xfd, 0xf5, 0x48, 0xe4, 0x74, - 0xe5, 0x13, 0xd1, 0x79, 0x43, 0x42, 0xb1, 0x79, 0x43, 0x8e, 0xb1, 0x3e, 0x9d, 0x88, 0x0d, 0xab, - 0x7c, 0x32, 0x3a, 0xcc, 0x63, 0x68, 0x36, 0xcc, 0xe3, 0xd1, 0x64, 0xa7, 0x13, 0x31, 0x32, 0x95, - 0xab, 0x59, 0x4c, 0x10, 0x1d, 0x65, 0xc2, 0xa3, 0x6a, 0x56, 0x53, 0x82, 0x34, 0x2a, 0x9f, 0x8a, - 0xfa, 0x75, 0x27, 0x08, 0xe6, 0xfa, 0xb4, 0x94, 0xd0, 0x8e, 0x5a, 0x7a, 0x44, 0x22, 0xe5, 0x5a, - 0x74, 0xd8, 0xa6, 0xd1, 0xb0, 0x61, 0x9b, 0x1a, 0xcd, 0x68, 0x3e, 0xed, 0xf1, 0x89, 0x72, 0x3d, - 0x6a, 0x98, 0x25, 0x29, 0x98, 0x61, 0x96, 0xf2, 0x68, 0x45, 0x4b, 0x8f, 0xb1, 0xa3, 0xbc, 0xd0, - 0xb3, 0x85, 0x48, 0x93, 0xd2, 0x42, 0x1e, 0x72, 0x26, 0xb4, 0x9d, 0xee, 0x77, 0x5a, 0xb6, 0x6e, - 0x28, 0x9f, 0x4e, 0xb5, 0x9d, 0x38, 0x52, 0xb2, 0x9d, 0x38, 0x80, 0xad, 0xf2, 0xf2, 0x1b, 0x07, - 0xe5, 0xc5, 0xe8, 0x2a, 0x2f, 0xe3, 0xd8, 0x2a, 0x1f, 0x79, 0x0f, 0x31, 0x9d, 0x78, 0x0f, 0xa0, - 0xbc, 0x14, 0x55, 0x80, 0x18, 0x9a, 0x29, 0x40, 0xfc, 0x05, 0xc1, 0x97, 0xb3, 0x3d, 0xe8, 0x95, - 0x1b, 0xc8, 0xed, 0x59, 0x9f, 0x5b, 0x16, 0xdd, 0x5c, 0x9f, 0x96, 0xed, 0x85, 0x5f, 0x4d, 0x71, - 0x88, 0x57, 0x6e, 0x46, 0x15, 0x2c, 0x41, 0xc0, 0x14, 0x2c, 0xe9, 0x46, 0x5f, 0x4d, 0xf1, 0x68, - 0x57, 0x3e, 0x93, 0xc9, 0x2a, 0xf8, 0xe6, 0x14, 0x3f, 0xf8, 0xdb, 0xb2, 0x4b, 0xba, 0xf2, 0x72, - 0x74, 0xb1, 0x0b, 0x31, 0x6c, 0xb1, 0x93, 0x5c, 0xd7, 0x6f, 0xcb, 0xce, 0xd8, 0xca, 0xad, 0x64, - 0xa9, 0x70, 0x89, 0x94, 0x9c, 0xb6, 0xb5, 0x74, 0x1f, 0x66, 0xe5, 0x95, 0xa8, 0xd6, 0xa5, 0xd1, - 0x30, 0xad, 0x4b, 0xf5, 0x7f, 0x9e, 0x4d, 0xba, 0x22, 0x2b, 0xb7, 0xe3, 0x9b, 0xec, 0x28, 0x9e, - 0x59, 0x3e, 0x09, 0xf7, 0xe5, 0xcf, 0xc7, 0xc3, 0xe5, 0x29, 0xaf, 0xc6, 0xae, 0x7d, 0x23, 0x58, - 0x66, 0xdf, 0xc6, 0xc2, 0xeb, 0x7d, 0x3e, 0x1e, 0x61, 0x4e, 0x79, 0x2d, 0x9d, 0x43, 0xa0, 0x2b, - 0xf1, 0x88, 0x74, 0x9f, 0x8f, 0x07, 0x65, 0x53, 0x5e, 0x4f, 0xe7, 0x10, 0x48, 0x37, 0x1e, 0xc4, - 0xed, 0x65, 0x29, 0x4c, 0xbc, 0xf2, 0xd9, 0xa8, 0xe9, 0x18, 0x20, 0x98, 0xe9, 0x18, 0x06, 0x93, - 0x7f, 0x59, 0x0a, 0xaf, 0xae, 0xbc, 0x91, 0x28, 0x12, 0x34, 0x56, 0x0a, 0xc2, 0xfe, 0xb2, 0x14, - 0x96, 0x5c, 0x79, 0x33, 0x51, 0x24, 0x68, 0x9d, 0x14, 0xbc, 0xdc, 0xe8, 0xf5, 0x7e, 0x55, 0x79, - 0x2b, 0x7a, 0x18, 0x9c, 0x4d, 0x39, 0xd7, 0xa7, 0xf5, 0x7a, 0x07, 0xfb, 0xe5, 0x6c, 0xc7, 0x6e, - 0xe5, 0xed, 0xe8, 0x10, 0xce, 0xa2, 0x63, 0x43, 0x38, 0xd3, 0x39, 0xfc, 0x9d, 0x58, 0x2c, 0x0b, - 0xe5, 0x9d, 0xe8, 0x14, 0x17, 0x41, 0xb2, 0x29, 0x2e, 0x1e, 0xf9, 0x22, 0x12, 0xa4, 0x41, 0xf9, - 0x5c, 0x74, 0x8a, 0x93, 0x71, 0x6c, 0x8a, 0x8b, 0x04, 0x74, 0x98, 0x4e, 0xc4, 0x0e, 0x50, 0xde, - 0x8d, 0x4e, 0x71, 0x31, 0x34, 0x9b, 0xe2, 0xe2, 0xd1, 0x06, 0xde, 0x89, 0x3d, 0xa1, 0x57, 0x3e, - 0x9f, 0xde, 0x7e, 0x44, 0xca, 0xed, 0xe7, 0x0f, 0xee, 0xb5, 0xf4, 0xb7, 0xe0, 0x4a, 0x39, 0x3a, - 0x7e, 0xd3, 0x68, 0xd8, 0xf8, 0x4d, 0x7d, 0x47, 0x1e, 0xdf, 0x38, 0x08, 0xad, 0x9a, 0xea, 0xb1, - 0x71, 0x08, 0x4d, 0x91, 0x14, 0x70, 0x64, 0x8f, 0xcc, 0x37, 0x42, 0xd3, 0x19, 0x7b, 0x64, 0x7f, - 0x1b, 0x14, 0xa3, 0x67, 0xb3, 0x6b, 0xc2, 0xcf, 0x58, 0xa9, 0x44, 0x67, 0xd7, 0x04, 0x01, 0x9b, - 0x5d, 0x93, 0xde, 0xc9, 0xb3, 0x30, 0x2e, 0xb4, 0x88, 0xbb, 0x4f, 0x9b, 0x56, 0x53, 0x99, 0x89, - 0xbd, 0xb7, 0x8c, 0xe1, 0xd9, 0xec, 0x14, 0x87, 0xe1, 0x7a, 0xcd, 0x61, 0xd3, 0x2d, 0xb3, 0xb3, - 0x6a, 0xeb, 0x8e, 0x51, 0xa3, 0x96, 0xa1, 0xcc, 0xc6, 0xd6, 0xeb, 0x14, 0x1a, 0x5c, 0xaf, 0x53, - 0xe0, 0x18, 0x22, 0x2e, 0x06, 0xd7, 0x68, 0x83, 0x9a, 0x8f, 0xa9, 0x72, 0x07, 0xd9, 0x4e, 0x66, - 0xb1, 0x15, 0x64, 0x73, 0x7d, 0x5a, 0x16, 0x07, 0x66, 0xab, 0x2f, 0x6c, 0xd6, 0xde, 0x9b, 0x0f, - 0xc2, 0x0f, 0x2c, 0x3b, 0xb4, 0xa3, 0x3b, 0x54, 0x99, 0x8b, 0xda, 0xea, 0xa9, 0x44, 0xcc, 0x56, - 0x4f, 0x45, 0x24, 0xd9, 0xfa, 0x63, 0xa1, 0xda, 0x8b, 0x6d, 0x38, 0x22, 0xd2, 0x4b, 0xb3, 0xd9, - 0x29, 0x8a, 0x60, 0x02, 0x9a, 0xb7, 0xad, 0x26, 0x9e, 0x54, 0xdc, 0x8d, 0xce, 0x4e, 0xd9, 0x94, - 0x6c, 0x76, 0xca, 0xc6, 0x32, 0x55, 0x8f, 0x62, 0xf9, 0x18, 0xbc, 0x17, 0x55, 0xf5, 0x14, 0x12, - 0xa6, 0xea, 0x29, 0xe0, 0x24, 0x43, 0x8d, 0xba, 0xd4, 0x53, 0xe6, 0x7b, 0x31, 0x44, 0x92, 0x24, - 0x43, 0x04, 0x27, 0x19, 0xce, 0x52, 0xaf, 0xb1, 0xae, 0x2c, 0xf4, 0x62, 0x88, 0x24, 0x49, 0x86, - 0x08, 0x66, 0x9b, 0xcd, 0x28, 0x78, 0xaa, 0xdb, 0x7a, 0xe4, 0xf7, 0xd9, 0x62, 0x74, 0xb3, 0x99, - 0x49, 0xc8, 0x36, 0x9b, 0x99, 0x48, 0xf2, 0xe3, 0xbb, 0xf6, 0x83, 0x57, 0x96, 0xb0, 0xc2, 0x1b, - 0xa1, 0x5d, 0xb0, 0x9b, 0x52, 0x73, 0x7d, 0xda, 0x6e, 0xfd, 0xec, 0x3f, 0x1d, 0x38, 0x8d, 0x2a, - 0xcb, 0x58, 0xd5, 0x99, 0xe0, 0xac, 0x82, 0x83, 0xe7, 0xfa, 0xb4, 0xc0, 0xad, 0xf4, 0x75, 0x18, - 0xc6, 0x8f, 0xaa, 0x5a, 0xa6, 0x57, 0x99, 0x52, 0xde, 0x8b, 0x6e, 0x99, 0x24, 0x14, 0xdb, 0x32, - 0x49, 0x3f, 0xd9, 0x24, 0x8e, 0x3f, 0xf9, 0x14, 0x53, 0x99, 0x52, 0xb4, 0xe8, 0x24, 0x1e, 0x41, - 0xb2, 0x49, 0x3c, 0x02, 0x08, 0xea, 0xad, 0x38, 0x76, 0xa7, 0x32, 0xa5, 0xd4, 0x52, 0xea, 0xe5, - 0xa8, 0xa0, 0x5e, 0xfe, 0x33, 0xa8, 0xb7, 0xb6, 0xde, 0xf5, 0x2a, 0xec, 0x1b, 0x57, 0x52, 0xea, - 0xf5, 0x91, 0x41, 0xbd, 0x3e, 0x80, 0x4d, 0x85, 0x08, 0x58, 0x76, 0x6c, 0x36, 0x69, 0xdf, 0x33, - 0x5b, 0x2d, 0xe5, 0x7e, 0x74, 0x2a, 0x8c, 0xe3, 0xd9, 0x54, 0x18, 0x87, 0x31, 0xd3, 0x93, 0xb7, - 0x8a, 0xae, 0x76, 0x9b, 0xca, 0x83, 0xa8, 0xe9, 0x19, 0x62, 0x98, 0xe9, 0x19, 0xfe, 0xc2, 0xdd, - 0x05, 0xfb, 0xa5, 0xd1, 0x35, 0x87, 0xba, 0xeb, 0xca, 0xc3, 0xd8, 0xee, 0x42, 0xc2, 0xe1, 0xee, - 0x42, 0xfa, 0x4d, 0x9a, 0xf0, 0x74, 0x64, 0xa1, 0xf1, 0x2f, 0x6d, 0x6a, 0x54, 0x77, 0x1a, 0xeb, - 0xca, 0x17, 0x90, 0xd5, 0xf3, 0xa9, 0x4b, 0x55, 0x94, 0x74, 0xae, 0x4f, 0xeb, 0xc5, 0x09, 0xb7, - 0xe5, 0xef, 0xcd, 0xf3, 0x58, 0xae, 0xda, 0xf2, 0xb4, 0xbf, 0x09, 0x7d, 0x3f, 0xb6, 0x2d, 0x4f, - 0x92, 0xe0, 0xb6, 0x3c, 0x09, 0x26, 0x1d, 0xb8, 0x12, 0xdb, 0xaa, 0x2d, 0xe8, 0x2d, 0xb6, 0x2f, - 0xa1, 0xc6, 0xb2, 0xde, 0x78, 0x44, 0x3d, 0xe5, 0x8b, 0xc8, 0xfb, 0x6a, 0xc6, 0x86, 0x2f, 0x46, - 0x3d, 0xd7, 0xa7, 0xed, 0xc0, 0x8f, 0xa8, 0x50, 0xac, 0xcd, 0xae, 0x2c, 0x2b, 0x3f, 0x10, 0x3d, - 0xdf, 0x64, 0xb0, 0xb9, 0x3e, 0x0d, 0x71, 0xcc, 0x4a, 0xbb, 0xdf, 0x69, 0x3a, 0xba, 0x41, 0xb9, - 0xa1, 0x85, 0xb6, 0x9b, 0x30, 0x40, 0x7f, 0x30, 0x6a, 0xa5, 0x65, 0xd1, 0x31, 0x2b, 0x2d, 0x0b, - 0xc7, 0x14, 0x35, 0x92, 0xb6, 0x44, 0xf9, 0x52, 0x54, 0x51, 0x23, 0x48, 0xa6, 0xa8, 0xd1, 0x24, - 0x27, 0x5f, 0x80, 0x0b, 0xc1, 0x7e, 0x5e, 0xac, 0xbf, 0xbc, 0xd3, 0x94, 0x2f, 0x23, 0x9f, 0x2b, - 0x89, 0xcb, 0x80, 0x08, 0xd5, 0x5c, 0x9f, 0x96, 0x51, 0x9e, 0xad, 0xb8, 0x89, 0x8c, 0x5c, 0xc2, - 0xbc, 0xf8, 0xa1, 0xe8, 0x8a, 0x9b, 0x41, 0xc6, 0x56, 0xdc, 0x0c, 0x54, 0x2a, 0x73, 0x21, 0x54, - 0x7d, 0x07, 0xe6, 0x81, 0x4c, 0xb3, 0x38, 0xa4, 0x32, 0x17, 0x96, 0xda, 0xea, 0x0e, 0xcc, 0x03, - 0x6b, 0x2d, 0x8b, 0x03, 0xb9, 0x06, 0xa5, 0x5a, 0x6d, 0x41, 0xeb, 0x5a, 0x4a, 0x23, 0xe6, 0x2d, - 0x8b, 0xd0, 0xb9, 0x3e, 0x4d, 0xe0, 0x99, 0x19, 0x34, 0xd3, 0xd2, 0x5d, 0xcf, 0x6c, 0xb8, 0x38, - 0x62, 0xfc, 0x11, 0x62, 0x44, 0xcd, 0xa0, 0x34, 0x1a, 0x66, 0x06, 0xa5, 0xc1, 0x99, 0xbd, 0x38, - 0xad, 0xbb, 0xae, 0x6e, 0x19, 0x8e, 0x3e, 0x85, 0xcb, 0x04, 0x8d, 0xbd, 0xc6, 0x8a, 0x60, 0x99, - 0xbd, 0x18, 0x85, 0xe0, 0xe1, 0xbb, 0x0f, 0xf1, 0xcd, 0x9c, 0xb5, 0xd8, 0xe1, 0x7b, 0x0c, 0x8f, - 0x87, 0xef, 0x31, 0x18, 0xda, 0x9d, 0x3e, 0x4c, 0xa3, 0x4d, 0x93, 0x89, 0x48, 0x69, 0xc6, 0xec, - 0xce, 0x38, 0x01, 0xda, 0x9d, 0x71, 0x60, 0xa4, 0x49, 0xfe, 0x72, 0xbb, 0x9e, 0xd1, 0xa4, 0x70, - 0x95, 0x4d, 0x94, 0x61, 0xeb, 0x77, 0x38, 0x38, 0x2a, 0x9b, 0x96, 0xde, 0xb6, 0x2b, 0x53, 0xbe, - 0xd4, 0xcd, 0xe8, 0xfa, 0x9d, 0x49, 0xc8, 0xd6, 0xef, 0x4c, 0x24, 0x9b, 0x5d, 0xfd, 0x8d, 0xd6, - 0xba, 0xee, 0x50, 0xa3, 0x62, 0x3a, 0x78, 0xb2, 0xb8, 0xc9, 0xb7, 0x86, 0x1f, 0x44, 0x67, 0xd7, - 0x1e, 0xa4, 0x6c, 0x76, 0xed, 0x81, 0x66, 0x46, 0x5e, 0x3a, 0x5a, 0xa3, 0xba, 0xa1, 0x3c, 0x8a, - 0x1a, 0x79, 0xd9, 0x94, 0xcc, 0xc8, 0xcb, 0xc6, 0x66, 0x7f, 0xce, 0x43, 0xc7, 0xf4, 0xa8, 0xd2, - 0xda, 0xcd, 0xe7, 0x20, 0x69, 0xf6, 0xe7, 0x20, 0x9a, 0x6d, 0x08, 0xe3, 0x1d, 0xd2, 0x8e, 0x6e, - 0x08, 0x93, 0xdd, 0x10, 0x2f, 0xc1, 0x2c, 0x16, 0xf1, 0x28, 0x4f, 0xb1, 0xa2, 0x16, 0x8b, 0x00, - 0x33, 0x8b, 0x25, 0x7c, 0xb6, 0x17, 0x79, 0x8a, 0xa5, 0xd8, 0xd1, 0x35, 0x54, 0xc6, 0xb1, 0x35, - 0x34, 0xf2, 0x6c, 0xeb, 0xf5, 0xc8, 0x3b, 0x03, 0xa5, 0x13, 0xb5, 0x3a, 0x24, 0x14, 0xb3, 0x3a, - 0xe4, 0x17, 0x09, 0xd3, 0x70, 0x06, 0x6f, 0xc1, 0xb5, 0x6e, 0x70, 0x8f, 0xf3, 0xc3, 0xd1, 0xcf, - 0x8c, 0xa1, 0xd9, 0x67, 0xc6, 0x40, 0x11, 0x26, 0x62, 0xda, 0x72, 0x32, 0x98, 0x84, 0xe7, 0x83, - 0x31, 0x10, 0x99, 0x07, 0x52, 0x2b, 0x2f, 0xcc, 0x57, 0x8d, 0x65, 0xf9, 0x8a, 0xcc, 0x8d, 0x9e, - 0xc0, 0x26, 0x29, 0xe6, 0xfa, 0xb4, 0x94, 0x72, 0xe4, 0x03, 0xb8, 0x2c, 0xa0, 0xe2, 0xc5, 0x35, - 0x26, 0xee, 0x37, 0x82, 0x05, 0xc1, 0x8b, 0xfa, 0xb1, 0xf5, 0xa2, 0x9d, 0xeb, 0xd3, 0x7a, 0xf2, - 0xca, 0xae, 0x4b, 0xac, 0x0f, 0xdd, 0xdd, 0xd4, 0x15, 0x2c, 0x12, 0x3d, 0x79, 0x65, 0xd7, 0x25, - 0xe4, 0xfe, 0x78, 0x37, 0x75, 0x05, 0x9d, 0xd0, 0x93, 0x17, 0x71, 0x61, 0xb2, 0x17, 0xbe, 0xdc, - 0x6a, 0x29, 0x1b, 0x58, 0xdd, 0xa7, 0x76, 0x53, 0x5d, 0x19, 0x0d, 0xce, 0x9d, 0x38, 0xb2, 0x59, - 0x7a, 0xa9, 0x43, 0xad, 0x5a, 0x64, 0x01, 0x7a, 0x12, 0x9d, 0xa5, 0x13, 0x04, 0x6c, 0x96, 0x4e, - 0x00, 0xd9, 0x80, 0x92, 0x9f, 0xab, 0x28, 0x9b, 0xd1, 0x01, 0x25, 0xe3, 0xd8, 0x80, 0x8a, 0x3c, - 0x6d, 0x59, 0x82, 0xb3, 0x4b, 0x8f, 0x3c, 0xdd, 0xb7, 0x20, 0x5d, 0xd1, 0x95, 0x1f, 0xc6, 0x2e, - 0x99, 0x92, 0x24, 0x78, 0xc9, 0x94, 0x04, 0xb3, 0x31, 0xc2, 0xc0, 0xb5, 0x4d, 0xab, 0x31, 0xab, - 0x9b, 0xad, 0xae, 0x43, 0x95, 0x7f, 0x2b, 0x3a, 0x46, 0x62, 0x68, 0x36, 0x46, 0x62, 0x20, 0xb6, - 0x40, 0x33, 0x50, 0xd9, 0x75, 0xcd, 0xa6, 0x25, 0xf6, 0x95, 0xdd, 0x96, 0xa7, 0xfc, 0xdb, 0xd1, - 0x05, 0x3a, 0x8d, 0x86, 0x2d, 0xd0, 0x69, 0x70, 0x3c, 0x75, 0x62, 0xbd, 0xc0, 0x16, 0x0f, 0xf9, - 0xae, 0xf2, 0xdf, 0x89, 0x9d, 0x3a, 0xa5, 0xd0, 0xe0, 0xa9, 0x53, 0x0a, 0x9c, 0xad, 0x8f, 0xdc, - 0x26, 0x9b, 0x37, 0x83, 0xbb, 0xea, 0x7f, 0x37, 0xba, 0x3e, 0xc6, 0xf1, 0x6c, 0x7d, 0x8c, 0xc3, - 0xa2, 0x7c, 0x44, 0x17, 0xfc, 0x7b, 0x59, 0x7c, 0x02, 0xf9, 0x27, 0xca, 0x90, 0x3b, 0x32, 0x1f, - 0x31, 0x52, 0x7e, 0x24, 0x97, 0xc5, 0x28, 0x18, 0x1e, 0x89, 0x42, 0x51, 0x46, 0x1a, 0x7d, 0x6c, - 0xd2, 0x0d, 0xe5, 0x2b, 0x99, 0x8c, 0x38, 0x41, 0x94, 0x11, 0x87, 0x91, 0xf7, 0xe1, 0x42, 0x08, - 0x5b, 0xa0, 0xed, 0xd5, 0x60, 0x66, 0xfa, 0x63, 0xb9, 0xa8, 0x19, 0x9c, 0x4e, 0xc6, 0xcc, 0xe0, - 0x74, 0x4c, 0x1a, 0x6b, 0x21, 0xba, 0x7f, 0x7f, 0x07, 0xd6, 0x81, 0x04, 0x33, 0x18, 0xa4, 0xb1, - 0x16, 0xd2, 0xfc, 0xd1, 0x1d, 0x58, 0x07, 0x32, 0xcd, 0x60, 0x40, 0x7e, 0x22, 0x07, 0x57, 0xd3, - 0x51, 0xe5, 0x56, 0x6b, 0xd6, 0x76, 0x42, 0x9c, 0xf2, 0xc7, 0x73, 0xd1, 0x83, 0x86, 0xdd, 0x15, - 0x9b, 0xeb, 0xd3, 0x76, 0x59, 0x01, 0xf9, 0x1c, 0x8c, 0x96, 0xbb, 0x86, 0xe9, 0xe1, 0xc5, 0x1b, - 0x33, 0x9c, 0x7f, 0x2c, 0x17, 0xdb, 0xe2, 0xc8, 0x58, 0xdc, 0xe2, 0xc8, 0x00, 0x72, 0x17, 0x26, - 0x6a, 0xb4, 0xd1, 0x75, 0x4c, 0x6f, 0x53, 0xa3, 0x1d, 0xdb, 0xf1, 0x18, 0x8f, 0x3f, 0x91, 0x8b, - 0x4e, 0x62, 0x09, 0x0a, 0x36, 0x89, 0x25, 0x80, 0xe4, 0x41, 0xe2, 0x56, 0x5e, 0x74, 0xe6, 0x8f, - 0xe7, 0x7a, 0x5e, 0xcb, 0x07, 0x7d, 0x99, 0x5e, 0x9c, 0x2c, 0xc7, 0x6e, 0xd1, 0x05, 0xd7, 0x9f, - 0xc8, 0xf5, 0xb8, 0x46, 0x97, 0x66, 0xb8, 0x24, 0x98, 0x71, 0x4c, 0xc9, 0xe1, 0xae, 0xfc, 0xc9, - 0x5c, 0x8f, 0x6b, 0xef, 0x90, 0x63, 0x5a, 0xfa, 0xf7, 0x57, 0xb9, 0xa7, 0x88, 0x60, 0xf4, 0xa7, - 0x72, 0x49, 0x57, 0x91, 0xa0, 0xbc, 0x44, 0xc8, 0x8a, 0xdd, 0x77, 0x03, 0xa5, 0xff, 0x6a, 0x2e, - 0xe9, 0x9b, 0x17, 0x16, 0x0b, 0x7f, 0x11, 0x0a, 0x97, 0x66, 0x9e, 0x78, 0xd4, 0xb1, 0xf4, 0x16, - 0x76, 0x67, 0xcd, 0xb3, 0x1d, 0xbd, 0x49, 0x67, 0x2c, 0x7d, 0xb5, 0x45, 0x95, 0xaf, 0xe5, 0xa2, - 0x16, 0x6c, 0x36, 0x29, 0xb3, 0x60, 0xb3, 0xb1, 0x64, 0x1d, 0x9e, 0x4e, 0xc3, 0x56, 0x4c, 0x17, - 0xeb, 0xf9, 0x7a, 0x2e, 0x6a, 0xc2, 0xf6, 0xa0, 0x65, 0x26, 0x6c, 0x0f, 0x34, 0xb9, 0x05, 0x43, - 0x53, 0xb6, 0x3f, 0xfd, 0xfe, 0xe9, 0x98, 0x33, 0x64, 0x80, 0x99, 0xeb, 0xd3, 0x42, 0x32, 0x51, - 0x46, 0x0c, 0xea, 0x6f, 0x24, 0xcb, 0x84, 0x97, 0x4f, 0xc1, 0x0f, 0x51, 0x46, 0x88, 0xfb, 0x3f, - 0x48, 0x96, 0x09, 0xef, 0xb8, 0x82, 0x1f, 0x6c, 0x26, 0xe1, 0x35, 0x2e, 0xcc, 0x96, 0x99, 0xdd, - 0x36, 0xbd, 0xae, 0xb7, 0x5a, 0xd4, 0x6a, 0x52, 0xe5, 0x9b, 0xb1, 0x99, 0x24, 0x9d, 0x8c, 0xcd, - 0x24, 0xe9, 0x18, 0xf2, 0x83, 0x70, 0xf1, 0x81, 0xde, 0x32, 0x8d, 0x10, 0xe7, 0x67, 0xf4, 0x56, - 0x7e, 0x32, 0x17, 0xdd, 0x4d, 0x67, 0xd0, 0xb1, 0xdd, 0x74, 0x06, 0x8a, 0x2c, 0x00, 0xc1, 0x65, - 0x34, 0x98, 0x2d, 0xd8, 0xfa, 0xac, 0xfc, 0x87, 0xb9, 0xa8, 0x9d, 0x9a, 0x24, 0x61, 0x76, 0x6a, - 0x12, 0x4a, 0xea, 0xd9, 0xa9, 0x41, 0x94, 0x9f, 0xca, 0x45, 0x4f, 0x6b, 0xb2, 0x08, 0xe7, 0xfa, - 0xb4, 0xec, 0xfc, 0x22, 0x77, 0x60, 0xbc, 0xb6, 0x5c, 0x9d, 0x9d, 0x9d, 0xa9, 0x3d, 0xa8, 0x56, - 0xf0, 0xa1, 0x83, 0xa1, 0xfc, 0x99, 0xd8, 0x8a, 0x15, 0x27, 0x60, 0x2b, 0x56, 0x1c, 0x46, 0xde, - 0x82, 0x11, 0xd6, 0x7e, 0x36, 0x60, 0xf0, 0x93, 0x7f, 0x3a, 0x17, 0x35, 0xa7, 0x64, 0x24, 0x33, - 0xa7, 0xe4, 0xdf, 0xa4, 0x06, 0xe7, 0x98, 0x14, 0x97, 0x1d, 0xba, 0x46, 0x1d, 0x6a, 0x35, 0xfc, - 0x31, 0xfd, 0x33, 0xb9, 0xa8, 0x95, 0x91, 0x46, 0xc4, 0xac, 0x8c, 0x34, 0x38, 0x79, 0x04, 0x97, - 0xe3, 0x27, 0x41, 0xf2, 0xb3, 0x53, 0xe5, 0xcf, 0xe6, 0x62, 0xc6, 0x70, 0x0f, 0x62, 0x34, 0x86, - 0x7b, 0xe0, 0x89, 0x05, 0xcf, 0x88, 0x63, 0x15, 0xe1, 0x70, 0x19, 0xaf, 0xed, 0xcf, 0xf1, 0xda, - 0x3e, 0x19, 0x3a, 0x04, 0xf6, 0xa0, 0x9e, 0xeb, 0xd3, 0x7a, 0xb3, 0x63, 0x7a, 0x96, 0x4c, 0x80, - 0xa1, 0xfc, 0x6c, 0x2e, 0xdd, 0x23, 0x25, 0xe2, 0xa6, 0x9c, 0x96, 0x39, 0xe3, 0xfd, 0xac, 0xf4, - 0x0d, 0xca, 0x9f, 0x8f, 0x8d, 0xb7, 0x74, 0x32, 0x36, 0xde, 0x32, 0xf2, 0x3f, 0xdc, 0x85, 0x09, - 0xae, 0xd4, 0xcb, 0x3a, 0x0e, 0x43, 0xab, 0x49, 0x0d, 0xe5, 0x2f, 0xc4, 0x56, 0xbb, 0x04, 0x05, - 0xba, 0xf6, 0xc4, 0x81, 0x6c, 0xea, 0xae, 0x75, 0x74, 0xcb, 0xc2, 0x63, 0x56, 0xe5, 0x3f, 0x8a, - 0x4d, 0xdd, 0x21, 0x0a, 0x1d, 0x77, 0x83, 0x5f, 0x4c, 0x13, 0x7a, 0xa5, 0x3e, 0x52, 0xfe, 0x62, - 0x4c, 0x13, 0x7a, 0x11, 0x33, 0x4d, 0xe8, 0x99, 0x47, 0xe9, 0x41, 0xc6, 0x13, 0x70, 0xe5, 0xe7, - 0x62, 0x2b, 0x72, 0x2a, 0x15, 0x5b, 0x91, 0xd3, 0x5f, 0x90, 0x3f, 0xc8, 0x78, 0x3e, 0xad, 0xfc, - 0x7c, 0x6f, 0xbe, 0xe1, 0x4a, 0x9f, 0xfe, 0xfa, 0xfa, 0x41, 0xc6, 0xd3, 0x63, 0xe5, 0x2f, 0xf5, - 0xe6, 0x1b, 0x3a, 0xf6, 0xa5, 0xbf, 0x5c, 0xae, 0x67, 0x3f, 0xdb, 0x55, 0xfe, 0x72, 0x7c, 0xea, - 0xca, 0x20, 0xc4, 0xa9, 0x2b, 0xeb, 0xed, 0xef, 0x2a, 0x3c, 0xc5, 0x35, 0xe4, 0x8e, 0xa3, 0x77, - 0xd6, 0x6b, 0xd4, 0xf3, 0x4c, 0xab, 0xe9, 0xef, 0xc4, 0xfe, 0x4a, 0x2e, 0x76, 0x3c, 0x96, 0x45, - 0x89, 0xc7, 0x63, 0x59, 0x48, 0xa6, 0xbc, 0x89, 0x07, 0xba, 0xca, 0x5f, 0x8d, 0x29, 0x6f, 0x82, - 0x82, 0x29, 0x6f, 0xf2, 0x5d, 0xef, 0xdd, 0x94, 0x77, 0xa8, 0xca, 0x7f, 0x9c, 0xcd, 0x2b, 0x68, - 0x5f, 0xca, 0xf3, 0xd5, 0xbb, 0x29, 0xcf, 0x2d, 0x95, 0xff, 0x24, 0x9b, 0x57, 0xe8, 0x83, 0x94, - 0x7c, 0xa5, 0xf9, 0x3e, 0x5c, 0xe0, 0xb3, 0xf9, 0x2c, 0x35, 0x68, 0xe4, 0x43, 0x7f, 0x21, 0x36, - 0xf6, 0xd3, 0xc9, 0xf0, 0xc8, 0x3d, 0x15, 0x93, 0xc6, 0x5a, 0xb4, 0xf5, 0xaf, 0xed, 0xc0, 0x3a, - 0xdc, 0x10, 0xa4, 0x63, 0xd8, 0x7a, 0x23, 0x3f, 0x7e, 0x53, 0x7e, 0x31, 0xb6, 0xde, 0xc8, 0x48, - 0x74, 0xe7, 0x90, 0x5f, 0xca, 0xbd, 0x15, 0x7d, 0xe8, 0xa5, 0xfc, 0xa7, 0xa9, 0x85, 0x83, 0x0e, - 0x88, 0xbe, 0x0a, 0x7b, 0x2b, 0xfa, 0xa8, 0x49, 0xf9, 0xa5, 0xd4, 0xc2, 0xc1, 0x07, 0x44, 0x5f, - 0x40, 0xb1, 0x2d, 0x52, 0xd7, 0xb3, 0x39, 0xab, 0xc8, 0xf4, 0xf0, 0xd7, 0xe3, 0x5b, 0xa4, 0x54, - 0x32, 0xdc, 0x22, 0xa5, 0x62, 0xd2, 0x58, 0x8b, 0xcf, 0xfb, 0xe5, 0x1d, 0x58, 0x4b, 0x1b, 0xbb, - 0x54, 0x4c, 0x1a, 0x6b, 0xf1, 0xf1, 0xbf, 0xb2, 0x03, 0x6b, 0x69, 0x63, 0x97, 0x8a, 0x61, 0xe6, - 0x58, 0x88, 0x79, 0x40, 0x1d, 0x37, 0x54, 0xbf, 0xbf, 0x11, 0x33, 0xc7, 0x32, 0xe8, 0x98, 0x39, - 0x96, 0x81, 0x4a, 0xe5, 0x2e, 0x84, 0xf2, 0xab, 0x3b, 0x71, 0x0f, 0xef, 0x65, 0x32, 0x50, 0xa9, - 0xdc, 0x85, 0x5c, 0xfe, 0xe6, 0x4e, 0xdc, 0xc3, 0x8b, 0x99, 0x0c, 0x14, 0x33, 0x8a, 0x6a, 0x9e, - 0xee, 0x99, 0x8d, 0x39, 0xdb, 0xf5, 0xa4, 0x45, 0xfe, 0x6f, 0xc5, 0x8c, 0xa2, 0x34, 0x22, 0x66, - 0x14, 0xa5, 0xc1, 0x93, 0x4c, 0x85, 0x34, 0x7e, 0xad, 0x27, 0xd3, 0xd0, 0xd2, 0x4a, 0x83, 0x27, - 0x99, 0x0a, 0x21, 0xfc, 0x67, 0x3d, 0x99, 0x86, 0x9e, 0xf2, 0x69, 0x70, 0x66, 0x99, 0x4e, 0x3b, - 0xf6, 0x86, 0x75, 0x97, 0x6e, 0xd0, 0x96, 0xf8, 0xf4, 0x5f, 0x8f, 0x59, 0xa6, 0x71, 0x02, 0xbc, - 0x45, 0x89, 0xc1, 0xa2, 0x8c, 0xc4, 0xe7, 0xfe, 0x46, 0x26, 0xa3, 0xf0, 0x98, 0x28, 0x0e, 0x8b, - 0x32, 0x12, 0x9f, 0xf8, 0x9b, 0x99, 0x8c, 0xc2, 0x63, 0xa2, 0x38, 0x0c, 0x57, 0xae, 0xa0, 0xd3, - 0xcb, 0x4d, 0x6a, 0x79, 0xcb, 0x2d, 0xdd, 0xd7, 0xfa, 0x6f, 0xc5, 0x57, 0xae, 0x2c, 0x4a, 0x5c, - 0xb9, 0xb2, 0x90, 0x19, 0x75, 0x88, 0xcf, 0xff, 0xad, 0x9d, 0xeb, 0x90, 0x56, 0xc7, 0x2c, 0x64, - 0x46, 0x1d, 0x42, 0x32, 0xbf, 0xbd, 0x73, 0x1d, 0x81, 0x88, 0xb2, 0xd9, 0x4c, 0x0d, 0x40, 0x3f, - 0x9e, 0xb9, 0xaa, 0x3f, 0x97, 0x83, 0x91, 0x9a, 0xe7, 0x50, 0xbd, 0x2d, 0x22, 0xc3, 0x5d, 0x82, - 0x41, 0xee, 0xbc, 0xec, 0xbf, 0xb4, 0xd6, 0x82, 0xdf, 0xe4, 0x2a, 0x8c, 0xcd, 0xeb, 0xae, 0x87, - 0x25, 0xab, 0x96, 0x41, 0x9f, 0xe0, 0xc3, 0xbd, 0x82, 0x16, 0x83, 0x92, 0x79, 0x4e, 0xc7, 0xcb, - 0x61, 0x30, 0xd0, 0xc2, 0x8e, 0x01, 0xd1, 0x06, 0xbf, 0xb3, 0x35, 0xd9, 0x87, 0xf1, 0xcf, 0x62, - 0x65, 0xd5, 0xdf, 0xcd, 0x41, 0xc2, 0xad, 0x7a, 0xff, 0x11, 0x10, 0x96, 0xe0, 0x4c, 0x2c, 0x00, - 0xad, 0x78, 0x7d, 0xb8, 0xcb, 0xf8, 0xb4, 0xf1, 0xd2, 0xe4, 0x53, 0xc1, 0xab, 0xb7, 0xfb, 0xda, - 0xbc, 0x08, 0x76, 0x87, 0x69, 0x1a, 0xba, 0x4e, 0x4b, 0x93, 0x50, 0x22, 0x98, 0xd1, 0xf7, 0xc6, - 0xc3, 0xe8, 0x9a, 0xe4, 0xaa, 0x08, 0xc7, 0x90, 0x0b, 0x43, 0xe4, 0xc5, 0xd2, 0xba, 0xf3, 0xf0, - 0x0b, 0x9f, 0x83, 0x91, 0x6a, 0xbb, 0x43, 0x1d, 0xd7, 0xb6, 0x74, 0xcf, 0x76, 0xc4, 0x6b, 0x76, - 0x0c, 0x9f, 0x66, 0x4a, 0x70, 0x39, 0xa4, 0x97, 0x4c, 0x4f, 0xae, 0xfb, 0x99, 0xe6, 0x0a, 0x18, - 0xd7, 0x14, 0x9f, 0xa4, 0xc6, 0x53, 0x85, 0x73, 0x0a, 0x46, 0x7a, 0xdf, 0xd5, 0xf1, 0x7d, 0x64, - 0x40, 0xda, 0x65, 0x00, 0x99, 0x14, 0x29, 0xc8, 0x8b, 0x50, 0xc2, 0xfb, 0x24, 0x17, 0x33, 0x48, - 0x8a, 0xc0, 0x7d, 0x2d, 0x84, 0xc8, 0x61, 0xd2, 0x38, 0x0d, 0xb9, 0x07, 0xe3, 0xe1, 0x65, 0xf9, - 0x1d, 0xc7, 0xee, 0x76, 0xfc, 0x9c, 0x31, 0x98, 0x62, 0xfd, 0x51, 0x80, 0xab, 0x37, 0x11, 0x29, - 0xb1, 0x48, 0x14, 0x24, 0x73, 0x70, 0x26, 0x84, 0x31, 0x11, 0xf9, 0xb9, 0xaa, 0x30, 0x4f, 0xa8, - 0xc4, 0x8b, 0x89, 0x33, 0x92, 0x27, 0x34, 0x56, 0x8c, 0x54, 0x61, 0xc0, 0x8f, 0xda, 0x37, 0xb8, - 0xa3, 0x92, 0x9e, 0x15, 0x51, 0xfb, 0x06, 0xe4, 0x78, 0x7d, 0x7e, 0x79, 0x32, 0x0b, 0x63, 0x9a, - 0xdd, 0xf5, 0xe8, 0x8a, 0x2d, 0x76, 0x99, 0x22, 0x3a, 0x24, 0xb6, 0xc9, 0x61, 0x98, 0xba, 0x67, - 0xfb, 0x19, 0xea, 0xe5, 0x4c, 0xe9, 0xd1, 0x52, 0x64, 0x11, 0x26, 0x12, 0x6e, 0x05, 0x72, 0xde, - 0x78, 0xe9, 0xf3, 0x92, 0xcc, 0x92, 0x45, 0xc9, 0x8f, 0xe5, 0xa0, 0xb4, 0xe2, 0xe8, 0xa6, 0xe7, - 0x8a, 0xa7, 0x95, 0xe7, 0x6f, 0x6c, 0x38, 0x7a, 0x87, 0xe9, 0xc7, 0x0d, 0x0c, 0x5c, 0xfb, 0x40, - 0x6f, 0x75, 0xa9, 0x3b, 0xf5, 0x90, 0x7d, 0xdd, 0xff, 0xb0, 0x35, 0xf9, 0x56, 0x13, 0x0f, 0x2f, - 0x6f, 0x34, 0xec, 0xf6, 0xcd, 0xa6, 0xa3, 0x3f, 0x36, 0x3d, 0x34, 0x11, 0xf5, 0xd6, 0x4d, 0x8f, - 0xb6, 0xf0, 0x8c, 0xf4, 0xa6, 0xde, 0x31, 0x6f, 0x62, 0x80, 0xf4, 0x9b, 0x01, 0x27, 0x5e, 0x03, - 0x53, 0x01, 0x0f, 0xff, 0x92, 0x55, 0x80, 0xe3, 0xc8, 0x22, 0x80, 0xf8, 0xd4, 0x72, 0xa7, 0x23, - 0xde, 0x69, 0x4a, 0x27, 0x8b, 0x3e, 0x86, 0x2b, 0x76, 0x20, 0x30, 0xbd, 0x23, 0x05, 0x05, 0xd6, - 0x24, 0x0e, 0x4c, 0x0b, 0x56, 0x44, 0x8b, 0x7c, 0x31, 0x8d, 0x86, 0x12, 0xf7, 0x1b, 0x9b, 0x22, - 0xa4, 0x78, 0x31, 0xb2, 0x0a, 0x67, 0x04, 0xdf, 0x20, 0x85, 0xc8, 0x58, 0x74, 0x56, 0x88, 0xa1, - 0xb9, 0xd2, 0x06, 0x6d, 0x34, 0x04, 0x58, 0xae, 0x23, 0x56, 0x82, 0x4c, 0x85, 0x29, 0x8f, 0x17, - 0xf5, 0x36, 0x75, 0x95, 0x33, 0xa8, 0xb1, 0x97, 0xb7, 0xb7, 0x26, 0x15, 0xbf, 0x3c, 0x06, 0xb0, - 0x4c, 0x4d, 0xe0, 0x8f, 0x45, 0x64, 0x1e, 0x5c, 0xeb, 0xc7, 0x53, 0x78, 0xc4, 0x75, 0x3e, 0x5a, - 0x84, 0x4c, 0xc3, 0x68, 0xf0, 0x4c, 0xe4, 0xfe, 0xfd, 0x6a, 0x05, 0x1f, 0x82, 0x8a, 0x18, 0xa6, - 0xb1, 0x24, 0x1f, 0x32, 0x93, 0x48, 0x19, 0x29, 0xb6, 0x06, 0x7f, 0x19, 0x1a, 0x8b, 0xad, 0xd1, - 0x49, 0x89, 0xad, 0xb1, 0x4c, 0xde, 0x81, 0xe1, 0xf2, 0xc3, 0x9a, 0x88, 0x19, 0xe2, 0x2a, 0x67, - 0xc3, 0x8c, 0x51, 0xfa, 0x86, 0x5b, 0xf7, 0xe3, 0x8b, 0xc8, 0x4d, 0x97, 0xe9, 0xc9, 0x0c, 0x8c, - 0x45, 0x3c, 0xcd, 0x5c, 0xe5, 0x1c, 0x72, 0xc0, 0x96, 0xeb, 0x88, 0xa9, 0x3b, 0x02, 0x25, 0x0f, - 0xaf, 0x68, 0x21, 0xa6, 0x35, 0x15, 0xd3, 0xc5, 0xec, 0x3b, 0x1a, 0xc5, 0xf0, 0x24, 0xf8, 0xac, - 0x74, 0x90, 0x6b, 0x8d, 0x21, 0x50, 0x75, 0x87, 0xe3, 0xe4, 0x1e, 0x8d, 0x15, 0x23, 0x1f, 0x00, - 0xc1, 0x7c, 0x3d, 0xd4, 0xf0, 0x2f, 0x1e, 0xab, 0x15, 0x57, 0xb9, 0x80, 0x01, 0xbc, 0x49, 0x3c, - 0x1c, 0x42, 0xb5, 0x32, 0x75, 0x55, 0x4c, 0x1f, 0x57, 0x74, 0x5e, 0xaa, 0xee, 0x87, 0x42, 0xa8, - 0x9b, 0x91, 0x64, 0xc6, 0x29, 0x5c, 0xc9, 0x06, 0x5c, 0x5c, 0x76, 0xe8, 0x63, 0xd3, 0xee, 0xba, - 0xfe, 0xf2, 0xe1, 0xcf, 0x5b, 0x17, 0x77, 0x9c, 0xb7, 0x9e, 0x13, 0x15, 0x9f, 0xef, 0x38, 0xf4, - 0x71, 0xdd, 0x0f, 0xdb, 0x1c, 0x89, 0x3a, 0x9a, 0xc5, 0x1d, 0x53, 0x32, 0x7f, 0xd8, 0x75, 0xa8, - 0x80, 0x9b, 0xd4, 0x55, 0x94, 0x70, 0xaa, 0xe5, 0x91, 0x66, 0xcc, 0x00, 0x17, 0x49, 0xc9, 0x1c, - 0x2d, 0x46, 0x34, 0x20, 0x77, 0xa6, 0xfd, 0x4b, 0xe8, 0x72, 0x83, 0x27, 0xae, 0x55, 0x9e, 0x42, - 0x66, 0x2a, 0x13, 0x4b, 0xb3, 0x11, 0x84, 0x70, 0xaf, 0xeb, 0x02, 0x2f, 0x8b, 0x25, 0x59, 0x9a, - 0xcc, 0xc3, 0xf8, 0xb2, 0x83, 0x47, 0x62, 0xf7, 0xe8, 0xe6, 0xb2, 0xdd, 0x32, 0x1b, 0x9b, 0xf8, - 0xba, 0x55, 0x4c, 0x95, 0x1d, 0x8e, 0xab, 0x3f, 0xa2, 0x9b, 0xf5, 0x0e, 0x62, 0xe5, 0x65, 0x25, - 0x5e, 0x52, 0x0e, 0xa9, 0xfc, 0xf4, 0xee, 0x42, 0x2a, 0x53, 0x18, 0x17, 0x57, 0xd8, 0x4f, 0x3c, - 0x6a, 0xb1, 0xa5, 0xde, 0x15, 0x2f, 0x59, 0x95, 0xd8, 0x95, 0x77, 0x80, 0xe7, 0x53, 0x87, 0x18, - 0x65, 0x34, 0x00, 0xcb, 0x0d, 0x8b, 0x17, 0x49, 0xc6, 0x1d, 0x7e, 0x66, 0x1f, 0x71, 0x87, 0xff, - 0x56, 0x41, 0x9e, 0x7f, 0xc9, 0x65, 0x28, 0x4a, 0x69, 0x81, 0x30, 0xa8, 0x2a, 0x86, 0x50, 0x2f, - 0x8a, 0x58, 0xd1, 0x43, 0xc2, 0x76, 0x09, 0xa2, 0xe7, 0x60, 0x1e, 0xc8, 0x30, 0xd0, 0xa6, 0x16, - 0x12, 0x60, 0x0e, 0xbe, 0xee, 0x6a, 0xcb, 0x6c, 0x60, 0x60, 0xfd, 0x82, 0x14, 0x2e, 0x03, 0xa1, - 0x3c, 0xae, 0xbe, 0x44, 0x42, 0x6e, 0xc1, 0xb0, 0x7f, 0x14, 0x1b, 0x06, 0x15, 0xc6, 0x78, 0xeb, - 0x62, 0xb6, 0x16, 0xe1, 0xdc, 0x25, 0x22, 0xf2, 0x26, 0x40, 0x38, 0x1d, 0x08, 0x4b, 0x0b, 0x97, - 0x0a, 0x79, 0xf6, 0x90, 0x97, 0x8a, 0x90, 0x9a, 0x4d, 0x9c, 0xb2, 0x3a, 0xfa, 0x59, 0x47, 0x71, - 0xe2, 0x8c, 0xe8, 0xb0, 0xac, 0x20, 0xd1, 0x22, 0x64, 0x09, 0x26, 0x12, 0x1a, 0x28, 0x42, 0x10, - 0x63, 0xe6, 0xf9, 0x14, 0xf5, 0x95, 0x17, 0xe6, 0x44, 0x59, 0xf2, 0x3c, 0x14, 0xee, 0x6b, 0x55, - 0x11, 0x06, 0x95, 0x47, 0xd0, 0x8d, 0xc4, 0x48, 0x62, 0x58, 0xf5, 0x8f, 0xe5, 0x13, 0x6b, 0x13, - 0x93, 0x9e, 0x60, 0x25, 0xf5, 0x20, 0x4a, 0xcf, 0xaf, 0x9f, 0x4b, 0x4f, 0x22, 0x22, 0xd7, 0x60, - 0x70, 0x99, 0xcd, 0x0c, 0x0d, 0xbb, 0x25, 0xfa, 0x13, 0x03, 0x5a, 0x75, 0x04, 0x4c, 0x0b, 0xb0, - 0xe4, 0x96, 0x94, 0x2c, 0x57, 0x8a, 0x2c, 0xee, 0x27, 0xcb, 0x8d, 0x87, 0xd8, 0xc6, 0xb4, 0xb9, - 0xb7, 0x62, 0xc9, 0xb7, 0x44, 0x99, 0x94, 0x75, 0x31, 0x4c, 0xb6, 0x15, 0x58, 0xa5, 0xfd, 0x3b, - 0x59, 0xa5, 0xea, 0xdf, 0xce, 0x25, 0xc7, 0x19, 0xb9, 0x9d, 0x0c, 0xf2, 0x8b, 0x8b, 0x50, 0x00, - 0x94, 0x6b, 0x0d, 0xc2, 0xfd, 0x46, 0xc2, 0xf5, 0xe6, 0xf7, 0x1d, 0xae, 0xb7, 0xb0, 0xc7, 0x70, - 0xbd, 0xea, 0xff, 0x5b, 0xec, 0xe9, 0x72, 0x7d, 0x24, 0x61, 0xdd, 0xde, 0x60, 0x3b, 0x2b, 0x56, - 0x7b, 0xd9, 0x4d, 0xec, 0x0f, 0xb8, 0x47, 0x69, 0x5d, 0xe7, 0x43, 0xcb, 0xd5, 0xa2, 0x94, 0xe4, - 0x5d, 0x18, 0xf1, 0x3f, 0x00, 0xc3, 0x40, 0x4b, 0xe1, 0x8b, 0x83, 0x55, 0x2d, 0x16, 0x30, 0x39, - 0x52, 0x80, 0xbc, 0x0a, 0x43, 0x68, 0xd3, 0x74, 0xf4, 0x86, 0x1f, 0x23, 0x9c, 0x07, 0x15, 0xf7, - 0x81, 0x72, 0xe8, 0xb2, 0x80, 0x92, 0x7c, 0x09, 0x4a, 0x22, 0x51, 0x06, 0xcf, 0x23, 0x7f, 0x73, - 0x17, 0x3e, 0xea, 0x37, 0xe4, 0x24, 0x19, 0x7c, 0x97, 0x82, 0x80, 0xc8, 0x2e, 0x85, 0xe7, 0xc7, - 0x58, 0x81, 0xb3, 0xcb, 0x0e, 0x35, 0xf0, 0x35, 0xc4, 0xcc, 0x93, 0x8e, 0x23, 0x52, 0x98, 0xf0, - 0x51, 0x8e, 0x8b, 0x54, 0xc7, 0x47, 0xb3, 0xe5, 0x53, 0xe0, 0xe5, 0x40, 0xc5, 0x29, 0xc5, 0x99, - 0xe5, 0xc2, 0x5b, 0x72, 0x8f, 0x6e, 0x6e, 0xd8, 0x8e, 0xc1, 0xb3, 0x7c, 0x88, 0xf9, 0x5b, 0x08, - 0xfa, 0x91, 0x40, 0xc9, 0x96, 0x4b, 0xb4, 0xd0, 0xa5, 0x37, 0x60, 0x78, 0xbf, 0x89, 0x26, 0x7e, - 0x35, 0x9f, 0xf1, 0x78, 0xe9, 0xe4, 0xe6, 0xfa, 0x0b, 0x12, 0x50, 0xf7, 0x67, 0x24, 0xa0, 0xfe, - 0xc3, 0x7c, 0xc6, 0xcb, 0xac, 0x13, 0x9d, 0x28, 0x36, 0x10, 0x46, 0x34, 0x51, 0x6c, 0x98, 0xa3, - 0xd7, 0x34, 0x34, 0x99, 0x28, 0x96, 0x52, 0xba, 0xb4, 0x63, 0x4a, 0xe9, 0x5f, 0x28, 0xf4, 0x7a, - 0xb9, 0x76, 0x2a, 0xfb, 0xbd, 0xc8, 0xfe, 0x16, 0x0c, 0x07, 0x92, 0xad, 0x56, 0xd0, 0xe8, 0x19, - 0x0d, 0xd2, 0xda, 0x70, 0x30, 0x96, 0x91, 0x88, 0xc8, 0x75, 0xde, 0xd6, 0x9a, 0xf9, 0x21, 0x4f, - 0xb0, 0x30, 0x2a, 0x42, 0xe7, 0xeb, 0x9e, 0x5e, 0x77, 0xcd, 0x0f, 0xa9, 0x16, 0xa0, 0xd5, 0xbf, - 0x9b, 0x4f, 0x7d, 0xfe, 0x77, 0xda, 0x47, 0x7b, 0xe8, 0xa3, 0x14, 0x21, 0xf2, 0x87, 0x8b, 0xa7, - 0x42, 0xdc, 0x83, 0x10, 0xff, 0x20, 0x9f, 0xfa, 0xcc, 0xf3, 0x54, 0x88, 0x7b, 0x99, 0x2d, 0x5e, - 0x84, 0x21, 0xcd, 0xde, 0x70, 0xa7, 0x71, 0x63, 0xc3, 0xe7, 0x0a, 0x9c, 0xa8, 0x1d, 0x7b, 0xc3, - 0xad, 0xe3, 0x96, 0x45, 0x0b, 0x09, 0xd4, 0xef, 0xe5, 0x7b, 0x3c, 0x84, 0x3d, 0x15, 0xfc, 0x47, - 0xb9, 0x44, 0xfe, 0x46, 0x3e, 0xf2, 0xd0, 0xf6, 0xe4, 0x0a, 0xfb, 0x26, 0x40, 0xad, 0xb1, 0x4e, - 0xdb, 0xba, 0x94, 0xa4, 0x0a, 0xcf, 0x1d, 0x5c, 0x84, 0x8a, 0xe4, 0xc6, 0x21, 0x89, 0xfa, 0xad, - 0x7c, 0xec, 0xa5, 0xf1, 0xa9, 0xec, 0x76, 0x2d, 0xbb, 0x40, 0xeb, 0xc4, 0xe3, 0xe9, 0x53, 0xc9, - 0xed, 0x56, 0x72, 0x3f, 0x9e, 0x8f, 0xbd, 0x33, 0x3f, 0xb1, 0xb2, 0x63, 0x03, 0x30, 0xf9, 0xfe, - 0xfd, 0xc4, 0x6a, 0xd2, 0x8b, 0x30, 0x24, 0xe4, 0x10, 0x2c, 0x15, 0x7c, 0xde, 0xe7, 0x40, 0x3c, - 0x65, 0x0d, 0x08, 0xd4, 0x3f, 0x9e, 0x87, 0xe8, 0xfb, 0xff, 0x13, 0xaa, 0x43, 0xbf, 0x91, 0x8f, - 0x46, 0x3e, 0x38, 0xb9, 0xfa, 0x73, 0x03, 0xa0, 0xd6, 0x5d, 0x6d, 0x88, 0xc0, 0xb9, 0xfd, 0xd2, - 0x31, 0x7d, 0x00, 0xd5, 0x24, 0x0a, 0xf5, 0xff, 0xcb, 0xa7, 0x86, 0x63, 0x38, 0xb9, 0x02, 0x7c, - 0x05, 0x4f, 0xc5, 0x1b, 0x56, 0x38, 0x91, 0xe3, 0x21, 0x24, 0x1b, 0x7f, 0x89, 0xcc, 0x86, 0x3e, - 0x21, 0xf9, 0x6c, 0x8a, 0xb9, 0x86, 0x79, 0x17, 0x42, 0x73, 0x4d, 0xbe, 0x86, 0x90, 0x0c, 0xb7, - 0xbf, 0x9f, 0xdf, 0x29, 0x7a, 0xc5, 0x49, 0x5e, 0x55, 0x07, 0x96, 0xf5, 0x4d, 0x8c, 0xb2, 0xc8, - 0x7a, 0x62, 0x84, 0xe7, 0xdd, 0xeb, 0x70, 0x90, 0x7c, 0xf7, 0x26, 0xa8, 0xd4, 0x7f, 0xd1, 0x9f, - 0x1e, 0x3a, 0xe1, 0xe4, 0x8a, 0xf0, 0x32, 0x14, 0x97, 0x75, 0x6f, 0x5d, 0x68, 0x32, 0x5e, 0xe9, - 0x75, 0x74, 0x6f, 0x5d, 0x43, 0x28, 0xb9, 0x0e, 0x83, 0x9a, 0xbe, 0xc1, 0xcf, 0x3c, 0x4b, 0x61, - 0x4e, 0x44, 0x47, 0xdf, 0xa8, 0xf3, 0x73, 0xcf, 0x00, 0x4d, 0xd4, 0x20, 0x27, 0x27, 0x3f, 0xf9, - 0xc6, 0x84, 0x70, 0x3c, 0x27, 0x67, 0x90, 0x89, 0xf3, 0x32, 0x14, 0xa7, 0x6c, 0x63, 0x13, 0xaf, - 0xaf, 0x46, 0x78, 0x65, 0xab, 0xb6, 0xb1, 0xa9, 0x21, 0x94, 0xfc, 0x44, 0x0e, 0x06, 0xe6, 0xa8, - 0x6e, 0xb0, 0x11, 0x32, 0xd4, 0xcb, 0xeb, 0xe4, 0x0b, 0x87, 0xe3, 0x75, 0x32, 0xb1, 0xce, 0x2b, - 0x93, 0x15, 0x45, 0xd4, 0x4f, 0xee, 0xc0, 0xe0, 0xb4, 0xee, 0xd1, 0xa6, 0xed, 0x6c, 0xa2, 0x1f, - 0xcd, 0x58, 0xe8, 0x7e, 0x1f, 0xd1, 0x1f, 0x9f, 0x88, 0xdf, 0x8c, 0x35, 0xc4, 0x2f, 0x2d, 0x28, - 0xcc, 0xc4, 0xc2, 0x53, 0xfe, 0x8b, 0xfc, 0xd3, 0x28, 0x16, 0x0f, 0x21, 0x9a, 0xc0, 0x84, 0xc7, - 0xca, 0x23, 0xe9, 0xc7, 0xca, 0x68, 0x3d, 0xa2, 0xaf, 0x1d, 0x66, 0xc2, 0x1c, 0xc5, 0x45, 0x9f, - 0x5b, 0x8f, 0x08, 0xc5, 0x44, 0x98, 0x9a, 0x44, 0xa2, 0x7e, 0xb7, 0x1f, 0x52, 0x1f, 0x5a, 0x9f, - 0x2a, 0xf9, 0xa9, 0x92, 0x87, 0x4a, 0x5e, 0x49, 0x28, 0xf9, 0xa5, 0xe4, 0xd3, 0xfd, 0x8f, 0xa9, - 0x86, 0xff, 0x74, 0x31, 0x11, 0xf8, 0xe3, 0x64, 0xef, 0x2e, 0x43, 0xe9, 0xf5, 0xef, 0x28, 0xbd, - 0x60, 0x40, 0x94, 0x76, 0x1c, 0x10, 0x03, 0xbb, 0x1d, 0x10, 0x83, 0x99, 0x03, 0x22, 0x54, 0x90, - 0xa1, 0x4c, 0x05, 0xa9, 0x8a, 0x41, 0x03, 0xbd, 0xf3, 0x8f, 0x5c, 0xde, 0xde, 0x9a, 0x1c, 0x63, - 0xa3, 0x29, 0x35, 0xf1, 0x08, 0xb2, 0x50, 0x7f, 0xb7, 0xd8, 0x23, 0x5a, 0xcf, 0x91, 0xe8, 0xc8, - 0x2b, 0x50, 0x28, 0x77, 0x3a, 0x42, 0x3f, 0xce, 0x4a, 0x81, 0x82, 0x32, 0x4a, 0x31, 0x6a, 0xf2, - 0x26, 0x14, 0xca, 0x0f, 0x6b, 0xf1, 0x9c, 0x23, 0xe5, 0x87, 0x35, 0xf1, 0x25, 0x99, 0x65, 0x1f, - 0xd6, 0xc8, 0xdb, 0x61, 0xf0, 0xcf, 0xf5, 0xae, 0xf5, 0x48, 0x6c, 0x14, 0x85, 0xbb, 0xad, 0xef, - 0x8e, 0xd3, 0x60, 0x28, 0xb6, 0x5d, 0x8c, 0xd1, 0xc6, 0xb4, 0xa9, 0xb4, 0x7b, 0x6d, 0x1a, 0xd8, - 0x51, 0x9b, 0x06, 0x77, 0xab, 0x4d, 0x43, 0xbb, 0xd0, 0x26, 0xd8, 0x51, 0x9b, 0x86, 0x0f, 0xae, - 0x4d, 0x1d, 0xb8, 0x94, 0x8c, 0xb0, 0x16, 0x68, 0x84, 0x06, 0x24, 0x89, 0x15, 0x8e, 0x25, 0x78, - 0xf5, 0xdf, 0xe5, 0xd8, 0xfa, 0x06, 0xa2, 0xeb, 0x2e, 0xc3, 0xcb, 0xfe, 0x69, 0xc9, 0xd2, 0xea, - 0xaf, 0xe6, 0xb3, 0x03, 0xc3, 0x1d, 0xcf, 0x29, 0xee, 0x87, 0x52, 0xa5, 0x54, 0x8c, 0x3e, 0xd4, - 0xcf, 0x96, 0x72, 0x8c, 0x6d, 0x9a, 0xcc, 0xbe, 0x9d, 0xcb, 0x8a, 0x56, 0x77, 0x20, 0x89, 0x7d, - 0x32, 0xe9, 0xd1, 0x86, 0x7e, 0xfa, 0x6e, 0xd4, 0x95, 0x6d, 0x16, 0x46, 0x64, 0x21, 0x0a, 0x29, - 0xed, 0x46, 0xc0, 0x91, 0x72, 0xea, 0xdf, 0xce, 0xc1, 0xd9, 0x7b, 0xdd, 0x55, 0x2a, 0x3c, 0xd8, - 0x82, 0x66, 0x7c, 0x00, 0xc0, 0xc0, 0xc2, 0x89, 0x25, 0x87, 0x4e, 0x2c, 0x9f, 0x96, 0x23, 0xcd, - 0xc5, 0x0a, 0xdc, 0x08, 0xa9, 0xb9, 0x03, 0xcb, 0x33, 0xbe, 0x33, 0xe7, 0xa3, 0xee, 0x2a, 0xad, - 0x27, 0x3c, 0x59, 0x24, 0xee, 0x97, 0xde, 0xe1, 0x6e, 0xf2, 0xfb, 0x75, 0x1a, 0xf9, 0xe5, 0x7c, - 0x66, 0x70, 0xbf, 0x63, 0x9b, 0x85, 0xf2, 0x07, 0x52, 0x7b, 0x25, 0x9e, 0x8d, 0x32, 0x85, 0x24, - 0xc6, 0x31, 0x8d, 0x4b, 0xba, 0xc0, 0x8e, 0x79, 0x6e, 0xd4, 0x8f, 0x54, 0x60, 0xff, 0x28, 0x97, - 0x19, 0x84, 0xf1, 0xb8, 0x0a, 0x4c, 0xfd, 0x5f, 0x0b, 0x7e, 0xec, 0xc7, 0x03, 0x7d, 0xc2, 0x8b, - 0x30, 0x24, 0x9e, 0xc0, 0x47, 0x1d, 0x70, 0xc5, 0x51, 0x1e, 0x1e, 0x0d, 0x07, 0x04, 0x6c, 0x99, - 0x97, 0xbc, 0x83, 0x25, 0x07, 0x5c, 0xc9, 0x33, 0x58, 0x93, 0x48, 0xd8, 0x42, 0x3e, 0xf3, 0xc4, - 0xf4, 0xd0, 0x2a, 0x60, 0x7d, 0x59, 0xe0, 0x0b, 0x39, 0x7d, 0x62, 0x7a, 0xdc, 0x26, 0x08, 0xd0, - 0x6c, 0x91, 0xae, 0x85, 0x99, 0xdf, 0xc5, 0x22, 0xed, 0x8a, 0x04, 0xf8, 0xe2, 0xd9, 0xd8, 0x8b, - 0x30, 0x24, 0xbc, 0x5a, 0x85, 0x9b, 0x89, 0x68, 0xad, 0xf0, 0x83, 0xc5, 0xd6, 0x06, 0x04, 0x8c, - 0xa3, 0x46, 0x9b, 0xa1, 0x63, 0x1d, 0x72, 0x74, 0x10, 0xa2, 0x09, 0x0c, 0xb9, 0x05, 0x63, 0x35, - 0x4f, 0xb7, 0x0c, 0xdd, 0x31, 0x96, 0xba, 0x5e, 0xa7, 0xeb, 0xc9, 0x46, 0xa9, 0xeb, 0x19, 0x76, - 0xd7, 0xd3, 0x62, 0x14, 0xe4, 0x33, 0x30, 0xea, 0x43, 0x66, 0x1c, 0xc7, 0x76, 0x64, 0xcb, 0xc3, - 0xf5, 0x0c, 0xea, 0x38, 0x5a, 0x94, 0x80, 0x7c, 0x16, 0x46, 0xab, 0xd6, 0x63, 0xbb, 0xc1, 0x9f, - 0x81, 0x6b, 0xf3, 0xc2, 0x0e, 0xc1, 0xa7, 0x58, 0x66, 0x80, 0xa8, 0x77, 0x9d, 0x96, 0x16, 0x25, - 0x54, 0xb7, 0xf3, 0xc9, 0x10, 0x99, 0x27, 0x77, 0xd3, 0x72, 0x3d, 0xea, 0x4c, 0x87, 0x1e, 0xa4, - 0x68, 0x10, 0xca, 0xbe, 0xbc, 0xdc, 0x2e, 0xbc, 0x05, 0x83, 0xf7, 0xe8, 0x26, 0xf7, 0xfb, 0x2c, - 0x85, 0xae, 0xc2, 0x8f, 0x04, 0x4c, 0x3e, 0x71, 0xf5, 0xe9, 0xd4, 0xdf, 0xc9, 0x27, 0x83, 0x7f, - 0x9e, 0x5c, 0x61, 0x7f, 0x06, 0x06, 0x50, 0x94, 0x55, 0xff, 0xc8, 0x1f, 0x05, 0x88, 0xe2, 0x8e, - 0x7a, 0x20, 0xfb, 0x64, 0xea, 0xcf, 0x97, 0xe2, 0x11, 0x61, 0x4f, 0xae, 0xf4, 0xde, 0x82, 0xe1, - 0x69, 0xdb, 0x72, 0x4d, 0xd7, 0xa3, 0x56, 0xc3, 0x57, 0xd8, 0xa7, 0x98, 0x41, 0xd5, 0x08, 0xc1, - 0xf2, 0x1b, 0x24, 0x89, 0x7a, 0x3f, 0xca, 0x4b, 0x5e, 0x83, 0x21, 0x14, 0x39, 0xfa, 0x49, 0xf3, - 0x09, 0x0f, 0x6f, 0x0b, 0x56, 0x19, 0x30, 0xee, 0x24, 0x1d, 0x92, 0x92, 0xfb, 0x30, 0x38, 0xbd, - 0x6e, 0xb6, 0x0c, 0x87, 0x5a, 0xe8, 0x2f, 0x2c, 0x3d, 0xfb, 0x8d, 0xf6, 0xe5, 0x0d, 0xfc, 0x17, - 0x69, 0x79, 0x73, 0x1a, 0xa2, 0x58, 0xe4, 0x15, 0x96, 0x80, 0x5d, 0xfa, 0xa9, 0x3c, 0x40, 0x58, - 0x80, 0x3c, 0x0b, 0xf9, 0x20, 0xa9, 0x32, 0xba, 0xa9, 0x44, 0x34, 0x28, 0x8f, 0x4b, 0x85, 0x18, - 0xdb, 0xf9, 0x1d, 0xc7, 0xf6, 0x7d, 0x28, 0xf1, 0x13, 0x2f, 0xf4, 0x24, 0x97, 0x82, 0x54, 0x66, - 0x36, 0xf8, 0x06, 0xd2, 0xf3, 0xcd, 0x2c, 0x5a, 0x9e, 0x11, 0xaf, 0x6c, 0xce, 0xec, 0x52, 0x03, - 0xfa, 0xf1, 0x2f, 0x72, 0x15, 0x8a, 0x2b, 0x7e, 0x42, 0xd6, 0x51, 0x3e, 0x4b, 0xc7, 0xe4, 0x87, - 0x78, 0xd6, 0x4d, 0xd3, 0xb6, 0xe5, 0xb1, 0xaa, 0xb1, 0xd5, 0x23, 0x42, 0x2e, 0x02, 0x16, 0x91, - 0x8b, 0x80, 0xa9, 0xff, 0x4d, 0x3e, 0x25, 0x56, 0xf1, 0xc9, 0x1d, 0x26, 0x6f, 0x00, 0xe0, 0x93, - 0x6e, 0x26, 0x4f, 0xff, 0x89, 0x06, 0x8e, 0x12, 0x64, 0x84, 0x6a, 0x1b, 0xd9, 0x76, 0x84, 0xc4, - 0xea, 0xdf, 0xcb, 0x25, 0x02, 0xdc, 0x1e, 0x48, 0x8e, 0xb2, 0x55, 0x96, 0xdf, 0xa7, 0x19, 0xeb, - 0xf7, 0x45, 0x61, 0x6f, 0x7d, 0x11, 0xfd, 0x96, 0x43, 0xb0, 0x4c, 0x8f, 0xf2, 0x5b, 0xbe, 0x9b, - 0x4f, 0x0b, 0xf7, 0x7b, 0x3c, 0x55, 0xfc, 0x76, 0x60, 0x94, 0x16, 0x63, 0x01, 0xd6, 0x11, 0x1a, - 0x4f, 0x1a, 0x2d, 0xcc, 0xd4, 0x2f, 0xc3, 0x99, 0x58, 0x10, 0x5c, 0x91, 0xbf, 0xf7, 0x6a, 0xef, - 0x68, 0xba, 0xd9, 0xc1, 0x00, 0x22, 0x64, 0xea, 0xff, 0x9f, 0xeb, 0x1d, 0x02, 0xf9, 0xc8, 0x55, - 0x27, 0x45, 0x00, 0x85, 0x3f, 0x1a, 0x01, 0x1c, 0xc2, 0x36, 0xf8, 0x78, 0x0b, 0xe0, 0x63, 0x32, - 0x79, 0x7c, 0xd4, 0x02, 0xf8, 0xf9, 0xdc, 0x8e, 0x11, 0xac, 0x8f, 0x5a, 0x06, 0xea, 0xff, 0x94, - 0x4b, 0x8d, 0x34, 0x7d, 0xa0, 0x76, 0xbd, 0x0d, 0x25, 0xee, 0x56, 0x23, 0x5a, 0x25, 0xe5, 0xe6, - 0x62, 0xd0, 0xac, 0x6c, 0xf6, 0x1c, 0x4b, 0xe6, 0x61, 0x80, 0xb7, 0xc1, 0x10, 0xbd, 0xf1, 0x89, - 0x1e, 0xe1, 0xae, 0x8d, 0xac, 0xc9, 0x51, 0xa0, 0xd5, 0xbf, 0x93, 0x4b, 0x04, 0xbe, 0x3e, 0xc2, - 0x6f, 0x0b, 0xa7, 0xea, 0xc2, 0xee, 0xa7, 0x6a, 0xf5, 0x9f, 0xe7, 0xd3, 0xe3, 0x6e, 0x1f, 0xe1, - 0x87, 0x1c, 0xc6, 0x71, 0xda, 0xfe, 0xd6, 0xad, 0x15, 0x18, 0x8b, 0xca, 0x42, 0x2c, 0x5b, 0x57, - 0xd2, 0xa3, 0x8f, 0x67, 0xb4, 0x22, 0xc6, 0x43, 0xfd, 0x4e, 0x2e, 0x19, 0x32, 0xfc, 0xc8, 0xe7, - 0xa7, 0xfd, 0x69, 0x4b, 0xf4, 0x53, 0x3e, 0x26, 0x6b, 0xcd, 0x61, 0x7c, 0xca, 0xc7, 0x64, 0xd5, - 0xd8, 0xdf, 0xa7, 0xfc, 0x62, 0x3e, 0x2b, 0xe2, 0xfa, 0x91, 0x7f, 0xd0, 0x17, 0x65, 0x21, 0xf3, - 0x96, 0x89, 0x4f, 0x7b, 0x36, 0x2b, 0xc4, 0x79, 0x06, 0xcf, 0x04, 0x9f, 0xfd, 0x8d, 0xf1, 0x54, - 0x61, 0x7d, 0x4c, 0x14, 0xf9, 0x78, 0x08, 0xeb, 0x63, 0x32, 0x54, 0x3e, 0x7e, 0xc2, 0xfa, 0xad, - 0xfc, 0x6e, 0xc3, 0xfc, 0x9f, 0x0a, 0x2f, 0x21, 0xbc, 0x6f, 0xe4, 0x93, 0xe9, 0x27, 0x8e, 0x5c, - 0x4c, 0xb3, 0x50, 0x12, 0x89, 0x30, 0x32, 0x85, 0xc3, 0xf1, 0x59, 0x16, 0x8d, 0xf8, 0x8e, 0xdb, - 0x20, 0x2e, 0x72, 0x76, 0x27, 0x12, 0x4e, 0xab, 0x7e, 0x2f, 0x17, 0xcb, 0xd5, 0x70, 0x24, 0x47, - 0x08, 0xfb, 0x5a, 0x92, 0xc8, 0x3b, 0xfe, 0x61, 0x66, 0x31, 0x16, 0x2b, 0x3b, 0xf8, 0x9e, 0x0a, - 0xf5, 0x74, 0xb3, 0x15, 0x2f, 0x2f, 0x62, 0x02, 0xfc, 0x4e, 0x1e, 0x26, 0x12, 0xa4, 0xe4, 0x6a, - 0x24, 0x94, 0x0e, 0x1e, 0x4b, 0xc6, 0x9c, 0xc7, 0x79, 0x50, 0x9d, 0x3d, 0x9c, 0xa4, 0x5e, 0x85, - 0x62, 0x45, 0xdf, 0xe4, 0xdf, 0xd6, 0xcf, 0x59, 0x1a, 0xfa, 0xa6, 0x7c, 0xe2, 0x86, 0x78, 0xb2, - 0x0a, 0xe7, 0xf9, 0x7d, 0x88, 0x69, 0x5b, 0x2b, 0x66, 0x9b, 0x56, 0xad, 0x05, 0xb3, 0xd5, 0x32, - 0x5d, 0x71, 0xa9, 0xf7, 0xe2, 0xf6, 0xd6, 0xe4, 0x35, 0xcf, 0xf6, 0xf4, 0x56, 0x9d, 0xfa, 0x64, - 0x75, 0xcf, 0x6c, 0xd3, 0xba, 0x69, 0xd5, 0xdb, 0x48, 0x29, 0xb1, 0x4c, 0x67, 0x45, 0xaa, 0x3c, - 0x2c, 0x7a, 0xad, 0xa1, 0x5b, 0x16, 0x35, 0xaa, 0xd6, 0xd4, 0xa6, 0x47, 0xf9, 0x65, 0x60, 0x81, - 0x1f, 0x09, 0xf2, 0xb7, 0xe1, 0x1c, 0xcd, 0x18, 0xaf, 0x32, 0x02, 0x2d, 0xa5, 0x90, 0xfa, 0xdb, - 0xc5, 0x94, 0x34, 0x1d, 0xc7, 0x48, 0x7d, 0xfc, 0x9e, 0x2e, 0xee, 0xd0, 0xd3, 0x37, 0x61, 0x40, - 0xc4, 0x9d, 0x15, 0x17, 0x0c, 0xe8, 0xcc, 0xfe, 0x98, 0x83, 0xe4, 0x1b, 0x1a, 0x41, 0x45, 0x5a, - 0x70, 0x69, 0x85, 0x75, 0x53, 0x7a, 0x67, 0x96, 0xf6, 0xd1, 0x99, 0x3d, 0xf8, 0x91, 0xf7, 0xe1, - 0x22, 0x62, 0x53, 0xba, 0x75, 0x00, 0xab, 0xc2, 0x18, 0x55, 0xbc, 0xaa, 0xf4, 0xce, 0xcd, 0x2a, - 0x4f, 0xbe, 0x08, 0x23, 0xc1, 0x00, 0x31, 0xa9, 0x2b, 0x6e, 0x2e, 0x7a, 0x8c, 0x33, 0x1e, 0x00, - 0x8e, 0x81, 0xd1, 0x85, 0x2c, 0x1a, 0x44, 0x2c, 0xc2, 0x4b, 0xfd, 0x1f, 0x73, 0xbd, 0xd2, 0x85, - 0x1c, 0xf9, 0xac, 0xfc, 0x0e, 0x0c, 0x18, 0xfc, 0xa3, 0x84, 0x4e, 0xf5, 0x4e, 0x28, 0xc2, 0x49, - 0x35, 0xbf, 0x8c, 0xfa, 0xcf, 0x72, 0x3d, 0xb3, 0x94, 0x1c, 0xf7, 0xcf, 0xfb, 0x46, 0x21, 0xe3, - 0xf3, 0xc4, 0x24, 0x7a, 0x1d, 0xc6, 0xcd, 0x30, 0x8c, 0x7a, 0x3d, 0x0c, 0x3f, 0xa5, 0x9d, 0x91, - 0xe0, 0x38, 0xba, 0x6e, 0xc3, 0x05, 0xdf, 0xf1, 0xd1, 0xf1, 0x3d, 0xc4, 0xdc, 0x7a, 0xd7, 0x31, - 0xf9, 0xb8, 0xd4, 0xce, 0xb9, 0x31, 0xf7, 0x31, 0xf7, 0xbe, 0x63, 0xb2, 0x0a, 0x74, 0x6f, 0x9d, - 0x5a, 0x7a, 0x7d, 0xc3, 0x76, 0x1e, 0x61, 0x94, 0x51, 0x3e, 0x38, 0xb5, 0x33, 0x1c, 0xfe, 0xd0, - 0x07, 0x93, 0xe7, 0x61, 0xb4, 0xd9, 0xea, 0xd2, 0x20, 0xae, 0x23, 0xbf, 0xeb, 0xd3, 0x46, 0x18, - 0x30, 0xb8, 0x21, 0x79, 0x06, 0x00, 0x89, 0x3c, 0xcc, 0x21, 0x83, 0x17, 0x7b, 0xda, 0x10, 0x83, - 0xac, 0x88, 0xee, 0xba, 0xc4, 0xb5, 0x9a, 0x0b, 0xa9, 0xde, 0xb2, 0xad, 0x66, 0xdd, 0xa3, 0x4e, - 0x1b, 0x1b, 0x8a, 0xce, 0x0c, 0xda, 0x05, 0xa4, 0xc0, 0xab, 0x13, 0x77, 0xde, 0xb6, 0x9a, 0x2b, - 0xd4, 0x69, 0xb3, 0xa6, 0xbe, 0x08, 0x44, 0x34, 0xd5, 0xc1, 0x43, 0x0f, 0xfe, 0x71, 0xe8, 0xcd, - 0xa0, 0x89, 0x8f, 0xe0, 0xa7, 0x21, 0xf8, 0x61, 0x93, 0x30, 0xcc, 0x83, 0xdb, 0x71, 0xa1, 0xa1, - 0x0b, 0x83, 0x06, 0x1c, 0x84, 0xf2, 0xba, 0x00, 0xc2, 0xbb, 0x82, 0x7b, 0x75, 0x6b, 0xe2, 0x97, - 0xfa, 0xd5, 0x42, 0x5a, 0x62, 0x95, 0x03, 0x29, 0x5a, 0x38, 0xad, 0xe6, 0xf7, 0x34, 0xad, 0x9e, - 0xb1, 0xba, 0xed, 0xba, 0xde, 0xe9, 0xd4, 0xd7, 0xcc, 0x16, 0x3e, 0xab, 0xc2, 0x85, 0x4f, 0x1b, - 0xb5, 0xba, 0xed, 0x72, 0xa7, 0x33, 0xcb, 0x81, 0xe4, 0x05, 0x98, 0x60, 0x74, 0xd8, 0x49, 0x01, - 0x65, 0x11, 0x29, 0x19, 0x03, 0x8c, 0x0e, 0xeb, 0xd3, 0x3e, 0x05, 0x83, 0x82, 0x27, 0x5f, 0xab, - 0xfa, 0xb5, 0x01, 0xce, 0xcc, 0x65, 0x3d, 0x17, 0xb0, 0xe1, 0x93, 0x6b, 0xbf, 0x36, 0xe4, 0x97, - 0xc7, 0x18, 0xc8, 0x56, 0xb7, 0xcd, 0x23, 0x62, 0x0d, 0x20, 0x32, 0xf8, 0x4d, 0xae, 0xc2, 0x18, - 0xe3, 0x12, 0x08, 0x8c, 0x87, 0x8d, 0xed, 0xd7, 0x62, 0x50, 0x72, 0x0b, 0xce, 0x45, 0x20, 0xdc, - 0x06, 0xe5, 0xcf, 0x04, 0xfa, 0xb5, 0x54, 0x9c, 0xfa, 0xad, 0x42, 0x34, 0xdd, 0xcb, 0x11, 0x74, - 0xc4, 0x45, 0x18, 0xb0, 0x9d, 0x66, 0xbd, 0xeb, 0xb4, 0xc4, 0xd8, 0x2b, 0xd9, 0x4e, 0xf3, 0xbe, - 0xd3, 0x22, 0xe7, 0xa1, 0xc4, 0x7a, 0xc7, 0x34, 0xc4, 0x10, 0xeb, 0xd7, 0x3b, 0x9d, 0xaa, 0x41, - 0xca, 0xbc, 0x43, 0x30, 0xe4, 0x68, 0xbd, 0x81, 0x5b, 0x7b, 0xee, 0x94, 0xd0, 0xcf, 0x57, 0xbc, - 0x04, 0x12, 0xfb, 0x09, 0x03, 0x91, 0xf2, 0x83, 0x80, 0x18, 0x0b, 0x03, 0xb7, 0x25, 0x06, 0xef, - 0x93, 0x38, 0x0b, 0x81, 0x0c, 0x59, 0xf0, 0x4d, 0x8c, 0x41, 0x2a, 0x40, 0x42, 0xaa, 0xb6, 0x6d, - 0x98, 0x6b, 0x26, 0xe5, 0xaf, 0x3a, 0xfa, 0xf9, 0xc5, 0x6f, 0x12, 0xab, 0x8d, 0xfb, 0x4c, 0x16, - 0x04, 0x84, 0xbc, 0xc5, 0x95, 0x90, 0xd3, 0xe1, 0xda, 0xc7, 0xfb, 0x96, 0xdb, 0x69, 0x31, 0x14, - 0x6a, 0x26, 0x96, 0xc7, 0x85, 0x50, 0xfd, 0x2b, 0xc5, 0x64, 0xce, 0x9f, 0x23, 0xb1, 0x6b, 0xe6, - 0x00, 0x44, 0x4a, 0xaf, 0xf0, 0x72, 0x2d, 0xf0, 0x38, 0x0f, 0x31, 0x19, 0x3c, 0xa4, 0xb2, 0xe4, - 0x3a, 0x0c, 0xf2, 0x2f, 0xaa, 0x56, 0x84, 0xbd, 0x83, 0x2e, 0x62, 0x6e, 0xc7, 0x5c, 0x5b, 0x43, - 0x7f, 0xb2, 0x00, 0x4d, 0xae, 0xc2, 0x40, 0x65, 0xb1, 0x56, 0x2b, 0x2f, 0xfa, 0x37, 0xc5, 0xf8, - 0xbe, 0xc4, 0xb0, 0xdc, 0xba, 0xab, 0x5b, 0xae, 0xe6, 0x23, 0xc9, 0xf3, 0x50, 0xaa, 0x2e, 0x23, - 0x19, 0x7f, 0x35, 0x39, 0xbc, 0xbd, 0x35, 0x39, 0x60, 0x76, 0x38, 0x95, 0x40, 0x61, 0xbd, 0x0f, - 0xaa, 0x15, 0xc9, 0x5d, 0x82, 0xd7, 0xfb, 0xd8, 0x34, 0xf0, 0xda, 0x59, 0x0b, 0xd0, 0xe4, 0x55, - 0x18, 0xa9, 0x51, 0xc7, 0xd4, 0x5b, 0x8b, 0x5d, 0xdc, 0x2a, 0x4a, 0xa1, 0x14, 0x5d, 0x84, 0xd7, - 0x2d, 0x44, 0x68, 0x11, 0x32, 0x72, 0x19, 0x8a, 0x73, 0xa6, 0xe5, 0x3f, 0x61, 0x40, 0x1f, 0xf7, - 0x75, 0xd3, 0xf2, 0x34, 0x84, 0x92, 0xe7, 0xa1, 0x70, 0x77, 0xa5, 0x2a, 0x3c, 0xc1, 0x90, 0xd7, - 0x07, 0x5e, 0x24, 0x2c, 0xe3, 0xdd, 0x95, 0x2a, 0x79, 0x15, 0x86, 0xd8, 0x22, 0x46, 0xad, 0x06, - 0x75, 0x95, 0x61, 0xfc, 0x18, 0x1e, 0x46, 0xd0, 0x07, 0xca, 0x3e, 0x1d, 0x01, 0xa5, 0xfa, 0x7f, - 0xe6, 0xd3, 0x93, 0x32, 0x1d, 0xc1, 0x50, 0xdf, 0xe7, 0x2d, 0x72, 0x4c, 0xc1, 0x8a, 0x07, 0x50, - 0xb0, 0x35, 0x38, 0x53, 0x36, 0xda, 0xa6, 0x55, 0xc6, 0x9f, 0xee, 0xc2, 0x6c, 0x19, 0xa7, 0x0e, - 0xe9, 0x79, 0x5e, 0x0c, 0x2d, 0xbe, 0x87, 0x07, 0xfc, 0x65, 0xa8, 0xba, 0xce, 0x71, 0xf5, 0xf6, - 0x9a, 0x5e, 0x6f, 0xf0, 0x7c, 0x46, 0x5a, 0x9c, 0xa9, 0xfa, 0x93, 0xf9, 0x1d, 0xf2, 0x48, 0x9d, - 0x44, 0xe9, 0xab, 0xdf, 0xcc, 0xf7, 0x4e, 0xe5, 0x75, 0x22, 0x85, 0xf2, 0x07, 0xf9, 0x94, 0xc4, - 0x5a, 0x07, 0x92, 0xc4, 0x75, 0x18, 0xe4, 0x6c, 0x02, 0x37, 0x5e, 0x9c, 0xcd, 0xb8, 0xb2, 0xe2, - 0x2c, 0xea, 0xa3, 0xc9, 0x22, 0x9c, 0x2b, 0xaf, 0xad, 0xd1, 0x86, 0x17, 0x86, 0x7e, 0x5e, 0x0c, - 0x83, 0xb0, 0xf2, 0x50, 0xb7, 0x02, 0x1f, 0x86, 0x8e, 0xc6, 0x60, 0x23, 0xa9, 0xe5, 0xc8, 0x0a, - 0x5c, 0x88, 0xc3, 0x6b, 0x7c, 0x0b, 0x50, 0x94, 0xa2, 0xdf, 0x26, 0x38, 0xf2, 0xff, 0xb4, 0x8c, - 0xb2, 0x69, 0xad, 0xc4, 0xa9, 0xba, 0xbf, 0x57, 0x2b, 0x71, 0xde, 0x4e, 0x2d, 0xa7, 0xfe, 0x4e, - 0x41, 0xce, 0x3f, 0x76, 0x72, 0x1d, 0xae, 0x6e, 0x47, 0xdc, 0xac, 0x77, 0x3b, 0x64, 0x5e, 0x15, - 0x11, 0x44, 0x8c, 0xae, 0xe3, 0x7b, 0x24, 0x06, 0x11, 0x0c, 0x10, 0x28, 0xaf, 0x43, 0x01, 0x25, - 0xa9, 0x42, 0xb1, 0xec, 0x34, 0xb9, 0x79, 0xbb, 0xd3, 0xa3, 0x2a, 0xdd, 0x69, 0xba, 0xe9, 0x8f, - 0xaa, 0x18, 0x0b, 0xf5, 0x4f, 0xe7, 0x7b, 0xa4, 0x0c, 0x3b, 0x91, 0x93, 0xc8, 0x9f, 0xcb, 0x67, - 0x25, 0xff, 0x3a, 0xae, 0xae, 0x63, 0x1f, 0xb1, 0x70, 0x8e, 0xb7, 0x5f, 0xdd, 0x21, 0x0b, 0x27, - 0x23, 0x11, 0xd9, 0xa9, 0x70, 0xbe, 0x9a, 0xcf, 0xca, 0xc5, 0x76, 0x62, 0x67, 0x99, 0x8c, 0xf4, - 0x6f, 0xa7, 0xba, 0xf2, 0xb3, 0xf9, 0xcc, 0x0c, 0x78, 0xa7, 0xd2, 0x51, 0xbf, 0x96, 0xcf, 0xcc, - 0xe0, 0x77, 0x22, 0x87, 0x52, 0xaa, 0xb6, 0x9c, 0x8e, 0x25, 0x21, 0x9d, 0xdf, 0xcb, 0xa7, 0xe7, - 0x4c, 0x3c, 0x02, 0x55, 0x39, 0x0c, 0x0f, 0x3c, 0x5f, 0xa0, 0xc5, 0x03, 0x09, 0xb4, 0xff, 0x50, - 0x05, 0x7a, 0x64, 0x63, 0xef, 0xfb, 0x55, 0xa0, 0x87, 0x30, 0x78, 0x4f, 0xb2, 0x40, 0xff, 0x54, - 0x21, 0x99, 0x27, 0xf4, 0x44, 0x1e, 0x51, 0x4e, 0xc1, 0xa0, 0x7f, 0x86, 0x21, 0x04, 0xba, 0xeb, - 0xee, 0xf4, 0xcb, 0x91, 0x77, 0xe1, 0x4c, 0x28, 0x4b, 0x39, 0x32, 0x15, 0x5e, 0x6f, 0x34, 0x18, - 0xaa, 0xfe, 0x01, 0xc3, 0x89, 0x10, 0x2a, 0x71, 0x6a, 0xf5, 0x7b, 0x85, 0x64, 0xb2, 0xd5, 0xd3, - 0xde, 0xd8, 0x67, 0x6f, 0xdc, 0x87, 0x0b, 0xd3, 0x5d, 0xc7, 0xa1, 0x96, 0x97, 0xde, 0x29, 0x78, - 0xb8, 0xdc, 0xe0, 0x14, 0xf5, 0x64, 0xe7, 0x64, 0x14, 0x66, 0x6c, 0x85, 0xf7, 0x7d, 0x9c, 0xed, - 0x40, 0xc8, 0xb6, 0xcb, 0x29, 0xd2, 0xd8, 0xa6, 0x17, 0x56, 0xff, 0x7e, 0x3e, 0x99, 0x1e, 0xf7, - 0xb4, 0xeb, 0xf7, 0xd7, 0xf5, 0xea, 0x5f, 0xc8, 0xf7, 0x48, 0x11, 0x7c, 0x6a, 0xe8, 0xf1, 0x93, - 0xbc, 0xcc, 0xbc, 0xc4, 0x27, 0x71, 0x63, 0x90, 0xa1, 0x31, 0xa7, 0x5b, 0x03, 0x4e, 0xf1, 0xc2, - 0x02, 0x4f, 0x15, 0x77, 0xcf, 0xb4, 0x0c, 0xf2, 0x14, 0x9c, 0xbf, 0x5f, 0x9b, 0xd1, 0xea, 0xf7, - 0xaa, 0x8b, 0x95, 0xfa, 0xfd, 0xc5, 0xda, 0xf2, 0xcc, 0x74, 0x75, 0xb6, 0x3a, 0x53, 0x19, 0xef, - 0x23, 0x67, 0xe1, 0x4c, 0x88, 0x9a, 0xbb, 0xbf, 0x50, 0x5e, 0x1c, 0xcf, 0x91, 0x09, 0x18, 0x0d, - 0x81, 0x53, 0x4b, 0x2b, 0xe3, 0xf9, 0x17, 0x3e, 0x05, 0xc3, 0xe8, 0x0b, 0xc3, 0xef, 0xee, 0xc8, - 0x08, 0x0c, 0x2e, 0x4d, 0xd5, 0x66, 0xb4, 0x07, 0xc8, 0x04, 0xa0, 0x54, 0x99, 0x59, 0x64, 0x0c, - 0x73, 0x2f, 0xfc, 0x3f, 0x39, 0x80, 0xda, 0xec, 0xca, 0xb2, 0x20, 0x1c, 0x86, 0x81, 0xea, 0xe2, - 0x83, 0xf2, 0x7c, 0x95, 0xd1, 0x0d, 0x42, 0x71, 0x69, 0x79, 0x86, 0xd5, 0x30, 0x04, 0xfd, 0xd3, - 0xf3, 0x4b, 0xb5, 0x99, 0xf1, 0x3c, 0x03, 0x6a, 0x33, 0xe5, 0xca, 0x78, 0x81, 0x01, 0x1f, 0x6a, - 0xd5, 0x95, 0x99, 0xf1, 0x22, 0xfb, 0x73, 0xbe, 0xb6, 0x52, 0x5e, 0x19, 0xef, 0x67, 0x7f, 0xce, - 0xe2, 0x9f, 0x25, 0xc6, 0xac, 0x36, 0xb3, 0x82, 0x3f, 0x06, 0x58, 0x13, 0x66, 0xfd, 0x5f, 0x83, - 0x0c, 0xc5, 0x58, 0x57, 0xaa, 0xda, 0xf8, 0x10, 0xfb, 0xc1, 0x58, 0xb2, 0x1f, 0xc0, 0x1a, 0xa7, - 0xcd, 0x2c, 0x2c, 0x3d, 0x98, 0x19, 0x1f, 0x66, 0xbc, 0x16, 0xee, 0x31, 0xf0, 0x08, 0xfb, 0x53, - 0x5b, 0x60, 0x7f, 0x8e, 0x32, 0x4e, 0xda, 0x4c, 0x79, 0x7e, 0xb9, 0xbc, 0x32, 0x37, 0x3e, 0xc6, - 0xda, 0x83, 0x3c, 0xcf, 0xf0, 0x92, 0x8b, 0xe5, 0x85, 0x99, 0xf1, 0x71, 0x41, 0x53, 0x99, 0xaf, - 0x2e, 0xde, 0x1b, 0x9f, 0xc0, 0x86, 0xbc, 0xbf, 0x80, 0x3f, 0x08, 0x2b, 0x80, 0x7f, 0x9d, 0x7d, - 0xe1, 0x07, 0xa1, 0xb4, 0x54, 0xc3, 0xdb, 0xef, 0x8b, 0x70, 0x76, 0xa9, 0x56, 0x5f, 0x79, 0x7f, - 0x79, 0x26, 0x26, 0xef, 0x09, 0x18, 0xf5, 0x11, 0xf3, 0xd5, 0xc5, 0xfb, 0x5f, 0xe0, 0xd2, 0xf6, - 0x41, 0x0b, 0xe5, 0xe9, 0xa5, 0xda, 0x78, 0x9e, 0xf5, 0x8a, 0x0f, 0x7a, 0x58, 0x5d, 0xac, 0x2c, - 0x3d, 0xac, 0x8d, 0x17, 0x5e, 0x78, 0x0c, 0x23, 0x3c, 0xd1, 0xde, 0x92, 0x63, 0x36, 0x4d, 0x8b, - 0x3c, 0x03, 0x4f, 0x55, 0x66, 0x1e, 0x54, 0xa7, 0x67, 0xea, 0x4b, 0x5a, 0xf5, 0x4e, 0x75, 0x31, - 0x56, 0xd3, 0x79, 0x98, 0x88, 0xa2, 0xcb, 0xcb, 0xd5, 0xf1, 0x1c, 0xb9, 0x00, 0x24, 0x0a, 0xbe, - 0x5b, 0x5e, 0x98, 0x1d, 0xcf, 0x13, 0x05, 0xce, 0x45, 0xe1, 0xd5, 0xc5, 0x95, 0xfb, 0x8b, 0x33, - 0xe3, 0x85, 0x17, 0xfe, 0x72, 0x0e, 0xce, 0xa7, 0x06, 0x63, 0x25, 0x2a, 0x5c, 0x99, 0x99, 0x2f, - 0xd7, 0x56, 0xaa, 0xd3, 0xb5, 0x99, 0xb2, 0x36, 0x3d, 0x57, 0x9f, 0x2e, 0xaf, 0xcc, 0xdc, 0x59, - 0xd2, 0xde, 0xaf, 0xdf, 0x99, 0x59, 0x9c, 0xd1, 0xca, 0xf3, 0xe3, 0x7d, 0xe4, 0x79, 0x98, 0xcc, - 0xa0, 0xa9, 0xcd, 0x4c, 0xdf, 0xd7, 0xaa, 0x2b, 0xef, 0x8f, 0xe7, 0xc8, 0x73, 0xf0, 0x4c, 0x26, - 0x11, 0xfb, 0x3d, 0x9e, 0x27, 0x57, 0xe0, 0x52, 0x16, 0xc9, 0x7b, 0xf3, 0xe3, 0x85, 0x17, 0x7e, - 0x26, 0x07, 0x24, 0x19, 0x4d, 0x93, 0x3c, 0x0b, 0x97, 0x99, 0x5e, 0xd4, 0xb3, 0x1b, 0xf8, 0x1c, - 0x3c, 0x93, 0x4a, 0x21, 0x35, 0x6f, 0x12, 0x9e, 0xce, 0x20, 0x11, 0x8d, 0xbb, 0x0c, 0x4a, 0x3a, - 0x01, 0x36, 0xed, 0xd7, 0x73, 0x70, 0x3e, 0xf5, 0xba, 0x9c, 0x5c, 0x83, 0x4f, 0x94, 0x2b, 0x0b, - 0xac, 0x6f, 0xa6, 0x57, 0xaa, 0x4b, 0x8b, 0xb5, 0xfa, 0xc2, 0x6c, 0xb9, 0xce, 0xb4, 0xef, 0x7e, - 0x2d, 0xd6, 0x9b, 0x57, 0x41, 0xed, 0x41, 0x39, 0x3d, 0x57, 0x5e, 0xbc, 0xc3, 0x86, 0x1f, 0xf9, - 0x04, 0x3c, 0x9b, 0x49, 0x37, 0xb3, 0x58, 0x9e, 0x9a, 0x9f, 0xa9, 0x8c, 0xe7, 0xc9, 0x27, 0xe1, - 0xb9, 0x4c, 0xaa, 0x4a, 0xb5, 0xc6, 0xc9, 0x0a, 0x53, 0x95, 0xef, 0xfc, 0xcf, 0x57, 0xfa, 0xbe, - 0xf3, 0xfb, 0x57, 0x72, 0xff, 0xf0, 0xf7, 0xaf, 0xe4, 0xfe, 0xf9, 0xef, 0x5f, 0xc9, 0x7d, 0xf1, - 0xd6, 0x5e, 0xa2, 0xa4, 0xf2, 0x69, 0x6b, 0xb5, 0x84, 0x57, 0x57, 0xaf, 0xfc, 0x9b, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x6a, 0x20, 0x2b, 0xb4, 0x52, 0x79, 0x01, 0x00, + 0x56, 0xcd, 0x81, 0xfd, 0xa9, 0x26, 0x79, 0x1b, 0x86, 0x97, 0x6d, 0xd7, 0x6b, 0x3a, 0xd4, 0x5d, + 0x0e, 0x62, 0xe8, 0xe3, 0x23, 0xd8, 0x8e, 0x00, 0xd7, 0x3b, 0x91, 0xd9, 0x5f, 0x26, 0x57, 0xff, + 0x49, 0x21, 0xa1, 0x0d, 0xdc, 0x70, 0x3d, 0x96, 0xda, 0x70, 0x08, 0x43, 0x9d, 0xdc, 0x0a, 0x57, + 0x41, 0x6e, 0xe1, 0xf7, 0x4b, 0x01, 0x02, 0x57, 0x85, 0x81, 0x1f, 0x25, 0x21, 0x3f, 0x00, 0x17, + 0x23, 0x80, 0x65, 0xdd, 0xd1, 0xdb, 0xd4, 0x0b, 0xf3, 0x15, 0x62, 0xc8, 0x27, 0xbf, 0x74, 0xbd, + 0x13, 0xa0, 0xe5, 0x1c, 0x88, 0x19, 0x1c, 0x24, 0xd5, 0x1a, 0xd8, 0x83, 0x8b, 0xf5, 0xcf, 0x14, + 0x42, 0x43, 0x27, 0x1a, 0xba, 0x55, 0xa3, 0x6e, 0xb7, 0xe5, 0x9d, 0xdc, 0x0e, 0xde, 0x5f, 0x62, + 0x8c, 0x39, 0x38, 0x53, 0x5e, 0x5b, 0xa3, 0x0d, 0xcf, 0x8f, 0x48, 0xed, 0x8a, 0x60, 0x7d, 0x7c, + 0xe3, 0x21, 0x50, 0x22, 0xc2, 0x70, 0x24, 0xb3, 0x7e, 0xac, 0x98, 0xfa, 0x4f, 0x8b, 0xa0, 0x04, + 0x86, 0x7f, 0xf0, 0xcc, 0xeb, 0x08, 0x17, 0xd9, 0x8f, 0x45, 0xaf, 0x98, 0x30, 0x11, 0x0a, 0xa3, + 0xd6, 0x6d, 0xb7, 0x75, 0x1c, 0x7a, 0x6c, 0x63, 0x31, 0x19, 0x67, 0x16, 0x12, 0xf2, 0xbd, 0xc4, + 0x25, 0xb1, 0x97, 0x20, 0xe1, 0x33, 0xba, 0xba, 0xcb, 0x59, 0x68, 0x49, 0xae, 0xe4, 0xeb, 0x39, + 0x38, 0xe7, 0x77, 0xca, 0xd2, 0x2a, 0x33, 0xaa, 0xa7, 0xed, 0xae, 0xe5, 0xf9, 0xfb, 0x98, 0x37, + 0xb3, 0xab, 0xe3, 0x9d, 0x74, 0x23, 0xad, 0x30, 0x6f, 0x49, 0x10, 0x96, 0x22, 0x50, 0x08, 0x1b, + 0x69, 0xea, 0x0d, 0x24, 0xd2, 0x52, 0xeb, 0xbd, 0x74, 0x07, 0x9e, 0xca, 0x64, 0xb9, 0x93, 0x11, + 0xdb, 0x2f, 0x1b, 0xb1, 0xff, 0x5d, 0x2e, 0x9c, 0x88, 0x62, 0x42, 0x22, 0x37, 0x00, 0x42, 0x90, + 0xd8, 0xd6, 0x8e, 0x6d, 0x6f, 0x4d, 0x42, 0x28, 0x34, 0x4d, 0xa2, 0x20, 0x4b, 0x50, 0x12, 0x62, + 0xe1, 0xb9, 0x81, 0x3f, 0xbd, 0x43, 0x2f, 0xdc, 0x90, 0xe5, 0x80, 0x5b, 0x56, 0xf1, 0xcd, 0x82, + 0xcd, 0xa5, 0x37, 0x60, 0x78, 0xbf, 0xdf, 0xf5, 0xf5, 0x02, 0x10, 0x79, 0x0f, 0x7a, 0x84, 0x06, + 0xfa, 0x31, 0x9e, 0xc2, 0xae, 0xc1, 0x20, 0xfb, 0x04, 0xcc, 0x96, 0x21, 0x45, 0xc7, 0xed, 0x0a, + 0x98, 0x16, 0x60, 0xc3, 0xd0, 0x54, 0x03, 0xe9, 0xa1, 0xa9, 0xd4, 0x9f, 0x2e, 0xc0, 0x05, 0xb9, + 0x43, 0x2a, 0x14, 0x03, 0xee, 0x9f, 0x76, 0xca, 0x47, 0xd8, 0x29, 0x2a, 0x94, 0xf8, 0xd6, 0x43, + 0x64, 0x3e, 0xe0, 0xc7, 0x42, 0x08, 0xd1, 0x04, 0x46, 0xfd, 0x9f, 0xf3, 0x30, 0x1a, 0x98, 0x77, + 0xba, 0xe3, 0x9e, 0xe0, 0xee, 0xf8, 0x2c, 0x8c, 0x62, 0x70, 0xa1, 0x36, 0xb5, 0x78, 0x00, 0x9e, + 0x7e, 0x29, 0x55, 0x89, 0x8f, 0x10, 0x59, 0xa9, 0x22, 0x84, 0x4c, 0xfb, 0xb9, 0xe5, 0x27, 0x85, + 0x7c, 0xe2, 0x66, 0x1f, 0x87, 0xab, 0x7f, 0xb9, 0x00, 0x23, 0xbe, 0x94, 0xa7, 0xcc, 0xe3, 0x7a, + 0xcf, 0x73, 0xb4, 0x42, 0xbe, 0x09, 0xb0, 0x6c, 0x3b, 0x9e, 0xde, 0x5a, 0x0c, 0x35, 0x1f, 0x0f, + 0x48, 0x3b, 0x08, 0xe5, 0x65, 0x24, 0x12, 0x5c, 0xbf, 0x42, 0xb3, 0x9a, 0x4f, 0x4c, 0x7c, 0xfd, + 0x0a, 0xa0, 0x9a, 0x44, 0xa1, 0xfe, 0x4e, 0x1e, 0xce, 0xf8, 0x9d, 0x34, 0xf3, 0x84, 0x36, 0xba, + 0x27, 0x79, 0x6e, 0x8a, 0x4a, 0xbb, 0x7f, 0x47, 0x69, 0xab, 0xff, 0xa7, 0x34, 0x91, 0x4c, 0xb7, + 0xec, 0xd3, 0x89, 0xe4, 0x8f, 0x43, 0xc7, 0xd5, 0x1f, 0x2d, 0xc0, 0x39, 0x5f, 0xea, 0xb3, 0x5d, + 0x0b, 0x8f, 0x16, 0xa6, 0xf5, 0x56, 0xeb, 0x24, 0xef, 0xc6, 0x87, 0x7d, 0x41, 0x2c, 0x89, 0x68, + 0x7d, 0x22, 0x43, 0xe0, 0x9a, 0x00, 0xd7, 0x6d, 0xd3, 0xd0, 0x64, 0x22, 0xf2, 0x2e, 0x8c, 0xf8, + 0x3f, 0xcb, 0x4e, 0xd3, 0xdf, 0x82, 0xe3, 0x45, 0x41, 0x50, 0x48, 0x77, 0x22, 0x41, 0x09, 0x22, + 0x05, 0xd4, 0xaf, 0x0c, 0xc0, 0xa5, 0x87, 0xa6, 0x65, 0xd8, 0x1b, 0xae, 0x9f, 0x60, 0xf2, 0xd8, + 0x1f, 0x94, 0x1d, 0x75, 0x62, 0xc9, 0xf7, 0xe0, 0x7c, 0x5c, 0xa4, 0x4e, 0x10, 0xf6, 0x5b, 0xf4, + 0xce, 0x06, 0x27, 0xa8, 0xfb, 0xa9, 0x26, 0xc5, 0x6d, 0x9b, 0x96, 0x5e, 0x32, 0x9e, 0xab, 0x72, + 0x60, 0x37, 0xb9, 0x2a, 0x5f, 0x80, 0x52, 0xc5, 0x6e, 0xeb, 0xa6, 0x1f, 0x9e, 0x06, 0x47, 0x71, + 0x50, 0x2f, 0x62, 0x34, 0x41, 0xc1, 0xf8, 0x8b, 0x8a, 0xb1, 0xcb, 0x86, 0x42, 0xfe, 0x7e, 0x01, + 0x66, 0xa5, 0x69, 0x32, 0x11, 0xb1, 0x61, 0x54, 0x54, 0x27, 0xee, 0xc6, 0x00, 0x37, 0x4f, 0xaf, + 0xfa, 0x32, 0xca, 0x56, 0xab, 0x1b, 0x91, 0x72, 0x7c, 0x1b, 0xc5, 0x53, 0x68, 0x8a, 0x8f, 0xe1, + 0xb7, 0x64, 0x5a, 0x94, 0xbf, 0x24, 0x04, 0x9c, 0x64, 0x86, 0x93, 0x42, 0xc0, 0x59, 0x46, 0x26, + 0x22, 0x33, 0x30, 0x81, 0xc1, 0x99, 0x83, 0xad, 0x14, 0x53, 0x89, 0x11, 0x34, 0x2a, 0xf1, 0xca, + 0x85, 0xc7, 0x73, 0x66, 0x1f, 0x57, 0x6f, 0x08, 0xb4, 0x96, 0x2c, 0x41, 0x9e, 0x82, 0xc2, 0xe2, + 0x7c, 0x19, 0xef, 0x6a, 0x06, 0x79, 0x62, 0x24, 0xab, 0xa5, 0x6b, 0x0c, 0x76, 0xe9, 0xf3, 0x40, + 0x92, 0x9f, 0xb3, 0xa7, 0xfb, 0x98, 0xff, 0x52, 0xda, 0xf2, 0x1d, 0x77, 0x8f, 0x9a, 0xc3, 0x98, + 0x08, 0x23, 0x39, 0xc9, 0xfa, 0x3f, 0xca, 0x9c, 0x64, 0xa5, 0x43, 0xcd, 0x49, 0xa6, 0xfe, 0x4a, + 0x0e, 0x26, 0x12, 0x01, 0xcc, 0xc9, 0x2b, 0x00, 0x1c, 0x22, 0x05, 0x8a, 0xc4, 0xc8, 0x2b, 0x61, + 0x50, 0x73, 0xb1, 0x3c, 0x86, 0x64, 0xe4, 0x26, 0x0c, 0xf2, 0x5f, 0x22, 0xb8, 0x53, 0xb2, 0x48, + 0xb7, 0x6b, 0x1a, 0x5a, 0x40, 0x14, 0xd6, 0x82, 0x37, 0x92, 0x85, 0xd4, 0x22, 0xde, 0x66, 0x27, + 0xa8, 0x85, 0x91, 0xa9, 0x5f, 0xcb, 0xc3, 0x48, 0xd0, 0xe0, 0xb2, 0x71, 0x54, 0x3a, 0x57, 0x12, + 0xb1, 0xe0, 0x0b, 0x3b, 0xc5, 0x82, 0x8f, 0xcd, 0xb7, 0x22, 0xf8, 0xfb, 0xe1, 0x3d, 0xa8, 0xfa, + 0x46, 0x1e, 0xce, 0x04, 0xb5, 0x1e, 0xe1, 0xe5, 0xd7, 0xc7, 0x48, 0x24, 0x5f, 0xcf, 0x81, 0x32, + 0x65, 0xb6, 0x5a, 0xa6, 0xd5, 0xac, 0x5a, 0x6b, 0xb6, 0xd3, 0xc6, 0x09, 0xf1, 0xe8, 0x8e, 0x70, + 0xd5, 0x3f, 0x95, 0x83, 0x09, 0xd1, 0xa0, 0x69, 0xdd, 0x31, 0x8e, 0xee, 0x7c, 0x2c, 0xde, 0x92, + 0xa3, 0xd3, 0x17, 0xf5, 0x5b, 0x79, 0x80, 0x79, 0xbb, 0xf1, 0xe8, 0x98, 0xbf, 0xc7, 0x7a, 0x0b, + 0x4a, 0x3c, 0xc2, 0x96, 0xd0, 0xd8, 0x09, 0xf1, 0xee, 0x88, 0x7d, 0x1a, 0x47, 0x4c, 0x8d, 0x8b, + 0xf9, 0xb8, 0xc4, 0x23, 0x74, 0x29, 0x39, 0x4d, 0x14, 0x61, 0x95, 0x32, 0x3a, 0xb1, 0x60, 0x04, + 0x95, 0x32, 0x58, 0xb4, 0xd2, 0xed, 0xad, 0xc9, 0x62, 0xcb, 0x6e, 0x3c, 0xd2, 0x90, 0x5e, 0xfd, + 0xd7, 0x39, 0x2e, 0xbb, 0x63, 0xfe, 0xaa, 0xd4, 0xff, 0xfc, 0xe2, 0x1e, 0x3f, 0xff, 0x4f, 0xe7, + 0xe0, 0x9c, 0x46, 0x1b, 0xf6, 0x63, 0xea, 0x6c, 0x4e, 0xdb, 0x06, 0xbd, 0x43, 0x2d, 0xea, 0x1c, + 0xd5, 0x88, 0xfa, 0x4f, 0x31, 0x79, 0x46, 0xd8, 0x98, 0xfb, 0x2e, 0x35, 0x8e, 0x4f, 0x62, 0x13, + 0xf5, 0xd7, 0x07, 0x40, 0x49, 0xb5, 0x7a, 0x8f, 0xad, 0x39, 0x97, 0xb9, 0x95, 0x29, 0x1e, 0xd6, + 0x56, 0xa6, 0x7f, 0x6f, 0x5b, 0x99, 0xd2, 0x5e, 0xb7, 0x32, 0x03, 0xbb, 0xd9, 0xca, 0xb4, 0xe3, + 0x5b, 0x99, 0x41, 0xdc, 0xca, 0xbc, 0xd2, 0x73, 0x2b, 0x33, 0x63, 0x19, 0xfb, 0xdc, 0xc8, 0x1c, + 0xdb, 0xa4, 0xbb, 0xfb, 0xd9, 0x81, 0x5d, 0x63, 0x93, 0x62, 0xc3, 0x76, 0x0c, 0x6a, 0x88, 0x8d, + 0x17, 0x9e, 0xfa, 0x3b, 0x02, 0xa6, 0x05, 0xd8, 0x44, 0x06, 0xe3, 0xd1, 0xdd, 0x64, 0x30, 0x3e, + 0x84, 0xfd, 0xd7, 0x57, 0xf3, 0x30, 0x31, 0x4d, 0x1d, 0x8f, 0x87, 0xf0, 0x3c, 0x0c, 0x97, 0xb8, + 0x32, 0x9c, 0x91, 0x18, 0xa2, 0x45, 0x9e, 0x0f, 0xdd, 0xfc, 0x1a, 0xd4, 0xf1, 0xe2, 0x5e, 0x82, + 0x71, 0x7a, 0x56, 0xbd, 0x9f, 0x45, 0x4c, 0x8c, 0xdd, 0xa0, 0x7a, 0x1f, 0xce, 0x05, 0x69, 0x8a, + 0x5f, 0x5a, 0x40, 0x2f, 0x25, 0x06, 0x2b, 0xee, 0x3d, 0x31, 0x98, 0xfa, 0xcb, 0x39, 0xb8, 0xaa, + 0x51, 0x8b, 0x6e, 0xe8, 0xab, 0x2d, 0x2a, 0x35, 0x4b, 0xac, 0x0c, 0x6c, 0xd6, 0x30, 0xdd, 0xb6, + 0xee, 0x35, 0xd6, 0x0f, 0x24, 0xa3, 0x59, 0x18, 0x91, 0xe7, 0xaf, 0x3d, 0xcc, 0x6d, 0x91, 0x72, + 0xea, 0xaf, 0x17, 0x61, 0x60, 0xca, 0xf6, 0xee, 0xda, 0x07, 0xcc, 0x54, 0x17, 0x4e, 0xf9, 0xf9, + 0x3d, 0x9c, 0xf5, 0x7c, 0x06, 0x2b, 0x97, 0x82, 0xf7, 0xa3, 0x0b, 0xe9, 0xaa, 0x9d, 0x48, 0x72, + 0xe0, 0x93, 0xed, 0x31, 0x47, 0xdd, 0x6b, 0x30, 0x84, 0xd1, 0x5f, 0xa4, 0xd3, 0x58, 0x74, 0xd0, + 0xf6, 0x18, 0x30, 0x5e, 0x47, 0x48, 0x4a, 0x7e, 0x20, 0x12, 0x73, 0xb4, 0x74, 0xf0, 0x9c, 0x76, + 0x72, 0xf8, 0xd1, 0x57, 0xf8, 0x45, 0x1e, 0xb6, 0x49, 0xca, 0xff, 0x81, 0xa7, 0x28, 0xb1, 0x26, + 0x05, 0x84, 0x87, 0x98, 0x6f, 0x6e, 0x1a, 0x46, 0xa7, 0x6c, 0x4f, 0x72, 0x06, 0x1e, 0x0a, 0x9f, + 0x81, 0x32, 0xc9, 0xa7, 0x7b, 0x02, 0x47, 0xcb, 0xa8, 0x7f, 0x54, 0x84, 0x11, 0xff, 0xe7, 0x11, + 0xe9, 0xce, 0x4b, 0x50, 0x9a, 0xb3, 0xa5, 0x14, 0x08, 0xe8, 0x40, 0xbc, 0x6e, 0xbb, 0x31, 0xcf, + 0x68, 0x41, 0xc4, 0xa4, 0xbe, 0x68, 0x1b, 0xb2, 0xfb, 0x3b, 0x4a, 0xdd, 0xb2, 0x8d, 0xc4, 0xf3, + 0xe1, 0x80, 0x90, 0x5c, 0x85, 0x22, 0xbe, 0x1c, 0x90, 0x0e, 0xf2, 0x63, 0xaf, 0x05, 0x10, 0x2f, + 0x69, 0x65, 0x69, 0xaf, 0x5a, 0x39, 0xb0, 0x5f, 0xad, 0x1c, 0x3c, 0x5c, 0xad, 0x7c, 0x1f, 0x46, + 0xb0, 0x26, 0x3f, 0x83, 0xda, 0xce, 0x0b, 0xeb, 0x53, 0x62, 0xed, 0x1b, 0xe5, 0xed, 0x16, 0x79, + 0xd4, 0x70, 0xc9, 0x8b, 0xb0, 0x8a, 0xe9, 0x2e, 0x1c, 0x60, 0x3b, 0xfd, 0x4f, 0x72, 0x30, 0x70, + 0xdf, 0x7a, 0x64, 0xd9, 0x1b, 0x07, 0xd3, 0xb8, 0x57, 0x60, 0x58, 0xb0, 0x91, 0x56, 0x17, 0x7c, + 0x11, 0xde, 0xe5, 0xe0, 0x3a, 0x72, 0xd2, 0x64, 0x2a, 0xf2, 0x76, 0x50, 0x08, 0x1f, 0x07, 0x15, + 0xc2, 0x24, 0x22, 0x7e, 0xa1, 0x46, 0x34, 0xef, 0x81, 0x4c, 0x4e, 0x2e, 0x43, 0xb1, 0xc2, 0x9a, + 0x2a, 0x45, 0xd1, 0x65, 0x4d, 0xd1, 0x10, 0xaa, 0x7e, 0xb5, 0x08, 0x63, 0xb1, 0x83, 0xaf, 0x17, + 0x60, 0x48, 0x1c, 0x3c, 0x99, 0x7e, 0x22, 0x06, 0x7c, 0x3c, 0x14, 0x00, 0xb5, 0x41, 0xfe, 0x67, + 0xd5, 0x20, 0x9f, 0x83, 0x01, 0xdb, 0xc5, 0x45, 0x11, 0xbf, 0x65, 0x2c, 0x1c, 0x42, 0x4b, 0x35, + 0xd6, 0x76, 0x3e, 0x38, 0x04, 0x89, 0xac, 0x91, 0xb6, 0x8b, 0x9f, 0x76, 0x1b, 0x86, 0x74, 0xd7, + 0xa5, 0x5e, 0xdd, 0xd3, 0x9b, 0x72, 0x6e, 0x86, 0x00, 0x28, 0x8f, 0x0e, 0x04, 0xae, 0xe8, 0x4d, + 0xf2, 0x79, 0x18, 0x6d, 0x38, 0x14, 0x97, 0x4d, 0xbd, 0xc5, 0x5a, 0x29, 0x99, 0xb5, 0x11, 0x84, + 0x7c, 0x7f, 0x12, 0x22, 0xaa, 0x06, 0x79, 0x00, 0xa3, 0xe2, 0x73, 0xb8, 0xe7, 0x3e, 0x0e, 0xb4, + 0xb1, 0x70, 0x19, 0xe3, 0x22, 0xe1, 0xbe, 0xfb, 0xe2, 0x01, 0x87, 0x4c, 0x2e, 0xf3, 0x35, 0x24, + 0x52, 0xb2, 0x04, 0x64, 0x83, 0xae, 0xd6, 0xf5, 0xae, 0xb7, 0xce, 0xea, 0xe2, 0xa1, 0xc5, 0x45, + 0x4a, 0x42, 0x7c, 0xf5, 0x90, 0xc4, 0xca, 0x8f, 0x41, 0x36, 0xe8, 0x6a, 0x39, 0x82, 0x24, 0x0f, + 0xe1, 0x7c, 0xb2, 0x08, 0xfb, 0x64, 0x7e, 0x39, 0xf0, 0xfc, 0xf6, 0xd6, 0xe4, 0x64, 0x2a, 0x81, + 0xc4, 0xf6, 0x6c, 0x82, 0x6d, 0xd5, 0xb8, 0x5b, 0x1c, 0x1c, 0x18, 0x1f, 0xd4, 0xc6, 0x58, 0x59, + 0xdf, 0x84, 0x34, 0x0d, 0xf5, 0xf7, 0x72, 0xcc, 0x54, 0x64, 0x1f, 0x84, 0x39, 0x99, 0x99, 0xae, + 0xb7, 0xf7, 0xa8, 0xeb, 0xed, 0x30, 0x7b, 0x62, 0xc9, 0xed, 0x31, 0xbb, 0x6a, 0x02, 0x4b, 0x6e, + 0x40, 0xc9, 0x90, 0x4f, 0xcd, 0x2e, 0x44, 0x3b, 0xc1, 0xaf, 0x47, 0x13, 0x54, 0xe4, 0x1a, 0x14, + 0xd9, 0x92, 0x15, 0xdf, 0x32, 0xcb, 0xd6, 0x85, 0x86, 0x14, 0xea, 0x8f, 0xe4, 0x61, 0x44, 0xfa, + 0x9a, 0x5b, 0x07, 0xfa, 0x9c, 0x37, 0x77, 0xd7, 0x4c, 0xdf, 0xe9, 0x05, 0xf7, 0x52, 0x7e, 0x93, + 0x6f, 0x07, 0xa2, 0xd8, 0xd5, 0x85, 0x94, 0x10, 0xcc, 0x6b, 0xe2, 0x43, 0x4b, 0xbb, 0xdf, 0x3e, + 0x32, 0xfa, 0xbb, 0xc5, 0xc1, 0xfc, 0x78, 0xe1, 0x6e, 0x71, 0xb0, 0x38, 0xde, 0x8f, 0x71, 0xb8, + 0x30, 0xf4, 0x35, 0xdf, 0x9b, 0x5b, 0x6b, 0x66, 0xf3, 0x98, 0xbf, 0x1d, 0x39, 0xdc, 0x18, 0x65, + 0x31, 0xd9, 0x1c, 0xf3, 0x87, 0x24, 0x1f, 0xa9, 0x6c, 0x4e, 0xb3, 0x2d, 0x0a, 0xd9, 0xfc, 0xd3, + 0x1c, 0x28, 0xa9, 0xb2, 0x29, 0x1f, 0x91, 0x1f, 0xc4, 0xe1, 0xe5, 0x5c, 0xfc, 0x83, 0x3c, 0x4c, + 0x54, 0x2d, 0x8f, 0x36, 0xf9, 0x8e, 0xf1, 0x98, 0x4f, 0x15, 0xf7, 0x60, 0x58, 0xfa, 0x18, 0xd1, + 0xe7, 0x4f, 0x07, 0xfb, 0xf1, 0x10, 0x95, 0xc1, 0x49, 0x2e, 0x7d, 0x88, 0x69, 0xda, 0x63, 0x42, + 0x3e, 0xe6, 0x73, 0xce, 0xf1, 0x10, 0xf2, 0x31, 0x9f, 0xbc, 0x3e, 0xa6, 0x42, 0xfe, 0xdf, 0x73, + 0x70, 0x36, 0xa5, 0x72, 0x72, 0x15, 0x06, 0x6a, 0xdd, 0x55, 0x0c, 0xbb, 0x95, 0x0b, 0x3d, 0x86, + 0xdd, 0xee, 0x2a, 0x46, 0xdc, 0xd2, 0x7c, 0x24, 0x59, 0xc1, 0xc7, 0xf5, 0x4b, 0xd5, 0xca, 0xb4, + 0x90, 0xaa, 0x2a, 0x85, 0x09, 0x60, 0xe0, 0xb4, 0x2f, 0x0b, 0x1e, 0xe0, 0xdb, 0xa6, 0xd1, 0x88, + 0x3d, 0xc0, 0x67, 0x65, 0xc8, 0x0f, 0xc2, 0x50, 0xf9, 0xc3, 0xae, 0x43, 0x91, 0x2f, 0x97, 0xf8, + 0x27, 0x02, 0xbe, 0x3e, 0x22, 0x8d, 0x33, 0x8f, 0x25, 0xc0, 0x28, 0xe2, 0xbc, 0x43, 0x86, 0xea, + 0xd7, 0x72, 0x70, 0x29, 0xbb, 0x75, 0xe4, 0x33, 0x30, 0xc0, 0x76, 0xe6, 0x65, 0x6d, 0x51, 0x7c, + 0x3a, 0xcf, 0x4f, 0x6a, 0xb7, 0x68, 0x5d, 0x77, 0x64, 0x63, 0xdf, 0x27, 0x23, 0xef, 0xc0, 0x70, + 0xd5, 0x75, 0xbb, 0xd4, 0xa9, 0xbd, 0x72, 0x5f, 0xab, 0x8a, 0x3d, 0x21, 0xee, 0x39, 0x4c, 0x04, + 0xd7, 0xdd, 0x57, 0x62, 0x81, 0xb5, 0x64, 0x7a, 0xf5, 0xc7, 0x73, 0x70, 0xb9, 0xd7, 0x57, 0x91, + 0x57, 0x60, 0x70, 0x85, 0x5a, 0xba, 0xe5, 0x55, 0x2b, 0xa2, 0x49, 0xb8, 0xc5, 0xf2, 0x10, 0x16, + 0xdd, 0x29, 0x04, 0x84, 0xac, 0x10, 0x3f, 0x57, 0x0c, 0x1c, 0x19, 0xf8, 0x19, 0x28, 0xc2, 0x62, + 0x85, 0x7c, 0x42, 0xf5, 0xf7, 0xf3, 0x30, 0xb2, 0xdc, 0xea, 0x36, 0x4d, 0x69, 0xe1, 0xd8, 0xb7, + 0xbd, 0xed, 0x5b, 0xbf, 0xf9, 0xbd, 0x59, 0xbf, 0x6c, 0xb8, 0x39, 0xfb, 0x1c, 0x6e, 0x7e, 0x39, + 0xf2, 0x36, 0x94, 0x3a, 0xf8, 0x1d, 0xf1, 0x93, 0x58, 0xfe, 0x75, 0x59, 0x27, 0xb1, 0xbc, 0x0c, + 0x1b, 0x5f, 0x8d, 0x03, 0x8c, 0xaf, 0xb0, 0xac, 0x24, 0xd0, 0x70, 0x91, 0x38, 0x15, 0xe8, 0xa1, + 0x08, 0x34, 0x5c, 0x10, 0x4e, 0x05, 0x7a, 0x00, 0x81, 0xfe, 0x7a, 0x1e, 0xc6, 0xa2, 0x55, 0x92, + 0xcf, 0xc0, 0x30, 0xaf, 0x86, 0x9f, 0x0b, 0xe5, 0x24, 0xa7, 0xe2, 0x10, 0xac, 0x01, 0xff, 0x21, + 0x0e, 0xb8, 0xce, 0xac, 0xeb, 0x6e, 0x3d, 0x3c, 0xa1, 0xe1, 0xf7, 0xb7, 0x83, 0xdc, 0x13, 0x2a, + 0x86, 0xd2, 0xc6, 0xd6, 0x75, 0x77, 0x3a, 0xfc, 0x4d, 0x66, 0x80, 0x38, 0xb4, 0xeb, 0xd2, 0x28, + 0x83, 0x22, 0x32, 0x10, 0xc9, 0xa1, 0xe3, 0x58, 0x6d, 0x82, 0xc3, 0x64, 0x36, 0x5f, 0x0a, 0x9a, + 0x8d, 0xca, 0xd0, 0xbf, 0x8b, 0xcc, 0xd5, 0x12, 0x7d, 0xfa, 0x31, 0x27, 0x27, 0xa8, 0xe8, 0x9e, + 0xce, 0x37, 0xe5, 0x7e, 0x07, 0xa8, 0x7f, 0xcf, 0x86, 0xfe, 0x25, 0x8b, 0x2e, 0xad, 0x91, 0x97, + 0x61, 0x88, 0x29, 0xcc, 0xbc, 0xcd, 0xfa, 0x32, 0x27, 0xfc, 0x27, 0x24, 0x4d, 0x42, 0xc4, 0x5c, + 0x9f, 0x16, 0x52, 0x91, 0xdb, 0x3c, 0xfb, 0x3d, 0x9f, 0x63, 0x85, 0xf6, 0x11, 0xb9, 0x0c, 0xc7, + 0xcc, 0xf5, 0x69, 0x12, 0x9d, 0x5f, 0x4a, 0x3c, 0xd0, 0x29, 0x24, 0x4b, 0x71, 0x8c, 0x5f, 0x4a, + 0x8c, 0x8f, 0xf9, 0xb4, 0xc4, 0xf2, 0xf1, 0xdd, 0x53, 0x92, 0x62, 0xae, 0x4f, 0x4b, 0x4f, 0x48, + 0x3f, 0x22, 0x3b, 0x94, 0xc6, 0x9d, 0x3e, 0x64, 0xdc, 0x5c, 0x9f, 0x16, 0xa1, 0x25, 0xaf, 0xc3, + 0xb0, 0xf8, 0x7d, 0xd7, 0x16, 0x37, 0xca, 0x52, 0x2c, 0x22, 0x09, 0x35, 0xd7, 0xa7, 0xc9, 0x94, + 0x52, 0xa5, 0xcb, 0x8e, 0x69, 0x79, 0xe2, 0x8d, 0x72, 0xbc, 0x52, 0xc4, 0x49, 0x95, 0xe2, 0x6f, + 0xf2, 0x0e, 0x8c, 0x06, 0x41, 0x9e, 0x3e, 0xa0, 0x0d, 0x4f, 0x1c, 0x7e, 0x9f, 0x8f, 0x15, 0xe6, + 0xc8, 0xb9, 0x3e, 0x2d, 0x4a, 0x4d, 0xae, 0x41, 0x49, 0xa3, 0xae, 0xf9, 0xa1, 0x7f, 0x5d, 0x3c, + 0x26, 0x8d, 0x73, 0xf3, 0x43, 0x26, 0x25, 0x81, 0x67, 0xbd, 0x13, 0xde, 0x4f, 0x8b, 0xa3, 0x6a, + 0x12, 0xab, 0x65, 0xc6, 0x32, 0x58, 0xef, 0x48, 0xce, 0x09, 0x9f, 0x0f, 0x43, 0x5f, 0x89, 0x84, + 0x99, 0xc3, 0xf1, 0x18, 0x03, 0x32, 0x76, 0xae, 0x4f, 0x8b, 0xd1, 0x4b, 0x52, 0xad, 0x98, 0xee, + 0x23, 0x11, 0x6d, 0x34, 0x2e, 0x55, 0x86, 0x92, 0xa4, 0xca, 0x7e, 0x4a, 0x55, 0x2f, 0x52, 0x6f, + 0xc3, 0x76, 0x1e, 0x89, 0xd8, 0xa2, 0xf1, 0xaa, 0x05, 0x56, 0xaa, 0x5a, 0x40, 0xe4, 0xaa, 0xd9, + 0x80, 0x1b, 0x4b, 0xaf, 0x5a, 0xf7, 0x74, 0xb9, 0x6a, 0x7e, 0x12, 0xe7, 0x77, 0xd2, 0x3c, 0xd5, + 0x1f, 0xf3, 0xbc, 0xe5, 0xc9, 0x0e, 0x45, 0x9c, 0xd4, 0xa1, 0xf8, 0x9b, 0x55, 0x2a, 0xe5, 0xa6, + 0x16, 0x89, 0xc9, 0x83, 0x4a, 0x25, 0x14, 0xab, 0x54, 0xce, 0x62, 0x7d, 0x5b, 0x4e, 0xd9, 0xac, + 0x4c, 0x44, 0x3b, 0x28, 0xc4, 0xb0, 0x0e, 0x92, 0x52, 0x3b, 0x4f, 0x62, 0x3a, 0x58, 0x85, 0x20, + 0xf9, 0x70, 0xd0, 0xc2, 0xe9, 0xe5, 0xb9, 0x3e, 0x0d, 0x13, 0xc5, 0xaa, 0x3c, 0xd1, 0xb0, 0x72, + 0x16, 0x29, 0x46, 0x7c, 0x0a, 0x06, 0x9b, 0xeb, 0xd3, 0x78, 0x12, 0xe2, 0x97, 0xa5, 0x94, 0x7e, + 0xca, 0xb9, 0xe8, 0x14, 0x11, 0x20, 0xd8, 0x14, 0x11, 0x26, 0xfe, 0x9b, 0x4d, 0xa6, 0xbd, 0x53, + 0xce, 0x47, 0x97, 0x9a, 0x38, 0x7e, 0xae, 0x4f, 0x4b, 0xa6, 0xca, 0x7b, 0x3d, 0x92, 0x09, 0x4e, + 0xb9, 0x10, 0x0b, 0x00, 0x16, 0xa2, 0x98, 0xb8, 0xe4, 0x9c, 0x71, 0x4b, 0xb1, 0xac, 0xe5, 0x62, + 0xb2, 0xba, 0x18, 0xdd, 0xb8, 0xa4, 0x90, 0xcc, 0xf5, 0x69, 0x69, 0x25, 0xc9, 0x74, 0x22, 0x1f, + 0x9b, 0xa2, 0x44, 0x7d, 0x63, 0x62, 0xe8, 0xb9, 0x3e, 0x2d, 0x91, 0xc1, 0xed, 0xb6, 0x9c, 0x08, + 0x4d, 0x79, 0x2a, 0xda, 0x89, 0x21, 0x86, 0x75, 0xa2, 0x94, 0x30, 0xed, 0xb6, 0x9c, 0x1c, 0x4b, + 0xb9, 0x94, 0x2c, 0x15, 0xce, 0x9c, 0x52, 0x12, 0x2d, 0x2d, 0x3d, 0xdf, 0x8f, 0xf2, 0xb4, 0xc8, + 0xb8, 0x2a, 0xca, 0xa7, 0xd1, 0xcc, 0xf5, 0x69, 0xe9, 0xb9, 0x82, 0xb4, 0xf4, 0x44, 0x39, 0xca, + 0xe5, 0x5e, 0x3c, 0x83, 0xd6, 0xa5, 0x27, 0xd9, 0xd1, 0x7b, 0xa4, 0x2d, 0x51, 0x9e, 0x89, 0x46, + 0x1f, 0xce, 0x24, 0x9c, 0xeb, 0xd3, 0x7a, 0x24, 0x3f, 0xb9, 0x9f, 0x91, 0x43, 0x44, 0xb9, 0x12, + 0x4d, 0xb8, 0x9c, 0x4a, 0x34, 0xd7, 0xa7, 0x65, 0x64, 0x20, 0xb9, 0x9f, 0x91, 0x62, 0x42, 0x99, + 0xec, 0xc9, 0x36, 0x90, 0x47, 0x46, 0x82, 0x8a, 0xa5, 0xd4, 0xec, 0x0c, 0xca, 0xb3, 0x51, 0xd5, + 0x4d, 0x21, 0x61, 0xaa, 0x9b, 0x96, 0xd7, 0x61, 0x29, 0x35, 0x9d, 0x80, 0xf2, 0x5c, 0x0f, 0x86, + 0x41, 0x1b, 0x53, 0x13, 0x11, 0x2c, 0xa5, 0xc6, 0xf3, 0x57, 0xd4, 0x28, 0xc3, 0x14, 0x12, 0xc6, + 0x30, 0x2d, 0x13, 0xc0, 0x52, 0x6a, 0xd8, 0x77, 0xe5, 0xf9, 0x1e, 0x0c, 0xc3, 0x16, 0xa6, 0x05, + 0x8c, 0x7f, 0x3d, 0x12, 0x77, 0x5d, 0xf9, 0x44, 0x74, 0xde, 0x90, 0x50, 0x6c, 0xde, 0x90, 0x23, + 0xb4, 0x4f, 0x27, 0x22, 0xcb, 0x2a, 0x9f, 0x8c, 0x0e, 0xf3, 0x18, 0x9a, 0x0d, 0xf3, 0x78, 0x2c, + 0xda, 0xe9, 0x44, 0x84, 0x4d, 0xe5, 0x6a, 0x16, 0x13, 0x44, 0x47, 0x99, 0xf0, 0x98, 0x9c, 0xd5, + 0x94, 0x10, 0x8f, 0xca, 0xa7, 0xa2, 0x7e, 0xdd, 0x09, 0x82, 0xb9, 0x3e, 0x2d, 0x25, 0x30, 0xa4, + 0x96, 0x1e, 0xcf, 0x48, 0xb9, 0x16, 0x1d, 0xb6, 0x69, 0x34, 0x6c, 0xd8, 0xa6, 0xc6, 0x42, 0x9a, + 0x4f, 0x7b, 0x7c, 0xa2, 0x5c, 0x8f, 0x1a, 0x66, 0x49, 0x0a, 0x66, 0x98, 0xa5, 0x3c, 0x5a, 0xd1, + 0xd2, 0x63, 0xec, 0x28, 0x2f, 0xf4, 0x6c, 0x21, 0xd2, 0xa4, 0xb4, 0x90, 0x87, 0x9c, 0x09, 0x6d, + 0xa7, 0xfb, 0x9d, 0x96, 0xad, 0x1b, 0xca, 0xa7, 0x53, 0x6d, 0x27, 0x8e, 0x94, 0x6c, 0x27, 0x0e, + 0x60, 0xab, 0xbc, 0xfc, 0xc6, 0x41, 0x79, 0x31, 0xba, 0xca, 0xcb, 0x38, 0xb6, 0xca, 0x47, 0xde, + 0x43, 0x4c, 0x27, 0xde, 0x03, 0x28, 0x2f, 0x45, 0x15, 0x20, 0x86, 0x66, 0x0a, 0x10, 0x7f, 0x41, + 0xf0, 0xe5, 0x6c, 0x0f, 0x7a, 0xe5, 0x06, 0x72, 0x7b, 0xd6, 0xe7, 0x96, 0x45, 0x37, 0xd7, 0xa7, + 0x65, 0x7b, 0xe1, 0x57, 0x53, 0x1c, 0xe2, 0x95, 0x9b, 0x51, 0x05, 0x4b, 0x10, 0x30, 0x05, 0x4b, + 0xba, 0xd1, 0x57, 0x53, 0x3c, 0xda, 0x95, 0xcf, 0x64, 0xb2, 0x0a, 0xbe, 0x39, 0xc5, 0x0f, 0xfe, + 0xb6, 0xec, 0x92, 0xae, 0xbc, 0x1c, 0x5d, 0xec, 0x42, 0x0c, 0x5b, 0xec, 0x24, 0xd7, 0xf5, 0xdb, + 0xb2, 0x33, 0xb6, 0x72, 0x2b, 0x59, 0x2a, 0x5c, 0x22, 0x25, 0xa7, 0x6d, 0x2d, 0xdd, 0x87, 0x59, + 0x79, 0x25, 0xaa, 0x75, 0x69, 0x34, 0x4c, 0xeb, 0x52, 0xfd, 0x9f, 0x67, 0x93, 0xae, 0xc8, 0xca, + 0xed, 0xf8, 0x26, 0x3b, 0x8a, 0x67, 0x96, 0x4f, 0xc2, 0x7d, 0xf9, 0xf3, 0xf1, 0x60, 0x7b, 0xca, + 0xab, 0xb1, 0x6b, 0xdf, 0x08, 0x96, 0xd9, 0xb7, 0xb1, 0xe0, 0x7c, 0x9f, 0x8f, 0xc7, 0xa7, 0x53, + 0x5e, 0x4b, 0xe7, 0x10, 0xe8, 0x4a, 0x3c, 0x9e, 0xdd, 0xe7, 0xe3, 0x21, 0xdd, 0x94, 0xd7, 0xd3, + 0x39, 0x04, 0xd2, 0x8d, 0x87, 0x80, 0x7b, 0x59, 0x0a, 0x32, 0xaf, 0x7c, 0x36, 0x6a, 0x3a, 0x06, + 0x08, 0x66, 0x3a, 0x86, 0xa1, 0xe8, 0x5f, 0x96, 0x82, 0xb3, 0x2b, 0x6f, 0x24, 0x8a, 0x04, 0x8d, + 0x95, 0x42, 0xb8, 0xbf, 0x2c, 0x05, 0x35, 0x57, 0xde, 0x4c, 0x14, 0x09, 0x5a, 0x27, 0x85, 0x3e, + 0x37, 0x7a, 0xbd, 0x5f, 0x55, 0xde, 0x8a, 0x1e, 0x06, 0x67, 0x53, 0xce, 0xf5, 0x69, 0xbd, 0xde, + 0xc1, 0x7e, 0x39, 0xdb, 0xb1, 0x5b, 0x79, 0x3b, 0x3a, 0x84, 0xb3, 0xe8, 0xd8, 0x10, 0xce, 0x74, + 0x0e, 0x7f, 0x27, 0x16, 0xcb, 0x42, 0x79, 0x27, 0x3a, 0xc5, 0x45, 0x90, 0x6c, 0x8a, 0x8b, 0x47, + 0xbe, 0x88, 0x04, 0x69, 0x50, 0x3e, 0x17, 0x9d, 0xe2, 0x64, 0x1c, 0x9b, 0xe2, 0x22, 0x01, 0x1d, + 0xa6, 0x13, 0xb1, 0x03, 0x94, 0x77, 0xa3, 0x53, 0x5c, 0x0c, 0xcd, 0xa6, 0xb8, 0x78, 0xb4, 0x81, + 0x77, 0x62, 0x4f, 0xe8, 0x95, 0xcf, 0xa7, 0xb7, 0x1f, 0x91, 0x72, 0xfb, 0xf9, 0x83, 0x7b, 0x2d, + 0xfd, 0x2d, 0xb8, 0x52, 0x8e, 0x8e, 0xdf, 0x34, 0x1a, 0x36, 0x7e, 0x53, 0xdf, 0x91, 0xc7, 0x37, + 0x0e, 0x42, 0xab, 0xa6, 0x7a, 0x6c, 0x1c, 0x42, 0x53, 0x24, 0x05, 0x1c, 0xd9, 0x23, 0xf3, 0x8d, + 0xd0, 0x74, 0xc6, 0x1e, 0xd9, 0xdf, 0x06, 0xc5, 0xe8, 0xd9, 0xec, 0x9a, 0xf0, 0x33, 0x56, 0x2a, + 0xd1, 0xd9, 0x35, 0x41, 0xc0, 0x66, 0xd7, 0xa4, 0x77, 0xf2, 0x2c, 0x8c, 0x0b, 0x2d, 0xe2, 0xee, + 0xd3, 0xa6, 0xd5, 0x54, 0x66, 0x62, 0xef, 0x2d, 0x63, 0x78, 0x36, 0x3b, 0xc5, 0x61, 0xb8, 0x5e, + 0x73, 0xd8, 0x74, 0xcb, 0xec, 0xac, 0xda, 0xba, 0x63, 0xd4, 0xa8, 0x65, 0x28, 0xb3, 0xb1, 0xf5, + 0x3a, 0x85, 0x06, 0xd7, 0xeb, 0x14, 0x38, 0x86, 0x88, 0x8b, 0xc1, 0x35, 0xda, 0xa0, 0xe6, 0x63, + 0xaa, 0xdc, 0x41, 0xb6, 0x93, 0x59, 0x6c, 0x05, 0xd9, 0x5c, 0x9f, 0x96, 0xc5, 0x81, 0xd9, 0xea, + 0x0b, 0x9b, 0xb5, 0xf7, 0xe6, 0x83, 0xf0, 0x03, 0xcb, 0x0e, 0xed, 0xe8, 0x0e, 0x55, 0xe6, 0xa2, + 0xb6, 0x7a, 0x2a, 0x11, 0xb3, 0xd5, 0x53, 0x11, 0x49, 0xb6, 0xfe, 0x58, 0xa8, 0xf6, 0x62, 0x1b, + 0x8e, 0x88, 0xf4, 0xd2, 0x6c, 0x76, 0x8a, 0x22, 0x98, 0x80, 0xe6, 0x6d, 0xab, 0x89, 0x27, 0x15, + 0x77, 0xa3, 0xb3, 0x53, 0x36, 0x25, 0x9b, 0x9d, 0xb2, 0xb1, 0x4c, 0xd5, 0xa3, 0x58, 0x3e, 0x06, + 0xef, 0x45, 0x55, 0x3d, 0x85, 0x84, 0xa9, 0x7a, 0x0a, 0x38, 0xc9, 0x50, 0xa3, 0x2e, 0xf5, 0x94, + 0xf9, 0x5e, 0x0c, 0x91, 0x24, 0xc9, 0x10, 0xc1, 0x49, 0x86, 0xb3, 0xd4, 0x6b, 0xac, 0x2b, 0x0b, + 0xbd, 0x18, 0x22, 0x49, 0x92, 0x21, 0x82, 0xd9, 0x66, 0x33, 0x0a, 0x9e, 0xea, 0xb6, 0x1e, 0xf9, + 0x7d, 0xb6, 0x18, 0xdd, 0x6c, 0x66, 0x12, 0xb2, 0xcd, 0x66, 0x26, 0x92, 0xfc, 0xf8, 0xae, 0xfd, + 0xe0, 0x95, 0x25, 0xac, 0xf0, 0x46, 0x68, 0x17, 0xec, 0xa6, 0xd4, 0x5c, 0x9f, 0xb6, 0x5b, 0x3f, + 0xfb, 0x4f, 0x07, 0x4e, 0xa3, 0xca, 0x32, 0x56, 0x75, 0x26, 0x38, 0xab, 0xe0, 0xe0, 0xb9, 0x3e, + 0x2d, 0x70, 0x2b, 0x7d, 0x1d, 0x86, 0xf1, 0xa3, 0xaa, 0x96, 0xe9, 0x55, 0xa6, 0x94, 0xf7, 0xa2, + 0x5b, 0x26, 0x09, 0xc5, 0xb6, 0x4c, 0xd2, 0x4f, 0x36, 0x89, 0xe3, 0x4f, 0x3e, 0xc5, 0x54, 0xa6, + 0x14, 0x2d, 0x3a, 0x89, 0x47, 0x90, 0x6c, 0x12, 0x8f, 0x00, 0x82, 0x7a, 0x2b, 0x8e, 0xdd, 0xa9, + 0x4c, 0x29, 0xb5, 0x94, 0x7a, 0x39, 0x2a, 0xa8, 0x97, 0xff, 0x0c, 0xea, 0xad, 0xad, 0x77, 0xbd, + 0x0a, 0xfb, 0xc6, 0x95, 0x94, 0x7a, 0x7d, 0x64, 0x50, 0xaf, 0x0f, 0x60, 0x53, 0x21, 0x02, 0x96, + 0x1d, 0x9b, 0x4d, 0xda, 0xf7, 0xcc, 0x56, 0x4b, 0xb9, 0x1f, 0x9d, 0x0a, 0xe3, 0x78, 0x36, 0x15, + 0xc6, 0x61, 0xcc, 0xf4, 0xe4, 0xad, 0xa2, 0xab, 0xdd, 0xa6, 0xf2, 0x20, 0x6a, 0x7a, 0x86, 0x18, + 0x66, 0x7a, 0x86, 0xbf, 0x70, 0x77, 0xc1, 0x7e, 0x69, 0x74, 0xcd, 0xa1, 0xee, 0xba, 0xf2, 0x30, + 0xb6, 0xbb, 0x90, 0x70, 0xb8, 0xbb, 0x90, 0x7e, 0x93, 0x26, 0x3c, 0x1d, 0x59, 0x68, 0xfc, 0x4b, + 0x9b, 0x1a, 0xd5, 0x9d, 0xc6, 0xba, 0xf2, 0x05, 0x64, 0xf5, 0x7c, 0xea, 0x52, 0x15, 0x25, 0x9d, + 0xeb, 0xd3, 0x7a, 0x71, 0xc2, 0x6d, 0xf9, 0x7b, 0xf3, 0x3c, 0x12, 0xac, 0xb6, 0x3c, 0xed, 0x6f, + 0x42, 0xdf, 0x8f, 0x6d, 0xcb, 0x93, 0x24, 0xb8, 0x2d, 0x4f, 0x82, 0x49, 0x07, 0xae, 0xc4, 0xb6, + 0x6a, 0x0b, 0x7a, 0x8b, 0xed, 0x4b, 0xa8, 0xb1, 0xac, 0x37, 0x1e, 0x51, 0x4f, 0xf9, 0x22, 0xf2, + 0xbe, 0x9a, 0xb1, 0xe1, 0x8b, 0x51, 0xcf, 0xf5, 0x69, 0x3b, 0xf0, 0x23, 0x2a, 0x14, 0x6b, 0xb3, + 0x2b, 0xcb, 0xca, 0x0f, 0x44, 0xcf, 0x37, 0x19, 0x6c, 0xae, 0x4f, 0x43, 0x1c, 0xb3, 0xd2, 0xee, + 0x77, 0x9a, 0x8e, 0x6e, 0x50, 0x6e, 0x68, 0xa1, 0xed, 0x26, 0x0c, 0xd0, 0x1f, 0x8c, 0x5a, 0x69, + 0x59, 0x74, 0xcc, 0x4a, 0xcb, 0xc2, 0x31, 0x45, 0x8d, 0x24, 0x3d, 0x51, 0xbe, 0x14, 0x55, 0xd4, + 0x08, 0x92, 0x29, 0x6a, 0x34, 0x45, 0xca, 0x17, 0xe0, 0x42, 0xb0, 0x9f, 0x17, 0xeb, 0x2f, 0xef, + 0x34, 0xe5, 0xcb, 0xc8, 0xe7, 0x4a, 0xe2, 0x32, 0x20, 0x42, 0x35, 0xd7, 0xa7, 0x65, 0x94, 0x67, + 0x2b, 0x6e, 0x22, 0x9f, 0x97, 0x30, 0x2f, 0x7e, 0x28, 0xba, 0xe2, 0x66, 0x90, 0xb1, 0x15, 0x37, + 0x03, 0x95, 0xca, 0x5c, 0x08, 0x55, 0xdf, 0x81, 0x79, 0x20, 0xd3, 0x2c, 0x0e, 0xa9, 0xcc, 0x85, + 0xa5, 0xb6, 0xba, 0x03, 0xf3, 0xc0, 0x5a, 0xcb, 0xe2, 0x40, 0xae, 0x41, 0xa9, 0x56, 0x5b, 0xd0, + 0xba, 0x96, 0xd2, 0x88, 0x79, 0xcb, 0x22, 0x74, 0xae, 0x4f, 0x13, 0x78, 0x66, 0x06, 0xcd, 0xb4, + 0x74, 0xd7, 0x33, 0x1b, 0x2e, 0x8e, 0x18, 0x7f, 0x84, 0x18, 0x51, 0x33, 0x28, 0x8d, 0x86, 0x99, + 0x41, 0x69, 0x70, 0x66, 0x2f, 0x4e, 0xeb, 0xae, 0xab, 0x5b, 0x86, 0xa3, 0x4f, 0xe1, 0x32, 0x41, + 0x63, 0xaf, 0xb1, 0x22, 0x58, 0x66, 0x2f, 0x46, 0x21, 0x78, 0xf8, 0xee, 0x43, 0x7c, 0x33, 0x67, + 0x2d, 0x76, 0xf8, 0x1e, 0xc3, 0xe3, 0xe1, 0x7b, 0x0c, 0x86, 0x76, 0xa7, 0x0f, 0xd3, 0x68, 0xd3, + 0x64, 0x22, 0x52, 0x9a, 0x31, 0xbb, 0x33, 0x4e, 0x80, 0x76, 0x67, 0x1c, 0x18, 0x69, 0x92, 0xbf, + 0xdc, 0xae, 0x67, 0x34, 0x29, 0x5c, 0x65, 0x13, 0x65, 0xd8, 0xfa, 0x1d, 0x0e, 0x8e, 0xca, 0xa6, + 0xa5, 0xb7, 0xed, 0xca, 0x94, 0x2f, 0x75, 0x33, 0xba, 0x7e, 0x67, 0x12, 0xb2, 0xf5, 0x3b, 0x13, + 0xc9, 0x66, 0x57, 0x7f, 0xa3, 0xb5, 0xae, 0x3b, 0xd4, 0xa8, 0x98, 0x0e, 0x9e, 0x2c, 0x6e, 0xf2, + 0xad, 0xe1, 0x07, 0xd1, 0xd9, 0xb5, 0x07, 0x29, 0x9b, 0x5d, 0x7b, 0xa0, 0x99, 0x91, 0x97, 0x8e, + 0xd6, 0xa8, 0x6e, 0x28, 0x8f, 0xa2, 0x46, 0x5e, 0x36, 0x25, 0x33, 0xf2, 0xb2, 0xb1, 0xd9, 0x9f, + 0xf3, 0xd0, 0x31, 0x3d, 0xaa, 0xb4, 0x76, 0xf3, 0x39, 0x48, 0x9a, 0xfd, 0x39, 0x88, 0x66, 0x1b, + 0xc2, 0x78, 0x87, 0xb4, 0xa3, 0x1b, 0xc2, 0x64, 0x37, 0xc4, 0x4b, 0x30, 0x8b, 0x45, 0x3c, 0xca, + 0x53, 0xac, 0xa8, 0xc5, 0x22, 0xc0, 0xcc, 0x62, 0x09, 0x9f, 0xed, 0x45, 0x9e, 0x62, 0x29, 0x76, + 0x74, 0x0d, 0x95, 0x71, 0x6c, 0x0d, 0x8d, 0x3c, 0xdb, 0x7a, 0x3d, 0xf2, 0xce, 0x40, 0xe9, 0x44, + 0xad, 0x0e, 0x09, 0xc5, 0xac, 0x0e, 0xf9, 0x45, 0xc2, 0x34, 0x9c, 0xc1, 0x5b, 0x70, 0xad, 0x1b, + 0xdc, 0xe3, 0xfc, 0x70, 0xf4, 0x33, 0x63, 0x68, 0xf6, 0x99, 0x31, 0x50, 0x84, 0x89, 0x98, 0xb6, + 0x9c, 0x0c, 0x26, 0xe1, 0xf9, 0x60, 0x0c, 0x44, 0xe6, 0x81, 0xd4, 0xca, 0x0b, 0xf3, 0x55, 0x63, + 0x59, 0xbe, 0x22, 0x73, 0xa3, 0x27, 0xb0, 0x49, 0x8a, 0xb9, 0x3e, 0x2d, 0xa5, 0x1c, 0xf9, 0x00, + 0x2e, 0x0b, 0xa8, 0x78, 0x71, 0x8d, 0x69, 0xff, 0x8d, 0x60, 0x41, 0xf0, 0xa2, 0x7e, 0x6c, 0xbd, + 0x68, 0xe7, 0xfa, 0xb4, 0x9e, 0xbc, 0xb2, 0xeb, 0x12, 0xeb, 0x43, 0x77, 0x37, 0x75, 0x05, 0x8b, + 0x44, 0x4f, 0x5e, 0xd9, 0x75, 0x09, 0xb9, 0x3f, 0xde, 0x4d, 0x5d, 0x41, 0x27, 0xf4, 0xe4, 0x45, + 0x5c, 0x98, 0xec, 0x85, 0x2f, 0xb7, 0x5a, 0xca, 0x06, 0x56, 0xf7, 0xa9, 0xdd, 0x54, 0x57, 0x46, + 0x83, 0x73, 0x27, 0x8e, 0x6c, 0x96, 0x5e, 0xea, 0x50, 0xab, 0x16, 0x59, 0x80, 0x9e, 0x44, 0x67, + 0xe9, 0x04, 0x01, 0x9b, 0xa5, 0x13, 0x40, 0x36, 0xa0, 0xe4, 0xe7, 0x2a, 0xca, 0x66, 0x74, 0x40, + 0xc9, 0x38, 0x36, 0xa0, 0x22, 0x4f, 0x5b, 0x96, 0xe0, 0xec, 0xd2, 0x23, 0x4f, 0xf7, 0x2d, 0x48, + 0x57, 0x74, 0xe5, 0x87, 0xb1, 0x4b, 0xa6, 0x24, 0x09, 0x5e, 0x32, 0x25, 0xc1, 0x6c, 0x8c, 0x30, + 0x70, 0x6d, 0xd3, 0x6a, 0xcc, 0xea, 0x66, 0xab, 0xeb, 0x50, 0xe5, 0xdf, 0x88, 0x8e, 0x91, 0x18, + 0x9a, 0x8d, 0x91, 0x18, 0x88, 0x2d, 0xd0, 0x0c, 0x54, 0x76, 0x5d, 0xb3, 0x69, 0x89, 0x7d, 0x65, + 0xb7, 0xe5, 0x29, 0xff, 0x66, 0x74, 0x81, 0x4e, 0xa3, 0x61, 0x0b, 0x74, 0x1a, 0x1c, 0x4f, 0x9d, + 0x58, 0x2f, 0xb0, 0xc5, 0x43, 0xbe, 0xab, 0xfc, 0xb7, 0x62, 0xa7, 0x4e, 0x29, 0x34, 0x78, 0xea, + 0x94, 0x02, 0x67, 0xeb, 0x23, 0xb7, 0xc9, 0xe6, 0xcd, 0xe0, 0xae, 0xfa, 0xdf, 0x8e, 0xae, 0x8f, + 0x71, 0x3c, 0x5b, 0x1f, 0xe3, 0xb0, 0x28, 0x1f, 0xd1, 0x05, 0xff, 0x4e, 0x16, 0x9f, 0x40, 0xfe, + 0x89, 0x32, 0xe4, 0x8e, 0xcc, 0x47, 0x8c, 0x94, 0x1f, 0xc9, 0x65, 0x31, 0x0a, 0x86, 0x47, 0xa2, + 0x50, 0x94, 0x91, 0x46, 0x1f, 0x9b, 0x74, 0x43, 0xf9, 0x4a, 0x26, 0x23, 0x4e, 0x10, 0x65, 0xc4, + 0x61, 0xe4, 0x7d, 0xb8, 0x10, 0xc2, 0x16, 0x68, 0x7b, 0x35, 0x98, 0x99, 0xfe, 0x44, 0x2e, 0x6a, + 0x06, 0xa7, 0x93, 0x31, 0x33, 0x38, 0x1d, 0x93, 0xc6, 0x5a, 0x88, 0xee, 0xdf, 0xdd, 0x81, 0x75, + 0x20, 0xc1, 0x0c, 0x06, 0x69, 0xac, 0x85, 0x34, 0x7f, 0x74, 0x07, 0xd6, 0x81, 0x4c, 0x33, 0x18, + 0x90, 0x9f, 0xc8, 0xc1, 0xd5, 0x74, 0x54, 0xb9, 0xd5, 0x9a, 0xb5, 0x9d, 0x10, 0xa7, 0xfc, 0xc9, + 0x5c, 0xf4, 0xa0, 0x61, 0x77, 0xc5, 0xe6, 0xfa, 0xb4, 0x5d, 0x56, 0x40, 0x3e, 0x07, 0xa3, 0xe5, + 0xae, 0x61, 0x7a, 0x78, 0xf1, 0xc6, 0x0c, 0xe7, 0x1f, 0xcb, 0xc5, 0xb6, 0x38, 0x32, 0x16, 0xb7, + 0x38, 0x32, 0x80, 0xdc, 0x85, 0x89, 0x1a, 0x6d, 0x74, 0x1d, 0xd3, 0xdb, 0xd4, 0x68, 0xc7, 0x76, + 0x3c, 0xc6, 0xe3, 0x4f, 0xe5, 0xa2, 0x93, 0x58, 0x82, 0x82, 0x4d, 0x62, 0x09, 0x20, 0x79, 0x90, + 0xb8, 0x95, 0x17, 0x9d, 0xf9, 0xe3, 0xb9, 0x9e, 0xd7, 0xf2, 0x41, 0x5f, 0xa6, 0x17, 0x27, 0xcb, + 0xb1, 0x5b, 0x74, 0xc1, 0xf5, 0x27, 0x72, 0x3d, 0xae, 0xd1, 0xa5, 0x19, 0x2e, 0x09, 0x66, 0x1c, + 0x53, 0x32, 0xc0, 0x2b, 0x7f, 0x3a, 0xd7, 0xe3, 0xda, 0x3b, 0xe4, 0x98, 0x96, 0x3c, 0xfe, 0x55, + 0xee, 0x29, 0x22, 0x18, 0xfd, 0x64, 0x2e, 0xe9, 0x2a, 0x12, 0x94, 0x97, 0x08, 0x59, 0xb1, 0xfb, + 0x6e, 0xa0, 0xf4, 0x5f, 0xcd, 0x25, 0x7d, 0xf3, 0xc2, 0x62, 0xe1, 0x2f, 0x42, 0xe1, 0xd2, 0xcc, + 0x13, 0x8f, 0x3a, 0x96, 0xde, 0xc2, 0xee, 0xac, 0x79, 0xb6, 0xa3, 0x37, 0xe9, 0x8c, 0xa5, 0xaf, + 0xb6, 0xa8, 0xf2, 0xb5, 0x5c, 0xd4, 0x82, 0xcd, 0x26, 0x65, 0x16, 0x6c, 0x36, 0x96, 0xac, 0xc3, + 0xd3, 0x69, 0xd8, 0x8a, 0xe9, 0x62, 0x3d, 0x5f, 0xcf, 0x45, 0x4d, 0xd8, 0x1e, 0xb4, 0xcc, 0x84, + 0xed, 0x81, 0x26, 0xb7, 0x60, 0x68, 0xca, 0xf6, 0xa7, 0xdf, 0x3f, 0x13, 0x73, 0x86, 0x0c, 0x30, + 0x73, 0x7d, 0x5a, 0x48, 0x26, 0xca, 0x88, 0x41, 0xfd, 0x8d, 0x64, 0x99, 0xf0, 0xf2, 0x29, 0xf8, + 0x21, 0xca, 0x08, 0x71, 0xff, 0x7b, 0xc9, 0x32, 0xe1, 0x1d, 0x57, 0xf0, 0x83, 0xcd, 0x24, 0xbc, + 0xc6, 0x85, 0xd9, 0x32, 0xb3, 0xdb, 0xa6, 0xd7, 0xf5, 0x56, 0x8b, 0x5a, 0x4d, 0xaa, 0x7c, 0x33, + 0x36, 0x93, 0xa4, 0x93, 0xb1, 0x99, 0x24, 0x1d, 0x43, 0x7e, 0x10, 0x2e, 0x3e, 0xd0, 0x5b, 0xa6, + 0x11, 0xe2, 0xfc, 0x7c, 0xe0, 0xca, 0x4f, 0xe5, 0xa2, 0xbb, 0xe9, 0x0c, 0x3a, 0xb6, 0x9b, 0xce, + 0x40, 0x91, 0x05, 0x20, 0xb8, 0x8c, 0x06, 0xb3, 0x05, 0x5b, 0x9f, 0x95, 0x7f, 0x3f, 0x17, 0xb5, + 0x53, 0x93, 0x24, 0xcc, 0x4e, 0x4d, 0x42, 0x49, 0x3d, 0x3b, 0x35, 0x88, 0xf2, 0xd3, 0xb9, 0xe8, + 0x69, 0x4d, 0x16, 0xe1, 0x5c, 0x9f, 0x96, 0x9d, 0x5f, 0xe4, 0x0e, 0x8c, 0xd7, 0x96, 0xab, 0xb3, + 0xb3, 0x33, 0xb5, 0x07, 0xd5, 0x0a, 0x3e, 0x74, 0x30, 0x94, 0x3f, 0x1b, 0x5b, 0xb1, 0xe2, 0x04, + 0x6c, 0xc5, 0x8a, 0xc3, 0xc8, 0x5b, 0x30, 0xc2, 0xda, 0xcf, 0x06, 0x0c, 0x7e, 0xf2, 0xcf, 0xe4, + 0xa2, 0xe6, 0x94, 0x8c, 0x64, 0xe6, 0x94, 0xfc, 0x9b, 0xd4, 0xe0, 0x1c, 0x93, 0xe2, 0xb2, 0x43, + 0xd7, 0xa8, 0x43, 0xad, 0x86, 0x3f, 0xa6, 0x7f, 0x36, 0x17, 0xb5, 0x32, 0xd2, 0x88, 0x98, 0x95, + 0x91, 0x06, 0x27, 0x8f, 0xe0, 0x72, 0xfc, 0x24, 0x48, 0x7e, 0x76, 0xaa, 0xfc, 0xb9, 0x5c, 0xcc, + 0x18, 0xee, 0x41, 0x8c, 0xc6, 0x70, 0x0f, 0x3c, 0xb1, 0xe0, 0x19, 0x71, 0xac, 0x22, 0x1c, 0x2e, + 0xe3, 0xb5, 0xfd, 0x79, 0x5e, 0xdb, 0x27, 0x43, 0x87, 0xc0, 0x1e, 0xd4, 0x73, 0x7d, 0x5a, 0x6f, + 0x76, 0x4c, 0xcf, 0x92, 0x09, 0x30, 0x94, 0x9f, 0xcb, 0xa5, 0x7b, 0xa4, 0x44, 0xdc, 0x94, 0xd3, + 0x32, 0x67, 0xbc, 0x9f, 0x95, 0xbe, 0x41, 0xf9, 0x0b, 0xb1, 0xf1, 0x96, 0x4e, 0xc6, 0xc6, 0x5b, + 0x46, 0xfe, 0x87, 0xbb, 0x30, 0xc1, 0x95, 0x7a, 0x59, 0xc7, 0x61, 0x68, 0x35, 0xa9, 0xa1, 0xfc, + 0xc5, 0xd8, 0x6a, 0x97, 0xa0, 0x40, 0xd7, 0x9e, 0x38, 0x90, 0x4d, 0xdd, 0xb5, 0x8e, 0x6e, 0x59, + 0x78, 0xcc, 0xaa, 0xfc, 0x07, 0xb1, 0xa9, 0x3b, 0x44, 0xa1, 0xe3, 0x6e, 0xf0, 0x8b, 0x69, 0x42, + 0xaf, 0xd4, 0x47, 0xca, 0x5f, 0x8a, 0x69, 0x42, 0x2f, 0x62, 0xa6, 0x09, 0x3d, 0xf3, 0x28, 0x3d, + 0xc8, 0x78, 0x02, 0xae, 0xfc, 0x7c, 0x6c, 0x45, 0x4e, 0xa5, 0x62, 0x2b, 0x72, 0xfa, 0x0b, 0xf2, + 0x07, 0x19, 0xcf, 0xa7, 0x95, 0x5f, 0xe8, 0xcd, 0x37, 0x5c, 0xe9, 0xd3, 0x5f, 0x5f, 0x3f, 0xc8, + 0x78, 0x7a, 0xac, 0xfc, 0xe5, 0xde, 0x7c, 0x43, 0xc7, 0xbe, 0xf4, 0x97, 0xcb, 0xf5, 0xec, 0x67, + 0xbb, 0xca, 0x5f, 0x89, 0x4f, 0x5d, 0x19, 0x84, 0x38, 0x75, 0x65, 0xbd, 0xfd, 0x5d, 0x85, 0xa7, + 0xb8, 0x86, 0xdc, 0x71, 0xf4, 0xce, 0x7a, 0x8d, 0x7a, 0x9e, 0x69, 0x35, 0xfd, 0x9d, 0xd8, 0x5f, + 0xcd, 0xc5, 0x8e, 0xc7, 0xb2, 0x28, 0xf1, 0x78, 0x2c, 0x0b, 0xc9, 0x94, 0x37, 0xf1, 0x40, 0x57, + 0xf9, 0x6b, 0x31, 0xe5, 0x4d, 0x50, 0x30, 0xe5, 0x4d, 0xbe, 0xeb, 0xbd, 0x9b, 0xf2, 0x0e, 0x55, + 0xf9, 0x0f, 0xb3, 0x79, 0x05, 0xed, 0x4b, 0x79, 0xbe, 0x7a, 0x37, 0xe5, 0xb9, 0xa5, 0xf2, 0x1f, + 0x65, 0xf3, 0x0a, 0x7d, 0x90, 0x92, 0xaf, 0x34, 0xdf, 0x87, 0x0b, 0x7c, 0x36, 0x9f, 0xa5, 0x06, + 0x8d, 0x7c, 0xe8, 0x2f, 0xc6, 0xc6, 0x7e, 0x3a, 0x19, 0x1e, 0xb9, 0xa7, 0x62, 0xd2, 0x58, 0x8b, + 0xb6, 0xfe, 0xf5, 0x1d, 0x58, 0x87, 0x1b, 0x82, 0x74, 0x0c, 0x5b, 0x6f, 0xe4, 0xc7, 0x6f, 0xca, + 0x2f, 0xc5, 0xd6, 0x1b, 0x19, 0x89, 0xee, 0x1c, 0xf2, 0x4b, 0xb9, 0xb7, 0xa2, 0x0f, 0xbd, 0x94, + 0xff, 0x38, 0xb5, 0x70, 0xd0, 0x01, 0xd1, 0x57, 0x61, 0x6f, 0x45, 0x1f, 0x35, 0x29, 0xbf, 0x9c, + 0x5a, 0x38, 0xf8, 0x80, 0xe8, 0x0b, 0x28, 0xb6, 0x45, 0xea, 0x7a, 0x36, 0x67, 0x15, 0x99, 0x1e, + 0xfe, 0x46, 0x7c, 0x8b, 0x94, 0x4a, 0x86, 0x5b, 0xa4, 0x54, 0x4c, 0x1a, 0x6b, 0xf1, 0x79, 0xbf, + 0xb2, 0x03, 0x6b, 0x69, 0x63, 0x97, 0x8a, 0x49, 0x63, 0x2d, 0x3e, 0xfe, 0x57, 0x77, 0x60, 0x2d, + 0x6d, 0xec, 0x52, 0x31, 0xcc, 0x1c, 0x0b, 0x31, 0x0f, 0xa8, 0xe3, 0x86, 0xea, 0xf7, 0x37, 0x63, + 0xe6, 0x58, 0x06, 0x1d, 0x33, 0xc7, 0x32, 0x50, 0xa9, 0xdc, 0x85, 0x50, 0x7e, 0x6d, 0x27, 0xee, + 0xe1, 0xbd, 0x4c, 0x06, 0x2a, 0x95, 0xbb, 0x90, 0xcb, 0xdf, 0xda, 0x89, 0x7b, 0x78, 0x31, 0x93, + 0x81, 0x62, 0x46, 0x51, 0xcd, 0xd3, 0x3d, 0xb3, 0x31, 0x67, 0xbb, 0x9e, 0xb4, 0xc8, 0xff, 0xed, + 0x98, 0x51, 0x94, 0x46, 0xc4, 0x8c, 0xa2, 0x34, 0x78, 0x92, 0xa9, 0x90, 0xc6, 0xaf, 0xf7, 0x64, + 0x1a, 0x5a, 0x5a, 0x69, 0xf0, 0x24, 0x53, 0x21, 0x84, 0xff, 0xa4, 0x27, 0xd3, 0xd0, 0x53, 0x3e, + 0x0d, 0xce, 0x2c, 0xd3, 0x69, 0xc7, 0xde, 0xb0, 0xee, 0xd2, 0x0d, 0xda, 0x12, 0x9f, 0xfe, 0x1b, + 0x31, 0xcb, 0x34, 0x4e, 0x80, 0xb7, 0x28, 0x31, 0x58, 0x94, 0x91, 0xf8, 0xdc, 0xdf, 0xcc, 0x64, + 0x14, 0x1e, 0x13, 0xc5, 0x61, 0x51, 0x46, 0xe2, 0x13, 0x7f, 0x2b, 0x93, 0x51, 0x78, 0x4c, 0x14, + 0x87, 0xe1, 0xca, 0x15, 0x74, 0x7a, 0xb9, 0x49, 0x2d, 0x6f, 0xb9, 0xa5, 0xfb, 0x5a, 0xff, 0xad, + 0xf8, 0xca, 0x95, 0x45, 0x89, 0x2b, 0x57, 0x16, 0x32, 0xa3, 0x0e, 0xf1, 0xf9, 0xbf, 0xbd, 0x73, + 0x1d, 0xd2, 0xea, 0x98, 0x85, 0xcc, 0xa8, 0x43, 0x48, 0xe6, 0x77, 0x76, 0xae, 0x23, 0x10, 0x51, + 0x36, 0x9b, 0xa9, 0x01, 0xe8, 0xc7, 0x33, 0x57, 0xf5, 0xe7, 0x73, 0x30, 0x52, 0xf3, 0x1c, 0xaa, + 0xb7, 0x45, 0x64, 0xb8, 0x4b, 0x30, 0xc8, 0x9d, 0x97, 0xfd, 0x97, 0xd6, 0x5a, 0xf0, 0x9b, 0x5c, + 0x85, 0xb1, 0x79, 0xdd, 0xf5, 0xb0, 0x64, 0xd5, 0x32, 0xe8, 0x13, 0x7c, 0xb8, 0x57, 0xd0, 0x62, + 0x50, 0x32, 0xcf, 0xe9, 0x78, 0x39, 0x0c, 0x06, 0x5a, 0xd8, 0x31, 0x20, 0xda, 0xe0, 0x77, 0xb6, + 0x26, 0xfb, 0x30, 0xfe, 0x59, 0xac, 0xac, 0xfa, 0x7b, 0x39, 0x48, 0xb8, 0x55, 0xef, 0x3f, 0x02, + 0xc2, 0x12, 0x9c, 0x89, 0x05, 0xa0, 0x15, 0xaf, 0x0f, 0x77, 0x19, 0x9f, 0x36, 0x5e, 0x9a, 0x7c, + 0x2a, 0x78, 0xf5, 0x76, 0x5f, 0x9b, 0x17, 0xc1, 0xee, 0x30, 0x4d, 0x43, 0xd7, 0x69, 0x69, 0x12, + 0x4a, 0x04, 0x33, 0xfa, 0xde, 0x78, 0x18, 0x5d, 0x93, 0x5c, 0x15, 0xe1, 0x18, 0x72, 0x61, 0x88, + 0xbc, 0x58, 0x52, 0x78, 0x1e, 0x7e, 0xe1, 0x73, 0x30, 0x52, 0x6d, 0x77, 0xa8, 0xe3, 0xda, 0x96, + 0xee, 0xd9, 0x8e, 0x78, 0xcd, 0x8e, 0xe1, 0xd3, 0x4c, 0x09, 0x2e, 0x87, 0xf4, 0x92, 0xe9, 0xc9, + 0x75, 0x3f, 0xd3, 0x5c, 0x01, 0xe3, 0x9a, 0xe2, 0x93, 0xd4, 0x78, 0xa2, 0x71, 0x4e, 0xc1, 0x48, + 0xef, 0xbb, 0x3a, 0xbe, 0x8f, 0x0c, 0x48, 0xbb, 0x0c, 0x20, 0x93, 0x22, 0x05, 0x79, 0x11, 0x4a, + 0x78, 0x9f, 0xe4, 0x62, 0x06, 0x49, 0x11, 0xb8, 0xaf, 0x85, 0x10, 0x39, 0x4c, 0x1a, 0xa7, 0x21, + 0xf7, 0x60, 0x3c, 0xbc, 0x2c, 0xbf, 0xe3, 0xd8, 0xdd, 0x8e, 0x9f, 0x33, 0x06, 0x13, 0xb4, 0x3f, + 0x0a, 0x70, 0xf5, 0x26, 0x22, 0x25, 0x16, 0x89, 0x82, 0x64, 0x0e, 0xce, 0x84, 0x30, 0x26, 0x22, + 0x3f, 0x57, 0x15, 0xe6, 0x09, 0x95, 0x78, 0x31, 0x71, 0x46, 0xf2, 0x84, 0xc6, 0x8a, 0x91, 0x2a, + 0x0c, 0xf8, 0x51, 0xfb, 0x06, 0x77, 0x54, 0xd2, 0xb3, 0x22, 0x6a, 0xdf, 0x80, 0x1c, 0xaf, 0xcf, + 0x2f, 0x4f, 0x66, 0x61, 0x4c, 0xb3, 0xbb, 0x1e, 0x5d, 0xb1, 0xc5, 0x2e, 0x53, 0x44, 0x87, 0xc4, + 0x36, 0x39, 0x0c, 0x53, 0xf7, 0x6c, 0x3f, 0xbf, 0xbd, 0x9c, 0x67, 0x3d, 0x5a, 0x8a, 0x2c, 0xc2, + 0x44, 0xc2, 0xad, 0x40, 0xce, 0x3a, 0x2f, 0x7d, 0x5e, 0x92, 0x59, 0xb2, 0x28, 0xf9, 0xb1, 0x1c, + 0x94, 0x56, 0x1c, 0xdd, 0xf4, 0x5c, 0xf1, 0xb4, 0xf2, 0xfc, 0x8d, 0x0d, 0x47, 0xef, 0x30, 0xfd, + 0xb8, 0x81, 0x81, 0x6b, 0x1f, 0xe8, 0xad, 0x2e, 0x75, 0xa7, 0x1e, 0xb2, 0xaf, 0xfb, 0xef, 0xb7, + 0x26, 0xdf, 0x6a, 0xe2, 0xe1, 0xe5, 0x8d, 0x86, 0xdd, 0xbe, 0xd9, 0x74, 0xf4, 0xc7, 0xa6, 0x87, + 0x26, 0xa2, 0xde, 0xba, 0xe9, 0xd1, 0x16, 0x9e, 0x91, 0xde, 0xd4, 0x3b, 0xe6, 0x4d, 0x0c, 0x90, + 0x7e, 0x33, 0xe0, 0xc4, 0x6b, 0x60, 0x2a, 0xe0, 0xe1, 0x5f, 0xb2, 0x0a, 0x70, 0x1c, 0x59, 0x04, + 0x10, 0x9f, 0x5a, 0xee, 0x74, 0xc4, 0x3b, 0x4d, 0xe9, 0x64, 0xd1, 0xc7, 0x70, 0xc5, 0x0e, 0x04, + 0xa6, 0x77, 0xa4, 0xa0, 0xc0, 0x9a, 0xc4, 0x81, 0x69, 0xc1, 0x8a, 0x68, 0x91, 0x2f, 0xa6, 0xd1, + 0x50, 0xe2, 0x7e, 0x63, 0x53, 0x84, 0x14, 0x2f, 0x46, 0x56, 0xe1, 0x8c, 0xe0, 0x1b, 0xa4, 0x10, + 0x19, 0x8b, 0xce, 0x0a, 0x31, 0x34, 0x57, 0xda, 0xa0, 0x8d, 0x86, 0x00, 0xcb, 0x75, 0xc4, 0x4a, + 0x90, 0xa9, 0x30, 0xe5, 0xf1, 0xa2, 0xde, 0xa6, 0xae, 0x72, 0x06, 0x35, 0xf6, 0xf2, 0xf6, 0xd6, + 0xa4, 0xe2, 0x97, 0xc7, 0x00, 0x96, 0xa9, 0xe9, 0xff, 0xb1, 0x88, 0xcc, 0x83, 0x6b, 0xfd, 0x78, + 0x0a, 0x8f, 0xb8, 0xce, 0x47, 0x8b, 0x90, 0x69, 0x18, 0x0d, 0x9e, 0x89, 0xdc, 0xbf, 0x5f, 0xad, + 0xe0, 0x43, 0x50, 0x11, 0xc3, 0x34, 0x96, 0xe4, 0x43, 0x66, 0x12, 0x29, 0x23, 0xc5, 0xd6, 0xe0, + 0x2f, 0x43, 0x63, 0xb1, 0x35, 0x3a, 0x29, 0xb1, 0x35, 0x96, 0xc9, 0x3b, 0x30, 0x5c, 0x7e, 0x58, + 0x13, 0x31, 0x43, 0x5c, 0xe5, 0x6c, 0x98, 0x31, 0x4a, 0xdf, 0x70, 0xeb, 0x7e, 0x7c, 0x11, 0xb9, + 0xe9, 0x32, 0x3d, 0x99, 0x81, 0xb1, 0x88, 0xa7, 0x99, 0xab, 0x9c, 0x43, 0x0e, 0xd8, 0x72, 0x1d, + 0x31, 0x75, 0x47, 0xa0, 0xe4, 0xe1, 0x15, 0x2d, 0xc4, 0xb4, 0xa6, 0x62, 0xba, 0x98, 0x7d, 0x47, + 0xa3, 0x18, 0x9e, 0x04, 0x9f, 0x95, 0x0e, 0x72, 0xad, 0x31, 0x04, 0xaa, 0xee, 0x70, 0x9c, 0xdc, + 0xa3, 0xb1, 0x62, 0xe4, 0x03, 0x20, 0x98, 0xaf, 0x87, 0x1a, 0xfe, 0xc5, 0x63, 0xb5, 0xe2, 0x2a, + 0x17, 0x30, 0x80, 0x37, 0x89, 0x87, 0x43, 0xa8, 0x56, 0xa6, 0xae, 0x8a, 0xe9, 0xe3, 0x8a, 0xce, + 0x4b, 0xd5, 0xfd, 0x50, 0x08, 0x75, 0x33, 0x92, 0xcc, 0x38, 0x85, 0x2b, 0xd9, 0x80, 0x8b, 0xcb, + 0x0e, 0x7d, 0x6c, 0xda, 0x5d, 0xd7, 0x5f, 0x3e, 0xfc, 0x79, 0xeb, 0xe2, 0x8e, 0xf3, 0xd6, 0x73, + 0xa2, 0xe2, 0xf3, 0x1d, 0x87, 0x3e, 0xae, 0xfb, 0x61, 0x9b, 0x23, 0x51, 0x47, 0xb3, 0xb8, 0x63, + 0x4a, 0xe6, 0x0f, 0xbb, 0x0e, 0x15, 0x70, 0x93, 0xba, 0x8a, 0x12, 0x4e, 0xb5, 0x3c, 0xd2, 0x8c, + 0x19, 0xe0, 0x22, 0x29, 0x99, 0xa3, 0xc5, 0x88, 0x06, 0xe4, 0xce, 0xb4, 0x7f, 0x09, 0x5d, 0x6e, + 0xf0, 0xc4, 0xb5, 0xca, 0x53, 0xc8, 0x4c, 0x65, 0x62, 0x69, 0x36, 0x82, 0x10, 0xee, 0x75, 0x5d, + 0xe0, 0x65, 0xb1, 0x24, 0x4b, 0x93, 0x79, 0x18, 0x5f, 0x76, 0xf0, 0x48, 0xec, 0x1e, 0xdd, 0x5c, + 0xb6, 0x5b, 0x66, 0x63, 0x13, 0x5f, 0xb7, 0x8a, 0xa9, 0xb2, 0xc3, 0x71, 0xf5, 0x47, 0x74, 0xb3, + 0xde, 0x41, 0xac, 0xbc, 0xac, 0xc4, 0x4b, 0xca, 0x21, 0x95, 0x9f, 0xde, 0x5d, 0x48, 0x65, 0x0a, + 0xe3, 0xe2, 0x0a, 0xfb, 0x89, 0x47, 0x2d, 0xb6, 0xd4, 0xbb, 0xe2, 0x25, 0xab, 0x12, 0xbb, 0xf2, + 0x0e, 0xf0, 0x7c, 0xea, 0x10, 0xa3, 0x8c, 0x06, 0x60, 0xb9, 0x61, 0xf1, 0x22, 0xc9, 0xb8, 0xc3, + 0xcf, 0xec, 0x23, 0xee, 0xf0, 0xdf, 0x2e, 0xc8, 0xf3, 0x2f, 0xb9, 0x0c, 0x45, 0x29, 0x2d, 0x10, + 0x06, 0x55, 0xc5, 0x10, 0xea, 0x45, 0x11, 0x2b, 0x7a, 0x48, 0xd8, 0x2e, 0x41, 0xf4, 0x1c, 0xcc, + 0x03, 0x19, 0x06, 0xda, 0xd4, 0x42, 0x02, 0xcc, 0xc1, 0xd7, 0x5d, 0x6d, 0x99, 0x0d, 0x0c, 0xac, + 0x5f, 0x90, 0xc2, 0x65, 0x20, 0x94, 0xc7, 0xd5, 0x97, 0x48, 0xc8, 0x2d, 0x18, 0xf6, 0x8f, 0x62, + 0xc3, 0xa0, 0xc2, 0x18, 0x6f, 0x5d, 0xcc, 0xd6, 0x22, 0x9c, 0xbb, 0x44, 0x44, 0xde, 0x04, 0x08, + 0xa7, 0x03, 0x61, 0x69, 0xe1, 0x52, 0x21, 0xcf, 0x1e, 0xf2, 0x52, 0x11, 0x52, 0xb3, 0x89, 0x53, + 0x56, 0x47, 0x3f, 0xeb, 0x28, 0x4e, 0x9c, 0x11, 0x1d, 0x96, 0x15, 0x24, 0x5a, 0x84, 0x2c, 0xc1, + 0x44, 0x42, 0x03, 0x45, 0x08, 0x62, 0xcc, 0x3c, 0x9f, 0xa2, 0xbe, 0xf2, 0xc2, 0x9c, 0x28, 0x4b, + 0x9e, 0x87, 0xc2, 0x7d, 0xad, 0x2a, 0xc2, 0xa0, 0xf2, 0x08, 0xba, 0x91, 0x18, 0x49, 0x0c, 0xab, + 0xfe, 0x89, 0x7c, 0x62, 0x6d, 0x62, 0xd2, 0x13, 0xac, 0xa4, 0x1e, 0x44, 0xe9, 0xf9, 0xf5, 0x73, + 0xe9, 0x49, 0x44, 0xe4, 0x1a, 0x0c, 0x2e, 0xb3, 0x99, 0xa1, 0x61, 0xb7, 0x44, 0x7f, 0x62, 0x40, + 0xab, 0x8e, 0x80, 0x69, 0x01, 0x96, 0xdc, 0x92, 0x92, 0xe5, 0x4a, 0x91, 0xc5, 0xfd, 0x64, 0xb9, + 0xf1, 0x10, 0xdb, 0x98, 0x36, 0xf7, 0x56, 0x2c, 0xf9, 0x96, 0x28, 0x93, 0xb2, 0x2e, 0x86, 0xc9, + 0xb6, 0x02, 0xab, 0xb4, 0x7f, 0x27, 0xab, 0x54, 0xfd, 0x3b, 0xb9, 0xe4, 0x38, 0x23, 0xb7, 0x93, + 0x41, 0x7e, 0x71, 0x11, 0x0a, 0x80, 0x72, 0xad, 0x41, 0xb8, 0xdf, 0x48, 0xb8, 0xde, 0xfc, 0xbe, + 0xc3, 0xf5, 0x16, 0xf6, 0x18, 0xae, 0x57, 0xfd, 0x7f, 0x8a, 0x3d, 0x5d, 0xae, 0x8f, 0x24, 0xac, + 0xdb, 0x1b, 0x6c, 0x67, 0xc5, 0x6a, 0x2f, 0xbb, 0x89, 0xfd, 0x01, 0xf7, 0x28, 0xad, 0xeb, 0x7c, + 0x68, 0xb9, 0x5a, 0x94, 0x92, 0xbc, 0x0b, 0x23, 0xfe, 0x07, 0x60, 0x18, 0x68, 0x29, 0x7c, 0x71, + 0xb0, 0xaa, 0xc5, 0x02, 0x26, 0x47, 0x0a, 0x90, 0x57, 0x61, 0x08, 0x6d, 0x9a, 0x8e, 0xde, 0xf0, + 0x63, 0x84, 0xf3, 0xa0, 0xe2, 0x3e, 0x50, 0x0e, 0x5d, 0x16, 0x50, 0x92, 0x2f, 0x41, 0x49, 0x24, + 0xca, 0xe0, 0x79, 0xe4, 0x6f, 0xee, 0xc2, 0x47, 0xfd, 0x86, 0x9c, 0x24, 0x83, 0xef, 0x52, 0x10, + 0x10, 0xd9, 0xa5, 0xf0, 0xfc, 0x18, 0x2b, 0x70, 0x76, 0xd9, 0xa1, 0x06, 0xbe, 0x86, 0x98, 0x79, + 0xd2, 0x71, 0x44, 0x0a, 0x13, 0x3e, 0xca, 0x71, 0x91, 0xea, 0xf8, 0x68, 0xb6, 0x7c, 0x0a, 0xbc, + 0x1c, 0xa8, 0x38, 0xa5, 0x38, 0xb3, 0x5c, 0x78, 0x4b, 0xee, 0xd1, 0xcd, 0x0d, 0xdb, 0x31, 0x78, + 0x96, 0x0f, 0x31, 0x7f, 0x0b, 0x41, 0x3f, 0x12, 0x28, 0xd9, 0x72, 0x89, 0x16, 0xba, 0xf4, 0x06, + 0x0c, 0xef, 0x37, 0xd1, 0xc4, 0xaf, 0xe5, 0x33, 0x1e, 0x2f, 0x9d, 0xdc, 0x5c, 0x7f, 0x41, 0x02, + 0xea, 0xfe, 0x8c, 0x04, 0xd4, 0x7f, 0x94, 0xcf, 0x78, 0x99, 0x75, 0xa2, 0x13, 0xc5, 0x06, 0xc2, + 0x88, 0x26, 0x8a, 0x0d, 0x73, 0xf4, 0x9a, 0x86, 0x26, 0x13, 0xc5, 0x52, 0x4a, 0x97, 0x76, 0x4c, + 0x29, 0xfd, 0x8b, 0x85, 0x5e, 0x2f, 0xd7, 0x4e, 0x65, 0xbf, 0x17, 0xd9, 0xdf, 0x82, 0xe1, 0x40, + 0xb2, 0xd5, 0x0a, 0x1a, 0x3d, 0xa3, 0x41, 0x5a, 0x1b, 0x0e, 0xc6, 0x32, 0x12, 0x11, 0xb9, 0xce, + 0xdb, 0x5a, 0x33, 0x3f, 0xe4, 0x09, 0x16, 0x46, 0x45, 0xe8, 0x7c, 0xdd, 0xd3, 0xeb, 0xae, 0xf9, + 0x21, 0xd5, 0x02, 0xb4, 0xfa, 0xf7, 0xf2, 0xa9, 0xcf, 0xff, 0x4e, 0xfb, 0x68, 0x0f, 0x7d, 0x94, + 0x22, 0x44, 0xfe, 0x70, 0xf1, 0x54, 0x88, 0x7b, 0x10, 0xe2, 0x1f, 0xe6, 0x53, 0x9f, 0x79, 0x9e, + 0x0a, 0x71, 0x2f, 0xb3, 0xc5, 0x8b, 0x30, 0xa4, 0xd9, 0x1b, 0xee, 0x34, 0x6e, 0x6c, 0xf8, 0x5c, + 0x81, 0x13, 0xb5, 0x63, 0x6f, 0xb8, 0x75, 0xdc, 0xb2, 0x68, 0x21, 0x81, 0xfa, 0xbd, 0x7c, 0x8f, + 0x87, 0xb0, 0xa7, 0x82, 0xff, 0x28, 0x97, 0xc8, 0xdf, 0xcc, 0x47, 0x1e, 0xda, 0x9e, 0x5c, 0x61, + 0xdf, 0x04, 0xa8, 0x35, 0xd6, 0x69, 0x5b, 0x97, 0x92, 0x54, 0xe1, 0xb9, 0x83, 0x8b, 0x50, 0x91, + 0xdc, 0x38, 0x24, 0x51, 0xbf, 0x95, 0x8f, 0xbd, 0x34, 0x3e, 0x95, 0xdd, 0xae, 0x65, 0x17, 0x68, + 0x9d, 0x78, 0x3c, 0x7d, 0x2a, 0xb9, 0xdd, 0x4a, 0xee, 0xc7, 0xf3, 0xb1, 0x77, 0xe6, 0x27, 0x56, + 0x76, 0x6c, 0x00, 0x26, 0xdf, 0xbf, 0x9f, 0x58, 0x4d, 0x7a, 0x11, 0x86, 0x84, 0x1c, 0x82, 0xa5, + 0x82, 0xcf, 0xfb, 0x1c, 0x88, 0xa7, 0xac, 0x01, 0x81, 0xfa, 0x27, 0xf3, 0x10, 0x7d, 0xff, 0x7f, + 0x42, 0x75, 0xe8, 0x37, 0xf3, 0xd1, 0xc8, 0x07, 0x27, 0x57, 0x7f, 0x6e, 0x00, 0xd4, 0xba, 0xab, + 0x0d, 0x11, 0x38, 0xb7, 0x5f, 0x3a, 0xa6, 0x0f, 0xa0, 0x9a, 0x44, 0xa1, 0xfe, 0xbf, 0xf9, 0xd4, + 0x70, 0x0c, 0x27, 0x57, 0x80, 0xaf, 0xe0, 0xa9, 0x78, 0xc3, 0x0a, 0x27, 0x72, 0x3c, 0x84, 0x64, + 0xe3, 0x2f, 0x91, 0xd9, 0xd0, 0x27, 0x24, 0x9f, 0x4d, 0x31, 0xd7, 0x30, 0xef, 0x42, 0x68, 0xae, + 0xc9, 0xd7, 0x10, 0x92, 0xe1, 0xf6, 0x0f, 0xf2, 0x3b, 0x45, 0xaf, 0x38, 0xc9, 0xab, 0xea, 0xc0, + 0xb2, 0xbe, 0x89, 0x51, 0x16, 0x59, 0x4f, 0x8c, 0xf0, 0xbc, 0x7b, 0x1d, 0x0e, 0x92, 0xef, 0xde, + 0x04, 0x95, 0xfa, 0x2f, 0xfa, 0xd3, 0x43, 0x27, 0x9c, 0x5c, 0x11, 0x5e, 0x86, 0xe2, 0xb2, 0xee, + 0xad, 0x0b, 0x4d, 0xc6, 0x2b, 0xbd, 0x8e, 0xee, 0xad, 0x6b, 0x08, 0x25, 0xd7, 0x61, 0x50, 0xd3, + 0x37, 0xf8, 0x99, 0x67, 0x29, 0xcc, 0x89, 0xe8, 0xe8, 0x1b, 0x75, 0x7e, 0xee, 0x19, 0xa0, 0x89, + 0x1a, 0xe4, 0xe4, 0xe4, 0x27, 0xdf, 0x98, 0x10, 0x8e, 0xe7, 0xe4, 0x0c, 0x32, 0x71, 0x5e, 0x86, + 0xe2, 0x94, 0x6d, 0x6c, 0xe2, 0xf5, 0xd5, 0x08, 0xaf, 0x6c, 0xd5, 0x36, 0x36, 0x35, 0x84, 0x92, + 0x9f, 0xc8, 0xc1, 0xc0, 0x1c, 0xd5, 0x0d, 0x36, 0x42, 0x86, 0x7a, 0x79, 0x9d, 0x7c, 0xe1, 0x70, + 0xbc, 0x4e, 0x26, 0xd6, 0x79, 0x65, 0xb2, 0xa2, 0x88, 0xfa, 0xc9, 0x1d, 0x18, 0x9c, 0xd6, 0x3d, + 0xda, 0xb4, 0x9d, 0x4d, 0xf4, 0xa3, 0x19, 0x0b, 0xdd, 0xef, 0x23, 0xfa, 0xe3, 0x13, 0xf1, 0x9b, + 0xb1, 0x86, 0xf8, 0xa5, 0x05, 0x85, 0x99, 0x58, 0x78, 0xca, 0x7f, 0x91, 0x7f, 0x1a, 0xc5, 0xe2, + 0x21, 0x44, 0x13, 0x98, 0xf0, 0x58, 0x79, 0x24, 0xfd, 0x58, 0x19, 0xad, 0x47, 0xf4, 0xb5, 0xc3, + 0x4c, 0x98, 0xa3, 0xb8, 0xe8, 0x73, 0xeb, 0x11, 0xa1, 0x98, 0x08, 0x53, 0x93, 0x48, 0xd4, 0xef, + 0xf6, 0x43, 0xea, 0x43, 0xeb, 0x53, 0x25, 0x3f, 0x55, 0xf2, 0x50, 0xc9, 0x2b, 0x09, 0x25, 0xbf, + 0x94, 0x7c, 0xba, 0xff, 0x31, 0xd5, 0xf0, 0x9f, 0x29, 0x26, 0x02, 0x7f, 0x9c, 0xec, 0xdd, 0x65, + 0x28, 0xbd, 0xfe, 0x1d, 0xa5, 0x17, 0x0c, 0x88, 0xd2, 0x8e, 0x03, 0x62, 0x60, 0xb7, 0x03, 0x62, + 0x30, 0x73, 0x40, 0x84, 0x0a, 0x32, 0x94, 0xa9, 0x20, 0x55, 0x31, 0x68, 0xa0, 0x77, 0xfe, 0x91, + 0xcb, 0xdb, 0x5b, 0x93, 0x63, 0x6c, 0x34, 0xa5, 0x26, 0x1e, 0x41, 0x16, 0xea, 0xef, 0x15, 0x7b, + 0x44, 0xeb, 0x39, 0x12, 0x1d, 0x79, 0x05, 0x0a, 0xe5, 0x4e, 0x47, 0xe8, 0xc7, 0x59, 0x29, 0x50, + 0x50, 0x46, 0x29, 0x46, 0x4d, 0xde, 0x84, 0x42, 0xf9, 0x61, 0x2d, 0x9e, 0x73, 0xa4, 0xfc, 0xb0, + 0x26, 0xbe, 0x24, 0xb3, 0xec, 0xc3, 0x1a, 0x79, 0x3b, 0x0c, 0xfe, 0xb9, 0xde, 0xb5, 0x1e, 0x89, + 0x8d, 0xa2, 0x70, 0xb7, 0xf5, 0xdd, 0x71, 0x1a, 0x0c, 0xc5, 0xb6, 0x8b, 0x31, 0xda, 0x98, 0x36, + 0x95, 0x76, 0xaf, 0x4d, 0x03, 0x3b, 0x6a, 0xd3, 0xe0, 0x6e, 0xb5, 0x69, 0x68, 0x17, 0xda, 0x04, + 0x3b, 0x6a, 0xd3, 0xf0, 0xc1, 0xb5, 0xa9, 0x03, 0x97, 0x92, 0x11, 0xd6, 0x02, 0x8d, 0xd0, 0x80, + 0x24, 0xb1, 0xc2, 0xb1, 0x04, 0xaf, 0xfe, 0xbb, 0x1c, 0x5b, 0xdf, 0x40, 0x74, 0xdd, 0x65, 0x78, + 0xd9, 0x3f, 0x2d, 0x59, 0x5a, 0xfd, 0xb5, 0x7c, 0x76, 0x60, 0xb8, 0xe3, 0x39, 0xc5, 0xfd, 0x50, + 0xaa, 0x94, 0x8a, 0xd1, 0x87, 0xfa, 0xd9, 0x52, 0x8e, 0xb1, 0x4d, 0x93, 0xd9, 0xb7, 0x73, 0x59, + 0xd1, 0xea, 0x0e, 0x24, 0xb1, 0x4f, 0x26, 0x3d, 0xda, 0xd0, 0x4f, 0xdf, 0x8d, 0xba, 0xb2, 0xcd, + 0xc2, 0x88, 0x2c, 0x44, 0x21, 0xa5, 0xdd, 0x08, 0x38, 0x52, 0x4e, 0xfd, 0x3b, 0x39, 0x38, 0x7b, + 0xaf, 0xbb, 0x4a, 0x85, 0x07, 0x5b, 0xd0, 0x8c, 0x0f, 0x00, 0x18, 0x58, 0x38, 0xb1, 0xe4, 0xd0, + 0x89, 0xe5, 0xd3, 0x72, 0xa4, 0xb9, 0x58, 0x81, 0x1b, 0x21, 0x35, 0x77, 0x60, 0x79, 0xc6, 0x77, + 0xe6, 0x7c, 0xd4, 0x5d, 0xa5, 0xf5, 0x84, 0x27, 0x8b, 0xc4, 0xfd, 0xd2, 0x3b, 0xdc, 0x4d, 0x7e, + 0xbf, 0x4e, 0x23, 0xbf, 0x92, 0xcf, 0x0c, 0xee, 0x77, 0x6c, 0xb3, 0x50, 0xfe, 0x40, 0x6a, 0xaf, + 0xc4, 0xb3, 0x51, 0xa6, 0x90, 0xc4, 0x38, 0xa6, 0x71, 0x49, 0x17, 0xd8, 0x31, 0xcf, 0x8d, 0xfa, + 0x91, 0x0a, 0xec, 0x1f, 0xe5, 0x32, 0x83, 0x30, 0x1e, 0x57, 0x81, 0xa9, 0xff, 0x4b, 0xc1, 0x8f, + 0xfd, 0x78, 0xa0, 0x4f, 0x78, 0x11, 0x86, 0xc4, 0x13, 0xf8, 0xa8, 0x03, 0xae, 0x38, 0xca, 0xc3, + 0xa3, 0xe1, 0x80, 0x80, 0x2d, 0xf3, 0x92, 0x77, 0xb0, 0xe4, 0x80, 0x2b, 0x79, 0x06, 0x6b, 0x12, + 0x09, 0x5b, 0xc8, 0x67, 0x9e, 0x98, 0x1e, 0x5a, 0x05, 0xac, 0x2f, 0x0b, 0x7c, 0x21, 0xa7, 0x4f, + 0x4c, 0x8f, 0xdb, 0x04, 0x01, 0x9a, 0x2d, 0xd2, 0xb5, 0x30, 0xf3, 0xbb, 0x58, 0xa4, 0x5d, 0x91, + 0x00, 0x5f, 0x3c, 0x1b, 0x7b, 0x11, 0x86, 0x84, 0x57, 0xab, 0x70, 0x33, 0x11, 0xad, 0x15, 0x7e, + 0xb0, 0xd8, 0xda, 0x80, 0x80, 0x71, 0xd4, 0x68, 0x33, 0x74, 0xac, 0x43, 0x8e, 0x0e, 0x42, 0x34, + 0x81, 0x21, 0xb7, 0x60, 0xac, 0xe6, 0xe9, 0x96, 0xa1, 0x3b, 0xc6, 0x52, 0xd7, 0xeb, 0x74, 0x3d, + 0xd9, 0x28, 0x75, 0x3d, 0xc3, 0xee, 0x7a, 0x5a, 0x8c, 0x82, 0x7c, 0x06, 0x46, 0x7d, 0xc8, 0x8c, + 0xe3, 0xd8, 0x8e, 0x6c, 0x79, 0xb8, 0x9e, 0x41, 0x1d, 0x47, 0x8b, 0x12, 0x90, 0xcf, 0xc2, 0x68, + 0xd5, 0x7a, 0x6c, 0x37, 0xf8, 0x33, 0x70, 0x6d, 0x5e, 0xd8, 0x21, 0xf8, 0x14, 0xcb, 0x0c, 0x10, + 0xf5, 0xae, 0xd3, 0xd2, 0xa2, 0x84, 0xea, 0x76, 0x3e, 0x19, 0x22, 0xf3, 0xe4, 0x6e, 0x5a, 0xae, + 0x47, 0x9d, 0xe9, 0xd0, 0x83, 0x14, 0x0d, 0x42, 0xd9, 0x97, 0x97, 0xdb, 0x85, 0xb7, 0x60, 0xf0, + 0x1e, 0xdd, 0xe4, 0x7e, 0x9f, 0xa5, 0xd0, 0x55, 0xf8, 0x91, 0x80, 0xc9, 0x27, 0xae, 0x3e, 0x9d, + 0xfa, 0xbb, 0xf9, 0x64, 0xf0, 0xcf, 0x93, 0x2b, 0xec, 0xcf, 0xc0, 0x00, 0x8a, 0xb2, 0xea, 0x1f, + 0xf9, 0xa3, 0x00, 0x51, 0xdc, 0x51, 0x0f, 0x64, 0x9f, 0x4c, 0xfd, 0x85, 0x52, 0x3c, 0x22, 0xec, + 0xc9, 0x95, 0xde, 0x5b, 0x30, 0x3c, 0x6d, 0x5b, 0xae, 0xe9, 0x7a, 0xd4, 0x6a, 0xf8, 0x0a, 0xfb, + 0x14, 0x33, 0xa8, 0x1a, 0x21, 0x58, 0x7e, 0x83, 0x24, 0x51, 0xef, 0x47, 0x79, 0xc9, 0x6b, 0x30, + 0x84, 0x22, 0x47, 0x3f, 0x69, 0x3e, 0xe1, 0xe1, 0x6d, 0xc1, 0x2a, 0x03, 0xc6, 0x9d, 0xa4, 0x43, + 0x52, 0x72, 0x1f, 0x06, 0xa7, 0xd7, 0xcd, 0x96, 0xe1, 0x50, 0x0b, 0xfd, 0x85, 0xa5, 0x67, 0xbf, + 0xd1, 0xbe, 0xbc, 0x81, 0xff, 0x22, 0x2d, 0x6f, 0x4e, 0x43, 0x14, 0x8b, 0xbc, 0xc2, 0x12, 0xb0, + 0x4b, 0x3f, 0x9d, 0x07, 0x08, 0x0b, 0x90, 0x67, 0x21, 0x1f, 0x24, 0x55, 0x46, 0x37, 0x95, 0x88, + 0x06, 0xe5, 0x71, 0xa9, 0x10, 0x63, 0x3b, 0xbf, 0xe3, 0xd8, 0xbe, 0x0f, 0x25, 0x7e, 0xe2, 0x85, + 0x9e, 0xe4, 0x52, 0x90, 0xca, 0xcc, 0x06, 0xdf, 0x40, 0x7a, 0xbe, 0x99, 0x45, 0xcb, 0x33, 0xe2, + 0x95, 0xcd, 0x99, 0x5d, 0x6a, 0x40, 0x3f, 0xfe, 0x45, 0xae, 0x42, 0x71, 0xc5, 0x4f, 0xc8, 0x3a, + 0xca, 0x67, 0xe9, 0x98, 0xfc, 0x10, 0xcf, 0xba, 0x69, 0xda, 0xb6, 0x3c, 0x56, 0x35, 0xb6, 0x7a, + 0x44, 0xc8, 0x45, 0xc0, 0x22, 0x72, 0x11, 0x30, 0xf5, 0xbf, 0xca, 0xa7, 0xc4, 0x2a, 0x3e, 0xb9, + 0xc3, 0xe4, 0x0d, 0x00, 0x7c, 0xd2, 0xcd, 0xe4, 0xe9, 0x3f, 0xd1, 0xc0, 0x51, 0x82, 0x8c, 0x50, + 0x6d, 0x23, 0xdb, 0x8e, 0x90, 0x58, 0xfd, 0xfb, 0xb9, 0x44, 0x80, 0xdb, 0x03, 0xc9, 0x51, 0xb6, + 0xca, 0xf2, 0xfb, 0x34, 0x63, 0xfd, 0xbe, 0x28, 0xec, 0xad, 0x2f, 0xa2, 0xdf, 0x72, 0x08, 0x96, + 0xe9, 0x51, 0x7e, 0xcb, 0x77, 0xf3, 0x69, 0xe1, 0x7e, 0x8f, 0xa7, 0x8a, 0xdf, 0x0e, 0x8c, 0xd2, + 0x62, 0x2c, 0xc0, 0x3a, 0x42, 0xe3, 0x49, 0xa3, 0x85, 0x99, 0xfa, 0x65, 0x38, 0x13, 0x0b, 0x82, + 0x2b, 0xf2, 0xf7, 0x5e, 0xed, 0x1d, 0x4d, 0x37, 0x3b, 0x18, 0x40, 0x84, 0x4c, 0xfd, 0xff, 0x72, + 0xbd, 0x43, 0x20, 0x1f, 0xb9, 0xea, 0xa4, 0x08, 0xa0, 0xf0, 0xc7, 0x23, 0x80, 0x43, 0xd8, 0x06, + 0x1f, 0x6f, 0x01, 0x7c, 0x4c, 0x26, 0x8f, 0x8f, 0x5a, 0x00, 0xbf, 0x90, 0xdb, 0x31, 0x82, 0xf5, + 0x51, 0xcb, 0x40, 0xfd, 0x1f, 0x73, 0xa9, 0x91, 0xa6, 0x0f, 0xd4, 0xae, 0xb7, 0xa1, 0xc4, 0xdd, + 0x6a, 0x44, 0xab, 0xa4, 0xdc, 0x5c, 0x0c, 0x9a, 0x95, 0xcd, 0x9e, 0x63, 0xc9, 0x3c, 0x0c, 0xf0, + 0x36, 0x18, 0xa2, 0x37, 0x3e, 0xd1, 0x23, 0xdc, 0xb5, 0x91, 0x35, 0x39, 0x0a, 0xb4, 0xfa, 0x77, + 0x73, 0x89, 0xc0, 0xd7, 0x47, 0xf8, 0x6d, 0xe1, 0x54, 0x5d, 0xd8, 0xfd, 0x54, 0xad, 0xfe, 0xf3, + 0x7c, 0x7a, 0xdc, 0xed, 0x23, 0xfc, 0x90, 0xc3, 0x38, 0x4e, 0xdb, 0xdf, 0xba, 0xb5, 0x02, 0x63, + 0x51, 0x59, 0x88, 0x65, 0xeb, 0x4a, 0x7a, 0xf4, 0xf1, 0x8c, 0x56, 0xc4, 0x78, 0xa8, 0xdf, 0xc9, + 0x25, 0x43, 0x86, 0x1f, 0xf9, 0xfc, 0xb4, 0x3f, 0x6d, 0x89, 0x7e, 0xca, 0xc7, 0x64, 0xad, 0x39, + 0x8c, 0x4f, 0xf9, 0x98, 0xac, 0x1a, 0xfb, 0xfb, 0x94, 0x5f, 0xca, 0x67, 0x45, 0x5c, 0x3f, 0xf2, + 0x0f, 0xfa, 0xa2, 0x2c, 0x64, 0xde, 0x32, 0xf1, 0x69, 0xcf, 0x66, 0x85, 0x38, 0xcf, 0xe0, 0x99, + 0xe0, 0xb3, 0xbf, 0x31, 0x9e, 0x2a, 0xac, 0x8f, 0x89, 0x22, 0x1f, 0x0f, 0x61, 0x7d, 0x4c, 0x86, + 0xca, 0xc7, 0x4f, 0x58, 0xbf, 0x9d, 0xdf, 0x6d, 0x98, 0xff, 0x53, 0xe1, 0x25, 0x84, 0xf7, 0x8d, + 0x7c, 0x32, 0xfd, 0xc4, 0x91, 0x8b, 0x69, 0x16, 0x4a, 0x22, 0x11, 0x46, 0xa6, 0x70, 0x38, 0x3e, + 0xcb, 0xa2, 0x11, 0xdf, 0x71, 0x1b, 0xc4, 0x45, 0xce, 0xee, 0x44, 0xc2, 0x69, 0xd5, 0xef, 0xe5, + 0x62, 0xb9, 0x1a, 0x8e, 0xe4, 0x08, 0x61, 0x5f, 0x4b, 0x12, 0x79, 0xc7, 0x3f, 0xcc, 0x2c, 0xc6, + 0x62, 0x65, 0x07, 0xdf, 0x53, 0xa1, 0x9e, 0x6e, 0xb6, 0xe2, 0xe5, 0x45, 0x4c, 0x80, 0xdf, 0xcd, + 0xc3, 0x44, 0x82, 0x94, 0x5c, 0x8d, 0x84, 0xd2, 0xc1, 0x63, 0xc9, 0x98, 0xf3, 0x38, 0x0f, 0xaa, + 0xb3, 0x87, 0x93, 0xd4, 0xab, 0x50, 0xac, 0xe8, 0x9b, 0xfc, 0xdb, 0xfa, 0x39, 0x4b, 0x43, 0xdf, + 0x94, 0x4f, 0xdc, 0x10, 0x4f, 0x56, 0xe1, 0x3c, 0xbf, 0x0f, 0x31, 0x6d, 0x6b, 0xc5, 0x6c, 0xd3, + 0xaa, 0xb5, 0x60, 0xb6, 0x5a, 0xa6, 0x2b, 0x2e, 0xf5, 0x5e, 0xdc, 0xde, 0x9a, 0xbc, 0xe6, 0xd9, + 0x9e, 0xde, 0xaa, 0x53, 0x9f, 0xac, 0xee, 0x99, 0x6d, 0x5a, 0x37, 0xad, 0x7a, 0x1b, 0x29, 0x25, + 0x96, 0xe9, 0xac, 0x48, 0x95, 0x87, 0x45, 0xaf, 0x35, 0x74, 0xcb, 0xa2, 0x46, 0xd5, 0x9a, 0xda, + 0xf4, 0x28, 0xbf, 0x0c, 0x2c, 0xf0, 0x23, 0x41, 0xfe, 0x36, 0x9c, 0xa3, 0x19, 0xe3, 0x55, 0x46, + 0xa0, 0xa5, 0x14, 0x52, 0x7f, 0xa7, 0x98, 0x92, 0xa6, 0xe3, 0x18, 0xa9, 0x8f, 0xdf, 0xd3, 0xc5, + 0x1d, 0x7a, 0xfa, 0x26, 0x0c, 0x88, 0xb8, 0xb3, 0xe2, 0x82, 0x01, 0x9d, 0xd9, 0x1f, 0x73, 0x90, + 0x7c, 0x43, 0x23, 0xa8, 0x48, 0x0b, 0x2e, 0xad, 0xb0, 0x6e, 0x4a, 0xef, 0xcc, 0xd2, 0x3e, 0x3a, + 0xb3, 0x07, 0x3f, 0xf2, 0x3e, 0x5c, 0x44, 0x6c, 0x4a, 0xb7, 0x0e, 0x60, 0x55, 0x18, 0xa3, 0x8a, + 0x57, 0x95, 0xde, 0xb9, 0x59, 0xe5, 0xc9, 0x17, 0x61, 0x24, 0x18, 0x20, 0x26, 0x75, 0xc5, 0xcd, + 0x45, 0x8f, 0x71, 0xc6, 0x03, 0xc0, 0x31, 0x30, 0xba, 0x90, 0x45, 0x83, 0x88, 0x45, 0x78, 0xa9, + 0xff, 0x43, 0xae, 0x57, 0xba, 0x90, 0x23, 0x9f, 0x95, 0xdf, 0x81, 0x01, 0x83, 0x7f, 0x94, 0xd0, + 0xa9, 0xde, 0x09, 0x45, 0x38, 0xa9, 0xe6, 0x97, 0x51, 0xff, 0x59, 0xae, 0x67, 0x96, 0x92, 0xe3, + 0xfe, 0x79, 0xdf, 0x28, 0x64, 0x7c, 0x9e, 0x98, 0x44, 0xaf, 0xc3, 0xb8, 0x19, 0x86, 0x51, 0xaf, + 0x87, 0xe1, 0xa7, 0xb4, 0x33, 0x12, 0x1c, 0x47, 0xd7, 0x6d, 0xb8, 0xe0, 0x3b, 0x3e, 0x3a, 0xbe, + 0x87, 0x98, 0x5b, 0xef, 0x3a, 0x26, 0x1f, 0x97, 0xda, 0x39, 0x37, 0xe6, 0x3e, 0xe6, 0xde, 0x77, + 0x4c, 0x56, 0x81, 0xee, 0xad, 0x53, 0x4b, 0xaf, 0x6f, 0xd8, 0xce, 0x23, 0x8c, 0x32, 0xca, 0x07, + 0xa7, 0x76, 0x86, 0xc3, 0x1f, 0xfa, 0x60, 0xf2, 0x3c, 0x8c, 0x36, 0x5b, 0x5d, 0x1a, 0xc4, 0x75, + 0xe4, 0x77, 0x7d, 0xda, 0x08, 0x03, 0x06, 0x37, 0x24, 0xcf, 0x00, 0x20, 0x91, 0x87, 0x39, 0x64, + 0xf0, 0x62, 0x4f, 0x1b, 0x62, 0x90, 0x15, 0xd1, 0x5d, 0x97, 0xb8, 0x56, 0x73, 0x21, 0xd5, 0x5b, + 0xb6, 0xd5, 0xac, 0x7b, 0xd4, 0x69, 0x63, 0x43, 0xd1, 0x99, 0x41, 0xbb, 0x80, 0x14, 0x78, 0x75, + 0xe2, 0xce, 0xdb, 0x56, 0x73, 0x85, 0x3a, 0x6d, 0xd6, 0xd4, 0x17, 0x81, 0x88, 0xa6, 0x3a, 0x78, + 0xe8, 0xc1, 0x3f, 0x0e, 0xbd, 0x19, 0x34, 0xf1, 0x11, 0xfc, 0x34, 0x04, 0x3f, 0x6c, 0x12, 0x86, + 0x79, 0x70, 0x3b, 0x2e, 0x34, 0x74, 0x61, 0xd0, 0x80, 0x83, 0x50, 0x5e, 0x17, 0x40, 0x78, 0x57, + 0x70, 0xaf, 0x6e, 0x4d, 0xfc, 0x52, 0xbf, 0x5a, 0x48, 0x4b, 0xac, 0x72, 0x20, 0x45, 0x0b, 0xa7, + 0xd5, 0xfc, 0x9e, 0xa6, 0xd5, 0x33, 0x56, 0xb7, 0x5d, 0xd7, 0x3b, 0x9d, 0xfa, 0x9a, 0xd9, 0xc2, + 0x67, 0x55, 0xb8, 0xf0, 0x69, 0xa3, 0x56, 0xb7, 0x5d, 0xee, 0x74, 0x66, 0x39, 0x90, 0xbc, 0x00, + 0x13, 0x8c, 0x0e, 0x3b, 0x29, 0xa0, 0x2c, 0x22, 0x25, 0x63, 0x80, 0xd1, 0x61, 0x7d, 0xda, 0xa7, + 0x60, 0x50, 0xf0, 0xe4, 0x6b, 0x55, 0xbf, 0x36, 0xc0, 0x99, 0xb9, 0xac, 0xe7, 0x02, 0x36, 0x7c, + 0x72, 0xed, 0xd7, 0x86, 0xfc, 0xf2, 0x18, 0x03, 0xd9, 0xea, 0xb6, 0x79, 0x44, 0xac, 0x01, 0x44, + 0x06, 0xbf, 0xc9, 0x55, 0x18, 0x63, 0x5c, 0x02, 0x81, 0xf1, 0xb0, 0xb1, 0xfd, 0x5a, 0x0c, 0x4a, + 0x6e, 0xc1, 0xb9, 0x08, 0x84, 0xdb, 0xa0, 0xfc, 0x99, 0x40, 0xbf, 0x96, 0x8a, 0x53, 0xbf, 0x55, + 0x88, 0xa6, 0x7b, 0x39, 0x82, 0x8e, 0xb8, 0x08, 0x03, 0xb6, 0xd3, 0xac, 0x77, 0x9d, 0x96, 0x18, + 0x7b, 0x25, 0xdb, 0x69, 0xde, 0x77, 0x5a, 0xe4, 0x3c, 0x94, 0x58, 0xef, 0x98, 0x86, 0x18, 0x62, + 0xfd, 0x7a, 0xa7, 0x53, 0x35, 0x48, 0x99, 0x77, 0x08, 0x86, 0x1c, 0xad, 0x37, 0x70, 0x6b, 0xcf, + 0x9d, 0x12, 0xfa, 0xf9, 0x8a, 0x97, 0x40, 0x62, 0x3f, 0x61, 0x20, 0x52, 0x7e, 0x10, 0x10, 0x63, + 0x61, 0xe0, 0xb6, 0xc4, 0xe0, 0x7d, 0x12, 0x67, 0x21, 0x90, 0x21, 0x0b, 0xbe, 0x89, 0x31, 0x48, + 0x05, 0x48, 0x48, 0xd5, 0xb6, 0x0d, 0x73, 0xcd, 0xa4, 0xfc, 0x55, 0x47, 0x3f, 0xbf, 0xf8, 0x4d, + 0x62, 0xb5, 0x71, 0x9f, 0xc9, 0x82, 0x80, 0x90, 0xb7, 0xb8, 0x12, 0x72, 0x3a, 0x5c, 0xfb, 0x78, + 0xdf, 0x72, 0x3b, 0x2d, 0x86, 0x42, 0xcd, 0xc4, 0xf2, 0xb8, 0x10, 0xaa, 0x7f, 0xb5, 0x98, 0xcc, + 0xf9, 0x73, 0x24, 0x76, 0xcd, 0x1c, 0x80, 0x48, 0xe9, 0x15, 0x5e, 0xae, 0x05, 0x1e, 0xe7, 0x21, + 0x26, 0x83, 0x87, 0x54, 0x96, 0x5c, 0x87, 0x41, 0xfe, 0x45, 0xd5, 0x8a, 0xb0, 0x77, 0xd0, 0x45, + 0xcc, 0xed, 0x98, 0x6b, 0x6b, 0xe8, 0x4f, 0x16, 0xa0, 0xc9, 0x55, 0x18, 0xa8, 0x2c, 0xd6, 0x6a, + 0xe5, 0x45, 0xff, 0xa6, 0x18, 0xdf, 0x97, 0x18, 0x96, 0x5b, 0x77, 0x75, 0xcb, 0xd5, 0x7c, 0x24, + 0x79, 0x1e, 0x4a, 0xd5, 0x65, 0x24, 0xe3, 0xaf, 0x26, 0x87, 0xb7, 0xb7, 0x26, 0x07, 0xcc, 0x0e, + 0xa7, 0x12, 0x28, 0xac, 0xf7, 0x41, 0xb5, 0x22, 0xb9, 0x4b, 0xf0, 0x7a, 0x1f, 0x9b, 0x06, 0x5e, + 0x3b, 0x6b, 0x01, 0x9a, 0xbc, 0x0a, 0x23, 0x35, 0xea, 0x98, 0x7a, 0x6b, 0xb1, 0x8b, 0x5b, 0x45, + 0x29, 0x94, 0xa2, 0x8b, 0xf0, 0xba, 0x85, 0x08, 0x2d, 0x42, 0x46, 0x2e, 0x43, 0x71, 0xce, 0xb4, + 0xfc, 0x27, 0x0c, 0xe8, 0xe3, 0xbe, 0x6e, 0x5a, 0x9e, 0x86, 0x50, 0xf2, 0x3c, 0x14, 0xee, 0xae, + 0x54, 0x85, 0x27, 0x18, 0xf2, 0xfa, 0xc0, 0x8b, 0x84, 0x65, 0xbc, 0xbb, 0x52, 0x25, 0xaf, 0xc2, + 0x10, 0x5b, 0xc4, 0xa8, 0xd5, 0xa0, 0xae, 0x32, 0x8c, 0x1f, 0xc3, 0xc3, 0x08, 0xfa, 0x40, 0xd9, + 0xa7, 0x23, 0xa0, 0x54, 0xff, 0x8f, 0x7c, 0x7a, 0x52, 0xa6, 0x23, 0x18, 0xea, 0xfb, 0xbc, 0x45, + 0x8e, 0x29, 0x58, 0xf1, 0x00, 0x0a, 0xb6, 0x06, 0x67, 0xca, 0x46, 0xdb, 0xb4, 0xca, 0xf8, 0xd3, + 0x5d, 0x98, 0x2d, 0xe3, 0xd4, 0x21, 0x3d, 0xcf, 0x8b, 0xa1, 0xc5, 0xf7, 0xf0, 0x80, 0xbf, 0x0c, + 0x55, 0xd7, 0x39, 0xae, 0xde, 0x5e, 0xd3, 0xeb, 0x0d, 0x9e, 0xcf, 0x48, 0x8b, 0x33, 0x55, 0x7f, + 0x2a, 0xbf, 0x43, 0x1e, 0xa9, 0x93, 0x28, 0x7d, 0xf5, 0x9b, 0xf9, 0xde, 0xa9, 0xbc, 0x4e, 0xa4, + 0x50, 0xfe, 0x30, 0x9f, 0x92, 0x58, 0xeb, 0x40, 0x92, 0xb8, 0x0e, 0x83, 0x9c, 0x4d, 0xe0, 0xc6, + 0x8b, 0xb3, 0x19, 0x57, 0x56, 0x9c, 0x45, 0x7d, 0x34, 0x59, 0x84, 0x73, 0xe5, 0xb5, 0x35, 0xda, + 0xf0, 0xc2, 0xd0, 0xcf, 0x8b, 0x61, 0x10, 0x56, 0x1e, 0xea, 0x56, 0xe0, 0xc3, 0xd0, 0xd1, 0x18, + 0x6c, 0x24, 0xb5, 0x1c, 0x59, 0x81, 0x0b, 0x71, 0x78, 0x8d, 0x6f, 0x01, 0x8a, 0x52, 0xf4, 0xdb, + 0x04, 0x47, 0xfe, 0x9f, 0x96, 0x51, 0x36, 0xad, 0x95, 0x38, 0x55, 0xf7, 0xf7, 0x6a, 0x25, 0xce, + 0xdb, 0xa9, 0xe5, 0xd4, 0xdf, 0x2d, 0xc8, 0xf9, 0xc7, 0x4e, 0xae, 0xc3, 0xd5, 0xed, 0x88, 0x9b, + 0xf5, 0x6e, 0x87, 0xcc, 0xab, 0x22, 0x82, 0x88, 0xd1, 0x75, 0x7c, 0x8f, 0xc4, 0x20, 0x82, 0x01, + 0x02, 0xe5, 0x75, 0x28, 0xa0, 0x24, 0x55, 0x28, 0x96, 0x9d, 0x26, 0x37, 0x6f, 0x77, 0x7a, 0x54, + 0xa5, 0x3b, 0x4d, 0x37, 0xfd, 0x51, 0x15, 0x63, 0xa1, 0xfe, 0x99, 0x7c, 0x8f, 0x94, 0x61, 0x27, + 0x72, 0x12, 0xf9, 0xf3, 0xf9, 0xac, 0xe4, 0x5f, 0xc7, 0xd5, 0x75, 0xec, 0x23, 0x16, 0xce, 0xf1, + 0xf6, 0xab, 0x3b, 0x64, 0xe1, 0x64, 0x24, 0x22, 0x3b, 0x15, 0xce, 0x57, 0xf3, 0x59, 0xb9, 0xd8, + 0x4e, 0xec, 0x2c, 0x93, 0x91, 0xfe, 0xed, 0x54, 0x57, 0x7e, 0x2e, 0x9f, 0x99, 0x01, 0xef, 0x54, + 0x3a, 0xea, 0xd7, 0xf2, 0x99, 0x19, 0xfc, 0x4e, 0xe4, 0x50, 0x4a, 0xd5, 0x96, 0xd3, 0xb1, 0x24, + 0xa4, 0xf3, 0xfb, 0xf9, 0xf4, 0x9c, 0x89, 0x47, 0xa0, 0x2a, 0x87, 0xe1, 0x81, 0xe7, 0x0b, 0xb4, + 0x78, 0x20, 0x81, 0xf6, 0x1f, 0xaa, 0x40, 0x8f, 0x6c, 0xec, 0x7d, 0xbf, 0x0a, 0xf4, 0x10, 0x06, + 0xef, 0x49, 0x16, 0xe8, 0x4f, 0x16, 0x92, 0x79, 0x42, 0x4f, 0xe4, 0x11, 0xe5, 0x14, 0x0c, 0xfa, + 0x67, 0x18, 0x42, 0xa0, 0xbb, 0xee, 0x4e, 0xbf, 0x1c, 0x79, 0x17, 0xce, 0x84, 0xb2, 0x94, 0x23, + 0x53, 0xe1, 0xf5, 0x46, 0x83, 0xa1, 0xea, 0x1f, 0x30, 0x9c, 0x08, 0xa1, 0x12, 0xa7, 0x56, 0xbf, + 0x57, 0x48, 0x26, 0x5b, 0x3d, 0xed, 0x8d, 0x7d, 0xf6, 0xc6, 0x7d, 0xb8, 0x30, 0xdd, 0x75, 0x1c, + 0x6a, 0x79, 0xe9, 0x9d, 0x82, 0x87, 0xcb, 0x0d, 0x4e, 0x51, 0x4f, 0x76, 0x4e, 0x46, 0x61, 0xc6, + 0x56, 0x78, 0xdf, 0xc7, 0xd9, 0x0e, 0x84, 0x6c, 0xbb, 0x9c, 0x22, 0x8d, 0x6d, 0x7a, 0x61, 0xf5, + 0x1f, 0xe4, 0x93, 0xe9, 0x71, 0x4f, 0xbb, 0x7e, 0x7f, 0x5d, 0xaf, 0xfe, 0xc5, 0x7c, 0x8f, 0x14, + 0xc1, 0xa7, 0x86, 0x1e, 0x3f, 0xc9, 0xcb, 0xcc, 0x4b, 0x7c, 0x12, 0x37, 0x06, 0x19, 0x1a, 0x73, + 0xba, 0x35, 0xe0, 0x14, 0x2f, 0x2c, 0xf0, 0x54, 0x71, 0xf7, 0x4c, 0xcb, 0x20, 0x4f, 0xc1, 0xf9, + 0xfb, 0xb5, 0x19, 0xad, 0x7e, 0xaf, 0xba, 0x58, 0xa9, 0xdf, 0x5f, 0xac, 0x2d, 0xcf, 0x4c, 0x57, + 0x67, 0xab, 0x33, 0x95, 0xf1, 0x3e, 0x72, 0x16, 0xce, 0x84, 0xa8, 0xb9, 0xfb, 0x0b, 0xe5, 0xc5, + 0xf1, 0x1c, 0x99, 0x80, 0xd1, 0x10, 0x38, 0xb5, 0xb4, 0x32, 0x9e, 0x7f, 0xe1, 0x53, 0x30, 0x8c, + 0xbe, 0x30, 0xfc, 0xee, 0x8e, 0x8c, 0xc0, 0xe0, 0xd2, 0x54, 0x6d, 0x46, 0x7b, 0x80, 0x4c, 0x00, + 0x4a, 0x95, 0x99, 0x45, 0xc6, 0x30, 0xf7, 0xc2, 0xff, 0x9d, 0x03, 0xa8, 0xcd, 0xae, 0x2c, 0x0b, + 0xc2, 0x61, 0x18, 0xa8, 0x2e, 0x3e, 0x28, 0xcf, 0x57, 0x19, 0xdd, 0x20, 0x14, 0x97, 0x96, 0x67, + 0x58, 0x0d, 0x43, 0xd0, 0x3f, 0x3d, 0xbf, 0x54, 0x9b, 0x19, 0xcf, 0x33, 0xa0, 0x36, 0x53, 0xae, + 0x8c, 0x17, 0x18, 0xf0, 0xa1, 0x56, 0x5d, 0x99, 0x19, 0x2f, 0xb2, 0x3f, 0xe7, 0x6b, 0x2b, 0xe5, + 0x95, 0xf1, 0x7e, 0xf6, 0xe7, 0x2c, 0xfe, 0x59, 0x62, 0xcc, 0x6a, 0x33, 0x2b, 0xf8, 0x63, 0x80, + 0x35, 0x61, 0xd6, 0xff, 0x35, 0xc8, 0x50, 0x8c, 0x75, 0xa5, 0xaa, 0x8d, 0x0f, 0xb1, 0x1f, 0x8c, + 0x25, 0xfb, 0x01, 0xac, 0x71, 0xda, 0xcc, 0xc2, 0xd2, 0x83, 0x99, 0xf1, 0x61, 0xc6, 0x6b, 0xe1, + 0x1e, 0x03, 0x8f, 0xb0, 0x3f, 0xb5, 0x05, 0xf6, 0xe7, 0x28, 0xe3, 0xa4, 0xcd, 0x94, 0xe7, 0x97, + 0xcb, 0x2b, 0x73, 0xe3, 0x63, 0xac, 0x3d, 0xc8, 0xf3, 0x0c, 0x2f, 0xb9, 0x58, 0x5e, 0x98, 0x19, + 0x1f, 0x17, 0x34, 0x95, 0xf9, 0xea, 0xe2, 0xbd, 0xf1, 0x09, 0x6c, 0xc8, 0xfb, 0x0b, 0xf8, 0x83, + 0xb0, 0x02, 0xf8, 0xd7, 0xd9, 0x17, 0x7e, 0x10, 0x4a, 0x4b, 0x35, 0xbc, 0xfd, 0xbe, 0x08, 0x67, + 0x97, 0x6a, 0xf5, 0x95, 0xf7, 0x97, 0x67, 0x62, 0xf2, 0x9e, 0x80, 0x51, 0x1f, 0x31, 0x5f, 0x5d, + 0xbc, 0xff, 0x05, 0x2e, 0x6d, 0x1f, 0xb4, 0x50, 0x9e, 0x5e, 0xaa, 0x8d, 0xe7, 0x59, 0xaf, 0xf8, + 0xa0, 0x87, 0xd5, 0xc5, 0xca, 0xd2, 0xc3, 0xda, 0x78, 0xe1, 0x85, 0xc7, 0x30, 0xc2, 0x13, 0xed, + 0x2d, 0x39, 0x66, 0xd3, 0xb4, 0xc8, 0x33, 0xf0, 0x54, 0x65, 0xe6, 0x41, 0x75, 0x7a, 0xa6, 0xbe, + 0xa4, 0x55, 0xef, 0x54, 0x17, 0x63, 0x35, 0x9d, 0x87, 0x89, 0x28, 0xba, 0xbc, 0x5c, 0x1d, 0xcf, + 0x91, 0x0b, 0x40, 0xa2, 0xe0, 0xbb, 0xe5, 0x85, 0xd9, 0xf1, 0x3c, 0x51, 0xe0, 0x5c, 0x14, 0x5e, + 0x5d, 0x5c, 0xb9, 0xbf, 0x38, 0x33, 0x5e, 0x78, 0xe1, 0xaf, 0xe4, 0xe0, 0x7c, 0x6a, 0x30, 0x56, + 0xa2, 0xc2, 0x95, 0x99, 0xf9, 0x72, 0x6d, 0xa5, 0x3a, 0x5d, 0x9b, 0x29, 0x6b, 0xd3, 0x73, 0xf5, + 0xe9, 0xf2, 0xca, 0xcc, 0x9d, 0x25, 0xed, 0xfd, 0xfa, 0x9d, 0x99, 0xc5, 0x19, 0xad, 0x3c, 0x3f, + 0xde, 0x47, 0x9e, 0x87, 0xc9, 0x0c, 0x9a, 0xda, 0xcc, 0xf4, 0x7d, 0xad, 0xba, 0xf2, 0xfe, 0x78, + 0x8e, 0x3c, 0x07, 0xcf, 0x64, 0x12, 0xb1, 0xdf, 0xe3, 0x79, 0x72, 0x05, 0x2e, 0x65, 0x91, 0xbc, + 0x37, 0x3f, 0x5e, 0x78, 0xe1, 0x67, 0x73, 0x40, 0x92, 0xd1, 0x34, 0xc9, 0xb3, 0x70, 0x99, 0xe9, + 0x45, 0x3d, 0xbb, 0x81, 0xcf, 0xc1, 0x33, 0xa9, 0x14, 0x52, 0xf3, 0x26, 0xe1, 0xe9, 0x0c, 0x12, + 0xd1, 0xb8, 0xcb, 0xa0, 0xa4, 0x13, 0x60, 0xd3, 0x7e, 0x23, 0x07, 0xe7, 0x53, 0xaf, 0xcb, 0xc9, + 0x35, 0xf8, 0x44, 0xb9, 0xb2, 0xc0, 0xfa, 0x66, 0x7a, 0xa5, 0xba, 0xb4, 0x58, 0xab, 0x2f, 0xcc, + 0x96, 0xeb, 0x4c, 0xfb, 0xee, 0xd7, 0x62, 0xbd, 0x79, 0x15, 0xd4, 0x1e, 0x94, 0xd3, 0x73, 0xe5, + 0xc5, 0x3b, 0x6c, 0xf8, 0x91, 0x4f, 0xc0, 0xb3, 0x99, 0x74, 0x33, 0x8b, 0xe5, 0xa9, 0xf9, 0x99, + 0xca, 0x78, 0x9e, 0x7c, 0x12, 0x9e, 0xcb, 0xa4, 0xaa, 0x54, 0x6b, 0x9c, 0xac, 0x30, 0x55, 0xf9, + 0xce, 0xff, 0x74, 0xa5, 0xef, 0x3b, 0x7f, 0x70, 0x25, 0xf7, 0x0f, 0xff, 0xe0, 0x4a, 0xee, 0x9f, + 0xff, 0xc1, 0x95, 0xdc, 0x17, 0x6f, 0xed, 0x25, 0x4a, 0x2a, 0x9f, 0xb6, 0x56, 0x4b, 0x78, 0x75, + 0xf5, 0xca, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x64, 0x71, 0xa6, 0xd5, 0x90, 0x79, 0x01, 0x00, } func (m *Metadata) Marshal() (dAtA []byte, err error) { @@ -23008,6 +23013,11 @@ func (m *DatabaseSessionStart) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.PostgresPID != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.PostgresPID)) + i-- + dAtA[i] = 0x40 + } { size, err := m.DatabaseMetadata.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -40172,6 +40182,9 @@ func (m *DatabaseSessionStart) Size() (n int) { n += 1 + l + sovEvents(uint64(l)) l = m.DatabaseMetadata.Size() n += 1 + l + sovEvents(uint64(l)) + if m.PostgresPID != 0 { + n += 1 + sovEvents(uint64(m.PostgresPID)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -67521,6 +67534,25 @@ func (m *DatabaseSessionStart) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PostgresPID", wireType) + } + m.PostgresPID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PostgresPID |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) diff --git a/lib/srv/db/audit_test.go b/lib/srv/db/audit_test.go index d4bb2b221f4c..50eab78e9891 100644 --- a/lib/srv/db/audit_test.go +++ b/lib/srv/db/audit_test.go @@ -61,7 +61,10 @@ func TestAuditPostgres(t *testing.T) { // Connect should trigger successful session start event. psql, err := testCtx.postgresClient(ctx, "alice", "postgres", "postgres", "postgres") require.NoError(t, err) - requireEvent(t, testCtx, libevents.DatabaseSessionStartCode) + startEvt, ok := requireEvent(t, testCtx, libevents.DatabaseSessionStartCode).(*events.DatabaseSessionStart) + require.True(t, ok) + require.NotNil(t, startEvt) + require.NotZero(t, startEvt.PostgresPID) // Simple query should trigger the query event. _, err = psql.Exec(ctx, "select 1").ReadAll() diff --git a/lib/srv/db/common/audit.go b/lib/srv/db/common/audit.go index 825cbd4a57e5..86c2c68b5021 100644 --- a/lib/srv/db/common/audit.go +++ b/lib/srv/db/common/audit.go @@ -145,6 +145,7 @@ func (a *audit) OnSessionStart(ctx context.Context, session *Session, sessionErr Status: events.Status{ Success: true, }, + PostgresPID: session.PostgresPID, } event.SetTime(session.StartTime) diff --git a/lib/srv/db/common/session.go b/lib/srv/db/common/session.go index 89e95841bb00..d7cc95157034 100644 --- a/lib/srv/db/common/session.go +++ b/lib/srv/db/common/session.go @@ -66,6 +66,8 @@ type Session struct { AuthContext *authz.Context // StartTime is the time the session started. StartTime time.Time + // PostgresPID is the Postgres backend PID for the session. + PostgresPID uint32 } // String returns string representation of the session parameters. diff --git a/lib/srv/db/postgres/engine.go b/lib/srv/db/postgres/engine.go index 790e70def9bc..2b5c0692a17e 100644 --- a/lib/srv/db/postgres/engine.go +++ b/lib/srv/db/postgres/engine.go @@ -147,6 +147,8 @@ func (e *Engine) HandleConnection(ctx context.Context, sessionCtx *common.Sessio cancelAutoUserLease() return trace.Wrap(err) } + sessionCtx.PostgresPID = hijackedConn.PID + e.Log = e.Log.With("pg_backend_pid", hijackedConn.PID) e.rawServerConn = hijackedConn.Conn // Release the auto-users semaphore now that we've successfully connected. cancelAutoUserLease() From 73d0daf545dd8c5065d530eb284f16d0d2cc2a49 Mon Sep 17 00:00:00 2001 From: Brian Joerger Date: Wed, 16 Oct 2024 12:22:39 -0700 Subject: [PATCH 4/5] Use `second_factors` for logic instead of deprecated `second_factor`. (#47426) * Replace trivial uses of GetSecondFactor. * Use new helpers in mfa device deletion logic instead of GetSecondFactor. * Replace GetSecondFactor auth logic with new helpers. * Replace final usage of GetSecondFactor in ping response. * Fix logic for deleting last passkey to allow users with passwords to delete disabled webauthn devices; Update tests and remove cases that depend on second factor optional (deprecated). * Fix failing tests. * Resolve comments; Revert functionality change; Use slog. * Update test. * Passkeys, not PassKeys. --- api/types/authentication.go | 15 +- .../authentication_authpreference_test.go | 17 +- api/types/second_factor.go | 49 +++--- api/types/second_factor_test.go | 48 +++++- integration/integration_test.go | 2 +- lib/auth/auth.go | 123 +++++--------- lib/auth/auth_test.go | 2 +- lib/auth/auth_with_roles.go | 10 +- .../clusterconfig/clusterconfigv1/service.go | 22 +-- lib/auth/grpcserver_test.go | 156 +++++++++++------- lib/auth/methods.go | 54 +++--- lib/auth/password.go | 7 +- lib/auth/tls_test.go | 2 +- lib/auth/usertoken.go | 3 +- lib/services/readonly/readonly.go | 4 +- lib/web/apiserver.go | 34 ++-- lib/web/apiserver_ping_test.go | 33 +++- lib/web/apiserver_test.go | 4 +- tool/tctl/common/collection.go | 13 +- tool/tctl/common/edit_command_test.go | 5 +- tool/tctl/common/resource_command_test.go | 16 +- 21 files changed, 342 insertions(+), 277 deletions(-) diff --git a/api/types/authentication.go b/api/types/authentication.go index a23df475cc25..1df48aa74ccc 100644 --- a/api/types/authentication.go +++ b/api/types/authentication.go @@ -71,9 +71,8 @@ type AuthPreference interface { // SetType sets the type of authentication: local, saml, or oidc. SetType(string) - // GetSecondFactor gets the type of second factor. - GetSecondFactor() constants.SecondFactorType // SetSecondFactor sets the type of second factor. + // Deprecated: only used in tests to set the deprecated off/optional values. SetSecondFactor(constants.SecondFactorType) // GetSecondFactors gets a list of supported second factors. GetSecondFactors() []SecondFactorType @@ -321,16 +320,6 @@ func (c *AuthPreferenceV2) SetType(s string) { c.Spec.Type = s } -// GetSecondFactor returns the type of second factor. -func (c *AuthPreferenceV2) GetSecondFactor() constants.SecondFactorType { - // SecondFactors takes priority if set. - if len(c.Spec.SecondFactors) > 0 { - return legacySecondFactorFromSecondFactors(c.Spec.SecondFactors) - } - - return c.Spec.SecondFactor -} - // SetSecondFactor sets the type of second factor. func (c *AuthPreferenceV2) SetSecondFactor(s constants.SecondFactorType) { c.Spec.SecondFactor = s @@ -863,7 +852,7 @@ func (c *AuthPreferenceV2) CheckAndSetDefaults() error { // String represents a human readable version of authentication settings. func (c *AuthPreferenceV2) String() string { - return fmt.Sprintf("AuthPreference(Type=%q,SecondFactor=%q)", c.Spec.Type, c.GetSecondFactor()) + return fmt.Sprintf("AuthPreference(Type=%q,SecondFactors=%q)", c.Spec.Type, c.GetSecondFactors()) } // Clone returns a copy of the AuthPreference resource. diff --git a/api/types/authentication_authpreference_test.go b/api/types/authentication_authpreference_test.go index a1e9b3e9b926..b6efaae1946b 100644 --- a/api/types/authentication_authpreference_test.go +++ b/api/types/authentication_authpreference_test.go @@ -153,18 +153,13 @@ func TestAuthPreferenceV2_CheckAndSetDefaults_secondFactor(t *testing.T) { }, }, assertFn: func(t *testing.T, got *types.AuthPreferenceV2) { - // Did we derive the WebAuthn config from U2F? - if sf := got.GetSecondFactor(); sf == constants.SecondFactorWebauthn || - sf == constants.SecondFactorOn || - sf == constants.SecondFactorOptional { - wantWeb := &types.Webauthn{ - RPID: "example.com", - AttestationAllowedCAs: []string{yubicoU2FCA}, - } - gotWeb, err := got.GetWebauthn() - require.NoError(t, err, "webauthn config not found") - require.Empty(t, cmp.Diff(wantWeb, gotWeb)) + wantWeb := &types.Webauthn{ + RPID: "example.com", + AttestationAllowedCAs: []string{yubicoU2FCA}, } + gotWeb, err := got.GetWebauthn() + require.NoError(t, err, "webauthn config not found") + require.Empty(t, cmp.Diff(wantWeb, gotWeb)) }, }, { diff --git a/api/types/second_factor.go b/api/types/second_factor.go index d876a35493c8..46c969bb4fd4 100644 --- a/api/types/second_factor.go +++ b/api/types/second_factor.go @@ -25,30 +25,13 @@ import ( "github.com/gravitational/teleport/api/constants" ) -// legacySecondFactorFromSecondFactors returns a suitable legacy second factor for the given list of second factors. -func legacySecondFactorFromSecondFactors(secondFactors []SecondFactorType) constants.SecondFactorType { - hasOTP := slices.Contains(secondFactors, SecondFactorType_SECOND_FACTOR_TYPE_OTP) - hasWebAuthn := slices.Contains(secondFactors, SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN) - - switch { - case hasOTP && hasWebAuthn: - return constants.SecondFactorOn - case hasWebAuthn: - return constants.SecondFactorWebauthn - case hasOTP: - return constants.SecondFactorOTP - default: - return constants.SecondFactorOff - } -} - // secondFactorsFromLegacySecondFactor returns the list of SecondFactorTypes supported by the given second factor type. func secondFactorsFromLegacySecondFactor(sf constants.SecondFactorType) []SecondFactorType { switch sf { case constants.SecondFactorOff: return nil case constants.SecondFactorOptional, constants.SecondFactorOn: - return []SecondFactorType{SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN, SecondFactorType_SECOND_FACTOR_TYPE_OTP} + return []SecondFactorType{SecondFactorType_SECOND_FACTOR_TYPE_OTP, SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN} case constants.SecondFactorOTP: return []SecondFactorType{SecondFactorType_SECOND_FACTOR_TYPE_OTP} case constants.SecondFactorWebauthn: @@ -58,9 +41,32 @@ func secondFactorsFromLegacySecondFactor(sf constants.SecondFactorType) []Second } } +// LegacySecondFactorFromSecondFactors returns a suitable legacy second factor for the given list of second factors. +func LegacySecondFactorFromSecondFactors(secondFactors []SecondFactorType) constants.SecondFactorType { + hasOTP := slices.Contains(secondFactors, SecondFactorType_SECOND_FACTOR_TYPE_OTP) + hasWebAuthn := slices.Contains(secondFactors, SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN) + hasSSO := slices.Contains(secondFactors, SecondFactorType_SECOND_FACTOR_TYPE_SSO) + + switch { + case hasOTP && hasWebAuthn: + return constants.SecondFactorOn + case hasWebAuthn: + return constants.SecondFactorWebauthn + case hasOTP: + return constants.SecondFactorOTP + case hasSSO: + // In the WebUI, we can treat exclusive SSO MFA as disabled. In practice this means + // things like the "add MFA device" button is disabled, but SSO MFA prompts will still work. + // TODO(Joerger): Ensure that SSO MFA flows work in the WebUI with this change, once implemented. + return constants.SecondFactorOff + default: + return constants.SecondFactorOff + } +} + // MarshalJSON marshals SecondFactorType to string. func (s *SecondFactorType) MarshalYAML() (interface{}, error) { - val, err := s.encode() + val, err := s.Encode() if err != nil { return nil, trace.Wrap(err) } @@ -81,7 +87,7 @@ func (s *SecondFactorType) UnmarshalYAML(unmarshal func(interface{}) error) erro // MarshalJSON marshals SecondFactorType to string. func (s *SecondFactorType) MarshalJSON() ([]byte, error) { - val, err := s.encode() + val, err := s.Encode() if err != nil { return nil, trace.Wrap(err) } @@ -110,7 +116,8 @@ const ( secondFactorTypeSSOString = "sso" ) -func (s *SecondFactorType) encode() (string, error) { +// Encode encodes the SecondFactorType in string form. +func (s *SecondFactorType) Encode() (string, error) { switch *s { case SecondFactorType_SECOND_FACTOR_TYPE_UNSPECIFIED: return "", nil diff --git a/api/types/second_factor_test.go b/api/types/second_factor_test.go index 17ed27dc8b35..63aa9867e608 100644 --- a/api/types/second_factor_test.go +++ b/api/types/second_factor_test.go @@ -42,7 +42,7 @@ func TestEncodeDecodeSecondFactorType(t *testing.T) { } { t.Run(tt.secondFactorType.String(), func(t *testing.T) { t.Run("encode", func(t *testing.T) { - encoded, err := tt.secondFactorType.encode() + encoded, err := tt.secondFactorType.Encode() assert.NoError(t, err) assert.Equal(t, tt.encoded, encoded) }) @@ -57,7 +57,7 @@ func TestEncodeDecodeSecondFactorType(t *testing.T) { } } -func TestLegacySecondFactorsFromLegacySecondFactor(t *testing.T) { +func TestSecondFactorsFromLegacySecondFactor(t *testing.T) { for _, tt := range []struct { sf constants.SecondFactorType sfs []SecondFactorType @@ -72,11 +72,11 @@ func TestLegacySecondFactorsFromLegacySecondFactor(t *testing.T) { }, { sf: constants.SecondFactorOptional, - sfs: []SecondFactorType{SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN, SecondFactorType_SECOND_FACTOR_TYPE_OTP}, + sfs: []SecondFactorType{SecondFactorType_SECOND_FACTOR_TYPE_OTP, SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN}, }, { sf: constants.SecondFactorOn, - sfs: []SecondFactorType{SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN, SecondFactorType_SECOND_FACTOR_TYPE_OTP}, + sfs: []SecondFactorType{SecondFactorType_SECOND_FACTOR_TYPE_OTP, SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN}, }, { sf: constants.SecondFactorOTP, @@ -92,3 +92,43 @@ func TestLegacySecondFactorsFromLegacySecondFactor(t *testing.T) { }) } } + +func TestLegacySecondFactorFromSecondFactors(t *testing.T) { + for _, tt := range []struct { + sfs []SecondFactorType + sf constants.SecondFactorType + }{ + { + sfs: nil, + sf: constants.SecondFactorOff, + }, + { + sfs: []SecondFactorType{}, + sf: constants.SecondFactorOff, + }, + { + sfs: []SecondFactorType{SecondFactorType_SECOND_FACTOR_TYPE_OTP}, + sf: constants.SecondFactorOTP, + }, + { + sfs: []SecondFactorType{SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN}, + sf: constants.SecondFactorWebauthn, + }, + { + sfs: []SecondFactorType{SecondFactorType_SECOND_FACTOR_TYPE_SSO}, + sf: constants.SecondFactorOff, + }, + { + sfs: []SecondFactorType{ + SecondFactorType_SECOND_FACTOR_TYPE_OTP, + SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN, + SecondFactorType_SECOND_FACTOR_TYPE_SSO, + }, + sf: constants.SecondFactorOn, + }, + } { + t.Run(string(tt.sfs), func(t *testing.T) { + assert.Equal(t, tt.sf, LegacySecondFactorFromSecondFactors(tt.sfs)) + }) + } +} diff --git a/integration/integration_test.go b/integration/integration_test.go index 0c8b62d839a2..cc579bdf6be7 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -8823,7 +8823,7 @@ func testModeratedSessions(t *testing.T, suite *integrationTestSuite) { // Enable web service. cfg := suite.defaultServiceConfig() cfg.Auth.Enabled = true - cfg.Auth.Preference.SetSecondFactor("on") + cfg.Auth.Preference.SetSecondFactors(types.SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN) cfg.Auth.Preference.(*types.AuthPreferenceV2).Spec.RequireMFAType = types.RequireMFAType_SESSION cfg.Auth.Preference.SetWebauthn(&types.Webauthn{RPID: "127.0.0.1"}) cfg.Proxy.DisableWebService = false diff --git a/lib/auth/auth.go b/lib/auth/auth.go index 1345301a7642..ea5fb1d5954a 100644 --- a/lib/auth/auth.go +++ b/lib/auth/auth.go @@ -3826,7 +3826,7 @@ func (a *Server) DeleteMFADeviceSync(ctx context.Context, req *proto.DeleteMFADe // - Last resident key credential in a passwordless-capable cluster (avoids // passwordless users from locking themselves out). func (a *Server) deleteMFADeviceSafely(ctx context.Context, user, deviceName string) (*types.MFADevice, error) { - devs, err := a.Services.GetMFADevices(ctx, user, true) + mfaDevices, err := a.Services.GetMFADevices(ctx, user, true) if err != nil { return nil, trace.Wrap(err) } @@ -3836,114 +3836,71 @@ func (a *Server) deleteMFADeviceSafely(ctx context.Context, user, deviceName str return nil, trace.Wrap(err) } - kindToSF := map[string]constants.SecondFactorType{ - fmt.Sprintf("%T", &types.MFADevice_Totp{}): constants.SecondFactorOTP, - fmt.Sprintf("%T", &types.MFADevice_U2F{}): constants.SecondFactorWebauthn, - fmt.Sprintf("%T", &types.MFADevice_Webauthn{}): constants.SecondFactorWebauthn, - } - sfToCount := make(map[constants.SecondFactorType]int) - var knownDevices int - var deviceToDelete *types.MFADevice - var numResidentKeys int - - isResidentKey := func(d *types.MFADevice) bool { + isPasskey := func(d *types.MFADevice) bool { return d.GetWebauthn() != nil && d.GetWebauthn().ResidentKey } + var deviceToDelete *types.MFADevice + remainingDevices := make(map[types.SecondFactorType]int) + var remainingPasskeys int + // Find the device to delete and count devices. - for _, d := range devs { + for _, d := range mfaDevices { // Match device by name or ID. if d.GetName() == deviceName || d.Id == deviceName { deviceToDelete = d + switch d.Device.(type) { + case *types.MFADevice_Totp, *types.MFADevice_U2F, *types.MFADevice_Webauthn: + default: + return nil, trace.NotImplemented("cannot delete device of type %T", d.Device) + } + continue } - sf, ok := kindToSF[fmt.Sprintf("%T", d.Device)] - switch { - case !ok && d == deviceToDelete: - return nil, trace.NotImplemented("cannot delete device of type %T", d.Device) - case !ok: + switch d.Device.(type) { + case *types.MFADevice_Totp: + remainingDevices[types.SecondFactorType_SECOND_FACTOR_TYPE_OTP]++ + case *types.MFADevice_U2F, *types.MFADevice_Webauthn: + remainingDevices[types.SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN]++ + default: log.Warnf("Ignoring unknown device with type %T in deletion.", d.Device) continue } - sfToCount[sf]++ - knownDevices++ - - if isResidentKey(d) { - numResidentKeys++ + if isPasskey(d) { + remainingPasskeys++ } } if deviceToDelete == nil { return nil, trace.NotFound("MFA device %q does not exist", deviceName) } - // Prevent users from deleting their last device for clusters that require second factors. - const minDevices = 1 - switch sf := readOnlyAuthPref.GetSecondFactor(); sf { - case constants.SecondFactorOff, constants.SecondFactorOptional: // MFA is not required, allow deletion - case constants.SecondFactorOn: - if knownDevices <= minDevices { - return nil, trace.BadParameter( - "cannot delete the last MFA device for this user; add a replacement device first to avoid getting locked out") - } - case constants.SecondFactorOTP, constants.SecondFactorWebauthn: - if sfToCount[sf] <= minDevices { - return nil, trace.BadParameter( - "cannot delete the last %s device for this user; add a replacement device first to avoid getting locked out", sf) - } - default: - return nil, trace.BadParameter("unexpected second factor type: %s", sf) + var remainingAllowedDevices int + for _, sf := range readOnlyAuthPref.GetSecondFactors() { + remainingAllowedDevices += remainingDevices[sf] } - // canDeleteLastPasskey figures out whether the user can safely delete their - // credential without locking themselves out in case if it's the last passkey. - // It checks whether the credential to delete is a last passkey and whether - // the user has other valid local credentials. - canDeleteLastPasskey := func() (bool, error) { - if !readOnlyAuthPref.GetAllowPasswordless() || numResidentKeys > 1 || !isResidentKey(deviceToDelete) { - return true, nil - } + // Prevent users from deleting their last allowed device for clusters that require second factors. + if readOnlyAuthPref.IsSecondFactorEnforced() && remainingAllowedDevices == 0 { + return nil, trace.BadParameter("cannot delete the last MFA device for this user; add a replacement device first to avoid getting locked out") + } - // Deleting the last passkey is OK if the user has a password set and an - // additional MFA device, otherwise they would be locked out. + // Check whether the device to delete is the last passwordless device, + // and whether deleting it would lockout the user from login. + // + // TODO(Joerger): the user may already be locked out from login if a password + // is not set and passwordless is disabled. Prevent them from deleting + // their last passkey to prevent them from being locked out further, + // in the case of passwordless being re-enabled. + if isPasskey(deviceToDelete) && remainingPasskeys == 0 && readOnlyAuthPref.GetAllowPasswordless() { u, err := a.Services.GetUser(ctx, user, false /* withSecrets */) if err != nil { - return false, trace.Wrap(err) - } - - // SSO users can always login through their SSO provider. - if u.GetUserType() == types.UserTypeSSO { - return true, nil - } - - if u.GetPasswordState() != types.PasswordState_PASSWORD_STATE_SET { - return false, nil - } - - // Minimum number of WebAuthn devices includes the passkey that we attempt - // to delete, hence 2. - if sfToCount[constants.SecondFactorWebauthn] >= 2 { - return true, nil + return nil, trace.Wrap(err) } - // Whether we take TOTPs into consideration or not depends on whether it's - // enabled. - switch sf := readOnlyAuthPref.GetSecondFactor(); sf { - case constants.SecondFactorOTP, constants.SecondFactorOn, constants.SecondFactorOptional: - if sfToCount[constants.SecondFactorOTP] >= 1 { - return true, nil - } + if u.GetUserType() != types.UserTypeSSO && u.GetPasswordState() != types.PasswordState_PASSWORD_STATE_SET { + return nil, trace.BadParameter("cannot delete last passwordless credential for user") } - - return false, nil - } - - can, err := canDeleteLastPasskey() - if err != nil { - return nil, trace.Wrap(err) - } - if !can { - return nil, trace.BadParameter("cannot delete last passwordless credential for user") } if err := a.DeleteMFADevice(ctx, user, deviceToDelete.Id); err != nil { @@ -4048,7 +4005,7 @@ func (a *Server) verifyMFARespAndAddDevice(ctx context.Context, req *newMFADevic return nil, trace.Wrap(err) } - if cap.GetSecondFactor() == constants.SecondFactorOff { + if !cap.IsSecondFactorEnabled() { return nil, trace.BadParameter("second factor disabled by cluster configuration") } diff --git a/lib/auth/auth_test.go b/lib/auth/auth_test.go index 1774fb1df52c..b1248f330397 100644 --- a/lib/auth/auth_test.go +++ b/lib/auth/auth_test.go @@ -880,7 +880,7 @@ func TestAuthenticateUser_mfaDeviceLocked(t *testing.T) { // Configure auth preferences. authPref, err := authServer.GetAuthPreference(ctx) require.NoError(t, err, "GetAuthPreference") - authPref.SetSecondFactor(constants.SecondFactorOptional) // good enough + authPref.SetSecondFactors(types.SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN) authPref.SetWebauthn(&types.Webauthn{ RPID: "localhost", }) diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index 162fe4081bf3..fb07cfd46981 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -4571,9 +4571,6 @@ func (a *ServerWithRoles) SetAuthPreference(ctx context.Context, newAuthPref typ msg = err.Error() } - oldSecondFactor := storedAuthPref.GetSecondFactor() - newSecondFactor := newAuthPref.GetSecondFactor() - if auditErr := a.authServer.emitter.EmitAuditEvent(ctx, &apievents.AuthPreferenceUpdate{ Metadata: apievents.Metadata{ Type: events.AuthPreferenceUpdateEvent, @@ -4586,7 +4583,7 @@ func (a *ServerWithRoles) SetAuthPreference(ctx context.Context, newAuthPref typ Error: msg, UserMessage: msg, }, - AdminActionsMFA: clusterconfigv1.GetAdminActionsMFAStatus(oldSecondFactor, newSecondFactor), + AdminActionsMFA: clusterconfigv1.GetAdminActionsMFAStatus(storedAuthPref, newAuthPref), }); auditErr != nil { log.WithError(auditErr).Warn("Failed to emit auth preference update event event.") } @@ -4624,9 +4621,6 @@ func (a *ServerWithRoles) ResetAuthPreference(ctx context.Context) error { msg = err.Error() } - oldSecondFactor := storedAuthPref.GetSecondFactor() - newSecondFactor := defaultAuthPref.GetSecondFactor() - if auditErr := a.authServer.emitter.EmitAuditEvent(ctx, &apievents.AuthPreferenceUpdate{ Metadata: apievents.Metadata{ Type: events.AuthPreferenceUpdateEvent, @@ -4639,7 +4633,7 @@ func (a *ServerWithRoles) ResetAuthPreference(ctx context.Context) error { Error: msg, UserMessage: msg, }, - AdminActionsMFA: clusterconfigv1.GetAdminActionsMFAStatus(oldSecondFactor, newSecondFactor), + AdminActionsMFA: clusterconfigv1.GetAdminActionsMFAStatus(storedAuthPref, defaultAuthPref), }); auditErr != nil { log.WithError(auditErr).Warn("Failed to emit auth preference update event event.") } diff --git a/lib/auth/clusterconfig/clusterconfigv1/service.go b/lib/auth/clusterconfig/clusterconfigv1/service.go index db86db07fb46..fcecf3d0700d 100644 --- a/lib/auth/clusterconfig/clusterconfigv1/service.go +++ b/lib/auth/clusterconfig/clusterconfigv1/service.go @@ -22,7 +22,6 @@ import ( "github.com/gravitational/trace" - "github.com/gravitational/teleport/api/constants" clusterconfigpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/clusterconfig/v1" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/api/types/clusterconfig" @@ -257,9 +256,6 @@ func (s *Service) UpdateAuthPreference(ctx context.Context, req *clusterconfigpb updated, err := s.backend.UpdateAuthPreference(ctx, req.AuthPreference) - oldSecondFactor := original.GetSecondFactor() - newSecondFactor := req.AuthPreference.GetSecondFactor() - if auditErr := s.emitter.EmitAuditEvent(ctx, &apievents.AuthPreferenceUpdate{ Metadata: apievents.Metadata{ Type: events.AuthPreferenceUpdateEvent, @@ -268,7 +264,7 @@ func (s *Service) UpdateAuthPreference(ctx context.Context, req *clusterconfigpb UserMetadata: authzCtx.GetUserMetadata(), ConnectionMetadata: authz.ConnectionMetadata(ctx), Status: eventStatus(err), - AdminActionsMFA: GetAdminActionsMFAStatus(oldSecondFactor, newSecondFactor), + AdminActionsMFA: GetAdminActionsMFAStatus(original, req.AuthPreference), }); auditErr != nil { slog.WarnContext(ctx, "Failed to emit auth preference update event event.", "error", auditErr) } @@ -324,9 +320,6 @@ func (s *Service) UpsertAuthPreference(ctx context.Context, req *clusterconfigpb updated, err := s.backend.UpsertAuthPreference(ctx, req.AuthPreference) - oldSecondFactor := original.GetSecondFactor() - newSecondFactor := req.AuthPreference.GetSecondFactor() - if auditErr := s.emitter.EmitAuditEvent(ctx, &apievents.AuthPreferenceUpdate{ Metadata: apievents.Metadata{ Type: events.AuthPreferenceUpdateEvent, @@ -335,7 +328,7 @@ func (s *Service) UpsertAuthPreference(ctx context.Context, req *clusterconfigpb UserMetadata: authzCtx.GetUserMetadata(), ConnectionMetadata: authz.ConnectionMetadata(ctx), Status: eventStatus(err), - AdminActionsMFA: GetAdminActionsMFAStatus(oldSecondFactor, newSecondFactor), + AdminActionsMFA: GetAdminActionsMFAStatus(original, req.AuthPreference), }); auditErr != nil { slog.WarnContext(ctx, "Failed to emit auth preference update event event.", "error", auditErr) } @@ -370,7 +363,6 @@ func (s *Service) ResetAuthPreference(ctx context.Context, _ *clusterconfigpb.Re defaultPreference := types.DefaultAuthPreference() defaultPreference.SetDefaultSignatureAlgorithmSuite(s.signatureAlgorithmSuiteParams) - newSecondFactor := defaultPreference.GetSecondFactor() const iterationLimit = 3 // Attempt a few iterations in case the conditional update fails // due to spurious networking conditions. @@ -379,7 +371,6 @@ func (s *Service) ResetAuthPreference(ctx context.Context, _ *clusterconfigpb.Re if err != nil { return nil, trace.Wrap(err) } - oldSecondFactor := pref.GetSecondFactor() if pref.Origin() == types.OriginConfigFile { return nil, trace.BadParameter("auth preference has been defined via the config file and cannot be reset back to defaults dynamically.") @@ -400,7 +391,7 @@ func (s *Service) ResetAuthPreference(ctx context.Context, _ *clusterconfigpb.Re UserMetadata: authzCtx.GetUserMetadata(), ConnectionMetadata: authz.ConnectionMetadata(ctx), Status: eventStatus(err), - AdminActionsMFA: GetAdminActionsMFAStatus(oldSecondFactor, newSecondFactor), + AdminActionsMFA: GetAdminActionsMFAStatus(pref, defaultPreference), }); auditErr != nil { slog.WarnContext(ctx, "Failed to emit auth preference update event event.", "error", auditErr) } @@ -423,14 +414,13 @@ func (s *Service) ResetAuthPreference(ctx context.Context, _ *clusterconfigpb.Re // GetAdminActionsMFAStatus returns whether MFA for admin actions was // altered when the auth preferences were updated. -func GetAdminActionsMFAStatus(oldSecondFactor, newSecondFactor constants.SecondFactorType) apievents.AdminActionsMFAStatus { - if oldSecondFactor == newSecondFactor { +func GetAdminActionsMFAStatus(oldPref, newPref types.AuthPreference) apievents.AdminActionsMFAStatus { + if oldPref.IsAdminActionMFAEnforced() == newPref.IsAdminActionMFAEnforced() { return apievents.AdminActionsMFAStatus_ADMIN_ACTIONS_MFA_STATUS_UNCHANGED } - if newSecondFactor == constants.SecondFactorWebauthn { + if newPref.IsAdminActionMFAEnforced() { return apievents.AdminActionsMFAStatus_ADMIN_ACTIONS_MFA_STATUS_ENABLED } - // oldSecondFactor == constants.SecondFactorWebauthn return apievents.AdminActionsMFAStatus_ADMIN_ACTIONS_MFA_STATUS_DISABLED } diff --git a/lib/auth/grpcserver_test.go b/lib/auth/grpcserver_test.go index e09497b651b9..6e85e400f4dd 100644 --- a/lib/auth/grpcserver_test.go +++ b/lib/auth/grpcserver_test.go @@ -88,8 +88,11 @@ func TestMFADeviceManagement(t *testing.T) { // Enable MFA support. authPref, err := types.NewAuthPreference(types.AuthPreferenceSpecV2{ - Type: constants.Local, - SecondFactor: constants.SecondFactorOptional, + Type: constants.Local, + SecondFactors: []types.SecondFactorType{ + types.SecondFactorType_SECOND_FACTOR_TYPE_OTP, + types.SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN, + }, Webauthn: &types.Webauthn{ RPID: "localhost", }, @@ -291,13 +294,26 @@ func TestMFADeviceManagement(t *testing.T) { }) } - // Register a 2nd passwordless device, so we can test removal of the - // 2nd-to-last resident credential. - // This is already tested above so we just use RegisterTestDevice here. - const pwdless2DevName = "pwdless2" - _, err = RegisterTestDevice(ctx, userClient, pwdless2DevName, proto.DeviceType_DEVICE_TYPE_WEBAUTHN, devs.WebDev, WithPasswordless()) + // Register an extra device to test allow deletion of other devices and test that + // the last device cannot be deleted. + const lastDeviceName = "lastDevice" + lastDevice, err := RegisterTestDevice(ctx, userClient, lastDeviceName, proto.DeviceType_DEVICE_TYPE_WEBAUTHN, devs.WebDev) require.NoError(t, err, "RegisterTestDevice failed") + // Also add a password so we can testing add last non-passkey MFA device. Testing the + // deletion of the last passkey is handled in TestDeletingLastPasswordlessDevice below. + err = authServer.UpsertPassword(user.GetName(), []byte("living on the edge")) + require.NoError(t, err, "UpsertPassword") + + // Since this device won't be deleted, we can use it to solve webauthn + // challenges throughout the tests below. + lastDeviceWebAuthnHandler := func(t *testing.T, challenge *proto.MFAAuthenticateChallenge) *proto.MFAAuthenticateResponse { + require.NotNil(t, challenge.WebauthnChallenge, "nil Webauthn challenge") + mfaResp, err := lastDevice.SolveAuthn(challenge) + require.NoError(t, err, "SolveAuthn") + return mfaResp + } + // Check that all new devices are registered. resp, err = userClient.GetMFADevices(ctx, &proto.GetMFADevicesRequest{}) require.NoError(t, err) @@ -308,7 +324,7 @@ func TestMFADeviceManagement(t *testing.T) { deviceIDs[dev.GetName()] = dev.Id } sort.Strings(deviceNames) - require.Equal(t, []string{pwdlessDevName, pwdless2DevName, devs.TOTPName, devs.WebName, webDev2Name}, deviceNames) + require.Equal(t, []string{lastDeviceName, pwdlessDevName, devs.TOTPName, devs.WebName, webDev2Name}, deviceNames) // Delete several of the MFA devices. deleteTests := []struct { @@ -319,7 +335,7 @@ func TestMFADeviceManagement(t *testing.T) { desc: "fail to delete an unknown device", opts: mfaDeleteTestOpts{ deviceName: "unknown-dev", - authHandler: devs.totpAuthHandler, + authHandler: lastDeviceWebAuthnHandler, checkErr: require.Error, }, }, @@ -371,55 +387,46 @@ func TestMFADeviceManagement(t *testing.T) { desc: "delete TOTP device by name", opts: mfaDeleteTestOpts{ deviceName: devs.TOTPName, - authHandler: devs.totpAuthHandler, + authHandler: lastDeviceWebAuthnHandler, checkErr: require.NoError, }, }, { - desc: "delete pwdless device by name", + desc: "delete webauthn device by name", opts: mfaDeleteTestOpts{ - deviceName: pwdlessDevName, - authHandler: devs.webAuthHandler, + deviceName: devs.WebName, + authHandler: lastDeviceWebAuthnHandler, checkErr: require.NoError, }, }, { - desc: "delete last passwordless device fails", + desc: "delete passwordless device by name", opts: mfaDeleteTestOpts{ - deviceName: pwdless2DevName, - authHandler: devs.webAuthHandler, - checkErr: func(t require.TestingT, err error, _ ...interface{}) { - require.ErrorContains(t, - err, - "last passwordless credential", - "Unexpected error deleting last passwordless device", - ) - }, + deviceName: pwdlessDevName, + authHandler: lastDeviceWebAuthnHandler, + checkErr: require.NoError, }, }, { - desc: "delete webauthn device by name", + desc: "delete webauthn device by ID", opts: mfaDeleteTestOpts{ - deviceName: devs.WebName, - authHandler: devs.webAuthHandler, + deviceName: deviceIDs[webDev2Name], + authHandler: lastDeviceWebAuthnHandler, checkErr: require.NoError, }, }, { - desc: "delete webauthn device by ID", + desc: "fail to delete last device", opts: mfaDeleteTestOpts{ - deviceName: deviceIDs[webDev2Name], - authHandler: func(t *testing.T, challenge *proto.MFAAuthenticateChallenge) *proto.MFAAuthenticateResponse { - resp, err := webKey2.SignAssertion( - webOrigin, wantypes.CredentialAssertionFromProto(challenge.WebauthnChallenge)) - require.NoError(t, err) - return &proto.MFAAuthenticateResponse{ - Response: &proto.MFAAuthenticateResponse_Webauthn{ - Webauthn: wantypes.CredentialAssertionResponseToProto(resp), - }, - } + deviceName: lastDeviceName, + authHandler: lastDeviceWebAuthnHandler, + checkErr: func(t require.TestingT, err error, _ ...any) { + require.ErrorContains(t, + err, + "cannot delete the last MFA device for this user", + "Unexpected error deleting last MFA device", + ) }, - checkErr: require.NoError, }, }, } @@ -429,10 +436,10 @@ func TestMFADeviceManagement(t *testing.T) { }) } - // Check no remaining devices, apart from the additional passwordless device that we can't delete. + // Check no remaining devices, apart from the additional device that we can't delete. resp, err = userClient.GetMFADevices(ctx, &proto.GetMFADevicesRequest{}) require.NoError(t, err) - require.Equal(t, "pwdless2", resp.Devices[0].GetName()) + require.Equal(t, lastDeviceName, resp.Devices[0].GetName()) } func TestDeletingLastPasswordlessDevice(t *testing.T) { @@ -447,19 +454,27 @@ func TestDeletingLastPasswordlessDevice(t *testing.T) { checkErr require.ErrorAssertionFunc }{ { - name: "fails", + name: "NOK no other MFA device", setup: func(*testing.T, string, *authclient.Client, *TestDevice) {}, checkErr: func(t require.TestingT, err error, _ ...any) { require.ErrorContains(t, err, - "last passwordless credential", + "cannot delete the last MFA device for this user", "Unexpected error deleting last passwordless device", ) }, }, { - name: "succeeds when passwordless is off", - setup: func(t *testing.T, _ string, _ *authclient.Client, _ *TestDevice) { + // TODO(Joerger): the user may already be locked out from login if a password + // is not set and passwordless is disabled. Prevent them from deleting + // their last passkey to prevent them from being locked out further, + // in the case of passwordless being re-enabled. + name: "OK other MFAs, but no password set, passwordless is off", + setup: func(t *testing.T, _ string, userClient *authclient.Client, pwdlessDev *TestDevice) { + // Register a non-passwordless device without adding a password. + _, err := RegisterTestDevice(ctx, userClient, "another-dev", proto.DeviceType_DEVICE_TYPE_TOTP, pwdlessDev, WithTestDeviceClock(clock)) + require.NoError(t, err, "RegisterTestDevice") + authPref, err := authServer.GetAuthPreference(ctx) require.NoError(t, err, "GetAuthPreference") @@ -471,7 +486,15 @@ func TestDeletingLastPasswordlessDevice(t *testing.T) { checkErr: require.NoError, }, { - name: "succeeds when there is a password and other WebAuthn MFAs", + name: "OK extra passwordless device", + setup: func(t *testing.T, username string, userClient *authclient.Client, pwdlessDev *TestDevice) { + _, err := RegisterTestDevice(ctx, userClient, "another-passkey", proto.DeviceType_DEVICE_TYPE_WEBAUTHN, pwdlessDev, WithPasswordless()) + require.NoError(t, err, "RegisterTestDevice failed") + }, + checkErr: require.NoError, + }, + { + name: "OK password set with other WebAuthn device", setup: func(t *testing.T, username string, userClient *authclient.Client, pwdlessDev *TestDevice) { err := authServer.UpsertPassword(username, []byte("living on the edge")) require.NoError(t, err, "UpsertPassword") @@ -482,7 +505,7 @@ func TestDeletingLastPasswordlessDevice(t *testing.T) { checkErr: require.NoError, }, { - name: "succeeds when there is a password and TOTP MFA", + name: "OK password set with other TOTP device", setup: func(t *testing.T, username string, userClient *authclient.Client, pwdlessDev *TestDevice) { err := authServer.UpsertPassword(username, []byte("living on the edge")) require.NoError(t, err, "UpsertPassword") @@ -493,7 +516,7 @@ func TestDeletingLastPasswordlessDevice(t *testing.T) { checkErr: require.NoError, }, { - name: "succeeds when the user is an SSO user", + name: "OK SSO user with other device", setup: func(t *testing.T, username string, userClient *authclient.Client, pwdlessDev *TestDevice) { user, err := authServer.GetUser(ctx, username, false) require.NoError(t, err, "GetUser") @@ -503,27 +526,39 @@ func TestDeletingLastPasswordlessDevice(t *testing.T) { _, err = authServer.UpsertUser(ctx, user) require.NoError(t, err, "UpsertUser") _, err = RegisterTestDevice( - ctx, userClient, "another-dev", proto.DeviceType_DEVICE_TYPE_TOTP, pwdlessDev, WithTestDeviceClock(clock)) + ctx, userClient, "another-dev", proto.DeviceType_DEVICE_TYPE_WEBAUTHN, pwdlessDev) require.NoError(t, err, "RegisterTestDevice") }, checkErr: require.NoError, }, { - name: "fails even if there is password, but no other MFAs", + name: "NOK password set but no other MFAs", setup: func(t *testing.T, username string, userClient *authclient.Client, pwdlessDev *TestDevice) { err := authServer.UpsertPassword(username, []byte("living on the edge")) require.NoError(t, err, "UpsertPassword") }, - checkErr: require.Error, + checkErr: func(t require.TestingT, err error, _ ...any) { + require.ErrorContains(t, + err, + "cannot delete the last MFA device for this user", + "Unexpected error deleting last passwordless device", + ) + }, }, { - name: "fails even if there is another MFA, but no password", + name: "NOK other MFAs, but no password set", setup: func(t *testing.T, username string, userClient *authclient.Client, pwdlessDev *TestDevice) { _, err := RegisterTestDevice( ctx, userClient, "another-dev", proto.DeviceType_DEVICE_TYPE_TOTP, pwdlessDev, WithTestDeviceClock(clock)) require.NoError(t, err, "RegisterTestDevice") }, - checkErr: require.Error, + checkErr: func(t require.TestingT, err error, _ ...any) { + require.ErrorContains(t, + err, + "cannot delete last passwordless credential for user", + "Unexpected error deleting last passwordless device", + ) + }, }, } @@ -531,8 +566,11 @@ func TestDeletingLastPasswordlessDevice(t *testing.T) { t.Run(test.name, func(t *testing.T) { // Enable MFA support. authPref, err := types.NewAuthPreference(types.AuthPreferenceSpecV2{ - Type: constants.Local, - SecondFactor: constants.SecondFactorOptional, + Type: constants.Local, + SecondFactors: []types.SecondFactorType{ + types.SecondFactorType_SECOND_FACTOR_TYPE_OTP, + types.SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN, + }, Webauthn: &types.Webauthn{ RPID: "localhost", }, @@ -944,7 +982,10 @@ func TestGenerateUserCerts_deviceAuthz(t *testing.T) { const rpID = "localhost" const origin = "https://" + rpID + ":3080" // matches RPID. updateAuthPref(t, func(authPref types.AuthPreference) { - authPref.SetSecondFactor(constants.SecondFactorOptional) + authPref.SetSecondFactors( + types.SecondFactorType_SECOND_FACTOR_TYPE_OTP, + types.SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN, + ) authPref.SetWebauthn(&types.Webauthn{ RPID: "localhost", }) @@ -1153,7 +1194,10 @@ func TestRegisterFirstDevice_deviceAuthz(t *testing.T) { // Enable webauthn updateAuthPref(t, func(authPref types.AuthPreference) { - authPref.SetSecondFactor(constants.SecondFactorOptional) + authPref.SetSecondFactors( + types.SecondFactorType_SECOND_FACTOR_TYPE_OTP, + types.SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN, + ) authPref.SetWebauthn(&types.Webauthn{ RPID: "localhost", }) diff --git a/lib/auth/methods.go b/lib/auth/methods.go index 7c3ee63a278e..0e7682370490 100644 --- a/lib/auth/methods.go +++ b/lib/auth/methods.go @@ -22,11 +22,11 @@ import ( "bytes" "context" "errors" + "log/slog" "net" "time" "github.com/gravitational/trace" - "github.com/sirupsen/logrus" "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/constants" @@ -303,7 +303,10 @@ func (a *Server) authenticateUserInternal( if req.HeadlessAuthenticationID != "" { mfaDev, err = a.authenticateHeadless(ctx, req) if err != nil { - log.Debugf("Headless Authentication for user %q failed while waiting for approval: %v", user, err) + slog.DebugContext(ctx, "Headless authenticate failed while waiting for approval", + "user", user, + "error", err, + ) return nil, "", trace.Wrap(err) } return mfaDev, user, nil @@ -327,10 +330,10 @@ func (a *Server) authenticateUserInternal( case err != nil: return nil, "", trace.Wrap(err) case u.GetUserType() != types.UserTypeLocal: - log.WithFields(logrus.Fields{ - "user": user, - "user_type": u.GetUserType(), - }).Warn("Non-local user attempted local authentication") + slog.WarnContext(ctx, "Non-local user attempted local authentication", + "user", user, + "user_type", u.GetUserType(), + ) return nil, "", trace.Wrap(errSSOUserLocalAuth) } @@ -378,16 +381,22 @@ func (a *Server) authenticateUserInternal( }) switch { case err != nil: - log.Debugf("User %v failed to authenticate: %v.", user, err) + slog.DebugContext(ctx, "User failed to authenticate.", + "user", user, + "error", err, + ) if fieldErr := getErrorByTraceField(err); fieldErr != nil { return nil, "", trace.Wrap(fieldErr) } return nil, "", trace.Wrap(authErr) case mfaDev == nil: - log.Debugf( - "MFA authentication returned nil device (Webauthn = %v, TOTP = %v, Headless = %v): %v.", - req.Webauthn != nil, req.OTP != nil, req.HeadlessAuthenticationID != "", err) + slog.DebugContext(ctx, "MFA authentication returned nil device.", + "webauthn", req.Webauthn != nil, + "totp", req.OTP != nil, + "headless", req.HeadlessAuthenticationID != "", + "error", err, + ) return nil, "", trace.Wrap(authErr) default: return mfaDev, user, nil @@ -406,10 +415,14 @@ func (a *Server) authenticateUserInternal( // When using password only make sure that auth preference does not require // second factor, otherwise users could bypass it. - switch authPreference.GetSecondFactor() { - case constants.SecondFactorOff: - // No 2FA required, check password only. - case constants.SecondFactorOptional: + switch { + case authPreference.IsSecondFactorEnforced(): + // Some form of MFA is required but none provided. Either client is + // buggy (didn't send MFA response) or someone is trying to bypass + // MFA. + slog.WarnContext(ctx, "MFA bypass attempt, access denied.", "user", user) + return nil, "", trace.AccessDenied("missing second factor") + case authPreference.IsSecondFactorEnabled(): // 2FA is optional. Make sure that a user does not have MFA devices // registered. devs, err := a.Services.GetMFADevices(ctx, user, false /* withSecrets */) @@ -417,15 +430,11 @@ func (a *Server) authenticateUserInternal( return nil, "", trace.Wrap(err) } if len(devs) != 0 { - log.Warningf("MFA bypass attempt by user %q, access denied.", user) + slog.WarnContext(ctx, "MFA bypass attempt, access denied.", "user", user) return nil, "", trace.AccessDenied("missing second factor authentication") } default: - // Some form of MFA is required but none provided. Either client is - // buggy (didn't send MFA response) or someone is trying to bypass - // MFA. - log.Warningf("MFA bypass attempt by user %q, access denied.", user) - return nil, "", trace.AccessDenied("missing second factor") + // No 2FA required, check password only. } if err = a.WithUserLock(ctx, user, func() error { return a.checkPasswordWOToken(ctx, user, req.Pass.Password) @@ -435,7 +444,10 @@ func (a *Server) authenticateUserInternal( } // provide obscure message on purpose, while logging the real // error server side - log.Debugf("User %v failed to authenticate: %v.", user, err) + slog.DebugContext(ctx, "User failed to authenticate.", + "user", user, + "error", err, + ) return nil, "", trace.Wrap(authclient.InvalidUserPassError) } return nil, user, nil diff --git a/lib/auth/password.go b/lib/auth/password.go index ce340820fd08..f2045ddd2ef0 100644 --- a/lib/auth/password.go +++ b/lib/auth/password.go @@ -31,7 +31,6 @@ import ( "github.com/gravitational/teleport" "github.com/gravitational/teleport/api/client/proto" - "github.com/gravitational/teleport/api/constants" mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" @@ -386,10 +385,10 @@ func (a *Server) changeUserSecondFactor(ctx context.Context, req *proto.ChangeUs return trace.Wrap(err) } - switch sf := cap.GetSecondFactor(); { - case sf == constants.SecondFactorOff: + switch { + case !cap.IsSecondFactorEnabled(): return nil - case req.GetNewMFARegisterResponse() == nil && sf == constants.SecondFactorOptional: + case req.GetNewMFARegisterResponse() == nil && !cap.IsSecondFactorEnforced(): // Optional second factor does not enforce users to add a MFA device. // No need to check if a user already has registered devices since we expect // users to have no devices at this point. diff --git a/lib/auth/tls_test.go b/lib/auth/tls_test.go index bd0a3d8fd5e5..cc85616a315e 100644 --- a/lib/auth/tls_test.go +++ b/lib/auth/tls_test.go @@ -1401,7 +1401,7 @@ func TestAuthPreferenceSettings(t *testing.T) { require.NoError(t, err) require.Equal(t, "local", gotAP.GetType()) - require.Equal(t, constants.SecondFactorOTP, gotAP.GetSecondFactor()) + require.Equal(t, []types.SecondFactorType{types.SecondFactorType_SECOND_FACTOR_TYPE_OTP}, gotAP.GetSecondFactors()) require.True(t, gotAP.GetDisconnectExpiredCert()) require.Empty(t, cmp.Diff(upsertedAP, gotAP, cmpopts.IgnoreFields(types.Metadata{}, "Revision"))) } diff --git a/lib/auth/usertoken.go b/lib/auth/usertoken.go index e874c5d44d1f..5959f223cb49 100644 --- a/lib/auth/usertoken.go +++ b/lib/auth/usertoken.go @@ -30,7 +30,6 @@ import ( "github.com/pquerna/otp/totp" "github.com/gravitational/teleport/api/client/proto" - "github.com/gravitational/teleport/api/constants" mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" @@ -385,7 +384,7 @@ func (a *Server) CreatePrivilegeToken(ctx context.Context, req *proto.CreatePriv // For a user to add a device, second factor must be enabled. // A nil request will be interpreted as a user who has second factor enabled // but does not have any MFA registered, as can be the case with second factor optional. - if authPref.GetSecondFactor() == constants.SecondFactorOff { + if !authPref.IsSecondFactorEnabled() { return nil, trace.AccessDenied("second factor must be enabled") } diff --git a/lib/services/readonly/readonly.go b/lib/services/readonly/readonly.go index 47e60ec9c4da..db65197a4338 100644 --- a/lib/services/readonly/readonly.go +++ b/lib/services/readonly/readonly.go @@ -36,11 +36,13 @@ import ( // to ensure that we do not modify the underlying AuthPreference as it may be shared across // multiple goroutines. type AuthPreference interface { - GetSecondFactor() constants.SecondFactorType GetDisconnectExpiredCert() bool GetLockingMode() constants.LockingMode GetDeviceTrust() *types.DeviceTrust GetPrivateKeyPolicy() keys.PrivateKeyPolicy + GetSecondFactors() []types.SecondFactorType + IsSecondFactorEnforced() bool + IsSecondFactorTOTPAllowed() bool IsAdminActionMFAEnforced() bool GetRequireMFAType() types.RequireMFAType IsSAMLIdPEnabled() bool diff --git a/lib/web/apiserver.go b/lib/web/apiserver.go index 8087b5e21619..8404d66d6ce2 100644 --- a/lib/web/apiserver.go +++ b/lib/web/apiserver.go @@ -1235,7 +1235,7 @@ func (h *Handler) AccessGraphAddr() utils.NetAddr { func localSettings(cap types.AuthPreference) (webclient.AuthenticationSettings, error) { as := webclient.AuthenticationSettings{ Type: constants.Local, - SecondFactor: cap.GetSecondFactor(), + SecondFactor: types.LegacySecondFactorFromSecondFactors(cap.GetSecondFactors()), PreferredLocalMFA: cap.GetPreferredLocalMFA(), AllowPasswordless: cap.GetAllowPasswordless(), AllowHeadless: cap.GetAllowHeadless(), @@ -1280,7 +1280,7 @@ func oidcSettings(connector types.OIDCConnector, cap types.AuthPreference) webcl Display: connector.GetDisplay(), }, // Local fallback / MFA. - SecondFactor: cap.GetSecondFactor(), + SecondFactor: types.LegacySecondFactorFromSecondFactors(cap.GetSecondFactors()), PreferredLocalMFA: cap.GetPreferredLocalMFA(), PrivateKeyPolicy: cap.GetPrivateKeyPolicy(), PIVSlot: cap.GetPIVSlot(), @@ -1298,7 +1298,7 @@ func samlSettings(connector types.SAMLConnector, cap types.AuthPreference) webcl SingleLogoutEnabled: connector.GetSingleLogoutURL() != "", }, // Local fallback / MFA. - SecondFactor: cap.GetSecondFactor(), + SecondFactor: types.LegacySecondFactorFromSecondFactors(cap.GetSecondFactors()), PreferredLocalMFA: cap.GetPreferredLocalMFA(), PrivateKeyPolicy: cap.GetPrivateKeyPolicy(), PIVSlot: cap.GetPIVSlot(), @@ -1315,7 +1315,7 @@ func githubSettings(connector types.GithubConnector, cap types.AuthPreference) w Display: connector.GetDisplay(), }, // Local fallback / MFA. - SecondFactor: cap.GetSecondFactor(), + SecondFactor: types.LegacySecondFactorFromSecondFactors(cap.GetSecondFactors()), PreferredLocalMFA: cap.GetPreferredLocalMFA(), PrivateKeyPolicy: cap.GetPrivateKeyPolicy(), PIVSlot: cap.GetPIVSlot(), @@ -1717,7 +1717,7 @@ func (h *Handler) getWebConfig(w http.ResponseWriter, r *http.Request, p httprou authSettings = webclient.WebConfigAuthSettings{ Providers: authProviders, - SecondFactor: cap.GetSecondFactor(), + SecondFactor: types.LegacySecondFactorFromSecondFactors(cap.GetSecondFactors()), LocalAuthEnabled: cap.GetAllowLocalAuth(), AllowPasswordless: cap.GetAllowPasswordless(), AuthType: authType, @@ -2337,19 +2337,15 @@ func (h *Handler) createWebSession(w http.ResponseWriter, r *http.Request, p htt clientMeta := clientMetaFromReq(r) var webSession types.WebSession - switch cap.GetSecondFactor() { - case constants.SecondFactorOff: + switch { + case !cap.IsSecondFactorEnforced(): + webSession, err = h.auth.AuthWithoutOTP(r.Context(), req.User, req.Pass, clientMeta) + case req.SecondFactorToken == "" && !cap.IsSecondFactorEnforced(): webSession, err = h.auth.AuthWithoutOTP(r.Context(), req.User, req.Pass, clientMeta) - case constants.SecondFactorOTP, constants.SecondFactorOn: + case cap.IsSecondFactorTOTPAllowed(): webSession, err = h.auth.AuthWithOTP(r.Context(), req.User, req.Pass, req.SecondFactorToken, clientMeta) - case constants.SecondFactorOptional: - if req.SecondFactorToken == "" { - webSession, err = h.auth.AuthWithoutOTP(r.Context(), req.User, req.Pass, clientMeta) - } else { - webSession, err = h.auth.AuthWithOTP(r.Context(), req.User, req.Pass, req.SecondFactorToken, clientMeta) - } default: - return nil, trace.AccessDenied("unknown second factor type: %q", cap.GetSecondFactor()) + return nil, trace.AccessDenied("direct login with password+otp not supported by this cluster") } if err != nil { h.log.WithError(err).Warnf("Access attempt denied for user %q.", req.User) @@ -4159,18 +4155,18 @@ func (h *Handler) createSSHCert(w http.ResponseWriter, r *http.Request, p httpro return loginResp, nil } - switch cap.GetSecondFactor() { - case constants.SecondFactorOff: + switch { + case !cap.IsSecondFactorEnforced(): authSSHUserReq.AuthenticateUserRequest.Pass = &authclient.PassCreds{ Password: []byte(req.Password), } - case constants.SecondFactorOTP, constants.SecondFactorOn, constants.SecondFactorOptional: + case cap.IsSecondFactorTOTPAllowed(): authSSHUserReq.AuthenticateUserRequest.OTP = &authclient.OTPCreds{ Password: []byte(req.Password), Token: req.OTPToken, } default: - return nil, trace.AccessDenied("unsupported second factor type: %q", cap.GetSecondFactor()) + return nil, trace.AccessDenied("direct login with password+otp not supported by this cluster") } loginResp, err := authClient.AuthenticateSSHUser(r.Context(), authSSHUserReq) diff --git a/lib/web/apiserver_ping_test.go b/lib/web/apiserver_ping_test.go index 5a54fd240755..e14017d0ff13 100644 --- a/lib/web/apiserver_ping_test.go +++ b/lib/web/apiserver_ping_test.go @@ -67,7 +67,38 @@ func TestPing(t *testing.T) { }, assertResp: func(cap types.AuthPreference, resp *webclient.PingResponse) { assert.Equal(t, cap.GetType(), resp.Auth.Type) - assert.Equal(t, cap.GetSecondFactor(), resp.Auth.SecondFactor) + assert.Equal(t, constants.SecondFactorOn, resp.Auth.SecondFactor) + assert.NotEmpty(t, cap.GetPreferredLocalMFA(), "preferred local MFA empty") + assert.NotNil(t, resp.Auth.Local, "Auth.Local expected") + + u2f, _ := cap.GetU2F() + require.NotNil(t, resp.Auth.U2F) + assert.Equal(t, u2f.AppID, resp.Auth.U2F.AppID) + + webCfg, _ := cap.GetWebauthn() + require.NotNil(t, resp.Auth.Webauthn) + assert.Equal(t, webCfg.RPID, resp.Auth.Webauthn.RPID) + + assert.Equal(t, types.SignatureAlgorithmSuite_SIGNATURE_ALGORITHM_SUITE_UNSPECIFIED, resp.Auth.SignatureAlgorithmSuite) + }, + }, + { + name: "OK local auth SecondFactors", + spec: &types.AuthPreferenceSpecV2{ + Type: constants.Local, + SecondFactors: []types.SecondFactorType{ + types.SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN, + }, + U2F: &types.U2F{ + AppID: "https://example.com", + }, + Webauthn: &types.Webauthn{ + RPID: "example.com", + }, + }, + assertResp: func(cap types.AuthPreference, resp *webclient.PingResponse) { + assert.Equal(t, cap.GetType(), resp.Auth.Type) + assert.Equal(t, constants.SecondFactorWebauthn, resp.Auth.SecondFactor) assert.NotEmpty(t, cap.GetPreferredLocalMFA(), "preferred local MFA empty") assert.NotNil(t, resp.Auth.Local, "Auth.Local expected") diff --git a/lib/web/apiserver_test.go b/lib/web/apiserver_test.go index 06b42f394e65..ad16a9c658dc 100644 --- a/lib/web/apiserver_test.go +++ b/lib/web/apiserver_test.go @@ -4612,7 +4612,7 @@ func TestGetWebConfig_WithEntitlements(t *testing.T) { const MOTD = "Welcome to cluster, your activity will be recorded." ap, err := types.NewAuthPreference(types.AuthPreferenceSpecV2{ Type: constants.Local, - SecondFactor: constants.SecondFactorOptional, + SecondFactor: constants.SecondFactorOn, ConnectorName: constants.PasswordlessConnector, Webauthn: &types.Webauthn{ RPID: "localhost", @@ -4642,7 +4642,7 @@ func TestGetWebConfig_WithEntitlements(t *testing.T) { expectedCfg := webclient.WebConfig{ Auth: webclient.WebConfigAuthSettings{ - SecondFactor: constants.SecondFactorOptional, + SecondFactor: constants.SecondFactorOn, Providers: []webclient.WebConfigAuthProvider{{ Name: "test-github", Type: constants.Github, diff --git a/tool/tctl/common/collection.go b/tool/tctl/common/collection.go index d74bd31ceba2..e3ae81f76394 100644 --- a/tool/tctl/common/collection.go +++ b/tool/tctl/common/collection.go @@ -568,8 +568,17 @@ func (c *authPrefCollection) resources() (r []types.Resource) { } func (c *authPrefCollection) writeText(w io.Writer, verbose bool) error { - t := asciitable.MakeTable([]string{"Type", "Second Factor"}) - t.AddRow([]string{c.authPref.GetType(), string(c.authPref.GetSecondFactor())}) + var secondFactorStrings []string + for _, sf := range c.authPref.GetSecondFactors() { + sfString, err := sf.Encode() + if err != nil { + return trace.Wrap(err) + } + secondFactorStrings = append(secondFactorStrings, sfString) + } + + t := asciitable.MakeTable([]string{"Type", "Second Factors"}) + t.AddRow([]string{c.authPref.GetType(), strings.Join(secondFactorStrings, ", ")}) _, err := t.AsBuffer().WriteTo(w) return trace.Wrap(err) } diff --git a/tool/tctl/common/edit_command_test.go b/tool/tctl/common/edit_command_test.go index c587080d33d8..42f9dee0043e 100644 --- a/tool/tctl/common/edit_command_test.go +++ b/tool/tctl/common/edit_command_test.go @@ -30,7 +30,6 @@ import ( "github.com/stretchr/testify/require" "google.golang.org/protobuf/testing/protocmp" - "github.com/gravitational/teleport/api/constants" autoupdatev1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/autoupdate/v1" headerv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1" labelv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/label/v1" @@ -283,7 +282,7 @@ func testEditAuthPreference(t *testing.T, clt *authclient.Client) { } expected.SetRevision(initial.GetRevision()) - expected.SetSecondFactor(constants.SecondFactorOff) + expected.SetSecondFactors(types.SecondFactorType_SECOND_FACTOR_TYPE_OTP, types.SecondFactorType_SECOND_FACTOR_TYPE_SSO) collection := &authPrefCollection{authPref: expected} return trace.NewAggregate(writeYAML(collection, f), f.Close()) @@ -296,7 +295,7 @@ func testEditAuthPreference(t *testing.T, clt *authclient.Client) { actual, err := clt.GetAuthPreference(ctx) require.NoError(t, err, "retrieving cap after edit") - assert.NotEqual(t, initial.GetSecondFactor(), actual.GetSecondFactor(), "second factor should have been modified by edit") + assert.NotEqual(t, initial.GetSecondFactors(), actual.GetSecondFactors(), "second factors should have been modified by edit") require.Empty(t, cmp.Diff(expected, actual, cmpopts.IgnoreFields(types.Metadata{}, "Revision", "Labels"))) assert.Equal(t, types.OriginDynamic, actual.Origin()) diff --git a/tool/tctl/common/resource_command_test.go b/tool/tctl/common/resource_command_test.go index 6ec25abb1507..1eb4b6ee34bf 100644 --- a/tool/tctl/common/resource_command_test.go +++ b/tool/tctl/common/resource_command_test.go @@ -1832,7 +1832,7 @@ func testCreateAuthPreference(t *testing.T, clt *authclient.Client) { metadata: name: cluster-auth-preference spec: - second_factor: off + second_factors: [otp, sso] type: local version: v2 ` @@ -1849,16 +1849,18 @@ version: v2 cap = mustDecodeJSON[[]*types.AuthPreferenceV2](t, buf) require.Len(t, cap, 1) - var expected types.AuthPreferenceV2 - require.NoError(t, yaml.Unmarshal([]byte(capYAML), &expected)) + expectInitialSecondFactors := []types.SecondFactorType{types.SecondFactorType_SECOND_FACTOR_TYPE_OTP} // second factors defaults to [otp] + require.Equal(t, expectInitialSecondFactors, initial.GetSecondFactors()) - require.NotEqual(t, constants.SecondFactorOff, initial.GetSecondFactor()) - require.Equal(t, constants.SecondFactorOff, expected.GetSecondFactor()) + var revised types.AuthPreferenceV2 + require.NoError(t, yaml.Unmarshal([]byte(capYAML), &revised)) + expectRevisedSecondFactors := []types.SecondFactorType{types.SecondFactorType_SECOND_FACTOR_TYPE_OTP, types.SecondFactorType_SECOND_FACTOR_TYPE_SSO} + require.Equal(t, expectRevisedSecondFactors, revised.GetSecondFactors()) // Explicitly change the revision and try creating the cap with and without // the force flag. - expected.SetRevision(uuid.NewString()) - raw, err := services.MarshalAuthPreference(&expected, services.PreserveRevision()) + revised.SetRevision(uuid.NewString()) + raw, err := services.MarshalAuthPreference(&revised, services.PreserveRevision()) require.NoError(t, err) require.NoError(t, os.WriteFile(capYAMLPath, raw, 0644)) From cce115749d768fcca44fc31bd86ece82ca2c7f2e Mon Sep 17 00:00:00 2001 From: Zac Bergquist Date: Wed, 16 Oct 2024 13:25:59 -0600 Subject: [PATCH 5/5] OIDC: validate the client_secret field (#46041) - Make the client_secret required, as OIDC auth won't work without it - Raise a clear error if unsupported file:// URLs are used Closes #39107 --- api/types/oidc.go | 10 +++++++++- api/types/oidc_external_test.go | 18 ++++++++++++++++++ lib/auth/auth_test.go | 3 ++- lib/services/oidc_test.go | 6 ++++++ tool/tsh/common/tsh_test.go | 1 + 5 files changed, 36 insertions(+), 2 deletions(-) diff --git a/api/types/oidc.go b/api/types/oidc.go index efbe4a6c86b2..6f7c63bc7298 100644 --- a/api/types/oidc.go +++ b/api/types/oidc.go @@ -20,6 +20,7 @@ import ( "net/netip" "net/url" "slices" + "strings" "time" "github.com/gravitational/trace" @@ -403,7 +404,14 @@ func (o *OIDCConnectorV3) CheckAndSetDefaults() error { } if o.Spec.ClientID == "" { - return trace.BadParameter("ClientID: missing client id") + return trace.BadParameter("OIDC connector is missing required client_id") + } + + if o.Spec.ClientSecret == "" { + return trace.BadParameter("OIDC connector is missing required client_secret") + } + if strings.HasPrefix(o.Spec.ClientSecret, "file://") { + return trace.BadParameter("the client_secret must be a literal value, file:// URLs are not supported") } if len(o.GetClaimsToRoles()) == 0 { diff --git a/api/types/oidc_external_test.go b/api/types/oidc_external_test.go index da515d511e7c..504218479ccc 100644 --- a/api/types/oidc_external_test.go +++ b/api/types/oidc_external_test.go @@ -17,6 +17,7 @@ package types import ( "testing" + "github.com/gravitational/trace" "github.com/stretchr/testify/require" ) @@ -55,3 +56,20 @@ func TestOIDCClaimsRoundTrip(t *testing.T) { }) } } + +func TestClientSecretFileURI(t *testing.T) { + _, err := NewOIDCConnector("test-connector", OIDCConnectorSpecV3{ + ClientID: "some-client-id", + ClientSecret: "file://is-not-allowed", + ClaimsToRoles: []ClaimMapping{ + { + Claim: "team", + Value: "dev", + Roles: []string{"dev-team-access"}, + }, + }, + }) + require.Error(t, err) + require.True(t, trace.IsBadParameter(err)) + require.ErrorContains(t, err, "file:// URLs are not supported") +} diff --git a/lib/auth/auth_test.go b/lib/auth/auth_test.go index b1248f330397..c8f8bf6a713e 100644 --- a/lib/auth/auth_test.go +++ b/lib/auth/auth_test.go @@ -1343,7 +1343,8 @@ func TestOIDCConnectorCRUDEventsEmitted(t *testing.T) { ctx := context.Background() oidc, err := types.NewOIDCConnector("test", types.OIDCConnectorSpecV3{ - ClientID: "a", + ClientID: "a", + ClientSecret: "b", ClaimsToRoles: []types.ClaimMapping{ { Claim: "dummy", diff --git a/lib/services/oidc_test.go b/lib/services/oidc_test.go index ca3dd2f048a9..b53760561d3d 100644 --- a/lib/services/oidc_test.go +++ b/lib/services/oidc_test.go @@ -109,6 +109,7 @@ func TestOIDCUnmarshal(t *testing.T) { }, "spec": { "client_id": "id-from-google.apps.googleusercontent.com", + "client_secret": "secret-key-from-google", "claims_to_roles": [ { "claim": "roles", @@ -125,6 +126,7 @@ func TestOIDCUnmarshal(t *testing.T) { }`, expectSpec: types.OIDCConnectorSpecV3{ ClientID: "id-from-google.apps.googleusercontent.com", + ClientSecret: "secret-key-from-google", ClaimsToRoles: []types.ClaimMapping{{Claim: "roles", Value: "teleport-user", Roles: []string{"dictator"}}}, RedirectURLs: []string{ "https://localhost:3080/v1/webapi/oidc/callback", @@ -159,6 +161,7 @@ func TestOIDCCheckAndSetDefaults(t *testing.T) { desc: "basic spec and defaults", spec: types.OIDCConnectorSpecV3{ ClientID: "id-from-google.apps.googleusercontent.com", + ClientSecret: "some-client-secret", ClaimsToRoles: []types.ClaimMapping{{Claim: "roles", Value: "teleport-user", Roles: []string{"dictator"}}}, RedirectURLs: []string{"https://localhost:3080/v1/webapi/oidc/callback"}, }, @@ -175,6 +178,7 @@ func TestOIDCCheckAndSetDefaults(t *testing.T) { desc: "omit prompt", spec: types.OIDCConnectorSpecV3{ ClientID: "id-from-google.apps.googleusercontent.com", + ClientSecret: "some-client-secret", ClaimsToRoles: []types.ClaimMapping{{Claim: "roles", Value: "teleport-user", Roles: []string{"dictator"}}}, RedirectURLs: []string{ "https://localhost:3080/v1/webapi/oidc/callback", @@ -191,6 +195,7 @@ func TestOIDCCheckAndSetDefaults(t *testing.T) { desc: "invalid claims to roles", spec: types.OIDCConnectorSpecV3{ ClientID: "id-from-google.apps.googleusercontent.com", + ClientSecret: "some-client-secret", ClaimsToRoles: []types.ClaimMapping{{Claim: "roles", Value: "teleport-user"}}, RedirectURLs: []string{ "https://localhost:3080/v1/webapi/oidc/callback", @@ -215,6 +220,7 @@ func TestOIDCCheckAndSetDefaults(t *testing.T) { func TestOIDCGetRedirectURL(t *testing.T) { conn, err := types.NewOIDCConnector("oidc", types.OIDCConnectorSpecV3{ ClientID: "id-from-google.apps.googleusercontent.com", + ClientSecret: "some-client-secret", ClaimsToRoles: []types.ClaimMapping{{Claim: "roles", Value: "teleport-user", Roles: []string{"dictator"}}}, RedirectURLs: []string{ "https://proxy.example.com/v1/webapi/oidc/callback", diff --git a/tool/tsh/common/tsh_test.go b/tool/tsh/common/tsh_test.go index 965705c7de22..09ec6ca8fb1c 100644 --- a/tool/tsh/common/tsh_test.go +++ b/tool/tsh/common/tsh_test.go @@ -3879,6 +3879,7 @@ func mockConnector(t *testing.T) types.OIDCConnector { IssuerURL: "https://auth.example.com", RedirectURLs: []string{"https://cluster.example.com"}, ClientID: "fake-client", + ClientSecret: "fake-secret", ClaimsToRoles: []types.ClaimMapping{ { Claim: "groups",