From bf723051a4759d16dd5e6c1fc334dfff491c4c4d Mon Sep 17 00:00:00 2001 From: Brandon Freeman Date: Thu, 19 Feb 2026 17:42:54 -0800 Subject: [PATCH] protos: campaigns --- go/gen/sift/campaigns/v1/campaigns.pb.go | 847 +++++-- go/gen/sift/campaigns/v1/campaigns.pb.gw.go | 85 + .../sift/campaigns/v1/campaigns_vtproto.pb.go | 2035 +++++++++++++-- protos/sift/campaigns/v1/campaigns.proto | 49 + python/lib/sift/campaigns/v1/campaigns_pb2.py | 78 +- .../lib/sift/campaigns/v1/campaigns_pb2.pyi | 106 +- .../sift/campaigns/v1/campaigns_pb2_grpc.py | 36 + .../sift/campaigns/v1/campaigns_pb2_grpc.pyi | 29 + .../sift_rs/src/gen/sift.campaigns.v1.rs | 2222 +++++++++-------- .../src/gen/sift.campaigns.v1.serde.rs | 349 +++ .../src/gen/sift.campaigns.v1.tonic.rs | 90 + 11 files changed, 4390 insertions(+), 1536 deletions(-) diff --git a/go/gen/sift/campaigns/v1/campaigns.pb.go b/go/gen/sift/campaigns/v1/campaigns.pb.go index 17474e45b..00b3c970d 100644 --- a/go/gen/sift/campaigns/v1/campaigns.pb.go +++ b/go/gen/sift/campaigns/v1/campaigns.pb.go @@ -52,6 +52,11 @@ type Campaign struct { Metadata []*v11.MetadataValue `protobuf:"bytes,14,rep,name=metadata,proto3" json:"metadata,omitempty"` // Whether the campaign. This is inferred from whether archived_date is set. IsArchived bool `protobuf:"varint,15,opt,name=is_archived,json=isArchived,proto3" json:"is_archived,omitempty"` + // Indicates whether the summary fields on CampaignReport (num_annotations, + // num_passed_rules, num_accepted_rules, num_failed_rules, num_open_rules) are populated. + // When false, those fields should be ignored -- use GetCampaignReportSummaries to + // fetch the summary data separately. + ReportsIncludeSummaries bool `protobuf:"varint,16,opt,name=reports_include_summaries,json=reportsIncludeSummaries,proto3" json:"reports_include_summaries,omitempty"` } func (x *Campaign) Reset() { @@ -191,6 +196,13 @@ func (x *Campaign) GetIsArchived() bool { return false } +func (x *Campaign) GetReportsIncludeSummaries() bool { + if x != nil { + return x.ReportsIncludeSummaries + } + return false +} + // A top-level summary of the report's rules is provided here so clients needn't aggregate this information themselves. type CampaignReport struct { state protoimpl.MessageState @@ -304,6 +316,11 @@ type GetCampaignRequest struct { CampaignId string `protobuf:"bytes,1,opt,name=campaign_id,json=campaignId,proto3" json:"campaign_id,omitempty"` ClientKey string `protobuf:"bytes,2,opt,name=client_key,json=clientKey,proto3" json:"client_key,omitempty"` OrganizationId string `protobuf:"bytes,3,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` + // If `true`, the response will omit the summary fields on the campaign's reports + // and set reports_include_summaries to false on the Campaign message. + // Reports will still be included with report_id and report_name populated. + // This significantly improves response times for campaigns with many reports. Defaults to `false`. + SkipReportSummaries bool `protobuf:"varint,4,opt,name=skip_report_summaries,json=skipReportSummaries,proto3" json:"skip_report_summaries,omitempty"` } func (x *GetCampaignRequest) Reset() { @@ -359,6 +376,13 @@ func (x *GetCampaignRequest) GetOrganizationId() string { return "" } +func (x *GetCampaignRequest) GetSkipReportSummaries() bool { + if x != nil { + return x.SkipReportSummaries + } + return false +} + // The response of a call to `CampaignService_GetCampaign` to retrieve a campaign. type GetCampaignResponse struct { state protoimpl.MessageState @@ -688,6 +712,11 @@ type ListCampaignsRequest struct { // For more information about the format of this field, read [this](https://google.aip.dev/132#ordering) // Example: "created_date desc,modified_date" OrderBy string `protobuf:"bytes,6,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + // If `true`, the response will omit the summary fields on each campaign's reports + // and set reports_include_summaries to false on the Campaign message. + // Reports will still be included with report_id and report_name populated. + // This significantly improves response times for campaigns with many reports. Defaults to `false`. + SkipReportSummaries bool `protobuf:"varint,7,opt,name=skip_report_summaries,json=skipReportSummaries,proto3" json:"skip_report_summaries,omitempty"` } func (x *ListCampaignsRequest) Reset() { @@ -764,6 +793,13 @@ func (x *ListCampaignsRequest) GetOrderBy() string { return "" } +func (x *ListCampaignsRequest) GetSkipReportSummaries() bool { + if x != nil { + return x.SkipReportSummaries + } + return false +} + // The response of a call to `CampaignService_ListCampaignsResponse`. type ListCampaignsResponse struct { state protoimpl.MessageState @@ -1080,6 +1116,159 @@ func (x *ListCampaignAnnotationsResponse) GetNextPageToken() string { return "" } +type GetCampaignReportSummariesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CampaignIds []string `protobuf:"bytes,1,rep,name=campaign_ids,json=campaignIds,proto3" json:"campaign_ids,omitempty"` + // This field is only required if your user belongs to multiple organizations. + OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` +} + +func (x *GetCampaignReportSummariesRequest) Reset() { + *x = GetCampaignReportSummariesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sift_campaigns_v1_campaigns_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCampaignReportSummariesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCampaignReportSummariesRequest) ProtoMessage() {} + +func (x *GetCampaignReportSummariesRequest) ProtoReflect() protoreflect.Message { + mi := &file_sift_campaigns_v1_campaigns_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCampaignReportSummariesRequest.ProtoReflect.Descriptor instead. +func (*GetCampaignReportSummariesRequest) Descriptor() ([]byte, []int) { + return file_sift_campaigns_v1_campaigns_proto_rawDescGZIP(), []int{13} +} + +func (x *GetCampaignReportSummariesRequest) GetCampaignIds() []string { + if x != nil { + return x.CampaignIds + } + return nil +} + +func (x *GetCampaignReportSummariesRequest) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +// Wrapper for repeated CampaignReport used in map values (proto3 maps cannot directly contain repeated fields). +type CampaignReports struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Reports []*CampaignReport `protobuf:"bytes,1,rep,name=reports,proto3" json:"reports,omitempty"` +} + +func (x *CampaignReports) Reset() { + *x = CampaignReports{} + if protoimpl.UnsafeEnabled { + mi := &file_sift_campaigns_v1_campaigns_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CampaignReports) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CampaignReports) ProtoMessage() {} + +func (x *CampaignReports) ProtoReflect() protoreflect.Message { + mi := &file_sift_campaigns_v1_campaigns_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CampaignReports.ProtoReflect.Descriptor instead. +func (*CampaignReports) Descriptor() ([]byte, []int) { + return file_sift_campaigns_v1_campaigns_proto_rawDescGZIP(), []int{14} +} + +func (x *CampaignReports) GetReports() []*CampaignReport { + if x != nil { + return x.Reports + } + return nil +} + +type GetCampaignReportSummariesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Keyed by campaign_id. Each value contains the full list of CampaignReport + // entries for that campaign with summary fields (num_*) populated. + SummariesByCampaignId map[string]*CampaignReports `protobuf:"bytes,1,rep,name=summaries_by_campaign_id,json=summariesByCampaignId,proto3" json:"summaries_by_campaign_id,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *GetCampaignReportSummariesResponse) Reset() { + *x = GetCampaignReportSummariesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sift_campaigns_v1_campaigns_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCampaignReportSummariesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCampaignReportSummariesResponse) ProtoMessage() {} + +func (x *GetCampaignReportSummariesResponse) ProtoReflect() protoreflect.Message { + mi := &file_sift_campaigns_v1_campaigns_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCampaignReportSummariesResponse.ProtoReflect.Descriptor instead. +func (*GetCampaignReportSummariesResponse) Descriptor() ([]byte, []int) { + return file_sift_campaigns_v1_campaigns_proto_rawDescGZIP(), []int{15} +} + +func (x *GetCampaignReportSummariesResponse) GetSummariesByCampaignId() map[string]*CampaignReports { + if x != nil { + return x.SummariesByCampaignId + } + return nil +} + var File_sift_campaigns_v1_campaigns_proto protoreflect.FileDescriptor var file_sift_campaigns_v1_campaigns_proto_rawDesc = []byte{ @@ -1106,7 +1295,7 @@ var file_sift_campaigns_v1_campaigns_proto_rawDesc = []byte{ 0x73, 0x69, 0x66, 0x74, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, - 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda, 0x06, 0x0a, 0x08, 0x43, 0x61, 0x6d, + 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9b, 0x07, 0x0a, 0x08, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, @@ -1156,235 +1345,294 @@ var file_sift_campaigns_v1_campaigns_proto_rawDesc = []byte{ 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, - 0x73, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0xc2, 0x02, 0x0a, 0x0e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x2c, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, - 0x6e, 0x75, 0x6d, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, - 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, - 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6e, - 0x75, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x31, 0x0a, - 0x12, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x75, - 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, - 0x6e, 0x75, 0x6d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, - 0x12, 0x2d, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, - 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x0e, 0x6e, 0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, - 0x29, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x6e, 0x75, - 0x6d, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x63, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x22, 0x9f, - 0x03, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x69, - 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x48, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x88, - 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x72, 0x6f, - 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x12, - 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, - 0x22, 0xfb, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x44, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x3e, 0x0a, - 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, - 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x50, 0x0a, - 0x0e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, - 0x52, 0x0d, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, - 0x0d, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x22, 0x56, - 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, - 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x22, 0xf7, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x2e, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, - 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, - 0x22, 0x7a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x63, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, + 0x73, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x19, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x17, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0xc2, 0x02, 0x0a, 0x0e, 0x43, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0b, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0e, 0x6e, 0x75, 0x6d, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x2d, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x72, 0x75, + 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, + 0x6e, 0x75, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x31, + 0x0a, 0x12, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x72, + 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x10, 0x6e, 0x75, 0x6d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, + 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, + 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, + 0x12, 0x29, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x75, 0x6c, + 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x6e, + 0x75, 0x6d, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x12, + 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x0f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x15, 0x73, 0x6b, + 0x69, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, + 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x09, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, - 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x97, 0x01, 0x0a, - 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x56, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x22, 0xc9, - 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x63, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0x8c, 0x01, 0x0a, 0x1f, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, - 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, - 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0xb1, 0x08, 0x0a, 0x0f, 0x43, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xea, 0x01, - 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x25, 0x2e, - 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8b, 0x01, 0x92, - 0x41, 0x23, 0x12, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x1a, - 0x14, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x5a, 0x3c, 0x12, 0x3a, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x7d, 0x12, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xaa, 0x01, 0x0a, 0x0e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x28, 0x2e, - 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x43, 0x92, 0x41, 0x24, 0x12, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x1a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, - 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x73, 0x69, 0x66, 0x74, - 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x92, 0x41, - 0x20, 0x12, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, - 0x1a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xea, 0x01, 0x0a, 0x0e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x28, 0x2e, - 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x22, 0x9f, 0x03, 0x0a, 0x15, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, + 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x09, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, + 0x66, 0x74, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0xfb, 0x01, 0x0a, 0x12, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x46, 0x72, 0x6f, + 0x6d, 0x12, 0x44, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, + 0x00, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x6f, 0x74, 0x68, 0x65, 0x72, + 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x6f, 0x74, 0x68, 0x65, + 0x72, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x22, 0x56, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x82, 0x01, 0x92, 0x41, 0x63, 0x12, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x1a, 0x51, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x60, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x60, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x16, 0x3a, 0x01, 0x2a, 0x32, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xf3, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x22, 0xb0, 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x0f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x37, 0x0a, 0x15, 0x73, 0x6b, + 0x69, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, + 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x65, 0x73, 0x22, 0x7a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x09, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x09, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0x97, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, + 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x56, 0x0a, 0x16, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x22, 0xc9, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, + 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0x8c, 0x01, + 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x79, 0x0a, 0x21, + 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x0f, 0x43, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x69, + 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x07, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22, 0x9e, 0x02, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, + 0x01, 0x0a, 0x18, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x50, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x65, 0x73, 0x42, 0x79, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x15, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x42, 0x79, + 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x1a, 0x6c, 0x0a, 0x1a, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x42, 0x79, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x49, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x69, 0x66, 0x74, + 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xbb, 0x0a, 0x0a, 0x0f, 0x43, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xea, 0x01, 0x0a, + 0x0b, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x25, 0x2e, 0x73, + 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8b, 0x01, 0x92, 0x41, + 0x23, 0x12, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x1a, 0x14, + 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x5a, 0x3c, 0x12, 0x3a, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x7d, 0x12, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xaa, 0x01, 0x0a, 0x0e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x28, 0x2e, 0x73, + 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x43, 0x92, 0x41, 0x24, 0x12, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x1a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, + 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, + 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x92, 0x41, 0x20, + 0x12, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x1a, + 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xea, 0x01, 0x0a, 0x0e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x28, 0x2e, 0x73, + 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x82, 0x01, 0x92, 0x41, 0x63, 0x12, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x1a, 0x51, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x60, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x60, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, + 0x3a, 0x01, 0x2a, 0x32, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xf3, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x92, 0x41, 0x3b, 0x12, - 0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, - 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, - 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0xe5, 0x01, - 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x66, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x73, 0x69, 0x66, - 0x74, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x43, 0x58, - 0xaa, 0x02, 0x11, 0x53, 0x69, 0x66, 0x74, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x53, 0x69, 0x66, 0x74, 0x5c, 0x43, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x73, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x53, 0x69, 0x66, 0x74, 0x5c, - 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x53, 0x69, 0x66, 0x74, 0x3a, - 0x3a, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x92, 0x41, - 0x14, 0x12, 0x12, 0x0a, 0x10, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x73, 0x12, 0x31, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x92, 0x41, 0x3b, 0x12, 0x17, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, + 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x87, 0x02, 0x0a, + 0x1a, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x73, 0x69, + 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x35, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7c, 0x92, 0x41, 0x4c, 0x12, 0x1a, 0x47, + 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x73, 0x20, 0x70, 0x65, 0x72, 0x2d, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, + 0x20, 0x69, 0x6e, 0x20, 0x62, 0x75, 0x6c, 0x6b, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, + 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x73, 0x3a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x73, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x42, 0xe5, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x73, + 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, + 0x42, 0x0e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x69, 0x66, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x67, + 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x73, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x43, 0x58, 0xaa, 0x02, 0x11, 0x53, 0x69, 0x66, 0x74, + 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, + 0x53, 0x69, 0x66, 0x74, 0x5c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x1d, 0x53, 0x69, 0x66, 0x74, 0x5c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x13, 0x53, 0x69, 0x66, 0x74, 0x3a, 0x3a, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x92, 0x41, 0x14, 0x12, 0x12, 0x0a, 0x10, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1399,65 +1647,74 @@ func file_sift_campaigns_v1_campaigns_proto_rawDescGZIP() []byte { return file_sift_campaigns_v1_campaigns_proto_rawDescData } -var file_sift_campaigns_v1_campaigns_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_sift_campaigns_v1_campaigns_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_sift_campaigns_v1_campaigns_proto_goTypes = []interface{}{ - (*Campaign)(nil), // 0: sift.campaigns.v1.Campaign - (*CampaignReport)(nil), // 1: sift.campaigns.v1.CampaignReport - (*GetCampaignRequest)(nil), // 2: sift.campaigns.v1.GetCampaignRequest - (*GetCampaignResponse)(nil), // 3: sift.campaigns.v1.GetCampaignResponse - (*CreateCampaignRequest)(nil), // 4: sift.campaigns.v1.CreateCampaignRequest - (*CreateCampaignFrom)(nil), // 5: sift.campaigns.v1.CreateCampaignFrom - (*CreateCampaignResponse)(nil), // 6: sift.campaigns.v1.CreateCampaignResponse - (*ListCampaignsRequest)(nil), // 7: sift.campaigns.v1.ListCampaignsRequest - (*ListCampaignsResponse)(nil), // 8: sift.campaigns.v1.ListCampaignsResponse - (*UpdateCampaignRequest)(nil), // 9: sift.campaigns.v1.UpdateCampaignRequest - (*UpdateCampaignResponse)(nil), // 10: sift.campaigns.v1.UpdateCampaignResponse - (*ListCampaignAnnotationsRequest)(nil), // 11: sift.campaigns.v1.ListCampaignAnnotationsRequest - (*ListCampaignAnnotationsResponse)(nil), // 12: sift.campaigns.v1.ListCampaignAnnotationsResponse - (*timestamppb.Timestamp)(nil), // 13: google.protobuf.Timestamp - (*v1.TagRef)(nil), // 14: sift.tags.v1.TagRef - (*v11.MetadataValue)(nil), // 15: sift.metadata.v1.MetadataValue - (*v12.NamedResources)(nil), // 16: sift.common.type.v1.NamedResources - (*v12.ResourceIdentifiers)(nil), // 17: sift.common.type.v1.ResourceIdentifiers - (*v12.ResourceIdentifier)(nil), // 18: sift.common.type.v1.ResourceIdentifier - (*fieldmaskpb.FieldMask)(nil), // 19: google.protobuf.FieldMask - (*v13.Annotation)(nil), // 20: sift.annotations.v1.Annotation + (*Campaign)(nil), // 0: sift.campaigns.v1.Campaign + (*CampaignReport)(nil), // 1: sift.campaigns.v1.CampaignReport + (*GetCampaignRequest)(nil), // 2: sift.campaigns.v1.GetCampaignRequest + (*GetCampaignResponse)(nil), // 3: sift.campaigns.v1.GetCampaignResponse + (*CreateCampaignRequest)(nil), // 4: sift.campaigns.v1.CreateCampaignRequest + (*CreateCampaignFrom)(nil), // 5: sift.campaigns.v1.CreateCampaignFrom + (*CreateCampaignResponse)(nil), // 6: sift.campaigns.v1.CreateCampaignResponse + (*ListCampaignsRequest)(nil), // 7: sift.campaigns.v1.ListCampaignsRequest + (*ListCampaignsResponse)(nil), // 8: sift.campaigns.v1.ListCampaignsResponse + (*UpdateCampaignRequest)(nil), // 9: sift.campaigns.v1.UpdateCampaignRequest + (*UpdateCampaignResponse)(nil), // 10: sift.campaigns.v1.UpdateCampaignResponse + (*ListCampaignAnnotationsRequest)(nil), // 11: sift.campaigns.v1.ListCampaignAnnotationsRequest + (*ListCampaignAnnotationsResponse)(nil), // 12: sift.campaigns.v1.ListCampaignAnnotationsResponse + (*GetCampaignReportSummariesRequest)(nil), // 13: sift.campaigns.v1.GetCampaignReportSummariesRequest + (*CampaignReports)(nil), // 14: sift.campaigns.v1.CampaignReports + (*GetCampaignReportSummariesResponse)(nil), // 15: sift.campaigns.v1.GetCampaignReportSummariesResponse + nil, // 16: sift.campaigns.v1.GetCampaignReportSummariesResponse.SummariesByCampaignIdEntry + (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp + (*v1.TagRef)(nil), // 18: sift.tags.v1.TagRef + (*v11.MetadataValue)(nil), // 19: sift.metadata.v1.MetadataValue + (*v12.NamedResources)(nil), // 20: sift.common.type.v1.NamedResources + (*v12.ResourceIdentifiers)(nil), // 21: sift.common.type.v1.ResourceIdentifiers + (*v12.ResourceIdentifier)(nil), // 22: sift.common.type.v1.ResourceIdentifier + (*fieldmaskpb.FieldMask)(nil), // 23: google.protobuf.FieldMask + (*v13.Annotation)(nil), // 24: sift.annotations.v1.Annotation } var file_sift_campaigns_v1_campaigns_proto_depIdxs = []int32{ - 13, // 0: sift.campaigns.v1.Campaign.created_date:type_name -> google.protobuf.Timestamp - 13, // 1: sift.campaigns.v1.Campaign.modified_date:type_name -> google.protobuf.Timestamp - 13, // 2: sift.campaigns.v1.Campaign.archived_date:type_name -> google.protobuf.Timestamp - 14, // 3: sift.campaigns.v1.Campaign.tags:type_name -> sift.tags.v1.TagRef + 17, // 0: sift.campaigns.v1.Campaign.created_date:type_name -> google.protobuf.Timestamp + 17, // 1: sift.campaigns.v1.Campaign.modified_date:type_name -> google.protobuf.Timestamp + 17, // 2: sift.campaigns.v1.Campaign.archived_date:type_name -> google.protobuf.Timestamp + 18, // 3: sift.campaigns.v1.Campaign.tags:type_name -> sift.tags.v1.TagRef 1, // 4: sift.campaigns.v1.Campaign.reports:type_name -> sift.campaigns.v1.CampaignReport - 15, // 5: sift.campaigns.v1.Campaign.metadata:type_name -> sift.metadata.v1.MetadataValue + 19, // 5: sift.campaigns.v1.Campaign.metadata:type_name -> sift.metadata.v1.MetadataValue 0, // 6: sift.campaigns.v1.GetCampaignResponse.campaign:type_name -> sift.campaigns.v1.Campaign - 16, // 7: sift.campaigns.v1.CreateCampaignRequest.tags:type_name -> sift.common.type.v1.NamedResources + 20, // 7: sift.campaigns.v1.CreateCampaignRequest.tags:type_name -> sift.common.type.v1.NamedResources 5, // 8: sift.campaigns.v1.CreateCampaignRequest.create_from:type_name -> sift.campaigns.v1.CreateCampaignFrom - 15, // 9: sift.campaigns.v1.CreateCampaignRequest.metadata:type_name -> sift.metadata.v1.MetadataValue - 17, // 10: sift.campaigns.v1.CreateCampaignFrom.reports:type_name -> sift.common.type.v1.ResourceIdentifiers - 17, // 11: sift.campaigns.v1.CreateCampaignFrom.runs:type_name -> sift.common.type.v1.ResourceIdentifiers - 18, // 12: sift.campaigns.v1.CreateCampaignFrom.other_campaign:type_name -> sift.common.type.v1.ResourceIdentifier + 19, // 9: sift.campaigns.v1.CreateCampaignRequest.metadata:type_name -> sift.metadata.v1.MetadataValue + 21, // 10: sift.campaigns.v1.CreateCampaignFrom.reports:type_name -> sift.common.type.v1.ResourceIdentifiers + 21, // 11: sift.campaigns.v1.CreateCampaignFrom.runs:type_name -> sift.common.type.v1.ResourceIdentifiers + 22, // 12: sift.campaigns.v1.CreateCampaignFrom.other_campaign:type_name -> sift.common.type.v1.ResourceIdentifier 0, // 13: sift.campaigns.v1.CreateCampaignResponse.campaign:type_name -> sift.campaigns.v1.Campaign 0, // 14: sift.campaigns.v1.ListCampaignsResponse.campaigns:type_name -> sift.campaigns.v1.Campaign 0, // 15: sift.campaigns.v1.UpdateCampaignRequest.campaign:type_name -> sift.campaigns.v1.Campaign - 19, // 16: sift.campaigns.v1.UpdateCampaignRequest.update_mask:type_name -> google.protobuf.FieldMask + 23, // 16: sift.campaigns.v1.UpdateCampaignRequest.update_mask:type_name -> google.protobuf.FieldMask 0, // 17: sift.campaigns.v1.UpdateCampaignResponse.campaign:type_name -> sift.campaigns.v1.Campaign - 20, // 18: sift.campaigns.v1.ListCampaignAnnotationsResponse.annotations:type_name -> sift.annotations.v1.Annotation - 2, // 19: sift.campaigns.v1.CampaignService.GetCampaign:input_type -> sift.campaigns.v1.GetCampaignRequest - 4, // 20: sift.campaigns.v1.CampaignService.CreateCampaign:input_type -> sift.campaigns.v1.CreateCampaignRequest - 7, // 21: sift.campaigns.v1.CampaignService.ListCampaigns:input_type -> sift.campaigns.v1.ListCampaignsRequest - 9, // 22: sift.campaigns.v1.CampaignService.UpdateCampaign:input_type -> sift.campaigns.v1.UpdateCampaignRequest - 11, // 23: sift.campaigns.v1.CampaignService.ListCampaignAnnotations:input_type -> sift.campaigns.v1.ListCampaignAnnotationsRequest - 3, // 24: sift.campaigns.v1.CampaignService.GetCampaign:output_type -> sift.campaigns.v1.GetCampaignResponse - 6, // 25: sift.campaigns.v1.CampaignService.CreateCampaign:output_type -> sift.campaigns.v1.CreateCampaignResponse - 8, // 26: sift.campaigns.v1.CampaignService.ListCampaigns:output_type -> sift.campaigns.v1.ListCampaignsResponse - 10, // 27: sift.campaigns.v1.CampaignService.UpdateCampaign:output_type -> sift.campaigns.v1.UpdateCampaignResponse - 12, // 28: sift.campaigns.v1.CampaignService.ListCampaignAnnotations:output_type -> sift.campaigns.v1.ListCampaignAnnotationsResponse - 24, // [24:29] is the sub-list for method output_type - 19, // [19:24] is the sub-list for method input_type - 19, // [19:19] is the sub-list for extension type_name - 19, // [19:19] is the sub-list for extension extendee - 0, // [0:19] is the sub-list for field type_name + 24, // 18: sift.campaigns.v1.ListCampaignAnnotationsResponse.annotations:type_name -> sift.annotations.v1.Annotation + 1, // 19: sift.campaigns.v1.CampaignReports.reports:type_name -> sift.campaigns.v1.CampaignReport + 16, // 20: sift.campaigns.v1.GetCampaignReportSummariesResponse.summaries_by_campaign_id:type_name -> sift.campaigns.v1.GetCampaignReportSummariesResponse.SummariesByCampaignIdEntry + 14, // 21: sift.campaigns.v1.GetCampaignReportSummariesResponse.SummariesByCampaignIdEntry.value:type_name -> sift.campaigns.v1.CampaignReports + 2, // 22: sift.campaigns.v1.CampaignService.GetCampaign:input_type -> sift.campaigns.v1.GetCampaignRequest + 4, // 23: sift.campaigns.v1.CampaignService.CreateCampaign:input_type -> sift.campaigns.v1.CreateCampaignRequest + 7, // 24: sift.campaigns.v1.CampaignService.ListCampaigns:input_type -> sift.campaigns.v1.ListCampaignsRequest + 9, // 25: sift.campaigns.v1.CampaignService.UpdateCampaign:input_type -> sift.campaigns.v1.UpdateCampaignRequest + 11, // 26: sift.campaigns.v1.CampaignService.ListCampaignAnnotations:input_type -> sift.campaigns.v1.ListCampaignAnnotationsRequest + 13, // 27: sift.campaigns.v1.CampaignService.GetCampaignReportSummaries:input_type -> sift.campaigns.v1.GetCampaignReportSummariesRequest + 3, // 28: sift.campaigns.v1.CampaignService.GetCampaign:output_type -> sift.campaigns.v1.GetCampaignResponse + 6, // 29: sift.campaigns.v1.CampaignService.CreateCampaign:output_type -> sift.campaigns.v1.CreateCampaignResponse + 8, // 30: sift.campaigns.v1.CampaignService.ListCampaigns:output_type -> sift.campaigns.v1.ListCampaignsResponse + 10, // 31: sift.campaigns.v1.CampaignService.UpdateCampaign:output_type -> sift.campaigns.v1.UpdateCampaignResponse + 12, // 32: sift.campaigns.v1.CampaignService.ListCampaignAnnotations:output_type -> sift.campaigns.v1.ListCampaignAnnotationsResponse + 15, // 33: sift.campaigns.v1.CampaignService.GetCampaignReportSummaries:output_type -> sift.campaigns.v1.GetCampaignReportSummariesResponse + 28, // [28:34] is the sub-list for method output_type + 22, // [22:28] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name } func init() { file_sift_campaigns_v1_campaigns_proto_init() } @@ -1622,6 +1879,42 @@ func file_sift_campaigns_v1_campaigns_proto_init() { return nil } } + file_sift_campaigns_v1_campaigns_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCampaignReportSummariesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sift_campaigns_v1_campaigns_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CampaignReports); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sift_campaigns_v1_campaigns_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCampaignReportSummariesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_sift_campaigns_v1_campaigns_proto_msgTypes[0].OneofWrappers = []interface{}{} file_sift_campaigns_v1_campaigns_proto_msgTypes[4].OneofWrappers = []interface{}{} @@ -1636,7 +1929,7 @@ func file_sift_campaigns_v1_campaigns_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_sift_campaigns_v1_campaigns_proto_rawDesc, NumEnums: 0, - NumMessages: 13, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, diff --git a/go/gen/sift/campaigns/v1/campaigns.pb.gw.go b/go/gen/sift/campaigns/v1/campaigns.pb.gw.go index 767539231..25e2ae812 100644 --- a/go/gen/sift/campaigns/v1/campaigns.pb.gw.go +++ b/go/gen/sift/campaigns/v1/campaigns.pb.gw.go @@ -365,6 +365,40 @@ func local_request_CampaignService_ListCampaignAnnotations_0(ctx context.Context } +func request_CampaignService_GetCampaignReportSummaries_0(ctx context.Context, marshaler runtime.Marshaler, client CampaignServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetCampaignReportSummariesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetCampaignReportSummaries(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_CampaignService_GetCampaignReportSummaries_0(ctx context.Context, marshaler runtime.Marshaler, server CampaignServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetCampaignReportSummariesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetCampaignReportSummaries(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterCampaignServiceHandlerServer registers the http handlers for service CampaignService to "mux". // UnaryRPC :call CampaignServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -521,6 +555,31 @@ func RegisterCampaignServiceHandlerServer(ctx context.Context, mux *runtime.Serv }) + mux.Handle("POST", pattern_CampaignService_GetCampaignReportSummaries_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/sift.campaigns.v1.CampaignService/GetCampaignReportSummaries", runtime.WithHTTPPathPattern("/api/v1/campaigns:report-summaries")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_CampaignService_GetCampaignReportSummaries_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_CampaignService_GetCampaignReportSummaries_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -694,6 +753,28 @@ func RegisterCampaignServiceHandlerClient(ctx context.Context, mux *runtime.Serv }) + mux.Handle("POST", pattern_CampaignService_GetCampaignReportSummaries_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/sift.campaigns.v1.CampaignService/GetCampaignReportSummaries", runtime.WithHTTPPathPattern("/api/v1/campaigns:report-summaries")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_CampaignService_GetCampaignReportSummaries_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_CampaignService_GetCampaignReportSummaries_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -709,6 +790,8 @@ var ( pattern_CampaignService_UpdateCampaign_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "campaigns"}, "")) pattern_CampaignService_ListCampaignAnnotations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "v1", "campaigns", "campaign_id", "annotations"}, "")) + + pattern_CampaignService_GetCampaignReportSummaries_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "campaigns"}, "report-summaries")) ) var ( @@ -723,4 +806,6 @@ var ( forward_CampaignService_UpdateCampaign_0 = runtime.ForwardResponseMessage forward_CampaignService_ListCampaignAnnotations_0 = runtime.ForwardResponseMessage + + forward_CampaignService_GetCampaignReportSummaries_0 = runtime.ForwardResponseMessage ) diff --git a/go/gen/sift/campaigns/v1/campaigns_vtproto.pb.go b/go/gen/sift/campaigns/v1/campaigns_vtproto.pb.go index 94b391a3e..c425a508e 100644 --- a/go/gen/sift/campaigns/v1/campaigns_vtproto.pb.go +++ b/go/gen/sift/campaigns/v1/campaigns_vtproto.pb.go @@ -46,6 +46,7 @@ func (m *Campaign) CloneVT() *Campaign { r.ModifiedDate = (*timestamppb.Timestamp)((*timestamppb1.Timestamp)(m.ModifiedDate).CloneVT()) r.ArchivedDate = (*timestamppb.Timestamp)((*timestamppb1.Timestamp)(m.ArchivedDate).CloneVT()) r.IsArchived = m.IsArchived + r.ReportsIncludeSummaries = m.ReportsIncludeSummaries if rhs := m.ClientKey; rhs != nil { tmpVal := *rhs r.ClientKey = &tmpVal @@ -129,6 +130,7 @@ func (m *GetCampaignRequest) CloneVT() *GetCampaignRequest { r.CampaignId = m.CampaignId r.ClientKey = m.ClientKey r.OrganizationId = m.OrganizationId + r.SkipReportSummaries = m.SkipReportSummaries if len(m.unknownFields) > 0 { r.unknownFields = make([]byte, len(m.unknownFields)) copy(r.unknownFields, m.unknownFields) @@ -302,6 +304,7 @@ func (m *ListCampaignsRequest) CloneVT() *ListCampaignsRequest { r.OrganizationId = m.OrganizationId r.IncludeArchived = m.IncludeArchived r.OrderBy = m.OrderBy + r.SkipReportSummaries = m.SkipReportSummaries if len(m.unknownFields) > 0 { r.unknownFields = make([]byte, len(m.unknownFields)) copy(r.unknownFields, m.unknownFields) @@ -421,6 +424,74 @@ func (m *ListCampaignAnnotationsResponse) CloneMessageVT() proto.Message { return m.CloneVT() } +func (m *GetCampaignReportSummariesRequest) CloneVT() *GetCampaignReportSummariesRequest { + if m == nil { + return (*GetCampaignReportSummariesRequest)(nil) + } + r := new(GetCampaignReportSummariesRequest) + r.OrganizationId = m.OrganizationId + if rhs := m.CampaignIds; rhs != nil { + tmpContainer := make([]string, len(rhs)) + copy(tmpContainer, rhs) + r.CampaignIds = tmpContainer + } + if len(m.unknownFields) > 0 { + r.unknownFields = make([]byte, len(m.unknownFields)) + copy(r.unknownFields, m.unknownFields) + } + return r +} + +func (m *GetCampaignReportSummariesRequest) CloneMessageVT() proto.Message { + return m.CloneVT() +} + +func (m *CampaignReports) CloneVT() *CampaignReports { + if m == nil { + return (*CampaignReports)(nil) + } + r := new(CampaignReports) + if rhs := m.Reports; rhs != nil { + tmpContainer := make([]*CampaignReport, len(rhs)) + for k, v := range rhs { + tmpContainer[k] = v.CloneVT() + } + r.Reports = tmpContainer + } + if len(m.unknownFields) > 0 { + r.unknownFields = make([]byte, len(m.unknownFields)) + copy(r.unknownFields, m.unknownFields) + } + return r +} + +func (m *CampaignReports) CloneMessageVT() proto.Message { + return m.CloneVT() +} + +func (m *GetCampaignReportSummariesResponse) CloneVT() *GetCampaignReportSummariesResponse { + if m == nil { + return (*GetCampaignReportSummariesResponse)(nil) + } + r := new(GetCampaignReportSummariesResponse) + if rhs := m.SummariesByCampaignId; rhs != nil { + tmpContainer := make(map[string]*CampaignReports, len(rhs)) + for k, v := range rhs { + tmpContainer[k] = v.CloneVT() + } + r.SummariesByCampaignId = tmpContainer + } + if len(m.unknownFields) > 0 { + r.unknownFields = make([]byte, len(m.unknownFields)) + copy(r.unknownFields, m.unknownFields) + } + return r +} + +func (m *GetCampaignReportSummariesResponse) CloneMessageVT() proto.Message { + return m.CloneVT() +} + func (this *Campaign) EqualVT(that *Campaign) bool { if this == that { return true @@ -522,6 +593,9 @@ func (this *Campaign) EqualVT(that *Campaign) bool { if this.IsArchived != that.IsArchived { return false } + if this.ReportsIncludeSummaries != that.ReportsIncludeSummaries { + return false + } return string(this.unknownFields) == string(that.unknownFields) } @@ -584,6 +658,9 @@ func (this *GetCampaignRequest) EqualVT(that *GetCampaignRequest) bool { if this.OrganizationId != that.OrganizationId { return false } + if this.SkipReportSummaries != that.SkipReportSummaries { + return false + } return string(this.unknownFields) == string(that.unknownFields) } @@ -838,6 +915,9 @@ func (this *ListCampaignsRequest) EqualVT(that *ListCampaignsRequest) bool { if this.OrderBy != that.OrderBy { return false } + if this.SkipReportSummaries != that.SkipReportSummaries { + return false + } return string(this.unknownFields) == string(that.unknownFields) } @@ -996,6 +1076,103 @@ func (this *ListCampaignAnnotationsResponse) EqualMessageVT(thatMsg proto.Messag } return this.EqualVT(that) } +func (this *GetCampaignReportSummariesRequest) EqualVT(that *GetCampaignReportSummariesRequest) bool { + if this == that { + return true + } else if this == nil || that == nil { + return false + } + if len(this.CampaignIds) != len(that.CampaignIds) { + return false + } + for i, vx := range this.CampaignIds { + vy := that.CampaignIds[i] + if vx != vy { + return false + } + } + if this.OrganizationId != that.OrganizationId { + return false + } + return string(this.unknownFields) == string(that.unknownFields) +} + +func (this *GetCampaignReportSummariesRequest) EqualMessageVT(thatMsg proto.Message) bool { + that, ok := thatMsg.(*GetCampaignReportSummariesRequest) + if !ok { + return false + } + return this.EqualVT(that) +} +func (this *CampaignReports) EqualVT(that *CampaignReports) bool { + if this == that { + return true + } else if this == nil || that == nil { + return false + } + if len(this.Reports) != len(that.Reports) { + return false + } + for i, vx := range this.Reports { + vy := that.Reports[i] + if p, q := vx, vy; p != q { + if p == nil { + p = &CampaignReport{} + } + if q == nil { + q = &CampaignReport{} + } + if !p.EqualVT(q) { + return false + } + } + } + return string(this.unknownFields) == string(that.unknownFields) +} + +func (this *CampaignReports) EqualMessageVT(thatMsg proto.Message) bool { + that, ok := thatMsg.(*CampaignReports) + if !ok { + return false + } + return this.EqualVT(that) +} +func (this *GetCampaignReportSummariesResponse) EqualVT(that *GetCampaignReportSummariesResponse) bool { + if this == that { + return true + } else if this == nil || that == nil { + return false + } + if len(this.SummariesByCampaignId) != len(that.SummariesByCampaignId) { + return false + } + for i, vx := range this.SummariesByCampaignId { + vy, ok := that.SummariesByCampaignId[i] + if !ok { + return false + } + if p, q := vx, vy; p != q { + if p == nil { + p = &CampaignReports{} + } + if q == nil { + q = &CampaignReports{} + } + if !p.EqualVT(q) { + return false + } + } + } + return string(this.unknownFields) == string(that.unknownFields) +} + +func (this *GetCampaignReportSummariesResponse) EqualMessageVT(thatMsg proto.Message) bool { + that, ok := thatMsg.(*GetCampaignReportSummariesResponse) + if !ok { + return false + } + return this.EqualVT(that) +} // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. @@ -1016,6 +1193,10 @@ type CampaignServiceClient interface { UpdateCampaign(ctx context.Context, in *UpdateCampaignRequest, opts ...grpc.CallOption) (*UpdateCampaignResponse, error) // List campaigns. ListCampaignAnnotations(ctx context.Context, in *ListCampaignAnnotationsRequest, opts ...grpc.CallOption) (*ListCampaignAnnotationsResponse, error) + // Returns per-campaign report summaries (annotation totals + rule classifications) in bulk. + // Each campaign maps to its list of CampaignReport entries with summary fields populated. + // Intended for use alongside ListCampaigns with skip_report_summaries=true. + GetCampaignReportSummaries(ctx context.Context, in *GetCampaignReportSummariesRequest, opts ...grpc.CallOption) (*GetCampaignReportSummariesResponse, error) } type campaignServiceClient struct { @@ -1071,6 +1252,15 @@ func (c *campaignServiceClient) ListCampaignAnnotations(ctx context.Context, in return out, nil } +func (c *campaignServiceClient) GetCampaignReportSummaries(ctx context.Context, in *GetCampaignReportSummariesRequest, opts ...grpc.CallOption) (*GetCampaignReportSummariesResponse, error) { + out := new(GetCampaignReportSummariesResponse) + err := c.cc.Invoke(ctx, "/sift.campaigns.v1.CampaignService/GetCampaignReportSummaries", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // CampaignServiceServer is the server API for CampaignService service. // All implementations must embed UnimplementedCampaignServiceServer // for forward compatibility @@ -1085,6 +1275,10 @@ type CampaignServiceServer interface { UpdateCampaign(context.Context, *UpdateCampaignRequest) (*UpdateCampaignResponse, error) // List campaigns. ListCampaignAnnotations(context.Context, *ListCampaignAnnotationsRequest) (*ListCampaignAnnotationsResponse, error) + // Returns per-campaign report summaries (annotation totals + rule classifications) in bulk. + // Each campaign maps to its list of CampaignReport entries with summary fields populated. + // Intended for use alongside ListCampaigns with skip_report_summaries=true. + GetCampaignReportSummaries(context.Context, *GetCampaignReportSummariesRequest) (*GetCampaignReportSummariesResponse, error) mustEmbedUnimplementedCampaignServiceServer() } @@ -1107,6 +1301,9 @@ func (UnimplementedCampaignServiceServer) UpdateCampaign(context.Context, *Updat func (UnimplementedCampaignServiceServer) ListCampaignAnnotations(context.Context, *ListCampaignAnnotationsRequest) (*ListCampaignAnnotationsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListCampaignAnnotations not implemented") } +func (UnimplementedCampaignServiceServer) GetCampaignReportSummaries(context.Context, *GetCampaignReportSummariesRequest) (*GetCampaignReportSummariesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCampaignReportSummaries not implemented") +} func (UnimplementedCampaignServiceServer) mustEmbedUnimplementedCampaignServiceServer() {} // UnsafeCampaignServiceServer may be embedded to opt out of forward compatibility for this service. @@ -1210,6 +1407,24 @@ func _CampaignService_ListCampaignAnnotations_Handler(srv interface{}, ctx conte return interceptor(ctx, in, info, handler) } +func _CampaignService_GetCampaignReportSummaries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCampaignReportSummariesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CampaignServiceServer).GetCampaignReportSummaries(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sift.campaigns.v1.CampaignService/GetCampaignReportSummaries", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CampaignServiceServer).GetCampaignReportSummaries(ctx, req.(*GetCampaignReportSummariesRequest)) + } + return interceptor(ctx, in, info, handler) +} + // CampaignService_ServiceDesc is the grpc.ServiceDesc for CampaignService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1237,6 +1452,10 @@ var CampaignService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListCampaignAnnotations", Handler: _CampaignService_ListCampaignAnnotations_Handler, }, + { + MethodName: "GetCampaignReportSummaries", + Handler: _CampaignService_GetCampaignReportSummaries_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "sift/campaigns/v1/campaigns.proto", @@ -1272,6 +1491,18 @@ func (m *Campaign) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.ReportsIncludeSummaries { + i-- + if m.ReportsIncludeSummaries { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x80 + } if m.IsArchived { i-- if m.IsArchived { @@ -1533,6 +1764,16 @@ func (m *GetCampaignRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.SkipReportSummaries { + i-- + if m.SkipReportSummaries { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } if len(m.OrganizationId) > 0 { i -= len(m.OrganizationId) copy(dAtA[i:], m.OrganizationId) @@ -1925,6 +2166,16 @@ func (m *ListCampaignsRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.SkipReportSummaries { + i-- + if m.SkipReportSummaries { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } if len(m.OrderBy) > 0 { i -= len(m.OrderBy) copy(dAtA[i:], m.OrderBy) @@ -2249,25 +2500,25 @@ func (m *ListCampaignAnnotationsResponse) MarshalToSizedBufferVT(dAtA []byte) (i return len(dAtA) - i, nil } -func (m *Campaign) MarshalVTStrict() (dAtA []byte, err error) { +func (m *GetCampaignReportSummariesRequest) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil } size := m.SizeVT() dAtA = make([]byte, size) - n, err := m.MarshalToSizedBufferVTStrict(dAtA[:size]) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) if err != nil { return nil, err } return dAtA[:n], nil } -func (m *Campaign) MarshalToVTStrict(dAtA []byte) (int, error) { +func (m *GetCampaignReportSummariesRequest) MarshalToVT(dAtA []byte) (int, error) { size := m.SizeVT() - return m.MarshalToSizedBufferVTStrict(dAtA[:size]) + return m.MarshalToSizedBufferVT(dAtA[:size]) } -func (m *Campaign) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) { +func (m *GetCampaignReportSummariesRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { if m == nil { return 0, nil } @@ -2279,46 +2530,207 @@ func (m *Campaign) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } - if m.IsArchived { - i-- - if m.IsArchived { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } + if len(m.OrganizationId) > 0 { + i -= len(m.OrganizationId) + copy(dAtA[i:], m.OrganizationId) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.OrganizationId))) i-- - dAtA[i] = 0x78 + dAtA[i] = 0x12 } - if len(m.Metadata) > 0 { - for iNdEx := len(m.Metadata) - 1; iNdEx >= 0; iNdEx-- { - if vtmsg, ok := interface{}(m.Metadata[iNdEx]).(interface { - MarshalToSizedBufferVTStrict([]byte) (int, error) - }); ok { - size, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) - } else { - encoded, err := proto.Marshal(m.Metadata[iNdEx]) - if err != nil { - return 0, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded))) - } + if len(m.CampaignIds) > 0 { + for iNdEx := len(m.CampaignIds) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.CampaignIds[iNdEx]) + copy(dAtA[i:], m.CampaignIds[iNdEx]) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.CampaignIds[iNdEx]))) i-- - dAtA[i] = 0x72 + dAtA[i] = 0xa } } - if m.CreatedFromCampaignId != nil { - i -= len(*m.CreatedFromCampaignId) - copy(dAtA[i:], *m.CreatedFromCampaignId) - i = protohelpers.EncodeVarint(dAtA, i, uint64(len(*m.CreatedFromCampaignId))) - i-- - dAtA[i] = 0x6a + return len(dAtA) - i, nil +} + +func (m *CampaignReports) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CampaignReports) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CampaignReports) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Reports) > 0 { + for iNdEx := len(m.Reports) - 1; iNdEx >= 0; iNdEx-- { + size, err := m.Reports[iNdEx].MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *GetCampaignReportSummariesResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetCampaignReportSummariesResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *GetCampaignReportSummariesResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.SummariesByCampaignId) > 0 { + for k := range m.SummariesByCampaignId { + v := m.SummariesByCampaignId[k] + baseI := i + size, err := v.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *Campaign) MarshalVTStrict() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVTStrict(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Campaign) MarshalToVTStrict(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVTStrict(dAtA[:size]) +} + +func (m *Campaign) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.ReportsIncludeSummaries { + i-- + if m.ReportsIncludeSummaries { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x80 + } + if m.IsArchived { + i-- + if m.IsArchived { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x78 + } + if len(m.Metadata) > 0 { + for iNdEx := len(m.Metadata) - 1; iNdEx >= 0; iNdEx-- { + if vtmsg, ok := interface{}(m.Metadata[iNdEx]).(interface { + MarshalToSizedBufferVTStrict([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.Metadata[iNdEx]) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x72 + } + } + if m.CreatedFromCampaignId != nil { + i -= len(*m.CreatedFromCampaignId) + copy(dAtA[i:], *m.CreatedFromCampaignId) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(*m.CreatedFromCampaignId))) + i-- + dAtA[i] = 0x6a } if len(m.Reports) > 0 { for iNdEx := len(m.Reports) - 1; iNdEx >= 0; iNdEx-- { @@ -2540,6 +2952,16 @@ func (m *GetCampaignRequest) MarshalToSizedBufferVTStrict(dAtA []byte) (int, err i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.SkipReportSummaries { + i-- + if m.SkipReportSummaries { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } if len(m.OrganizationId) > 0 { i -= len(m.OrganizationId) copy(dAtA[i:], m.OrganizationId) @@ -2944,6 +3366,16 @@ func (m *ListCampaignsRequest) MarshalToSizedBufferVTStrict(dAtA []byte) (int, e i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.SkipReportSummaries { + i-- + if m.SkipReportSummaries { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } if len(m.OrderBy) > 0 { i -= len(m.OrderBy) copy(dAtA[i:], m.OrderBy) @@ -3268,50 +3700,199 @@ func (m *ListCampaignAnnotationsResponse) MarshalToSizedBufferVTStrict(dAtA []by return len(dAtA) - i, nil } -func (m *Campaign) SizeVT() (n int) { +func (m *GetCampaignReportSummariesRequest) MarshalVTStrict() (dAtA []byte, err error) { if m == nil { - return 0 + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVTStrict(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetCampaignReportSummariesRequest) MarshalToVTStrict(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVTStrict(dAtA[:size]) +} + +func (m *GetCampaignReportSummariesRequest) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) { + if m == nil { + return 0, nil } + i := len(dAtA) + _ = i var l int _ = l - l = len(m.CampaignId) - if l > 0 { - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) } - l = len(m.OrganizationId) - if l > 0 { - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + if len(m.OrganizationId) > 0 { + i -= len(m.OrganizationId) + copy(dAtA[i:], m.OrganizationId) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.OrganizationId))) + i-- + dAtA[i] = 0x12 } - if m.ClientKey != nil { - l = len(*m.ClientKey) - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + if len(m.CampaignIds) > 0 { + for iNdEx := len(m.CampaignIds) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.CampaignIds[iNdEx]) + copy(dAtA[i:], m.CampaignIds[iNdEx]) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.CampaignIds[iNdEx]))) + i-- + dAtA[i] = 0xa + } } - l = len(m.Name) - if l > 0 { - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + return len(dAtA) - i, nil +} + +func (m *CampaignReports) MarshalVTStrict() (dAtA []byte, err error) { + if m == nil { + return nil, nil } - if m.Description != nil { - l = len(*m.Description) - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVTStrict(dAtA[:size]) + if err != nil { + return nil, err } - l = len(m.CreatedByUserId) - if l > 0 { - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + return dAtA[:n], nil +} + +func (m *CampaignReports) MarshalToVTStrict(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVTStrict(dAtA[:size]) +} + +func (m *CampaignReports) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) { + if m == nil { + return 0, nil } - l = len(m.ModifiedByUserId) - if l > 0 { - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) } - if m.CreatedDate != nil { - l = (*timestamppb1.Timestamp)(m.CreatedDate).SizeVT() - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + if len(m.Reports) > 0 { + for iNdEx := len(m.Reports) - 1; iNdEx >= 0; iNdEx-- { + size, err := m.Reports[iNdEx].MarshalToSizedBufferVTStrict(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0xa + } } - if m.ModifiedDate != nil { - l = (*timestamppb1.Timestamp)(m.ModifiedDate).SizeVT() - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + return len(dAtA) - i, nil +} + +func (m *GetCampaignReportSummariesResponse) MarshalVTStrict() (dAtA []byte, err error) { + if m == nil { + return nil, nil } - if m.ArchivedDate != nil { - l = (*timestamppb1.Timestamp)(m.ArchivedDate).SizeVT() + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVTStrict(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetCampaignReportSummariesResponse) MarshalToVTStrict(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVTStrict(dAtA[:size]) +} + +func (m *GetCampaignReportSummariesResponse) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.SummariesByCampaignId) > 0 { + for k := range m.SummariesByCampaignId { + v := m.SummariesByCampaignId[k] + baseI := i + size, err := v.MarshalToSizedBufferVTStrict(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = protohelpers.EncodeVarint(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *Campaign) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.CampaignId) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + l = len(m.OrganizationId) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + if m.ClientKey != nil { + l = len(*m.ClientKey) + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + l = len(m.Name) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + if m.Description != nil { + l = len(*m.Description) + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + l = len(m.CreatedByUserId) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + l = len(m.ModifiedByUserId) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + if m.CreatedDate != nil { + l = (*timestamppb1.Timestamp)(m.CreatedDate).SizeVT() + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + if m.ModifiedDate != nil { + l = (*timestamppb1.Timestamp)(m.ModifiedDate).SizeVT() + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + if m.ArchivedDate != nil { + l = (*timestamppb1.Timestamp)(m.ArchivedDate).SizeVT() n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } if len(m.Tags) > 0 { @@ -3351,6 +3932,9 @@ func (m *Campaign) SizeVT() (n int) { if m.IsArchived { n += 2 } + if m.ReportsIncludeSummaries { + n += 3 + } n += len(m.unknownFields) return n } @@ -3406,6 +3990,9 @@ func (m *GetCampaignRequest) SizeVT() (n int) { if l > 0 { n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } + if m.SkipReportSummaries { + n += 2 + } n += len(m.unknownFields) return n } @@ -3585,6 +4172,9 @@ func (m *ListCampaignsRequest) SizeVT() (n int) { if l > 0 { n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } + if m.SkipReportSummaries { + n += 2 + } n += len(m.unknownFields) return n } @@ -3696,6 +4286,65 @@ func (m *ListCampaignAnnotationsResponse) SizeVT() (n int) { return n } +func (m *GetCampaignReportSummariesRequest) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.CampaignIds) > 0 { + for _, s := range m.CampaignIds { + l = len(s) + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + } + l = len(m.OrganizationId) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CampaignReports) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Reports) > 0 { + for _, e := range m.Reports { + l = e.SizeVT() + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + } + n += len(m.unknownFields) + return n +} + +func (m *GetCampaignReportSummariesResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.SummariesByCampaignId) > 0 { + for k, v := range m.SummariesByCampaignId { + _ = k + _ = v + l = 0 + if v != nil { + l = v.SizeVT() + } + l += 1 + protohelpers.SizeOfVarint(uint64(l)) + mapEntrySize := 1 + len(k) + protohelpers.SizeOfVarint(uint64(len(k))) + l + n += mapEntrySize + 1 + protohelpers.SizeOfVarint(uint64(mapEntrySize)) + } + } + n += len(m.unknownFields) + return n +} + func (m *Campaign) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -4230,6 +4879,26 @@ func (m *Campaign) UnmarshalVT(dAtA []byte) error { } } m.IsArchived = bool(v != 0) + case 16: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReportsIncludeSummaries", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ReportsIncludeSummaries = bool(v != 0) default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) @@ -4587,6 +5256,26 @@ func (m *GetCampaignRequest) UnmarshalVT(dAtA []byte) error { } m.OrganizationId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SkipReportSummaries", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.SkipReportSummaries = bool(v != 0) default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) @@ -5504,6 +6193,26 @@ func (m *ListCampaignsRequest) UnmarshalVT(dAtA []byte) error { } m.OrderBy = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SkipReportSummaries", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.SkipReportSummaries = bool(v != 0) default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) @@ -6176,7 +6885,7 @@ func (m *ListCampaignAnnotationsResponse) UnmarshalVT(dAtA []byte) error { } return nil } -func (m *Campaign) UnmarshalVTUnsafe(dAtA []byte) error { +func (m *GetCampaignReportSummariesRequest) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6199,15 +6908,15 @@ func (m *Campaign) UnmarshalVTUnsafe(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Campaign: wiretype end group for non-group") + return fmt.Errorf("proto: GetCampaignReportSummariesRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Campaign: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetCampaignReportSummariesRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CampaignId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CampaignIds", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6235,11 +6944,7 @@ func (m *Campaign) UnmarshalVTUnsafe(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - var stringValue string - if intStringLen > 0 { - stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) - } - m.CampaignId = stringValue + m.CampaignIds = append(m.CampaignIds, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 2: if wireType != 2 { @@ -6271,17 +6976,64 @@ func (m *Campaign) UnmarshalVTUnsafe(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - var stringValue string - if intStringLen > 0 { - stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) - } - m.OrganizationId = stringValue + m.OrganizationId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + default: + iNdEx = preIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CampaignReports) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CampaignReports: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CampaignReports: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClientKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Reports", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protohelpers.ErrIntOverflow @@ -6291,12 +7043,349 @@ func (m *Campaign) UnmarshalVTUnsafe(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) + if msglen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reports = append(m.Reports, &CampaignReport{}) + if err := m.Reports[len(m.Reports)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetCampaignReportSummariesResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetCampaignReportSummariesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetCampaignReportSummariesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SummariesByCampaignId", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SummariesByCampaignId == nil { + m.SummariesByCampaignId = make(map[string]*CampaignReports) + } + var mapkey string + var mapvalue *CampaignReports + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return protohelpers.ErrInvalidLength + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return protohelpers.ErrInvalidLength + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return protohelpers.ErrInvalidLength + } + postmsgIndex := iNdEx + mapmsglen + if postmsgIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue = &CampaignReports{} + if err := mapvalue.UnmarshalVT(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + } else { + iNdEx = entryPreIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.SummariesByCampaignId[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Campaign) UnmarshalVTUnsafe(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Campaign: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Campaign: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CampaignId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var stringValue string + if intStringLen > 0 { + stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) + } + m.CampaignId = stringValue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OrganizationId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var stringValue string + if intStringLen > 0 { + stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) + } + m.OrganizationId = stringValue + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientKey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) if intStringLen < 0 { return protohelpers.ErrInvalidLength } @@ -6742,6 +7831,26 @@ func (m *Campaign) UnmarshalVTUnsafe(dAtA []byte) error { } } m.IsArchived = bool(v != 0) + case 16: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReportsIncludeSummaries", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ReportsIncludeSummaries = bool(v != 0) default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) @@ -7119,6 +8228,26 @@ func (m *GetCampaignRequest) UnmarshalVTUnsafe(dAtA []byte) error { } m.OrganizationId = stringValue iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SkipReportSummaries", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.SkipReportSummaries = bool(v != 0) default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) @@ -8016,7 +9145,134 @@ func (m *ListCampaignsRequest) UnmarshalVTUnsafe(dAtA []byte) error { if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field IncludeArchived", wireType) } - var v int + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IncludeArchived = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OrderBy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var stringValue string + if intStringLen > 0 { + stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) + } + m.OrderBy = stringValue + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SkipReportSummaries", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.SkipReportSummaries = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListCampaignsResponse) UnmarshalVTUnsafe(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListCampaignsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListCampaignsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Campaigns", wireType) + } + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protohelpers.ErrIntOverflow @@ -8026,15 +9282,29 @@ func (m *ListCampaignsRequest) UnmarshalVTUnsafe(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - m.IncludeArchived = bool(v != 0) - case 6: + if msglen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Campaigns = append(m.Campaigns, &Campaign{}) + if err := m.Campaigns[len(m.Campaigns)-1].UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OrderBy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NextPageToken", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8066,7 +9336,7 @@ func (m *ListCampaignsRequest) UnmarshalVTUnsafe(dAtA []byte) error { if intStringLen > 0 { stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) } - m.OrderBy = stringValue + m.NextPageToken = stringValue iNdEx = postIndex default: iNdEx = preIndex @@ -8090,7 +9360,7 @@ func (m *ListCampaignsRequest) UnmarshalVTUnsafe(dAtA []byte) error { } return nil } -func (m *ListCampaignsResponse) UnmarshalVTUnsafe(dAtA []byte) error { +func (m *UpdateCampaignRequest) UnmarshalVTUnsafe(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8113,15 +9383,15 @@ func (m *ListCampaignsResponse) UnmarshalVTUnsafe(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListCampaignsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: UpdateCampaignRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListCampaignsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UpdateCampaignRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Campaigns", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Campaign", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8148,16 +9418,18 @@ func (m *ListCampaignsResponse) UnmarshalVTUnsafe(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Campaigns = append(m.Campaigns, &Campaign{}) - if err := m.Campaigns[len(m.Campaigns)-1].UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil { + if m.Campaign == nil { + m.Campaign = &Campaign{} + } + if err := m.Campaign.UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NextPageToken", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UpdateMask", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protohelpers.ErrIntOverflow @@ -8167,27 +9439,27 @@ func (m *ListCampaignsResponse) UnmarshalVTUnsafe(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return protohelpers.ErrInvalidLength } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return protohelpers.ErrInvalidLength } if postIndex > l { return io.ErrUnexpectedEOF } - var stringValue string - if intStringLen > 0 { - stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) + if m.UpdateMask == nil { + m.UpdateMask = &fieldmaskpb.FieldMask{} + } + if err := (*fieldmaskpb1.FieldMask)(m.UpdateMask).UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.NextPageToken = stringValue iNdEx = postIndex default: iNdEx = preIndex @@ -8211,7 +9483,7 @@ func (m *ListCampaignsResponse) UnmarshalVTUnsafe(dAtA []byte) error { } return nil } -func (m *UpdateCampaignRequest) UnmarshalVTUnsafe(dAtA []byte) error { +func (m *UpdateCampaignResponse) UnmarshalVTUnsafe(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8234,10 +9506,10 @@ func (m *UpdateCampaignRequest) UnmarshalVTUnsafe(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdateCampaignRequest: wiretype end group for non-group") + return fmt.Errorf("proto: UpdateCampaignResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateCampaignRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: UpdateCampaignResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -8276,11 +9548,117 @@ func (m *UpdateCampaignRequest) UnmarshalVTUnsafe(dAtA []byte) error { return err } iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListCampaignAnnotationsRequest) UnmarshalVTUnsafe(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListCampaignAnnotationsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListCampaignAnnotationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CampaignId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var stringValue string + if intStringLen > 0 { + stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) + } + m.CampaignId = stringValue + iNdEx = postIndex case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PageSize", wireType) + } + m.PageSize = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PageSize |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpdateMask", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PageToken", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protohelpers.ErrIntOverflow @@ -8290,27 +9668,99 @@ func (m *UpdateCampaignRequest) UnmarshalVTUnsafe(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var stringValue string + if intStringLen > 0 { + stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) + } + m.PageToken = stringValue + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var stringValue string + if intStringLen > 0 { + stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) + } + m.Filter = stringValue + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OrderBy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { return protohelpers.ErrInvalidLength } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return protohelpers.ErrInvalidLength } if postIndex > l { return io.ErrUnexpectedEOF } - if m.UpdateMask == nil { - m.UpdateMask = &fieldmaskpb.FieldMask{} - } - if err := (*fieldmaskpb1.FieldMask)(m.UpdateMask).UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil { - return err + var stringValue string + if intStringLen > 0 { + stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) } + m.OrderBy = stringValue iNdEx = postIndex default: iNdEx = preIndex @@ -8334,7 +9784,7 @@ func (m *UpdateCampaignRequest) UnmarshalVTUnsafe(dAtA []byte) error { } return nil } -func (m *UpdateCampaignResponse) UnmarshalVTUnsafe(dAtA []byte) error { +func (m *ListCampaignAnnotationsResponse) UnmarshalVTUnsafe(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8357,15 +9807,15 @@ func (m *UpdateCampaignResponse) UnmarshalVTUnsafe(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdateCampaignResponse: wiretype end group for non-group") + return fmt.Errorf("proto: ListCampaignAnnotationsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateCampaignResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ListCampaignAnnotationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Campaign", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8392,12 +9842,54 @@ func (m *UpdateCampaignResponse) UnmarshalVTUnsafe(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Campaign == nil { - m.Campaign = &Campaign{} + m.Annotations = append(m.Annotations, &v13.Annotation{}) + if unmarshal, ok := interface{}(m.Annotations[len(m.Annotations)-1]).(interface { + UnmarshalVTUnsafe([]byte) error + }); ok { + if err := unmarshal.UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.Annotations[len(m.Annotations)-1]); err != nil { + return err + } } - if err := m.Campaign.UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil { - return err + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NextPageToken", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var stringValue string + if intStringLen > 0 { + stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) } + m.NextPageToken = stringValue iNdEx = postIndex default: iNdEx = preIndex @@ -8421,7 +9913,7 @@ func (m *UpdateCampaignResponse) UnmarshalVTUnsafe(dAtA []byte) error { } return nil } -func (m *ListCampaignAnnotationsRequest) UnmarshalVTUnsafe(dAtA []byte) error { +func (m *GetCampaignReportSummariesRequest) UnmarshalVTUnsafe(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8444,15 +9936,15 @@ func (m *ListCampaignAnnotationsRequest) UnmarshalVTUnsafe(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListCampaignAnnotationsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetCampaignReportSummariesRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListCampaignAnnotationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetCampaignReportSummariesRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CampaignId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CampaignIds", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8484,30 +9976,11 @@ func (m *ListCampaignAnnotationsRequest) UnmarshalVTUnsafe(dAtA []byte) error { if intStringLen > 0 { stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) } - m.CampaignId = stringValue + m.CampaignIds = append(m.CampaignIds, stringValue) iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PageSize", wireType) - } - m.PageSize = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protohelpers.ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.PageSize |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PageToken", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OrganizationId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8539,49 +10012,64 @@ func (m *ListCampaignAnnotationsRequest) UnmarshalVTUnsafe(dAtA []byte) error { if intStringLen > 0 { stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) } - m.PageToken = stringValue + m.OrganizationId = stringValue iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protohelpers.ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return protohelpers.ErrInvalidLength } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protohelpers.ErrInvalidLength + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF } - if postIndex > l { + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CampaignReports) UnmarshalVTUnsafe(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - var stringValue string - if intStringLen > 0 { - stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - m.Filter = stringValue - iNdEx = postIndex - case 5: + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CampaignReports: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CampaignReports: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OrderBy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Reports", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protohelpers.ErrIntOverflow @@ -8591,27 +10079,25 @@ func (m *ListCampaignAnnotationsRequest) UnmarshalVTUnsafe(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return protohelpers.ErrInvalidLength } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return protohelpers.ErrInvalidLength } if postIndex > l { return io.ErrUnexpectedEOF } - var stringValue string - if intStringLen > 0 { - stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) + m.Reports = append(m.Reports, &CampaignReport{}) + if err := m.Reports[len(m.Reports)-1].UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.OrderBy = stringValue iNdEx = postIndex default: iNdEx = preIndex @@ -8635,7 +10121,7 @@ func (m *ListCampaignAnnotationsRequest) UnmarshalVTUnsafe(dAtA []byte) error { } return nil } -func (m *ListCampaignAnnotationsResponse) UnmarshalVTUnsafe(dAtA []byte) error { +func (m *GetCampaignReportSummariesResponse) UnmarshalVTUnsafe(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8658,15 +10144,15 @@ func (m *ListCampaignAnnotationsResponse) UnmarshalVTUnsafe(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ListCampaignAnnotationsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: GetCampaignReportSummariesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ListCampaignAnnotationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetCampaignReportSummariesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SummariesByCampaignId", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8693,54 +10179,109 @@ func (m *ListCampaignAnnotationsResponse) UnmarshalVTUnsafe(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Annotations = append(m.Annotations, &v13.Annotation{}) - if unmarshal, ok := interface{}(m.Annotations[len(m.Annotations)-1]).(interface { - UnmarshalVTUnsafe([]byte) error - }); ok { - if err := unmarshal.UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil { - return err - } - } else { - if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.Annotations[len(m.Annotations)-1]); err != nil { - return err - } - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NextPageToken", wireType) + if m.SummariesByCampaignId == nil { + m.SummariesByCampaignId = make(map[string]*CampaignReports) } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protohelpers.ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF + var mapkey string + var mapvalue *CampaignReports + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return protohelpers.ErrInvalidLength + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return protohelpers.ErrInvalidLength + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + if intStringLenmapkey == 0 { + mapkey = "" + } else { + mapkey = unsafe.String(&dAtA[iNdEx], intStringLenmapkey) + } + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return protohelpers.ErrInvalidLength + } + postmsgIndex := iNdEx + mapmsglen + if postmsgIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue = &CampaignReports{} + if err := mapvalue.UnmarshalVTUnsafe(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + } else { + iNdEx = entryPreIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protohelpers.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protohelpers.ErrInvalidLength - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - var stringValue string - if intStringLen > 0 { - stringValue = unsafe.String(&dAtA[iNdEx], intStringLen) - } - m.NextPageToken = stringValue + m.SummariesByCampaignId[mapkey] = mapvalue iNdEx = postIndex default: iNdEx = preIndex diff --git a/protos/sift/campaigns/v1/campaigns.proto b/protos/sift/campaigns/v1/campaigns.proto index 6c9517c1c..b146a8507 100644 --- a/protos/sift/campaigns/v1/campaigns.proto +++ b/protos/sift/campaigns/v1/campaigns.proto @@ -70,6 +70,20 @@ service CampaignService { description: "List annotations for a campaign." }; } + + // Returns per-campaign report summaries (annotation totals + rule classifications) in bulk. + // Each campaign maps to its list of CampaignReport entries with summary fields populated. + // Intended for use alongside ListCampaigns with skip_report_summaries=true. + rpc GetCampaignReportSummaries(GetCampaignReportSummariesRequest) returns (GetCampaignReportSummariesResponse) { + option (google.api.http) = { + post: "/api/v1/campaigns:report-summaries" + body: "*" + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "GetCampaignReportSummaries" + description: "Returns per-campaign report summaries in bulk." + }; + } } message Campaign { @@ -96,6 +110,12 @@ message Campaign { // Whether the campaign. This is inferred from whether archived_date is set. bool is_archived = 15 [(google.api.field_behavior) = REQUIRED]; + + // Indicates whether the summary fields on CampaignReport (num_annotations, + // num_passed_rules, num_accepted_rules, num_failed_rules, num_open_rules) are populated. + // When false, those fields should be ignored -- use GetCampaignReportSummaries to + // fetch the summary data separately. + bool reports_include_summaries = 16 [(google.api.field_behavior) = OUTPUT_ONLY]; } // A top-level summary of the report's rules is provided here so clients needn't aggregate this information themselves. @@ -127,6 +147,12 @@ message GetCampaignRequest { string campaign_id = 1 [(google.api.field_behavior) = OPTIONAL]; string client_key = 2 [(google.api.field_behavior) = OPTIONAL]; string organization_id = 3 [(google.api.field_behavior) = OPTIONAL]; + + // If `true`, the response will omit the summary fields on the campaign's reports + // and set reports_include_summaries to false on the Campaign message. + // Reports will still be included with report_id and report_name populated. + // This significantly improves response times for campaigns with many reports. Defaults to `false`. + bool skip_report_summaries = 4 [(google.api.field_behavior) = OPTIONAL]; } // The response of a call to `CampaignService_GetCampaign` to retrieve a campaign. @@ -209,6 +235,12 @@ message ListCampaignsRequest { // For more information about the format of this field, read [this](https://google.aip.dev/132#ordering) // Example: "created_date desc,modified_date" string order_by = 6 [(google.api.field_behavior) = OPTIONAL]; + + // If `true`, the response will omit the summary fields on each campaign's reports + // and set reports_include_summaries to false on the Campaign message. + // Reports will still be included with report_id and report_name populated. + // This significantly improves response times for campaigns with many reports. Defaults to `false`. + bool skip_report_summaries = 7 [(google.api.field_behavior) = OPTIONAL]; } // The response of a call to `CampaignService_ListCampaignsResponse`. @@ -267,3 +299,20 @@ message ListCampaignAnnotationsResponse { repeated sift.annotations.v1.Annotation annotations = 1; string next_page_token = 2; } + +message GetCampaignReportSummariesRequest { + repeated string campaign_ids = 1 [(google.api.field_behavior) = REQUIRED]; + // This field is only required if your user belongs to multiple organizations. + string organization_id = 2 [(google.api.field_behavior) = OPTIONAL]; +} + +// Wrapper for repeated CampaignReport used in map values (proto3 maps cannot directly contain repeated fields). +message CampaignReports { + repeated CampaignReport reports = 1; +} + +message GetCampaignReportSummariesResponse { + // Keyed by campaign_id. Each value contains the full list of CampaignReport + // entries for that campaign with summary fields (num_*) populated. + map summaries_by_campaign_id = 1; +} diff --git a/python/lib/sift/campaigns/v1/campaigns_pb2.py b/python/lib/sift/campaigns/v1/campaigns_pb2.py index 8830df9ad..6fa8be01f 100644 --- a/python/lib/sift/campaigns/v1/campaigns_pb2.py +++ b/python/lib/sift/campaigns/v1/campaigns_pb2.py @@ -23,7 +23,7 @@ from sift.tags.v1 import tags_pb2 as sift_dot_tags_dot_v1_dot_tags__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!sift/campaigns/v1/campaigns.proto\x12\x11sift.campaigns.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a%sift/annotations/v1/annotations.proto\x1a-sift/common/type/v1/resource_identifier.proto\x1a\x1fsift/metadata/v1/metadata.proto\x1a\x17sift/tags/v1/tags.proto\"\xda\x06\n\x08\x43\x61mpaign\x12$\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\ncampaignId\x12,\n\x0forganization_id\x18\x02 \x01(\tB\x03\xe0\x41\x05R\x0eorganizationId\x12\'\n\nclient_key\x18\x03 \x01(\tB\x03\xe0\x41\x01H\x00R\tclientKey\x88\x01\x01\x12\x17\n\x04name\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x04name\x12*\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x03\xe0\x41\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x30\n\x12\x63reated_by_user_id\x18\x06 \x01(\tB\x03\xe0\x41\x03R\x0f\x63reatedByUserId\x12\x32\n\x13modified_by_user_id\x18\x07 \x01(\tB\x03\xe0\x41\x03R\x10modifiedByUserId\x12\x42\n\x0c\x63reated_date\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\x0b\x63reatedDate\x12\x44\n\rmodified_date\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\x0cmodifiedDate\x12\x44\n\rarchived_date\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01R\x0c\x61rchivedDate\x12-\n\x04tags\x18\x0b \x03(\x0b\x32\x14.sift.tags.v1.TagRefB\x03\xe0\x41\x06R\x04tags\x12@\n\x07reports\x18\x0c \x03(\x0b\x32!.sift.campaigns.v1.CampaignReportB\x03\xe0\x41\x06R\x07reports\x12\x41\n\x18\x63reated_from_campaign_id\x18\r \x01(\tB\x03\xe0\x41\x03H\x02R\x15\x63reatedFromCampaignId\x88\x01\x01\x12@\n\x08metadata\x18\x0e \x03(\x0b\x32\x1f.sift.metadata.v1.MetadataValueB\x03\xe0\x41\x01R\x08metadata\x12$\n\x0bis_archived\x18\x0f \x01(\x08\x42\x03\xe0\x41\x02R\nisArchivedB\r\n\x0b_client_keyB\x0e\n\x0c_descriptionB\x1b\n\x19_created_from_campaign_id\"\xc2\x02\n\x0e\x43\x61mpaignReport\x12 \n\treport_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x08reportId\x12$\n\x0breport_name\x18\x02 \x01(\tB\x03\xe0\x41\x03R\nreportName\x12,\n\x0fnum_annotations\x18\x03 \x01(\rB\x03\xe0\x41\x03R\x0enumAnnotations\x12-\n\x10num_passed_rules\x18\x04 \x01(\rB\x03\xe0\x41\x03R\x0enumPassedRules\x12\x31\n\x12num_accepted_rules\x18\x05 \x01(\rB\x03\xe0\x41\x03R\x10numAcceptedRules\x12-\n\x10num_failed_rules\x18\x06 \x01(\rB\x03\xe0\x41\x03R\x0enumFailedRules\x12)\n\x0enum_open_rules\x18\x07 \x01(\rB\x03\xe0\x41\x03R\x0cnumOpenRules\"\x8c\x01\n\x12GetCampaignRequest\x12$\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tB\x03\xe0\x41\x01R\ncampaignId\x12\"\n\nclient_key\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tclientKey\x12,\n\x0forganization_id\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\"S\n\x13GetCampaignResponse\x12<\n\x08\x63\x61mpaign\x18\x01 \x01(\x0b\x32\x1b.sift.campaigns.v1.CampaignB\x03\xe0\x41\x02R\x08\x63\x61mpaign\"\x9f\x03\n\x15\x43reateCampaignRequest\x12\x17\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x04name\x12*\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x03\xe0\x41\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x04tags\x18\x03 \x01(\x0b\x32#.sift.common.type.v1.NamedResourcesB\x03\xe0\x41\x01R\x04tags\x12,\n\x0forganization_id\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\x12\'\n\nclient_key\x18\x05 \x01(\tB\x03\xe0\x41\x01H\x01R\tclientKey\x88\x01\x01\x12K\n\x0b\x63reate_from\x18\x06 \x01(\x0b\x32%.sift.campaigns.v1.CreateCampaignFromB\x03\xe0\x41\x01R\ncreateFrom\x12@\n\x08metadata\x18\x07 \x03(\x0b\x32\x1f.sift.metadata.v1.MetadataValueB\x03\xe0\x41\x01R\x08metadataB\x0e\n\x0c_descriptionB\r\n\x0b_client_key\"\xfb\x01\n\x12\x43reateCampaignFrom\x12\x44\n\x07reports\x18\x01 \x01(\x0b\x32(.sift.common.type.v1.ResourceIdentifiersH\x00R\x07reports\x12>\n\x04runs\x18\x02 \x01(\x0b\x32(.sift.common.type.v1.ResourceIdentifiersH\x00R\x04runs\x12P\n\x0eother_campaign\x18\x03 \x01(\x0b\x32\'.sift.common.type.v1.ResourceIdentifierH\x00R\rotherCampaignB\r\n\x0binitializer\"V\n\x16\x43reateCampaignResponse\x12<\n\x08\x63\x61mpaign\x18\x01 \x01(\x0b\x32\x1b.sift.campaigns.v1.CampaignB\x03\xe0\x41\x02R\x08\x63\x61mpaign\"\xf7\x01\n\x14ListCampaignsRequest\x12 \n\tpage_size\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1b\n\x06\x66ilter\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x06\x66ilter\x12,\n\x0forganization_id\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\x12.\n\x10include_archived\x18\x05 \x01(\x08\x42\x03\xe0\x41\x01R\x0fincludeArchived\x12\x1e\n\x08order_by\x18\x06 \x01(\tB\x03\xe0\x41\x01R\x07orderBy\"z\n\x15ListCampaignsResponse\x12\x39\n\tcampaigns\x18\x01 \x03(\x0b\x32\x1b.sift.campaigns.v1.CampaignR\tcampaigns\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"\x97\x01\n\x15UpdateCampaignRequest\x12<\n\x08\x63\x61mpaign\x18\x01 \x01(\x0b\x32\x1b.sift.campaigns.v1.CampaignB\x03\xe0\x41\x02R\x08\x63\x61mpaign\x12@\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02R\nupdateMask\"V\n\x16UpdateCampaignResponse\x12<\n\x08\x63\x61mpaign\x18\x01 \x01(\x0b\x32\x1b.sift.campaigns.v1.CampaignB\x03\xe0\x41\x02R\x08\x63\x61mpaign\"\xc9\x01\n\x1eListCampaignAnnotationsRequest\x12$\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\ncampaignId\x12 \n\tpage_size\x18\x02 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1b\n\x06\x66ilter\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x06\x66ilter\x12\x1e\n\x08order_by\x18\x05 \x01(\tB\x03\xe0\x41\x01R\x07orderBy\"\x8c\x01\n\x1fListCampaignAnnotationsResponse\x12\x41\n\x0b\x61nnotations\x18\x01 \x03(\x0b\x32\x1f.sift.annotations.v1.AnnotationR\x0b\x61nnotations\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken2\xb1\x08\n\x0f\x43\x61mpaignService\x12\xea\x01\n\x0bGetCampaign\x12%.sift.campaigns.v1.GetCampaignRequest\x1a&.sift.campaigns.v1.GetCampaignResponse\"\x8b\x01\x92\x41#\x12\x0bGetCampaign\x1a\x14Retrieve a campaign.\x82\xd3\xe4\x93\x02_\x12\x1f/api/v1/campaigns/{campaign_id}Z<\x12:/v1/organizations/{organization_id}/campaigns/{client_key}\x12\xaa\x01\n\x0e\x43reateCampaign\x12(.sift.campaigns.v1.CreateCampaignRequest\x1a).sift.campaigns.v1.CreateCampaignResponse\"C\x92\x41$\x12\x0e\x43reateCampaign\x1a\x12\x43reate a campaign.\x82\xd3\xe4\x93\x02\x16\"\x11/api/v1/campaigns:\x01*\x12\xa0\x01\n\rListCampaigns\x12\'.sift.campaigns.v1.ListCampaignsRequest\x1a(.sift.campaigns.v1.ListCampaignsResponse\"<\x92\x41 \x12\rListCampaigns\x1a\x0fList campaigns.\x82\xd3\xe4\x93\x02\x13\x12\x11/api/v1/campaigns\x12\xea\x01\n\x0eUpdateCampaign\x12(.sift.campaigns.v1.UpdateCampaignRequest\x1a).sift.campaigns.v1.UpdateCampaignResponse\"\x82\x01\x92\x41\x63\x12\x0eUpdateCampaign\x1aQUpdates an existing campaign using the list of fields specified in `update_mask`.\x82\xd3\xe4\x93\x02\x16\x32\x11/api/v1/campaigns:\x01*\x12\xf3\x01\n\x17ListCampaignAnnotations\x12\x31.sift.campaigns.v1.ListCampaignAnnotationsRequest\x1a\x32.sift.campaigns.v1.ListCampaignAnnotationsResponse\"q\x92\x41;\x12\x17ListCampaignAnnotations\x1a List annotations for a campaign.\x82\xd3\xe4\x93\x02-\x12+/api/v1/campaigns/{campaign_id}/annotationsB\xa4\x01\n\x15\x63om.sift.campaigns.v1B\x0e\x43\x61mpaignsProtoP\x01\xa2\x02\x03SCX\xaa\x02\x11Sift.Campaigns.V1\xca\x02\x11Sift\\Campaigns\\V1\xe2\x02\x1dSift\\Campaigns\\V1\\GPBMetadata\xea\x02\x13Sift::Campaigns::V1\x92\x41\x14\x12\x12\n\x10\x43\x61mpaign serviceb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!sift/campaigns/v1/campaigns.proto\x12\x11sift.campaigns.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a%sift/annotations/v1/annotations.proto\x1a-sift/common/type/v1/resource_identifier.proto\x1a\x1fsift/metadata/v1/metadata.proto\x1a\x17sift/tags/v1/tags.proto\"\x9b\x07\n\x08\x43\x61mpaign\x12$\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\ncampaignId\x12,\n\x0forganization_id\x18\x02 \x01(\tB\x03\xe0\x41\x05R\x0eorganizationId\x12\'\n\nclient_key\x18\x03 \x01(\tB\x03\xe0\x41\x01H\x00R\tclientKey\x88\x01\x01\x12\x17\n\x04name\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x04name\x12*\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x03\xe0\x41\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x30\n\x12\x63reated_by_user_id\x18\x06 \x01(\tB\x03\xe0\x41\x03R\x0f\x63reatedByUserId\x12\x32\n\x13modified_by_user_id\x18\x07 \x01(\tB\x03\xe0\x41\x03R\x10modifiedByUserId\x12\x42\n\x0c\x63reated_date\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\x0b\x63reatedDate\x12\x44\n\rmodified_date\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\x0cmodifiedDate\x12\x44\n\rarchived_date\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01R\x0c\x61rchivedDate\x12-\n\x04tags\x18\x0b \x03(\x0b\x32\x14.sift.tags.v1.TagRefB\x03\xe0\x41\x06R\x04tags\x12@\n\x07reports\x18\x0c \x03(\x0b\x32!.sift.campaigns.v1.CampaignReportB\x03\xe0\x41\x06R\x07reports\x12\x41\n\x18\x63reated_from_campaign_id\x18\r \x01(\tB\x03\xe0\x41\x03H\x02R\x15\x63reatedFromCampaignId\x88\x01\x01\x12@\n\x08metadata\x18\x0e \x03(\x0b\x32\x1f.sift.metadata.v1.MetadataValueB\x03\xe0\x41\x01R\x08metadata\x12$\n\x0bis_archived\x18\x0f \x01(\x08\x42\x03\xe0\x41\x02R\nisArchived\x12?\n\x19reports_include_summaries\x18\x10 \x01(\x08\x42\x03\xe0\x41\x03R\x17reportsIncludeSummariesB\r\n\x0b_client_keyB\x0e\n\x0c_descriptionB\x1b\n\x19_created_from_campaign_id\"\xc2\x02\n\x0e\x43\x61mpaignReport\x12 \n\treport_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x08reportId\x12$\n\x0breport_name\x18\x02 \x01(\tB\x03\xe0\x41\x03R\nreportName\x12,\n\x0fnum_annotations\x18\x03 \x01(\rB\x03\xe0\x41\x03R\x0enumAnnotations\x12-\n\x10num_passed_rules\x18\x04 \x01(\rB\x03\xe0\x41\x03R\x0enumPassedRules\x12\x31\n\x12num_accepted_rules\x18\x05 \x01(\rB\x03\xe0\x41\x03R\x10numAcceptedRules\x12-\n\x10num_failed_rules\x18\x06 \x01(\rB\x03\xe0\x41\x03R\x0enumFailedRules\x12)\n\x0enum_open_rules\x18\x07 \x01(\rB\x03\xe0\x41\x03R\x0cnumOpenRules\"\xc5\x01\n\x12GetCampaignRequest\x12$\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tB\x03\xe0\x41\x01R\ncampaignId\x12\"\n\nclient_key\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tclientKey\x12,\n\x0forganization_id\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\x12\x37\n\x15skip_report_summaries\x18\x04 \x01(\x08\x42\x03\xe0\x41\x01R\x13skipReportSummaries\"S\n\x13GetCampaignResponse\x12<\n\x08\x63\x61mpaign\x18\x01 \x01(\x0b\x32\x1b.sift.campaigns.v1.CampaignB\x03\xe0\x41\x02R\x08\x63\x61mpaign\"\x9f\x03\n\x15\x43reateCampaignRequest\x12\x17\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x04name\x12*\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x03\xe0\x41\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x04tags\x18\x03 \x01(\x0b\x32#.sift.common.type.v1.NamedResourcesB\x03\xe0\x41\x01R\x04tags\x12,\n\x0forganization_id\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\x12\'\n\nclient_key\x18\x05 \x01(\tB\x03\xe0\x41\x01H\x01R\tclientKey\x88\x01\x01\x12K\n\x0b\x63reate_from\x18\x06 \x01(\x0b\x32%.sift.campaigns.v1.CreateCampaignFromB\x03\xe0\x41\x01R\ncreateFrom\x12@\n\x08metadata\x18\x07 \x03(\x0b\x32\x1f.sift.metadata.v1.MetadataValueB\x03\xe0\x41\x01R\x08metadataB\x0e\n\x0c_descriptionB\r\n\x0b_client_key\"\xfb\x01\n\x12\x43reateCampaignFrom\x12\x44\n\x07reports\x18\x01 \x01(\x0b\x32(.sift.common.type.v1.ResourceIdentifiersH\x00R\x07reports\x12>\n\x04runs\x18\x02 \x01(\x0b\x32(.sift.common.type.v1.ResourceIdentifiersH\x00R\x04runs\x12P\n\x0eother_campaign\x18\x03 \x01(\x0b\x32\'.sift.common.type.v1.ResourceIdentifierH\x00R\rotherCampaignB\r\n\x0binitializer\"V\n\x16\x43reateCampaignResponse\x12<\n\x08\x63\x61mpaign\x18\x01 \x01(\x0b\x32\x1b.sift.campaigns.v1.CampaignB\x03\xe0\x41\x02R\x08\x63\x61mpaign\"\xb0\x02\n\x14ListCampaignsRequest\x12 \n\tpage_size\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1b\n\x06\x66ilter\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x06\x66ilter\x12,\n\x0forganization_id\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\x12.\n\x10include_archived\x18\x05 \x01(\x08\x42\x03\xe0\x41\x01R\x0fincludeArchived\x12\x1e\n\x08order_by\x18\x06 \x01(\tB\x03\xe0\x41\x01R\x07orderBy\x12\x37\n\x15skip_report_summaries\x18\x07 \x01(\x08\x42\x03\xe0\x41\x01R\x13skipReportSummaries\"z\n\x15ListCampaignsResponse\x12\x39\n\tcampaigns\x18\x01 \x03(\x0b\x32\x1b.sift.campaigns.v1.CampaignR\tcampaigns\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"\x97\x01\n\x15UpdateCampaignRequest\x12<\n\x08\x63\x61mpaign\x18\x01 \x01(\x0b\x32\x1b.sift.campaigns.v1.CampaignB\x03\xe0\x41\x02R\x08\x63\x61mpaign\x12@\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02R\nupdateMask\"V\n\x16UpdateCampaignResponse\x12<\n\x08\x63\x61mpaign\x18\x01 \x01(\x0b\x32\x1b.sift.campaigns.v1.CampaignB\x03\xe0\x41\x02R\x08\x63\x61mpaign\"\xc9\x01\n\x1eListCampaignAnnotationsRequest\x12$\n\x0b\x63\x61mpaign_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\ncampaignId\x12 \n\tpage_size\x18\x02 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1b\n\x06\x66ilter\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x06\x66ilter\x12\x1e\n\x08order_by\x18\x05 \x01(\tB\x03\xe0\x41\x01R\x07orderBy\"\x8c\x01\n\x1fListCampaignAnnotationsResponse\x12\x41\n\x0b\x61nnotations\x18\x01 \x03(\x0b\x32\x1f.sift.annotations.v1.AnnotationR\x0b\x61nnotations\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"y\n!GetCampaignReportSummariesRequest\x12&\n\x0c\x63\x61mpaign_ids\x18\x01 \x03(\tB\x03\xe0\x41\x02R\x0b\x63\x61mpaignIds\x12,\n\x0forganization_id\x18\x02 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\"N\n\x0f\x43\x61mpaignReports\x12;\n\x07reports\x18\x01 \x03(\x0b\x32!.sift.campaigns.v1.CampaignReportR\x07reports\"\x9e\x02\n\"GetCampaignReportSummariesResponse\x12\x89\x01\n\x18summaries_by_campaign_id\x18\x01 \x03(\x0b\x32P.sift.campaigns.v1.GetCampaignReportSummariesResponse.SummariesByCampaignIdEntryR\x15summariesByCampaignId\x1al\n\x1aSummariesByCampaignIdEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x38\n\x05value\x18\x02 \x01(\x0b\x32\".sift.campaigns.v1.CampaignReportsR\x05value:\x02\x38\x01\x32\xbb\n\n\x0f\x43\x61mpaignService\x12\xea\x01\n\x0bGetCampaign\x12%.sift.campaigns.v1.GetCampaignRequest\x1a&.sift.campaigns.v1.GetCampaignResponse\"\x8b\x01\x92\x41#\x12\x0bGetCampaign\x1a\x14Retrieve a campaign.\x82\xd3\xe4\x93\x02_\x12\x1f/api/v1/campaigns/{campaign_id}Z<\x12:/v1/organizations/{organization_id}/campaigns/{client_key}\x12\xaa\x01\n\x0e\x43reateCampaign\x12(.sift.campaigns.v1.CreateCampaignRequest\x1a).sift.campaigns.v1.CreateCampaignResponse\"C\x92\x41$\x12\x0e\x43reateCampaign\x1a\x12\x43reate a campaign.\x82\xd3\xe4\x93\x02\x16\"\x11/api/v1/campaigns:\x01*\x12\xa0\x01\n\rListCampaigns\x12\'.sift.campaigns.v1.ListCampaignsRequest\x1a(.sift.campaigns.v1.ListCampaignsResponse\"<\x92\x41 \x12\rListCampaigns\x1a\x0fList campaigns.\x82\xd3\xe4\x93\x02\x13\x12\x11/api/v1/campaigns\x12\xea\x01\n\x0eUpdateCampaign\x12(.sift.campaigns.v1.UpdateCampaignRequest\x1a).sift.campaigns.v1.UpdateCampaignResponse\"\x82\x01\x92\x41\x63\x12\x0eUpdateCampaign\x1aQUpdates an existing campaign using the list of fields specified in `update_mask`.\x82\xd3\xe4\x93\x02\x16\x32\x11/api/v1/campaigns:\x01*\x12\xf3\x01\n\x17ListCampaignAnnotations\x12\x31.sift.campaigns.v1.ListCampaignAnnotationsRequest\x1a\x32.sift.campaigns.v1.ListCampaignAnnotationsResponse\"q\x92\x41;\x12\x17ListCampaignAnnotations\x1a List annotations for a campaign.\x82\xd3\xe4\x93\x02-\x12+/api/v1/campaigns/{campaign_id}/annotations\x12\x87\x02\n\x1aGetCampaignReportSummaries\x12\x34.sift.campaigns.v1.GetCampaignReportSummariesRequest\x1a\x35.sift.campaigns.v1.GetCampaignReportSummariesResponse\"|\x92\x41L\x12\x1aGetCampaignReportSummaries\x1a.Returns per-campaign report summaries in bulk.\x82\xd3\xe4\x93\x02\'\"\"/api/v1/campaigns:report-summaries:\x01*B\xa4\x01\n\x15\x63om.sift.campaigns.v1B\x0e\x43\x61mpaignsProtoP\x01\xa2\x02\x03SCX\xaa\x02\x11Sift.Campaigns.V1\xca\x02\x11Sift\\Campaigns\\V1\xe2\x02\x1dSift\\Campaigns\\V1\\GPBMetadata\xea\x02\x13Sift::Campaigns::V1\x92\x41\x14\x12\x12\n\x10\x43\x61mpaign serviceb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -61,6 +61,8 @@ _globals['_CAMPAIGN'].fields_by_name['metadata']._serialized_options = b'\340A\001' _globals['_CAMPAIGN'].fields_by_name['is_archived']._loaded_options = None _globals['_CAMPAIGN'].fields_by_name['is_archived']._serialized_options = b'\340A\002' + _globals['_CAMPAIGN'].fields_by_name['reports_include_summaries']._loaded_options = None + _globals['_CAMPAIGN'].fields_by_name['reports_include_summaries']._serialized_options = b'\340A\003' _globals['_CAMPAIGNREPORT'].fields_by_name['report_id']._loaded_options = None _globals['_CAMPAIGNREPORT'].fields_by_name['report_id']._serialized_options = b'\340A\002' _globals['_CAMPAIGNREPORT'].fields_by_name['report_name']._loaded_options = None @@ -81,6 +83,8 @@ _globals['_GETCAMPAIGNREQUEST'].fields_by_name['client_key']._serialized_options = b'\340A\001' _globals['_GETCAMPAIGNREQUEST'].fields_by_name['organization_id']._loaded_options = None _globals['_GETCAMPAIGNREQUEST'].fields_by_name['organization_id']._serialized_options = b'\340A\001' + _globals['_GETCAMPAIGNREQUEST'].fields_by_name['skip_report_summaries']._loaded_options = None + _globals['_GETCAMPAIGNREQUEST'].fields_by_name['skip_report_summaries']._serialized_options = b'\340A\001' _globals['_GETCAMPAIGNRESPONSE'].fields_by_name['campaign']._loaded_options = None _globals['_GETCAMPAIGNRESPONSE'].fields_by_name['campaign']._serialized_options = b'\340A\002' _globals['_CREATECAMPAIGNREQUEST'].fields_by_name['name']._loaded_options = None @@ -111,6 +115,8 @@ _globals['_LISTCAMPAIGNSREQUEST'].fields_by_name['include_archived']._serialized_options = b'\340A\001' _globals['_LISTCAMPAIGNSREQUEST'].fields_by_name['order_by']._loaded_options = None _globals['_LISTCAMPAIGNSREQUEST'].fields_by_name['order_by']._serialized_options = b'\340A\001' + _globals['_LISTCAMPAIGNSREQUEST'].fields_by_name['skip_report_summaries']._loaded_options = None + _globals['_LISTCAMPAIGNSREQUEST'].fields_by_name['skip_report_summaries']._serialized_options = b'\340A\001' _globals['_UPDATECAMPAIGNREQUEST'].fields_by_name['campaign']._loaded_options = None _globals['_UPDATECAMPAIGNREQUEST'].fields_by_name['campaign']._serialized_options = b'\340A\002' _globals['_UPDATECAMPAIGNREQUEST'].fields_by_name['update_mask']._loaded_options = None @@ -127,6 +133,12 @@ _globals['_LISTCAMPAIGNANNOTATIONSREQUEST'].fields_by_name['filter']._serialized_options = b'\340A\001' _globals['_LISTCAMPAIGNANNOTATIONSREQUEST'].fields_by_name['order_by']._loaded_options = None _globals['_LISTCAMPAIGNANNOTATIONSREQUEST'].fields_by_name['order_by']._serialized_options = b'\340A\001' + _globals['_GETCAMPAIGNREPORTSUMMARIESREQUEST'].fields_by_name['campaign_ids']._loaded_options = None + _globals['_GETCAMPAIGNREPORTSUMMARIESREQUEST'].fields_by_name['campaign_ids']._serialized_options = b'\340A\002' + _globals['_GETCAMPAIGNREPORTSUMMARIESREQUEST'].fields_by_name['organization_id']._loaded_options = None + _globals['_GETCAMPAIGNREPORTSUMMARIESREQUEST'].fields_by_name['organization_id']._serialized_options = b'\340A\001' + _globals['_GETCAMPAIGNREPORTSUMMARIESRESPONSE_SUMMARIESBYCAMPAIGNIDENTRY']._loaded_options = None + _globals['_GETCAMPAIGNREPORTSUMMARIESRESPONSE_SUMMARIESBYCAMPAIGNIDENTRY']._serialized_options = b'8\001' _globals['_CAMPAIGNSERVICE'].methods_by_name['GetCampaign']._loaded_options = None _globals['_CAMPAIGNSERVICE'].methods_by_name['GetCampaign']._serialized_options = b'\222A#\022\013GetCampaign\032\024Retrieve a campaign.\202\323\344\223\002_\022\037/api/v1/campaigns/{campaign_id}Z<\022:/v1/organizations/{organization_id}/campaigns/{client_key}' _globals['_CAMPAIGNSERVICE'].methods_by_name['CreateCampaign']._loaded_options = None @@ -137,32 +149,42 @@ _globals['_CAMPAIGNSERVICE'].methods_by_name['UpdateCampaign']._serialized_options = b'\222Ac\022\016UpdateCampaign\032QUpdates an existing campaign using the list of fields specified in `update_mask`.\202\323\344\223\002\0262\021/api/v1/campaigns:\001*' _globals['_CAMPAIGNSERVICE'].methods_by_name['ListCampaignAnnotations']._loaded_options = None _globals['_CAMPAIGNSERVICE'].methods_by_name['ListCampaignAnnotations']._serialized_options = b'\222A;\022\027ListCampaignAnnotations\032 List annotations for a campaign.\202\323\344\223\002-\022+/api/v1/campaigns/{campaign_id}/annotations' + _globals['_CAMPAIGNSERVICE'].methods_by_name['GetCampaignReportSummaries']._loaded_options = None + _globals['_CAMPAIGNSERVICE'].methods_by_name['GetCampaignReportSummaries']._serialized_options = b'\222AL\022\032GetCampaignReportSummaries\032.Returns per-campaign report summaries in bulk.\202\323\344\223\002\'\"\"/api/v1/campaigns:report-summaries:\001*' _globals['_CAMPAIGN']._serialized_start=379 - _globals['_CAMPAIGN']._serialized_end=1237 - _globals['_CAMPAIGNREPORT']._serialized_start=1240 - _globals['_CAMPAIGNREPORT']._serialized_end=1562 - _globals['_GETCAMPAIGNREQUEST']._serialized_start=1565 - _globals['_GETCAMPAIGNREQUEST']._serialized_end=1705 - _globals['_GETCAMPAIGNRESPONSE']._serialized_start=1707 - _globals['_GETCAMPAIGNRESPONSE']._serialized_end=1790 - _globals['_CREATECAMPAIGNREQUEST']._serialized_start=1793 - _globals['_CREATECAMPAIGNREQUEST']._serialized_end=2208 - _globals['_CREATECAMPAIGNFROM']._serialized_start=2211 - _globals['_CREATECAMPAIGNFROM']._serialized_end=2462 - _globals['_CREATECAMPAIGNRESPONSE']._serialized_start=2464 - _globals['_CREATECAMPAIGNRESPONSE']._serialized_end=2550 - _globals['_LISTCAMPAIGNSREQUEST']._serialized_start=2553 - _globals['_LISTCAMPAIGNSREQUEST']._serialized_end=2800 - _globals['_LISTCAMPAIGNSRESPONSE']._serialized_start=2802 - _globals['_LISTCAMPAIGNSRESPONSE']._serialized_end=2924 - _globals['_UPDATECAMPAIGNREQUEST']._serialized_start=2927 - _globals['_UPDATECAMPAIGNREQUEST']._serialized_end=3078 - _globals['_UPDATECAMPAIGNRESPONSE']._serialized_start=3080 - _globals['_UPDATECAMPAIGNRESPONSE']._serialized_end=3166 - _globals['_LISTCAMPAIGNANNOTATIONSREQUEST']._serialized_start=3169 - _globals['_LISTCAMPAIGNANNOTATIONSREQUEST']._serialized_end=3370 - _globals['_LISTCAMPAIGNANNOTATIONSRESPONSE']._serialized_start=3373 - _globals['_LISTCAMPAIGNANNOTATIONSRESPONSE']._serialized_end=3513 - _globals['_CAMPAIGNSERVICE']._serialized_start=3516 - _globals['_CAMPAIGNSERVICE']._serialized_end=4589 + _globals['_CAMPAIGN']._serialized_end=1302 + _globals['_CAMPAIGNREPORT']._serialized_start=1305 + _globals['_CAMPAIGNREPORT']._serialized_end=1627 + _globals['_GETCAMPAIGNREQUEST']._serialized_start=1630 + _globals['_GETCAMPAIGNREQUEST']._serialized_end=1827 + _globals['_GETCAMPAIGNRESPONSE']._serialized_start=1829 + _globals['_GETCAMPAIGNRESPONSE']._serialized_end=1912 + _globals['_CREATECAMPAIGNREQUEST']._serialized_start=1915 + _globals['_CREATECAMPAIGNREQUEST']._serialized_end=2330 + _globals['_CREATECAMPAIGNFROM']._serialized_start=2333 + _globals['_CREATECAMPAIGNFROM']._serialized_end=2584 + _globals['_CREATECAMPAIGNRESPONSE']._serialized_start=2586 + _globals['_CREATECAMPAIGNRESPONSE']._serialized_end=2672 + _globals['_LISTCAMPAIGNSREQUEST']._serialized_start=2675 + _globals['_LISTCAMPAIGNSREQUEST']._serialized_end=2979 + _globals['_LISTCAMPAIGNSRESPONSE']._serialized_start=2981 + _globals['_LISTCAMPAIGNSRESPONSE']._serialized_end=3103 + _globals['_UPDATECAMPAIGNREQUEST']._serialized_start=3106 + _globals['_UPDATECAMPAIGNREQUEST']._serialized_end=3257 + _globals['_UPDATECAMPAIGNRESPONSE']._serialized_start=3259 + _globals['_UPDATECAMPAIGNRESPONSE']._serialized_end=3345 + _globals['_LISTCAMPAIGNANNOTATIONSREQUEST']._serialized_start=3348 + _globals['_LISTCAMPAIGNANNOTATIONSREQUEST']._serialized_end=3549 + _globals['_LISTCAMPAIGNANNOTATIONSRESPONSE']._serialized_start=3552 + _globals['_LISTCAMPAIGNANNOTATIONSRESPONSE']._serialized_end=3692 + _globals['_GETCAMPAIGNREPORTSUMMARIESREQUEST']._serialized_start=3694 + _globals['_GETCAMPAIGNREPORTSUMMARIESREQUEST']._serialized_end=3815 + _globals['_CAMPAIGNREPORTS']._serialized_start=3817 + _globals['_CAMPAIGNREPORTS']._serialized_end=3895 + _globals['_GETCAMPAIGNREPORTSUMMARIESRESPONSE']._serialized_start=3898 + _globals['_GETCAMPAIGNREPORTSUMMARIESRESPONSE']._serialized_end=4184 + _globals['_GETCAMPAIGNREPORTSUMMARIESRESPONSE_SUMMARIESBYCAMPAIGNIDENTRY']._serialized_start=4076 + _globals['_GETCAMPAIGNREPORTSUMMARIESRESPONSE_SUMMARIESBYCAMPAIGNIDENTRY']._serialized_end=4184 + _globals['_CAMPAIGNSERVICE']._serialized_start=4187 + _globals['_CAMPAIGNSERVICE']._serialized_end=5526 # @@protoc_insertion_point(module_scope) diff --git a/python/lib/sift/campaigns/v1/campaigns_pb2.pyi b/python/lib/sift/campaigns/v1/campaigns_pb2.pyi index 7d42339e9..ba196321a 100644 --- a/python/lib/sift/campaigns/v1/campaigns_pb2.pyi +++ b/python/lib/sift/campaigns/v1/campaigns_pb2.pyi @@ -37,6 +37,7 @@ class Campaign(google.protobuf.message.Message): CREATED_FROM_CAMPAIGN_ID_FIELD_NUMBER: builtins.int METADATA_FIELD_NUMBER: builtins.int IS_ARCHIVED_FIELD_NUMBER: builtins.int + REPORTS_INCLUDE_SUMMARIES_FIELD_NUMBER: builtins.int campaign_id: builtins.str organization_id: builtins.str client_key: builtins.str @@ -48,6 +49,12 @@ class Campaign(google.protobuf.message.Message): """If this campaign was created by duplicating another campaign, that other campaign will be referenced here""" is_archived: builtins.bool """Whether the campaign. This is inferred from whether archived_date is set.""" + reports_include_summaries: builtins.bool + """Indicates whether the summary fields on CampaignReport (num_annotations, + num_passed_rules, num_accepted_rules, num_failed_rules, num_open_rules) are populated. + When false, those fields should be ignored -- use GetCampaignReportSummaries to + fetch the summary data separately. + """ @property def created_date(self) -> google.protobuf.timestamp_pb2.Timestamp: ... @property @@ -82,9 +89,10 @@ class Campaign(google.protobuf.message.Message): created_from_campaign_id: builtins.str | None = ..., metadata: collections.abc.Iterable[sift.metadata.v1.metadata_pb2.MetadataValue] | None = ..., is_archived: builtins.bool = ..., + reports_include_summaries: builtins.bool = ..., ) -> None: ... def HasField(self, field_name: typing.Literal["_client_key", b"_client_key", "_created_from_campaign_id", b"_created_from_campaign_id", "_description", b"_description", "archived_date", b"archived_date", "client_key", b"client_key", "created_date", b"created_date", "created_from_campaign_id", b"created_from_campaign_id", "description", b"description", "modified_date", b"modified_date"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_client_key", b"_client_key", "_created_from_campaign_id", b"_created_from_campaign_id", "_description", b"_description", "archived_date", b"archived_date", "campaign_id", b"campaign_id", "client_key", b"client_key", "created_by_user_id", b"created_by_user_id", "created_date", b"created_date", "created_from_campaign_id", b"created_from_campaign_id", "description", b"description", "is_archived", b"is_archived", "metadata", b"metadata", "modified_by_user_id", b"modified_by_user_id", "modified_date", b"modified_date", "name", b"name", "organization_id", b"organization_id", "reports", b"reports", "tags", b"tags"]) -> None: ... + def ClearField(self, field_name: typing.Literal["_client_key", b"_client_key", "_created_from_campaign_id", b"_created_from_campaign_id", "_description", b"_description", "archived_date", b"archived_date", "campaign_id", b"campaign_id", "client_key", b"client_key", "created_by_user_id", b"created_by_user_id", "created_date", b"created_date", "created_from_campaign_id", b"created_from_campaign_id", "description", b"description", "is_archived", b"is_archived", "metadata", b"metadata", "modified_by_user_id", b"modified_by_user_id", "modified_date", b"modified_date", "name", b"name", "organization_id", b"organization_id", "reports", b"reports", "reports_include_summaries", b"reports_include_summaries", "tags", b"tags"]) -> None: ... @typing.overload def WhichOneof(self, oneof_group: typing.Literal["_client_key", b"_client_key"]) -> typing.Literal["client_key"] | None: ... @typing.overload @@ -147,17 +155,25 @@ class GetCampaignRequest(google.protobuf.message.Message): CAMPAIGN_ID_FIELD_NUMBER: builtins.int CLIENT_KEY_FIELD_NUMBER: builtins.int ORGANIZATION_ID_FIELD_NUMBER: builtins.int + SKIP_REPORT_SUMMARIES_FIELD_NUMBER: builtins.int campaign_id: builtins.str client_key: builtins.str organization_id: builtins.str + skip_report_summaries: builtins.bool + """If `true`, the response will omit the summary fields on the campaign's reports + and set reports_include_summaries to false on the Campaign message. + Reports will still be included with report_id and report_name populated. + This significantly improves response times for campaigns with many reports. Defaults to `false`. + """ def __init__( self, *, campaign_id: builtins.str = ..., client_key: builtins.str = ..., organization_id: builtins.str = ..., + skip_report_summaries: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing.Literal["campaign_id", b"campaign_id", "client_key", b"client_key", "organization_id", b"organization_id"]) -> None: ... + def ClearField(self, field_name: typing.Literal["campaign_id", b"campaign_id", "client_key", b"client_key", "organization_id", b"organization_id", "skip_report_summaries", b"skip_report_summaries"]) -> None: ... global___GetCampaignRequest = GetCampaignRequest @@ -298,6 +314,7 @@ class ListCampaignsRequest(google.protobuf.message.Message): ORGANIZATION_ID_FIELD_NUMBER: builtins.int INCLUDE_ARCHIVED_FIELD_NUMBER: builtins.int ORDER_BY_FIELD_NUMBER: builtins.int + SKIP_REPORT_SUMMARIES_FIELD_NUMBER: builtins.int page_size: builtins.int """The maximum number of campaigns to return. The service may return fewer than this value. If unspecified, at most 50 campaigns will be returned. The maximum value is 1000; values above @@ -327,6 +344,12 @@ class ListCampaignsRequest(google.protobuf.message.Message): For more information about the format of this field, read [this](https://google.aip.dev/132#ordering) Example: "created_date desc,modified_date" """ + skip_report_summaries: builtins.bool + """If `true`, the response will omit the summary fields on each campaign's reports + and set reports_include_summaries to false on the Campaign message. + Reports will still be included with report_id and report_name populated. + This significantly improves response times for campaigns with many reports. Defaults to `false`. + """ def __init__( self, *, @@ -336,8 +359,9 @@ class ListCampaignsRequest(google.protobuf.message.Message): organization_id: builtins.str = ..., include_archived: builtins.bool = ..., order_by: builtins.str = ..., + skip_report_summaries: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing.Literal["filter", b"filter", "include_archived", b"include_archived", "order_by", b"order_by", "organization_id", b"organization_id", "page_size", b"page_size", "page_token", b"page_token"]) -> None: ... + def ClearField(self, field_name: typing.Literal["filter", b"filter", "include_archived", b"include_archived", "order_by", b"order_by", "organization_id", b"organization_id", "page_size", b"page_size", "page_token", b"page_token", "skip_report_summaries", b"skip_report_summaries"]) -> None: ... global___ListCampaignsRequest = ListCampaignsRequest @@ -478,3 +502,79 @@ class ListCampaignAnnotationsResponse(google.protobuf.message.Message): def ClearField(self, field_name: typing.Literal["annotations", b"annotations", "next_page_token", b"next_page_token"]) -> None: ... global___ListCampaignAnnotationsResponse = ListCampaignAnnotationsResponse + +@typing.final +class GetCampaignReportSummariesRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CAMPAIGN_IDS_FIELD_NUMBER: builtins.int + ORGANIZATION_ID_FIELD_NUMBER: builtins.int + organization_id: builtins.str + """This field is only required if your user belongs to multiple organizations.""" + @property + def campaign_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, + *, + campaign_ids: collections.abc.Iterable[builtins.str] | None = ..., + organization_id: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["campaign_ids", b"campaign_ids", "organization_id", b"organization_id"]) -> None: ... + +global___GetCampaignReportSummariesRequest = GetCampaignReportSummariesRequest + +@typing.final +class CampaignReports(google.protobuf.message.Message): + """Wrapper for repeated CampaignReport used in map values (proto3 maps cannot directly contain repeated fields).""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REPORTS_FIELD_NUMBER: builtins.int + @property + def reports(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CampaignReport]: ... + def __init__( + self, + *, + reports: collections.abc.Iterable[global___CampaignReport] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["reports", b"reports"]) -> None: ... + +global___CampaignReports = CampaignReports + +@typing.final +class GetCampaignReportSummariesResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final + class SummariesByCampaignIdEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + @property + def value(self) -> global___CampaignReports: ... + def __init__( + self, + *, + key: builtins.str = ..., + value: global___CampaignReports | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + + SUMMARIES_BY_CAMPAIGN_ID_FIELD_NUMBER: builtins.int + @property + def summaries_by_campaign_id(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___CampaignReports]: + """Keyed by campaign_id. Each value contains the full list of CampaignReport + entries for that campaign with summary fields (num_*) populated. + """ + + def __init__( + self, + *, + summaries_by_campaign_id: collections.abc.Mapping[builtins.str, global___CampaignReports] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["summaries_by_campaign_id", b"summaries_by_campaign_id"]) -> None: ... + +global___GetCampaignReportSummariesResponse = GetCampaignReportSummariesResponse diff --git a/python/lib/sift/campaigns/v1/campaigns_pb2_grpc.py b/python/lib/sift/campaigns/v1/campaigns_pb2_grpc.py index c9f8e868e..9ecaf1f8c 100644 --- a/python/lib/sift/campaigns/v1/campaigns_pb2_grpc.py +++ b/python/lib/sift/campaigns/v1/campaigns_pb2_grpc.py @@ -39,6 +39,11 @@ def __init__(self, channel): request_serializer=sift_dot_campaigns_dot_v1_dot_campaigns__pb2.ListCampaignAnnotationsRequest.SerializeToString, response_deserializer=sift_dot_campaigns_dot_v1_dot_campaigns__pb2.ListCampaignAnnotationsResponse.FromString, ) + self.GetCampaignReportSummaries = channel.unary_unary( + '/sift.campaigns.v1.CampaignService/GetCampaignReportSummaries', + request_serializer=sift_dot_campaigns_dot_v1_dot_campaigns__pb2.GetCampaignReportSummariesRequest.SerializeToString, + response_deserializer=sift_dot_campaigns_dot_v1_dot_campaigns__pb2.GetCampaignReportSummariesResponse.FromString, + ) class CampaignServiceServicer(object): @@ -79,6 +84,15 @@ def ListCampaignAnnotations(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetCampaignReportSummaries(self, request, context): + """Returns per-campaign report summaries (annotation totals + rule classifications) in bulk. + Each campaign maps to its list of CampaignReport entries with summary fields populated. + Intended for use alongside ListCampaigns with skip_report_summaries=true. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_CampaignServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -107,6 +121,11 @@ def add_CampaignServiceServicer_to_server(servicer, server): request_deserializer=sift_dot_campaigns_dot_v1_dot_campaigns__pb2.ListCampaignAnnotationsRequest.FromString, response_serializer=sift_dot_campaigns_dot_v1_dot_campaigns__pb2.ListCampaignAnnotationsResponse.SerializeToString, ), + 'GetCampaignReportSummaries': grpc.unary_unary_rpc_method_handler( + servicer.GetCampaignReportSummaries, + request_deserializer=sift_dot_campaigns_dot_v1_dot_campaigns__pb2.GetCampaignReportSummariesRequest.FromString, + response_serializer=sift_dot_campaigns_dot_v1_dot_campaigns__pb2.GetCampaignReportSummariesResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'sift.campaigns.v1.CampaignService', rpc_method_handlers) @@ -201,3 +220,20 @@ def ListCampaignAnnotations(request, sift_dot_campaigns_dot_v1_dot_campaigns__pb2.ListCampaignAnnotationsResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetCampaignReportSummaries(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/sift.campaigns.v1.CampaignService/GetCampaignReportSummaries', + sift_dot_campaigns_dot_v1_dot_campaigns__pb2.GetCampaignReportSummariesRequest.SerializeToString, + sift_dot_campaigns_dot_v1_dot_campaigns__pb2.GetCampaignReportSummariesResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/python/lib/sift/campaigns/v1/campaigns_pb2_grpc.pyi b/python/lib/sift/campaigns/v1/campaigns_pb2_grpc.pyi index 4bb3c764d..8b3e0ba86 100644 --- a/python/lib/sift/campaigns/v1/campaigns_pb2_grpc.pyi +++ b/python/lib/sift/campaigns/v1/campaigns_pb2_grpc.pyi @@ -49,6 +49,15 @@ class CampaignServiceStub: ] """List campaigns.""" + GetCampaignReportSummaries: grpc.UnaryUnaryMultiCallable[ + sift.campaigns.v1.campaigns_pb2.GetCampaignReportSummariesRequest, + sift.campaigns.v1.campaigns_pb2.GetCampaignReportSummariesResponse, + ] + """Returns per-campaign report summaries (annotation totals + rule classifications) in bulk. + Each campaign maps to its list of CampaignReport entries with summary fields populated. + Intended for use alongside ListCampaigns with skip_report_summaries=true. + """ + class CampaignServiceAsyncStub: GetCampaign: grpc.aio.UnaryUnaryMultiCallable[ sift.campaigns.v1.campaigns_pb2.GetCampaignRequest, @@ -80,6 +89,15 @@ class CampaignServiceAsyncStub: ] """List campaigns.""" + GetCampaignReportSummaries: grpc.aio.UnaryUnaryMultiCallable[ + sift.campaigns.v1.campaigns_pb2.GetCampaignReportSummariesRequest, + sift.campaigns.v1.campaigns_pb2.GetCampaignReportSummariesResponse, + ] + """Returns per-campaign report summaries (annotation totals + rule classifications) in bulk. + Each campaign maps to its list of CampaignReport entries with summary fields populated. + Intended for use alongside ListCampaigns with skip_report_summaries=true. + """ + class CampaignServiceServicer(metaclass=abc.ABCMeta): @abc.abstractmethod def GetCampaign( @@ -121,4 +139,15 @@ class CampaignServiceServicer(metaclass=abc.ABCMeta): ) -> typing.Union[sift.campaigns.v1.campaigns_pb2.ListCampaignAnnotationsResponse, collections.abc.Awaitable[sift.campaigns.v1.campaigns_pb2.ListCampaignAnnotationsResponse]]: """List campaigns.""" + @abc.abstractmethod + def GetCampaignReportSummaries( + self, + request: sift.campaigns.v1.campaigns_pb2.GetCampaignReportSummariesRequest, + context: _ServicerContext, + ) -> typing.Union[sift.campaigns.v1.campaigns_pb2.GetCampaignReportSummariesResponse, collections.abc.Awaitable[sift.campaigns.v1.campaigns_pb2.GetCampaignReportSummariesResponse]]: + """Returns per-campaign report summaries (annotation totals + rule classifications) in bulk. + Each campaign maps to its list of CampaignReport entries with summary fields populated. + Intended for use alongside ListCampaigns with skip_report_summaries=true. + """ + def add_CampaignServiceServicer_to_server(servicer: CampaignServiceServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/rust/crates/sift_rs/src/gen/sift.campaigns.v1.rs b/rust/crates/sift_rs/src/gen/sift.campaigns.v1.rs index c49c07081..559bae618 100644 --- a/rust/crates/sift_rs/src/gen/sift.campaigns.v1.rs +++ b/rust/crates/sift_rs/src/gen/sift.campaigns.v1.rs @@ -33,6 +33,8 @@ pub struct Campaign { pub metadata: ::prost::alloc::vec::Vec, #[prost(bool, tag="15")] pub is_archived: bool, + #[prost(bool, tag="16")] + pub reports_include_summaries: bool, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -61,6 +63,8 @@ pub struct GetCampaignRequest { pub client_key: ::prost::alloc::string::String, #[prost(string, tag="3")] pub organization_id: ::prost::alloc::string::String, + #[prost(bool, tag="4")] + pub skip_report_summaries: bool, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -126,6 +130,8 @@ pub struct ListCampaignsRequest { pub include_archived: bool, #[prost(string, tag="6")] pub order_by: ::prost::alloc::string::String, + #[prost(bool, tag="7")] + pub skip_report_summaries: bool, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -171,9 +177,29 @@ pub struct ListCampaignAnnotationsResponse { #[prost(string, tag="2")] pub next_page_token: ::prost::alloc::string::String, } +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetCampaignReportSummariesRequest { + #[prost(string, repeated, tag="1")] + pub campaign_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(string, tag="2")] + pub organization_id: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CampaignReports { + #[prost(message, repeated, tag="1")] + pub reports: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetCampaignReportSummariesResponse { + #[prost(map="string, message", tag="1")] + pub summaries_by_campaign_id: ::std::collections::HashMap<::prost::alloc::string::String, CampaignReports>, +} /// Encoded file descriptor set for the `sift.campaigns.v1` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xad, 0x85, 0x01, 0x0a, 0x21, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x0a, 0xd7, 0xa2, 0x01, 0x0a, 0x21, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, @@ -196,7 +222,7 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x74, 0x6f, 0x1a, 0x1f, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2f, 0x76, - 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda, 0x06, 0x0a, + 0x31, 0x2f, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9b, 0x07, 0x0a, 0x08, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, @@ -246,1001 +272,1235 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x0a, 0x69, 0x73, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1b, 0x0a, 0x19, - 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0xc2, 0x02, 0x0a, 0x0e, 0x43, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x09, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, - 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, - 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, - 0x73, 0x12, 0x31, 0x0a, 0x12, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, - 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, - 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x75, - 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, - 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x8c, - 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, - 0x2c, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x53, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x22, 0x9f, 0x03, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, - 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, - 0x2c, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, - 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x69, - 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x46, 0x72, - 0x6f, 0x6d, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, - 0x72, 0x6f, 0x6d, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x6b, 0x65, 0x79, 0x22, 0xfb, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x44, 0x0a, 0x07, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, - 0x69, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x12, 0x3e, 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x04, 0x72, 0x75, 0x6e, - 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x66, 0x74, + 0x02, 0x52, 0x0a, 0x69, 0x73, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x3f, 0x0a, + 0x19, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x17, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x49, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1b, 0x0a, + 0x19, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0xc2, 0x02, 0x0a, 0x0e, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, + 0x09, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, + 0x24, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, + 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x52, 0x75, 0x6c, + 0x65, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, + 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, + 0x75, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x70, 0x65, 0x6e, + 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x65, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x22, + 0xc5, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, + 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x37, + 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, + 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x22, 0x9f, 0x03, 0x0a, + 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x04, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x69, 0x66, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x48, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x4b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x40, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0xfb, + 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x44, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x04, 0x72, + 0x75, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x72, 0x22, 0x56, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x08, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x22, 0xf7, 0x01, 0x0a, 0x14, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x42, 0x79, 0x22, 0x7a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, - 0x09, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x09, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x6f, + 0x74, 0x68, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, + 0x6f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x0d, 0x0a, + 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x22, 0x56, 0x0a, 0x16, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x22, 0xb0, 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, + 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x1e, + 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x37, + 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0x7a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x39, 0x0a, 0x09, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x52, 0x09, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0x97, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, + 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x56, 0x0a, + 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, + 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x22, 0xc9, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, + 0x79, 0x22, 0x8c, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x66, + 0x74, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0x97, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, - 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x56, 0x0a, 0x16, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x22, 0xc9, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, - 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0x8c, - 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0xb1, 0x08, - 0x0a, 0x0f, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0xea, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x12, 0x25, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x8b, 0x01, 0x92, 0x41, 0x23, 0x12, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x1a, 0x14, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x5a, - 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, - 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x7d, 0x12, 0x1f, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, - 0x2f, 0x7b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xaa, - 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x69, - 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x92, 0x41, 0x24, 0x12, 0x0e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x1a, 0x12, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0d, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x27, 0x2e, + 0x22, 0x79, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x2c, 0x0a, + 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x0f, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x3b, + 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22, 0x9e, 0x02, 0x0a, 0x22, + 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x18, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, + 0x5f, 0x62, 0x79, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x42, 0x79, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x49, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x65, 0x73, 0x42, 0x79, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x1a, 0x6c, + 0x0a, 0x1a, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x42, 0x79, 0x43, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3c, 0x92, 0x41, 0x20, 0x12, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x73, 0x1a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xea, - 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x12, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x69, - 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0x92, 0x41, 0x63, 0x12, 0x0e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x1a, 0x51, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, - 0x20, 0x60, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x60, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x32, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xf3, 0x01, 0x0a, 0x17, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x73, 0x69, 0x66, - 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x31, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xbb, 0x0a, 0x0a, + 0x0f, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0xea, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x12, 0x25, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x8b, 0x01, 0x92, 0x41, 0x23, 0x12, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x1a, 0x14, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x63, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x5a, 0x3c, + 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x7d, 0x12, 0x1f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2f, + 0x7b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xaa, 0x01, + 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x12, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x69, 0x66, + 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x92, 0x41, 0x24, 0x12, 0x0e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x1a, 0x12, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0d, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x73, + 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x3c, 0x92, 0x41, 0x20, 0x12, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x1a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xea, 0x01, + 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x12, 0x28, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x69, 0x66, + 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0x92, 0x41, 0x63, 0x12, 0x0e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x1a, 0x51, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, + 0x60, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x60, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x32, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0xf3, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, - 0x92, 0x41, 0x3b, 0x12, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x20, 0x4c, 0x69, - 0x73, 0x74, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x42, 0xa4, 0x01, 0x92, 0x41, 0x14, 0x12, 0x12, 0x0a, 0x10, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x15, 0x63, 0x6f, 0x6d, - 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, - 0x76, 0x31, 0x42, 0x0e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0xa2, 0x02, 0x03, 0x53, 0x43, 0x58, 0xaa, 0x02, 0x11, 0x53, 0x69, 0x66, - 0x74, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, - 0x11, 0x53, 0x69, 0x66, 0x74, 0x5c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x53, 0x69, 0x66, 0x74, 0x5c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x13, 0x53, 0x69, 0x66, 0x74, 0x3a, 0x3a, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0x8e, 0x60, 0x0a, 0x07, 0x12, 0x05, 0x00, - 0x00, 0x8c, 0x02, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, - 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1a, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, - 0x04, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x29, 0x0a, 0x09, - 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x2a, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, - 0x03, 0x07, 0x00, 0x29, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x04, 0x12, 0x03, 0x08, 0x00, 0x38, 0x0a, - 0x09, 0x0a, 0x02, 0x03, 0x05, 0x12, 0x03, 0x09, 0x00, 0x2f, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x06, - 0x12, 0x03, 0x0a, 0x00, 0x37, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x07, 0x12, 0x03, 0x0b, 0x00, 0x29, - 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x08, 0x12, 0x03, 0x0c, 0x00, 0x21, 0x0a, 0x09, 0x0a, 0x01, 0x08, - 0x12, 0x04, 0x0e, 0x00, 0x10, 0x02, 0x0a, 0x0b, 0x0a, 0x03, 0x08, 0x92, 0x08, 0x12, 0x04, 0x0e, - 0x00, 0x10, 0x02, 0x0a, 0x0a, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x12, 0x00, 0x48, 0x01, 0x0a, - 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x12, 0x08, 0x17, 0x0a, 0x24, 0x0a, 0x04, 0x06, - 0x00, 0x02, 0x00, 0x12, 0x04, 0x14, 0x02, 0x1d, 0x03, 0x1a, 0x16, 0x20, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x14, 0x06, 0x11, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x14, 0x12, 0x24, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x14, 0x2f, 0x42, 0x0a, 0x0d, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x15, 0x04, 0x18, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, - 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x15, 0x04, 0x18, 0x06, 0x0a, 0x0d, 0x0a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x73, 0x69, 0x66, 0x74, + 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x92, + 0x41, 0x3b, 0x12, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x20, 0x4c, 0x69, 0x73, + 0x74, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x87, 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x34, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7c, 0x92, 0x41, + 0x4c, 0x12, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x2e, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x70, 0x65, 0x72, 0x2d, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x62, 0x75, 0x6c, 0x6b, 0x2e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x3a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x42, 0xa4, 0x01, 0x92, 0x41, 0x14, + 0x12, 0x12, 0x0a, 0x10, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x63, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x43, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0xa2, 0x02, 0x03, + 0x53, 0x43, 0x58, 0xaa, 0x02, 0x11, 0x53, 0x69, 0x66, 0x74, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x53, 0x69, 0x66, 0x74, 0x5c, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x53, 0x69, + 0x66, 0x74, 0x5c, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x5c, 0x56, 0x31, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x53, 0x69, + 0x66, 0x74, 0x3a, 0x3a, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x3a, 0x3a, 0x56, + 0x31, 0x4a, 0x8f, 0x76, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, 0xbd, 0x02, 0x01, 0x0a, 0x08, 0x0a, + 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, + 0x1a, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, + 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x29, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, + 0x00, 0x2a, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, 0x29, 0x0a, 0x09, 0x0a, + 0x02, 0x03, 0x04, 0x12, 0x03, 0x08, 0x00, 0x38, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x05, 0x12, 0x03, + 0x09, 0x00, 0x2f, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x06, 0x12, 0x03, 0x0a, 0x00, 0x37, 0x0a, 0x09, + 0x0a, 0x02, 0x03, 0x07, 0x12, 0x03, 0x0b, 0x00, 0x29, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x08, 0x12, + 0x03, 0x0c, 0x00, 0x21, 0x0a, 0x09, 0x0a, 0x01, 0x08, 0x12, 0x04, 0x0e, 0x00, 0x10, 0x02, 0x0a, + 0x0b, 0x0a, 0x03, 0x08, 0x92, 0x08, 0x12, 0x04, 0x0e, 0x00, 0x10, 0x02, 0x0a, 0x0b, 0x0a, 0x04, + 0x08, 0x92, 0x08, 0x02, 0x12, 0x03, 0x0f, 0x02, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x08, 0x92, 0x08, + 0x02, 0x01, 0x12, 0x03, 0x0f, 0x09, 0x22, 0x0a, 0x0a, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x12, + 0x00, 0x56, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x12, 0x08, 0x17, 0x0a, + 0x24, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x14, 0x02, 0x1d, 0x03, 0x1a, 0x16, 0x20, + 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x14, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x14, 0x12, + 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x14, 0x2f, 0x42, 0x0a, + 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x15, 0x04, 0x18, 0x06, 0x0a, 0x11, + 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x15, 0x04, 0x18, + 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, + 0x03, 0x16, 0x06, 0x2c, 0x0a, 0x12, 0x0a, 0x0b, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, + 0x22, 0x0b, 0x00, 0x12, 0x03, 0x17, 0x06, 0x5e, 0x0a, 0x13, 0x0a, 0x0c, 0x06, 0x00, 0x02, 0x00, + 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x0b, 0x00, 0x02, 0x12, 0x03, 0x17, 0x1c, 0x5d, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x19, 0x04, 0x1c, 0x06, 0x0a, 0x0f, 0x0a, 0x07, - 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x12, 0x04, 0x19, 0x04, 0x1c, 0x06, 0x0a, 0x22, 0x0a, - 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x20, 0x02, 0x29, 0x03, 0x1a, 0x14, 0x20, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x20, 0x06, 0x14, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x20, 0x15, 0x2a, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x20, 0x35, 0x4b, 0x0a, 0x0d, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, 0x21, 0x04, 0x24, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, - 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x21, 0x04, 0x24, 0x06, 0x0a, 0x0d, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, 0x25, 0x04, 0x28, 0x06, 0x0a, 0x0f, 0x0a, 0x07, - 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x12, 0x04, 0x25, 0x04, 0x28, 0x06, 0x0a, 0x1f, 0x0a, - 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x2c, 0x02, 0x32, 0x03, 0x1a, 0x11, 0x20, 0x4c, 0x69, - 0x73, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x2c, 0x06, 0x13, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x2c, 0x14, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x02, 0x03, 0x12, 0x03, 0x2c, 0x33, 0x48, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, - 0x04, 0x12, 0x03, 0x2d, 0x04, 0x3a, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, - 0xca, 0xbc, 0x22, 0x12, 0x03, 0x2d, 0x04, 0x3a, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, - 0x04, 0x12, 0x04, 0x2e, 0x04, 0x31, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x02, 0x04, - 0x92, 0x08, 0x12, 0x04, 0x2e, 0x04, 0x31, 0x06, 0x0a, 0x61, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, - 0x12, 0x04, 0x35, 0x02, 0x3e, 0x03, 0x1a, 0x53, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x60, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x60, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x35, 0x06, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x03, 0x02, 0x12, 0x03, 0x35, 0x15, 0x2a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, - 0x12, 0x03, 0x35, 0x35, 0x4b, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x04, - 0x36, 0x04, 0x39, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x12, 0x04, 0x36, 0x04, 0x39, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, - 0x12, 0x04, 0x3a, 0x04, 0x3d, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x03, 0x04, 0x92, - 0x08, 0x12, 0x04, 0x3a, 0x04, 0x3d, 0x06, 0x0a, 0x1f, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, - 0x04, 0x41, 0x02, 0x47, 0x03, 0x1a, 0x11, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, - 0x01, 0x12, 0x03, 0x41, 0x06, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, - 0x03, 0x41, 0x1e, 0x3c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x41, - 0x47, 0x66, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x03, 0x42, 0x04, 0x54, - 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x03, 0x42, - 0x04, 0x54, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x04, 0x43, 0x04, 0x46, - 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x12, 0x04, 0x43, 0x04, - 0x46, 0x06, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x4a, 0x00, 0x62, 0x01, 0x0a, 0x0a, - 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x4a, 0x08, 0x10, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x00, 0x12, 0x03, 0x4b, 0x02, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, - 0x12, 0x03, 0x4b, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, - 0x4b, 0x09, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x4b, 0x17, - 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x08, 0x12, 0x03, 0x4b, 0x19, 0x41, 0x0a, - 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x4b, 0x1a, 0x40, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x4c, 0x02, 0x47, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x4c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x4c, 0x09, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x01, 0x03, 0x12, 0x03, 0x4c, 0x1b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x08, - 0x12, 0x03, 0x4c, 0x1d, 0x46, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x01, 0x08, 0x9c, 0x08, - 0x00, 0x12, 0x03, 0x4c, 0x1e, 0x45, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, - 0x4d, 0x02, 0x4a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x4d, 0x02, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, 0x4d, 0x0b, 0x11, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x4d, 0x12, 0x1c, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x4d, 0x1f, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x02, 0x08, 0x12, 0x03, 0x4d, 0x21, 0x49, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, - 0x02, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x4d, 0x22, 0x48, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x03, 0x12, 0x03, 0x4e, 0x02, 0x3b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x05, - 0x12, 0x03, 0x4e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, - 0x4e, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x4e, 0x10, - 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x08, 0x12, 0x03, 0x4e, 0x12, 0x3a, 0x0a, - 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x03, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x4e, 0x13, 0x39, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x04, 0x12, 0x03, 0x4f, 0x02, 0x4b, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x04, 0x04, 0x12, 0x03, 0x4f, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x04, 0x05, 0x12, 0x03, 0x4f, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x04, 0x01, 0x12, 0x03, 0x4f, 0x12, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, - 0x12, 0x03, 0x4f, 0x20, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x08, 0x12, 0x03, - 0x4f, 0x22, 0x4a, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x04, 0x08, 0x9c, 0x08, 0x00, 0x12, - 0x03, 0x4f, 0x23, 0x49, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x05, 0x12, 0x03, 0x50, 0x02, - 0x4c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x05, 0x12, 0x03, 0x50, 0x02, 0x08, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x50, 0x09, 0x1b, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x50, 0x1e, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x05, 0x08, 0x12, 0x03, 0x50, 0x20, 0x4b, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, - 0x05, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x50, 0x21, 0x4a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x06, 0x12, 0x03, 0x51, 0x02, 0x4d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x05, - 0x12, 0x03, 0x51, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x01, 0x12, 0x03, - 0x51, 0x09, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x51, 0x1f, - 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x08, 0x12, 0x03, 0x51, 0x21, 0x4c, 0x0a, - 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x06, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x51, 0x22, 0x4b, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x07, 0x12, 0x03, 0x52, 0x02, 0x59, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x07, 0x06, 0x12, 0x03, 0x52, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, 0x52, 0x1c, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x07, 0x03, 0x12, 0x03, 0x52, 0x2b, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x08, - 0x12, 0x03, 0x52, 0x2d, 0x58, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x07, 0x08, 0x9c, 0x08, - 0x00, 0x12, 0x03, 0x52, 0x2e, 0x57, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x08, 0x12, 0x03, - 0x53, 0x02, 0x5a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x06, 0x12, 0x03, 0x53, 0x02, - 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x53, 0x1c, 0x29, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x53, 0x2c, 0x2d, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x08, 0x08, 0x12, 0x03, 0x53, 0x2e, 0x59, 0x0a, 0x0f, 0x0a, 0x08, 0x04, - 0x00, 0x02, 0x08, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x53, 0x2f, 0x58, 0x0a, 0x0b, 0x0a, 0x04, - 0x04, 0x00, 0x02, 0x09, 0x12, 0x03, 0x54, 0x02, 0x58, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x09, 0x06, 0x12, 0x03, 0x54, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x09, 0x01, - 0x12, 0x03, 0x54, 0x1c, 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x09, 0x03, 0x12, 0x03, - 0x54, 0x2c, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x09, 0x08, 0x12, 0x03, 0x54, 0x2f, - 0x57, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x09, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x54, - 0x30, 0x56, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x0a, 0x12, 0x03, 0x55, 0x02, 0x58, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0a, 0x04, 0x12, 0x03, 0x55, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x0a, 0x06, 0x12, 0x03, 0x55, 0x0b, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x0a, 0x01, 0x12, 0x03, 0x55, 0x1f, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x0a, 0x03, 0x12, 0x03, 0x55, 0x26, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0a, 0x08, - 0x12, 0x03, 0x55, 0x29, 0x57, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x0a, 0x08, 0x9c, 0x08, - 0x00, 0x12, 0x03, 0x55, 0x2a, 0x56, 0x0a, 0x3c, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x0b, 0x12, 0x03, - 0x58, 0x02, 0x56, 0x1a, 0x2f, 0x20, 0x41, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x2c, 0x20, 0x61, 0x74, 0x20, 0x69, 0x74, 0x73, 0x20, 0x63, 0x6f, 0x72, 0x65, 0x2c, 0x20, 0x69, - 0x73, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0b, 0x04, 0x12, 0x03, 0x58, - 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0b, 0x06, 0x12, 0x03, 0x58, 0x0b, 0x19, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0b, 0x01, 0x12, 0x03, 0x58, 0x1a, 0x21, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0b, 0x03, 0x12, 0x03, 0x58, 0x24, 0x26, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x0b, 0x08, 0x12, 0x03, 0x58, 0x27, 0x55, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, - 0x02, 0x0b, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x58, 0x28, 0x54, 0x0a, 0x78, 0x0a, 0x04, 0x04, - 0x00, 0x02, 0x0c, 0x12, 0x03, 0x5b, 0x02, 0x5c, 0x1a, 0x6b, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, - 0x69, 0x73, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x77, 0x61, 0x73, 0x20, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x64, 0x75, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6f, 0x74, - 0x68, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x77, 0x69, 0x6c, - 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x20, - 0x68, 0x65, 0x72, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0c, 0x04, 0x12, 0x03, - 0x5b, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0c, 0x05, 0x12, 0x03, 0x5b, 0x0b, - 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0c, 0x01, 0x12, 0x03, 0x5b, 0x12, 0x2a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0c, 0x03, 0x12, 0x03, 0x5b, 0x2d, 0x2f, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x0c, 0x08, 0x12, 0x03, 0x5b, 0x30, 0x5b, 0x0a, 0x0f, 0x0a, 0x08, 0x04, - 0x00, 0x02, 0x0c, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x5b, 0x31, 0x5a, 0x0a, 0x36, 0x0a, 0x04, - 0x04, 0x00, 0x02, 0x0d, 0x12, 0x03, 0x5e, 0x02, 0x61, 0x1a, 0x29, 0x20, 0x55, 0x73, 0x65, 0x72, - 0x2d, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0d, 0x04, 0x12, 0x03, 0x5e, - 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0d, 0x06, 0x12, 0x03, 0x5e, 0x0b, 0x29, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0d, 0x01, 0x12, 0x03, 0x5e, 0x2a, 0x32, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0d, 0x03, 0x12, 0x03, 0x5e, 0x35, 0x37, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x0d, 0x08, 0x12, 0x03, 0x5e, 0x38, 0x60, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, - 0x02, 0x0d, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x5e, 0x39, 0x5f, 0x0a, 0x58, 0x0a, 0x04, 0x04, - 0x00, 0x02, 0x0e, 0x12, 0x03, 0x61, 0x02, 0x41, 0x1a, 0x4b, 0x20, 0x57, 0x68, 0x65, 0x74, 0x68, - 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, - 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, - 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, - 0x73, 0x65, 0x74, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0e, 0x05, 0x12, 0x03, - 0x61, 0x02, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0e, 0x01, 0x12, 0x03, 0x61, 0x07, - 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0e, 0x03, 0x12, 0x03, 0x61, 0x15, 0x17, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0e, 0x08, 0x12, 0x03, 0x61, 0x18, 0x40, 0x0a, 0x0f, 0x0a, - 0x08, 0x04, 0x00, 0x02, 0x0e, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x61, 0x19, 0x3f, 0x0a, 0x82, - 0x01, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x65, 0x00, 0x78, 0x01, 0x1a, 0x76, 0x20, 0x41, 0x20, - 0x74, 0x6f, 0x70, 0x2d, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x27, - 0x73, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x64, 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x73, 0x6f, 0x20, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x6e, 0x27, 0x74, 0x20, 0x61, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x73, 0x65, 0x6c, 0x76, 0x65, - 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x65, 0x08, 0x16, 0x0a, - 0x7b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x67, 0x02, 0x40, 0x1a, 0x6e, 0x20, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, - 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x20, 0x53, - 0x65, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x79, 0x6f, 0x75, 0x27, 0x72, 0x65, 0x20, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x67, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x67, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, - 0x03, 0x12, 0x03, 0x67, 0x15, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x08, 0x12, - 0x03, 0x67, 0x17, 0x3f, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x01, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, - 0x12, 0x03, 0x67, 0x18, 0x3e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x68, - 0x02, 0x45, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, 0x68, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x68, 0x09, 0x14, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x68, 0x17, 0x18, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x01, 0x08, 0x12, 0x03, 0x68, 0x19, 0x44, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x01, - 0x02, 0x01, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x68, 0x1a, 0x43, 0x0a, 0x4b, 0x0a, 0x04, 0x04, - 0x01, 0x02, 0x02, 0x12, 0x03, 0x6b, 0x02, 0x49, 0x1a, 0x3e, 0x20, 0x48, 0x6f, 0x77, 0x20, 0x6d, - 0x61, 0x6e, 0x79, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, - 0x65, 0x78, 0x69, 0x73, 0x74, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x27, 0x73, 0x20, 0x76, 0x61, 0x72, 0x69, 0x6f, 0x75, 0x73, - 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, - 0x05, 0x12, 0x03, 0x6b, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x01, 0x12, - 0x03, 0x6b, 0x09, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, 0x6b, - 0x1b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x08, 0x12, 0x03, 0x6b, 0x1d, 0x48, - 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x01, 0x02, 0x02, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x6b, 0x1e, - 0x47, 0x0a, 0x61, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x03, 0x12, 0x03, 0x6e, 0x02, 0x4a, 0x1a, 0x54, - 0x20, 0x48, 0x6f, 0x77, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x20, - 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x20, 0x4e, 0x4f, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x05, 0x12, 0x03, 0x6e, - 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x6e, 0x09, 0x19, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x03, 0x12, 0x03, 0x6e, 0x1c, 0x1d, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x08, 0x12, 0x03, 0x6e, 0x1e, 0x49, 0x0a, 0x0f, 0x0a, 0x08, - 0x04, 0x01, 0x02, 0x03, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x6e, 0x1f, 0x48, 0x0a, 0x50, 0x0a, - 0x04, 0x04, 0x01, 0x02, 0x04, 0x12, 0x03, 0x71, 0x02, 0x4c, 0x1a, 0x43, 0x20, 0x48, 0x6f, 0x77, - 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x20, 0x68, 0x61, 0x76, 0x65, - 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x77, 0x68, 0x69, - 0x63, 0x68, 0x20, 0x61, 0x72, 0x65, 0x20, 0x41, 0x4c, 0x4c, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x04, 0x05, 0x12, 0x03, 0x71, 0x02, 0x08, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x01, 0x02, 0x04, 0x01, 0x12, 0x03, 0x71, 0x09, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x01, 0x02, 0x04, 0x03, 0x12, 0x03, 0x71, 0x1e, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x04, 0x08, 0x12, 0x03, 0x71, 0x20, 0x4b, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x01, 0x02, 0x04, 0x08, - 0x9c, 0x08, 0x00, 0x12, 0x03, 0x71, 0x21, 0x4a, 0x0a, 0x4e, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x05, - 0x12, 0x03, 0x74, 0x02, 0x4a, 0x1a, 0x41, 0x20, 0x48, 0x6f, 0x77, 0x20, 0x6d, 0x61, 0x6e, 0x79, + 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x12, 0x04, 0x19, 0x04, 0x1c, 0x06, 0x0a, 0x0f, 0x0a, + 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x1a, 0x06, 0x1c, 0x0a, 0x0f, + 0x0a, 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x03, 0x12, 0x03, 0x1b, 0x06, 0x29, 0x0a, + 0x22, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x20, 0x02, 0x29, 0x03, 0x1a, 0x14, 0x20, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x20, 0x06, + 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x20, 0x15, 0x2a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x20, 0x35, 0x4b, 0x0a, 0x0d, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, 0x21, 0x04, 0x24, 0x06, 0x0a, 0x11, 0x0a, 0x09, + 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x21, 0x04, 0x24, 0x06, 0x0a, + 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x22, + 0x06, 0x1f, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, + 0x12, 0x03, 0x23, 0x06, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, + 0x25, 0x04, 0x28, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x12, + 0x04, 0x25, 0x04, 0x28, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, + 0x02, 0x12, 0x03, 0x26, 0x06, 0x1f, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, + 0x08, 0x03, 0x12, 0x03, 0x27, 0x06, 0x27, 0x0a, 0x1f, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, + 0x04, 0x2c, 0x02, 0x32, 0x03, 0x1a, 0x11, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, + 0x01, 0x12, 0x03, 0x2c, 0x06, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, + 0x03, 0x2c, 0x14, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x2c, + 0x33, 0x48, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x2d, 0x04, 0x3a, + 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x03, 0x2d, + 0x04, 0x3a, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, + 0x12, 0x03, 0x2d, 0x20, 0x38, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x04, + 0x2e, 0x04, 0x31, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x02, 0x04, 0x92, 0x08, 0x12, + 0x04, 0x2e, 0x04, 0x31, 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x02, 0x04, 0x92, 0x08, + 0x02, 0x12, 0x03, 0x2f, 0x06, 0x1e, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x02, 0x04, 0x92, + 0x08, 0x03, 0x12, 0x03, 0x30, 0x06, 0x24, 0x0a, 0x61, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, + 0x04, 0x35, 0x02, 0x3e, 0x03, 0x1a, 0x53, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, + 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, + 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x60, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x60, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x03, 0x01, 0x12, 0x03, 0x35, 0x06, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, + 0x02, 0x12, 0x03, 0x35, 0x15, 0x2a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, + 0x03, 0x35, 0x35, 0x4b, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x04, 0x36, + 0x04, 0x39, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, + 0x12, 0x04, 0x36, 0x04, 0x39, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, + 0xca, 0xbc, 0x22, 0x06, 0x12, 0x03, 0x37, 0x06, 0x20, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, + 0x03, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x38, 0x06, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x04, 0x3a, 0x04, 0x3d, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, + 0x00, 0x02, 0x03, 0x04, 0x92, 0x08, 0x12, 0x04, 0x3a, 0x04, 0x3d, 0x06, 0x0a, 0x0f, 0x0a, 0x08, + 0x06, 0x00, 0x02, 0x03, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x3b, 0x06, 0x1f, 0x0a, 0x0f, 0x0a, + 0x08, 0x06, 0x00, 0x02, 0x03, 0x04, 0x92, 0x08, 0x03, 0x12, 0x03, 0x3c, 0x06, 0x66, 0x0a, 0x1f, + 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x04, 0x41, 0x02, 0x47, 0x03, 0x1a, 0x11, 0x20, 0x4c, + 0x69, 0x73, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x41, 0x06, 0x1d, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x41, 0x1e, 0x3c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x41, 0x47, 0x66, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x04, 0x04, 0x12, 0x03, 0x42, 0x04, 0x54, 0x0a, 0x10, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x04, 0x04, + 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x03, 0x42, 0x04, 0x54, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, + 0x04, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x42, 0x20, 0x52, 0x0a, 0x0d, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x04, 0x43, 0x04, 0x46, 0x06, 0x0a, 0x0f, 0x0a, 0x07, 0x06, + 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x12, 0x04, 0x43, 0x04, 0x46, 0x06, 0x0a, 0x0f, 0x0a, 0x08, + 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x44, 0x06, 0x28, 0x0a, 0x0f, 0x0a, + 0x08, 0x06, 0x00, 0x02, 0x04, 0x04, 0x92, 0x08, 0x03, 0x12, 0x03, 0x45, 0x06, 0x35, 0x0a, 0x8e, + 0x02, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, 0x04, 0x4c, 0x02, 0x55, 0x03, 0x1a, 0xff, 0x01, + 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x70, 0x65, 0x72, 0x2d, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x73, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x20, 0x28, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x20, 0x2b, 0x20, 0x72, 0x75, 0x6c, 0x65, + 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x29, 0x20, 0x69, 0x6e, 0x20, 0x62, 0x75, 0x6c, 0x6b, 0x2e, 0x0a, 0x20, 0x45, 0x61, 0x63, 0x68, + 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x6d, 0x61, 0x70, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x69, 0x74, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, + 0x65, 0x64, 0x2e, 0x0a, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x69, 0x64, 0x65, 0x20, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x20, 0x77, 0x69, + 0x74, 0x68, 0x20, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x3d, 0x74, 0x72, 0x75, 0x65, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x4c, 0x06, 0x20, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x05, 0x02, 0x12, 0x03, 0x4c, 0x21, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x4c, 0x4d, 0x6f, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x05, 0x04, 0x12, 0x04, 0x4d, 0x04, 0x50, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x05, + 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x4d, 0x04, 0x50, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, + 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x4e, 0x06, 0x30, 0x0a, 0x11, + 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x05, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x4f, 0x06, + 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x04, 0x12, 0x04, 0x51, 0x04, 0x54, 0x06, + 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, 0x08, 0x12, 0x04, 0x51, 0x04, 0x54, + 0x06, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, 0x08, 0x02, 0x12, 0x03, 0x52, + 0x06, 0x2b, 0x0a, 0x0f, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x05, 0x04, 0x92, 0x08, 0x03, 0x12, 0x03, + 0x53, 0x06, 0x43, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x58, 0x00, 0x76, 0x01, 0x0a, + 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x58, 0x08, 0x10, 0x0a, 0x0b, 0x0a, 0x04, 0x04, + 0x00, 0x02, 0x00, 0x12, 0x03, 0x59, 0x02, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, + 0x05, 0x12, 0x03, 0x59, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, + 0x03, 0x59, 0x09, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x59, + 0x17, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x08, 0x12, 0x03, 0x59, 0x19, 0x41, + 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x59, 0x1a, + 0x40, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x5a, 0x02, 0x47, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x5a, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x5a, 0x09, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x01, 0x03, 0x12, 0x03, 0x5a, 0x1b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, + 0x08, 0x12, 0x03, 0x5a, 0x1d, 0x46, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x01, 0x08, 0x9c, + 0x08, 0x00, 0x12, 0x03, 0x5a, 0x1e, 0x45, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, + 0x03, 0x5b, 0x02, 0x4a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x5b, + 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, 0x5b, 0x0b, 0x11, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x5b, 0x12, 0x1c, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x5b, 0x1f, 0x20, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x02, 0x08, 0x12, 0x03, 0x5b, 0x21, 0x49, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, + 0x02, 0x02, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x5b, 0x22, 0x48, 0x0a, 0x0b, 0x0a, 0x04, 0x04, + 0x00, 0x02, 0x03, 0x12, 0x03, 0x5c, 0x02, 0x3b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, + 0x05, 0x12, 0x03, 0x5c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, + 0x03, 0x5c, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x5c, + 0x10, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x08, 0x12, 0x03, 0x5c, 0x12, 0x3a, + 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x03, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x5c, 0x13, + 0x39, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x04, 0x12, 0x03, 0x5d, 0x02, 0x4b, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x04, 0x12, 0x03, 0x5d, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x04, 0x05, 0x12, 0x03, 0x5d, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x04, 0x01, 0x12, 0x03, 0x5d, 0x12, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, + 0x03, 0x12, 0x03, 0x5d, 0x20, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x08, 0x12, + 0x03, 0x5d, 0x22, 0x4a, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x04, 0x08, 0x9c, 0x08, 0x00, + 0x12, 0x03, 0x5d, 0x23, 0x49, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x05, 0x12, 0x03, 0x5e, + 0x02, 0x4c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x05, 0x12, 0x03, 0x5e, 0x02, 0x08, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x5e, 0x09, 0x1b, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x5e, 0x1e, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x05, 0x08, 0x12, 0x03, 0x5e, 0x20, 0x4b, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, + 0x02, 0x05, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x5e, 0x21, 0x4a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, + 0x00, 0x02, 0x06, 0x12, 0x03, 0x5f, 0x02, 0x4d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, + 0x05, 0x12, 0x03, 0x5f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x01, 0x12, + 0x03, 0x5f, 0x09, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x5f, + 0x1f, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x08, 0x12, 0x03, 0x5f, 0x21, 0x4c, + 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x06, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x5f, 0x22, + 0x4b, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x07, 0x12, 0x03, 0x60, 0x02, 0x59, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x06, 0x12, 0x03, 0x60, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, 0x60, 0x1c, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x07, 0x03, 0x12, 0x03, 0x60, 0x2b, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, + 0x08, 0x12, 0x03, 0x60, 0x2d, 0x58, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x07, 0x08, 0x9c, + 0x08, 0x00, 0x12, 0x03, 0x60, 0x2e, 0x57, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x08, 0x12, + 0x03, 0x61, 0x02, 0x5a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x06, 0x12, 0x03, 0x61, + 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x61, 0x1c, 0x29, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x61, 0x2c, 0x2d, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x08, 0x12, 0x03, 0x61, 0x2e, 0x59, 0x0a, 0x0f, 0x0a, 0x08, + 0x04, 0x00, 0x02, 0x08, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x61, 0x2f, 0x58, 0x0a, 0x0b, 0x0a, + 0x04, 0x04, 0x00, 0x02, 0x09, 0x12, 0x03, 0x62, 0x02, 0x58, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x09, 0x06, 0x12, 0x03, 0x62, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x09, + 0x01, 0x12, 0x03, 0x62, 0x1c, 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x09, 0x03, 0x12, + 0x03, 0x62, 0x2c, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x09, 0x08, 0x12, 0x03, 0x62, + 0x2f, 0x57, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x09, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, + 0x62, 0x30, 0x56, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x0a, 0x12, 0x03, 0x63, 0x02, 0x58, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0a, 0x04, 0x12, 0x03, 0x63, 0x02, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0a, 0x06, 0x12, 0x03, 0x63, 0x0b, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x0a, 0x01, 0x12, 0x03, 0x63, 0x1f, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x0a, 0x03, 0x12, 0x03, 0x63, 0x26, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0a, + 0x08, 0x12, 0x03, 0x63, 0x29, 0x57, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x0a, 0x08, 0x9c, + 0x08, 0x00, 0x12, 0x03, 0x63, 0x2a, 0x56, 0x0a, 0x3c, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x0b, 0x12, + 0x03, 0x66, 0x02, 0x56, 0x1a, 0x2f, 0x20, 0x41, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x2c, 0x20, 0x61, 0x74, 0x20, 0x69, 0x74, 0x73, 0x20, 0x63, 0x6f, 0x72, 0x65, 0x2c, 0x20, + 0x69, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0b, 0x04, 0x12, 0x03, + 0x66, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0b, 0x06, 0x12, 0x03, 0x66, 0x0b, + 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0b, 0x01, 0x12, 0x03, 0x66, 0x1a, 0x21, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0b, 0x03, 0x12, 0x03, 0x66, 0x24, 0x26, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x0b, 0x08, 0x12, 0x03, 0x66, 0x27, 0x55, 0x0a, 0x0f, 0x0a, 0x08, 0x04, + 0x00, 0x02, 0x0b, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x66, 0x28, 0x54, 0x0a, 0x78, 0x0a, 0x04, + 0x04, 0x00, 0x02, 0x0c, 0x12, 0x03, 0x69, 0x02, 0x5c, 0x1a, 0x6b, 0x20, 0x49, 0x66, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x77, 0x61, 0x73, + 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x64, 0x75, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6f, + 0x74, 0x68, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x77, 0x69, + 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, + 0x20, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0c, 0x04, 0x12, + 0x03, 0x69, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0c, 0x05, 0x12, 0x03, 0x69, + 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0c, 0x01, 0x12, 0x03, 0x69, 0x12, 0x2a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0c, 0x03, 0x12, 0x03, 0x69, 0x2d, 0x2f, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0c, 0x08, 0x12, 0x03, 0x69, 0x30, 0x5b, 0x0a, 0x0f, 0x0a, 0x08, + 0x04, 0x00, 0x02, 0x0c, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x69, 0x31, 0x5a, 0x0a, 0x36, 0x0a, + 0x04, 0x04, 0x00, 0x02, 0x0d, 0x12, 0x03, 0x6c, 0x02, 0x61, 0x1a, 0x29, 0x20, 0x55, 0x73, 0x65, + 0x72, 0x2d, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0d, 0x04, 0x12, 0x03, + 0x6c, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0d, 0x06, 0x12, 0x03, 0x6c, 0x0b, + 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0d, 0x01, 0x12, 0x03, 0x6c, 0x2a, 0x32, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0d, 0x03, 0x12, 0x03, 0x6c, 0x35, 0x37, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x0d, 0x08, 0x12, 0x03, 0x6c, 0x38, 0x60, 0x0a, 0x0f, 0x0a, 0x08, 0x04, + 0x00, 0x02, 0x0d, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x6c, 0x39, 0x5f, 0x0a, 0x58, 0x0a, 0x04, + 0x04, 0x00, 0x02, 0x0e, 0x12, 0x03, 0x6f, 0x02, 0x41, 0x1a, 0x4b, 0x20, 0x57, 0x68, 0x65, 0x74, + 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, + 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x73, 0x65, 0x74, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0e, 0x05, 0x12, + 0x03, 0x6f, 0x02, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0e, 0x01, 0x12, 0x03, 0x6f, + 0x07, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0e, 0x03, 0x12, 0x03, 0x6f, 0x15, 0x17, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0e, 0x08, 0x12, 0x03, 0x6f, 0x18, 0x40, 0x0a, 0x0f, + 0x0a, 0x08, 0x04, 0x00, 0x02, 0x0e, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x6f, 0x19, 0x3f, 0x0a, + 0xa5, 0x02, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x0f, 0x12, 0x03, 0x75, 0x02, 0x52, 0x1a, 0x97, 0x02, + 0x20, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, + 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x28, 0x6e, 0x75, 0x6d, 0x5f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x0a, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x70, + 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2c, 0x20, 0x6e, 0x75, 0x6d, + 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2c, + 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, + 0x73, 0x2c, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, + 0x73, 0x29, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x0a, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x20, 0x74, + 0x68, 0x6f, 0x73, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x73, 0x68, 0x6f, 0x75, + 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x2d, 0x2d, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x20, + 0x74, 0x6f, 0x0a, 0x20, 0x66, 0x65, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, + 0x61, 0x74, 0x65, 0x6c, 0x79, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0f, 0x05, + 0x12, 0x03, 0x75, 0x02, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0f, 0x01, 0x12, 0x03, + 0x75, 0x07, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0f, 0x03, 0x12, 0x03, 0x75, 0x23, + 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x0f, 0x08, 0x12, 0x03, 0x75, 0x26, 0x51, 0x0a, + 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x0f, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x75, 0x27, 0x50, + 0x0a, 0x83, 0x01, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x05, 0x79, 0x00, 0x8c, 0x01, 0x01, 0x1a, 0x76, + 0x20, 0x41, 0x20, 0x74, 0x6f, 0x70, 0x2d, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x20, 0x73, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x27, 0x73, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x73, 0x6f, 0x20, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x6e, 0x27, 0x74, 0x20, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x6e, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x73, 0x65, + 0x6c, 0x76, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x79, + 0x08, 0x16, 0x0a, 0x7b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x7b, 0x02, 0x40, 0x1a, + 0x6e, 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2e, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x65, 0x6c, 0x6c, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x20, 0x77, 0x68, 0x69, + 0x63, 0x68, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x79, 0x6f, 0x75, 0x27, 0x72, 0x65, + 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x7b, 0x02, 0x08, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x7b, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x7b, 0x15, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, + 0x00, 0x08, 0x12, 0x03, 0x7b, 0x17, 0x3f, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x01, 0x02, 0x00, 0x08, + 0x9c, 0x08, 0x00, 0x12, 0x03, 0x7b, 0x18, 0x3e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, + 0x12, 0x03, 0x7c, 0x02, 0x45, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, + 0x7c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x7c, 0x09, + 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x7c, 0x17, 0x18, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x08, 0x12, 0x03, 0x7c, 0x19, 0x44, 0x0a, 0x0f, 0x0a, + 0x08, 0x04, 0x01, 0x02, 0x01, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x7c, 0x1a, 0x43, 0x0a, 0x4b, + 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, 0x7f, 0x02, 0x49, 0x1a, 0x3e, 0x20, 0x48, 0x6f, + 0x77, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x27, 0x73, 0x20, 0x76, 0x61, 0x72, 0x69, + 0x6f, 0x75, 0x73, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x01, 0x02, 0x02, 0x05, 0x12, 0x03, 0x7f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, + 0x02, 0x01, 0x12, 0x03, 0x7f, 0x09, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, + 0x12, 0x03, 0x7f, 0x1b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x08, 0x12, 0x03, + 0x7f, 0x1d, 0x48, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x01, 0x02, 0x02, 0x08, 0x9c, 0x08, 0x00, 0x12, + 0x03, 0x7f, 0x1e, 0x47, 0x0a, 0x62, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x03, 0x12, 0x04, 0x82, 0x01, + 0x02, 0x4a, 0x1a, 0x54, 0x20, 0x48, 0x6f, 0x77, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x72, 0x75, + 0x6c, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x20, 0x77, 0x65, 0x72, 0x65, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, + 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x4e, 0x4f, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, + 0x05, 0x12, 0x04, 0x82, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x01, + 0x12, 0x04, 0x82, 0x01, 0x09, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x03, 0x12, + 0x04, 0x82, 0x01, 0x1c, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x08, 0x12, 0x04, + 0x82, 0x01, 0x1e, 0x49, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x01, 0x02, 0x03, 0x08, 0x9c, 0x08, 0x00, + 0x12, 0x04, 0x82, 0x01, 0x1f, 0x48, 0x0a, 0x51, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x04, 0x12, 0x04, + 0x85, 0x01, 0x02, 0x4c, 0x1a, 0x43, 0x20, 0x48, 0x6f, 0x77, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, + 0x72, 0x75, 0x6c, 0x65, 0x73, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x61, 0x72, 0x65, + 0x20, 0x41, 0x4c, 0x4c, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, + 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, + 0x04, 0x05, 0x12, 0x04, 0x85, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x04, + 0x01, 0x12, 0x04, 0x85, 0x01, 0x09, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x04, 0x03, + 0x12, 0x04, 0x85, 0x01, 0x1e, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x04, 0x08, 0x12, + 0x04, 0x85, 0x01, 0x20, 0x4b, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x01, 0x02, 0x04, 0x08, 0x9c, 0x08, + 0x00, 0x12, 0x04, 0x85, 0x01, 0x21, 0x4a, 0x0a, 0x4f, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x05, 0x12, + 0x04, 0x88, 0x01, 0x02, 0x4a, 0x1a, 0x41, 0x20, 0x48, 0x6f, 0x77, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x41, 0x4e, 0x59, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, - 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, - 0x05, 0x12, 0x03, 0x74, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x01, 0x12, - 0x03, 0x74, 0x09, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x03, 0x12, 0x03, 0x74, - 0x1c, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x08, 0x12, 0x03, 0x74, 0x1e, 0x49, - 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x01, 0x02, 0x05, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x74, 0x1f, - 0x48, 0x0a, 0x6e, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x06, 0x12, 0x03, 0x77, 0x02, 0x48, 0x1a, 0x61, - 0x20, 0x48, 0x6f, 0x77, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x20, - 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x20, 0x6f, 0x66, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x53, 0x4f, 0x4d, 0x45, 0x20, 0x61, - 0x72, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x6f, 0x70, 0x65, - 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4e, 0x4f, 0x4e, 0x45, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x05, 0x12, 0x03, 0x77, 0x02, 0x08, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x01, 0x12, 0x03, 0x77, 0x09, 0x17, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x01, 0x02, 0x06, 0x03, 0x12, 0x03, 0x77, 0x1a, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x01, 0x02, 0x06, 0x08, 0x12, 0x03, 0x77, 0x1c, 0x47, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x01, 0x02, - 0x06, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x77, 0x1d, 0x46, 0x0a, 0x9e, 0x02, 0x0a, 0x02, 0x04, - 0x02, 0x12, 0x05, 0x7d, 0x00, 0x81, 0x01, 0x01, 0x1a, 0x90, 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x61, - 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x60, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, - 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, - 0x60, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x20, 0x69, 0x73, - 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x61, - 0x6c, 0x6c, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x64, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x60, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x72, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x60, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x60, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x02, 0x01, 0x12, 0x03, 0x7d, 0x08, 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, - 0x03, 0x7e, 0x02, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x05, 0x12, 0x03, 0x7e, - 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x7e, 0x09, 0x14, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x7e, 0x17, 0x18, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x08, 0x12, 0x03, 0x7e, 0x19, 0x41, 0x0a, 0x0f, 0x0a, 0x08, - 0x04, 0x02, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, 0x7e, 0x1a, 0x40, 0x0a, 0x0b, 0x0a, - 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x7f, 0x02, 0x41, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, - 0x02, 0x01, 0x05, 0x12, 0x03, 0x7f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, - 0x01, 0x12, 0x03, 0x7f, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, - 0x03, 0x7f, 0x16, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x08, 0x12, 0x03, 0x7f, - 0x18, 0x40, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x02, 0x02, 0x01, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x03, - 0x7f, 0x19, 0x3f, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x02, 0x12, 0x04, 0x80, 0x01, 0x02, - 0x46, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x05, 0x12, 0x04, 0x80, 0x01, 0x02, 0x08, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x01, 0x12, 0x04, 0x80, 0x01, 0x09, 0x18, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x03, 0x12, 0x04, 0x80, 0x01, 0x1b, 0x1c, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x08, 0x12, 0x04, 0x80, 0x01, 0x1d, 0x45, 0x0a, 0x10, 0x0a, - 0x08, 0x04, 0x02, 0x02, 0x02, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x80, 0x01, 0x1e, 0x44, 0x0a, - 0x5f, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x06, 0x84, 0x01, 0x00, 0x86, 0x01, 0x01, 0x1a, 0x51, 0x20, + 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, + 0x05, 0x12, 0x04, 0x88, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x01, + 0x12, 0x04, 0x88, 0x01, 0x09, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x03, 0x12, + 0x04, 0x88, 0x01, 0x1c, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x08, 0x12, 0x04, + 0x88, 0x01, 0x1e, 0x49, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x01, 0x02, 0x05, 0x08, 0x9c, 0x08, 0x00, + 0x12, 0x04, 0x88, 0x01, 0x1f, 0x48, 0x0a, 0x6f, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x06, 0x12, 0x04, + 0x8b, 0x01, 0x02, 0x48, 0x1a, 0x61, 0x20, 0x48, 0x6f, 0x77, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, + 0x72, 0x75, 0x6c, 0x65, 0x73, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, + 0x53, 0x4f, 0x4d, 0x45, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, + 0x61, 0x73, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4e, 0x4f, 0x4e, 0x45, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x05, + 0x12, 0x04, 0x8b, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x01, 0x12, + 0x04, 0x8b, 0x01, 0x09, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x03, 0x12, 0x04, + 0x8b, 0x01, 0x1a, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x08, 0x12, 0x04, 0x8b, + 0x01, 0x1c, 0x47, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x01, 0x02, 0x06, 0x08, 0x9c, 0x08, 0x00, 0x12, + 0x04, 0x8b, 0x01, 0x1d, 0x46, 0x0a, 0x9f, 0x02, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x06, 0x91, 0x01, + 0x00, 0x9b, 0x01, 0x01, 0x1a, 0x90, 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, + 0x6f, 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x60, 0x20, + 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x60, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, + 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x2e, 0x0a, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x60, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, + 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, + 0x20, 0x69, 0x66, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x60, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x60, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, + 0x73, 0x65, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x04, + 0x91, 0x01, 0x08, 0x1a, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x04, 0x92, 0x01, + 0x02, 0x42, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x05, 0x12, 0x04, 0x92, 0x01, 0x02, + 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x04, 0x92, 0x01, 0x09, 0x14, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x04, 0x92, 0x01, 0x17, 0x18, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x08, 0x12, 0x04, 0x92, 0x01, 0x19, 0x41, 0x0a, 0x10, + 0x0a, 0x08, 0x04, 0x02, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x92, 0x01, 0x1a, 0x40, + 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x04, 0x93, 0x01, 0x02, 0x41, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, 0x12, 0x04, 0x93, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x04, 0x93, 0x01, 0x09, 0x13, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x04, 0x93, 0x01, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x02, 0x02, 0x01, 0x08, 0x12, 0x04, 0x93, 0x01, 0x18, 0x40, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x02, + 0x02, 0x01, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x93, 0x01, 0x19, 0x3f, 0x0a, 0x0c, 0x0a, 0x04, + 0x04, 0x02, 0x02, 0x02, 0x12, 0x04, 0x94, 0x01, 0x02, 0x46, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, + 0x02, 0x02, 0x05, 0x12, 0x04, 0x94, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, + 0x02, 0x01, 0x12, 0x04, 0x94, 0x01, 0x09, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, + 0x03, 0x12, 0x04, 0x94, 0x01, 0x1b, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x08, + 0x12, 0x04, 0x94, 0x01, 0x1d, 0x45, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x02, 0x02, 0x02, 0x08, 0x9c, + 0x08, 0x00, 0x12, 0x04, 0x94, 0x01, 0x1e, 0x44, 0x0a, 0xd0, 0x02, 0x0a, 0x04, 0x04, 0x02, 0x02, + 0x03, 0x12, 0x04, 0x9a, 0x01, 0x02, 0x4a, 0x1a, 0xc1, 0x02, 0x20, 0x49, 0x66, 0x20, 0x60, 0x74, + 0x72, 0x75, 0x65, 0x60, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6f, 0x6d, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, + 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x27, + 0x73, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x0a, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, + 0x65, 0x74, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, + 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x0a, 0x20, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x73, 0x74, 0x69, + 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x70, 0x6f, + 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x73, + 0x69, 0x67, 0x6e, 0x69, 0x66, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x69, 0x6d, 0x70, + 0x72, 0x6f, 0x76, 0x65, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x60, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x60, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x02, 0x02, 0x03, 0x05, 0x12, 0x04, 0x9a, 0x01, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, + 0x02, 0x03, 0x01, 0x12, 0x04, 0x9a, 0x01, 0x07, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, + 0x03, 0x03, 0x12, 0x04, 0x9a, 0x01, 0x1f, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x03, + 0x08, 0x12, 0x04, 0x9a, 0x01, 0x21, 0x49, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x02, 0x02, 0x03, 0x08, + 0x9c, 0x08, 0x00, 0x12, 0x04, 0x9a, 0x01, 0x22, 0x48, 0x0a, 0x5f, 0x0a, 0x02, 0x04, 0x03, 0x12, + 0x06, 0x9e, 0x01, 0x00, 0xa0, 0x01, 0x01, 0x1a, 0x51, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, + 0x20, 0x74, 0x6f, 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x47, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x60, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x03, + 0x01, 0x12, 0x04, 0x9e, 0x01, 0x08, 0x1b, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, + 0x04, 0x9f, 0x01, 0x02, 0x41, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x04, + 0x9f, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9f, + 0x01, 0x0b, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x04, 0x9f, 0x01, + 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x08, 0x12, 0x04, 0x9f, 0x01, 0x18, + 0x40, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x03, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x9f, + 0x01, 0x19, 0x3f, 0x0a, 0x5f, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x06, 0xa3, 0x01, 0x00, 0xb8, 0x01, + 0x01, 0x1a, 0x51, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, + 0x6f, 0x66, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x60, 0x20, 0x74, 0x6f, + 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x04, 0xa3, 0x01, 0x08, + 0x1d, 0x0a, 0x44, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x04, 0xa5, 0x01, 0x02, 0x3b, 0x1a, + 0x36, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, + 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x05, + 0x12, 0x04, 0xa5, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, + 0x04, 0xa5, 0x01, 0x09, 0x0d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x04, + 0xa5, 0x01, 0x10, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x08, 0x12, 0x04, 0xa5, + 0x01, 0x12, 0x3a, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x04, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, + 0x04, 0xa5, 0x01, 0x13, 0x39, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x01, 0x12, 0x04, 0xa8, + 0x01, 0x02, 0x4b, 0x1a, 0x27, 0x20, 0x41, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x20, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x04, 0x02, 0x01, 0x04, 0x12, 0x04, 0xa8, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x04, 0x02, 0x01, 0x05, 0x12, 0x04, 0xa8, 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, + 0x02, 0x01, 0x01, 0x12, 0x04, 0xa8, 0x01, 0x12, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, + 0x01, 0x03, 0x12, 0x04, 0xa8, 0x01, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, + 0x08, 0x12, 0x04, 0xa8, 0x01, 0x22, 0x4a, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x04, 0x02, 0x01, 0x08, + 0x9c, 0x08, 0x00, 0x12, 0x04, 0xa8, 0x01, 0x23, 0x49, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x04, 0x02, + 0x02, 0x12, 0x04, 0xab, 0x01, 0x02, 0x57, 0x1a, 0x28, 0x20, 0x54, 0x61, 0x67, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x62, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x06, 0x12, 0x04, 0xab, 0x01, 0x02, 0x24, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x04, 0xab, 0x01, 0x25, 0x29, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x03, 0x12, 0x04, 0xab, 0x01, 0x2c, 0x2d, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x08, 0x12, 0x04, 0xab, 0x01, 0x2e, 0x56, 0x0a, 0x10, 0x0a, + 0x08, 0x04, 0x04, 0x02, 0x02, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xab, 0x01, 0x2f, 0x55, 0x0a, + 0x61, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x03, 0x12, 0x04, 0xae, 0x01, 0x02, 0x46, 0x1a, 0x53, 0x20, + 0x60, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x60, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, + 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, 0x05, 0x12, 0x04, 0xae, 0x01, 0x02, + 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, 0x01, 0x12, 0x04, 0xae, 0x01, 0x09, 0x18, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, 0x03, 0x12, 0x04, 0xae, 0x01, 0x1b, 0x1c, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, 0x08, 0x12, 0x04, 0xae, 0x01, 0x1d, 0x45, 0x0a, 0x10, + 0x0a, 0x08, 0x04, 0x04, 0x02, 0x03, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xae, 0x01, 0x1e, 0x44, + 0x0a, 0x31, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x04, 0x12, 0x04, 0xb1, 0x01, 0x02, 0x4a, 0x1a, 0x23, + 0x20, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, + 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, 0x04, 0x12, 0x04, 0xb1, 0x01, + 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, 0x05, 0x12, 0x04, 0xb1, 0x01, 0x0b, + 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, 0x01, 0x12, 0x04, 0xb1, 0x01, 0x12, 0x1c, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, 0x03, 0x12, 0x04, 0xb1, 0x01, 0x1f, 0x20, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, 0x08, 0x12, 0x04, 0xb1, 0x01, 0x21, 0x49, 0x0a, 0x10, + 0x0a, 0x08, 0x04, 0x04, 0x02, 0x04, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xb1, 0x01, 0x22, 0x48, + 0x0a, 0x74, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x05, 0x12, 0x04, 0xb4, 0x01, 0x02, 0x4e, 0x1a, 0x66, + 0x20, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x65, 0x61, + 0x76, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, + 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, + 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, + 0x6c, 0x61, 0x74, 0x65, 0x72, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x05, 0x06, 0x12, + 0x04, 0xb4, 0x01, 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x05, 0x01, 0x12, 0x04, + 0xb4, 0x01, 0x15, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x05, 0x03, 0x12, 0x04, 0xb4, + 0x01, 0x23, 0x24, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x05, 0x08, 0x12, 0x04, 0xb4, 0x01, + 0x25, 0x4d, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x04, 0x02, 0x05, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, + 0xb4, 0x01, 0x26, 0x4c, 0x0a, 0x37, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x06, 0x12, 0x04, 0xb7, 0x01, + 0x02, 0x60, 0x1a, 0x29, 0x20, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, + 0x64, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x04, 0x02, 0x06, 0x04, 0x12, 0x04, 0xb7, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x04, 0x02, 0x06, 0x06, 0x12, 0x04, 0xb7, 0x01, 0x0b, 0x29, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x04, 0x02, 0x06, 0x01, 0x12, 0x04, 0xb7, 0x01, 0x2a, 0x32, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, + 0x02, 0x06, 0x03, 0x12, 0x04, 0xb7, 0x01, 0x35, 0x36, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, + 0x06, 0x08, 0x12, 0x04, 0xb7, 0x01, 0x37, 0x5f, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x04, 0x02, 0x06, + 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xb7, 0x01, 0x38, 0x5e, 0x0a, 0x46, 0x0a, 0x02, 0x04, 0x05, + 0x12, 0x06, 0xbb, 0x01, 0x00, 0xc6, 0x01, 0x01, 0x1a, 0x38, 0x20, 0x43, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x66, 0x65, 0x77, 0x20, 0x64, + 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x04, 0xbb, 0x01, 0x08, 0x1a, 0x0a, + 0x0e, 0x0a, 0x04, 0x04, 0x05, 0x08, 0x00, 0x12, 0x06, 0xbc, 0x01, 0x02, 0xc5, 0x01, 0x03, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x08, 0x00, 0x01, 0x12, 0x04, 0xbc, 0x01, 0x08, 0x13, 0x0a, 0x40, + 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x04, 0xbe, 0x01, 0x04, 0x38, 0x1a, 0x32, 0x20, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, + 0x20, 0x73, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x04, 0xbe, 0x01, 0x04, 0x2b, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x04, 0xbe, 0x01, 0x2c, 0x33, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x04, 0xbe, 0x01, 0x36, 0x37, 0x0a, 0x6a, 0x0a, + 0x04, 0x04, 0x05, 0x02, 0x01, 0x12, 0x04, 0xc1, 0x01, 0x04, 0x35, 0x1a, 0x5c, 0x20, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x75, + 0x6e, 0x73, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, + 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, + 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, + 0x6f, 0x73, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, + 0x01, 0x06, 0x12, 0x04, 0xc1, 0x01, 0x04, 0x2b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, + 0x01, 0x12, 0x04, 0xc1, 0x01, 0x2c, 0x30, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x03, + 0x12, 0x04, 0xc1, 0x01, 0x33, 0x34, 0x0a, 0x2a, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x02, 0x12, 0x04, + 0xc4, 0x01, 0x04, 0x3e, 0x1a, 0x1c, 0x20, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x20, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x06, 0x12, 0x04, 0xc4, 0x01, 0x04, + 0x2a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x01, 0x12, 0x04, 0xc4, 0x01, 0x2b, 0x39, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x03, 0x12, 0x04, 0xc4, 0x01, 0x3c, 0x3d, 0x0a, + 0x60, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x06, 0xc9, 0x01, 0x00, 0xcb, 0x01, 0x01, 0x1a, 0x52, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x47, 0x65, 0x74, 0x43, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x60, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x0a, - 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x04, 0x84, 0x01, 0x08, 0x1b, 0x0a, 0x0c, 0x0a, - 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x04, 0x85, 0x01, 0x02, 0x41, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x03, 0x02, 0x00, 0x06, 0x12, 0x04, 0x85, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, - 0x02, 0x00, 0x01, 0x12, 0x04, 0x85, 0x01, 0x0b, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, - 0x00, 0x03, 0x12, 0x04, 0x85, 0x01, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, - 0x08, 0x12, 0x04, 0x85, 0x01, 0x18, 0x40, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x03, 0x02, 0x00, 0x08, - 0x9c, 0x08, 0x00, 0x12, 0x04, 0x85, 0x01, 0x19, 0x3f, 0x0a, 0x5f, 0x0a, 0x02, 0x04, 0x04, 0x12, - 0x06, 0x89, 0x01, 0x00, 0x9e, 0x01, 0x01, 0x1a, 0x51, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, - 0x74, 0x6f, 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x60, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x04, - 0x01, 0x12, 0x04, 0x89, 0x01, 0x08, 0x1d, 0x0a, 0x44, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, - 0x04, 0x8b, 0x01, 0x02, 0x3b, 0x1a, 0x36, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x04, 0x02, 0x00, 0x05, 0x12, 0x04, 0x8b, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8b, 0x01, 0x09, 0x0d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x04, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8b, 0x01, 0x10, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, - 0x02, 0x00, 0x08, 0x12, 0x04, 0x8b, 0x01, 0x12, 0x3a, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x04, 0x02, - 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x8b, 0x01, 0x13, 0x39, 0x0a, 0x35, 0x0a, 0x04, 0x04, - 0x04, 0x02, 0x01, 0x12, 0x04, 0x8e, 0x01, 0x02, 0x4b, 0x1a, 0x27, 0x20, 0x41, 0x20, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x04, 0x12, 0x04, 0x8e, 0x01, 0x02, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x05, 0x12, 0x04, 0x8e, 0x01, 0x0b, 0x11, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x01, 0x12, 0x04, 0x8e, 0x01, 0x12, 0x1d, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x03, 0x12, 0x04, 0x8e, 0x01, 0x20, 0x21, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x08, 0x12, 0x04, 0x8e, 0x01, 0x22, 0x4a, 0x0a, 0x10, 0x0a, - 0x08, 0x04, 0x04, 0x02, 0x01, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x8e, 0x01, 0x23, 0x49, 0x0a, - 0x36, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x02, 0x12, 0x04, 0x91, 0x01, 0x02, 0x57, 0x1a, 0x28, 0x20, - 0x54, 0x61, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x06, - 0x12, 0x04, 0x91, 0x01, 0x02, 0x24, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, - 0x04, 0x91, 0x01, 0x25, 0x29, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x03, 0x12, 0x04, - 0x91, 0x01, 0x2c, 0x2d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x08, 0x12, 0x04, 0x91, - 0x01, 0x2e, 0x56, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x04, 0x02, 0x02, 0x08, 0x9c, 0x08, 0x00, 0x12, - 0x04, 0x91, 0x01, 0x2f, 0x55, 0x0a, 0x61, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x03, 0x12, 0x04, 0x94, - 0x01, 0x02, 0x46, 0x1a, 0x53, 0x20, 0x60, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x72, - 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, - 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, - 0x05, 0x12, 0x04, 0x94, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, 0x01, - 0x12, 0x04, 0x94, 0x01, 0x09, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, 0x03, 0x12, - 0x04, 0x94, 0x01, 0x1b, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, 0x08, 0x12, 0x04, - 0x94, 0x01, 0x1d, 0x45, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x04, 0x02, 0x03, 0x08, 0x9c, 0x08, 0x00, - 0x12, 0x04, 0x94, 0x01, 0x1e, 0x44, 0x0a, 0x31, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x04, 0x12, 0x04, - 0x97, 0x01, 0x02, 0x4a, 0x1a, 0x23, 0x20, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, - 0x04, 0x04, 0x12, 0x04, 0x97, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, - 0x05, 0x12, 0x04, 0x97, 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, 0x01, - 0x12, 0x04, 0x97, 0x01, 0x12, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, 0x03, 0x12, - 0x04, 0x97, 0x01, 0x1f, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, 0x08, 0x12, 0x04, - 0x97, 0x01, 0x21, 0x49, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x04, 0x02, 0x04, 0x08, 0x9c, 0x08, 0x00, - 0x12, 0x04, 0x97, 0x01, 0x22, 0x48, 0x0a, 0x74, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x05, 0x12, 0x04, - 0x9a, 0x01, 0x02, 0x4e, 0x1a, 0x66, 0x20, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2c, 0x20, - 0x6f, 0x72, 0x20, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x63, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x70, 0x6f, 0x70, 0x75, - 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x04, 0x02, 0x05, 0x06, 0x12, 0x04, 0x9a, 0x01, 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x04, 0x02, 0x05, 0x01, 0x12, 0x04, 0x9a, 0x01, 0x15, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, - 0x02, 0x05, 0x03, 0x12, 0x04, 0x9a, 0x01, 0x23, 0x24, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, - 0x05, 0x08, 0x12, 0x04, 0x9a, 0x01, 0x25, 0x4d, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x04, 0x02, 0x05, - 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x9a, 0x01, 0x26, 0x4c, 0x0a, 0x37, 0x0a, 0x04, 0x04, 0x04, - 0x02, 0x06, 0x12, 0x04, 0x9d, 0x01, 0x02, 0x60, 0x1a, 0x29, 0x20, 0x55, 0x73, 0x65, 0x72, 0x2d, - 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x06, 0x04, 0x12, 0x04, 0x9d, 0x01, - 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x06, 0x06, 0x12, 0x04, 0x9d, 0x01, 0x0b, - 0x29, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x06, 0x01, 0x12, 0x04, 0x9d, 0x01, 0x2a, 0x32, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x06, 0x03, 0x12, 0x04, 0x9d, 0x01, 0x35, 0x36, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x06, 0x08, 0x12, 0x04, 0x9d, 0x01, 0x37, 0x5f, 0x0a, 0x10, - 0x0a, 0x08, 0x04, 0x04, 0x02, 0x06, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x9d, 0x01, 0x38, 0x5e, - 0x0a, 0x46, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x06, 0xa1, 0x01, 0x00, 0xac, 0x01, 0x01, 0x1a, 0x38, - 0x20, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, - 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, - 0x20, 0x66, 0x65, 0x77, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, - 0x04, 0xa1, 0x01, 0x08, 0x1a, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x05, 0x08, 0x00, 0x12, 0x06, 0xa2, - 0x01, 0x02, 0xab, 0x01, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x08, 0x00, 0x01, 0x12, 0x04, - 0xa2, 0x01, 0x08, 0x13, 0x0a, 0x40, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x04, 0xa4, 0x01, - 0x04, 0x38, 0x1a, 0x32, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, - 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, - 0x04, 0xa4, 0x01, 0x04, 0x2b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x04, - 0xa4, 0x01, 0x2c, 0x33, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x04, 0xa4, - 0x01, 0x36, 0x37, 0x0a, 0x6a, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x01, 0x12, 0x04, 0xa7, 0x01, 0x04, - 0x35, 0x1a, 0x5c, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, - 0x20, 0x6f, 0x66, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x6f, 0x73, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x06, 0x12, 0x04, 0xa7, 0x01, 0x04, 0x2b, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, 0x12, 0x04, 0xa7, 0x01, 0x2c, 0x30, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x05, 0x02, 0x01, 0x03, 0x12, 0x04, 0xa7, 0x01, 0x33, 0x34, 0x0a, 0x2a, 0x0a, 0x04, - 0x04, 0x05, 0x02, 0x02, 0x12, 0x04, 0xaa, 0x01, 0x04, 0x3e, 0x1a, 0x1c, 0x20, 0x44, 0x75, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, - 0x06, 0x12, 0x04, 0xaa, 0x01, 0x04, 0x2a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x01, - 0x12, 0x04, 0xaa, 0x01, 0x2b, 0x39, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x03, 0x12, - 0x04, 0xaa, 0x01, 0x3c, 0x3d, 0x0a, 0x60, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x06, 0xaf, 0x01, 0x00, - 0xb1, 0x01, 0x01, 0x1a, 0x52, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, - 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x60, - 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x04, - 0xaf, 0x01, 0x08, 0x1e, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x04, 0xb0, 0x01, - 0x02, 0x41, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb0, 0x01, 0x02, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb0, 0x01, 0x0b, 0x13, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb0, 0x01, 0x16, 0x17, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x08, 0x12, 0x04, 0xb0, 0x01, 0x18, 0x40, 0x0a, 0x10, - 0x0a, 0x08, 0x04, 0x06, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xb0, 0x01, 0x19, 0x3f, - 0x0a, 0x60, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x06, 0xb4, 0x01, 0x00, 0xd3, 0x01, 0x01, 0x1a, 0x52, - 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x60, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, - 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x04, 0xb4, 0x01, 0x08, 0x1c, 0x0a, - 0xf2, 0x01, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x04, 0xb8, 0x01, 0x02, 0x40, 0x1a, 0xe3, - 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x73, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x66, 0x65, 0x77, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, - 0x68, 0x69, 0x73, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x75, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x61, 0x74, 0x20, 0x6d, - 0x6f, 0x73, 0x74, 0x20, 0x35, 0x30, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, - 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, - 0x64, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x31, 0x30, 0x30, 0x30, 0x3b, 0x20, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x0a, 0x20, 0x31, 0x30, 0x30, 0x30, - 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x31, 0x30, 0x30, 0x30, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x05, 0x12, 0x04, 0xb8, - 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb8, 0x01, - 0x09, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb8, 0x01, 0x15, - 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x08, 0x12, 0x04, 0xb8, 0x01, 0x17, 0x3f, - 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x07, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xb8, 0x01, - 0x18, 0x3e, 0x0a, 0xfc, 0x01, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x01, 0x12, 0x04, 0xbe, 0x01, 0x02, - 0x41, 0x1a, 0xed, 0x01, 0x20, 0x41, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2c, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, - 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x60, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x60, 0x20, 0x63, 0x61, 0x6c, 0x6c, - 0x2e, 0x0a, 0x20, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, - 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x2e, - 0x0a, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, - 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x60, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x73, 0x60, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x0a, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x05, 0x12, 0x04, 0xbe, 0x01, 0x02, 0x08, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x01, 0x12, 0x04, 0xbe, 0x01, 0x09, 0x13, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x03, 0x12, 0x04, 0xbe, 0x01, 0x16, 0x17, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x08, 0x12, 0x04, 0xbe, 0x01, 0x18, 0x40, 0x0a, 0x10, 0x0a, - 0x08, 0x04, 0x07, 0x02, 0x01, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xbe, 0x01, 0x19, 0x3f, 0x0a, - 0xba, 0x04, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x02, 0x12, 0x04, 0xc5, 0x01, 0x02, 0x3d, 0x1a, 0xab, - 0x04, 0x20, 0x41, 0x20, 0x5b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x20, - 0x28, 0x43, 0x45, 0x4c, 0x29, 0x5d, 0x28, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x63, 0x65, 0x6c, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x29, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x20, 0x41, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x62, 0x79, 0x20, 0x61, 0x72, 0x65, 0x3a, 0x0a, 0x20, 0x60, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x74, 0x61, 0x67, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, - 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, - 0x79, 0x60, 0x2c, 0x20, 0x60, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x60, 0x2c, 0x20, 0x60, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x6e, 0x61, - 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x64, 0x60, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x60, 0x2e, 0x0a, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, - 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, - 0x75, 0x74, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x43, 0x45, - 0x4c, 0x73, 0x2c, 0x20, 0x70, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x20, 0x74, 0x6f, 0x20, 0x5b, 0x74, 0x68, 0x69, 0x73, 0x20, 0x67, 0x75, 0x69, 0x64, 0x65, 0x5d, + 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x60, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, + 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x04, 0xc9, 0x01, 0x08, 0x1e, 0x0a, 0x0c, + 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x04, 0xca, 0x01, 0x02, 0x41, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x06, 0x02, 0x00, 0x06, 0x12, 0x04, 0xca, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x06, 0x02, 0x00, 0x01, 0x12, 0x04, 0xca, 0x01, 0x0b, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, + 0x02, 0x00, 0x03, 0x12, 0x04, 0xca, 0x01, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, + 0x00, 0x08, 0x12, 0x04, 0xca, 0x01, 0x18, 0x40, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x06, 0x02, 0x00, + 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xca, 0x01, 0x19, 0x3f, 0x0a, 0x60, 0x0a, 0x02, 0x04, 0x07, + 0x12, 0x06, 0xce, 0x01, 0x00, 0xf3, 0x01, 0x01, 0x1a, 0x52, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, + 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x60, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, + 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, + 0x04, 0x07, 0x01, 0x12, 0x04, 0xce, 0x01, 0x08, 0x1c, 0x0a, 0xf2, 0x01, 0x0a, 0x04, 0x04, 0x07, + 0x02, 0x00, 0x12, 0x04, 0xd2, 0x01, 0x02, 0x40, 0x1a, 0xe3, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, + 0x66, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x65, + 0x77, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x61, 0x74, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x35, 0x30, + 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, + 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, + 0x73, 0x20, 0x31, 0x30, 0x30, 0x30, 0x3b, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x61, + 0x62, 0x6f, 0x76, 0x65, 0x0a, 0x20, 0x31, 0x30, 0x30, 0x30, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, + 0x62, 0x65, 0x20, 0x63, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x30, + 0x30, 0x30, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x05, 0x12, 0x04, 0xd2, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x04, 0xd2, 0x01, 0x09, 0x12, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x04, 0xd2, 0x01, 0x15, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x07, 0x02, 0x00, 0x08, 0x12, 0x04, 0xd2, 0x01, 0x17, 0x3f, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x07, + 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xd2, 0x01, 0x18, 0x3e, 0x0a, 0xfc, 0x01, 0x0a, + 0x04, 0x04, 0x07, 0x02, 0x01, 0x12, 0x04, 0xd8, 0x01, 0x02, 0x41, 0x1a, 0xed, 0x01, 0x20, 0x41, + 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2c, 0x20, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, + 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x60, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x73, 0x60, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x2e, 0x0a, 0x20, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x2e, 0x0a, 0x20, 0x57, 0x68, 0x65, 0x6e, + 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, + 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x60, 0x20, 0x6d, 0x75, + 0x73, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, + 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, + 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x07, 0x02, 0x01, 0x05, 0x12, 0x04, 0xd8, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, + 0x02, 0x01, 0x01, 0x12, 0x04, 0xd8, 0x01, 0x09, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, + 0x01, 0x03, 0x12, 0x04, 0xd8, 0x01, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, + 0x08, 0x12, 0x04, 0xd8, 0x01, 0x18, 0x40, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x07, 0x02, 0x01, 0x08, + 0x9c, 0x08, 0x00, 0x12, 0x04, 0xd8, 0x01, 0x19, 0x3f, 0x0a, 0xba, 0x04, 0x0a, 0x04, 0x04, 0x07, + 0x02, 0x02, 0x12, 0x04, 0xdf, 0x01, 0x02, 0x3d, 0x1a, 0xab, 0x04, 0x20, 0x41, 0x20, 0x5b, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x20, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x20, 0x28, 0x43, 0x45, 0x4c, 0x29, 0x5d, 0x28, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x65, 0x6c, 0x2d, 0x73, - 0x70, 0x65, 0x63, 0x2f, 0x62, 0x6c, 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2f, - 0x64, 0x6f, 0x63, 0x2f, 0x6c, 0x61, 0x6e, 0x67, 0x64, 0x65, 0x66, 0x2e, 0x6d, 0x64, 0x23, 0x73, - 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x2d, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x29, 0x2e, 0x0a, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, - 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, - 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x75, 0x73, 0x65, - 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2c, - 0x20, 0x70, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6f, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x07, 0x02, 0x02, 0x05, 0x12, 0x04, 0xc5, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x07, 0x02, 0x02, 0x01, 0x12, 0x04, 0xc5, 0x01, 0x09, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, - 0x02, 0x02, 0x03, 0x12, 0x04, 0xc5, 0x01, 0x12, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, - 0x02, 0x08, 0x12, 0x04, 0xc5, 0x01, 0x14, 0x3c, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x07, 0x02, 0x02, - 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xc5, 0x01, 0x15, 0x3b, 0x0a, 0x5b, 0x0a, 0x04, 0x04, 0x07, - 0x02, 0x03, 0x12, 0x04, 0xc8, 0x01, 0x02, 0x46, 0x1a, 0x4d, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x75, - 0x73, 0x65, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6d, - 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x05, - 0x12, 0x04, 0xc8, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x01, 0x12, - 0x04, 0xc8, 0x01, 0x09, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x03, 0x12, 0x04, - 0xc8, 0x01, 0x1b, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x08, 0x12, 0x04, 0xc8, - 0x01, 0x1d, 0x45, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x07, 0x02, 0x03, 0x08, 0x9c, 0x08, 0x00, 0x12, - 0x04, 0xc8, 0x01, 0x1e, 0x44, 0x0a, 0x65, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x04, 0x12, 0x04, 0xcb, - 0x01, 0x02, 0x45, 0x1a, 0x57, 0x20, 0x49, 0x66, 0x20, 0x60, 0x74, 0x72, 0x75, 0x65, 0x60, 0x20, - 0x74, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x20, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, + 0x70, 0x65, 0x63, 0x29, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x2e, 0x0a, 0x20, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, + 0x62, 0x79, 0x20, 0x61, 0x72, 0x65, 0x3a, 0x0a, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, + 0x74, 0x61, 0x67, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x60, + 0x2c, 0x20, 0x60, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, + 0x20, 0x60, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, + 0x60, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x60, 0x2c, 0x20, 0x60, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x60, 0x2c, 0x20, 0x60, 0x72, 0x75, + 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, + 0x69, 0x73, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x60, 0x2c, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x60, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x60, 0x2e, 0x0a, 0x20, 0x46, + 0x6f, 0x72, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x68, 0x6f, 0x77, + 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x43, 0x45, 0x4c, 0x73, 0x2c, 0x20, 0x70, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x5b, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x67, 0x75, 0x69, 0x64, 0x65, 0x5d, 0x28, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x65, 0x6c, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x62, 0x6c, + 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x64, 0x6f, 0x63, 0x2f, 0x6c, 0x61, + 0x6e, 0x67, 0x64, 0x65, 0x66, 0x2e, 0x6d, 0x64, 0x23, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, + 0x64, 0x2d, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x29, 0x2e, 0x0a, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x70, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, 0x05, 0x12, + 0x04, 0xdf, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, 0x01, 0x12, 0x04, + 0xdf, 0x01, 0x09, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, 0x03, 0x12, 0x04, 0xdf, + 0x01, 0x12, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, 0x08, 0x12, 0x04, 0xdf, 0x01, + 0x14, 0x3c, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x07, 0x02, 0x02, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, + 0xdf, 0x01, 0x15, 0x3b, 0x0a, 0x5b, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x03, 0x12, 0x04, 0xe2, 0x01, + 0x02, 0x46, 0x1a, 0x4d, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, + 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, + 0x20, 0x69, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x62, 0x65, + 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x05, 0x12, 0x04, 0xe2, 0x01, 0x02, 0x08, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x01, 0x12, 0x04, 0xe2, 0x01, 0x09, 0x18, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x03, 0x12, 0x04, 0xe2, 0x01, 0x1b, 0x1c, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, 0x08, 0x12, 0x04, 0xe2, 0x01, 0x1d, 0x45, 0x0a, 0x10, 0x0a, + 0x08, 0x04, 0x07, 0x02, 0x03, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xe2, 0x01, 0x1e, 0x44, 0x0a, + 0x65, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x04, 0x12, 0x04, 0xe5, 0x01, 0x02, 0x45, 0x1a, 0x57, 0x20, + 0x49, 0x66, 0x20, 0x60, 0x74, 0x72, 0x75, 0x65, 0x60, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x66, 0x61, + 0x6c, 0x73, 0x65, 0x60, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x04, 0x05, 0x12, + 0x04, 0xe5, 0x01, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x04, 0x01, 0x12, 0x04, + 0xe5, 0x01, 0x07, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x04, 0x03, 0x12, 0x04, 0xe5, + 0x01, 0x1a, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x04, 0x08, 0x12, 0x04, 0xe5, 0x01, + 0x1c, 0x44, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x07, 0x02, 0x04, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, + 0xe5, 0x01, 0x1d, 0x43, 0x0a, 0xb3, 0x03, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x05, 0x12, 0x04, 0xec, + 0x01, 0x02, 0x3f, 0x1a, 0xa4, 0x03, 0x20, 0x48, 0x6f, 0x77, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, + 0x64, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x2e, 0x20, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x2d, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x20, 0x69, 0x2e, 0x65, 0x2e, 0x20, 0x22, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, + 0x41, 0x4d, 0x45, 0x5b, 0x20, 0x64, 0x65, 0x73, 0x63, 0x5d, 0x2c, 0x2e, 0x2e, 0x2e, 0x22, 0x2e, + 0x0a, 0x20, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x20, 0x61, + 0x72, 0x65, 0x20, 0x60, 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x6d, + 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, 0x2e, 0x0a, 0x20, + 0x49, 0x66, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2c, 0x20, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, + 0x20, 0x62, 0x79, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x60, 0x20, 0x69, 0x6e, 0x20, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x28, 0x6e, 0x65, 0x77, 0x65, 0x73, 0x74, 0x2d, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x29, 0x2e, 0x0a, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, + 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, + 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2c, 0x20, 0x72, 0x65, 0x61, + 0x64, 0x20, 0x5b, 0x74, 0x68, 0x69, 0x73, 0x5d, 0x28, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x69, 0x70, 0x2e, 0x64, 0x65, 0x76, 0x2f, + 0x31, 0x33, 0x32, 0x23, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x29, 0x0a, 0x20, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3a, 0x20, 0x22, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x64, 0x61, 0x74, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, 0x2c, 0x6d, 0x6f, 0x64, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x22, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, + 0x02, 0x05, 0x05, 0x12, 0x04, 0xec, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, + 0x05, 0x01, 0x12, 0x04, 0xec, 0x01, 0x09, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x05, + 0x03, 0x12, 0x04, 0xec, 0x01, 0x14, 0x15, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x05, 0x08, + 0x12, 0x04, 0xec, 0x01, 0x16, 0x3e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x07, 0x02, 0x05, 0x08, 0x9c, + 0x08, 0x00, 0x12, 0x04, 0xec, 0x01, 0x17, 0x3d, 0x0a, 0xd1, 0x02, 0x0a, 0x04, 0x04, 0x07, 0x02, + 0x06, 0x12, 0x04, 0xf2, 0x01, 0x02, 0x4a, 0x1a, 0xc2, 0x02, 0x20, 0x49, 0x66, 0x20, 0x60, 0x74, + 0x72, 0x75, 0x65, 0x60, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6f, 0x6d, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, + 0x6f, 0x6e, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x27, 0x73, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x0a, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x73, 0x65, 0x74, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x20, 0x74, 0x6f, + 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x0a, + 0x20, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x73, 0x74, + 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x70, + 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, + 0x73, 0x69, 0x67, 0x6e, 0x69, 0x66, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x69, 0x6d, + 0x70, 0x72, 0x6f, 0x76, 0x65, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x60, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x07, 0x02, 0x04, 0x05, 0x12, 0x04, 0xcb, 0x01, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x07, 0x02, 0x04, 0x01, 0x12, 0x04, 0xcb, 0x01, 0x07, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, - 0x02, 0x04, 0x03, 0x12, 0x04, 0xcb, 0x01, 0x1a, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, - 0x04, 0x08, 0x12, 0x04, 0xcb, 0x01, 0x1c, 0x44, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x07, 0x02, 0x04, - 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xcb, 0x01, 0x1d, 0x43, 0x0a, 0xb3, 0x03, 0x0a, 0x04, 0x04, - 0x07, 0x02, 0x05, 0x12, 0x04, 0xd2, 0x01, 0x02, 0x3f, 0x1a, 0xa4, 0x03, 0x20, 0x48, 0x6f, 0x77, - 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, - 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x73, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, - 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x2d, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x2e, 0x65, 0x2e, 0x20, 0x22, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5b, 0x20, 0x64, 0x65, 0x73, 0x63, 0x5d, - 0x2c, 0x2e, 0x2e, 0x2e, 0x22, 0x2e, 0x0a, 0x20, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x62, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x60, 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, - 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x60, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x61, - 0x74, 0x65, 0x60, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x65, 0x6d, - 0x70, 0x74, 0x79, 0x2c, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, 0x20, 0x69, 0x6e, 0x20, 0x64, 0x65, 0x73, 0x63, - 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x28, 0x6e, 0x65, - 0x77, 0x65, 0x73, 0x74, 0x2d, 0x66, 0x69, 0x72, 0x73, 0x74, 0x29, 0x2e, 0x0a, 0x20, 0x46, 0x6f, - 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x2c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x5b, 0x74, 0x68, 0x69, 0x73, 0x5d, 0x28, 0x68, - 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x69, - 0x70, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x31, 0x33, 0x32, 0x23, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x29, 0x0a, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3a, 0x20, 0x22, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, - 0x2c, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x22, 0x0a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x05, 0x05, 0x12, 0x04, 0xd2, 0x01, 0x02, 0x08, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x05, 0x01, 0x12, 0x04, 0xd2, 0x01, 0x09, 0x11, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x07, 0x02, 0x05, 0x03, 0x12, 0x04, 0xd2, 0x01, 0x14, 0x15, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x07, 0x02, 0x05, 0x08, 0x12, 0x04, 0xd2, 0x01, 0x16, 0x3e, 0x0a, 0x10, 0x0a, 0x08, - 0x04, 0x07, 0x02, 0x05, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xd2, 0x01, 0x17, 0x3d, 0x0a, 0x52, - 0x0a, 0x02, 0x04, 0x08, 0x12, 0x06, 0xd6, 0x01, 0x00, 0xd9, 0x01, 0x01, 0x1a, 0x44, 0x20, 0x54, - 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, - 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x60, - 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, 0x04, 0xd6, 0x01, 0x08, 0x1d, 0x0a, - 0x0c, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, 0x04, 0xd7, 0x01, 0x02, 0x22, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x08, 0x02, 0x00, 0x04, 0x12, 0x04, 0xd7, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x08, 0x02, 0x00, 0x06, 0x12, 0x04, 0xd7, 0x01, 0x0b, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x08, 0x02, 0x00, 0x01, 0x12, 0x04, 0xd7, 0x01, 0x14, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, - 0x02, 0x00, 0x03, 0x12, 0x04, 0xd7, 0x01, 0x20, 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x08, 0x02, - 0x01, 0x12, 0x04, 0xd8, 0x01, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x05, - 0x12, 0x04, 0xd8, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x01, 0x12, - 0x04, 0xd8, 0x01, 0x09, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x03, 0x12, 0x04, - 0xd8, 0x01, 0x1b, 0x1c, 0x0a, 0xfc, 0x02, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x06, 0xde, 0x01, 0x00, - 0xe4, 0x01, 0x01, 0x1a, 0xed, 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x6f, - 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x60, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x2e, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x74, 0x61, 0x67, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x72, - 0x75, 0x6c, 0x65, 0x73, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x61, 0x20, - 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2e, 0x20, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x2c, 0x20, 0x77, 0x68, 0x65, 0x6e, - 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2c, - 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x20, 0x49, - 0x44, 0x20, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x20, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x20, 0x6b, 0x65, 0x79, 0x0a, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, - 0x20, 0x6f, 0x6b, 0x61, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x20, 0x62, 0x6f, 0x74, 0x68, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x72, - 0x75, 0x6c, 0x65, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x6f, 0x6e, 0x6c, - 0x79, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x75, - 0x6c, 0x65, 0x20, 0x49, 0x44, 0x73, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x77, 0x69, 0x6c, - 0x6c, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x09, 0x01, 0x12, 0x04, 0xde, 0x01, 0x08, 0x1d, - 0x0a, 0x27, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x04, 0xe0, 0x01, 0x02, 0x41, 0x1a, 0x19, - 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x74, 0x6f, - 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, - 0x00, 0x06, 0x12, 0x04, 0xe0, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, - 0x01, 0x12, 0x04, 0xe0, 0x01, 0x0b, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, - 0x12, 0x04, 0xe0, 0x01, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x08, 0x12, - 0x04, 0xe0, 0x01, 0x18, 0x40, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x09, 0x02, 0x00, 0x08, 0x9c, 0x08, - 0x00, 0x12, 0x04, 0xe0, 0x01, 0x19, 0x3f, 0x0a, 0xb3, 0x01, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x01, - 0x12, 0x04, 0xe3, 0x01, 0x02, 0x55, 0x1a, 0xa4, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, - 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, - 0x62, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, - 0x72, 0x65, 0x20, 0x60, 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x69, 0x73, 0x5f, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x60, 0x2c, 0x20, 0x60, 0x74, 0x61, 0x67, 0x73, 0x60, - 0x2c, 0x20, 0x60, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x60, 0x2c, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x60, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x60, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x09, 0x02, 0x01, 0x06, 0x12, 0x04, 0xe3, 0x01, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x09, 0x02, 0x01, 0x01, 0x12, 0x04, 0xe3, 0x01, 0x1c, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x09, 0x02, 0x01, 0x03, 0x12, 0x04, 0xe3, 0x01, 0x2a, 0x2b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, - 0x02, 0x01, 0x08, 0x12, 0x04, 0xe3, 0x01, 0x2c, 0x54, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x09, 0x02, - 0x01, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xe3, 0x01, 0x2d, 0x53, 0x0a, 0x4b, 0x0a, 0x02, 0x04, - 0x0a, 0x12, 0x06, 0xe7, 0x01, 0x00, 0xe9, 0x01, 0x01, 0x1a, 0x3d, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x63, 0x61, - 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x60, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, - 0x04, 0xe7, 0x01, 0x08, 0x1e, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, 0x12, 0x04, 0xe8, - 0x01, 0x02, 0x41, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x06, 0x12, 0x04, 0xe8, 0x01, - 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x04, 0xe8, 0x01, 0x0b, - 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x04, 0xe8, 0x01, 0x16, 0x17, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x08, 0x12, 0x04, 0xe8, 0x01, 0x18, 0x40, 0x0a, - 0x10, 0x0a, 0x08, 0x04, 0x0a, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xe8, 0x01, 0x19, - 0x3f, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x0b, 0x12, 0x06, 0xeb, 0x01, 0x00, 0x87, 0x02, 0x01, 0x0a, - 0x0b, 0x0a, 0x03, 0x04, 0x0b, 0x01, 0x12, 0x04, 0xeb, 0x01, 0x08, 0x26, 0x0a, 0x0c, 0x0a, 0x04, - 0x04, 0x0b, 0x02, 0x00, 0x12, 0x04, 0xec, 0x01, 0x02, 0x42, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, - 0x02, 0x00, 0x05, 0x12, 0x04, 0xec, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, - 0x00, 0x01, 0x12, 0x04, 0xec, 0x01, 0x09, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, - 0x03, 0x12, 0x04, 0xec, 0x01, 0x17, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x08, - 0x12, 0x04, 0xec, 0x01, 0x19, 0x41, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x0b, 0x02, 0x00, 0x08, 0x9c, - 0x08, 0x00, 0x12, 0x04, 0xec, 0x01, 0x1a, 0x40, 0x0a, 0xf6, 0x01, 0x0a, 0x04, 0x04, 0x0b, 0x02, - 0x01, 0x12, 0x04, 0xf1, 0x01, 0x02, 0x40, 0x1a, 0xe7, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, - 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, - 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x6f, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, - 0x65, 0x77, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x61, 0x74, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x35, - 0x30, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x20, 0x69, 0x73, 0x20, 0x31, 0x30, 0x30, 0x30, 0x3b, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x20, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x0a, 0x20, 0x31, 0x30, 0x30, 0x30, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x64, 0x20, 0x74, 0x6f, - 0x20, 0x31, 0x30, 0x30, 0x30, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x05, 0x12, 0x04, 0xf1, 0x01, 0x02, 0x08, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x01, 0x12, 0x04, 0xf1, 0x01, 0x09, 0x12, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x12, 0x04, 0xf1, 0x01, 0x15, 0x16, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x08, 0x12, 0x04, 0xf1, 0x01, 0x17, 0x3f, 0x0a, 0x10, 0x0a, - 0x08, 0x04, 0x0b, 0x02, 0x01, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xf1, 0x01, 0x18, 0x3e, 0x0a, - 0x80, 0x02, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x02, 0x12, 0x04, 0xf7, 0x01, 0x02, 0x41, 0x1a, 0xf1, - 0x01, 0x20, 0x41, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2c, 0x20, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, - 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x60, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x60, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x2e, - 0x0a, 0x20, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, - 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, - 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x2e, 0x0a, - 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, - 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, - 0x74, 0x6f, 0x20, 0x60, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x60, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x0a, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x65, - 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x05, 0x12, 0x04, 0xf7, 0x01, 0x02, - 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x01, 0x12, 0x04, 0xf7, 0x01, 0x09, 0x13, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x03, 0x12, 0x04, 0xf7, 0x01, 0x16, 0x17, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x08, 0x12, 0x04, 0xf7, 0x01, 0x18, 0x40, 0x0a, 0x10, - 0x0a, 0x08, 0x04, 0x0b, 0x02, 0x02, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xf7, 0x01, 0x19, 0x3f, - 0x0a, 0xf0, 0x05, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x03, 0x12, 0x04, 0xff, 0x01, 0x02, 0x3d, 0x1a, - 0xe1, 0x05, 0x20, 0x41, 0x20, 0x5b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x20, 0x28, 0x43, 0x45, 0x4c, 0x29, 0x5d, 0x28, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x63, 0x65, 0x6c, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x29, 0x20, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x20, 0x41, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x62, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x60, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x65, 0x6e, - 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x60, 0x2c, 0x0a, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x6d, 0x6f, 0x64, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x72, 0x75, 0x6e, 0x5f, - 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x60, 0x2c, 0x20, 0x60, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x60, 0x2c, 0x0a, 0x20, 0x60, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x60, 0x2c, 0x20, 0x60, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, - 0x60, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x70, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x60, 0x2c, 0x20, 0x60, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x60, 0x2c, - 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x60, 0x2e, - 0x0a, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, 0x20, 0x69, 0x6e, + 0x04, 0x07, 0x02, 0x06, 0x05, 0x12, 0x04, 0xf2, 0x01, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x07, 0x02, 0x06, 0x01, 0x12, 0x04, 0xf2, 0x01, 0x07, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, + 0x02, 0x06, 0x03, 0x12, 0x04, 0xf2, 0x01, 0x1f, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, + 0x06, 0x08, 0x12, 0x04, 0xf2, 0x01, 0x21, 0x49, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x07, 0x02, 0x06, + 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xf2, 0x01, 0x22, 0x48, 0x0a, 0x52, 0x0a, 0x02, 0x04, 0x08, + 0x12, 0x06, 0xf6, 0x01, 0x00, 0xf9, 0x01, 0x01, 0x1a, 0x44, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, + 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x60, 0x2e, 0x0a, 0x0a, 0x0b, + 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, 0x04, 0xf6, 0x01, 0x08, 0x1d, 0x0a, 0x0c, 0x0a, 0x04, 0x04, + 0x08, 0x02, 0x00, 0x12, 0x04, 0xf7, 0x01, 0x02, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, + 0x00, 0x04, 0x12, 0x04, 0xf7, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, + 0x06, 0x12, 0x04, 0xf7, 0x01, 0x0b, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, + 0x12, 0x04, 0xf7, 0x01, 0x14, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, + 0x04, 0xf7, 0x01, 0x20, 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x01, 0x12, 0x04, 0xf8, + 0x01, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x05, 0x12, 0x04, 0xf8, 0x01, + 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x01, 0x12, 0x04, 0xf8, 0x01, 0x09, + 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x03, 0x12, 0x04, 0xf8, 0x01, 0x1b, 0x1c, + 0x0a, 0xfc, 0x02, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x06, 0xfe, 0x01, 0x00, 0x84, 0x02, 0x01, 0x1a, + 0xed, 0x02, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x60, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x60, 0x20, 0x74, 0x6f, + 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x2e, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x69, 0x6e, + 0x67, 0x0a, 0x20, 0x74, 0x61, 0x67, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, + 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x77, 0x69, 0x6c, + 0x6c, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6c, 0x6c, + 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2e, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x2c, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2c, 0x20, 0x6f, 0x6e, 0x6c, + 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x20, 0x49, 0x44, 0x20, 0x6f, 0x72, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x20, 0x6b, 0x65, 0x79, 0x0a, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x64, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x6b, 0x61, + 0x79, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x62, 0x6f, 0x74, + 0x68, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x74, + 0x68, 0x65, 0x72, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x20, 0x49, + 0x44, 0x73, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, + 0x0b, 0x0a, 0x03, 0x04, 0x09, 0x01, 0x12, 0x04, 0xfe, 0x01, 0x08, 0x1d, 0x0a, 0x27, 0x0a, 0x04, + 0x04, 0x09, 0x02, 0x00, 0x12, 0x04, 0x80, 0x02, 0x02, 0x41, 0x1a, 0x19, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x04, + 0x80, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x04, 0x80, + 0x02, 0x0b, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x04, 0x80, 0x02, + 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x08, 0x12, 0x04, 0x80, 0x02, 0x18, + 0x40, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x09, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x80, + 0x02, 0x19, 0x3f, 0x0a, 0xb3, 0x01, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x01, 0x12, 0x04, 0x83, 0x02, + 0x02, 0x55, 0x1a, 0xa4, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, + 0x66, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, + 0x62, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x65, 0x20, 0x60, + 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, + 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x60, 0x2c, 0x20, 0x60, 0x74, 0x61, 0x67, 0x73, 0x60, 0x2c, 0x20, 0x60, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x60, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x60, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, + 0x01, 0x06, 0x12, 0x04, 0x83, 0x02, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, + 0x01, 0x12, 0x04, 0x83, 0x02, 0x1c, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x03, + 0x12, 0x04, 0x83, 0x02, 0x2a, 0x2b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x08, 0x12, + 0x04, 0x83, 0x02, 0x2c, 0x54, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x09, 0x02, 0x01, 0x08, 0x9c, 0x08, + 0x00, 0x12, 0x04, 0x83, 0x02, 0x2d, 0x53, 0x0a, 0x4b, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x06, 0x87, + 0x02, 0x00, 0x89, 0x02, 0x01, 0x1a, 0x3d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, + 0x6f, 0x20, 0x60, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x60, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x04, 0x87, 0x02, 0x08, + 0x1e, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, 0x12, 0x04, 0x88, 0x02, 0x02, 0x41, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x06, 0x12, 0x04, 0x88, 0x02, 0x02, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x04, 0x88, 0x02, 0x0b, 0x13, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x04, 0x88, 0x02, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0a, 0x02, 0x00, 0x08, 0x12, 0x04, 0x88, 0x02, 0x18, 0x40, 0x0a, 0x10, 0x0a, 0x08, 0x04, + 0x0a, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x88, 0x02, 0x19, 0x3f, 0x0a, 0x0c, 0x0a, + 0x02, 0x04, 0x0b, 0x12, 0x06, 0x8b, 0x02, 0x00, 0xa7, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, + 0x0b, 0x01, 0x12, 0x04, 0x8b, 0x02, 0x08, 0x26, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, + 0x12, 0x04, 0x8c, 0x02, 0x02, 0x42, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x05, 0x12, + 0x04, 0x8c, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x01, 0x12, 0x04, + 0x8c, 0x02, 0x09, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8c, + 0x02, 0x17, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x08, 0x12, 0x04, 0x8c, 0x02, + 0x19, 0x41, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x0b, 0x02, 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, + 0x8c, 0x02, 0x1a, 0x40, 0x0a, 0xf6, 0x01, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x01, 0x12, 0x04, 0x91, + 0x02, 0x02, 0x40, 0x1a, 0xe7, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, + 0x75, 0x6d, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, + 0x6d, 0x61, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x65, 0x77, 0x65, 0x72, + 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x2c, 0x20, 0x61, 0x74, 0x20, 0x6d, 0x6f, 0x73, 0x74, 0x20, 0x35, 0x30, 0x20, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, + 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x31, 0x30, 0x30, 0x30, 0x3b, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x61, 0x62, + 0x6f, 0x76, 0x65, 0x0a, 0x20, 0x31, 0x30, 0x30, 0x30, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, + 0x65, 0x20, 0x63, 0x6f, 0x65, 0x72, 0x63, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x30, 0x30, + 0x30, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0b, 0x02, 0x01, 0x05, 0x12, 0x04, 0x91, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0b, 0x02, 0x01, 0x01, 0x12, 0x04, 0x91, 0x02, 0x09, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x0b, 0x02, 0x01, 0x03, 0x12, 0x04, 0x91, 0x02, 0x15, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, + 0x02, 0x01, 0x08, 0x12, 0x04, 0x91, 0x02, 0x17, 0x3f, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x0b, 0x02, + 0x01, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x91, 0x02, 0x18, 0x3e, 0x0a, 0x80, 0x02, 0x0a, 0x04, + 0x04, 0x0b, 0x02, 0x02, 0x12, 0x04, 0x97, 0x02, 0x02, 0x41, 0x1a, 0xf1, 0x01, 0x20, 0x41, 0x20, + 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2c, 0x20, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x76, + 0x69, 0x6f, 0x75, 0x73, 0x20, 0x60, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x60, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x2e, 0x0a, 0x20, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x2e, 0x0a, 0x20, 0x57, 0x68, 0x65, + 0x6e, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, + 0x6c, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x60, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x60, + 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x0a, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x05, 0x12, 0x04, 0x97, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0b, 0x02, 0x02, 0x01, 0x12, 0x04, 0x97, 0x02, 0x09, 0x13, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0b, 0x02, 0x02, 0x03, 0x12, 0x04, 0x97, 0x02, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x0b, 0x02, 0x02, 0x08, 0x12, 0x04, 0x97, 0x02, 0x18, 0x40, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x0b, + 0x02, 0x02, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x97, 0x02, 0x19, 0x3f, 0x0a, 0xf0, 0x05, 0x0a, + 0x04, 0x04, 0x0b, 0x02, 0x03, 0x12, 0x04, 0x9f, 0x02, 0x02, 0x3d, 0x1a, 0xe1, 0x05, 0x20, 0x41, + 0x20, 0x5b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x20, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x20, 0x28, 0x43, 0x45, + 0x4c, 0x29, 0x5d, 0x28, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x65, + 0x6c, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x29, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x20, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x20, 0x62, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x60, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x60, 0x2c, 0x0a, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, + 0x61, 0x74, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, + 0x64, 0x61, 0x74, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x2c, + 0x20, 0x60, 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x60, 0x2c, 0x20, 0x60, 0x73, 0x74, 0x61, 0x74, 0x65, 0x60, 0x2c, + 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x62, 0x79, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x0a, 0x20, + 0x60, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x60, 0x2c, 0x20, 0x60, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x60, 0x2c, 0x20, 0x60, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x60, 0x2c, + 0x20, 0x60, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x60, 0x2c, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x60, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x60, 0x2e, 0x0a, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x68, 0x6f, 0x77, 0x20, + 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x43, 0x45, 0x4c, 0x73, 0x2c, 0x20, 0x70, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x5b, 0x74, 0x68, + 0x69, 0x73, 0x20, 0x67, 0x75, 0x69, 0x64, 0x65, 0x5d, 0x28, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x65, 0x6c, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x62, 0x6c, 0x6f, + 0x62, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x64, 0x6f, 0x63, 0x2f, 0x6c, 0x61, 0x6e, + 0x67, 0x64, 0x65, 0x66, 0x2e, 0x6d, 0x64, 0x23, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, + 0x2d, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x29, 0x2e, 0x0a, 0x20, + 0x46, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x70, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x5b, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x28, 0x2f, 0x64, 0x6f, 0x63, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x23, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x29, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x05, 0x12, 0x04, 0x9f, 0x02, 0x02, 0x08, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x01, 0x12, 0x04, 0x9f, 0x02, 0x09, 0x0f, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0b, 0x02, 0x03, 0x03, 0x12, 0x04, 0x9f, 0x02, 0x12, 0x13, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0b, 0x02, 0x03, 0x08, 0x12, 0x04, 0x9f, 0x02, 0x14, 0x3c, 0x0a, 0x10, 0x0a, 0x08, 0x04, + 0x0b, 0x02, 0x03, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0x9f, 0x02, 0x15, 0x3b, 0x0a, 0xc7, 0x03, + 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x04, 0x12, 0x04, 0xa6, 0x02, 0x02, 0x3f, 0x1a, 0xb8, 0x03, 0x20, + 0x48, 0x6f, 0x77, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, + 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x2d, 0x73, 0x65, 0x70, + 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x2e, + 0x65, 0x2e, 0x20, 0x22, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5b, 0x20, + 0x64, 0x65, 0x73, 0x63, 0x5d, 0x2c, 0x2e, 0x2e, 0x2e, 0x22, 0x2e, 0x0a, 0x20, 0x41, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x74, 0x6f, + 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x60, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, 0x2c, 0x20, 0x60, 0x6d, + 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, 0x2c, 0x20, 0x60, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x60, 0x2c, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x60, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x60, 0x2e, 0x0a, 0x20, 0x49, 0x66, + 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2c, 0x20, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x20, 0x62, + 0x79, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, + 0x20, 0x69, 0x6e, 0x20, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x20, 0x28, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x2d, 0x66, 0x69, 0x72, 0x73, + 0x74, 0x29, 0x2e, 0x0a, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, - 0x68, 0x6f, 0x77, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x43, 0x45, 0x4c, 0x73, 0x2c, - 0x20, 0x70, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6f, - 0x20, 0x5b, 0x74, 0x68, 0x69, 0x73, 0x20, 0x67, 0x75, 0x69, 0x64, 0x65, 0x5d, 0x28, 0x68, 0x74, - 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x65, 0x6c, 0x2d, 0x73, 0x70, 0x65, 0x63, - 0x2f, 0x62, 0x6c, 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x64, 0x6f, 0x63, - 0x2f, 0x6c, 0x61, 0x6e, 0x67, 0x64, 0x65, 0x66, 0x2e, 0x6d, 0x64, 0x23, 0x73, 0x74, 0x61, 0x6e, - 0x64, 0x61, 0x72, 0x64, 0x2d, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x29, 0x2e, 0x0a, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x69, 0x6e, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x70, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x5b, 0x74, - 0x68, 0x69, 0x73, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x28, - 0x2f, 0x64, 0x6f, 0x63, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2f, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x23, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x2e, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x05, 0x12, 0x04, 0xff, 0x01, - 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x01, 0x12, 0x04, 0xff, 0x01, 0x09, - 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x03, 0x12, 0x04, 0xff, 0x01, 0x12, 0x13, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x03, 0x08, 0x12, 0x04, 0xff, 0x01, 0x14, 0x3c, 0x0a, - 0x10, 0x0a, 0x08, 0x04, 0x0b, 0x02, 0x03, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xff, 0x01, 0x15, - 0x3b, 0x0a, 0xc7, 0x03, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x04, 0x12, 0x04, 0x86, 0x02, 0x02, 0x3f, - 0x1a, 0xb8, 0x03, 0x20, 0x48, 0x6f, 0x77, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x64, 0x20, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x2d, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x20, 0x69, 0x2e, 0x65, 0x2e, 0x20, 0x22, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x41, - 0x4d, 0x45, 0x5b, 0x20, 0x64, 0x65, 0x73, 0x63, 0x5d, 0x2c, 0x2e, 0x2e, 0x2e, 0x22, 0x2e, 0x0a, - 0x20, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x20, 0x61, 0x72, - 0x65, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x60, - 0x2c, 0x20, 0x60, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x60, 0x2c, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x60, 0x2c, - 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x60, 0x2e, - 0x0a, 0x20, 0x49, 0x66, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2c, - 0x20, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, - 0x61, 0x74, 0x65, 0x60, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x28, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x2d, - 0x66, 0x69, 0x72, 0x73, 0x74, 0x29, 0x2e, 0x0a, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, - 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, - 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x6f, - 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2c, 0x20, 0x72, 0x65, - 0x61, 0x64, 0x20, 0x5b, 0x74, 0x68, 0x69, 0x73, 0x5d, 0x28, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, - 0x2f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x69, 0x70, 0x2e, 0x64, 0x65, 0x76, - 0x2f, 0x31, 0x33, 0x32, 0x23, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x29, 0x0a, 0x20, - 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3a, 0x20, 0x22, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, 0x2c, 0x6d, 0x6f, 0x64, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x22, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x0b, 0x02, 0x04, 0x05, 0x12, 0x04, 0x86, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, - 0x02, 0x04, 0x01, 0x12, 0x04, 0x86, 0x02, 0x09, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, - 0x04, 0x03, 0x12, 0x04, 0x86, 0x02, 0x14, 0x15, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x04, - 0x08, 0x12, 0x04, 0x86, 0x02, 0x16, 0x3e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x0b, 0x02, 0x04, 0x08, - 0x9c, 0x08, 0x00, 0x12, 0x04, 0x86, 0x02, 0x17, 0x3d, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x0c, 0x12, - 0x06, 0x89, 0x02, 0x00, 0x8c, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0c, 0x01, 0x12, 0x04, - 0x89, 0x02, 0x08, 0x27, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x00, 0x12, 0x04, 0x8a, 0x02, - 0x02, 0x3a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x04, 0x12, 0x04, 0x8a, 0x02, 0x02, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x06, 0x12, 0x04, 0x8a, 0x02, 0x0b, 0x29, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8a, 0x02, 0x2a, 0x35, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8a, 0x02, 0x38, 0x39, 0x0a, 0x0c, - 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x01, 0x12, 0x04, 0x8b, 0x02, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x0c, 0x02, 0x01, 0x05, 0x12, 0x04, 0x8b, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x0c, 0x02, 0x01, 0x01, 0x12, 0x04, 0x8b, 0x02, 0x09, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, - 0x02, 0x01, 0x03, 0x12, 0x04, 0x8b, 0x02, 0x1b, 0x1c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x69, 0x73, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x5b, + 0x74, 0x68, 0x69, 0x73, 0x5d, 0x28, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x69, 0x70, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x31, 0x33, 0x32, + 0x23, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x29, 0x0a, 0x20, 0x45, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x3a, 0x20, 0x22, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, 0x2c, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x5f, 0x64, 0x61, 0x74, 0x65, 0x22, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x04, 0x05, + 0x12, 0x04, 0xa6, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x04, 0x01, 0x12, + 0x04, 0xa6, 0x02, 0x09, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x04, 0x03, 0x12, 0x04, + 0xa6, 0x02, 0x14, 0x15, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x04, 0x08, 0x12, 0x04, 0xa6, + 0x02, 0x16, 0x3e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x0b, 0x02, 0x04, 0x08, 0x9c, 0x08, 0x00, 0x12, + 0x04, 0xa6, 0x02, 0x17, 0x3d, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x0c, 0x12, 0x06, 0xa9, 0x02, 0x00, + 0xac, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0c, 0x01, 0x12, 0x04, 0xa9, 0x02, 0x08, 0x27, + 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x00, 0x12, 0x04, 0xaa, 0x02, 0x02, 0x3a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x04, 0x12, 0x04, 0xaa, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0c, 0x02, 0x00, 0x06, 0x12, 0x04, 0xaa, 0x02, 0x0b, 0x29, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0c, 0x02, 0x00, 0x01, 0x12, 0x04, 0xaa, 0x02, 0x2a, 0x35, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x0c, 0x02, 0x00, 0x03, 0x12, 0x04, 0xaa, 0x02, 0x38, 0x39, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0c, + 0x02, 0x01, 0x12, 0x04, 0xab, 0x02, 0x02, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, + 0x05, 0x12, 0x04, 0xab, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x01, + 0x12, 0x04, 0xab, 0x02, 0x09, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x03, 0x12, + 0x04, 0xab, 0x02, 0x1b, 0x1c, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x0d, 0x12, 0x06, 0xae, 0x02, 0x00, + 0xb2, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0d, 0x01, 0x12, 0x04, 0xae, 0x02, 0x08, 0x29, + 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x00, 0x12, 0x04, 0xaf, 0x02, 0x02, 0x4c, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x04, 0x12, 0x04, 0xaf, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0d, 0x02, 0x00, 0x05, 0x12, 0x04, 0xaf, 0x02, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, 0x04, 0xaf, 0x02, 0x12, 0x1e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x0d, 0x02, 0x00, 0x03, 0x12, 0x04, 0xaf, 0x02, 0x21, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, + 0x02, 0x00, 0x08, 0x12, 0x04, 0xaf, 0x02, 0x23, 0x4b, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x0d, 0x02, + 0x00, 0x08, 0x9c, 0x08, 0x00, 0x12, 0x04, 0xaf, 0x02, 0x24, 0x4a, 0x0a, 0x5b, 0x0a, 0x04, 0x04, + 0x0d, 0x02, 0x01, 0x12, 0x04, 0xb1, 0x02, 0x02, 0x46, 0x1a, 0x4d, 0x20, 0x54, 0x68, 0x69, 0x73, + 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, + 0x75, 0x73, 0x65, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x20, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, + 0x05, 0x12, 0x04, 0xb1, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x01, + 0x12, 0x04, 0xb1, 0x02, 0x09, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x03, 0x12, + 0x04, 0xb1, 0x02, 0x1b, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x08, 0x12, 0x04, + 0xb1, 0x02, 0x1d, 0x45, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x0d, 0x02, 0x01, 0x08, 0x9c, 0x08, 0x00, + 0x12, 0x04, 0xb1, 0x02, 0x1e, 0x44, 0x0a, 0x7d, 0x0a, 0x02, 0x04, 0x0e, 0x12, 0x06, 0xb5, 0x02, + 0x00, 0xb7, 0x02, 0x01, 0x1a, 0x6f, 0x20, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x43, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, + 0x69, 0x6e, 0x20, 0x6d, 0x61, 0x70, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x28, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x20, 0x6d, 0x61, 0x70, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x29, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0e, 0x01, 0x12, 0x04, 0xb5, 0x02, + 0x08, 0x17, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x00, 0x12, 0x04, 0xb6, 0x02, 0x02, 0x26, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x04, 0x12, 0x04, 0xb6, 0x02, 0x02, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb6, 0x02, 0x0b, 0x19, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb6, 0x02, 0x1a, 0x21, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0e, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb6, 0x02, 0x24, 0x25, 0x0a, 0x0c, 0x0a, 0x02, + 0x04, 0x0f, 0x12, 0x06, 0xb9, 0x02, 0x00, 0xbd, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0f, + 0x01, 0x12, 0x04, 0xb9, 0x02, 0x08, 0x2a, 0x0a, 0x9c, 0x01, 0x0a, 0x04, 0x04, 0x0f, 0x02, 0x00, + 0x12, 0x04, 0xbc, 0x02, 0x02, 0x3c, 0x1a, 0x8d, 0x01, 0x20, 0x4b, 0x65, 0x79, 0x65, 0x64, 0x20, + 0x62, 0x79, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x2e, 0x20, + 0x45, 0x61, 0x63, 0x68, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x6c, 0x69, 0x73, + 0x74, 0x20, 0x6f, 0x66, 0x20, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x0a, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x20, 0x28, 0x6e, 0x75, 0x6d, 0x5f, 0x2a, 0x29, 0x20, 0x70, 0x6f, 0x70, 0x75, 0x6c, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x06, 0x12, + 0x04, 0xbc, 0x02, 0x02, 0x1e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x01, 0x12, 0x04, + 0xbc, 0x02, 0x1f, 0x37, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x03, 0x12, 0x04, 0xbc, + 0x02, 0x3a, 0x3b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("sift.campaigns.v1.tonic.rs"); include!("sift.campaigns.v1.serde.rs"); diff --git a/rust/crates/sift_rs/src/gen/sift.campaigns.v1.serde.rs b/rust/crates/sift_rs/src/gen/sift.campaigns.v1.serde.rs index bad5b0c62..aa186fa68 100644 --- a/rust/crates/sift_rs/src/gen/sift.campaigns.v1.serde.rs +++ b/rust/crates/sift_rs/src/gen/sift.campaigns.v1.serde.rs @@ -52,6 +52,9 @@ impl serde::Serialize for Campaign { if self.is_archived { len += 1; } + if self.reports_include_summaries { + len += 1; + } let mut struct_ser = serializer.serialize_struct("sift.campaigns.v1.Campaign", len)?; if !self.campaign_id.is_empty() { struct_ser.serialize_field("campaignId", &self.campaign_id)?; @@ -98,6 +101,9 @@ impl serde::Serialize for Campaign { if self.is_archived { struct_ser.serialize_field("isArchived", &self.is_archived)?; } + if self.reports_include_summaries { + struct_ser.serialize_field("reportsIncludeSummaries", &self.reports_include_summaries)?; + } struct_ser.end() } } @@ -133,6 +139,8 @@ impl<'de> serde::Deserialize<'de> for Campaign { "metadata", "is_archived", "isArchived", + "reports_include_summaries", + "reportsIncludeSummaries", ]; #[allow(clippy::enum_variant_names)] @@ -152,6 +160,7 @@ impl<'de> serde::Deserialize<'de> for Campaign { CreatedFromCampaignId, Metadata, IsArchived, + ReportsIncludeSummaries, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -188,6 +197,7 @@ impl<'de> serde::Deserialize<'de> for Campaign { "createdFromCampaignId" | "created_from_campaign_id" => Ok(GeneratedField::CreatedFromCampaignId), "metadata" => Ok(GeneratedField::Metadata), "isArchived" | "is_archived" => Ok(GeneratedField::IsArchived), + "reportsIncludeSummaries" | "reports_include_summaries" => Ok(GeneratedField::ReportsIncludeSummaries), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -222,6 +232,7 @@ impl<'de> serde::Deserialize<'de> for Campaign { let mut created_from_campaign_id__ = None; let mut metadata__ = None; let mut is_archived__ = None; + let mut reports_include_summaries__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::CampaignId => { @@ -314,6 +325,12 @@ impl<'de> serde::Deserialize<'de> for Campaign { } is_archived__ = Some(map_.next_value()?); } + GeneratedField::ReportsIncludeSummaries => { + if reports_include_summaries__.is_some() { + return Err(serde::de::Error::duplicate_field("reportsIncludeSummaries")); + } + reports_include_summaries__ = Some(map_.next_value()?); + } } } Ok(Campaign { @@ -332,6 +349,7 @@ impl<'de> serde::Deserialize<'de> for Campaign { created_from_campaign_id: created_from_campaign_id__, metadata: metadata__.unwrap_or_default(), is_archived: is_archived__.unwrap_or_default(), + reports_include_summaries: reports_include_summaries__.unwrap_or_default(), }) } } @@ -548,6 +566,97 @@ impl<'de> serde::Deserialize<'de> for CampaignReport { deserializer.deserialize_struct("sift.campaigns.v1.CampaignReport", FIELDS, GeneratedVisitor) } } +impl serde::Serialize for CampaignReports { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.reports.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("sift.campaigns.v1.CampaignReports", len)?; + if !self.reports.is_empty() { + struct_ser.serialize_field("reports", &self.reports)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for CampaignReports { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "reports", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Reports, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "reports" => Ok(GeneratedField::Reports), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = CampaignReports; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct sift.campaigns.v1.CampaignReports") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut reports__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Reports => { + if reports__.is_some() { + return Err(serde::de::Error::duplicate_field("reports")); + } + reports__ = Some(map_.next_value()?); + } + } + } + Ok(CampaignReports { + reports: reports__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("sift.campaigns.v1.CampaignReports", FIELDS, GeneratedVisitor) + } +} impl serde::Serialize for CreateCampaignFrom { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result @@ -958,6 +1067,210 @@ impl<'de> serde::Deserialize<'de> for CreateCampaignResponse { deserializer.deserialize_struct("sift.campaigns.v1.CreateCampaignResponse", FIELDS, GeneratedVisitor) } } +impl serde::Serialize for GetCampaignReportSummariesRequest { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.campaign_ids.is_empty() { + len += 1; + } + if !self.organization_id.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("sift.campaigns.v1.GetCampaignReportSummariesRequest", len)?; + if !self.campaign_ids.is_empty() { + struct_ser.serialize_field("campaignIds", &self.campaign_ids)?; + } + if !self.organization_id.is_empty() { + struct_ser.serialize_field("organizationId", &self.organization_id)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for GetCampaignReportSummariesRequest { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "campaign_ids", + "campaignIds", + "organization_id", + "organizationId", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + CampaignIds, + OrganizationId, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "campaignIds" | "campaign_ids" => Ok(GeneratedField::CampaignIds), + "organizationId" | "organization_id" => Ok(GeneratedField::OrganizationId), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GetCampaignReportSummariesRequest; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct sift.campaigns.v1.GetCampaignReportSummariesRequest") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut campaign_ids__ = None; + let mut organization_id__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::CampaignIds => { + if campaign_ids__.is_some() { + return Err(serde::de::Error::duplicate_field("campaignIds")); + } + campaign_ids__ = Some(map_.next_value()?); + } + GeneratedField::OrganizationId => { + if organization_id__.is_some() { + return Err(serde::de::Error::duplicate_field("organizationId")); + } + organization_id__ = Some(map_.next_value()?); + } + } + } + Ok(GetCampaignReportSummariesRequest { + campaign_ids: campaign_ids__.unwrap_or_default(), + organization_id: organization_id__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("sift.campaigns.v1.GetCampaignReportSummariesRequest", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for GetCampaignReportSummariesResponse { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.summaries_by_campaign_id.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("sift.campaigns.v1.GetCampaignReportSummariesResponse", len)?; + if !self.summaries_by_campaign_id.is_empty() { + struct_ser.serialize_field("summariesByCampaignId", &self.summaries_by_campaign_id)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for GetCampaignReportSummariesResponse { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "summaries_by_campaign_id", + "summariesByCampaignId", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + SummariesByCampaignId, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "summariesByCampaignId" | "summaries_by_campaign_id" => Ok(GeneratedField::SummariesByCampaignId), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GetCampaignReportSummariesResponse; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct sift.campaigns.v1.GetCampaignReportSummariesResponse") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut summaries_by_campaign_id__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::SummariesByCampaignId => { + if summaries_by_campaign_id__.is_some() { + return Err(serde::de::Error::duplicate_field("summariesByCampaignId")); + } + summaries_by_campaign_id__ = Some( + map_.next_value::>()? + ); + } + } + } + Ok(GetCampaignReportSummariesResponse { + summaries_by_campaign_id: summaries_by_campaign_id__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("sift.campaigns.v1.GetCampaignReportSummariesResponse", FIELDS, GeneratedVisitor) + } +} impl serde::Serialize for GetCampaignRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result @@ -975,6 +1288,9 @@ impl serde::Serialize for GetCampaignRequest { if !self.organization_id.is_empty() { len += 1; } + if self.skip_report_summaries { + len += 1; + } let mut struct_ser = serializer.serialize_struct("sift.campaigns.v1.GetCampaignRequest", len)?; if !self.campaign_id.is_empty() { struct_ser.serialize_field("campaignId", &self.campaign_id)?; @@ -985,6 +1301,9 @@ impl serde::Serialize for GetCampaignRequest { if !self.organization_id.is_empty() { struct_ser.serialize_field("organizationId", &self.organization_id)?; } + if self.skip_report_summaries { + struct_ser.serialize_field("skipReportSummaries", &self.skip_report_summaries)?; + } struct_ser.end() } } @@ -1001,6 +1320,8 @@ impl<'de> serde::Deserialize<'de> for GetCampaignRequest { "clientKey", "organization_id", "organizationId", + "skip_report_summaries", + "skipReportSummaries", ]; #[allow(clippy::enum_variant_names)] @@ -1008,6 +1329,7 @@ impl<'de> serde::Deserialize<'de> for GetCampaignRequest { CampaignId, ClientKey, OrganizationId, + SkipReportSummaries, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -1032,6 +1354,7 @@ impl<'de> serde::Deserialize<'de> for GetCampaignRequest { "campaignId" | "campaign_id" => Ok(GeneratedField::CampaignId), "clientKey" | "client_key" => Ok(GeneratedField::ClientKey), "organizationId" | "organization_id" => Ok(GeneratedField::OrganizationId), + "skipReportSummaries" | "skip_report_summaries" => Ok(GeneratedField::SkipReportSummaries), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -1054,6 +1377,7 @@ impl<'de> serde::Deserialize<'de> for GetCampaignRequest { let mut campaign_id__ = None; let mut client_key__ = None; let mut organization_id__ = None; + let mut skip_report_summaries__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::CampaignId => { @@ -1074,12 +1398,19 @@ impl<'de> serde::Deserialize<'de> for GetCampaignRequest { } organization_id__ = Some(map_.next_value()?); } + GeneratedField::SkipReportSummaries => { + if skip_report_summaries__.is_some() { + return Err(serde::de::Error::duplicate_field("skipReportSummaries")); + } + skip_report_summaries__ = Some(map_.next_value()?); + } } } Ok(GetCampaignRequest { campaign_id: campaign_id__.unwrap_or_default(), client_key: client_key__.unwrap_or_default(), organization_id: organization_id__.unwrap_or_default(), + skip_report_summaries: skip_report_summaries__.unwrap_or_default(), }) } } @@ -1477,6 +1808,9 @@ impl serde::Serialize for ListCampaignsRequest { if !self.order_by.is_empty() { len += 1; } + if self.skip_report_summaries { + len += 1; + } let mut struct_ser = serializer.serialize_struct("sift.campaigns.v1.ListCampaignsRequest", len)?; if self.page_size != 0 { struct_ser.serialize_field("pageSize", &self.page_size)?; @@ -1496,6 +1830,9 @@ impl serde::Serialize for ListCampaignsRequest { if !self.order_by.is_empty() { struct_ser.serialize_field("orderBy", &self.order_by)?; } + if self.skip_report_summaries { + struct_ser.serialize_field("skipReportSummaries", &self.skip_report_summaries)?; + } struct_ser.end() } } @@ -1517,6 +1854,8 @@ impl<'de> serde::Deserialize<'de> for ListCampaignsRequest { "includeArchived", "order_by", "orderBy", + "skip_report_summaries", + "skipReportSummaries", ]; #[allow(clippy::enum_variant_names)] @@ -1527,6 +1866,7 @@ impl<'de> serde::Deserialize<'de> for ListCampaignsRequest { OrganizationId, IncludeArchived, OrderBy, + SkipReportSummaries, } impl<'de> serde::Deserialize<'de> for GeneratedField { fn deserialize(deserializer: D) -> std::result::Result @@ -1554,6 +1894,7 @@ impl<'de> serde::Deserialize<'de> for ListCampaignsRequest { "organizationId" | "organization_id" => Ok(GeneratedField::OrganizationId), "includeArchived" | "include_archived" => Ok(GeneratedField::IncludeArchived), "orderBy" | "order_by" => Ok(GeneratedField::OrderBy), + "skipReportSummaries" | "skip_report_summaries" => Ok(GeneratedField::SkipReportSummaries), _ => Err(serde::de::Error::unknown_field(value, FIELDS)), } } @@ -1579,6 +1920,7 @@ impl<'de> serde::Deserialize<'de> for ListCampaignsRequest { let mut organization_id__ = None; let mut include_archived__ = None; let mut order_by__ = None; + let mut skip_report_summaries__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::PageSize => { @@ -1619,6 +1961,12 @@ impl<'de> serde::Deserialize<'de> for ListCampaignsRequest { } order_by__ = Some(map_.next_value()?); } + GeneratedField::SkipReportSummaries => { + if skip_report_summaries__.is_some() { + return Err(serde::de::Error::duplicate_field("skipReportSummaries")); + } + skip_report_summaries__ = Some(map_.next_value()?); + } } } Ok(ListCampaignsRequest { @@ -1628,6 +1976,7 @@ impl<'de> serde::Deserialize<'de> for ListCampaignsRequest { organization_id: organization_id__.unwrap_or_default(), include_archived: include_archived__.unwrap_or_default(), order_by: order_by__.unwrap_or_default(), + skip_report_summaries: skip_report_summaries__.unwrap_or_default(), }) } } diff --git a/rust/crates/sift_rs/src/gen/sift.campaigns.v1.tonic.rs b/rust/crates/sift_rs/src/gen/sift.campaigns.v1.tonic.rs index 8e982eb1a..351fba8e8 100644 --- a/rust/crates/sift_rs/src/gen/sift.campaigns.v1.tonic.rs +++ b/rust/crates/sift_rs/src/gen/sift.campaigns.v1.tonic.rs @@ -228,6 +228,36 @@ pub mod campaign_service_client { ); self.inner.unary(req, path, codec).await } + pub async fn get_campaign_report_summaries( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/sift.campaigns.v1.CampaignService/GetCampaignReportSummaries", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "sift.campaigns.v1.CampaignService", + "GetCampaignReportSummaries", + ), + ); + self.inner.unary(req, path, codec).await + } } } /// Generated server implementations. @@ -272,6 +302,13 @@ pub mod campaign_service_server { tonic::Response, tonic::Status, >; + async fn get_campaign_report_summaries( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; } #[derive(Debug)] pub struct CampaignServiceServer { @@ -591,6 +628,59 @@ pub mod campaign_service_server { }; Box::pin(fut) } + "/sift.campaigns.v1.CampaignService/GetCampaignReportSummaries" => { + #[allow(non_camel_case_types)] + struct GetCampaignReportSummariesSvc(pub Arc); + impl< + T: CampaignService, + > tonic::server::UnaryService< + super::GetCampaignReportSummariesRequest, + > for GetCampaignReportSummariesSvc { + type Response = super::GetCampaignReportSummariesResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request< + super::GetCampaignReportSummariesRequest, + >, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::get_campaign_report_summaries( + &inner, + request, + ) + .await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let inner = inner.0; + let method = GetCampaignReportSummariesSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } _ => { Box::pin(async move { Ok(