From f8c8703595236ae70fdf8789ecb656ea0bcdcf46 Mon Sep 17 00:00:00 2001 From: Michael Darakananda <pongad@google.com> Date: Fri, 16 Mar 2018 17:48:09 +1100 Subject: [PATCH] update from googleapis (#56) googleapis: b12480746ea88ceb84bbdd1df336deef831dd9bb --- .../api/servicemanagement/v1/resources.pb.go | 185 +- .../servicemanagement/v1/servicemanager.pb.go | 181 +- .../cloud/speech/v1p1beta1/cloud_speech.pb.go | 345 +- .../texttospeech/v1beta1/cloud_tts.pb.go | 122 +- .../v1p1beta1/video_intelligence.pb.go | 1551 +++ googleapis/devtools/cloudtrace/v1/trace.pb.go | 2 + googleapis/privacy/dlp/v2/dlp.pb.go | 9624 +++++++++++++++++ googleapis/privacy/dlp/v2/storage.pb.go | 1614 +++ 8 files changed, 13285 insertions(+), 339 deletions(-) create mode 100644 googleapis/cloud/videointelligence/v1p1beta1/video_intelligence.pb.go create mode 100644 googleapis/privacy/dlp/v2/dlp.pb.go create mode 100644 googleapis/privacy/dlp/v2/storage.pb.go diff --git a/googleapis/api/servicemanagement/v1/resources.pb.go b/googleapis/api/servicemanagement/v1/resources.pb.go index 94906476..8b303764 100644 --- a/googleapis/api/servicemanagement/v1/resources.pb.go +++ b/googleapis/api/servicemanagement/v1/resources.pb.go @@ -46,6 +46,7 @@ import fmt "fmt" import math "math" import _ "google.golang.org/genproto/googleapis/api/annotations" import google_api2 "google.golang.org/genproto/googleapis/api/configchange" +import _ "google.golang.org/genproto/googleapis/api/metric" import _ "google.golang.org/genproto/googleapis/api/serviceconfig" import _ "google.golang.org/genproto/googleapis/longrunning" import _ "github.com/golang/protobuf/ptypes/any" @@ -65,21 +66,22 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package -// Code describes the status of one operation step. +// Code describes the status of the operation (or one of its steps). type OperationMetadata_Status int32 const ( // Unspecifed code. OperationMetadata_STATUS_UNSPECIFIED OperationMetadata_Status = 0 - // The step has completed without errors. + // The operation or step has completed without errors. OperationMetadata_DONE OperationMetadata_Status = 1 - // The step has not started yet. + // The operation or step has not started yet. OperationMetadata_NOT_STARTED OperationMetadata_Status = 2 - // The step is in progress. + // The operation or step is in progress. OperationMetadata_IN_PROGRESS OperationMetadata_Status = 3 - // The step has completed with errors. + // The operation or step has completed with errors. If the operation is + // rollbackable, the rollback completed with errors too. OperationMetadata_FAILED OperationMetadata_Status = 4 - // The step has completed with cancellation. + // The operation or step has completed with cancellation. OperationMetadata_CANCELLED OperationMetadata_Status = 5 ) @@ -148,6 +150,12 @@ const ( // // $protoc --include_imports --include_source_info test.proto -o out.pb ConfigFile_FILE_DESCRIPTOR_SET_PROTO ConfigFile_FileType = 4 + // Uncompiled Proto file. Used for storage and display purposes only, + // currently server-side compilation is not supported. Should match the + // inputs to 'protoc' command used to generated FILE_DESCRIPTOR_SET_PROTO. A + // file of this type can only be included if at least one file of type + // FILE_DESCRIPTOR_SET_PROTO is included. + ConfigFile_PROTO_FILE ConfigFile_FileType = 6 ) var ConfigFile_FileType_name = map[int32]string{ @@ -156,6 +164,7 @@ var ConfigFile_FileType_name = map[int32]string{ 2: "OPEN_API_JSON", 3: "OPEN_API_YAML", 4: "FILE_DESCRIPTOR_SET_PROTO", + 6: "PROTO_FILE", } var ConfigFile_FileType_value = map[string]int32{ "FILE_TYPE_UNSPECIFIED": 0, @@ -163,6 +172,7 @@ var ConfigFile_FileType_value = map[string]int32{ "OPEN_API_JSON": 2, "OPEN_API_YAML": 3, "FILE_DESCRIPTOR_SET_PROTO": 4, + "PROTO_FILE": 6, } func (x ConfigFile_FileType) String() string { @@ -183,10 +193,13 @@ const ( // The Rollout has been cancelled. This can happen if you have overlapping // Rollout pushes, and the previous ones will be cancelled. Rollout_CANCELLED Rollout_RolloutStatus = 3 - // The Rollout has failed. It is typically caused by configuration errors. + // The Rollout has failed and the rollback attempt has failed too. Rollout_FAILED Rollout_RolloutStatus = 4 // The Rollout has not started yet and is pending for execution. Rollout_PENDING Rollout_RolloutStatus = 5 + // The Rollout has failed and rolled back to the previous successful + // Rollout. + Rollout_FAILED_ROLLED_BACK Rollout_RolloutStatus = 6 ) var Rollout_RolloutStatus_name = map[int32]string{ @@ -196,6 +209,7 @@ var Rollout_RolloutStatus_name = map[int32]string{ 3: "CANCELLED", 4: "FAILED", 5: "PENDING", + 6: "FAILED_ROLLED_BACK", } var Rollout_RolloutStatus_value = map[string]int32{ "ROLLOUT_STATUS_UNSPECIFIED": 0, @@ -204,6 +218,7 @@ var Rollout_RolloutStatus_value = map[string]int32{ "CANCELLED": 3, "FAILED": 4, "PENDING": 5, + "FAILED_ROLLED_BACK": 6, } func (x Rollout_RolloutStatus) String() string { @@ -642,9 +657,10 @@ func _Rollout_OneofSizer(msg proto.Message) (n int) { return n } -// Strategy that specifies how Google Service Control should select -// different -// versions of service configurations based on traffic percentage. +// Strategy that specifies how clients of Google Service Controller want to +// send traffic to use different config versions. This is generally +// used by API proxy to split traffic based on your configured precentage for +// each config version. // // One example of how to gradually rollout a new service configuration using // this @@ -725,78 +741,81 @@ func init() { func init() { proto.RegisterFile("google/api/servicemanagement/v1/resources.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 1166 bytes of a gzipped FileDescriptorProto + // 1201 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xef, 0x8e, 0xdb, 0x44, - 0x10, 0xaf, 0xf3, 0xe7, 0xee, 0x32, 0xb9, 0x0b, 0xee, 0x96, 0xf6, 0xd2, 0xd0, 0x3f, 0xc1, 0x15, - 0xd2, 0x49, 0x48, 0x0e, 0x0d, 0x08, 0x28, 0x95, 0x5a, 0xe5, 0x12, 0xdf, 0x61, 0xc8, 0xd9, 0xee, - 0xda, 0x07, 0x2a, 0x5f, 0xac, 0xad, 0xbd, 0x71, 0x4d, 0x13, 0xdb, 0xb2, 0x37, 0x27, 0x45, 0xfd, - 0xc8, 0x0b, 0xf0, 0x0c, 0x7c, 0x81, 0x47, 0xe1, 0x03, 0x4f, 0x00, 0x2f, 0x83, 0xbc, 0x5e, 0xdf, - 0xe5, 0xcf, 0xa1, 0x14, 0xf8, 0x92, 0xec, 0xfc, 0x66, 0xf6, 0x37, 0xb3, 0xb3, 0x33, 0xb3, 0x86, - 0x5e, 0x10, 0xc7, 0xc1, 0x94, 0xf6, 0x48, 0x12, 0xf6, 0x32, 0x9a, 0x5e, 0x84, 0x1e, 0x9d, 0x91, - 0x88, 0x04, 0x74, 0x46, 0x23, 0xd6, 0xbb, 0x78, 0xdc, 0x4b, 0x69, 0x16, 0xcf, 0x53, 0x8f, 0x66, - 0x6a, 0x92, 0xc6, 0x2c, 0x46, 0x0f, 0x8b, 0x0d, 0x2a, 0x49, 0x42, 0x75, 0x63, 0x83, 0x7a, 0xf1, - 0xb8, 0x73, 0x6f, 0x89, 0x91, 0x44, 0x51, 0xcc, 0x08, 0x0b, 0xe3, 0x48, 0x6c, 0xef, 0x3c, 0x58, - 0xd2, 0x7a, 0x71, 0x34, 0x09, 0x03, 0xd7, 0x7b, 0x4d, 0xa2, 0x80, 0x0a, 0x7d, 0x7b, 0x33, 0x1e, - 0xa1, 0x79, 0x24, 0x34, 0xd3, 0x38, 0x0a, 0xd2, 0x79, 0x14, 0x85, 0x51, 0xd0, 0x8b, 0x13, 0x9a, - 0xae, 0xd0, 0xdf, 0x15, 0x46, 0x5c, 0x7a, 0x35, 0x9f, 0xf4, 0x48, 0xb4, 0x10, 0xaa, 0xee, 0xba, - 0x6a, 0x12, 0xd2, 0xa9, 0xef, 0xce, 0x48, 0xf6, 0x46, 0x58, 0xdc, 0x5b, 0xb7, 0xc8, 0x58, 0x3a, - 0xf7, 0x98, 0xd0, 0x3e, 0x5c, 0xd7, 0xb2, 0x70, 0x46, 0x33, 0x46, 0x66, 0x89, 0x30, 0x38, 0x14, - 0x06, 0x69, 0xe2, 0xf5, 0x32, 0x46, 0xd8, 0x5c, 0x04, 0xa5, 0x78, 0xd0, 0x3a, 0xe3, 0x29, 0xf2, - 0xed, 0xe2, 0x44, 0xe8, 0x43, 0xd8, 0x17, 0x87, 0x73, 0x23, 0x32, 0xa3, 0xed, 0x4a, 0x57, 0x3a, - 0x6a, 0xe0, 0xa6, 0xc0, 0x0c, 0x32, 0xa3, 0x48, 0x85, 0x5b, 0x49, 0x1a, 0xfb, 0x73, 0x8f, 0xa6, - 0x6e, 0x92, 0xc6, 0x3f, 0x52, 0x8f, 0xb9, 0xa1, 0xdf, 0xae, 0x72, 0xcb, 0x9b, 0xa5, 0xca, 0x2a, - 0x34, 0xba, 0xaf, 0xfc, 0x55, 0x85, 0x9b, 0x66, 0x99, 0x8e, 0x33, 0xca, 0x88, 0x4f, 0x18, 0x41, - 0x1f, 0x41, 0xab, 0xbc, 0x40, 0xee, 0x29, 0x6b, 0x4b, 0xdd, 0xea, 0x51, 0x03, 0x1f, 0x94, 0x68, - 0xee, 0x2b, 0x43, 0x67, 0x50, 0xcf, 0x18, 0x4d, 0xb2, 0x76, 0xa5, 0x5b, 0x3d, 0x6a, 0xf6, 0xbf, - 0x50, 0xb7, 0x5c, 0xb2, 0xba, 0xe1, 0x49, 0xb5, 0x19, 0x4d, 0x70, 0xc1, 0x82, 0x7a, 0x3c, 0xf6, - 0x20, 0xa5, 0x59, 0xe6, 0x26, 0x34, 0xf5, 0x68, 0xc4, 0x48, 0x40, 0x79, 0xec, 0x75, 0x8c, 0x4a, - 0x95, 0x75, 0xa9, 0x41, 0x4f, 0x00, 0x32, 0x46, 0x52, 0xe6, 0xe6, 0x39, 0x6d, 0xd7, 0xba, 0xd2, - 0x51, 0xb3, 0xdf, 0x29, 0x83, 0x28, 0x13, 0xae, 0x3a, 0x65, 0xc2, 0x71, 0x83, 0x5b, 0xe7, 0x72, - 0xe7, 0x2d, 0xd4, 0x72, 0xd7, 0xa8, 0x0b, 0x4d, 0x9f, 0x66, 0x5e, 0x1a, 0x26, 0x79, 0x58, 0x65, - 0x46, 0x97, 0x20, 0xf4, 0x02, 0x76, 0x8a, 0x6b, 0xe1, 0x0e, 0x5a, 0xfd, 0x27, 0xff, 0xe9, 0x94, - 0x39, 0x01, 0x16, 0x44, 0x4a, 0x00, 0x3b, 0x05, 0x82, 0xee, 0x00, 0xb2, 0x9d, 0x81, 0x73, 0x6e, - 0xbb, 0xe7, 0x86, 0x6d, 0x69, 0x43, 0xfd, 0x44, 0xd7, 0x46, 0xf2, 0x0d, 0xb4, 0x07, 0xb5, 0x91, - 0x69, 0x68, 0xb2, 0x84, 0xde, 0x83, 0xa6, 0x61, 0x3a, 0xae, 0xed, 0x0c, 0xb0, 0xa3, 0x8d, 0xe4, - 0x4a, 0x0e, 0xe8, 0x86, 0x6b, 0x61, 0xf3, 0x14, 0x6b, 0xb6, 0x2d, 0x57, 0x11, 0xc0, 0xce, 0xc9, - 0x40, 0x1f, 0x6b, 0x23, 0xb9, 0x86, 0x0e, 0xa0, 0x31, 0x1c, 0x18, 0x43, 0x6d, 0x9c, 0x8b, 0x75, - 0xe5, 0x37, 0x09, 0x60, 0x14, 0x92, 0x20, 0x8a, 0x33, 0x16, 0x7a, 0xa8, 0x03, 0x7b, 0xd3, 0xd8, - 0xe3, 0xa1, 0xb5, 0x25, 0x7e, 0xd2, 0x4b, 0x19, 0x8d, 0xa0, 0xf6, 0x26, 0x8c, 0x7c, 0x9e, 0x81, - 0x56, 0xff, 0x93, 0xad, 0x87, 0xbc, 0xa2, 0x55, 0xbf, 0x0d, 0x23, 0x1f, 0xf3, 0xdd, 0xa8, 0x0d, - 0xbb, 0x33, 0x9a, 0x65, 0xe5, 0xb5, 0x35, 0x70, 0x29, 0x2a, 0x0f, 0xa0, 0x96, 0xdb, 0xa1, 0x26, - 0xec, 0x7e, 0x3f, 0xc0, 0x86, 0x6e, 0x9c, 0xca, 0x37, 0x50, 0x03, 0xea, 0x1a, 0xc6, 0x26, 0x96, - 0x25, 0x85, 0xc0, 0xfe, 0x90, 0x37, 0xb6, 0xcd, 0x0b, 0x0c, 0xb5, 0xa0, 0x12, 0xfa, 0xed, 0x3a, - 0x27, 0xa9, 0x84, 0x3e, 0x1a, 0x40, 0x7d, 0x12, 0x4e, 0x69, 0x59, 0x6b, 0x1f, 0x6f, 0x0d, 0xb0, - 0x60, 0x3b, 0x09, 0xa7, 0x14, 0x17, 0x3b, 0x95, 0x5f, 0x2b, 0x00, 0x57, 0x28, 0xfa, 0x00, 0x1a, - 0x39, 0xee, 0x26, 0x84, 0xbd, 0x2e, 0xd3, 0x91, 0x03, 0x16, 0x61, 0xaf, 0xd1, 0x23, 0x38, 0xe0, - 0x4a, 0x2f, 0x8e, 0x18, 0x8d, 0x58, 0xc6, 0x8f, 0xb3, 0x8f, 0xf7, 0x73, 0x70, 0x28, 0x30, 0xf4, - 0x42, 0x30, 0xb0, 0x45, 0x42, 0x45, 0x75, 0x7c, 0xf6, 0x2f, 0xe2, 0x52, 0xf3, 0x1f, 0x67, 0x91, - 0xd0, 0xc2, 0x6f, 0xbe, 0x52, 0x7e, 0x92, 0x60, 0xaf, 0x84, 0xd1, 0x5d, 0xb8, 0x7d, 0xa2, 0x8f, - 0x35, 0xd7, 0x79, 0x69, 0x69, 0x6b, 0x05, 0x72, 0x08, 0xb7, 0x6c, 0x0d, 0x7f, 0xa7, 0x0f, 0x35, - 0x77, 0x68, 0x1a, 0x27, 0xfa, 0xa9, 0xfb, 0x72, 0x70, 0x36, 0x96, 0x25, 0x74, 0x13, 0x0e, 0x4c, - 0x4b, 0x33, 0xdc, 0x81, 0xa5, 0xbb, 0xdf, 0xd8, 0xa6, 0x21, 0x57, 0x56, 0x20, 0x6e, 0x55, 0x45, - 0xf7, 0xe1, 0x2e, 0x67, 0x1e, 0x69, 0xf6, 0x10, 0xeb, 0x96, 0x63, 0x62, 0xd7, 0xd6, 0x9c, 0xbc, - 0xaa, 0x1c, 0x53, 0xae, 0x29, 0x0f, 0xa1, 0x51, 0x84, 0x89, 0xe9, 0x04, 0x21, 0xa8, 0xf1, 0x69, - 0x53, 0xa4, 0x88, 0xaf, 0x15, 0x13, 0xf6, 0x87, 0x7c, 0xfe, 0x62, 0x9a, 0xc4, 0x29, 0x43, 0xcf, - 0xa1, 0xb5, 0x32, 0x96, 0x8b, 0x81, 0xd1, 0xec, 0xb7, 0x97, 0xd3, 0x51, 0x50, 0x8a, 0x7d, 0x07, - 0xde, 0x92, 0x94, 0x29, 0x7f, 0xee, 0xc0, 0x2e, 0x8e, 0xa7, 0xd3, 0x78, 0xce, 0xd0, 0x7d, 0x80, - 0xb4, 0x58, 0xe6, 0xa3, 0xab, 0x70, 0xdb, 0x10, 0x88, 0xee, 0xa3, 0xa7, 0xd0, 0xf4, 0x52, 0x4a, - 0x18, 0x2d, 0xda, 0xbe, 0xb2, 0xb5, 0xed, 0xa1, 0x30, 0xcf, 0x81, 0x9c, 0xbb, 0x90, 0x7c, 0xf7, - 0xd5, 0x42, 0xd4, 0x68, 0x43, 0x20, 0xc7, 0x0b, 0x64, 0xac, 0x35, 0xfb, 0xe7, 0x5b, 0xaf, 0x53, - 0x04, 0x5d, 0xfe, 0xaf, 0x76, 0x3a, 0x7a, 0x0b, 0x6d, 0x96, 0x92, 0xc9, 0x24, 0xf4, 0xca, 0x89, - 0xe6, 0x66, 0x2c, 0x25, 0x8c, 0x06, 0x0b, 0x5e, 0xdb, 0xcd, 0xfe, 0xf3, 0x77, 0xf6, 0xe0, 0x14, - 0x44, 0x62, 0xfe, 0xd9, 0x82, 0xe6, 0xeb, 0x1b, 0xf8, 0x0e, 0xbb, 0x56, 0x83, 0x16, 0x70, 0xe8, - 0xd3, 0x29, 0x65, 0xd4, 0x2d, 0x5f, 0x8d, 0x4b, 0xdf, 0xbf, 0x4b, 0xdc, 0xf9, 0xb3, 0x77, 0x76, - 0x3e, 0xe2, 0x44, 0xe2, 0x21, 0x5a, 0xf2, 0x7d, 0xdb, 0xbf, 0x4e, 0xb1, 0xf1, 0x52, 0xed, 0x6d, - 0xbc, 0x54, 0x9d, 0x3f, 0x24, 0xb8, 0x73, 0xfd, 0x91, 0x50, 0x0a, 0xcd, 0xab, 0xf9, 0x5f, 0x96, - 0x92, 0xf5, 0x3f, 0x13, 0xa5, 0x5e, 0x3d, 0x1c, 0x99, 0x16, 0xb1, 0x74, 0x81, 0x97, 0x9d, 0x74, - 0x9e, 0x81, 0xbc, 0x6e, 0x80, 0x64, 0xa8, 0xbe, 0xa1, 0x0b, 0x51, 0x81, 0xf9, 0x12, 0xbd, 0x0f, - 0xf5, 0x0b, 0x32, 0x9d, 0x17, 0x55, 0x27, 0xe1, 0x42, 0xf8, 0xaa, 0xf2, 0xa5, 0xd4, 0x39, 0x84, - 0xdb, 0xd7, 0xe6, 0x48, 0x99, 0xc3, 0xc1, 0x4a, 0x6d, 0xa0, 0x07, 0xd0, 0xc1, 0xe6, 0x78, 0x6c, - 0x9e, 0xf3, 0xa9, 0xbe, 0x39, 0xfb, 0xd7, 0x06, 0xbc, 0x94, 0x8f, 0x4c, 0xfb, 0x7c, 0x38, 0xcc, - 0x85, 0xca, 0xea, 0x84, 0x5f, 0x1d, 0xfe, 0x4d, 0xd8, 0xb5, 0x34, 0x63, 0x94, 0x8f, 0xd6, 0xfa, - 0x31, 0xc0, 0x5e, 0x79, 0xdb, 0xc7, 0x3f, 0x4b, 0xf0, 0xc8, 0x8b, 0x67, 0xdb, 0x12, 0x78, 0xdc, - 0xc2, 0xe5, 0x57, 0x9b, 0x95, 0x77, 0x91, 0x25, 0xfd, 0x60, 0x89, 0x2d, 0x41, 0x3c, 0x25, 0x51, - 0xa0, 0xc6, 0x69, 0xd0, 0x0b, 0x68, 0xc4, 0x7b, 0x4c, 0x7c, 0x02, 0x92, 0x24, 0xcc, 0xfe, 0xf1, - 0x33, 0xf0, 0xe9, 0x06, 0xf8, 0x4b, 0xa5, 0x76, 0x3a, 0xb0, 0xcf, 0x5e, 0xed, 0x70, 0x8e, 0x4f, - 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x2d, 0x64, 0x4d, 0x1e, 0x49, 0x0a, 0x00, 0x00, + 0x10, 0xaf, 0xf3, 0xef, 0x2e, 0x93, 0xbb, 0xe0, 0x6e, 0x69, 0x2f, 0x0d, 0xfd, 0x73, 0xa4, 0x42, + 0x3a, 0x09, 0xc9, 0xa1, 0x07, 0x02, 0x4a, 0xa5, 0x56, 0xb9, 0xc4, 0x77, 0x84, 0xde, 0xd9, 0xee, + 0x3a, 0x07, 0x2a, 0x5f, 0xac, 0xad, 0xbd, 0x71, 0x4d, 0x13, 0xdb, 0x5a, 0x6f, 0x4e, 0x8a, 0xfa, + 0x0c, 0x48, 0x48, 0xbc, 0x01, 0x9f, 0x78, 0x03, 0x5e, 0x81, 0x0f, 0xbc, 0x01, 0x8f, 0xc1, 0x0b, + 0xa0, 0x5d, 0xaf, 0x7b, 0xf9, 0x73, 0x28, 0x05, 0xbe, 0x24, 0x3b, 0xbf, 0xdf, 0xec, 0xcc, 0xec, + 0xec, 0xec, 0x8c, 0xa1, 0x1b, 0x26, 0x49, 0x38, 0xa1, 0x5d, 0x92, 0x46, 0xdd, 0x8c, 0xb2, 0x8b, + 0xc8, 0xa7, 0x53, 0x12, 0x93, 0x90, 0x4e, 0x69, 0xcc, 0xbb, 0x17, 0x0f, 0xbb, 0x8c, 0x66, 0xc9, + 0x8c, 0xf9, 0x34, 0x33, 0x52, 0x96, 0xf0, 0x04, 0xdd, 0xcf, 0x37, 0x18, 0x24, 0x8d, 0x8c, 0xb5, + 0x0d, 0xc6, 0xc5, 0xc3, 0xf6, 0x9d, 0x05, 0x8b, 0x24, 0x8e, 0x13, 0x4e, 0x78, 0x94, 0xc4, 0x6a, + 0x7b, 0xfb, 0xde, 0x02, 0xeb, 0x27, 0xf1, 0x38, 0x0a, 0x3d, 0xff, 0x15, 0x89, 0x43, 0xaa, 0xf8, + 0xbd, 0x05, 0x7e, 0x4a, 0x39, 0x8b, 0x7c, 0x45, 0xb4, 0xd6, 0x03, 0x55, 0xcc, 0x03, 0xc5, 0x4c, + 0x92, 0x38, 0x64, 0xb3, 0x38, 0x8e, 0xe2, 0xb0, 0x9b, 0xa4, 0x94, 0x2d, 0xf9, 0xbd, 0xad, 0x94, + 0xa4, 0xf4, 0x72, 0x36, 0xee, 0x92, 0x78, 0xae, 0xa8, 0xfd, 0x55, 0x6a, 0x1c, 0xd1, 0x49, 0xe0, + 0x4d, 0x49, 0xf6, 0x5a, 0x69, 0xdc, 0x59, 0xd5, 0xc8, 0x38, 0x9b, 0xf9, 0x5c, 0xb1, 0xf7, 0x57, + 0x59, 0x1e, 0x4d, 0x69, 0xc6, 0xc9, 0x34, 0x5d, 0x39, 0x13, 0x4b, 0xfd, 0x6e, 0xc6, 0x09, 0x9f, + 0xa9, 0xa0, 0x3a, 0x3e, 0x34, 0xcf, 0x64, 0xee, 0x02, 0x37, 0x3f, 0x11, 0xfa, 0x10, 0x76, 0xd4, + 0xe1, 0xbc, 0x98, 0x4c, 0x69, 0xab, 0xb4, 0xaf, 0x1d, 0xd4, 0x71, 0x43, 0x61, 0x16, 0x99, 0x52, + 0x64, 0xc0, 0x8d, 0x94, 0x25, 0xc1, 0xcc, 0xa7, 0xcc, 0x4b, 0x59, 0xf2, 0x03, 0xf5, 0xb9, 0x17, + 0x05, 0xad, 0xb2, 0xd4, 0xbc, 0x5e, 0x50, 0x4e, 0xce, 0x0c, 0x83, 0xce, 0x9f, 0x65, 0xb8, 0x6e, + 0x17, 0xe9, 0x38, 0xa3, 0x9c, 0x04, 0x84, 0x13, 0xf4, 0x11, 0x34, 0x8b, 0x9b, 0x95, 0x9e, 0xb2, + 0x96, 0xb6, 0x5f, 0x3e, 0xa8, 0xe3, 0xdd, 0x02, 0x15, 0xbe, 0x32, 0x74, 0x06, 0xd5, 0x8c, 0xd3, + 0x34, 0x6b, 0x95, 0xf6, 0xcb, 0x07, 0x8d, 0xc3, 0x2f, 0x8c, 0x0d, 0xb7, 0x6f, 0xac, 0x79, 0x32, + 0x5c, 0x4e, 0x53, 0x9c, 0x5b, 0x41, 0x5d, 0x19, 0x7b, 0xc8, 0x68, 0x96, 0x79, 0x29, 0x65, 0x3e, + 0x8d, 0x39, 0x09, 0xa9, 0x8c, 0xbd, 0x8a, 0x51, 0x41, 0x39, 0x6f, 0x19, 0xf4, 0x08, 0x20, 0xe3, + 0x84, 0x71, 0x4f, 0xe4, 0xb4, 0x55, 0xd9, 0xd7, 0x0e, 0x1a, 0x87, 0xed, 0x22, 0x88, 0x22, 0xe1, + 0xc6, 0xa8, 0x48, 0x38, 0xae, 0x4b, 0x6d, 0x21, 0xb7, 0xdf, 0x40, 0x45, 0xb8, 0x46, 0xfb, 0xd0, + 0x08, 0x68, 0xe6, 0xb3, 0x28, 0x15, 0x61, 0x15, 0x19, 0x5d, 0x80, 0xd0, 0x73, 0xa8, 0xe5, 0xd7, + 0x22, 0x1d, 0x34, 0x0f, 0x1f, 0xfd, 0xa7, 0x53, 0x0a, 0x03, 0x58, 0x19, 0xea, 0x84, 0x50, 0xcb, + 0x11, 0x74, 0x0b, 0x90, 0x3b, 0xea, 0x8d, 0xce, 0x5d, 0xef, 0xdc, 0x72, 0x1d, 0xb3, 0x3f, 0x3c, + 0x1e, 0x9a, 0x03, 0xfd, 0x1a, 0xda, 0x86, 0xca, 0xc0, 0xb6, 0x4c, 0x5d, 0x43, 0xef, 0x41, 0xc3, + 0xb2, 0x47, 0x9e, 0x3b, 0xea, 0xe1, 0x91, 0x39, 0xd0, 0x4b, 0x02, 0x18, 0x5a, 0x9e, 0x83, 0xed, + 0x13, 0x6c, 0xba, 0xae, 0x5e, 0x46, 0x00, 0xb5, 0xe3, 0xde, 0xf0, 0xd4, 0x1c, 0xe8, 0x15, 0xb4, + 0x0b, 0xf5, 0x7e, 0xcf, 0xea, 0x9b, 0xa7, 0x42, 0xac, 0x76, 0x7e, 0xd5, 0x00, 0x06, 0x11, 0x09, + 0xe3, 0x24, 0xe3, 0x91, 0x8f, 0xda, 0xb0, 0x3d, 0x49, 0x7c, 0x19, 0x5a, 0x4b, 0x93, 0x27, 0x7d, + 0x2b, 0xa3, 0x01, 0x54, 0x5e, 0x47, 0x71, 0x20, 0x33, 0xd0, 0x3c, 0xfc, 0x64, 0xe3, 0x21, 0x2f, + 0xcd, 0x1a, 0xcf, 0xa2, 0x38, 0xc0, 0x72, 0x37, 0x6a, 0xc1, 0xd6, 0x94, 0x66, 0x59, 0x71, 0x6d, + 0x75, 0x5c, 0x88, 0x9d, 0x7b, 0x50, 0x11, 0x7a, 0xa8, 0x01, 0x5b, 0xdf, 0xf5, 0xb0, 0x35, 0xb4, + 0x4e, 0xf4, 0x6b, 0xa8, 0x0e, 0x55, 0x13, 0x63, 0x1b, 0xeb, 0x5a, 0x87, 0xc0, 0x4e, 0x5f, 0xbe, + 0x78, 0x57, 0x16, 0x18, 0x6a, 0x42, 0x29, 0x0a, 0x5a, 0x55, 0x69, 0xa4, 0x14, 0x05, 0xa8, 0x07, + 0xd5, 0x71, 0x34, 0xa1, 0x45, 0xad, 0x7d, 0xbc, 0x31, 0xc0, 0xdc, 0xda, 0x71, 0x34, 0xa1, 0x38, + 0xdf, 0xd9, 0xf9, 0xad, 0x04, 0x70, 0x89, 0xa2, 0x0f, 0xa0, 0x2e, 0x70, 0x2f, 0x25, 0xfc, 0x55, + 0x91, 0x0e, 0x01, 0x38, 0x84, 0xbf, 0x42, 0x0f, 0x60, 0x57, 0x92, 0x7e, 0x12, 0x73, 0x1a, 0xf3, + 0x4c, 0x1e, 0x67, 0x07, 0xef, 0x08, 0xb0, 0xaf, 0x30, 0xf4, 0x5c, 0x59, 0xe0, 0xf3, 0x94, 0xaa, + 0xea, 0xf8, 0xec, 0x5f, 0xc4, 0x65, 0x88, 0x9f, 0xd1, 0x3c, 0xa5, 0xb9, 0x5f, 0xb1, 0xea, 0xfc, + 0xac, 0xc1, 0x76, 0x01, 0xa3, 0xdb, 0x70, 0xf3, 0x78, 0x78, 0x6a, 0x7a, 0xa3, 0x17, 0x8e, 0xb9, + 0x52, 0x20, 0x7b, 0x70, 0xc3, 0x35, 0xf1, 0xb7, 0xc3, 0xbe, 0xe9, 0xf5, 0x6d, 0xeb, 0x78, 0x78, + 0xe2, 0xbd, 0xe8, 0x9d, 0x9d, 0xea, 0x1a, 0xba, 0x0e, 0xbb, 0xb6, 0x63, 0x5a, 0x5e, 0xcf, 0x19, + 0x7a, 0xdf, 0xb8, 0xb6, 0xa5, 0x97, 0x96, 0x20, 0xa9, 0x55, 0x46, 0x77, 0xe1, 0xb6, 0xb4, 0x3c, + 0x30, 0xdd, 0x3e, 0x1e, 0x3a, 0x23, 0x1b, 0x7b, 0xae, 0x39, 0x12, 0x55, 0x35, 0xb2, 0xf5, 0x0a, + 0x6a, 0x02, 0xc8, 0xa5, 0x27, 0x94, 0xf4, 0x5a, 0xe7, 0x3e, 0xd4, 0xf3, 0xb0, 0x31, 0x1d, 0x23, + 0x04, 0x15, 0xd9, 0x7d, 0xf2, 0x94, 0xc9, 0x75, 0xc7, 0x86, 0x9d, 0xbe, 0x6c, 0xd4, 0x98, 0xa6, + 0x09, 0xe3, 0xe8, 0x29, 0x34, 0x97, 0xfa, 0x77, 0xde, 0x40, 0x1a, 0x87, 0xad, 0xc5, 0xf4, 0xe4, + 0x26, 0xd5, 0xbe, 0x5d, 0x7f, 0x41, 0xca, 0x3a, 0x7f, 0xd5, 0x60, 0x0b, 0x27, 0x93, 0x49, 0x32, + 0xe3, 0xe8, 0x2e, 0x00, 0xcb, 0x97, 0xa2, 0x95, 0xe5, 0x6e, 0xeb, 0x0a, 0x19, 0x06, 0xe8, 0x31, + 0x34, 0x7c, 0x46, 0x09, 0xa7, 0x79, 0x1b, 0x28, 0x6d, 0x6c, 0x03, 0x90, 0xab, 0x0b, 0x40, 0xd8, + 0xce, 0xa5, 0xc0, 0x7b, 0x39, 0x57, 0x35, 0x5b, 0x57, 0xc8, 0xd1, 0x1c, 0x59, 0x2b, 0x8f, 0xff, + 0xf3, 0x8d, 0xd7, 0xab, 0x82, 0x2e, 0xfe, 0x97, 0x5f, 0x3e, 0x7a, 0x03, 0x2d, 0xce, 0xc8, 0x78, + 0x1c, 0xf9, 0x45, 0x87, 0xf3, 0x32, 0xce, 0x08, 0xa7, 0xe1, 0x5c, 0xd6, 0x7a, 0xe3, 0xf0, 0xe9, + 0x3b, 0x7b, 0x18, 0xe5, 0x86, 0x54, 0x3f, 0x74, 0x95, 0x99, 0xaf, 0xaf, 0xe1, 0x5b, 0xfc, 0x4a, + 0x06, 0xcd, 0x61, 0x2f, 0xa0, 0x13, 0xca, 0xa9, 0x57, 0x4c, 0x91, 0xb7, 0xbe, 0x7f, 0xd7, 0xa4, + 0xf3, 0x27, 0xef, 0xec, 0x7c, 0x20, 0x0d, 0xa9, 0xc1, 0xb4, 0xe0, 0xfb, 0x66, 0x70, 0x15, 0xb1, + 0x36, 0xb9, 0xb6, 0xd7, 0x26, 0x57, 0xfb, 0x0f, 0x0d, 0x6e, 0x5d, 0x7d, 0x24, 0xc4, 0xa0, 0x71, + 0x39, 0x0f, 0x8a, 0x52, 0x72, 0xfe, 0x67, 0xa2, 0x8c, 0xcb, 0x41, 0x92, 0x99, 0x31, 0x67, 0x73, + 0xbc, 0xe8, 0xa4, 0xfd, 0x04, 0xf4, 0x55, 0x05, 0xa4, 0x43, 0xf9, 0x35, 0x9d, 0xab, 0x0a, 0x14, + 0x4b, 0xf4, 0x3e, 0x54, 0x2f, 0xc8, 0x64, 0x96, 0x57, 0x9d, 0x86, 0x73, 0xe1, 0xab, 0xd2, 0x97, + 0x5a, 0x7b, 0x0f, 0x6e, 0x5e, 0x99, 0xa3, 0xce, 0x8f, 0x1a, 0xec, 0x2e, 0x15, 0x07, 0xba, 0x07, + 0x6d, 0x6c, 0x9f, 0x9e, 0xda, 0xe7, 0xb2, 0xcd, 0xaf, 0x0f, 0x83, 0x95, 0x8e, 0xaf, 0x89, 0x1e, + 0xea, 0x9e, 0xf7, 0xfb, 0x42, 0x28, 0x2d, 0xb7, 0xfc, 0xe5, 0x69, 0xd0, 0x80, 0x2d, 0xc7, 0xb4, + 0x06, 0xa2, 0xd7, 0x56, 0xc5, 0xa8, 0xc9, 0x09, 0x4f, 0x38, 0x33, 0x07, 0xde, 0x51, 0xaf, 0xff, + 0x4c, 0xaf, 0x1d, 0x01, 0x6c, 0x17, 0x65, 0x70, 0xf4, 0x93, 0x06, 0x0f, 0xfc, 0x64, 0xba, 0x29, + 0xb3, 0x47, 0x4d, 0x5c, 0x7c, 0xf7, 0x39, 0xe2, 0x79, 0x39, 0xda, 0xf7, 0x8e, 0xda, 0x12, 0x26, + 0x13, 0x12, 0x87, 0x46, 0xc2, 0xc2, 0x6e, 0x48, 0x63, 0xf9, 0xf8, 0xd4, 0x47, 0x24, 0x49, 0xa3, + 0xec, 0x1f, 0x3f, 0x24, 0x1f, 0xaf, 0x81, 0xbf, 0x94, 0x2a, 0x27, 0x3d, 0xf7, 0xec, 0x65, 0x4d, + 0xda, 0xf8, 0xf4, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xdd, 0x92, 0xf0, 0x8b, 0x0a, 0x00, + 0x00, } diff --git a/googleapis/api/servicemanagement/v1/servicemanager.pb.go b/googleapis/api/servicemanagement/v1/servicemanager.pb.go index cbd3fb2e..b5632874 100644 --- a/googleapis/api/servicemanagement/v1/servicemanager.pb.go +++ b/googleapis/api/servicemanagement/v1/servicemanager.pb.go @@ -7,7 +7,6 @@ import proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/api/serviceconfig" import google_api22 "google.golang.org/genproto/googleapis/api/serviceconfig" import google_longrunning "google.golang.org/genproto/googleapis/longrunning" import google_protobuf1 "github.com/golang/protobuf/ptypes/any" @@ -1421,94 +1420,94 @@ func init() { } var fileDescriptor1 = []byte{ - // 1420 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0x67, 0x9c, 0xb4, 0x4d, 0x5e, 0x62, 0xb7, 0x9d, 0xb8, 0x8d, 0xeb, 0x34, 0x6a, 0xba, 0x81, - 0x12, 0xa5, 0xd4, 0xab, 0xa4, 0xff, 0xa8, 0x53, 0x0e, 0x4d, 0x02, 0x55, 0x44, 0x4b, 0x23, 0xa7, - 0x05, 0x54, 0x90, 0xac, 0xcd, 0xee, 0x64, 0xbb, 0x74, 0x3d, 0x63, 0x76, 0xd6, 0x09, 0x69, 0x94, - 0x4b, 0x55, 0x09, 0x09, 0x4e, 0xa8, 0x40, 0x25, 0x8e, 0x15, 0xe2, 0xc0, 0x81, 0x0b, 0x07, 0x24, - 0x0e, 0x48, 0x7c, 0x06, 0xc4, 0x37, 0xe0, 0x33, 0x70, 0x46, 0x9e, 0x9d, 0x75, 0x76, 0xec, 0x8d, - 0x77, 0xd7, 0x02, 0x8e, 0xfb, 0x66, 0x7e, 0xef, 0xfd, 0xe6, 0xcd, 0x7b, 0x33, 0xbf, 0x59, 0xb8, - 0x62, 0x33, 0x66, 0xbb, 0x44, 0x37, 0x9a, 0x8e, 0xce, 0x89, 0xb7, 0xed, 0x98, 0xa4, 0x61, 0x50, - 0xc3, 0x26, 0x0d, 0x42, 0x7d, 0x7d, 0x7b, 0x41, 0x35, 0x7a, 0x95, 0xa6, 0xc7, 0x7c, 0x86, 0xcf, - 0x05, 0xa8, 0x8a, 0xd1, 0x74, 0x2a, 0x3d, 0xa8, 0xca, 0xf6, 0x42, 0xf9, 0x6c, 0xc4, 0xad, 0x41, - 0x29, 0xf3, 0x0d, 0xdf, 0x61, 0x94, 0x07, 0xf0, 0xf2, 0xa9, 0xe8, 0x68, 0xcb, 0x7f, 0x24, 0xcd, - 0xa5, 0x5e, 0x2e, 0x72, 0x44, 0x4f, 0x62, 0xe9, 0x11, 0xce, 0x5a, 0x9e, 0x49, 0xc2, 0x08, 0xb3, - 0x12, 0xe0, 0x32, 0x6a, 0x7b, 0x2d, 0x4a, 0x1d, 0x6a, 0xeb, 0xac, 0x49, 0x3c, 0x85, 0xc6, 0x19, - 0x39, 0x49, 0x7c, 0x6d, 0xb6, 0xb6, 0x74, 0x83, 0xee, 0xca, 0xa1, 0x99, 0xee, 0xa1, 0x2d, 0x87, - 0xb8, 0x56, 0xbd, 0x61, 0xf0, 0xc7, 0x72, 0xc6, 0xd9, 0xee, 0x19, 0xdc, 0xf7, 0x5a, 0xa6, 0x2f, - 0x47, 0x27, 0xe5, 0xa8, 0xd7, 0x34, 0x75, 0xee, 0x1b, 0x7e, 0x4b, 0xc6, 0xd4, 0x5e, 0x22, 0x98, - 0xb8, 0xe3, 0x70, 0x7f, 0x23, 0x58, 0x05, 0xaf, 0x91, 0x4f, 0x5b, 0x84, 0xfb, 0xb8, 0x02, 0x13, - 0x4d, 0x8f, 0x59, 0x2d, 0x93, 0x78, 0xf5, 0xa6, 0xc7, 0x3e, 0x21, 0xa6, 0x5f, 0x77, 0xac, 0x12, - 0x9a, 0x41, 0x73, 0xa3, 0xb5, 0x93, 0xe1, 0xd0, 0x7a, 0x30, 0xb2, 0x66, 0xe1, 0x29, 0x18, 0x6d, - 0x1a, 0x36, 0xa9, 0x73, 0xe7, 0x09, 0x29, 0x1d, 0x99, 0x41, 0x73, 0x47, 0x6a, 0x23, 0x6d, 0xc3, - 0x86, 0xf3, 0x84, 0xe0, 0x69, 0x00, 0x31, 0xe8, 0xb3, 0xc7, 0x84, 0x96, 0x8e, 0x0a, 0x1f, 0x62, - 0xfa, 0xfd, 0xb6, 0x01, 0x9f, 0x83, 0x31, 0x93, 0x51, 0xde, 0x6a, 0x10, 0xaf, 0x1d, 0xe3, 0x98, - 0x18, 0x87, 0xd0, 0xb4, 0x66, 0x69, 0x5f, 0x22, 0x28, 0xaa, 0x24, 0x79, 0x93, 0x51, 0x4e, 0xf0, - 0xbb, 0x30, 0x22, 0xd3, 0xcf, 0x4b, 0x68, 0x66, 0x68, 0x6e, 0x6c, 0x51, 0xaf, 0x24, 0x94, 0x42, - 0xe5, 0xae, 0xf8, 0xb2, 0xa4, 0xaf, 0x5a, 0xc7, 0x01, 0xbe, 0x00, 0xc7, 0x29, 0xf9, 0xcc, 0xaf, - 0x47, 0xa8, 0xe6, 0x04, 0x95, 0x7c, 0xdb, 0xbc, 0x1e, 0xd2, 0xd5, 0xae, 0xc1, 0xc9, 0xdb, 0x24, - 0xe4, 0x12, 0xe6, 0xeb, 0x3c, 0x8c, 0x4b, 0x47, 0x75, 0x6a, 0x34, 0x88, 0x4c, 0xd4, 0x98, 0xb4, - 0xbd, 0x67, 0x34, 0x88, 0x66, 0x40, 0x71, 0xc5, 0x23, 0x86, 0x4f, 0xba, 0xa0, 0x6b, 0x70, 0x4c, - 0x4e, 0x13, 0xa8, 0x01, 0xd6, 0x10, 0xe2, 0xb5, 0x1b, 0x50, 0x5c, 0x25, 0x2e, 0xe9, 0x09, 0x91, - 0x82, 0xdd, 0x12, 0x9c, 0x7e, 0x40, 0xad, 0x01, 0xc1, 0x16, 0x4c, 0xf6, 0x80, 0xe5, 0x16, 0xfd, - 0x8b, 0xab, 0xfb, 0x13, 0xc1, 0xe4, 0x41, 0xe6, 0x57, 0x18, 0xdd, 0x72, 0xec, 0xf4, 0x24, 0xdb, - 0x25, 0x6a, 0x0a, 0x4c, 0xbb, 0xc8, 0x82, 0x9d, 0x1d, 0x09, 0x0c, 0x6b, 0x16, 0xfe, 0x00, 0x86, - 0xb7, 0x1d, 0xb2, 0x53, 0x1a, 0x9a, 0x41, 0x73, 0x85, 0xc5, 0x95, 0x44, 0x8e, 0x87, 0xf0, 0xa8, - 0x04, 0x5f, 0xef, 0x3b, 0x64, 0xa7, 0x26, 0x1c, 0x6a, 0xe7, 0x01, 0x0e, 0x6c, 0x78, 0x14, 0x8e, - 0x2c, 0xdf, 0xda, 0x58, 0x5b, 0x39, 0xf1, 0x0a, 0x1e, 0x81, 0xe1, 0x77, 0x1e, 0xdc, 0xb9, 0x73, - 0x02, 0x69, 0x4f, 0xe0, 0x4c, 0xa4, 0xba, 0x83, 0xd9, 0x3c, 0xc3, 0xc2, 0xd4, 0xf6, 0xca, 0x75, - 0xb7, 0x97, 0xd2, 0x9a, 0x43, 0x6a, 0x6b, 0x6a, 0x4f, 0x11, 0x94, 0xe3, 0x82, 0xcb, 0xdd, 0xbb, - 0x09, 0xc7, 0xc3, 0xe8, 0x41, 0xaa, 0xc2, 0x3e, 0x9b, 0x88, 0x66, 0x28, 0xdc, 0xa9, 0x02, 0x57, - 0xbc, 0xa4, 0xee, 0xa8, 0x3d, 0x28, 0x2b, 0x9d, 0x91, 0x79, 0x6b, 0xab, 0x50, 0x50, 0x69, 0x8a, - 0x38, 0x87, 0xb0, 0xcc, 0x2b, 0x2c, 0xb5, 0x5f, 0x10, 0x9c, 0xd9, 0x68, 0x6d, 0x36, 0x1c, 0x3f, - 0x30, 0x6c, 0x88, 0x83, 0x3b, 0x43, 0xf0, 0x1a, 0xe4, 0x65, 0x5d, 0x05, 0x67, 0xbe, 0x8c, 0x7d, - 0x29, 0xb1, 0x86, 0x94, 0x78, 0xe3, 0x66, 0xe4, 0x0b, 0xcf, 0x42, 0x7e, 0xdb, 0x70, 0x1d, 0xcb, - 0xf0, 0x49, 0x9d, 0x51, 0x77, 0x57, 0xec, 0xdb, 0x48, 0x6d, 0x3c, 0x34, 0xde, 0xa3, 0xee, 0xae, - 0xf6, 0x21, 0x94, 0xe3, 0x88, 0xcb, 0xad, 0xeb, 0xcd, 0x09, 0x4a, 0x9d, 0x93, 0x67, 0x08, 0xa6, - 0xd4, 0xb3, 0x8a, 0xb9, 0x2e, 0x6b, 0xf9, 0x19, 0xb2, 0xb2, 0x0c, 0xc7, 0xbc, 0x00, 0x24, 0xf3, - 0x31, 0x97, 0x98, 0x8f, 0x30, 0x48, 0x08, 0xd4, 0x9e, 0xab, 0xc5, 0x29, 0xc7, 0xff, 0xa7, 0xd6, - 0xc0, 0xa7, 0xe1, 0xe8, 0x96, 0xe3, 0xfa, 0xc4, 0x2b, 0x0d, 0x0b, 0x9c, 0xfc, 0x6a, 0xdf, 0x46, - 0x53, 0xb1, 0xac, 0x64, 0xe2, 0x57, 0x61, 0x44, 0x2e, 0x20, 0x6c, 0x96, 0xf4, 0x4b, 0xef, 0x20, - 0x53, 0xf7, 0xce, 0xc7, 0x50, 0x8a, 0xdc, 0x46, 0x99, 0xb7, 0x69, 0x1a, 0x40, 0x86, 0x3c, 0x38, - 0x15, 0x47, 0xa5, 0x65, 0xcd, 0xd2, 0x1e, 0x42, 0xf1, 0x6d, 0x6a, 0x6c, 0xba, 0xd9, 0xef, 0x84, - 0xee, 0x5b, 0x3d, 0xd7, 0x73, 0xab, 0x7f, 0x04, 0xa7, 0x56, 0x1d, 0xfe, 0x1f, 0x39, 0xff, 0x1c, - 0xc1, 0xd4, 0x6d, 0x42, 0xdb, 0x0a, 0xab, 0x73, 0x9c, 0x34, 0x99, 0xd7, 0x49, 0xcd, 0x65, 0x00, - 0x4a, 0x76, 0xd4, 0xce, 0x28, 0x86, 0xdb, 0x14, 0x6a, 0xa8, 0xca, 0x2d, 0xba, 0x5b, 0x1b, 0xa5, - 0x64, 0x27, 0xf0, 0xd0, 0x06, 0x31, 0xd7, 0x52, 0x8f, 0x98, 0x43, 0x40, 0xcc, 0xb5, 0x64, 0x2f, - 0xfd, 0x8d, 0xe0, 0x6c, 0x3c, 0x13, 0x59, 0x2f, 0x29, 0x96, 0x5b, 0x80, 0x5c, 0x67, 0x95, 0x39, - 0xc7, 0xc2, 0xf7, 0xa1, 0x60, 0x3e, 0x32, 0xa8, 0x4d, 0xea, 0x9e, 0xf0, 0xc5, 0x4b, 0x43, 0xa2, - 0xd0, 0x52, 0x9c, 0x39, 0x02, 0x26, 0x19, 0xe4, 0xcd, 0xc8, 0x17, 0xc7, 0x77, 0x61, 0xcc, 0x72, - 0x0c, 0x9b, 0x32, 0xee, 0x3b, 0x26, 0x2f, 0x0d, 0x0b, 0x97, 0x17, 0x13, 0x5d, 0xae, 0x76, 0x30, - 0xb5, 0x28, 0x7e, 0xf1, 0xa7, 0x09, 0x28, 0xc8, 0x9d, 0x0d, 0x6e, 0x74, 0x0f, 0x7f, 0x85, 0x60, - 0x3c, 0x2a, 0xe4, 0xf0, 0x95, 0x44, 0xef, 0x31, 0xe2, 0xb4, 0x7c, 0x35, 0x23, 0x2a, 0x48, 0xb4, - 0x56, 0x7c, 0xfa, 0xc7, 0x5f, 0xcf, 0x73, 0x05, 0x3c, 0x1e, 0x79, 0x47, 0x70, 0xfc, 0x2d, 0x02, - 0x38, 0xe8, 0x20, 0xbc, 0x98, 0xe1, 0xea, 0x0f, 0xf9, 0x64, 0x95, 0x34, 0xda, 0xac, 0x60, 0x32, - 0x8d, 0xa7, 0xa2, 0x4c, 0xf4, 0xbd, 0x68, 0x19, 0xec, 0xe3, 0x67, 0x08, 0xf2, 0xca, 0x21, 0x8c, - 0x93, 0xd7, 0x1d, 0x27, 0x30, 0xcb, 0xd3, 0x21, 0x2c, 0xf2, 0xfa, 0xa8, 0xdc, 0x0b, 0x5f, 0x1f, - 0xda, 0xb4, 0x20, 0x33, 0xa9, 0x29, 0x69, 0xa9, 0x86, 0xaa, 0x0b, 0x7f, 0x81, 0x20, 0xaf, 0x88, - 0xca, 0x14, 0x34, 0xe2, 0x44, 0x68, 0x12, 0x0d, 0x99, 0x93, 0xf9, 0xbe, 0x39, 0x79, 0x81, 0xe0, - 0x78, 0x97, 0xd2, 0xc4, 0xd7, 0x13, 0xe9, 0xc4, 0x0b, 0xdb, 0x24, 0x42, 0x6f, 0x08, 0x42, 0x17, - 0xb4, 0x57, 0xfb, 0x10, 0xaa, 0xb6, 0xa4, 0x6b, 0xfc, 0x2b, 0x02, 0xdc, 0x2b, 0xa4, 0x70, 0x35, - 0x4b, 0xa9, 0xaa, 0xd2, 0xaf, 0xbc, 0x34, 0x10, 0x56, 0x16, 0xfb, 0x45, 0xc1, 0xfe, 0x35, 0x3c, - 0xdb, 0x87, 0xbd, 0x2e, 0x35, 0x1d, 0xfe, 0x0e, 0xc1, 0x89, 0x6e, 0x45, 0x8b, 0xdf, 0x1c, 0x54, - 0x04, 0x97, 0xe3, 0x24, 0x86, 0x76, 0x5d, 0x10, 0x5a, 0xc0, 0x7a, 0x0a, 0x42, 0xfa, 0x5e, 0x47, - 0xa9, 0xef, 0xe3, 0xef, 0x11, 0x4c, 0xc4, 0xc8, 0x43, 0xbc, 0x94, 0xad, 0x1b, 0x52, 0x50, 0x5c, - 0x12, 0x14, 0xaf, 0x6a, 0x69, 0x72, 0x56, 0xed, 0x52, 0x57, 0xf8, 0x07, 0x04, 0xb8, 0x57, 0x8e, - 0xa5, 0x28, 0x80, 0x43, 0xc5, 0x67, 0x52, 0x81, 0x5e, 0x15, 0x74, 0x75, 0x6d, 0x3e, 0x0d, 0x5d, - 0x2e, 0xa2, 0x54, 0xd1, 0x3c, 0xfe, 0x4d, 0x7d, 0xf2, 0x87, 0xfa, 0x05, 0x67, 0x2a, 0xb7, 0x2e, - 0x2d, 0x56, 0xbe, 0x39, 0x18, 0x58, 0x16, 0xab, 0x6c, 0x35, 0xdc, 0xaf, 0xd5, 0xf4, 0x8e, 0x34, - 0xfa, 0x19, 0x29, 0x2f, 0xf0, 0xc0, 0x8c, 0x6f, 0x64, 0x39, 0xb8, 0x15, 0x9d, 0x54, 0x4e, 0xad, - 0xcf, 0xb4, 0x1b, 0x82, 0xe8, 0x65, 0xbc, 0x90, 0x86, 0xa8, 0xbe, 0x77, 0x20, 0xad, 0xf6, 0xf1, - 0x8f, 0xa8, 0xfb, 0xfd, 0x2f, 0x89, 0xdf, 0xcc, 0x78, 0xaa, 0xab, 0xdc, 0x53, 0xd6, 0x48, 0xaa, - 0xcc, 0x56, 0x43, 0xe5, 0x8d, 0x7f, 0x47, 0x50, 0x8c, 0x13, 0x2d, 0x29, 0xc8, 0xf6, 0x51, 0x5d, - 0xe5, 0xb7, 0x06, 0x44, 0xab, 0x65, 0xa2, 0x9d, 0x57, 0x6e, 0x2a, 0x3b, 0x06, 0xd2, 0xae, 0xf3, - 0xaf, 0x11, 0xe4, 0x15, 0xf1, 0x9a, 0xe2, 0xe2, 0x8a, 0x13, 0xbb, 0x49, 0x29, 0xbe, 0x24, 0x58, - 0xbd, 0xae, 0x69, 0xfd, 0xee, 0x09, 0x22, 0x1c, 0xb7, 0x69, 0xbd, 0x40, 0x50, 0x50, 0x75, 0x2f, - 0xbe, 0x96, 0x42, 0x63, 0xf1, 0xec, 0xc4, 0x2a, 0x82, 0xd8, 0x5c, 0xdf, 0xe3, 0xac, 0x6a, 0x05, - 0x9e, 0xab, 0x68, 0x7e, 0xf9, 0x1b, 0x04, 0xb3, 0x26, 0x6b, 0x24, 0x91, 0x59, 0x9e, 0x50, 0x55, - 0xdd, 0x7a, 0x5b, 0xf8, 0xae, 0xa3, 0x87, 0xeb, 0x12, 0x67, 0x33, 0xd7, 0xa0, 0x76, 0x85, 0x79, - 0xb6, 0x6e, 0x13, 0x2a, 0x64, 0xb1, 0xfc, 0x5f, 0x6a, 0x34, 0x1d, 0x7e, 0xe8, 0x3f, 0xd3, 0xa5, - 0x1e, 0xe3, 0xcb, 0xdc, 0xf0, 0xed, 0x5b, 0x1b, 0x77, 0x37, 0x8f, 0x0a, 0x1f, 0x97, 0xff, 0x09, - 0x00, 0x00, 0xff, 0xff, 0x50, 0x43, 0x0b, 0xb9, 0x1c, 0x16, 0x00, 0x00, + // 1417 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4f, 0x6f, 0xdc, 0x44, + 0x14, 0x67, 0x36, 0x69, 0x9b, 0xbc, 0x64, 0xb7, 0xed, 0x64, 0x69, 0xb6, 0x9b, 0x46, 0x4d, 0x9d, + 0x52, 0xa2, 0x94, 0xae, 0xd5, 0xf4, 0x0f, 0x74, 0x53, 0x0e, 0x4d, 0x02, 0x55, 0x44, 0x4b, 0xa3, + 0x4d, 0x4b, 0x51, 0x01, 0xad, 0x1c, 0x7b, 0x62, 0x4c, 0xbd, 0x33, 0x8b, 0xc7, 0x9b, 0x90, 0x46, + 0xbd, 0x54, 0x95, 0x90, 0xe0, 0x84, 0x0a, 0xf4, 0x5e, 0x21, 0x0e, 0x5c, 0x39, 0x20, 0x71, 0x40, + 0xf0, 0x19, 0x80, 0x6f, 0xc0, 0x67, 0xe0, 0x8c, 0x3c, 0x1e, 0x6f, 0x3c, 0xbb, 0xce, 0xda, 0x8e, + 0x80, 0xa3, 0xdf, 0xf8, 0xf7, 0xde, 0x6f, 0xde, 0xbc, 0xf7, 0xe6, 0x67, 0xc3, 0x65, 0x9b, 0x31, + 0xdb, 0x25, 0xba, 0xd1, 0x76, 0x74, 0x4e, 0xbc, 0x2d, 0xc7, 0x24, 0x2d, 0x83, 0x1a, 0x36, 0x69, + 0x11, 0xea, 0xeb, 0x5b, 0x17, 0x55, 0xa3, 0x57, 0x6b, 0x7b, 0xcc, 0x67, 0xf8, 0x74, 0x88, 0xaa, + 0x19, 0x6d, 0xa7, 0xd6, 0x87, 0xaa, 0x6d, 0x5d, 0xac, 0x9e, 0x8a, 0xb9, 0x35, 0x28, 0x65, 0xbe, + 0xe1, 0x3b, 0x8c, 0xf2, 0x10, 0x5e, 0xad, 0xf4, 0x07, 0x95, 0x2b, 0x7a, 0x1a, 0x1d, 0x8f, 0x70, + 0xd6, 0xf1, 0x4c, 0x12, 0xb9, 0x9a, 0x95, 0x00, 0x97, 0x51, 0xdb, 0xeb, 0x50, 0xea, 0x50, 0x5b, + 0x67, 0x6d, 0xe2, 0x29, 0xf1, 0x4e, 0xca, 0x97, 0xc4, 0xd3, 0x46, 0x67, 0x53, 0x37, 0xe8, 0x8e, + 0x5c, 0x9a, 0xe9, 0x5d, 0xda, 0x74, 0x88, 0x6b, 0x35, 0x5b, 0x06, 0x7f, 0x28, 0xdf, 0x38, 0xd5, + 0xfb, 0x06, 0xf7, 0xbd, 0x8e, 0xe9, 0xcb, 0xd5, 0x49, 0xb9, 0xea, 0xb5, 0x4d, 0x9d, 0xfb, 0x86, + 0xdf, 0x91, 0x31, 0xb5, 0x17, 0x08, 0x26, 0x6e, 0x39, 0xdc, 0x5f, 0x0f, 0x77, 0xc1, 0x1b, 0xe4, + 0xd3, 0x0e, 0xe1, 0x3e, 0xae, 0xc1, 0x44, 0xdb, 0x63, 0x56, 0xc7, 0x24, 0x5e, 0xb3, 0xed, 0xb1, + 0x4f, 0x88, 0xe9, 0x37, 0x1d, 0xab, 0x82, 0x66, 0xd0, 0xdc, 0x68, 0xe3, 0x78, 0xb4, 0xb4, 0x16, + 0xae, 0xac, 0x5a, 0x78, 0x0a, 0x46, 0xdb, 0x86, 0x4d, 0x9a, 0xdc, 0x79, 0x44, 0x2a, 0x87, 0x66, + 0xd0, 0xdc, 0xa1, 0xc6, 0x48, 0x60, 0x58, 0x77, 0x1e, 0x11, 0x3c, 0x0d, 0x20, 0x16, 0x7d, 0xf6, + 0x90, 0xd0, 0xca, 0x61, 0xe1, 0x43, 0xbc, 0x7e, 0x37, 0x30, 0xe0, 0xd3, 0x30, 0x66, 0x32, 0xca, + 0x3b, 0x2d, 0xe2, 0x05, 0x31, 0x8e, 0x88, 0x75, 0x88, 0x4c, 0xab, 0x96, 0xf6, 0x25, 0x82, 0xb2, + 0x4a, 0x92, 0xb7, 0x19, 0xe5, 0x04, 0xbf, 0x03, 0x23, 0x32, 0xfd, 0xbc, 0x82, 0x66, 0x86, 0xe6, + 0xc6, 0x16, 0xf4, 0x5a, 0xca, 0x99, 0xd7, 0x6e, 0x8b, 0x27, 0x4b, 0xfa, 0x6a, 0x74, 0x1d, 0xe0, + 0x73, 0x70, 0x94, 0x92, 0xcf, 0xfc, 0x66, 0x8c, 0x6a, 0x41, 0x50, 0x29, 0x06, 0xe6, 0xb5, 0x88, + 0xae, 0x76, 0x15, 0x8e, 0xdf, 0x24, 0x11, 0x97, 0x28, 0x5f, 0x67, 0x60, 0x5c, 0x3a, 0x6a, 0x52, + 0xa3, 0x45, 0x64, 0xa2, 0xc6, 0xa4, 0xed, 0x5d, 0xa3, 0x45, 0x34, 0x03, 0xca, 0xcb, 0x1e, 0x31, + 0x7c, 0xd2, 0x03, 0x5d, 0x85, 0x23, 0xf2, 0x35, 0x81, 0x3a, 0xc0, 0x1e, 0x22, 0xbc, 0x76, 0x0d, + 0xca, 0x2b, 0xc4, 0x25, 0x7d, 0x21, 0x32, 0xb0, 0x5b, 0x84, 0x13, 0xf7, 0xa8, 0x75, 0x40, 0xb0, + 0x05, 0x93, 0x7d, 0x60, 0x79, 0x44, 0xff, 0xe2, 0xee, 0xfe, 0x44, 0x30, 0xb9, 0x97, 0xf9, 0x65, + 0x46, 0x37, 0x1d, 0x3b, 0x3b, 0xc9, 0xa0, 0x44, 0x4d, 0x81, 0x09, 0x8a, 0x2c, 0x3c, 0xd9, 0x91, + 0xd0, 0xb0, 0x6a, 0xe1, 0xfb, 0x30, 0xbc, 0xe5, 0x90, 0xed, 0xca, 0xd0, 0x0c, 0x9a, 0x2b, 0x2d, + 0x2c, 0xa7, 0x72, 0xdc, 0x87, 0x47, 0x2d, 0x7c, 0x7a, 0xcf, 0x21, 0xdb, 0x0d, 0xe1, 0x50, 0x3b, + 0x03, 0xb0, 0x67, 0xc3, 0xa3, 0x70, 0x68, 0xe9, 0xc6, 0xfa, 0xea, 0xf2, 0xb1, 0x97, 0xf0, 0x08, + 0x0c, 0xbf, 0x7d, 0xef, 0xd6, 0xad, 0x63, 0x48, 0x7b, 0x04, 0x27, 0x63, 0xd5, 0x1d, 0xbe, 0xcd, + 0x73, 0x6c, 0x4c, 0x6d, 0xaf, 0x42, 0x6f, 0x7b, 0x29, 0xad, 0x39, 0xa4, 0xb6, 0xa6, 0xf6, 0x04, + 0x41, 0x35, 0x29, 0xb8, 0x3c, 0xbd, 0xeb, 0x70, 0x34, 0x8a, 0x1e, 0xa6, 0x2a, 0xea, 0xb3, 0x89, + 0x78, 0x86, 0xa2, 0x93, 0x2a, 0x71, 0xc5, 0x4b, 0xe6, 0x8e, 0xda, 0x85, 0xaa, 0xd2, 0x19, 0xb9, + 0x8f, 0xb6, 0x0e, 0x25, 0x95, 0xa6, 0x88, 0xb3, 0x0f, 0xcb, 0xa2, 0xc2, 0x52, 0xfb, 0x09, 0xc1, + 0xc9, 0xf5, 0xce, 0x46, 0xcb, 0xf1, 0x43, 0xc3, 0xba, 0x18, 0xdc, 0x39, 0x82, 0x37, 0xa0, 0x28, + 0xeb, 0x2a, 0x9c, 0xf9, 0x32, 0xf6, 0x85, 0xd4, 0x1a, 0x52, 0xe2, 0x8d, 0x9b, 0xb1, 0x27, 0x3c, + 0x0b, 0xc5, 0x2d, 0xc3, 0x75, 0x2c, 0xc3, 0x27, 0x4d, 0x46, 0xdd, 0x1d, 0x71, 0x6e, 0x23, 0x8d, + 0xf1, 0xc8, 0x78, 0x87, 0xba, 0x3b, 0xda, 0xfb, 0x50, 0x4d, 0x22, 0x2e, 0x8f, 0xae, 0x3f, 0x27, + 0x28, 0x73, 0x4e, 0x9e, 0x22, 0x98, 0x52, 0x67, 0x15, 0x73, 0x5d, 0xd6, 0xf1, 0x73, 0x64, 0x65, + 0x09, 0x8e, 0x78, 0x21, 0x48, 0xe6, 0x63, 0x2e, 0x35, 0x1f, 0x51, 0x90, 0x08, 0xa8, 0x3d, 0x53, + 0x8b, 0x53, 0xae, 0xff, 0x4f, 0xad, 0x81, 0x4f, 0xc0, 0xe1, 0x4d, 0xc7, 0xf5, 0x89, 0x57, 0x19, + 0x16, 0x38, 0xf9, 0x14, 0xdc, 0x46, 0x53, 0x89, 0xac, 0x64, 0xe2, 0x57, 0x60, 0x44, 0x6e, 0x20, + 0x6a, 0x96, 0xec, 0x5b, 0xef, 0x22, 0x33, 0xf7, 0xce, 0x87, 0x50, 0x89, 0xdd, 0x46, 0xb9, 0x8f, + 0x69, 0x1a, 0x40, 0x86, 0xdc, 0x9b, 0x8a, 0xa3, 0xd2, 0xb2, 0x6a, 0x69, 0x0f, 0xa0, 0xfc, 0x16, + 0x35, 0x36, 0xdc, 0xfc, 0x77, 0x42, 0xef, 0xad, 0x5e, 0xe8, 0xbb, 0xd5, 0x3f, 0x80, 0x97, 0x57, + 0x1c, 0xfe, 0x1f, 0x39, 0xff, 0x1c, 0xc1, 0xd4, 0x4d, 0x42, 0x03, 0x85, 0xd5, 0x1d, 0x27, 0x6d, + 0xe6, 0x75, 0x53, 0x73, 0x09, 0x80, 0x92, 0x6d, 0xb5, 0x33, 0xca, 0xd1, 0x31, 0x45, 0x1a, 0xaa, + 0x76, 0x83, 0xee, 0x34, 0x46, 0x29, 0xd9, 0x0e, 0x3d, 0x04, 0x20, 0xe6, 0x5a, 0xea, 0x88, 0xd9, + 0x07, 0xc4, 0x5c, 0x4b, 0xf6, 0xd2, 0xdf, 0x08, 0x4e, 0x25, 0x33, 0x91, 0xf5, 0x92, 0x61, 0xbb, + 0x25, 0x28, 0x74, 0x77, 0x59, 0x70, 0x2c, 0x7c, 0x17, 0x4a, 0xe6, 0xc7, 0x06, 0xb5, 0x49, 0xd3, + 0x13, 0xbe, 0x78, 0x65, 0x48, 0x14, 0x5a, 0x86, 0x99, 0x23, 0x60, 0x92, 0x41, 0xd1, 0x8c, 0x3d, + 0x71, 0x7c, 0x1b, 0xc6, 0x2c, 0xc7, 0xb0, 0x29, 0xe3, 0xbe, 0x63, 0xf2, 0xca, 0xb0, 0x70, 0x79, + 0x3e, 0xd5, 0xe5, 0x4a, 0x17, 0xd3, 0x88, 0xe3, 0x17, 0xfe, 0x98, 0x80, 0x92, 0x3c, 0xd9, 0xf0, + 0x46, 0xf7, 0xf0, 0x57, 0x08, 0xc6, 0xe3, 0x42, 0x0e, 0x5f, 0x4e, 0xf5, 0x9e, 0x20, 0x4e, 0xab, + 0x57, 0x72, 0xa2, 0xc2, 0x44, 0x6b, 0xe5, 0x27, 0xbf, 0xff, 0xf5, 0xac, 0x50, 0xc2, 0xe3, 0xb1, + 0x0f, 0x06, 0x8e, 0xbf, 0x45, 0x00, 0x7b, 0x1d, 0x84, 0x17, 0x72, 0x5c, 0xfd, 0x11, 0x9f, 0xbc, + 0x92, 0x46, 0x9b, 0x15, 0x4c, 0xa6, 0xf1, 0x54, 0x9c, 0x89, 0xbe, 0x1b, 0x2f, 0x83, 0xc7, 0xf8, + 0x29, 0x82, 0xa2, 0x32, 0x84, 0x71, 0xfa, 0xbe, 0x93, 0x04, 0x66, 0x75, 0x3a, 0x82, 0xc5, 0xbe, + 0x3e, 0x6a, 0x77, 0xa2, 0xaf, 0x0f, 0x6d, 0x5a, 0x90, 0x99, 0xd4, 0x94, 0xb4, 0xd4, 0x23, 0xd5, + 0x85, 0xbf, 0x40, 0x50, 0x54, 0x44, 0x65, 0x06, 0x1a, 0x49, 0x22, 0x34, 0x8d, 0x86, 0xcc, 0xc9, + 0xfc, 0xc0, 0x9c, 0x3c, 0x47, 0x70, 0xb4, 0x47, 0x69, 0xe2, 0xd7, 0x53, 0xe9, 0x24, 0x0b, 0xdb, + 0x34, 0x42, 0xaf, 0x09, 0x42, 0xe7, 0xb4, 0xb3, 0x03, 0x08, 0xd5, 0x3b, 0xd2, 0x35, 0xfe, 0x19, + 0x01, 0xee, 0x17, 0x52, 0xb8, 0x9e, 0xa7, 0x54, 0x55, 0xe9, 0x57, 0x5d, 0x3c, 0x10, 0x56, 0x16, + 0xfb, 0x79, 0xc1, 0xfe, 0x15, 0x3c, 0x3b, 0x80, 0xbd, 0x2e, 0x35, 0x1d, 0xfe, 0x15, 0xc1, 0xb1, + 0x5e, 0x45, 0x8b, 0xdf, 0x38, 0xa8, 0x08, 0xae, 0x26, 0x49, 0x0c, 0xed, 0x23, 0x41, 0xe8, 0x3e, + 0xd6, 0x33, 0x10, 0xd2, 0x77, 0xbb, 0x4a, 0xfd, 0xf1, 0x83, 0xb3, 0x58, 0x4b, 0x87, 0xe0, 0xef, + 0x10, 0x4c, 0x24, 0x88, 0x48, 0xbc, 0x98, 0xaf, 0x67, 0x32, 0x6c, 0x64, 0x51, 0x6c, 0xe4, 0x8a, + 0x96, 0x25, 0xb3, 0xf5, 0x1e, 0x0d, 0x86, 0xbf, 0x47, 0x80, 0xfb, 0x45, 0x5b, 0x86, 0x32, 0xd9, + 0x57, 0xa2, 0xa6, 0x95, 0xf1, 0x15, 0x41, 0x57, 0xd7, 0xe6, 0xb3, 0xd0, 0xe5, 0x22, 0x4a, 0x1d, + 0xcd, 0xe3, 0x5f, 0xd4, 0x1f, 0x03, 0x91, 0xca, 0xc1, 0xb9, 0x8a, 0xb2, 0x47, 0xb1, 0x55, 0xaf, + 0x1f, 0x0c, 0x2c, 0x4b, 0x5a, 0x36, 0x24, 0x1e, 0xd4, 0x90, 0x7a, 0x57, 0x40, 0xfd, 0x88, 0x94, + 0xef, 0xf4, 0xd0, 0x8c, 0xaf, 0xe5, 0x19, 0xef, 0x8a, 0x9a, 0xaa, 0x66, 0x56, 0x71, 0xda, 0x35, + 0x41, 0xf4, 0x12, 0xbe, 0x98, 0x85, 0xa8, 0xbe, 0xbb, 0x27, 0xc0, 0x1e, 0xe3, 0x1f, 0x50, 0xef, + 0x5f, 0x02, 0x49, 0xfc, 0x7a, 0xce, 0xd9, 0xaf, 0x72, 0xcf, 0x58, 0x23, 0x99, 0x32, 0x5b, 0x8f, + 0xf4, 0x39, 0xfe, 0x0d, 0x41, 0x39, 0x49, 0xda, 0x64, 0x20, 0x3b, 0x40, 0x9b, 0x55, 0xdf, 0x3c, + 0x20, 0x5a, 0x2d, 0x13, 0xed, 0x8c, 0x72, 0x9f, 0xd9, 0x09, 0x90, 0xa0, 0xce, 0xbf, 0x46, 0x50, + 0x54, 0x24, 0x6e, 0x86, 0xeb, 0x2d, 0x49, 0x12, 0xa7, 0xa5, 0xf8, 0x82, 0x60, 0xf5, 0xaa, 0x36, + 0x68, 0x96, 0xd5, 0x89, 0x70, 0x1c, 0xd0, 0x7a, 0x8e, 0xa0, 0xa4, 0xaa, 0x63, 0x7c, 0x35, 0x83, + 0x12, 0xe3, 0xf9, 0x89, 0xd5, 0x04, 0xb1, 0xb9, 0x81, 0xe3, 0xac, 0x6e, 0x85, 0x9e, 0xeb, 0x68, + 0x7e, 0xe9, 0x1b, 0x04, 0xb3, 0x26, 0x6b, 0xa5, 0x91, 0x59, 0x9a, 0x50, 0xb5, 0xdf, 0x5a, 0x20, + 0x8f, 0xd7, 0xd0, 0x83, 0x35, 0x89, 0xb3, 0x99, 0x6b, 0x50, 0xbb, 0xc6, 0x3c, 0x5b, 0xb7, 0x09, + 0x15, 0xe2, 0x59, 0xfe, 0x55, 0x35, 0xda, 0x0e, 0xdf, 0xf7, 0xcf, 0xea, 0x62, 0x9f, 0xf1, 0x45, + 0x61, 0xf8, 0xe6, 0x8d, 0xf5, 0xdb, 0x1b, 0x87, 0x85, 0x8f, 0x4b, 0xff, 0x04, 0x00, 0x00, 0xff, + 0xff, 0xc1, 0x4b, 0xa8, 0xee, 0x2b, 0x16, 0x00, 0x00, } diff --git a/googleapis/cloud/speech/v1p1beta1/cloud_speech.pb.go b/googleapis/cloud/speech/v1p1beta1/cloud_speech.pb.go index 7b82cffa..28e3f420 100644 --- a/googleapis/cloud/speech/v1p1beta1/cloud_speech.pb.go +++ b/googleapis/cloud/speech/v1p1beta1/cloud_speech.pb.go @@ -13,6 +13,7 @@ It has these top-level messages: StreamingRecognizeRequest StreamingRecognitionConfig RecognitionConfig + GoogleDataCollectionConfig SpeechContext RecognitionAudio RecognizeResponse @@ -56,21 +57,22 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // // All encodings support only 1 channel (mono) audio. // -// If you send a `FLAC` or `WAV` audio file format in the request, -// then if you specify an encoding in `AudioEncoding`, it must match the -// encoding described in the audio header. If it does not match, then the -// request returns an -// [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT] error code. You can request -// recognition for `WAV` files that contain either `LINEAR16` or `MULAW` -// encoded audio. -// For audio file formats other than `FLAC` or `WAV`, you must -// specify the audio encoding in your `RecognitionConfig`. -// // For best results, the audio source should be captured and transmitted using // a lossless encoding (`FLAC` or `LINEAR16`). The accuracy of the speech -// recognition can be reduced if lossy codecs, which include the other codecs -// listed in this section, are used to capture or transmit the audio, -// particularly if background noise is present. +// recognition can be reduced if lossy codecs are used to capture or transmit +// audio, particularly if background noise is present. Lossy codecs include +// `MULAW`, `AMR`, `AMR_WB`, `OGG_OPUS`, and `SPEEX_WITH_HEADER_BYTE`. +// +// The `FLAC` and `WAV` audio file formats include a header that describes the +// included audio content. You can request recognition for `WAV` files that +// contain either `LINEAR16` or `MULAW` encoded audio. +// If you send `FLAC` or `WAV` audio file format in +// your request, you do not need to specify an `AudioEncoding`; the audio +// encoding format is determined from the file header. If you specify +// an `AudioEncoding` when you send send `FLAC` or `WAV` audio, the +// encoding configuration must match the encoding described in the audio +// header; otherwise the request returns an +// [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT] error code. type RecognitionConfig_AudioEncoding int32 const ( @@ -78,7 +80,7 @@ const ( RecognitionConfig_ENCODING_UNSPECIFIED RecognitionConfig_AudioEncoding = 0 // Uncompressed 16-bit signed little-endian samples (Linear PCM). RecognitionConfig_LINEAR16 RecognitionConfig_AudioEncoding = 1 - // [`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio + // `FLAC` (Free Lossless Audio // Codec) is the recommended encoding because it is // lossless--therefore recognition is not compromised--and // requires only about half the bandwidth of `LINEAR16`. `FLAC` stream @@ -139,6 +141,32 @@ func (RecognitionConfig_AudioEncoding) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 0} } +// Speech content will not be logged until authorized consent is opted in. +// Once it is opted in, this flag enables/disables logging to override that +// consent. default = ENABLED (logging due to consent). +type GoogleDataCollectionConfig_LoggingConsentState int32 + +const ( + GoogleDataCollectionConfig_ENABLED GoogleDataCollectionConfig_LoggingConsentState = 0 + GoogleDataCollectionConfig_DISABLED GoogleDataCollectionConfig_LoggingConsentState = 1 +) + +var GoogleDataCollectionConfig_LoggingConsentState_name = map[int32]string{ + 0: "ENABLED", + 1: "DISABLED", +} +var GoogleDataCollectionConfig_LoggingConsentState_value = map[string]int32{ + "ENABLED": 0, + "DISABLED": 1, +} + +func (x GoogleDataCollectionConfig_LoggingConsentState) String() string { + return proto.EnumName(GoogleDataCollectionConfig_LoggingConsentState_name, int32(x)) +} +func (GoogleDataCollectionConfig_LoggingConsentState) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{5, 0} +} + // Indicates the type of speech event. type StreamingRecognizeResponse_SpeechEventType int32 @@ -168,7 +196,7 @@ func (x StreamingRecognizeResponse_SpeechEventType) String() string { return proto.EnumName(StreamingRecognizeResponse_SpeechEventType_name, int32(x)) } func (StreamingRecognizeResponse_SpeechEventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{10, 0} + return fileDescriptor0, []int{11, 0} } // The top-level message sent by the client for the `Recognize` method. @@ -406,13 +434,17 @@ func (m *StreamingRecognitionConfig) GetInterimResults() bool { // Provides information to the recognizer that specifies how to process the // request. type RecognitionConfig struct { - // *Required* Encoding of audio data sent in all `RecognitionAudio` messages. + // Encoding of audio data sent in all `RecognitionAudio` messages. + // This field is optional for `FLAC` and `WAV` audio files and required + // for all other audio formats. For details, see [AudioEncoding][google.cloud.speech.v1p1beta1.RecognitionConfig.AudioEncoding]. Encoding RecognitionConfig_AudioEncoding `protobuf:"varint,1,opt,name=encoding,enum=google.cloud.speech.v1p1beta1.RecognitionConfig_AudioEncoding" json:"encoding,omitempty"` - // *Required* Sample rate in Hertz of the audio data sent in all + // Sample rate in Hertz of the audio data sent in all // `RecognitionAudio` messages. Valid values are: 8000-48000. // 16000 is optimal. For best results, set the sampling rate of the audio // source to 16000 Hz. If that's not possible, use the native sample rate of // the audio source (instead of re-sampling). + // This field is optional for `FLAC` and `WAV` audio files and required + // for all other audio formats. For details, see [AudioEncoding][google.cloud.speech.v1p1beta1.RecognitionConfig.AudioEncoding]. SampleRateHertz int32 `protobuf:"varint,2,opt,name=sample_rate_hertz,json=sampleRateHertz" json:"sample_rate_hertz,omitempty"` // *Required* The language of the supplied audio as a // [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. @@ -443,7 +475,54 @@ type RecognitionConfig struct { // best suited to your domain to get best results. If a model is not // explicitly specified, then we auto-select a model based on the parameters // in the RecognitionConfig. + // <table> + // <tr> + // <td><b>Model</b></td> + // <td><b>Description</b></td> + // </tr> + // <tr> + // <td><code>command_and_search</code></td> + // <td>Best for short queries such as voice commands or voice search.</td> + // </tr> + // <tr> + // <td><code>phone_call</code></td> + // <td>Best for audio that originated from a phone call (typically + // recorded at an 8khz sampling rate).</td> + // </tr> + // <tr> + // <td><code>video</code></td> + // <td>Best for audio that originated from from video or includes multiple + // speakers. Ideally the audio is recorded at a 16khz or greater + // sampling rate. This is a premium model that costs more than the + // standard rate.</td> + // </tr> + // <tr> + // <td><code>default</code></td> + // <td>Best for audio that is not one of the specific audio models. + // For example, long-form audio. Ideally the audio is high-fidelity, + // recorded at a 16khz or greater sampling rate.</td> + // </tr> + // </table> Model string `protobuf:"bytes,13,opt,name=model" json:"model,omitempty"` + // *Optional* Set to true to use an enhanced model for speech recognition. + // You must also set the `model` field to a valid, enhanced model. If + // `use_enhanced` is set to true and the `model` field is not set, then + // `use_enhanced` is ignored. If `use_enhanced` is true and an enhanced + // version of the specified model does not exist, then the speech is + // recognized using the standard version of the specified model. + // + // Enhanced speech models require that you enable audio logging for + // your request. To enable audio logging, set the `loggingConsentState` field + // to ENABLED in the [GoogleDataCollectionConfig][] section of your request. + // You must also opt-in to the audio logging alpha using the instructions in + // the [alpha documentation](/speech/data-sharing). If you set `use_enhanced` + // to true and you have not enabled audio logging, then you will receive + // an error. + UseEnhanced bool `protobuf:"varint,14,opt,name=use_enhanced,json=useEnhanced" json:"use_enhanced,omitempty"` + // *Optional* Contains settings to opt-in to allow Google to + // collect and use data from this request to improve Google's products and + // services. + GoogleDataCollectionOptIn *GoogleDataCollectionConfig `protobuf:"bytes,10,opt,name=google_data_collection_opt_in,json=googleDataCollectionOptIn" json:"google_data_collection_opt_in,omitempty"` } func (m *RecognitionConfig) Reset() { *m = RecognitionConfig{} } @@ -507,6 +586,37 @@ func (m *RecognitionConfig) GetModel() string { return "" } +func (m *RecognitionConfig) GetUseEnhanced() bool { + if m != nil { + return m.UseEnhanced + } + return false +} + +func (m *RecognitionConfig) GetGoogleDataCollectionOptIn() *GoogleDataCollectionConfig { + if m != nil { + return m.GoogleDataCollectionOptIn + } + return nil +} + +// Google data collection opt-in settings. +type GoogleDataCollectionConfig struct { + LoggingConsentState GoogleDataCollectionConfig_LoggingConsentState `protobuf:"varint,1,opt,name=logging_consent_state,json=loggingConsentState,enum=google.cloud.speech.v1p1beta1.GoogleDataCollectionConfig_LoggingConsentState" json:"logging_consent_state,omitempty"` +} + +func (m *GoogleDataCollectionConfig) Reset() { *m = GoogleDataCollectionConfig{} } +func (m *GoogleDataCollectionConfig) String() string { return proto.CompactTextString(m) } +func (*GoogleDataCollectionConfig) ProtoMessage() {} +func (*GoogleDataCollectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +func (m *GoogleDataCollectionConfig) GetLoggingConsentState() GoogleDataCollectionConfig_LoggingConsentState { + if m != nil { + return m.LoggingConsentState + } + return GoogleDataCollectionConfig_ENABLED +} + // Provides "hints" to the speech recognizer to favor specific words and phrases // in the results. type SpeechContext struct { @@ -522,7 +632,7 @@ type SpeechContext struct { func (m *SpeechContext) Reset() { *m = SpeechContext{} } func (m *SpeechContext) String() string { return proto.CompactTextString(m) } func (*SpeechContext) ProtoMessage() {} -func (*SpeechContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } +func (*SpeechContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } func (m *SpeechContext) GetPhrases() []string { if m != nil { @@ -548,7 +658,7 @@ type RecognitionAudio struct { func (m *RecognitionAudio) Reset() { *m = RecognitionAudio{} } func (m *RecognitionAudio) String() string { return proto.CompactTextString(m) } func (*RecognitionAudio) ProtoMessage() {} -func (*RecognitionAudio) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } +func (*RecognitionAudio) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } type isRecognitionAudio_AudioSource interface { isRecognitionAudio_AudioSource() @@ -663,7 +773,7 @@ type RecognizeResponse struct { func (m *RecognizeResponse) Reset() { *m = RecognizeResponse{} } func (m *RecognizeResponse) String() string { return proto.CompactTextString(m) } func (*RecognizeResponse) ProtoMessage() {} -func (*RecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } +func (*RecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } func (m *RecognizeResponse) GetResults() []*SpeechRecognitionResult { if m != nil { @@ -686,7 +796,7 @@ type LongRunningRecognizeResponse struct { func (m *LongRunningRecognizeResponse) Reset() { *m = LongRunningRecognizeResponse{} } func (m *LongRunningRecognizeResponse) String() string { return proto.CompactTextString(m) } func (*LongRunningRecognizeResponse) ProtoMessage() {} -func (*LongRunningRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } +func (*LongRunningRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } func (m *LongRunningRecognizeResponse) GetResults() []*SpeechRecognitionResult { if m != nil { @@ -711,7 +821,7 @@ type LongRunningRecognizeMetadata struct { func (m *LongRunningRecognizeMetadata) Reset() { *m = LongRunningRecognizeMetadata{} } func (m *LongRunningRecognizeMetadata) String() string { return proto.CompactTextString(m) } func (*LongRunningRecognizeMetadata) ProtoMessage() {} -func (*LongRunningRecognizeMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } +func (*LongRunningRecognizeMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } func (m *LongRunningRecognizeMetadata) GetProgressPercent() int32 { if m != nil { @@ -799,7 +909,7 @@ type StreamingRecognizeResponse struct { func (m *StreamingRecognizeResponse) Reset() { *m = StreamingRecognizeResponse{} } func (m *StreamingRecognizeResponse) String() string { return proto.CompactTextString(m) } func (*StreamingRecognizeResponse) ProtoMessage() {} -func (*StreamingRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } +func (*StreamingRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } func (m *StreamingRecognizeResponse) GetError() *google_rpc.Status { if m != nil { @@ -847,7 +957,7 @@ type StreamingRecognitionResult struct { func (m *StreamingRecognitionResult) Reset() { *m = StreamingRecognitionResult{} } func (m *StreamingRecognitionResult) String() string { return proto.CompactTextString(m) } func (*StreamingRecognitionResult) ProtoMessage() {} -func (*StreamingRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } +func (*StreamingRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } func (m *StreamingRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative { if m != nil { @@ -882,7 +992,7 @@ type SpeechRecognitionResult struct { func (m *SpeechRecognitionResult) Reset() { *m = SpeechRecognitionResult{} } func (m *SpeechRecognitionResult) String() string { return proto.CompactTextString(m) } func (*SpeechRecognitionResult) ProtoMessage() {} -func (*SpeechRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } +func (*SpeechRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } func (m *SpeechRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative { if m != nil { @@ -910,7 +1020,7 @@ type SpeechRecognitionAlternative struct { func (m *SpeechRecognitionAlternative) Reset() { *m = SpeechRecognitionAlternative{} } func (m *SpeechRecognitionAlternative) String() string { return proto.CompactTextString(m) } func (*SpeechRecognitionAlternative) ProtoMessage() {} -func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } +func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } func (m *SpeechRecognitionAlternative) GetTranscript() string { if m != nil { @@ -956,7 +1066,7 @@ type WordInfo struct { func (m *WordInfo) Reset() { *m = WordInfo{} } func (m *WordInfo) String() string { return proto.CompactTextString(m) } func (*WordInfo) ProtoMessage() {} -func (*WordInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } +func (*WordInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } func (m *WordInfo) GetStartTime() *google_protobuf3.Duration { if m != nil { @@ -985,6 +1095,7 @@ func init() { proto.RegisterType((*StreamingRecognizeRequest)(nil), "google.cloud.speech.v1p1beta1.StreamingRecognizeRequest") proto.RegisterType((*StreamingRecognitionConfig)(nil), "google.cloud.speech.v1p1beta1.StreamingRecognitionConfig") proto.RegisterType((*RecognitionConfig)(nil), "google.cloud.speech.v1p1beta1.RecognitionConfig") + proto.RegisterType((*GoogleDataCollectionConfig)(nil), "google.cloud.speech.v1p1beta1.GoogleDataCollectionConfig") proto.RegisterType((*SpeechContext)(nil), "google.cloud.speech.v1p1beta1.SpeechContext") proto.RegisterType((*RecognitionAudio)(nil), "google.cloud.speech.v1p1beta1.RecognitionAudio") proto.RegisterType((*RecognizeResponse)(nil), "google.cloud.speech.v1p1beta1.RecognizeResponse") @@ -996,6 +1107,7 @@ func init() { proto.RegisterType((*SpeechRecognitionAlternative)(nil), "google.cloud.speech.v1p1beta1.SpeechRecognitionAlternative") proto.RegisterType((*WordInfo)(nil), "google.cloud.speech.v1p1beta1.WordInfo") proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionConfig_AudioEncoding", RecognitionConfig_AudioEncoding_name, RecognitionConfig_AudioEncoding_value) + proto.RegisterEnum("google.cloud.speech.v1p1beta1.GoogleDataCollectionConfig_LoggingConsentState", GoogleDataCollectionConfig_LoggingConsentState_name, GoogleDataCollectionConfig_LoggingConsentState_value) proto.RegisterEnum("google.cloud.speech.v1p1beta1.StreamingRecognizeResponse_SpeechEventType", StreamingRecognizeResponse_SpeechEventType_name, StreamingRecognizeResponse_SpeechEventType_value) } @@ -1189,89 +1301,98 @@ var _Speech_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("google/cloud/speech/v1p1beta1/cloud_speech.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 1343 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xbb, 0x6f, 0x5b, 0xb7, - 0x1a, 0xf7, 0xb1, 0x2c, 0x3f, 0xbe, 0xf8, 0x21, 0xf3, 0xe6, 0xde, 0xc8, 0x8a, 0x93, 0xeb, 0x7b, - 0x82, 0x9b, 0x38, 0x69, 0x21, 0xd9, 0x6e, 0x91, 0xe6, 0x81, 0x16, 0x90, 0xe5, 0x63, 0x4b, 0x80, - 0x2d, 0x1b, 0xb4, 0x5c, 0xb7, 0x59, 0x08, 0x5a, 0xa2, 0x94, 0x03, 0x48, 0xe4, 0x29, 0x49, 0xa5, - 0xb1, 0xc7, 0xae, 0x45, 0xbb, 0x14, 0xe8, 0xd6, 0xa9, 0x9d, 0x3b, 0x76, 0xe8, 0xd2, 0x3d, 0x6b, - 0x97, 0x8e, 0x1d, 0xfa, 0x47, 0x74, 0x2c, 0x48, 0x9e, 0x23, 0x4b, 0x7e, 0x27, 0x68, 0x80, 0x6e, - 0x87, 0xbf, 0xef, 0xc1, 0x1f, 0x3f, 0x7e, 0x0f, 0x1e, 0x58, 0x6a, 0x09, 0xd1, 0x6a, 0xb3, 0x42, - 0xbd, 0x2d, 0xba, 0x8d, 0x82, 0x8a, 0x18, 0xab, 0x3f, 0x2f, 0xbc, 0x58, 0x8e, 0x96, 0x0f, 0x98, - 0xa6, 0xcb, 0x0e, 0x26, 0x0e, 0xce, 0x47, 0x52, 0x68, 0x81, 0x6e, 0x39, 0x8b, 0xbc, 0x15, 0xe5, - 0x63, 0x51, 0xcf, 0x22, 0x37, 0x1f, 0x3b, 0xa4, 0x51, 0x58, 0xa0, 0x9c, 0x0b, 0x4d, 0x75, 0x28, - 0xb8, 0x72, 0xc6, 0xb9, 0x3b, 0xb1, 0xb4, 0x2d, 0x78, 0x4b, 0x76, 0x39, 0x0f, 0x79, 0xab, 0x20, - 0x22, 0x26, 0x07, 0x94, 0xe6, 0x62, 0x25, 0xbb, 0x3a, 0xe8, 0x36, 0x0b, 0x94, 0x1f, 0xc6, 0xa2, - 0xdb, 0x27, 0x45, 0x8d, 0xae, 0xb3, 0x8d, 0xe5, 0xff, 0x3d, 0x29, 0xd7, 0x61, 0x87, 0x29, 0x4d, - 0x3b, 0x51, 0xac, 0x70, 0x23, 0x56, 0x90, 0x51, 0xbd, 0xa0, 0x34, 0xd5, 0xdd, 0x78, 0x53, 0xff, - 0x7b, 0x0f, 0x32, 0x98, 0xd5, 0x45, 0x8b, 0x87, 0x47, 0x0c, 0xb3, 0xcf, 0xba, 0x4c, 0x69, 0x54, - 0x86, 0xd1, 0xba, 0xe0, 0xcd, 0xb0, 0x95, 0xf5, 0x16, 0xbc, 0xc5, 0x6b, 0x2b, 0x4b, 0xf9, 0x0b, - 0x0f, 0x9f, 0x8f, 0x1d, 0x18, 0x42, 0x25, 0x6b, 0x87, 0x63, 0x7b, 0x14, 0x40, 0x9a, 0x76, 0x1b, - 0xa1, 0xc8, 0x0e, 0x5b, 0x47, 0x85, 0xab, 0x3b, 0x2a, 0x1a, 0x33, 0xec, 0xac, 0xfd, 0x1f, 0x3d, - 0xb8, 0xb9, 0x29, 0x78, 0x0b, 0xbb, 0xd8, 0xfd, 0xf3, 0x09, 0xff, 0xe2, 0xc1, 0xdc, 0xae, 0x96, - 0x8c, 0x76, 0xce, 0xa2, 0xdb, 0x84, 0x8c, 0x4a, 0x84, 0x64, 0x80, 0xf8, 0xe3, 0x4b, 0xf6, 0x3b, - 0xe9, 0xf3, 0xf8, 0x04, 0xe5, 0x21, 0x3c, 0xd3, 0x73, 0xea, 0x20, 0xf4, 0x7f, 0x98, 0xb2, 0x74, - 0xcc, 0x1e, 0x9a, 0x71, 0x6d, 0x0f, 0x35, 0x59, 0x1e, 0xc2, 0x93, 0x16, 0x2e, 0x39, 0x74, 0xf5, - 0x5f, 0x30, 0x7b, 0x4c, 0x47, 0x3a, 0x8e, 0xfe, 0xcf, 0x1e, 0xe4, 0xce, 0xdf, 0xed, 0x6f, 0x8c, - 0xf8, 0x7d, 0xc8, 0xa8, 0x90, 0xb7, 0xda, 0x8c, 0x74, 0xb5, 0x66, 0x92, 0xf2, 0x3a, 0xb3, 0x3c, - 0xc7, 0xf1, 0x8c, 0xc3, 0xf7, 0x12, 0x18, 0xdd, 0x83, 0x99, 0x90, 0x6b, 0x26, 0xc3, 0x0e, 0x91, - 0x4c, 0x75, 0xdb, 0x5a, 0x65, 0x53, 0x56, 0x73, 0x3a, 0x86, 0xb1, 0x43, 0xfd, 0x57, 0x23, 0x30, - 0x7b, 0x9a, 0xf3, 0x33, 0x18, 0x67, 0xbc, 0x2e, 0x1a, 0x21, 0x77, 0xac, 0xa7, 0x57, 0x3e, 0x7a, - 0x5d, 0xd6, 0x79, 0x7b, 0xcb, 0x41, 0xec, 0x05, 0xf7, 0xfc, 0xa1, 0x07, 0x30, 0xab, 0x68, 0x27, - 0x6a, 0x33, 0x22, 0xa9, 0x66, 0xe4, 0x39, 0x93, 0xfa, 0xc8, 0x1e, 0x23, 0x8d, 0x67, 0x9c, 0x00, - 0x53, 0xcd, 0xca, 0x06, 0x46, 0x77, 0x60, 0xaa, 0x4d, 0x79, 0xab, 0x4b, 0x5b, 0x8c, 0xd4, 0x45, - 0x83, 0xd9, 0x43, 0x4c, 0xe0, 0xc9, 0x04, 0x2c, 0x89, 0x06, 0x33, 0x61, 0xe9, 0xd0, 0x97, 0x84, - 0xb6, 0x35, 0x93, 0x9c, 0xea, 0xf0, 0x05, 0x53, 0xd9, 0x11, 0xe7, 0xaf, 0x43, 0x5f, 0x16, 0xfb, - 0x60, 0xa3, 0x1a, 0x49, 0xd1, 0xa4, 0x3c, 0xd4, 0x87, 0xa4, 0x19, 0x1a, 0x51, 0x36, 0xed, 0x22, - 0xd8, 0xc3, 0xd7, 0x2d, 0x8c, 0xf6, 0x60, 0xc6, 0x1d, 0xd2, 0xa5, 0xc4, 0x4b, 0xad, 0xb2, 0xa3, - 0x0b, 0xa9, 0xc5, 0x6b, 0x2b, 0xef, 0x5e, 0x96, 0x78, 0x16, 0x28, 0x39, 0x23, 0x3c, 0xad, 0xfa, - 0x97, 0x0a, 0x7d, 0x00, 0x59, 0xc6, 0xe9, 0x41, 0x9b, 0x91, 0xcf, 0x85, 0x6c, 0x10, 0xd3, 0x7d, - 0x88, 0x68, 0x36, 0x15, 0xd3, 0x2a, 0x3b, 0x6e, 0x99, 0xfc, 0xdb, 0xc9, 0xf7, 0x85, 0x6c, 0xd4, - 0xc2, 0x0e, 0xdb, 0x76, 0x42, 0x74, 0x1d, 0xd2, 0x1d, 0xd1, 0x60, 0xed, 0xec, 0x94, 0x0d, 0x81, - 0x5b, 0xf8, 0x5f, 0x7a, 0x30, 0x35, 0x10, 0x68, 0x94, 0x85, 0xeb, 0x41, 0xb5, 0xb4, 0xbd, 0x56, - 0xa9, 0x6e, 0x90, 0xbd, 0xea, 0xee, 0x4e, 0x50, 0xaa, 0xac, 0x57, 0x82, 0xb5, 0xcc, 0x10, 0x9a, - 0x84, 0xf1, 0xcd, 0x4a, 0x35, 0x28, 0xe2, 0xe5, 0x87, 0x19, 0x0f, 0x8d, 0xc3, 0xc8, 0xfa, 0x66, - 0xb1, 0x94, 0x19, 0x46, 0x13, 0x90, 0xde, 0xda, 0xdb, 0x2c, 0xee, 0x67, 0x52, 0x68, 0x0c, 0x52, - 0xc5, 0x2d, 0x9c, 0x19, 0x41, 0x00, 0xa3, 0xc5, 0x2d, 0x4c, 0xf6, 0x57, 0x33, 0x69, 0x63, 0xb7, - 0xbd, 0xb1, 0x41, 0xb6, 0x77, 0xf6, 0x76, 0x33, 0xa3, 0x28, 0x07, 0xff, 0xd9, 0xdd, 0x09, 0x82, - 0x4f, 0xc8, 0x7e, 0xa5, 0x56, 0x26, 0xe5, 0xa0, 0xb8, 0x16, 0x60, 0xb2, 0xfa, 0x69, 0x2d, 0xc8, - 0x8c, 0xf9, 0xf7, 0x61, 0x6a, 0xe0, 0xf4, 0x28, 0x0b, 0x63, 0xd1, 0x73, 0x49, 0x15, 0x53, 0x59, - 0x6f, 0x21, 0xb5, 0x38, 0x81, 0x93, 0xa5, 0x8f, 0x7b, 0xcd, 0xb4, 0xd7, 0x11, 0x50, 0x0e, 0xc6, - 0x92, 0xf2, 0xf3, 0xe2, 0xf2, 0x4b, 0x00, 0x84, 0x20, 0xd5, 0x95, 0xa1, 0xcd, 0x93, 0x89, 0xf2, - 0x10, 0x36, 0x8b, 0xd5, 0x69, 0x70, 0xd5, 0x49, 0x94, 0xe8, 0xca, 0x3a, 0xf3, 0x59, 0x2f, 0x95, - 0x4d, 0x03, 0x51, 0x91, 0xe0, 0x8a, 0xa1, 0x1d, 0x18, 0x4b, 0x2a, 0x60, 0xd8, 0xde, 0xdf, 0xc3, - 0x2b, 0xdd, 0x5f, 0x1f, 0x39, 0x57, 0x2a, 0x38, 0x71, 0xe3, 0x47, 0x30, 0x7f, 0x76, 0x87, 0x7d, - 0x6b, 0x3b, 0xbe, 0xf2, 0xce, 0xde, 0x72, 0x8b, 0x69, 0xda, 0xa0, 0x9a, 0xc6, 0x79, 0xdd, 0x92, - 0x4c, 0x29, 0x12, 0x31, 0x59, 0x4f, 0x42, 0x98, 0xb6, 0x79, 0x6d, 0xf1, 0x1d, 0x07, 0xa3, 0xc7, - 0x00, 0x4a, 0x53, 0xa9, 0x6d, 0xea, 0xc5, 0xbd, 0x3b, 0x97, 0x10, 0x4c, 0xa6, 0x62, 0xbe, 0x96, - 0x4c, 0x45, 0x3c, 0x61, 0xb5, 0xcd, 0x1a, 0xad, 0x41, 0xa6, 0x4d, 0x95, 0x26, 0xdd, 0xa8, 0x61, - 0x2a, 0xd7, 0x3a, 0x48, 0x5d, 0xea, 0x60, 0xda, 0xd8, 0xec, 0x59, 0x13, 0x03, 0xfa, 0xbf, 0x0f, - 0x9f, 0x6e, 0x97, 0x7d, 0xd1, 0x5b, 0x84, 0x34, 0x93, 0x52, 0xc8, 0xb8, 0x5b, 0xa2, 0xc4, 0xb3, - 0x8c, 0xea, 0xf9, 0x5d, 0x3b, 0x8f, 0xb1, 0x53, 0x40, 0xbb, 0x27, 0xe3, 0xfc, 0x26, 0x23, 0xe1, - 0x44, 0xa8, 0x51, 0x17, 0x66, 0xe3, 0xb2, 0x67, 0x2f, 0x18, 0xd7, 0x44, 0x1f, 0x46, 0xcc, 0x76, - 0x93, 0xe9, 0x95, 0xca, 0x6b, 0xba, 0x3f, 0x3e, 0x54, 0x7c, 0xc3, 0x81, 0xf1, 0x58, 0x3b, 0x8c, - 0x18, 0x8e, 0x5b, 0x4b, 0x0f, 0xf0, 0x37, 0x61, 0xe6, 0x84, 0x0e, 0x9a, 0x87, 0xac, 0x29, 0xb4, - 0x52, 0x99, 0x04, 0x1f, 0x07, 0xd5, 0xda, 0x89, 0x62, 0xbe, 0x09, 0x37, 0x82, 0xea, 0x1a, 0xd9, - 0x5e, 0x27, 0xbb, 0x95, 0xea, 0xc6, 0x66, 0x40, 0xf6, 0x6a, 0xb5, 0x00, 0x17, 0xab, 0xa5, 0x20, - 0xe3, 0xf9, 0x3f, 0x9d, 0x33, 0x91, 0xdc, 0x61, 0x11, 0x81, 0xc9, 0x81, 0x66, 0xe9, 0xd9, 0xe8, - 0x3d, 0x7d, 0xdd, 0x2c, 0xed, 0xeb, 0xac, 0x78, 0xc0, 0x21, 0x9a, 0x83, 0xf1, 0x50, 0x91, 0x66, - 0xc8, 0x69, 0x3b, 0x1e, 0x50, 0x63, 0xa1, 0x5a, 0x37, 0x4b, 0x34, 0x0f, 0x26, 0xa1, 0x0e, 0xc2, - 0x76, 0xa8, 0x0f, 0x6d, 0xf2, 0x0c, 0xe3, 0x63, 0xc0, 0x3f, 0x82, 0x1b, 0xe7, 0x14, 0xc3, 0x5b, - 0x27, 0xed, 0x7f, 0xe7, 0xc1, 0xfc, 0x45, 0xea, 0xe8, 0x36, 0x80, 0x96, 0x94, 0xab, 0xba, 0x0c, - 0x23, 0x57, 0x5e, 0x13, 0xb8, 0x0f, 0x31, 0x72, 0x3b, 0xa8, 0x1b, 0x2c, 0x19, 0xcc, 0xc3, 0xb8, - 0x0f, 0x41, 0x1f, 0x42, 0xda, 0xf4, 0x7c, 0x33, 0x89, 0x0d, 0xf5, 0x7b, 0x97, 0x50, 0x37, 0x03, - 0xa0, 0xc2, 0x9b, 0x02, 0x3b, 0x2b, 0xff, 0x6b, 0x0f, 0xc6, 0x13, 0x0c, 0x3d, 0x1a, 0xa8, 0x62, - 0x57, 0x2a, 0x73, 0xa7, 0x8a, 0x70, 0x2d, 0x7e, 0xfb, 0xf6, 0x17, 0xf1, 0xfb, 0x66, 0xb4, 0x37, - 0xfa, 0xab, 0xff, 0x02, 0xbb, 0x31, 0xc6, 0xed, 0x10, 0x42, 0x08, 0x46, 0x0c, 0x8b, 0x78, 0xfe, - 0xda, 0xef, 0x95, 0xdf, 0x52, 0x30, 0xea, 0x02, 0x86, 0xbe, 0xf5, 0x60, 0xa2, 0x97, 0xf5, 0xe8, - 0x8a, 0x4f, 0xc1, 0xde, 0x2b, 0x2f, 0xb7, 0x74, 0x75, 0x03, 0x57, 0x50, 0xfe, 0xdd, 0x2f, 0x7e, - 0xfd, 0xe3, 0x9b, 0xe1, 0x05, 0xff, 0x66, 0xdf, 0xaf, 0x88, 0x33, 0x7b, 0x22, 0x13, 0xe5, 0x27, - 0xde, 0x03, 0xf4, 0x83, 0x07, 0xd7, 0xcf, 0xea, 0x9c, 0xe8, 0xc9, 0x25, 0x5b, 0x5e, 0xf0, 0x86, - 0xce, 0xdd, 0x4a, 0x6c, 0xfb, 0x7e, 0x52, 0xf2, 0xdb, 0xc9, 0x4f, 0x8a, 0xbf, 0x6c, 0xb9, 0xbd, - 0xe3, 0xdf, 0x3d, 0xcd, 0xad, 0xcf, 0x60, 0x80, 0xe6, 0x57, 0x1e, 0xa0, 0xd3, 0xed, 0x03, 0x3d, - 0x7a, 0x83, 0x8e, 0xe3, 0x28, 0x3e, 0x7e, 0xe3, 0x5e, 0xb5, 0xe8, 0x2d, 0x79, 0xab, 0x47, 0xf0, - 0xbf, 0xba, 0xe8, 0x5c, 0xec, 0x63, 0xf5, 0x9a, 0xbb, 0xfc, 0x1d, 0x93, 0x35, 0x3b, 0xde, 0xb3, - 0x52, 0xac, 0xdd, 0x12, 0xe6, 0x75, 0x96, 0x17, 0xb2, 0x55, 0x68, 0x31, 0x6e, 0x73, 0xaa, 0xe0, - 0x44, 0x34, 0x0a, 0xd5, 0x39, 0xff, 0x91, 0x4f, 0x1d, 0xf0, 0xa7, 0xe7, 0x1d, 0x8c, 0x5a, 0x93, - 0xf7, 0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x2f, 0x7b, 0x24, 0x37, 0x79, 0x0e, 0x00, 0x00, + // 1477 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xbd, 0x6f, 0x1b, 0x47, + 0x16, 0xd7, 0x8a, 0xa2, 0x28, 0x3d, 0x7d, 0x51, 0x63, 0xfb, 0x4c, 0xd1, 0xb2, 0x4f, 0x5e, 0xe3, + 0x6c, 0xd9, 0x77, 0x20, 0x25, 0xdd, 0xc1, 0xe7, 0x0f, 0xdc, 0x01, 0x14, 0xb9, 0x12, 0x09, 0x50, + 0x94, 0x30, 0xa4, 0x4e, 0x77, 0x6e, 0x06, 0x23, 0x72, 0xb8, 0x5a, 0x60, 0xb9, 0xbb, 0xb7, 0x33, + 0xeb, 0x58, 0x4a, 0x95, 0xb4, 0x41, 0xd2, 0x04, 0x48, 0x97, 0x2a, 0xa9, 0x53, 0xa6, 0x48, 0x93, + 0x3e, 0x65, 0xd2, 0xa4, 0x4c, 0x91, 0x2a, 0x7f, 0x41, 0xca, 0x60, 0x66, 0x76, 0x29, 0x52, 0xdf, + 0x16, 0x62, 0x20, 0xdd, 0xce, 0xef, 0x7d, 0xcc, 0x9b, 0xb7, 0xf3, 0x7e, 0xef, 0x0d, 0xac, 0xd8, + 0xbe, 0x6f, 0xbb, 0xac, 0xd8, 0x76, 0xfd, 0xa8, 0x53, 0xe4, 0x01, 0x63, 0xed, 0x83, 0xe2, 0xeb, + 0xd5, 0x60, 0x75, 0x9f, 0x09, 0xba, 0xaa, 0x61, 0xa2, 0xe1, 0x42, 0x10, 0xfa, 0xc2, 0x47, 0x77, + 0xb5, 0x45, 0x41, 0x89, 0x0a, 0xb1, 0xa8, 0x6f, 0x91, 0x5f, 0x8c, 0x1d, 0xd2, 0xc0, 0x29, 0x52, + 0xcf, 0xf3, 0x05, 0x15, 0x8e, 0xef, 0x71, 0x6d, 0x9c, 0x7f, 0x10, 0x4b, 0x5d, 0xdf, 0xb3, 0xc3, + 0xc8, 0xf3, 0x1c, 0xcf, 0x2e, 0xfa, 0x01, 0x0b, 0x87, 0x94, 0x16, 0x62, 0x25, 0xb5, 0xda, 0x8f, + 0xba, 0x45, 0xea, 0x1d, 0xc6, 0xa2, 0x7b, 0x27, 0x45, 0x9d, 0x48, 0xdb, 0xc6, 0xf2, 0x3f, 0x9f, + 0x94, 0x0b, 0xa7, 0xc7, 0xb8, 0xa0, 0xbd, 0x20, 0x56, 0xb8, 0x1d, 0x2b, 0x84, 0x41, 0xbb, 0xc8, + 0x05, 0x15, 0x51, 0xbc, 0xa9, 0xf9, 0x85, 0x01, 0x59, 0xcc, 0xda, 0xbe, 0xed, 0x39, 0x47, 0x0c, + 0xb3, 0xff, 0x47, 0x8c, 0x0b, 0x54, 0x85, 0xf1, 0xb6, 0xef, 0x75, 0x1d, 0x3b, 0x67, 0x2c, 0x19, + 0xcb, 0x53, 0x6b, 0x2b, 0x85, 0x0b, 0x0f, 0x5f, 0x88, 0x1d, 0xc8, 0x80, 0xca, 0xca, 0x0e, 0xc7, + 0xf6, 0xc8, 0x82, 0x34, 0x8d, 0x3a, 0x8e, 0x9f, 0x1b, 0x55, 0x8e, 0x8a, 0x57, 0x77, 0x54, 0x92, + 0x66, 0x58, 0x5b, 0x9b, 0x5f, 0x19, 0x70, 0xa7, 0xee, 0x7b, 0x36, 0xd6, 0xb9, 0xfb, 0xe3, 0x07, + 0xfc, 0xad, 0x01, 0x0b, 0x4d, 0x11, 0x32, 0xda, 0x3b, 0x2b, 0xdc, 0x2e, 0x64, 0x79, 0x22, 0x24, + 0x43, 0x81, 0x3f, 0xbf, 0x64, 0xbf, 0x93, 0x3e, 0x8f, 0x4f, 0x50, 0x1d, 0xc1, 0x73, 0x7d, 0xa7, + 0x1a, 0x42, 0x7f, 0x81, 0x19, 0x15, 0x8e, 0xdc, 0x43, 0x30, 0x4f, 0xa8, 0x43, 0x4d, 0x57, 0x47, + 0xf0, 0xb4, 0x82, 0xcb, 0x1a, 0x5d, 0xbf, 0x01, 0xf3, 0xc7, 0xe1, 0x84, 0x3a, 0x46, 0xf3, 0x1b, + 0x03, 0xf2, 0xe7, 0xef, 0xf6, 0x3b, 0x66, 0xfc, 0x31, 0x64, 0xb9, 0xe3, 0xd9, 0x2e, 0x23, 0x91, + 0x10, 0x2c, 0xa4, 0x5e, 0x9b, 0xa9, 0x38, 0x27, 0xf0, 0x9c, 0xc6, 0x77, 0x13, 0x18, 0x3d, 0x82, + 0x39, 0xc7, 0x13, 0x2c, 0x74, 0x7a, 0x24, 0x64, 0x3c, 0x72, 0x05, 0xcf, 0xa5, 0x94, 0xe6, 0x6c, + 0x0c, 0x63, 0x8d, 0x9a, 0xbf, 0xa4, 0x61, 0xfe, 0x74, 0xcc, 0xaf, 0x60, 0x82, 0x79, 0x6d, 0xbf, + 0xe3, 0x78, 0x3a, 0xea, 0xd9, 0xb5, 0x7f, 0xbf, 0x6d, 0xd4, 0x05, 0xf5, 0x97, 0xad, 0xd8, 0x0b, + 0xee, 0xfb, 0x43, 0x4f, 0x60, 0x9e, 0xd3, 0x5e, 0xe0, 0x32, 0x12, 0x52, 0xc1, 0xc8, 0x01, 0x0b, + 0xc5, 0x91, 0x3a, 0x46, 0x1a, 0xcf, 0x69, 0x01, 0xa6, 0x82, 0x55, 0x25, 0x8c, 0x1e, 0xc0, 0x8c, + 0x4b, 0x3d, 0x3b, 0xa2, 0x36, 0x23, 0x6d, 0xbf, 0xc3, 0xd4, 0x21, 0x26, 0xf1, 0x74, 0x02, 0x96, + 0xfd, 0x0e, 0x93, 0x69, 0xe9, 0xd1, 0x37, 0x84, 0xba, 0x82, 0x85, 0x1e, 0x15, 0xce, 0x6b, 0xc6, + 0x73, 0x63, 0xda, 0x5f, 0x8f, 0xbe, 0x29, 0x0d, 0xc0, 0x52, 0x35, 0x08, 0xfd, 0x2e, 0xf5, 0x1c, + 0x71, 0x48, 0xba, 0x8e, 0x14, 0xe5, 0xd2, 0x3a, 0x83, 0x7d, 0x7c, 0x43, 0xc1, 0x68, 0x17, 0xe6, + 0xf4, 0x21, 0xf5, 0x95, 0x78, 0x23, 0x78, 0x6e, 0x7c, 0x29, 0xb5, 0x3c, 0xb5, 0xf6, 0xb7, 0xcb, + 0x2e, 0x9e, 0x02, 0xca, 0xda, 0x08, 0xcf, 0xf2, 0xc1, 0x25, 0x47, 0xff, 0x84, 0x1c, 0xf3, 0xe8, + 0xbe, 0xcb, 0xc8, 0x7b, 0x7e, 0xd8, 0x21, 0x92, 0x7d, 0x88, 0xdf, 0xed, 0x72, 0x26, 0x78, 0x6e, + 0x42, 0x45, 0x72, 0x4b, 0xcb, 0xf7, 0xfc, 0xb0, 0xd3, 0x72, 0x7a, 0x6c, 0x5b, 0x0b, 0xd1, 0x4d, + 0x48, 0xf7, 0xfc, 0x0e, 0x73, 0x73, 0x33, 0x2a, 0x05, 0x7a, 0x81, 0xee, 0xc3, 0x74, 0xc4, 0x19, + 0x61, 0xde, 0x81, 0xfc, 0xed, 0x9d, 0xdc, 0xac, 0x72, 0x31, 0x15, 0x71, 0x66, 0xc5, 0x10, 0x7a, + 0x1f, 0x62, 0x42, 0x26, 0x1d, 0x2a, 0x28, 0x69, 0xfb, 0xae, 0xcb, 0xda, 0xf2, 0x3f, 0x11, 0x3f, + 0x10, 0xc4, 0xf1, 0x72, 0x70, 0xa5, 0x7a, 0xda, 0x54, 0xd2, 0x0a, 0x15, 0xb4, 0xdc, 0xf7, 0x10, + 0xdf, 0xcf, 0x98, 0x8e, 0x87, 0x65, 0xdb, 0x81, 0xa8, 0x79, 0xe6, 0x47, 0x06, 0xcc, 0x0c, 0x5d, + 0x04, 0x94, 0x83, 0x9b, 0x56, 0xa3, 0xbc, 0x5d, 0xa9, 0x35, 0x36, 0xc9, 0x6e, 0xa3, 0xb9, 0x63, + 0x95, 0x6b, 0x1b, 0x35, 0xab, 0x92, 0x1d, 0x41, 0xd3, 0x30, 0x51, 0xaf, 0x35, 0xac, 0x12, 0x5e, + 0x7d, 0x9a, 0x35, 0xd0, 0x04, 0x8c, 0x6d, 0xd4, 0x4b, 0xe5, 0xec, 0x28, 0x9a, 0x84, 0xf4, 0xd6, + 0x6e, 0xbd, 0xb4, 0x97, 0x4d, 0xa1, 0x0c, 0xa4, 0x4a, 0x5b, 0x38, 0x3b, 0x86, 0x00, 0xc6, 0x4b, + 0x5b, 0x98, 0xec, 0xad, 0x67, 0xd3, 0xd2, 0x6e, 0x7b, 0x73, 0x93, 0x6c, 0xef, 0xec, 0x36, 0xb3, + 0xe3, 0x28, 0x0f, 0x7f, 0x6a, 0xee, 0x58, 0xd6, 0x7f, 0xc9, 0x5e, 0xad, 0x55, 0x25, 0x55, 0xab, + 0x54, 0xb1, 0x30, 0x59, 0xff, 0x5f, 0xcb, 0xca, 0x66, 0xcc, 0xef, 0x0d, 0xc8, 0x9f, 0x7f, 0x0e, + 0xf4, 0x81, 0x01, 0xb7, 0x5c, 0xdf, 0xb6, 0x63, 0xae, 0xe1, 0xcc, 0x13, 0x44, 0xb6, 0x00, 0x16, + 0xd7, 0xc0, 0xd6, 0xb5, 0x53, 0x54, 0xa8, 0x6b, 0xb7, 0x65, 0xed, 0xb5, 0x29, 0x9d, 0xe2, 0x1b, + 0xee, 0x69, 0xd0, 0x5c, 0x81, 0x1b, 0x67, 0xe8, 0xa2, 0x29, 0xc8, 0x58, 0x8d, 0xd2, 0x7a, 0x3d, + 0x49, 0x54, 0xa5, 0xd6, 0xd4, 0x2b, 0xc3, 0x7c, 0x0c, 0x33, 0x43, 0x57, 0x0e, 0xe5, 0x20, 0x13, + 0x1c, 0x84, 0x94, 0x33, 0x9e, 0x33, 0x96, 0x52, 0xcb, 0x93, 0x38, 0x59, 0x9a, 0xb8, 0xdf, 0xc1, + 0xfa, 0x34, 0x8c, 0xf2, 0x90, 0x49, 0x38, 0xcf, 0x88, 0x39, 0x2f, 0x01, 0x10, 0x82, 0x54, 0x14, + 0x3a, 0xaa, 0x38, 0x27, 0xab, 0x23, 0x58, 0x2e, 0xd6, 0x67, 0x41, 0x53, 0x22, 0xe1, 0x7e, 0x14, + 0xb6, 0x99, 0xc9, 0xfa, 0xfc, 0x21, 0x59, 0x9b, 0x07, 0x32, 0x6a, 0xb4, 0x03, 0x99, 0x84, 0x76, + 0x46, 0x55, 0xd1, 0x3c, 0xbd, 0x52, 0xd1, 0x0c, 0x04, 0xa7, 0xf9, 0x09, 0x27, 0x6e, 0xcc, 0x00, + 0x16, 0xcf, 0x6e, 0x6b, 0xef, 0x6c, 0xc7, 0xef, 0x8c, 0xb3, 0xb7, 0xdc, 0x62, 0x82, 0xca, 0x4a, + 0x8a, 0xc9, 0xc4, 0x0e, 0x19, 0xe7, 0x24, 0x60, 0x61, 0x3b, 0x49, 0x61, 0x5a, 0x91, 0x89, 0xc2, + 0x77, 0x34, 0x8c, 0x9e, 0x03, 0x70, 0x41, 0x43, 0xa1, 0xea, 0x3d, 0x6e, 0x98, 0xf9, 0x24, 0xc0, + 0x64, 0x14, 0x29, 0xb4, 0x92, 0x51, 0x04, 0x4f, 0x2a, 0x6d, 0xb9, 0x46, 0x15, 0xc8, 0xba, 0x94, + 0x0b, 0x12, 0x05, 0x1d, 0x49, 0x97, 0xca, 0x41, 0xea, 0x52, 0x07, 0xb3, 0xd2, 0x66, 0x57, 0x99, + 0x48, 0xd0, 0xfc, 0x69, 0xf4, 0x74, 0x8f, 0x1a, 0xc8, 0xde, 0x32, 0xa4, 0x59, 0x18, 0xfa, 0x61, + 0xdc, 0xa2, 0x50, 0xe2, 0x39, 0x0c, 0xda, 0x85, 0xa6, 0x1a, 0x82, 0xb0, 0x56, 0x40, 0xcd, 0x93, + 0x79, 0xbe, 0x4e, 0x1f, 0x3e, 0x91, 0x6a, 0x14, 0xc1, 0x7c, 0xcc, 0xb5, 0xec, 0xb5, 0x2c, 0x3a, + 0x71, 0x18, 0x30, 0x45, 0xe1, 0xb3, 0x6b, 0xb5, 0xb7, 0x74, 0x7f, 0x7c, 0xa8, 0xf8, 0x0f, 0x5b, + 0xd2, 0x63, 0xeb, 0x30, 0x60, 0x38, 0xe6, 0xf3, 0x3e, 0x60, 0xd6, 0x61, 0xee, 0x84, 0x0e, 0x5a, + 0x84, 0x9c, 0x64, 0x8f, 0x72, 0x95, 0x58, 0xff, 0xb1, 0x1a, 0xad, 0x13, 0x0c, 0x75, 0x07, 0x6e, + 0x5b, 0x8d, 0x0a, 0xd9, 0xde, 0x20, 0xcd, 0x5a, 0x63, 0xb3, 0x6e, 0x91, 0xdd, 0x56, 0xcb, 0xc2, + 0xa5, 0x46, 0xd9, 0xca, 0x1a, 0xe6, 0xd7, 0xe7, 0x8c, 0x01, 0xfa, 0xb0, 0x88, 0xc0, 0xf4, 0x50, + 0x87, 0x32, 0x54, 0xf6, 0x5e, 0xbe, 0xed, 0x2d, 0x1d, 0x68, 0x67, 0x78, 0xc8, 0x21, 0x5a, 0x80, + 0x09, 0x87, 0x93, 0xae, 0xe3, 0x51, 0x37, 0x9e, 0x0a, 0x32, 0x0e, 0xdf, 0x90, 0x4b, 0xb4, 0x08, + 0xf2, 0x42, 0xed, 0x3b, 0xae, 0x23, 0x0e, 0xd5, 0xe5, 0x19, 0xc5, 0xc7, 0x80, 0x79, 0x04, 0xb7, + 0xcf, 0x29, 0x86, 0x77, 0x1e, 0xb4, 0xf9, 0xb9, 0x01, 0x8b, 0x17, 0xa9, 0xa3, 0x7b, 0x00, 0x22, + 0xa4, 0x1e, 0x6f, 0x87, 0x4e, 0xa0, 0xcb, 0x6b, 0x12, 0x0f, 0x20, 0x52, 0xae, 0xa6, 0xa3, 0x0e, + 0x4b, 0xa6, 0xa1, 0x51, 0x3c, 0x80, 0xa0, 0x7f, 0x41, 0x5a, 0x36, 0x5a, 0x39, 0xfe, 0xc8, 0xd0, + 0x1f, 0x5d, 0x12, 0xba, 0xec, 0xba, 0x35, 0xaf, 0xeb, 0x63, 0x6d, 0x65, 0x7e, 0x62, 0xc0, 0x44, + 0x82, 0xa1, 0x67, 0x43, 0x55, 0xac, 0x4b, 0x65, 0xe1, 0x54, 0x11, 0x56, 0xe2, 0x07, 0xc7, 0x60, + 0x11, 0xff, 0x43, 0xce, 0x53, 0x9d, 0xc1, 0xea, 0xbf, 0xc0, 0x2e, 0xc3, 0x3c, 0xd5, 0xf9, 0x11, + 0x82, 0x31, 0x19, 0x45, 0x3c, 0xf4, 0xa8, 0xef, 0xb5, 0x1f, 0x53, 0x30, 0xae, 0x13, 0x86, 0x3e, + 0x33, 0x60, 0xb2, 0x7f, 0xeb, 0xd1, 0x15, 0xe7, 0xef, 0xfe, 0x68, 0x9d, 0x5f, 0xb9, 0xba, 0x81, + 0x2e, 0x28, 0xf3, 0xe1, 0x87, 0x3f, 0xfc, 0xfc, 0xe9, 0xe8, 0x92, 0x79, 0x67, 0xe0, 0xfd, 0xa7, + 0xcd, 0x5e, 0x84, 0x89, 0xf2, 0x0b, 0xe3, 0x09, 0xfa, 0xd2, 0x80, 0x9b, 0x67, 0x31, 0x27, 0x7a, + 0x71, 0xc9, 0x96, 0x17, 0x3c, 0x5c, 0xf2, 0x77, 0x13, 0xdb, 0x81, 0x97, 0x61, 0x61, 0x3b, 0x79, + 0x19, 0x9a, 0xab, 0x2a, 0xb6, 0xbf, 0x9a, 0x0f, 0x4f, 0xc7, 0x36, 0x60, 0x30, 0x14, 0xe6, 0xc7, + 0x06, 0xa0, 0xd3, 0xf4, 0x81, 0x9e, 0x5d, 0x83, 0x71, 0x74, 0x88, 0xcf, 0xaf, 0xcd, 0x55, 0xcb, + 0xc6, 0x8a, 0xb1, 0x7e, 0x04, 0xf7, 0xdb, 0x7e, 0xef, 0x62, 0x1f, 0xeb, 0x53, 0xfa, 0xe7, 0xef, + 0xc8, 0x5b, 0xb3, 0x63, 0xbc, 0x2a, 0xc7, 0xda, 0xb6, 0x2f, 0x47, 0xe2, 0x82, 0x1f, 0xda, 0x45, + 0x9b, 0x79, 0xea, 0x4e, 0x15, 0xb5, 0x88, 0x06, 0x0e, 0x3f, 0xe7, 0xf1, 0xfe, 0x52, 0x03, 0xbf, + 0x1a, 0xc6, 0xfe, 0xb8, 0x32, 0xf9, 0xfb, 0x6f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x88, 0x22, 0xc3, + 0x54, 0xee, 0x0f, 0x00, 0x00, } diff --git a/googleapis/cloud/texttospeech/v1beta1/cloud_tts.pb.go b/googleapis/cloud/texttospeech/v1beta1/cloud_tts.pb.go index aefcc3d4..8dd0f8e9 100644 --- a/googleapis/cloud/texttospeech/v1beta1/cloud_tts.pb.go +++ b/googleapis/cloud/texttospeech/v1beta1/cloud_tts.pb.go @@ -116,6 +116,15 @@ func (AudioEncoding) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, // The top-level message sent by the client for the `ListVoices` method. type ListVoicesRequest struct { + // Optional (but recommended) + // [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. If + // specified, the ListVoices call will only return voices that can be used to + // synthesize this language_code. E.g. when specifying "en-NZ", you will get + // supported "en-*" voices; when specifying "no", you will get supported + // "no-*" (Norwegian) and "nb-*" (Norwegian Bokmal) voices; specifying "zh" + // will also get supported "cmn-*" voices; specifying "zh-hk" will also get + // supported "yue-*" voices. + LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` } func (m *ListVoicesRequest) Reset() { *m = ListVoicesRequest{} } @@ -123,6 +132,13 @@ func (m *ListVoicesRequest) String() string { return proto.CompactTex func (*ListVoicesRequest) ProtoMessage() {} func (*ListVoicesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } +func (m *ListVoicesRequest) GetLanguageCode() string { + if m != nil { + return m.LanguageCode + } + return "" +} + // The message returned to the client by the `ListVoices` method. type ListVoicesResponse struct { // The list of voices. @@ -615,58 +631,58 @@ var _TextToSpeech_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("google/cloud/texttospeech/v1beta1/cloud_tts.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 844 bytes of a gzipped FileDescriptorProto + // 846 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xee, 0xd8, 0x71, 0xda, 0xbc, 0x5e, 0x3b, 0xce, 0x10, 0x51, 0x13, 0x51, 0xe4, 0x6e, 0xa8, - 0x64, 0xe5, 0x60, 0x63, 0x97, 0x0f, 0x91, 0x1e, 0xc0, 0xb1, 0xb7, 0xae, 0x25, 0x7f, 0x31, 0x9b, - 0xa4, 0x12, 0x97, 0xd5, 0x64, 0x3d, 0x6c, 0x56, 0xac, 0x67, 0x16, 0xcf, 0x6c, 0x54, 0x7a, 0x44, - 0x9c, 0x39, 0xc0, 0x5f, 0xe0, 0x07, 0xf0, 0x5b, 0x40, 0xe2, 0x17, 0xf0, 0x0f, 0xb8, 0x70, 0x44, - 0x33, 0xbb, 0x71, 0x1d, 0x07, 0x51, 0x97, 0x03, 0xb7, 0x9d, 0x67, 0xfc, 0x3c, 0xf3, 0xbe, 0xcf, - 0x3c, 0x7e, 0x07, 0x5a, 0x81, 0x10, 0x41, 0xc4, 0x9a, 0x7e, 0x24, 0x92, 0x59, 0x53, 0xb1, 0x17, - 0x4a, 0x09, 0x19, 0x33, 0xe6, 0x5f, 0x36, 0xaf, 0x5a, 0x17, 0x4c, 0xd1, 0x56, 0xba, 0xe5, 0x29, - 0x25, 0x1b, 0xf1, 0x42, 0x28, 0x81, 0x1f, 0xa6, 0x94, 0x86, 0xc1, 0x1b, 0xab, 0x94, 0x46, 0x46, - 0x39, 0x78, 0x37, 0x53, 0xa5, 0x71, 0xd8, 0xa4, 0x9c, 0x0b, 0x45, 0x55, 0x28, 0x78, 0x26, 0x60, - 0xbf, 0x05, 0x7b, 0xc3, 0x50, 0xaa, 0x73, 0x11, 0xfa, 0x4c, 0x12, 0xf6, 0x4d, 0xc2, 0xa4, 0xb2, - 0xcf, 0x01, 0xaf, 0x82, 0x32, 0x16, 0x5c, 0x32, 0xfc, 0x39, 0x6c, 0x5f, 0x19, 0xa4, 0x8a, 0x6a, - 0xf9, 0x7a, 0xb1, 0x5d, 0x6f, 0xbc, 0xf6, 0xf0, 0x86, 0x91, 0x20, 0x19, 0xcf, 0xfe, 0x15, 0x41, - 0xc1, 0x20, 0xf8, 0x11, 0x94, 0x23, 0xca, 0x83, 0x84, 0x06, 0xcc, 0xf3, 0xc5, 0x2c, 0xd3, 0xdc, - 0x21, 0xa5, 0x6b, 0xb4, 0xab, 0x41, 0x8c, 0x61, 0x8b, 0xd3, 0x39, 0xab, 0xe6, 0x6a, 0xa8, 0xbe, - 0x43, 0xcc, 0x37, 0x76, 0xa1, 0x28, 0xe5, 0x3c, 0xf2, 0x02, 0xc6, 0x67, 0x6c, 0x51, 0xcd, 0xd7, - 0x50, 0xbd, 0xdc, 0x6e, 0x6f, 0x50, 0x8b, 0x2b, 0xe7, 0x91, 0x39, 0xbd, 0x6f, 0x98, 0x04, 0xb4, - 0x4c, 0xfa, 0x8d, 0x3f, 0x85, 0x77, 0x38, 0x55, 0xc9, 0x82, 0x46, 0x9e, 0xa4, 0xf3, 0x38, 0x62, - 0xde, 0x82, 0x2a, 0xe6, 0x5d, 0xb2, 0x85, 0x7a, 0x59, 0xdd, 0xaa, 0xa1, 0x7a, 0x81, 0xbc, 0x9d, - 0xfd, 0xc0, 0x35, 0xfb, 0x84, 0x2a, 0xf6, 0x4c, 0xef, 0xda, 0xdf, 0xe7, 0xe0, 0xbe, 0xfb, 0x2d, - 0x57, 0x97, 0x4c, 0x86, 0x2f, 0x99, 0x6b, 0xce, 0xcc, 0x8c, 0xc4, 0x7d, 0x28, 0x84, 0x3c, 0x4e, - 0x54, 0x15, 0xd5, 0x50, 0xbd, 0xd8, 0x6e, 0x6d, 0x52, 0x65, 0x26, 0x25, 0x07, 0x9a, 0x48, 0x52, - 0x3e, 0x1e, 0x41, 0xc1, 0x78, 0x68, 0x9c, 0x28, 0xb6, 0x3f, 0xd9, 0xd4, 0x7a, 0x97, 0x45, 0xcc, - 0xd7, 0xf7, 0x3d, 0xa5, 0x0b, 0x3a, 0x97, 0x24, 0x55, 0xc1, 0x5f, 0x80, 0x45, 0x93, 0x59, 0x28, - 0x3c, 0x5f, 0xf0, 0xaf, 0xc2, 0xc0, 0x98, 0x58, 0x6c, 0x37, 0x36, 0x50, 0xed, 0x68, 0x5a, 0xd7, - 0xb0, 0x48, 0x91, 0xbe, 0x5a, 0xd8, 0x43, 0x28, 0xdf, 0x2c, 0x1d, 0xef, 0xc3, 0x96, 0x96, 0x30, - 0xbd, 0xef, 0x3c, 0xbb, 0x43, 0xcc, 0x4a, 0xa3, 0xda, 0xf7, 0xf4, 0x4a, 0x35, 0xaa, 0x57, 0x27, - 0x65, 0xb0, 0x4c, 0xa3, 0x9e, 0x14, 0xc9, 0xc2, 0x67, 0xf6, 0xcf, 0x08, 0xf6, 0xff, 0xa9, 0x01, - 0x7c, 0x08, 0xa5, 0x1b, 0xc1, 0x49, 0xd5, 0x89, 0xb5, 0x9a, 0x9b, 0xff, 0x2d, 0x36, 0xf6, 0x9f, - 0x08, 0x8a, 0x2b, 0x8e, 0xe0, 0xe7, 0x50, 0x4e, 0x7d, 0x65, 0xdc, 0x17, 0xb3, 0x90, 0x07, 0xa6, - 0xbc, 0x72, 0xfb, 0x83, 0x4d, 0x9d, 0x75, 0x32, 0x1e, 0x29, 0xd1, 0xd5, 0xa5, 0x6e, 0x5b, 0xc6, - 0x8c, 0x7e, 0x1d, 0xf2, 0xc0, 0x24, 0xd3, 0xb4, 0x86, 0x88, 0x75, 0x0d, 0xea, 0x38, 0xe2, 0x7d, - 0x28, 0xc4, 0xa1, 0xf2, 0x2f, 0x4d, 0x73, 0x88, 0xa4, 0x0b, 0xfc, 0x3e, 0x94, 0xaf, 0x44, 0x94, - 0xcc, 0x99, 0x17, 0xd0, 0x90, 0x7b, 0xb3, 0x0b, 0x93, 0x67, 0x44, 0xac, 0x14, 0xed, 0xd3, 0x90, - 0xf7, 0x2e, 0xf0, 0x11, 0xec, 0xdd, 0x0e, 0x7e, 0xc1, 0x04, 0x7f, 0x57, 0xae, 0x25, 0xfe, 0x33, - 0xa8, 0xde, 0x0e, 0x7c, 0x36, 0x24, 0x0e, 0xa1, 0xb4, 0x4c, 0x96, 0x62, 0x3c, 0xbd, 0x7d, 0x8b, - 0x58, 0xd7, 0x51, 0xd1, 0xd8, 0xd1, 0x73, 0xd8, 0x5d, 0x73, 0x15, 0x3f, 0x84, 0x07, 0xae, 0x3b, - 0x1a, 0x7a, 0xe7, 0x93, 0x41, 0xd7, 0xf1, 0xfa, 0xce, 0xb8, 0xe7, 0x10, 0xef, 0x6c, 0xec, 0x4e, - 0x9d, 0xee, 0xe0, 0xe9, 0xc0, 0xe9, 0x55, 0xee, 0xe0, 0x7b, 0xb0, 0x35, 0xea, 0x0c, 0x9d, 0x0a, - 0xc2, 0x00, 0xdb, 0x4f, 0x1d, 0xf3, 0x9d, 0xc3, 0x45, 0xb8, 0x3b, 0x76, 0xce, 0x4e, 0x49, 0x67, - 0x58, 0xc9, 0x1f, 0x9d, 0x42, 0xe9, 0x86, 0x8d, 0xf8, 0x3d, 0x38, 0xe8, 0x9c, 0xf5, 0x06, 0x13, - 0xcf, 0x19, 0x77, 0x27, 0xbd, 0xc1, 0xb8, 0xbf, 0xa6, 0x69, 0xc1, 0xbd, 0xe1, 0x60, 0xec, 0x74, - 0x48, 0xeb, 0xe3, 0x0a, 0xc2, 0x77, 0x21, 0x3f, 0x9a, 0x3e, 0xae, 0xe4, 0x34, 0x3c, 0xe9, 0xf7, - 0xbd, 0xc9, 0xf4, 0xcc, 0xad, 0xe4, 0xdb, 0xbf, 0xe7, 0xc0, 0x3a, 0x65, 0x2f, 0xd4, 0xa9, 0x48, - 0x9b, 0xc5, 0x3f, 0x22, 0x80, 0x57, 0x03, 0x12, 0x7f, 0xb8, 0xc1, 0xed, 0xde, 0x1a, 0xb2, 0x07, - 0x1f, 0xbd, 0x21, 0x2b, 0x35, 0xd8, 0xbe, 0xff, 0xdd, 0x6f, 0x7f, 0xfc, 0x94, 0xdb, 0xc3, 0xbb, - 0xcb, 0x37, 0x21, 0x1d, 0xae, 0xf8, 0x17, 0x04, 0x95, 0xf5, 0x6b, 0xc1, 0xc7, 0x6f, 0x30, 0x71, - 0xd6, 0x86, 0xd7, 0xc1, 0x93, 0xff, 0xc4, 0xcd, 0xca, 0x3c, 0x34, 0x65, 0x3e, 0xb0, 0xab, 0xcb, - 0x32, 0x35, 0xff, 0x58, 0x2e, 0x7f, 0x7f, 0x8c, 0x8e, 0x4e, 0x7e, 0x40, 0xf0, 0xc8, 0x17, 0xf3, - 0xd7, 0x9f, 0x73, 0xb2, 0xb7, 0xea, 0xff, 0x54, 0xbf, 0x5c, 0x53, 0xf4, 0xe5, 0x28, 0xe3, 0x05, - 0x42, 0xff, 0xfb, 0x1b, 0x62, 0x11, 0x34, 0x03, 0xc6, 0xcd, 0xbb, 0xd6, 0x4c, 0xb7, 0x68, 0x1c, - 0xca, 0x7f, 0x79, 0x4e, 0x9f, 0xac, 0x82, 0x7f, 0x21, 0x74, 0xb1, 0x6d, 0xc8, 0x8f, 0xff, 0x0e, - 0x00, 0x00, 0xff, 0xff, 0x7f, 0xac, 0x4e, 0x87, 0x8a, 0x07, 0x00, 0x00, + 0x18, 0xee, 0xd8, 0x71, 0xda, 0xbe, 0x5e, 0x3b, 0xce, 0x28, 0xa2, 0x26, 0xa2, 0x28, 0xdd, 0x50, + 0xc9, 0xca, 0xc1, 0xc6, 0x2e, 0x9f, 0xe9, 0x01, 0x1c, 0x7b, 0xeb, 0x5a, 0xf2, 0x17, 0xb3, 0x49, + 0x2a, 0x71, 0x59, 0x4d, 0xd6, 0xc3, 0x66, 0xc5, 0x7a, 0x66, 0xf1, 0x8c, 0xa3, 0xd2, 0x23, 0xe2, + 0xcc, 0x01, 0xfe, 0x02, 0x3f, 0x80, 0xdf, 0x02, 0x12, 0xbf, 0x80, 0x7f, 0xc0, 0x85, 0x23, 0x9a, + 0x99, 0x4d, 0xea, 0x38, 0x88, 0x3a, 0x1c, 0xb8, 0xed, 0x3c, 0xe3, 0xe7, 0x9d, 0xe7, 0x7d, 0xe6, + 0xf1, 0x3b, 0xd0, 0x8c, 0x84, 0x88, 0x12, 0xd6, 0x08, 0x13, 0xb1, 0x98, 0x36, 0x14, 0x7b, 0xa9, + 0x94, 0x90, 0x29, 0x63, 0xe1, 0x79, 0xe3, 0xa2, 0x79, 0xc6, 0x14, 0x6d, 0xda, 0xad, 0x40, 0x29, + 0x59, 0x4f, 0xe7, 0x42, 0x09, 0xfc, 0xc8, 0x52, 0xea, 0x06, 0xaf, 0x2f, 0x53, 0xea, 0x19, 0x65, + 0xf7, 0x9d, 0xac, 0x2a, 0x4d, 0xe3, 0x06, 0xe5, 0x5c, 0x28, 0xaa, 0x62, 0xc1, 0xb3, 0x02, 0xee, + 0x27, 0xb0, 0x3d, 0x88, 0xa5, 0x3a, 0x15, 0x71, 0xc8, 0x24, 0x61, 0xdf, 0x2c, 0x98, 0x54, 0x78, + 0x1f, 0x4a, 0x09, 0xe5, 0xd1, 0x82, 0x46, 0x2c, 0x08, 0xc5, 0x94, 0x55, 0xd1, 0x1e, 0xaa, 0xdd, + 0x27, 0xce, 0x25, 0xd8, 0x11, 0x53, 0xe6, 0x9e, 0x02, 0x5e, 0x66, 0xca, 0x54, 0x70, 0xc9, 0xf0, + 0xe7, 0xb0, 0x79, 0x61, 0x90, 0x2a, 0xda, 0xcb, 0xd7, 0x8a, 0xad, 0x5a, 0xfd, 0x8d, 0x0a, 0xeb, + 0xa6, 0x04, 0xc9, 0x78, 0xee, 0xaf, 0x08, 0x0a, 0x06, 0xc1, 0x8f, 0xa1, 0x7c, 0x4d, 0x86, 0xad, + 0x79, 0x9f, 0x94, 0x96, 0x75, 0x48, 0x8c, 0x61, 0x83, 0xd3, 0x19, 0xab, 0xe6, 0x8c, 0x48, 0xf3, + 0x8d, 0x7d, 0x28, 0x4a, 0x39, 0x4b, 0x82, 0x88, 0xf1, 0x29, 0x9b, 0x57, 0xf3, 0x7b, 0xa8, 0x56, + 0x6e, 0xb5, 0xd6, 0xd0, 0xe2, 0xcb, 0x59, 0x62, 0x4e, 0xef, 0x19, 0x26, 0x01, 0x5d, 0xc6, 0x7e, + 0xe3, 0x4f, 0xe1, 0x6d, 0x4e, 0xd5, 0x62, 0x4e, 0x93, 0x40, 0xd2, 0x59, 0x9a, 0xb0, 0x60, 0x4e, + 0x15, 0x0b, 0xce, 0xd9, 0x5c, 0xbd, 0xaa, 0x6e, 0xec, 0xa1, 0x5a, 0x81, 0xbc, 0x95, 0xfd, 0xc0, + 0x37, 0xfb, 0x84, 0x2a, 0xf6, 0x5c, 0xef, 0xba, 0xdf, 0xe7, 0xe0, 0x81, 0xff, 0x2d, 0x57, 0xe7, + 0x4c, 0xc6, 0xaf, 0x98, 0x6f, 0xce, 0xbc, 0x74, 0xbb, 0x07, 0x85, 0x98, 0xa7, 0x0b, 0x65, 0x5c, + 0x2e, 0xb6, 0x9a, 0xeb, 0xa8, 0xcc, 0x4a, 0xc9, 0xbe, 0x26, 0x12, 0xcb, 0xc7, 0x43, 0x28, 0x18, + 0x0f, 0x8d, 0x13, 0xc5, 0xd6, 0xc7, 0xeb, 0x5a, 0xef, 0xb3, 0x84, 0x85, 0x3a, 0x14, 0x13, 0x3a, + 0xa7, 0x33, 0x49, 0x6c, 0x15, 0xfc, 0x05, 0x38, 0x74, 0x31, 0x8d, 0x45, 0x10, 0x0a, 0xfe, 0x55, + 0x1c, 0x19, 0x13, 0x8b, 0xad, 0xfa, 0x1a, 0x55, 0xdb, 0x9a, 0xd6, 0x31, 0x2c, 0x52, 0xa4, 0xaf, + 0x17, 0xee, 0x00, 0xca, 0xd7, 0xa5, 0xe3, 0x1d, 0xd8, 0xd0, 0x25, 0x6c, 0xc2, 0x9e, 0xdf, 0x21, + 0x66, 0xa5, 0x51, 0xed, 0xbb, 0xbd, 0x52, 0x8d, 0xea, 0xd5, 0x51, 0x19, 0x1c, 0xd3, 0x68, 0x20, + 0xc5, 0x62, 0x1e, 0x32, 0xf7, 0x67, 0x04, 0x3b, 0xff, 0xd4, 0xc0, 0x5a, 0xf9, 0xfd, 0xdf, 0x62, + 0xe3, 0xfe, 0x89, 0xa0, 0xb8, 0xe4, 0x08, 0x7e, 0x01, 0x65, 0xeb, 0x2b, 0xe3, 0xa1, 0x98, 0xc6, + 0x3c, 0x32, 0xf2, 0xca, 0xad, 0xf7, 0xd7, 0x75, 0xd6, 0xcb, 0x78, 0xa4, 0x44, 0x97, 0x97, 0xba, + 0x6d, 0x99, 0x32, 0xfa, 0x75, 0xcc, 0x23, 0x93, 0x4c, 0xd3, 0x1a, 0x22, 0xce, 0x25, 0xa8, 0xe3, + 0x88, 0x77, 0xa0, 0x90, 0xc6, 0x2a, 0x3c, 0x37, 0xcd, 0x21, 0x62, 0x17, 0xf8, 0x3d, 0x28, 0x5f, + 0x88, 0x64, 0x31, 0x63, 0x41, 0x44, 0x63, 0x1e, 0x4c, 0xcf, 0x4c, 0x9e, 0x11, 0x71, 0x2c, 0xda, + 0xa3, 0x31, 0xef, 0x9e, 0xe1, 0x03, 0xd8, 0xbe, 0x19, 0xfc, 0x82, 0x09, 0xfe, 0x96, 0x5c, 0x49, + 0xfc, 0x67, 0x50, 0xbd, 0x19, 0xf8, 0x6c, 0x48, 0xec, 0x43, 0xe9, 0x2a, 0x59, 0x8a, 0x71, 0x7b, + 0xfb, 0x0e, 0x71, 0x2e, 0xa3, 0xa2, 0xb1, 0x83, 0x17, 0xb0, 0xb5, 0xe2, 0x2a, 0x7e, 0x04, 0x0f, + 0x7d, 0x7f, 0x38, 0x08, 0x4e, 0xc7, 0xfd, 0x8e, 0x17, 0xf4, 0xbc, 0x51, 0xd7, 0x23, 0xc1, 0xc9, + 0xc8, 0x9f, 0x78, 0x9d, 0xfe, 0xb3, 0xbe, 0xd7, 0xad, 0xdc, 0xc1, 0xf7, 0x60, 0x63, 0xd8, 0x1e, + 0x78, 0x15, 0x84, 0x01, 0x36, 0x9f, 0x79, 0xe6, 0x3b, 0x87, 0x8b, 0x70, 0x77, 0xe4, 0x9d, 0x1c, + 0x93, 0xf6, 0xa0, 0x92, 0x3f, 0x38, 0x86, 0xd2, 0x35, 0x1b, 0xf1, 0xbb, 0xb0, 0xdb, 0x3e, 0xe9, + 0xf6, 0xc7, 0x81, 0x37, 0xea, 0x8c, 0xbb, 0xfd, 0x51, 0x6f, 0xa5, 0xa6, 0x03, 0xf7, 0x06, 0xfd, + 0x91, 0xd7, 0x26, 0xcd, 0x8f, 0x2a, 0x08, 0xdf, 0x85, 0xfc, 0x70, 0xf2, 0xa4, 0x92, 0xd3, 0xf0, + 0xb8, 0xd7, 0x0b, 0xc6, 0x93, 0x13, 0xbf, 0x92, 0x6f, 0xfd, 0x9e, 0x03, 0xe7, 0x98, 0xbd, 0x54, + 0xc7, 0xc2, 0x36, 0x8b, 0x7f, 0x44, 0x00, 0xaf, 0x07, 0x24, 0xfe, 0x60, 0x8d, 0xdb, 0xbd, 0x31, + 0x89, 0x77, 0x3f, 0xbc, 0x25, 0xcb, 0x1a, 0xec, 0x3e, 0xf8, 0xee, 0xb7, 0x3f, 0x7e, 0xca, 0x6d, + 0xe3, 0xad, 0xab, 0x87, 0xc3, 0x0e, 0x57, 0xfc, 0x0b, 0x82, 0xca, 0xea, 0xb5, 0xe0, 0xc3, 0x5b, + 0x4c, 0x9c, 0x95, 0xe1, 0xb5, 0xfb, 0xf4, 0x3f, 0x71, 0x33, 0x99, 0xfb, 0x46, 0xe6, 0x43, 0xb7, + 0x7a, 0x25, 0x53, 0xf3, 0x0f, 0xe5, 0xd5, 0xef, 0x0f, 0xd1, 0xc1, 0xd1, 0x0f, 0x08, 0x1e, 0x87, + 0x62, 0xf6, 0xe6, 0x73, 0x8e, 0xb6, 0x97, 0xfd, 0x9f, 0xe8, 0xe7, 0x6d, 0x82, 0xbe, 0x1c, 0x66, + 0xbc, 0x48, 0xe8, 0x7f, 0x7f, 0x5d, 0xcc, 0xa3, 0x46, 0xc4, 0xb8, 0x79, 0xfc, 0x1a, 0x76, 0x8b, + 0xa6, 0xb1, 0xfc, 0x97, 0x37, 0xf7, 0xe9, 0x32, 0xf8, 0x17, 0x42, 0x67, 0x9b, 0x86, 0xfc, 0xe4, + 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0xb8, 0x07, 0xd3, 0xaf, 0x07, 0x00, 0x00, } diff --git a/googleapis/cloud/videointelligence/v1p1beta1/video_intelligence.pb.go b/googleapis/cloud/videointelligence/v1p1beta1/video_intelligence.pb.go new file mode 100644 index 00000000..7da3439c --- /dev/null +++ b/googleapis/cloud/videointelligence/v1p1beta1/video_intelligence.pb.go @@ -0,0 +1,1551 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: google/cloud/videointelligence/v1p1beta1/video_intelligence.proto + +/* +Package videointelligence is a generated protocol buffer package. + +It is generated from these files: + google/cloud/videointelligence/v1p1beta1/video_intelligence.proto + +It has these top-level messages: + AnnotateVideoRequest + VideoContext + LabelDetectionConfig + ShotChangeDetectionConfig + ExplicitContentDetectionConfig + FaceConfig + VideoSegment + LabelSegment + LabelFrame + Entity + LabelAnnotation + ExplicitContentFrame + ExplicitContentAnnotation + NormalizedBoundingBox + FaceSegment + FaceDetectionFrame + FaceDetectionAttribute + EmotionAttribute + FaceDetectionAnnotation + VideoAnnotationResults + AnnotateVideoResponse + VideoAnnotationProgress + AnnotateVideoProgress + SpeechTranscriptionConfig + SpeechContext + SpeechTranscription + SpeechRecognitionAlternative + WordInfo +*/ +package videointelligence + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "google.golang.org/genproto/googleapis/api/annotations" +import google_longrunning "google.golang.org/genproto/googleapis/longrunning" +import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" +import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" +import google_rpc "google.golang.org/genproto/googleapis/rpc/status" + +import ( + context "golang.org/x/net/context" + grpc "google.golang.org/grpc" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +// Video annotation feature. +type Feature int32 + +const ( + // Unspecified. + Feature_FEATURE_UNSPECIFIED Feature = 0 + // Label detection. Detect objects, such as dog or flower. + Feature_LABEL_DETECTION Feature = 1 + // Shot change detection. + Feature_SHOT_CHANGE_DETECTION Feature = 2 + // Explicit content detection. + Feature_EXPLICIT_CONTENT_DETECTION Feature = 3 + // Face detection. + Feature_FACE_DETECTION Feature = 8 + // Speech transcription. + Feature_SPEECH_TRANSCRIPTION Feature = 6 +) + +var Feature_name = map[int32]string{ + 0: "FEATURE_UNSPECIFIED", + 1: "LABEL_DETECTION", + 2: "SHOT_CHANGE_DETECTION", + 3: "EXPLICIT_CONTENT_DETECTION", + 8: "FACE_DETECTION", + 6: "SPEECH_TRANSCRIPTION", +} +var Feature_value = map[string]int32{ + "FEATURE_UNSPECIFIED": 0, + "LABEL_DETECTION": 1, + "SHOT_CHANGE_DETECTION": 2, + "EXPLICIT_CONTENT_DETECTION": 3, + "FACE_DETECTION": 8, + "SPEECH_TRANSCRIPTION": 6, +} + +func (x Feature) String() string { + return proto.EnumName(Feature_name, int32(x)) +} +func (Feature) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +// Label detection mode. +type LabelDetectionMode int32 + +const ( + // Unspecified. + LabelDetectionMode_LABEL_DETECTION_MODE_UNSPECIFIED LabelDetectionMode = 0 + // Detect shot-level labels. + LabelDetectionMode_SHOT_MODE LabelDetectionMode = 1 + // Detect frame-level labels. + LabelDetectionMode_FRAME_MODE LabelDetectionMode = 2 + // Detect both shot-level and frame-level labels. + LabelDetectionMode_SHOT_AND_FRAME_MODE LabelDetectionMode = 3 +) + +var LabelDetectionMode_name = map[int32]string{ + 0: "LABEL_DETECTION_MODE_UNSPECIFIED", + 1: "SHOT_MODE", + 2: "FRAME_MODE", + 3: "SHOT_AND_FRAME_MODE", +} +var LabelDetectionMode_value = map[string]int32{ + "LABEL_DETECTION_MODE_UNSPECIFIED": 0, + "SHOT_MODE": 1, + "FRAME_MODE": 2, + "SHOT_AND_FRAME_MODE": 3, +} + +func (x LabelDetectionMode) String() string { + return proto.EnumName(LabelDetectionMode_name, int32(x)) +} +func (LabelDetectionMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +// Bucketized representation of likelihood. +type Likelihood int32 + +const ( + // Unspecified likelihood. + Likelihood_LIKELIHOOD_UNSPECIFIED Likelihood = 0 + // Very unlikely. + Likelihood_VERY_UNLIKELY Likelihood = 1 + // Unlikely. + Likelihood_UNLIKELY Likelihood = 2 + // Possible. + Likelihood_POSSIBLE Likelihood = 3 + // Likely. + Likelihood_LIKELY Likelihood = 4 + // Very likely. + Likelihood_VERY_LIKELY Likelihood = 5 +) + +var Likelihood_name = map[int32]string{ + 0: "LIKELIHOOD_UNSPECIFIED", + 1: "VERY_UNLIKELY", + 2: "UNLIKELY", + 3: "POSSIBLE", + 4: "LIKELY", + 5: "VERY_LIKELY", +} +var Likelihood_value = map[string]int32{ + "LIKELIHOOD_UNSPECIFIED": 0, + "VERY_UNLIKELY": 1, + "UNLIKELY": 2, + "POSSIBLE": 3, + "LIKELY": 4, + "VERY_LIKELY": 5, +} + +func (x Likelihood) String() string { + return proto.EnumName(Likelihood_name, int32(x)) +} +func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +// Emotions. +type Emotion int32 + +const ( + // Unspecified emotion. + Emotion_EMOTION_UNSPECIFIED Emotion = 0 + // Amusement. + Emotion_AMUSEMENT Emotion = 1 + // Anger. + Emotion_ANGER Emotion = 2 + // Concentration. + Emotion_CONCENTRATION Emotion = 3 + // Contentment. + Emotion_CONTENTMENT Emotion = 4 + // Desire. + Emotion_DESIRE Emotion = 5 + // Disappointment. + Emotion_DISAPPOINTMENT Emotion = 6 + // Disgust. + Emotion_DISGUST Emotion = 7 + // Elation. + Emotion_ELATION Emotion = 8 + // Embarrassment. + Emotion_EMBARRASSMENT Emotion = 9 + // Interest. + Emotion_INTEREST Emotion = 10 + // Pride. + Emotion_PRIDE Emotion = 11 + // Sadness. + Emotion_SADNESS Emotion = 12 + // Surprise. + Emotion_SURPRISE Emotion = 13 +) + +var Emotion_name = map[int32]string{ + 0: "EMOTION_UNSPECIFIED", + 1: "AMUSEMENT", + 2: "ANGER", + 3: "CONCENTRATION", + 4: "CONTENTMENT", + 5: "DESIRE", + 6: "DISAPPOINTMENT", + 7: "DISGUST", + 8: "ELATION", + 9: "EMBARRASSMENT", + 10: "INTEREST", + 11: "PRIDE", + 12: "SADNESS", + 13: "SURPRISE", +} +var Emotion_value = map[string]int32{ + "EMOTION_UNSPECIFIED": 0, + "AMUSEMENT": 1, + "ANGER": 2, + "CONCENTRATION": 3, + "CONTENTMENT": 4, + "DESIRE": 5, + "DISAPPOINTMENT": 6, + "DISGUST": 7, + "ELATION": 8, + "EMBARRASSMENT": 9, + "INTEREST": 10, + "PRIDE": 11, + "SADNESS": 12, + "SURPRISE": 13, +} + +func (x Emotion) String() string { + return proto.EnumName(Emotion_name, int32(x)) +} +func (Emotion) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +// Video annotation request. +type AnnotateVideoRequest struct { + // Input video location. Currently, only + // [Google Cloud Storage](https://cloud.google.com/storage/) URIs are + // supported, which must be specified in the following format: + // `gs://bucket-id/object-id` (other URI formats return + // [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For more information, see + // [Request URIs](/storage/docs/reference-uris). + // A video URI may include wildcards in `object-id`, and thus identify + // multiple videos. Supported wildcards: '*' to match 0 or more characters; + // '?' to match 1 character. If unset, the input video should be embedded + // in the request as `input_content`. If set, `input_content` should be unset. + InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` + // The video data bytes. + // If unset, the input video(s) should be specified via `input_uri`. + // If set, `input_uri` should be unset. + InputContent []byte `protobuf:"bytes,6,opt,name=input_content,json=inputContent,proto3" json:"input_content,omitempty"` + // Requested video annotation features. + Features []Feature `protobuf:"varint,2,rep,packed,name=features,enum=google.cloud.videointelligence.v1p1beta1.Feature" json:"features,omitempty"` + // Additional video context and/or feature-specific parameters. + VideoContext *VideoContext `protobuf:"bytes,3,opt,name=video_context,json=videoContext" json:"video_context,omitempty"` + // Optional location where the output (in JSON format) should be stored. + // Currently, only [Google Cloud Storage](https://cloud.google.com/storage/) + // URIs are supported, which must be specified in the following format: + // `gs://bucket-id/object-id` (other URI formats return + // [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For more information, see + // [Request URIs](/storage/docs/reference-uris). + OutputUri string `protobuf:"bytes,4,opt,name=output_uri,json=outputUri" json:"output_uri,omitempty"` + // Optional cloud region where annotation should take place. Supported cloud + // regions: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no region + // is specified, a region will be determined based on video file location. + LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId" json:"location_id,omitempty"` +} + +func (m *AnnotateVideoRequest) Reset() { *m = AnnotateVideoRequest{} } +func (m *AnnotateVideoRequest) String() string { return proto.CompactTextString(m) } +func (*AnnotateVideoRequest) ProtoMessage() {} +func (*AnnotateVideoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +func (m *AnnotateVideoRequest) GetInputUri() string { + if m != nil { + return m.InputUri + } + return "" +} + +func (m *AnnotateVideoRequest) GetInputContent() []byte { + if m != nil { + return m.InputContent + } + return nil +} + +func (m *AnnotateVideoRequest) GetFeatures() []Feature { + if m != nil { + return m.Features + } + return nil +} + +func (m *AnnotateVideoRequest) GetVideoContext() *VideoContext { + if m != nil { + return m.VideoContext + } + return nil +} + +func (m *AnnotateVideoRequest) GetOutputUri() string { + if m != nil { + return m.OutputUri + } + return "" +} + +func (m *AnnotateVideoRequest) GetLocationId() string { + if m != nil { + return m.LocationId + } + return "" +} + +// Video context and/or feature-specific parameters. +type VideoContext struct { + // Video segments to annotate. The segments may overlap and are not required + // to be contiguous or span the whole video. If unspecified, each video + // is treated as a single segment. + Segments []*VideoSegment `protobuf:"bytes,1,rep,name=segments" json:"segments,omitempty"` + // Config for LABEL_DETECTION. + LabelDetectionConfig *LabelDetectionConfig `protobuf:"bytes,2,opt,name=label_detection_config,json=labelDetectionConfig" json:"label_detection_config,omitempty"` + // Config for SHOT_CHANGE_DETECTION. + ShotChangeDetectionConfig *ShotChangeDetectionConfig `protobuf:"bytes,3,opt,name=shot_change_detection_config,json=shotChangeDetectionConfig" json:"shot_change_detection_config,omitempty"` + // Config for EXPLICIT_CONTENT_DETECTION. + ExplicitContentDetectionConfig *ExplicitContentDetectionConfig `protobuf:"bytes,4,opt,name=explicit_content_detection_config,json=explicitContentDetectionConfig" json:"explicit_content_detection_config,omitempty"` + // Config for SPEECH_TRANSCRIPTION. + SpeechTranscriptionConfig *SpeechTranscriptionConfig `protobuf:"bytes,6,opt,name=speech_transcription_config,json=speechTranscriptionConfig" json:"speech_transcription_config,omitempty"` + // Config for FACE_DETECTION. + FaceDetectionConfig *FaceConfig `protobuf:"bytes,7,opt,name=face_detection_config,json=faceDetectionConfig" json:"face_detection_config,omitempty"` +} + +func (m *VideoContext) Reset() { *m = VideoContext{} } +func (m *VideoContext) String() string { return proto.CompactTextString(m) } +func (*VideoContext) ProtoMessage() {} +func (*VideoContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func (m *VideoContext) GetSegments() []*VideoSegment { + if m != nil { + return m.Segments + } + return nil +} + +func (m *VideoContext) GetLabelDetectionConfig() *LabelDetectionConfig { + if m != nil { + return m.LabelDetectionConfig + } + return nil +} + +func (m *VideoContext) GetShotChangeDetectionConfig() *ShotChangeDetectionConfig { + if m != nil { + return m.ShotChangeDetectionConfig + } + return nil +} + +func (m *VideoContext) GetExplicitContentDetectionConfig() *ExplicitContentDetectionConfig { + if m != nil { + return m.ExplicitContentDetectionConfig + } + return nil +} + +func (m *VideoContext) GetSpeechTranscriptionConfig() *SpeechTranscriptionConfig { + if m != nil { + return m.SpeechTranscriptionConfig + } + return nil +} + +func (m *VideoContext) GetFaceDetectionConfig() *FaceConfig { + if m != nil { + return m.FaceDetectionConfig + } + return nil +} + +// Config for LABEL_DETECTION. +type LabelDetectionConfig struct { + // What labels should be detected with LABEL_DETECTION, in addition to + // video-level labels or segment-level labels. + // If unspecified, defaults to `SHOT_MODE`. + LabelDetectionMode LabelDetectionMode `protobuf:"varint,1,opt,name=label_detection_mode,json=labelDetectionMode,enum=google.cloud.videointelligence.v1p1beta1.LabelDetectionMode" json:"label_detection_mode,omitempty"` + // Whether the video has been shot from a stationary (i.e. non-moving) camera. + // When set to true, might improve detection accuracy for moving objects. + // Should be used with `SHOT_AND_FRAME_MODE` enabled. + StationaryCamera bool `protobuf:"varint,2,opt,name=stationary_camera,json=stationaryCamera" json:"stationary_camera,omitempty"` + // Model to use for label detection. + // Supported values: "builtin/stable" (the default if unset) and + // "builtin/latest". + Model string `protobuf:"bytes,3,opt,name=model" json:"model,omitempty"` +} + +func (m *LabelDetectionConfig) Reset() { *m = LabelDetectionConfig{} } +func (m *LabelDetectionConfig) String() string { return proto.CompactTextString(m) } +func (*LabelDetectionConfig) ProtoMessage() {} +func (*LabelDetectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +func (m *LabelDetectionConfig) GetLabelDetectionMode() LabelDetectionMode { + if m != nil { + return m.LabelDetectionMode + } + return LabelDetectionMode_LABEL_DETECTION_MODE_UNSPECIFIED +} + +func (m *LabelDetectionConfig) GetStationaryCamera() bool { + if m != nil { + return m.StationaryCamera + } + return false +} + +func (m *LabelDetectionConfig) GetModel() string { + if m != nil { + return m.Model + } + return "" +} + +// Config for SHOT_CHANGE_DETECTION. +type ShotChangeDetectionConfig struct { + // Model to use for shot change detection. + // Supported values: "builtin/stable" (the default if unset) and + // "builtin/latest". + Model string `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` +} + +func (m *ShotChangeDetectionConfig) Reset() { *m = ShotChangeDetectionConfig{} } +func (m *ShotChangeDetectionConfig) String() string { return proto.CompactTextString(m) } +func (*ShotChangeDetectionConfig) ProtoMessage() {} +func (*ShotChangeDetectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +func (m *ShotChangeDetectionConfig) GetModel() string { + if m != nil { + return m.Model + } + return "" +} + +// Config for EXPLICIT_CONTENT_DETECTION. +type ExplicitContentDetectionConfig struct { + // Model to use for explicit content detection. + // Supported values: "builtin/stable" (the default if unset) and + // "builtin/latest". + Model string `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` +} + +func (m *ExplicitContentDetectionConfig) Reset() { *m = ExplicitContentDetectionConfig{} } +func (m *ExplicitContentDetectionConfig) String() string { return proto.CompactTextString(m) } +func (*ExplicitContentDetectionConfig) ProtoMessage() {} +func (*ExplicitContentDetectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } + +func (m *ExplicitContentDetectionConfig) GetModel() string { + if m != nil { + return m.Model + } + return "" +} + +// Config for FACE_DETECTION. +type FaceConfig struct { + // Model to use for face detection. + // Supported values: "builtin/stable" (the default if unset) and + // "builtin/latest". + Model string `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` + // Whether bounding boxes be included in the face annotation output. + IncludeBoundingBoxes bool `protobuf:"varint,2,opt,name=include_bounding_boxes,json=includeBoundingBoxes" json:"include_bounding_boxes,omitempty"` + // Whether to enable emotion detection. Ignored if 'include_bounding_boxes' is + // false. + IncludeEmotions bool `protobuf:"varint,4,opt,name=include_emotions,json=includeEmotions" json:"include_emotions,omitempty"` +} + +func (m *FaceConfig) Reset() { *m = FaceConfig{} } +func (m *FaceConfig) String() string { return proto.CompactTextString(m) } +func (*FaceConfig) ProtoMessage() {} +func (*FaceConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +func (m *FaceConfig) GetModel() string { + if m != nil { + return m.Model + } + return "" +} + +func (m *FaceConfig) GetIncludeBoundingBoxes() bool { + if m != nil { + return m.IncludeBoundingBoxes + } + return false +} + +func (m *FaceConfig) GetIncludeEmotions() bool { + if m != nil { + return m.IncludeEmotions + } + return false +} + +// Video segment. +type VideoSegment struct { + // Time-offset, relative to the beginning of the video, + // corresponding to the start of the segment (inclusive). + StartTimeOffset *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=start_time_offset,json=startTimeOffset" json:"start_time_offset,omitempty"` + // Time-offset, relative to the beginning of the video, + // corresponding to the end of the segment (inclusive). + EndTimeOffset *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=end_time_offset,json=endTimeOffset" json:"end_time_offset,omitempty"` +} + +func (m *VideoSegment) Reset() { *m = VideoSegment{} } +func (m *VideoSegment) String() string { return proto.CompactTextString(m) } +func (*VideoSegment) ProtoMessage() {} +func (*VideoSegment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } + +func (m *VideoSegment) GetStartTimeOffset() *google_protobuf3.Duration { + if m != nil { + return m.StartTimeOffset + } + return nil +} + +func (m *VideoSegment) GetEndTimeOffset() *google_protobuf3.Duration { + if m != nil { + return m.EndTimeOffset + } + return nil +} + +// Video segment level annotation results for label detection. +type LabelSegment struct { + // Video segment where a label was detected. + Segment *VideoSegment `protobuf:"bytes,1,opt,name=segment" json:"segment,omitempty"` + // Confidence that the label is accurate. Range: [0, 1]. + Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` +} + +func (m *LabelSegment) Reset() { *m = LabelSegment{} } +func (m *LabelSegment) String() string { return proto.CompactTextString(m) } +func (*LabelSegment) ProtoMessage() {} +func (*LabelSegment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } + +func (m *LabelSegment) GetSegment() *VideoSegment { + if m != nil { + return m.Segment + } + return nil +} + +func (m *LabelSegment) GetConfidence() float32 { + if m != nil { + return m.Confidence + } + return 0 +} + +// Video frame level annotation results for label detection. +type LabelFrame struct { + // Time-offset, relative to the beginning of the video, corresponding to the + // video frame for this location. + TimeOffset *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=time_offset,json=timeOffset" json:"time_offset,omitempty"` + // Confidence that the label is accurate. Range: [0, 1]. + Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` +} + +func (m *LabelFrame) Reset() { *m = LabelFrame{} } +func (m *LabelFrame) String() string { return proto.CompactTextString(m) } +func (*LabelFrame) ProtoMessage() {} +func (*LabelFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } + +func (m *LabelFrame) GetTimeOffset() *google_protobuf3.Duration { + if m != nil { + return m.TimeOffset + } + return nil +} + +func (m *LabelFrame) GetConfidence() float32 { + if m != nil { + return m.Confidence + } + return 0 +} + +// Detected entity from video analysis. +type Entity struct { + // Opaque entity ID. Some IDs may be available in + // [Google Knowledge Graph Search + // API](https://developers.google.com/knowledge-graph/). + EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"` + // Textual description, e.g. `Fixed-gear bicycle`. + Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` + // Language code for `description` in BCP-47 format. + LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` +} + +func (m *Entity) Reset() { *m = Entity{} } +func (m *Entity) String() string { return proto.CompactTextString(m) } +func (*Entity) ProtoMessage() {} +func (*Entity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } + +func (m *Entity) GetEntityId() string { + if m != nil { + return m.EntityId + } + return "" +} + +func (m *Entity) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *Entity) GetLanguageCode() string { + if m != nil { + return m.LanguageCode + } + return "" +} + +// Label annotation. +type LabelAnnotation struct { + // Detected entity. + Entity *Entity `protobuf:"bytes,1,opt,name=entity" json:"entity,omitempty"` + // Common categories for the detected entity. + // E.g. when the label is `Terrier` the category is likely `dog`. And in some + // cases there might be more than one categories e.g. `Terrier` could also be + // a `pet`. + CategoryEntities []*Entity `protobuf:"bytes,2,rep,name=category_entities,json=categoryEntities" json:"category_entities,omitempty"` + // All video segments where a label was detected. + Segments []*LabelSegment `protobuf:"bytes,3,rep,name=segments" json:"segments,omitempty"` + // All video frames where a label was detected. + Frames []*LabelFrame `protobuf:"bytes,4,rep,name=frames" json:"frames,omitempty"` +} + +func (m *LabelAnnotation) Reset() { *m = LabelAnnotation{} } +func (m *LabelAnnotation) String() string { return proto.CompactTextString(m) } +func (*LabelAnnotation) ProtoMessage() {} +func (*LabelAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } + +func (m *LabelAnnotation) GetEntity() *Entity { + if m != nil { + return m.Entity + } + return nil +} + +func (m *LabelAnnotation) GetCategoryEntities() []*Entity { + if m != nil { + return m.CategoryEntities + } + return nil +} + +func (m *LabelAnnotation) GetSegments() []*LabelSegment { + if m != nil { + return m.Segments + } + return nil +} + +func (m *LabelAnnotation) GetFrames() []*LabelFrame { + if m != nil { + return m.Frames + } + return nil +} + +// Video frame level annotation results for explicit content. +type ExplicitContentFrame struct { + // Time-offset, relative to the beginning of the video, corresponding to the + // video frame for this location. + TimeOffset *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=time_offset,json=timeOffset" json:"time_offset,omitempty"` + // Likelihood of the pornography content.. + PornographyLikelihood Likelihood `protobuf:"varint,2,opt,name=pornography_likelihood,json=pornographyLikelihood,enum=google.cloud.videointelligence.v1p1beta1.Likelihood" json:"pornography_likelihood,omitempty"` +} + +func (m *ExplicitContentFrame) Reset() { *m = ExplicitContentFrame{} } +func (m *ExplicitContentFrame) String() string { return proto.CompactTextString(m) } +func (*ExplicitContentFrame) ProtoMessage() {} +func (*ExplicitContentFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } + +func (m *ExplicitContentFrame) GetTimeOffset() *google_protobuf3.Duration { + if m != nil { + return m.TimeOffset + } + return nil +} + +func (m *ExplicitContentFrame) GetPornographyLikelihood() Likelihood { + if m != nil { + return m.PornographyLikelihood + } + return Likelihood_LIKELIHOOD_UNSPECIFIED +} + +// Explicit content annotation (based on per-frame visual signals only). +// If no explicit content has been detected in a frame, no annotations are +// present for that frame. +type ExplicitContentAnnotation struct { + // All video frames where explicit content was detected. + Frames []*ExplicitContentFrame `protobuf:"bytes,1,rep,name=frames" json:"frames,omitempty"` +} + +func (m *ExplicitContentAnnotation) Reset() { *m = ExplicitContentAnnotation{} } +func (m *ExplicitContentAnnotation) String() string { return proto.CompactTextString(m) } +func (*ExplicitContentAnnotation) ProtoMessage() {} +func (*ExplicitContentAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } + +func (m *ExplicitContentAnnotation) GetFrames() []*ExplicitContentFrame { + if m != nil { + return m.Frames + } + return nil +} + +// Normalized bounding box. +// The normalized vertex coordinates are relative to the original image. +// Range: [0, 1]. +type NormalizedBoundingBox struct { + // Left X coordinate. + Left float32 `protobuf:"fixed32,1,opt,name=left" json:"left,omitempty"` + // Top Y coordinate. + Top float32 `protobuf:"fixed32,2,opt,name=top" json:"top,omitempty"` + // Right X coordinate. + Right float32 `protobuf:"fixed32,3,opt,name=right" json:"right,omitempty"` + // Bottom Y coordinate. + Bottom float32 `protobuf:"fixed32,4,opt,name=bottom" json:"bottom,omitempty"` +} + +func (m *NormalizedBoundingBox) Reset() { *m = NormalizedBoundingBox{} } +func (m *NormalizedBoundingBox) String() string { return proto.CompactTextString(m) } +func (*NormalizedBoundingBox) ProtoMessage() {} +func (*NormalizedBoundingBox) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } + +func (m *NormalizedBoundingBox) GetLeft() float32 { + if m != nil { + return m.Left + } + return 0 +} + +func (m *NormalizedBoundingBox) GetTop() float32 { + if m != nil { + return m.Top + } + return 0 +} + +func (m *NormalizedBoundingBox) GetRight() float32 { + if m != nil { + return m.Right + } + return 0 +} + +func (m *NormalizedBoundingBox) GetBottom() float32 { + if m != nil { + return m.Bottom + } + return 0 +} + +// Video segment level annotation results for face detection. +type FaceSegment struct { + // Video segment where a face was detected. + Segment *VideoSegment `protobuf:"bytes,1,opt,name=segment" json:"segment,omitempty"` +} + +func (m *FaceSegment) Reset() { *m = FaceSegment{} } +func (m *FaceSegment) String() string { return proto.CompactTextString(m) } +func (*FaceSegment) ProtoMessage() {} +func (*FaceSegment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } + +func (m *FaceSegment) GetSegment() *VideoSegment { + if m != nil { + return m.Segment + } + return nil +} + +// Video frame level annotation results for face detection. +type FaceDetectionFrame struct { + // Face attributes in a frame. + // There can be more than one attributes if the same face is detected in + // multiple locations within the current frame. + Attributes []*FaceDetectionAttribute `protobuf:"bytes,1,rep,name=attributes" json:"attributes,omitempty"` + // Time-offset, relative to the beginning of the video, + // corresponding to the video frame for this location. + TimeOffset *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=time_offset,json=timeOffset" json:"time_offset,omitempty"` +} + +func (m *FaceDetectionFrame) Reset() { *m = FaceDetectionFrame{} } +func (m *FaceDetectionFrame) String() string { return proto.CompactTextString(m) } +func (*FaceDetectionFrame) ProtoMessage() {} +func (*FaceDetectionFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } + +func (m *FaceDetectionFrame) GetAttributes() []*FaceDetectionAttribute { + if m != nil { + return m.Attributes + } + return nil +} + +func (m *FaceDetectionFrame) GetTimeOffset() *google_protobuf3.Duration { + if m != nil { + return m.TimeOffset + } + return nil +} + +// Face detection attribute. +type FaceDetectionAttribute struct { + // Normalized Bounding box. + NormalizedBoundingBox *NormalizedBoundingBox `protobuf:"bytes,1,opt,name=normalized_bounding_box,json=normalizedBoundingBox" json:"normalized_bounding_box,omitempty"` + // Emotion attributes. + Emotions []*EmotionAttribute `protobuf:"bytes,2,rep,name=emotions" json:"emotions,omitempty"` +} + +func (m *FaceDetectionAttribute) Reset() { *m = FaceDetectionAttribute{} } +func (m *FaceDetectionAttribute) String() string { return proto.CompactTextString(m) } +func (*FaceDetectionAttribute) ProtoMessage() {} +func (*FaceDetectionAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } + +func (m *FaceDetectionAttribute) GetNormalizedBoundingBox() *NormalizedBoundingBox { + if m != nil { + return m.NormalizedBoundingBox + } + return nil +} + +func (m *FaceDetectionAttribute) GetEmotions() []*EmotionAttribute { + if m != nil { + return m.Emotions + } + return nil +} + +// Emotion attribute. +type EmotionAttribute struct { + // Emotion entry. + Emotion Emotion `protobuf:"varint,1,opt,name=emotion,enum=google.cloud.videointelligence.v1p1beta1.Emotion" json:"emotion,omitempty"` + // Confidence score. + Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"` +} + +func (m *EmotionAttribute) Reset() { *m = EmotionAttribute{} } +func (m *EmotionAttribute) String() string { return proto.CompactTextString(m) } +func (*EmotionAttribute) ProtoMessage() {} +func (*EmotionAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } + +func (m *EmotionAttribute) GetEmotion() Emotion { + if m != nil { + return m.Emotion + } + return Emotion_EMOTION_UNSPECIFIED +} + +func (m *EmotionAttribute) GetScore() float32 { + if m != nil { + return m.Score + } + return 0 +} + +// Face detection annotation. +type FaceDetectionAnnotation struct { + // All video segments where a face was detected. + Segments []*FaceSegment `protobuf:"bytes,1,rep,name=segments" json:"segments,omitempty"` + // All video frames where a face was detected. + Frames []*FaceDetectionFrame `protobuf:"bytes,2,rep,name=frames" json:"frames,omitempty"` +} + +func (m *FaceDetectionAnnotation) Reset() { *m = FaceDetectionAnnotation{} } +func (m *FaceDetectionAnnotation) String() string { return proto.CompactTextString(m) } +func (*FaceDetectionAnnotation) ProtoMessage() {} +func (*FaceDetectionAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } + +func (m *FaceDetectionAnnotation) GetSegments() []*FaceSegment { + if m != nil { + return m.Segments + } + return nil +} + +func (m *FaceDetectionAnnotation) GetFrames() []*FaceDetectionFrame { + if m != nil { + return m.Frames + } + return nil +} + +// Annotation results for a single video. +type VideoAnnotationResults struct { + // Video file location in + // [Google Cloud Storage](https://cloud.google.com/storage/). + InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` + // Label annotations on video level or user specified segment level. + // There is exactly one element for each unique label. + SegmentLabelAnnotations []*LabelAnnotation `protobuf:"bytes,2,rep,name=segment_label_annotations,json=segmentLabelAnnotations" json:"segment_label_annotations,omitempty"` + // Label annotations on shot level. + // There is exactly one element for each unique label. + ShotLabelAnnotations []*LabelAnnotation `protobuf:"bytes,3,rep,name=shot_label_annotations,json=shotLabelAnnotations" json:"shot_label_annotations,omitempty"` + // Label annotations on frame level. + // There is exactly one element for each unique label. + FrameLabelAnnotations []*LabelAnnotation `protobuf:"bytes,4,rep,name=frame_label_annotations,json=frameLabelAnnotations" json:"frame_label_annotations,omitempty"` + // Face detection annotations. + FaceDetectionAnnotations []*FaceDetectionAnnotation `protobuf:"bytes,13,rep,name=face_detection_annotations,json=faceDetectionAnnotations" json:"face_detection_annotations,omitempty"` + // Shot annotations. Each shot is represented as a video segment. + ShotAnnotations []*VideoSegment `protobuf:"bytes,6,rep,name=shot_annotations,json=shotAnnotations" json:"shot_annotations,omitempty"` + // Explicit content annotation. + ExplicitAnnotation *ExplicitContentAnnotation `protobuf:"bytes,7,opt,name=explicit_annotation,json=explicitAnnotation" json:"explicit_annotation,omitempty"` + // Speech transcription. + SpeechTranscriptions []*SpeechTranscription `protobuf:"bytes,11,rep,name=speech_transcriptions,json=speechTranscriptions" json:"speech_transcriptions,omitempty"` + // If set, indicates an error. Note that for a single `AnnotateVideoRequest` + // some videos may succeed and some may fail. + Error *google_rpc.Status `protobuf:"bytes,9,opt,name=error" json:"error,omitempty"` +} + +func (m *VideoAnnotationResults) Reset() { *m = VideoAnnotationResults{} } +func (m *VideoAnnotationResults) String() string { return proto.CompactTextString(m) } +func (*VideoAnnotationResults) ProtoMessage() {} +func (*VideoAnnotationResults) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } + +func (m *VideoAnnotationResults) GetInputUri() string { + if m != nil { + return m.InputUri + } + return "" +} + +func (m *VideoAnnotationResults) GetSegmentLabelAnnotations() []*LabelAnnotation { + if m != nil { + return m.SegmentLabelAnnotations + } + return nil +} + +func (m *VideoAnnotationResults) GetShotLabelAnnotations() []*LabelAnnotation { + if m != nil { + return m.ShotLabelAnnotations + } + return nil +} + +func (m *VideoAnnotationResults) GetFrameLabelAnnotations() []*LabelAnnotation { + if m != nil { + return m.FrameLabelAnnotations + } + return nil +} + +func (m *VideoAnnotationResults) GetFaceDetectionAnnotations() []*FaceDetectionAnnotation { + if m != nil { + return m.FaceDetectionAnnotations + } + return nil +} + +func (m *VideoAnnotationResults) GetShotAnnotations() []*VideoSegment { + if m != nil { + return m.ShotAnnotations + } + return nil +} + +func (m *VideoAnnotationResults) GetExplicitAnnotation() *ExplicitContentAnnotation { + if m != nil { + return m.ExplicitAnnotation + } + return nil +} + +func (m *VideoAnnotationResults) GetSpeechTranscriptions() []*SpeechTranscription { + if m != nil { + return m.SpeechTranscriptions + } + return nil +} + +func (m *VideoAnnotationResults) GetError() *google_rpc.Status { + if m != nil { + return m.Error + } + return nil +} + +// Video annotation response. Included in the `response` +// field of the `Operation` returned by the `GetOperation` +// call of the `google::longrunning::Operations` service. +type AnnotateVideoResponse struct { + // Annotation results for all videos specified in `AnnotateVideoRequest`. + AnnotationResults []*VideoAnnotationResults `protobuf:"bytes,1,rep,name=annotation_results,json=annotationResults" json:"annotation_results,omitempty"` +} + +func (m *AnnotateVideoResponse) Reset() { *m = AnnotateVideoResponse{} } +func (m *AnnotateVideoResponse) String() string { return proto.CompactTextString(m) } +func (*AnnotateVideoResponse) ProtoMessage() {} +func (*AnnotateVideoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } + +func (m *AnnotateVideoResponse) GetAnnotationResults() []*VideoAnnotationResults { + if m != nil { + return m.AnnotationResults + } + return nil +} + +// Annotation progress for a single video. +type VideoAnnotationProgress struct { + // Video file location in + // [Google Cloud Storage](https://cloud.google.com/storage/). + InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` + // Approximate percentage processed thus far. + // Guaranteed to be 100 when fully processed. + ProgressPercent int32 `protobuf:"varint,2,opt,name=progress_percent,json=progressPercent" json:"progress_percent,omitempty"` + // Time when the request was received. + StartTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"` + // Time of the most recent update. + UpdateTime *google_protobuf4.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` +} + +func (m *VideoAnnotationProgress) Reset() { *m = VideoAnnotationProgress{} } +func (m *VideoAnnotationProgress) String() string { return proto.CompactTextString(m) } +func (*VideoAnnotationProgress) ProtoMessage() {} +func (*VideoAnnotationProgress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } + +func (m *VideoAnnotationProgress) GetInputUri() string { + if m != nil { + return m.InputUri + } + return "" +} + +func (m *VideoAnnotationProgress) GetProgressPercent() int32 { + if m != nil { + return m.ProgressPercent + } + return 0 +} + +func (m *VideoAnnotationProgress) GetStartTime() *google_protobuf4.Timestamp { + if m != nil { + return m.StartTime + } + return nil +} + +func (m *VideoAnnotationProgress) GetUpdateTime() *google_protobuf4.Timestamp { + if m != nil { + return m.UpdateTime + } + return nil +} + +// Video annotation progress. Included in the `metadata` +// field of the `Operation` returned by the `GetOperation` +// call of the `google::longrunning::Operations` service. +type AnnotateVideoProgress struct { + // Progress metadata for all videos specified in `AnnotateVideoRequest`. + AnnotationProgress []*VideoAnnotationProgress `protobuf:"bytes,1,rep,name=annotation_progress,json=annotationProgress" json:"annotation_progress,omitempty"` +} + +func (m *AnnotateVideoProgress) Reset() { *m = AnnotateVideoProgress{} } +func (m *AnnotateVideoProgress) String() string { return proto.CompactTextString(m) } +func (*AnnotateVideoProgress) ProtoMessage() {} +func (*AnnotateVideoProgress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } + +func (m *AnnotateVideoProgress) GetAnnotationProgress() []*VideoAnnotationProgress { + if m != nil { + return m.AnnotationProgress + } + return nil +} + +// Config for SPEECH_TRANSCRIPTION. +type SpeechTranscriptionConfig struct { + // *Required* The language of the supplied audio as a + // [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. + // Example: "en-US". + // See [Language Support](https://cloud.google.com/speech/docs/languages) + // for a list of the currently supported language codes. + LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` + // *Optional* Maximum number of recognition hypotheses to be returned. + // Specifically, the maximum number of `SpeechRecognitionAlternative` messages + // within each `SpeechRecognitionResult`. The server may return fewer than + // `max_alternatives`. Valid values are `0`-`30`. A value of `0` or `1` will + // return a maximum of one. If omitted, will return a maximum of one. + MaxAlternatives int32 `protobuf:"varint,2,opt,name=max_alternatives,json=maxAlternatives" json:"max_alternatives,omitempty"` + // *Optional* If set to `true`, the server will attempt to filter out + // profanities, replacing all but the initial character in each filtered word + // with asterisks, e.g. "f***". If set to `false` or omitted, profanities + // won't be filtered out. + FilterProfanity bool `protobuf:"varint,3,opt,name=filter_profanity,json=filterProfanity" json:"filter_profanity,omitempty"` + // *Optional* A means to provide context to assist the speech recognition. + SpeechContexts []*SpeechContext `protobuf:"bytes,4,rep,name=speech_contexts,json=speechContexts" json:"speech_contexts,omitempty"` + // *Optional* For file formats, such as MXF or MKV, supporting multiple audio + // tracks, specify up to two tracks. Default: track 0. + AudioTracks []int32 `protobuf:"varint,6,rep,packed,name=audio_tracks,json=audioTracks" json:"audio_tracks,omitempty"` +} + +func (m *SpeechTranscriptionConfig) Reset() { *m = SpeechTranscriptionConfig{} } +func (m *SpeechTranscriptionConfig) String() string { return proto.CompactTextString(m) } +func (*SpeechTranscriptionConfig) ProtoMessage() {} +func (*SpeechTranscriptionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } + +func (m *SpeechTranscriptionConfig) GetLanguageCode() string { + if m != nil { + return m.LanguageCode + } + return "" +} + +func (m *SpeechTranscriptionConfig) GetMaxAlternatives() int32 { + if m != nil { + return m.MaxAlternatives + } + return 0 +} + +func (m *SpeechTranscriptionConfig) GetFilterProfanity() bool { + if m != nil { + return m.FilterProfanity + } + return false +} + +func (m *SpeechTranscriptionConfig) GetSpeechContexts() []*SpeechContext { + if m != nil { + return m.SpeechContexts + } + return nil +} + +func (m *SpeechTranscriptionConfig) GetAudioTracks() []int32 { + if m != nil { + return m.AudioTracks + } + return nil +} + +// Provides "hints" to the speech recognizer to favor specific words and phrases +// in the results. +type SpeechContext struct { + // *Optional* A list of strings containing words and phrases "hints" so that + // the speech recognition is more likely to recognize them. This can be used + // to improve the accuracy for specific words and phrases, for example, if + // specific commands are typically spoken by the user. This can also be used + // to add additional words to the vocabulary of the recognizer. See + // [usage limits](https://cloud.google.com/speech/limits#content). + Phrases []string `protobuf:"bytes,1,rep,name=phrases" json:"phrases,omitempty"` +} + +func (m *SpeechContext) Reset() { *m = SpeechContext{} } +func (m *SpeechContext) String() string { return proto.CompactTextString(m) } +func (*SpeechContext) ProtoMessage() {} +func (*SpeechContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } + +func (m *SpeechContext) GetPhrases() []string { + if m != nil { + return m.Phrases + } + return nil +} + +// A speech recognition result corresponding to a portion of the audio. +type SpeechTranscription struct { + // Output only. May contain one or more recognition hypotheses (up to the + // maximum specified in `max_alternatives`). + // These alternatives are ordered in terms of accuracy, with the top (first) + // alternative being the most probable, as ranked by the recognizer. + Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"` +} + +func (m *SpeechTranscription) Reset() { *m = SpeechTranscription{} } +func (m *SpeechTranscription) String() string { return proto.CompactTextString(m) } +func (*SpeechTranscription) ProtoMessage() {} +func (*SpeechTranscription) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } + +func (m *SpeechTranscription) GetAlternatives() []*SpeechRecognitionAlternative { + if m != nil { + return m.Alternatives + } + return nil +} + +// Alternative hypotheses (a.k.a. n-best list). +type SpeechRecognitionAlternative struct { + // Output only. Transcript text representing the words that the user spoke. + Transcript string `protobuf:"bytes,1,opt,name=transcript" json:"transcript,omitempty"` + // Output only. The confidence estimate between 0.0 and 1.0. A higher number + // indicates an estimated greater likelihood that the recognized words are + // correct. This field is typically provided only for the top hypothesis, and + // only for `is_final=true` results. Clients should not rely on the + // `confidence` field as it is not guaranteed to be accurate or consistent. + // The default of 0.0 is a sentinel value indicating `confidence` was not set. + Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` + // Output only. A list of word-specific information for each recognized word. + Words []*WordInfo `protobuf:"bytes,3,rep,name=words" json:"words,omitempty"` +} + +func (m *SpeechRecognitionAlternative) Reset() { *m = SpeechRecognitionAlternative{} } +func (m *SpeechRecognitionAlternative) String() string { return proto.CompactTextString(m) } +func (*SpeechRecognitionAlternative) ProtoMessage() {} +func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } + +func (m *SpeechRecognitionAlternative) GetTranscript() string { + if m != nil { + return m.Transcript + } + return "" +} + +func (m *SpeechRecognitionAlternative) GetConfidence() float32 { + if m != nil { + return m.Confidence + } + return 0 +} + +func (m *SpeechRecognitionAlternative) GetWords() []*WordInfo { + if m != nil { + return m.Words + } + return nil +} + +// Word-specific information for recognized words. Word information is only +// included in the response when certain request parameters are set, such +// as `enable_word_time_offsets`. +type WordInfo struct { + // Output only. Time offset relative to the beginning of the audio, and + // corresponding to the start of the spoken word. This field is only set if + // `enable_word_time_offsets=true` and only in the top hypothesis. This is an + // experimental feature and the accuracy of the time offset can vary. + StartTime *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"` + // Output only. Time offset relative to the beginning of the audio, and + // corresponding to the end of the spoken word. This field is only set if + // `enable_word_time_offsets=true` and only in the top hypothesis. This is an + // experimental feature and the accuracy of the time offset can vary. + EndTime *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` + // Output only. The word corresponding to this set of information. + Word string `protobuf:"bytes,3,opt,name=word" json:"word,omitempty"` +} + +func (m *WordInfo) Reset() { *m = WordInfo{} } +func (m *WordInfo) String() string { return proto.CompactTextString(m) } +func (*WordInfo) ProtoMessage() {} +func (*WordInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } + +func (m *WordInfo) GetStartTime() *google_protobuf3.Duration { + if m != nil { + return m.StartTime + } + return nil +} + +func (m *WordInfo) GetEndTime() *google_protobuf3.Duration { + if m != nil { + return m.EndTime + } + return nil +} + +func (m *WordInfo) GetWord() string { + if m != nil { + return m.Word + } + return "" +} + +func init() { + proto.RegisterType((*AnnotateVideoRequest)(nil), "google.cloud.videointelligence.v1p1beta1.AnnotateVideoRequest") + proto.RegisterType((*VideoContext)(nil), "google.cloud.videointelligence.v1p1beta1.VideoContext") + proto.RegisterType((*LabelDetectionConfig)(nil), "google.cloud.videointelligence.v1p1beta1.LabelDetectionConfig") + proto.RegisterType((*ShotChangeDetectionConfig)(nil), "google.cloud.videointelligence.v1p1beta1.ShotChangeDetectionConfig") + proto.RegisterType((*ExplicitContentDetectionConfig)(nil), "google.cloud.videointelligence.v1p1beta1.ExplicitContentDetectionConfig") + proto.RegisterType((*FaceConfig)(nil), "google.cloud.videointelligence.v1p1beta1.FaceConfig") + proto.RegisterType((*VideoSegment)(nil), "google.cloud.videointelligence.v1p1beta1.VideoSegment") + proto.RegisterType((*LabelSegment)(nil), "google.cloud.videointelligence.v1p1beta1.LabelSegment") + proto.RegisterType((*LabelFrame)(nil), "google.cloud.videointelligence.v1p1beta1.LabelFrame") + proto.RegisterType((*Entity)(nil), "google.cloud.videointelligence.v1p1beta1.Entity") + proto.RegisterType((*LabelAnnotation)(nil), "google.cloud.videointelligence.v1p1beta1.LabelAnnotation") + proto.RegisterType((*ExplicitContentFrame)(nil), "google.cloud.videointelligence.v1p1beta1.ExplicitContentFrame") + proto.RegisterType((*ExplicitContentAnnotation)(nil), "google.cloud.videointelligence.v1p1beta1.ExplicitContentAnnotation") + proto.RegisterType((*NormalizedBoundingBox)(nil), "google.cloud.videointelligence.v1p1beta1.NormalizedBoundingBox") + proto.RegisterType((*FaceSegment)(nil), "google.cloud.videointelligence.v1p1beta1.FaceSegment") + proto.RegisterType((*FaceDetectionFrame)(nil), "google.cloud.videointelligence.v1p1beta1.FaceDetectionFrame") + proto.RegisterType((*FaceDetectionAttribute)(nil), "google.cloud.videointelligence.v1p1beta1.FaceDetectionAttribute") + proto.RegisterType((*EmotionAttribute)(nil), "google.cloud.videointelligence.v1p1beta1.EmotionAttribute") + proto.RegisterType((*FaceDetectionAnnotation)(nil), "google.cloud.videointelligence.v1p1beta1.FaceDetectionAnnotation") + proto.RegisterType((*VideoAnnotationResults)(nil), "google.cloud.videointelligence.v1p1beta1.VideoAnnotationResults") + proto.RegisterType((*AnnotateVideoResponse)(nil), "google.cloud.videointelligence.v1p1beta1.AnnotateVideoResponse") + proto.RegisterType((*VideoAnnotationProgress)(nil), "google.cloud.videointelligence.v1p1beta1.VideoAnnotationProgress") + proto.RegisterType((*AnnotateVideoProgress)(nil), "google.cloud.videointelligence.v1p1beta1.AnnotateVideoProgress") + proto.RegisterType((*SpeechTranscriptionConfig)(nil), "google.cloud.videointelligence.v1p1beta1.SpeechTranscriptionConfig") + proto.RegisterType((*SpeechContext)(nil), "google.cloud.videointelligence.v1p1beta1.SpeechContext") + proto.RegisterType((*SpeechTranscription)(nil), "google.cloud.videointelligence.v1p1beta1.SpeechTranscription") + proto.RegisterType((*SpeechRecognitionAlternative)(nil), "google.cloud.videointelligence.v1p1beta1.SpeechRecognitionAlternative") + proto.RegisterType((*WordInfo)(nil), "google.cloud.videointelligence.v1p1beta1.WordInfo") + proto.RegisterEnum("google.cloud.videointelligence.v1p1beta1.Feature", Feature_name, Feature_value) + proto.RegisterEnum("google.cloud.videointelligence.v1p1beta1.LabelDetectionMode", LabelDetectionMode_name, LabelDetectionMode_value) + proto.RegisterEnum("google.cloud.videointelligence.v1p1beta1.Likelihood", Likelihood_name, Likelihood_value) + proto.RegisterEnum("google.cloud.videointelligence.v1p1beta1.Emotion", Emotion_name, Emotion_value) +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// Client API for VideoIntelligenceService service + +type VideoIntelligenceServiceClient interface { + // Performs asynchronous video annotation. Progress and results can be + // retrieved through the `google.longrunning.Operations` interface. + // `Operation.metadata` contains `AnnotateVideoProgress` (progress). + // `Operation.response` contains `AnnotateVideoResponse` (results). + AnnotateVideo(ctx context.Context, in *AnnotateVideoRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) +} + +type videoIntelligenceServiceClient struct { + cc *grpc.ClientConn +} + +func NewVideoIntelligenceServiceClient(cc *grpc.ClientConn) VideoIntelligenceServiceClient { + return &videoIntelligenceServiceClient{cc} +} + +func (c *videoIntelligenceServiceClient) AnnotateVideo(ctx context.Context, in *AnnotateVideoRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { + out := new(google_longrunning.Operation) + err := grpc.Invoke(ctx, "/google.cloud.videointelligence.v1p1beta1.VideoIntelligenceService/AnnotateVideo", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for VideoIntelligenceService service + +type VideoIntelligenceServiceServer interface { + // Performs asynchronous video annotation. Progress and results can be + // retrieved through the `google.longrunning.Operations` interface. + // `Operation.metadata` contains `AnnotateVideoProgress` (progress). + // `Operation.response` contains `AnnotateVideoResponse` (results). + AnnotateVideo(context.Context, *AnnotateVideoRequest) (*google_longrunning.Operation, error) +} + +func RegisterVideoIntelligenceServiceServer(s *grpc.Server, srv VideoIntelligenceServiceServer) { + s.RegisterService(&_VideoIntelligenceService_serviceDesc, srv) +} + +func _VideoIntelligenceService_AnnotateVideo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AnnotateVideoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VideoIntelligenceServiceServer).AnnotateVideo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.videointelligence.v1p1beta1.VideoIntelligenceService/AnnotateVideo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VideoIntelligenceServiceServer).AnnotateVideo(ctx, req.(*AnnotateVideoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _VideoIntelligenceService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.videointelligence.v1p1beta1.VideoIntelligenceService", + HandlerType: (*VideoIntelligenceServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "AnnotateVideo", + Handler: _VideoIntelligenceService_AnnotateVideo_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/cloud/videointelligence/v1p1beta1/video_intelligence.proto", +} + +func init() { + proto.RegisterFile("google/cloud/videointelligence/v1p1beta1/video_intelligence.proto", fileDescriptor0) +} + +var fileDescriptor0 = []byte{ + // 2237 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x4b, 0x6f, 0x23, 0x59, + 0xf5, 0xff, 0x97, 0x1d, 0x3b, 0xf1, 0x71, 0x12, 0xbb, 0x6f, 0x5e, 0x4e, 0xa6, 0x1f, 0x99, 0x9a, + 0x3f, 0x52, 0xba, 0x41, 0x0e, 0x09, 0xcd, 0xc0, 0xf4, 0x0c, 0x03, 0x15, 0xbb, 0xd2, 0xb1, 0x26, + 0xb1, 0xcd, 0x2d, 0x27, 0xd0, 0xd0, 0xa8, 0xa6, 0x52, 0x75, 0xed, 0x14, 0x5d, 0xae, 0xeb, 0xa9, + 0x2a, 0xf7, 0x74, 0xb3, 0x61, 0x60, 0x58, 0x8c, 0x84, 0xc4, 0x66, 0x84, 0x84, 0xc4, 0x86, 0x25, + 0x62, 0x39, 0x5f, 0x00, 0x09, 0xb1, 0x81, 0x2d, 0x2b, 0x24, 0x36, 0x48, 0xb0, 0xe0, 0x5b, 0xa0, + 0xfb, 0x28, 0xbb, 0xfc, 0x48, 0x27, 0x4e, 0x8b, 0x9d, 0xef, 0x39, 0xf7, 0xfe, 0xce, 0xe3, 0x9e, + 0x47, 0x9d, 0x6b, 0xd0, 0x3a, 0x94, 0x76, 0x3c, 0xb2, 0x6b, 0x7b, 0xb4, 0xef, 0xec, 0x3e, 0x77, + 0x1d, 0x42, 0x5d, 0x3f, 0x22, 0x9e, 0xe7, 0x76, 0x88, 0x6f, 0x93, 0xdd, 0xe7, 0x7b, 0xbd, 0xbd, + 0x73, 0x12, 0x59, 0x7b, 0x82, 0x67, 0x26, 0x99, 0xe5, 0x5e, 0x40, 0x23, 0x8a, 0x76, 0x04, 0x44, + 0x99, 0x43, 0x94, 0x27, 0x20, 0xca, 0x03, 0x88, 0xad, 0xdb, 0x52, 0x98, 0xd5, 0x73, 0x77, 0x2d, + 0xdf, 0xa7, 0x91, 0x15, 0xb9, 0xd4, 0x0f, 0x05, 0xce, 0xd6, 0x5b, 0x92, 0xeb, 0x51, 0xbf, 0x13, + 0xf4, 0x7d, 0xdf, 0xf5, 0x3b, 0xbb, 0xb4, 0x47, 0x82, 0x91, 0x4d, 0x77, 0xe5, 0x26, 0xbe, 0x3a, + 0xef, 0xb7, 0x77, 0x9d, 0xbe, 0xd8, 0x20, 0xf9, 0xf7, 0xc6, 0xf9, 0x91, 0xdb, 0x25, 0x61, 0x64, + 0x75, 0x7b, 0x72, 0xc3, 0x86, 0xdc, 0x10, 0xf4, 0xec, 0xdd, 0x30, 0xb2, 0xa2, 0xbe, 0x44, 0x56, + 0xff, 0x9c, 0x82, 0x55, 0x4d, 0x28, 0x45, 0xce, 0x98, 0x11, 0x98, 0x7c, 0xd4, 0x27, 0x61, 0x84, + 0xde, 0x80, 0x9c, 0xeb, 0xf7, 0xfa, 0x91, 0xd9, 0x0f, 0xdc, 0x92, 0xb2, 0xad, 0xec, 0xe4, 0xf0, + 0x02, 0x27, 0x9c, 0x06, 0x2e, 0x7a, 0x0b, 0x96, 0x04, 0xd3, 0xa6, 0x7e, 0x44, 0xfc, 0xa8, 0x94, + 0xdd, 0x56, 0x76, 0x16, 0xf1, 0x22, 0x27, 0x56, 0x04, 0x0d, 0x9d, 0xc0, 0x42, 0x9b, 0x58, 0x51, + 0x3f, 0x20, 0x61, 0x29, 0xb5, 0x9d, 0xde, 0x59, 0xde, 0xdf, 0x2b, 0x5f, 0xd7, 0x69, 0xe5, 0x43, + 0x71, 0x12, 0x0f, 0x20, 0xd0, 0x0f, 0x61, 0x49, 0x5c, 0x06, 0x97, 0xf9, 0x22, 0x2a, 0xa5, 0xb7, + 0x95, 0x9d, 0xfc, 0xfe, 0xdb, 0xd7, 0xc7, 0xe4, 0xf6, 0x55, 0xc4, 0x69, 0xbc, 0xf8, 0x3c, 0xb1, + 0x42, 0x77, 0x00, 0x68, 0x3f, 0x8a, 0xcd, 0x9d, 0xe3, 0xe6, 0xe6, 0x04, 0x85, 0xd9, 0x7b, 0x0f, + 0xf2, 0x1e, 0xb5, 0xb9, 0xc7, 0x4d, 0xd7, 0x29, 0x65, 0x38, 0x1f, 0x62, 0x52, 0xcd, 0x51, 0xff, + 0x9d, 0x81, 0xc5, 0x24, 0x3c, 0xc2, 0xb0, 0x10, 0x92, 0x4e, 0x97, 0xf8, 0x51, 0x58, 0x52, 0xb6, + 0xd3, 0x37, 0x50, 0xd4, 0x10, 0xc7, 0xf1, 0x00, 0x07, 0x45, 0xb0, 0xee, 0x59, 0xe7, 0xc4, 0x33, + 0x1d, 0x12, 0x11, 0x9b, 0x2b, 0x63, 0x53, 0xbf, 0xed, 0x76, 0x4a, 0x29, 0xee, 0x8a, 0xf7, 0xaf, + 0x2f, 0xe1, 0x98, 0xe1, 0x54, 0x63, 0x98, 0x0a, 0x47, 0xc1, 0xab, 0xde, 0x14, 0x2a, 0xfa, 0x85, + 0x02, 0xb7, 0xc3, 0x0b, 0x1a, 0x99, 0xf6, 0x85, 0xe5, 0x77, 0xc8, 0xa4, 0x70, 0x71, 0x0f, 0x95, + 0xeb, 0x0b, 0x37, 0x2e, 0x68, 0x54, 0xe1, 0x60, 0xe3, 0x1a, 0x6c, 0x86, 0x97, 0xb1, 0xd0, 0xe7, + 0x0a, 0xbc, 0x49, 0x5e, 0xf4, 0x3c, 0xd7, 0x76, 0x07, 0x61, 0x37, 0xa9, 0xcb, 0x1c, 0xd7, 0xe5, + 0xe8, 0xfa, 0xba, 0xe8, 0x12, 0x52, 0x06, 0xed, 0xb8, 0x42, 0x77, 0xc9, 0x2b, 0xf9, 0xe8, 0x53, + 0x05, 0xde, 0x08, 0x7b, 0x84, 0xd8, 0x17, 0x66, 0x14, 0x58, 0x7e, 0x68, 0x07, 0x6e, 0x2f, 0xa9, + 0x4f, 0x76, 0x66, 0xdf, 0x70, 0xb0, 0x56, 0x12, 0x6b, 0xe0, 0x9b, 0xcb, 0x58, 0xe8, 0x02, 0xd6, + 0xda, 0x96, 0x3d, 0xe5, 0x6a, 0xe6, 0xb9, 0xf8, 0x87, 0x33, 0xa4, 0x9d, 0x65, 0x13, 0x29, 0x6f, + 0x85, 0x41, 0x8e, 0xd9, 0xab, 0xfe, 0x45, 0x81, 0xd5, 0x69, 0xb1, 0x83, 0x7c, 0x58, 0x1d, 0x8f, + 0xcd, 0x2e, 0x75, 0x08, 0xaf, 0x1c, 0xcb, 0xfb, 0xef, 0xdd, 0x34, 0x32, 0x4f, 0xa8, 0x43, 0x30, + 0xf2, 0x26, 0x68, 0xe8, 0xcb, 0x70, 0x2b, 0x14, 0x85, 0xd4, 0x0a, 0x5e, 0x9a, 0xb6, 0xd5, 0x25, + 0x81, 0xc5, 0xd3, 0x60, 0x01, 0x17, 0x87, 0x8c, 0x0a, 0xa7, 0xa3, 0x55, 0xc8, 0x30, 0x65, 0x3c, + 0x1e, 0xaa, 0x39, 0x2c, 0x16, 0xea, 0x1e, 0x6c, 0x5e, 0x1a, 0x89, 0xc3, 0x23, 0x4a, 0xf2, 0xc8, + 0xdb, 0x70, 0xf7, 0xd5, 0x01, 0x73, 0xc9, 0xb9, 0x4f, 0x15, 0x80, 0xa1, 0x6b, 0xa7, 0x6f, 0x42, + 0x0f, 0x61, 0xdd, 0xf5, 0x6d, 0xaf, 0xef, 0x10, 0xf3, 0x9c, 0xf6, 0x7d, 0xc7, 0xf5, 0x3b, 0xe6, + 0x39, 0x7d, 0xc1, 0xab, 0x27, 0xb3, 0x6b, 0x55, 0x72, 0x0f, 0x24, 0xf3, 0x80, 0xf1, 0xd0, 0x7d, + 0x28, 0xc6, 0xa7, 0x48, 0x97, 0xf2, 0xa6, 0xc1, 0xb3, 0x60, 0x01, 0x17, 0x24, 0x5d, 0x97, 0x64, + 0xf5, 0x37, 0x8a, 0x2c, 0x52, 0xb2, 0xb4, 0x20, 0x9d, 0x3b, 0x31, 0x88, 0x4c, 0xd6, 0x2e, 0x4c, + 0xda, 0x6e, 0x87, 0x24, 0xe2, 0x3a, 0xe5, 0xf7, 0x37, 0xe3, 0x1b, 0x8b, 0x5b, 0x4a, 0xb9, 0x2a, + 0x5b, 0x0e, 0x2e, 0xf0, 0x33, 0x2d, 0xb7, 0x4b, 0x1a, 0xfc, 0x04, 0xd2, 0xa0, 0x40, 0x7c, 0x67, + 0x04, 0x24, 0x75, 0x15, 0xc8, 0x12, 0xf1, 0x9d, 0x21, 0x84, 0xfa, 0x89, 0x02, 0x8b, 0xfc, 0xe6, + 0x63, 0xd5, 0x9a, 0x30, 0x2f, 0xeb, 0x9e, 0x54, 0xe8, 0xa6, 0xe5, 0x33, 0x86, 0x41, 0x77, 0x01, + 0x78, 0x56, 0x38, 0x6c, 0x37, 0x57, 0x30, 0x85, 0x13, 0x14, 0xf5, 0x02, 0x80, 0x6b, 0x70, 0x18, + 0x58, 0x5d, 0x82, 0x1e, 0x41, 0x7e, 0x26, 0xa7, 0x40, 0x34, 0xf4, 0xc7, 0x55, 0x92, 0x3c, 0xc8, + 0xea, 0x7e, 0xe4, 0x46, 0x2f, 0x59, 0x93, 0x25, 0xfc, 0x17, 0xeb, 0x2a, 0xb2, 0xc9, 0x0a, 0x42, + 0xcd, 0x41, 0xdb, 0x90, 0x77, 0xc8, 0x20, 0xd5, 0x39, 0x4e, 0x0e, 0x27, 0x49, 0xac, 0x0d, 0x7b, + 0x96, 0xdf, 0xe9, 0x5b, 0x1d, 0x62, 0xda, 0x2c, 0xdb, 0x44, 0x7c, 0x2f, 0xc6, 0xc4, 0x0a, 0x75, + 0x88, 0xfa, 0x8f, 0x14, 0x14, 0xb8, 0x61, 0xda, 0xe0, 0xdb, 0x03, 0x1d, 0x41, 0x56, 0x88, 0x91, + 0x86, 0x7d, 0x75, 0x86, 0x82, 0xc9, 0xcf, 0x61, 0x79, 0x1e, 0xfd, 0x08, 0x6e, 0xd9, 0x56, 0x44, + 0x3a, 0x34, 0x78, 0x69, 0x72, 0x92, 0x2b, 0xbb, 0xfd, 0x4d, 0x40, 0x8b, 0x31, 0x94, 0x2e, 0x91, + 0x46, 0xda, 0x68, 0x7a, 0xd6, 0x36, 0x9a, 0x0c, 0xa8, 0x44, 0x1b, 0x3d, 0x86, 0x6c, 0x9b, 0xdd, + 0x31, 0xcb, 0x93, 0xf4, 0x6c, 0xe5, 0x71, 0x18, 0x20, 0x58, 0x62, 0xa8, 0x7f, 0x54, 0x60, 0x75, + 0xac, 0x26, 0xbc, 0x7e, 0x04, 0x3d, 0x83, 0xf5, 0x1e, 0x0d, 0x7c, 0xda, 0x09, 0xac, 0xde, 0xc5, + 0x4b, 0xd3, 0x73, 0x9f, 0x11, 0xcf, 0xbd, 0xa0, 0xd4, 0xe1, 0x51, 0xb0, 0x3c, 0x93, 0xca, 0x83, + 0xb3, 0x78, 0x2d, 0x81, 0x39, 0x24, 0xab, 0x21, 0x6c, 0x8e, 0x19, 0x90, 0x88, 0x94, 0xb3, 0x81, + 0xb3, 0xc4, 0x57, 0xcc, 0xfb, 0x37, 0x6e, 0xad, 0xa3, 0x6e, 0x7b, 0x06, 0x6b, 0x75, 0x1a, 0x74, + 0x2d, 0xcf, 0xfd, 0x09, 0x71, 0x12, 0x15, 0x0d, 0x21, 0x98, 0xf3, 0x48, 0x5b, 0xf8, 0x2b, 0x85, + 0xf9, 0x6f, 0x54, 0x84, 0x74, 0x44, 0x7b, 0x32, 0x93, 0xd8, 0x4f, 0x56, 0x41, 0x03, 0xb7, 0x73, + 0x21, 0x3e, 0x02, 0x53, 0x58, 0x2c, 0xd0, 0x3a, 0x64, 0xcf, 0x69, 0x14, 0xd1, 0x2e, 0xaf, 0x80, + 0x29, 0x2c, 0x57, 0xaa, 0x09, 0x79, 0x56, 0x7d, 0xff, 0x67, 0xb5, 0x45, 0xfd, 0x42, 0x01, 0x74, + 0x98, 0x6c, 0x97, 0x22, 0x04, 0x3e, 0x04, 0xb0, 0xa2, 0x28, 0x70, 0xcf, 0xfb, 0xd1, 0xc0, 0x81, + 0xdf, 0x99, 0xad, 0x19, 0x0f, 0x10, 0xb5, 0x18, 0x08, 0x27, 0x30, 0xc7, 0x83, 0x2c, 0x35, 0x43, + 0x90, 0xa9, 0xff, 0x51, 0x60, 0x7d, 0xba, 0x08, 0xf4, 0x31, 0x6c, 0xf8, 0x83, 0xdb, 0x19, 0xe9, + 0x46, 0xd2, 0x63, 0xdf, 0xbe, 0xbe, 0x15, 0x53, 0xaf, 0x19, 0xaf, 0xf9, 0x53, 0x6f, 0xff, 0x0c, + 0x16, 0x06, 0x5d, 0x4c, 0x54, 0x91, 0x47, 0x33, 0x04, 0x9c, 0x38, 0x39, 0xf4, 0xd4, 0x00, 0x4b, + 0xed, 0x43, 0x71, 0x9c, 0x8b, 0x3e, 0x80, 0x79, 0xc9, 0x97, 0x5f, 0x29, 0x7b, 0x33, 0x8b, 0xc2, + 0x31, 0x02, 0x0b, 0xc8, 0xd0, 0xa6, 0x41, 0x5c, 0xee, 0xc5, 0x42, 0xfd, 0x93, 0x02, 0x1b, 0xa3, + 0x2e, 0x1e, 0x66, 0xd6, 0x77, 0x27, 0x26, 0x84, 0xaf, 0xcf, 0x16, 0x1a, 0x93, 0x95, 0xad, 0x35, + 0x48, 0x56, 0xe1, 0xbb, 0xf7, 0x6e, 0x18, 0x6b, 0xa3, 0xa9, 0xfa, 0xd9, 0x3c, 0xac, 0xf3, 0xb0, + 0x1f, 0x2a, 0x8f, 0x49, 0xd8, 0xf7, 0xa2, 0xf0, 0xd5, 0x43, 0x62, 0x1f, 0x36, 0xa5, 0x66, 0xa6, + 0xf8, 0x34, 0x4c, 0x0c, 0xbf, 0x52, 0xc1, 0x77, 0x66, 0x2c, 0xbd, 0x09, 0x0d, 0x36, 0x24, 0xf6, + 0x18, 0x3d, 0x44, 0x14, 0xd6, 0xf9, 0xb8, 0x32, 0x29, 0x33, 0xfd, 0xba, 0x32, 0x57, 0x19, 0xf0, + 0x84, 0xc0, 0x8f, 0x60, 0x83, 0x7b, 0x6a, 0x8a, 0xc4, 0xb9, 0xd7, 0x95, 0xb8, 0xc6, 0x91, 0x27, + 0x44, 0xfe, 0x14, 0xb6, 0xc6, 0x3e, 0xf8, 0x93, 0x52, 0x97, 0xb8, 0x54, 0xed, 0xa6, 0x85, 0x66, + 0x28, 0xbd, 0xd4, 0x9e, 0xce, 0x08, 0x91, 0x05, 0x45, 0xee, 0xe4, 0xa4, 0xd8, 0xec, 0x6b, 0x8d, + 0xb9, 0x05, 0x86, 0x97, 0x14, 0x11, 0xc1, 0xca, 0x60, 0xde, 0x1b, 0x8a, 0x91, 0x23, 0x4d, 0xe5, + 0xc6, 0x6d, 0x28, 0x61, 0x1e, 0x8a, 0xf1, 0x13, 0x59, 0x19, 0xc0, 0xda, 0xb4, 0x79, 0x2e, 0x2c, + 0xe5, 0xb9, 0x75, 0xdf, 0x7a, 0xad, 0x49, 0x0e, 0xaf, 0x4e, 0x99, 0xe1, 0x42, 0xb4, 0x03, 0x19, + 0x12, 0x04, 0x34, 0x28, 0xe5, 0xb8, 0x6d, 0x28, 0x96, 0x11, 0xf4, 0xec, 0xb2, 0xc1, 0x1f, 0x6b, + 0xb0, 0xd8, 0xa0, 0x7e, 0xa6, 0xc0, 0xda, 0xd8, 0x6b, 0x4d, 0xd8, 0xa3, 0x7e, 0x48, 0x10, 0x05, + 0x34, 0x74, 0x92, 0x19, 0x88, 0xfc, 0x9c, 0xbd, 0xe5, 0x4c, 0xcf, 0x73, 0x7c, 0xcb, 0x1a, 0x27, + 0xa9, 0x7f, 0x57, 0x60, 0x63, 0x6c, 0x77, 0x33, 0xa0, 0x9d, 0x80, 0x84, 0x57, 0x94, 0x85, 0xfb, + 0x50, 0xec, 0xc9, 0x8d, 0x66, 0x8f, 0x04, 0x36, 0x6b, 0xc3, 0xac, 0x68, 0x66, 0x70, 0x21, 0xa6, + 0x37, 0x05, 0x19, 0xbd, 0x03, 0x30, 0x9c, 0x4f, 0xe4, 0x3b, 0xc3, 0xd6, 0x44, 0x73, 0x6b, 0xc5, + 0x6f, 0x5d, 0x38, 0x37, 0x98, 0x4c, 0xd0, 0xbb, 0x90, 0xef, 0xf7, 0x1c, 0x2b, 0x22, 0xe2, 0xec, + 0xdc, 0x95, 0x67, 0x41, 0x6c, 0x67, 0x04, 0xf5, 0x97, 0xe3, 0x6e, 0x1e, 0x58, 0x16, 0xc0, 0x4a, + 0xc2, 0xcd, 0xb1, 0xbe, 0xd2, 0xcf, 0xda, 0x8d, 0xfd, 0x1c, 0xe3, 0xe3, 0xc4, 0x25, 0xc6, 0x34, + 0xf5, 0xb7, 0x29, 0xd8, 0xbc, 0xf4, 0x59, 0x60, 0x72, 0x06, 0x50, 0x26, 0x67, 0x00, 0xe6, 0xf3, + 0xae, 0xf5, 0xc2, 0xb4, 0xbc, 0x88, 0x04, 0xbe, 0x15, 0xb9, 0xcf, 0xe5, 0x50, 0x99, 0xc1, 0x85, + 0xae, 0xf5, 0x42, 0x4b, 0x90, 0xd9, 0xd6, 0xb6, 0xcb, 0x08, 0xcc, 0xba, 0xb6, 0xe5, 0xb3, 0x21, + 0x21, 0x2d, 0xe6, 0x49, 0x41, 0x6f, 0xc6, 0x64, 0xf4, 0x21, 0x14, 0x64, 0xae, 0xc8, 0x27, 0xb9, + 0xb8, 0xe0, 0x7d, 0x63, 0xd6, 0x2c, 0x89, 0x1f, 0xe5, 0x96, 0xc3, 0xe4, 0x32, 0x44, 0x6f, 0xc2, + 0xa2, 0xd5, 0x77, 0x5c, 0xca, 0x92, 0xd1, 0x7e, 0x26, 0x4a, 0x4c, 0x06, 0xe7, 0x39, 0xad, 0xc5, + 0x49, 0xea, 0x7d, 0x58, 0x1a, 0xc1, 0x40, 0x25, 0x98, 0xef, 0x5d, 0x04, 0x56, 0x28, 0xbf, 0xb8, + 0x72, 0x38, 0x5e, 0xaa, 0x3f, 0x53, 0x60, 0x65, 0x8a, 0x23, 0xd1, 0x8f, 0x61, 0x71, 0xc4, 0x33, + 0xe2, 0x36, 0x0f, 0x67, 0x35, 0x02, 0x13, 0x9b, 0x76, 0x7c, 0x97, 0x97, 0xca, 0x21, 0x1c, 0x1e, + 0xc1, 0x56, 0x7f, 0xaf, 0xc0, 0xed, 0x57, 0x6d, 0x67, 0xc3, 0xe3, 0xb0, 0xf2, 0xc8, 0xcb, 0x4c, + 0x50, 0xae, 0x1a, 0x2e, 0xd1, 0x11, 0x64, 0x3e, 0xa6, 0x81, 0x13, 0x77, 0xbb, 0xfd, 0xeb, 0x5b, + 0xf1, 0x3d, 0x1a, 0x38, 0x35, 0xbf, 0x4d, 0xb1, 0x00, 0x50, 0x7f, 0xa5, 0xc0, 0x42, 0x4c, 0x43, + 0xdf, 0x1c, 0x49, 0xc5, 0x2b, 0x87, 0x99, 0x44, 0x26, 0x3e, 0x84, 0x85, 0xf8, 0x75, 0xe0, 0xea, + 0xef, 0xd3, 0x79, 0xf9, 0x2c, 0xc0, 0xc6, 0x00, 0xa6, 0x85, 0x9c, 0x68, 0xf9, 0xef, 0x07, 0xbf, + 0x53, 0x60, 0x5e, 0xbe, 0x0b, 0xa3, 0x0d, 0x58, 0x39, 0xd4, 0xb5, 0xd6, 0x29, 0xd6, 0xcd, 0xd3, + 0xba, 0xd1, 0xd4, 0x2b, 0xb5, 0xc3, 0x9a, 0x5e, 0x2d, 0xfe, 0x1f, 0x5a, 0x81, 0xc2, 0xb1, 0x76, + 0xa0, 0x1f, 0x9b, 0x55, 0xbd, 0xa5, 0x57, 0x5a, 0xb5, 0x46, 0xbd, 0xa8, 0xa0, 0x4d, 0x58, 0x33, + 0x8e, 0x1a, 0x2d, 0xb3, 0x72, 0xa4, 0xd5, 0x1f, 0xeb, 0x09, 0x56, 0x0a, 0xdd, 0x85, 0x2d, 0xfd, + 0xfb, 0xcd, 0xe3, 0x5a, 0xa5, 0xd6, 0x32, 0x2b, 0x8d, 0x7a, 0x4b, 0xaf, 0xb7, 0x12, 0xfc, 0x34, + 0x42, 0xb0, 0x7c, 0xa8, 0x55, 0x92, 0x67, 0x16, 0x50, 0x09, 0x56, 0x8d, 0xa6, 0xae, 0x57, 0x8e, + 0xcc, 0x16, 0xd6, 0xea, 0x46, 0x05, 0xd7, 0x9a, 0x9c, 0x93, 0x7d, 0x10, 0x00, 0x9a, 0x7c, 0xc0, + 0x42, 0xff, 0x0f, 0xdb, 0x63, 0x3a, 0x99, 0x27, 0x8d, 0xea, 0xb8, 0xe6, 0x4b, 0x90, 0xe3, 0x4a, + 0x32, 0x56, 0x51, 0x41, 0xcb, 0x00, 0x87, 0x58, 0x3b, 0xd1, 0xc5, 0x3a, 0xc5, 0x2c, 0xe6, 0x6c, + 0xad, 0x5e, 0x35, 0x13, 0x8c, 0xf4, 0x83, 0x08, 0x60, 0x38, 0xcd, 0xa1, 0x2d, 0x58, 0x3f, 0xae, + 0x7d, 0xa0, 0x1f, 0xd7, 0x8e, 0x1a, 0x8d, 0xea, 0x98, 0x84, 0x5b, 0xb0, 0x74, 0xa6, 0xe3, 0x27, + 0xe6, 0x69, 0x9d, 0x6f, 0x79, 0x52, 0x54, 0xd0, 0x22, 0x2c, 0x0c, 0x56, 0x29, 0xb6, 0x6a, 0x36, + 0x0c, 0xa3, 0x76, 0x70, 0xac, 0x17, 0xd3, 0x08, 0x20, 0x2b, 0x39, 0x73, 0xa8, 0x00, 0x79, 0x7e, + 0x54, 0x12, 0x32, 0x0f, 0xfe, 0xa9, 0xc0, 0xbc, 0xfc, 0x0a, 0x66, 0xaa, 0xe9, 0x27, 0x0d, 0x6e, + 0xd7, 0x84, 0x49, 0xda, 0xc9, 0xa9, 0xa1, 0x9f, 0xe8, 0xf5, 0x56, 0x51, 0x41, 0x39, 0xc8, 0x30, + 0xff, 0xe3, 0x62, 0x8a, 0xa9, 0x52, 0x69, 0xd4, 0x2b, 0x7a, 0xbd, 0x85, 0x35, 0xe9, 0xe9, 0x02, + 0xe4, 0xe5, 0x05, 0xf0, 0xed, 0x73, 0x4c, 0x7e, 0x55, 0x37, 0x6a, 0x58, 0x2f, 0x66, 0xd8, 0x35, + 0x54, 0x6b, 0x86, 0xd6, 0x6c, 0x36, 0x6a, 0x92, 0x9f, 0x45, 0x79, 0x98, 0xaf, 0xd6, 0x8c, 0xc7, + 0xa7, 0x46, 0xab, 0x38, 0xcf, 0x16, 0xfa, 0xb1, 0x26, 0x2f, 0xe8, 0x16, 0x2c, 0xe9, 0x27, 0x07, + 0x1a, 0xc6, 0x9a, 0x61, 0xf0, 0xcd, 0x39, 0x66, 0x5a, 0xad, 0xde, 0xd2, 0xb1, 0x6e, 0xb4, 0x8a, + 0xc0, 0x34, 0x69, 0xe2, 0x5a, 0x55, 0x2f, 0xe6, 0xd9, 0x41, 0x43, 0xab, 0xd6, 0x75, 0xc3, 0x28, + 0x2e, 0xb2, 0x5d, 0xc6, 0x29, 0x6e, 0xe2, 0x9a, 0xa1, 0x17, 0x97, 0xf6, 0xbf, 0x50, 0xa0, 0xc4, + 0x2b, 0x75, 0x2d, 0x91, 0x31, 0x06, 0x09, 0x9e, 0xbb, 0x36, 0x41, 0xbf, 0x56, 0x60, 0x69, 0xa4, + 0x49, 0xa0, 0x19, 0x66, 0xe3, 0x69, 0x7f, 0xb9, 0x6c, 0xdd, 0x89, 0xcf, 0x27, 0xfe, 0x0b, 0x2a, + 0x37, 0xe2, 0xff, 0x82, 0xd4, 0x2f, 0xfd, 0xfc, 0x6f, 0xff, 0xfa, 0x3c, 0x75, 0x4f, 0xdd, 0x1a, + 0xff, 0x7b, 0x2a, 0x7c, 0x24, 0xbb, 0x06, 0x79, 0xa4, 0x3c, 0x38, 0xf8, 0x24, 0x05, 0x5f, 0xb1, + 0x69, 0xf7, 0xda, 0xba, 0x1c, 0xdc, 0xb9, 0xcc, 0xc4, 0x26, 0x4b, 0xcf, 0xa6, 0xf2, 0x83, 0x27, + 0x12, 0xaa, 0x43, 0x59, 0x53, 0x29, 0xd3, 0xa0, 0xb3, 0xdb, 0x21, 0x3e, 0x4f, 0xde, 0x5d, 0xc1, + 0xb2, 0x7a, 0x6e, 0x78, 0xf5, 0x9f, 0x69, 0xef, 0x4e, 0xf0, 0xfe, 0x90, 0xda, 0x79, 0x2c, 0xb0, + 0x2b, 0x5c, 0xcd, 0x09, 0x4d, 0xca, 0x67, 0x7b, 0xcd, 0xbd, 0x03, 0x76, 0xf8, 0xaf, 0xf1, 0xd6, + 0xa7, 0x7c, 0xeb, 0xd3, 0x89, 0xad, 0x4f, 0xcf, 0x62, 0x39, 0xe7, 0x59, 0xae, 0xdb, 0xd7, 0xfe, + 0x1b, 0x00, 0x00, 0xff, 0xff, 0x9b, 0x29, 0xc9, 0x61, 0xe7, 0x1b, 0x00, 0x00, +} diff --git a/googleapis/devtools/cloudtrace/v1/trace.pb.go b/googleapis/devtools/cloudtrace/v1/trace.pb.go index cc15feed..9fa5d82d 100644 --- a/googleapis/devtools/cloudtrace/v1/trace.pb.go +++ b/googleapis/devtools/cloudtrace/v1/trace.pb.go @@ -218,9 +218,11 @@ type TraceSpan struct { // * `/http/client_region` // * `/http/host` // * `/http/method` + // * `/http/path` // * `/http/redirected_url` // * `/http/request/size` // * `/http/response/size` + // * `/http/route` // * `/http/status_code` // * `/http/url` // * `/http/user_agent` diff --git a/googleapis/privacy/dlp/v2/dlp.pb.go b/googleapis/privacy/dlp/v2/dlp.pb.go new file mode 100644 index 00000000..96d5750d --- /dev/null +++ b/googleapis/privacy/dlp/v2/dlp.pb.go @@ -0,0 +1,9624 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: google/privacy/dlp/v2/dlp.proto + +/* +Package dlp is a generated protocol buffer package. + +It is generated from these files: + google/privacy/dlp/v2/dlp.proto + google/privacy/dlp/v2/storage.proto + +It has these top-level messages: + InspectConfig + ByteContentItem + ContentItem + Table + InspectResult + Finding + Location + ContentLocation + DocumentLocation + RecordLocation + TableLocation + Range + ImageLocation + BoundingBox + RedactImageRequest + Color + RedactImageResponse + DeidentifyContentRequest + DeidentifyContentResponse + ReidentifyContentRequest + ReidentifyContentResponse + InspectContentRequest + InspectContentResponse + OutputStorageConfig + InfoTypeStats + InspectDataSourceDetails + InfoTypeDescription + ListInfoTypesRequest + ListInfoTypesResponse + RiskAnalysisJobConfig + PrivacyMetric + AnalyzeDataSourceRiskDetails + ValueFrequency + Value + QuoteInfo + DateTime + DeidentifyConfig + PrimitiveTransformation + TimePartConfig + CryptoHashConfig + ReplaceValueConfig + ReplaceWithInfoTypeConfig + RedactConfig + CharsToIgnore + CharacterMaskConfig + FixedSizeBucketingConfig + BucketingConfig + CryptoReplaceFfxFpeConfig + CryptoKey + TransientCryptoKey + UnwrappedCryptoKey + KmsWrappedCryptoKey + DateShiftConfig + InfoTypeTransformations + FieldTransformation + RecordTransformations + RecordSuppression + RecordCondition + TransformationOverview + TransformationSummary + Schedule + InspectTemplate + DeidentifyTemplate + Error + JobTrigger + Action + CreateInspectTemplateRequest + UpdateInspectTemplateRequest + GetInspectTemplateRequest + ListInspectTemplatesRequest + ListInspectTemplatesResponse + DeleteInspectTemplateRequest + CreateJobTriggerRequest + UpdateJobTriggerRequest + GetJobTriggerRequest + CreateDlpJobRequest + ListJobTriggersRequest + ListJobTriggersResponse + DeleteJobTriggerRequest + InspectJobConfig + DlpJob + GetDlpJobRequest + ListDlpJobsRequest + ListDlpJobsResponse + CancelDlpJobRequest + DeleteDlpJobRequest + CreateDeidentifyTemplateRequest + UpdateDeidentifyTemplateRequest + GetDeidentifyTemplateRequest + ListDeidentifyTemplatesRequest + ListDeidentifyTemplatesResponse + DeleteDeidentifyTemplateRequest + InfoType + CustomInfoType + FieldId + PartitionId + KindExpression + DatastoreOptions + CloudStorageOptions + BigQueryOptions + StorageConfig + BigQueryKey + DatastoreKey + Key + RecordKey + BigQueryTable +*/ +package dlp + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "google.golang.org/genproto/googleapis/api/annotations" +import google_protobuf2 "github.com/golang/protobuf/ptypes/duration" +import google_protobuf3 "github.com/golang/protobuf/ptypes/empty" +import google_protobuf4 "google.golang.org/genproto/protobuf/field_mask" +import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" +import google_rpc "google.golang.org/genproto/googleapis/rpc/status" +import google_type "google.golang.org/genproto/googleapis/type/date" +import google_type1 "google.golang.org/genproto/googleapis/type/dayofweek" +import google_type2 "google.golang.org/genproto/googleapis/type/timeofday" + +import ( + context "golang.org/x/net/context" + grpc "google.golang.org/grpc" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +// Options describing which parts of the provided content should be scanned. +type ContentOption int32 + +const ( + // Includes entire content of a file or a data stream. + ContentOption_CONTENT_UNSPECIFIED ContentOption = 0 + // Text content within the data, excluding any metadata. + ContentOption_CONTENT_TEXT ContentOption = 1 + // Images found in the data. + ContentOption_CONTENT_IMAGE ContentOption = 2 +) + +var ContentOption_name = map[int32]string{ + 0: "CONTENT_UNSPECIFIED", + 1: "CONTENT_TEXT", + 2: "CONTENT_IMAGE", +} +var ContentOption_value = map[string]int32{ + "CONTENT_UNSPECIFIED": 0, + "CONTENT_TEXT": 1, + "CONTENT_IMAGE": 2, +} + +func (x ContentOption) String() string { + return proto.EnumName(ContentOption_name, int32(x)) +} +func (ContentOption) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +// Parts of the APIs which use certain infoTypes. +type InfoTypeSupportedBy int32 + +const ( + InfoTypeSupportedBy_ENUM_TYPE_UNSPECIFIED InfoTypeSupportedBy = 0 + // Supported by the inspect operations. + InfoTypeSupportedBy_INSPECT InfoTypeSupportedBy = 1 + // Supported by the risk analysis operations. + InfoTypeSupportedBy_RISK_ANALYSIS InfoTypeSupportedBy = 2 +) + +var InfoTypeSupportedBy_name = map[int32]string{ + 0: "ENUM_TYPE_UNSPECIFIED", + 1: "INSPECT", + 2: "RISK_ANALYSIS", +} +var InfoTypeSupportedBy_value = map[string]int32{ + "ENUM_TYPE_UNSPECIFIED": 0, + "INSPECT": 1, + "RISK_ANALYSIS": 2, +} + +func (x InfoTypeSupportedBy) String() string { + return proto.EnumName(InfoTypeSupportedBy_name, int32(x)) +} +func (InfoTypeSupportedBy) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +// Operators available for comparing the value of fields. +type RelationalOperator int32 + +const ( + RelationalOperator_RELATIONAL_OPERATOR_UNSPECIFIED RelationalOperator = 0 + // Equal. + RelationalOperator_EQUAL_TO RelationalOperator = 1 + // Not equal to. + RelationalOperator_NOT_EQUAL_TO RelationalOperator = 2 + // Greater than. + RelationalOperator_GREATER_THAN RelationalOperator = 3 + // Less than. + RelationalOperator_LESS_THAN RelationalOperator = 4 + // Greater than or equals. + RelationalOperator_GREATER_THAN_OR_EQUALS RelationalOperator = 5 + // Less than or equals. + RelationalOperator_LESS_THAN_OR_EQUALS RelationalOperator = 6 + // Exists + RelationalOperator_EXISTS RelationalOperator = 7 +) + +var RelationalOperator_name = map[int32]string{ + 0: "RELATIONAL_OPERATOR_UNSPECIFIED", + 1: "EQUAL_TO", + 2: "NOT_EQUAL_TO", + 3: "GREATER_THAN", + 4: "LESS_THAN", + 5: "GREATER_THAN_OR_EQUALS", + 6: "LESS_THAN_OR_EQUALS", + 7: "EXISTS", +} +var RelationalOperator_value = map[string]int32{ + "RELATIONAL_OPERATOR_UNSPECIFIED": 0, + "EQUAL_TO": 1, + "NOT_EQUAL_TO": 2, + "GREATER_THAN": 3, + "LESS_THAN": 4, + "GREATER_THAN_OR_EQUALS": 5, + "LESS_THAN_OR_EQUALS": 6, + "EXISTS": 7, +} + +func (x RelationalOperator) String() string { + return proto.EnumName(RelationalOperator_name, int32(x)) +} +func (RelationalOperator) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +// An enum to represent the various type of DLP jobs. +type DlpJobType int32 + +const ( + DlpJobType_DLP_JOB_TYPE_UNSPECIFIED DlpJobType = 0 + // The job inspected Google Cloud for sensitive data. + DlpJobType_INSPECT_JOB DlpJobType = 1 + // The job executed a Risk Analysis computation. + DlpJobType_RISK_ANALYSIS_JOB DlpJobType = 2 +) + +var DlpJobType_name = map[int32]string{ + 0: "DLP_JOB_TYPE_UNSPECIFIED", + 1: "INSPECT_JOB", + 2: "RISK_ANALYSIS_JOB", +} +var DlpJobType_value = map[string]int32{ + "DLP_JOB_TYPE_UNSPECIFIED": 0, + "INSPECT_JOB": 1, + "RISK_ANALYSIS_JOB": 2, +} + +func (x DlpJobType) String() string { + return proto.EnumName(DlpJobType_name, int32(x)) +} +func (DlpJobType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +type ByteContentItem_BytesType int32 + +const ( + ByteContentItem_BYTES_TYPE_UNSPECIFIED ByteContentItem_BytesType = 0 + ByteContentItem_IMAGE_JPEG ByteContentItem_BytesType = 1 + ByteContentItem_IMAGE_BMP ByteContentItem_BytesType = 2 + ByteContentItem_IMAGE_PNG ByteContentItem_BytesType = 3 + ByteContentItem_IMAGE_SVG ByteContentItem_BytesType = 4 + ByteContentItem_TEXT_UTF8 ByteContentItem_BytesType = 5 +) + +var ByteContentItem_BytesType_name = map[int32]string{ + 0: "BYTES_TYPE_UNSPECIFIED", + 1: "IMAGE_JPEG", + 2: "IMAGE_BMP", + 3: "IMAGE_PNG", + 4: "IMAGE_SVG", + 5: "TEXT_UTF8", +} +var ByteContentItem_BytesType_value = map[string]int32{ + "BYTES_TYPE_UNSPECIFIED": 0, + "IMAGE_JPEG": 1, + "IMAGE_BMP": 2, + "IMAGE_PNG": 3, + "IMAGE_SVG": 4, + "TEXT_UTF8": 5, +} + +func (x ByteContentItem_BytesType) String() string { + return proto.EnumName(ByteContentItem_BytesType_name, int32(x)) +} +func (ByteContentItem_BytesType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } + +// Predefined schemas for storing findings. +type OutputStorageConfig_OutputSchema int32 + +const ( + OutputStorageConfig_OUTPUT_SCHEMA_UNSPECIFIED OutputStorageConfig_OutputSchema = 0 + // Basic schema including only `info_type`, `quote`, `certainty`, and + // `timestamp`. + OutputStorageConfig_BASIC_COLUMNS OutputStorageConfig_OutputSchema = 1 + // Schema tailored to findings from scanning Google Cloud Storage. + OutputStorageConfig_GCS_COLUMNS OutputStorageConfig_OutputSchema = 2 + // Schema tailored to findings from scanning Google Datastore. + OutputStorageConfig_DATASTORE_COLUMNS OutputStorageConfig_OutputSchema = 3 + // Schema tailored to findings from scanning Google BigQuery. + OutputStorageConfig_BIG_QUERY_COLUMNS OutputStorageConfig_OutputSchema = 4 + // Schema containing all columns. + OutputStorageConfig_ALL_COLUMNS OutputStorageConfig_OutputSchema = 5 +) + +var OutputStorageConfig_OutputSchema_name = map[int32]string{ + 0: "OUTPUT_SCHEMA_UNSPECIFIED", + 1: "BASIC_COLUMNS", + 2: "GCS_COLUMNS", + 3: "DATASTORE_COLUMNS", + 4: "BIG_QUERY_COLUMNS", + 5: "ALL_COLUMNS", +} +var OutputStorageConfig_OutputSchema_value = map[string]int32{ + "OUTPUT_SCHEMA_UNSPECIFIED": 0, + "BASIC_COLUMNS": 1, + "GCS_COLUMNS": 2, + "DATASTORE_COLUMNS": 3, + "BIG_QUERY_COLUMNS": 4, + "ALL_COLUMNS": 5, +} + +func (x OutputStorageConfig_OutputSchema) String() string { + return proto.EnumName(OutputStorageConfig_OutputSchema_name, int32(x)) +} +func (OutputStorageConfig_OutputSchema) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{23, 0} +} + +type TimePartConfig_TimePart int32 + +const ( + TimePartConfig_TIME_PART_UNSPECIFIED TimePartConfig_TimePart = 0 + // [0-9999] + TimePartConfig_YEAR TimePartConfig_TimePart = 1 + // [1-12] + TimePartConfig_MONTH TimePartConfig_TimePart = 2 + // [1-31] + TimePartConfig_DAY_OF_MONTH TimePartConfig_TimePart = 3 + // [1-7] + TimePartConfig_DAY_OF_WEEK TimePartConfig_TimePart = 4 + // [1-52] + TimePartConfig_WEEK_OF_YEAR TimePartConfig_TimePart = 5 + // [0-23] + TimePartConfig_HOUR_OF_DAY TimePartConfig_TimePart = 6 +) + +var TimePartConfig_TimePart_name = map[int32]string{ + 0: "TIME_PART_UNSPECIFIED", + 1: "YEAR", + 2: "MONTH", + 3: "DAY_OF_MONTH", + 4: "DAY_OF_WEEK", + 5: "WEEK_OF_YEAR", + 6: "HOUR_OF_DAY", +} +var TimePartConfig_TimePart_value = map[string]int32{ + "TIME_PART_UNSPECIFIED": 0, + "YEAR": 1, + "MONTH": 2, + "DAY_OF_MONTH": 3, + "DAY_OF_WEEK": 4, + "WEEK_OF_YEAR": 5, + "HOUR_OF_DAY": 6, +} + +func (x TimePartConfig_TimePart) String() string { + return proto.EnumName(TimePartConfig_TimePart_name, int32(x)) +} +func (TimePartConfig_TimePart) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 0} } + +type CharsToIgnore_CommonCharsToIgnore int32 + +const ( + CharsToIgnore_COMMON_CHARS_TO_IGNORE_UNSPECIFIED CharsToIgnore_CommonCharsToIgnore = 0 + // 0-9 + CharsToIgnore_NUMERIC CharsToIgnore_CommonCharsToIgnore = 1 + // A-Z + CharsToIgnore_ALPHA_UPPER_CASE CharsToIgnore_CommonCharsToIgnore = 2 + // a-z + CharsToIgnore_ALPHA_LOWER_CASE CharsToIgnore_CommonCharsToIgnore = 3 + // US Punctuation, one of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ + CharsToIgnore_PUNCTUATION CharsToIgnore_CommonCharsToIgnore = 4 + // Whitespace character, one of [ \t\n\x0B\f\r] + CharsToIgnore_WHITESPACE CharsToIgnore_CommonCharsToIgnore = 5 +) + +var CharsToIgnore_CommonCharsToIgnore_name = map[int32]string{ + 0: "COMMON_CHARS_TO_IGNORE_UNSPECIFIED", + 1: "NUMERIC", + 2: "ALPHA_UPPER_CASE", + 3: "ALPHA_LOWER_CASE", + 4: "PUNCTUATION", + 5: "WHITESPACE", +} +var CharsToIgnore_CommonCharsToIgnore_value = map[string]int32{ + "COMMON_CHARS_TO_IGNORE_UNSPECIFIED": 0, + "NUMERIC": 1, + "ALPHA_UPPER_CASE": 2, + "ALPHA_LOWER_CASE": 3, + "PUNCTUATION": 4, + "WHITESPACE": 5, +} + +func (x CharsToIgnore_CommonCharsToIgnore) String() string { + return proto.EnumName(CharsToIgnore_CommonCharsToIgnore_name, int32(x)) +} +func (CharsToIgnore_CommonCharsToIgnore) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{43, 0} +} + +// These are commonly used subsets of the alphabet that the FFX mode +// natively supports. In the algorithm, the alphabet is selected using +// the "radix". Therefore each corresponds to particular radix. +type CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet int32 + +const ( + CryptoReplaceFfxFpeConfig_FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 0 + // [0-9] (radix of 10) + CryptoReplaceFfxFpeConfig_NUMERIC CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 1 + // [0-9A-F] (radix of 16) + CryptoReplaceFfxFpeConfig_HEXADECIMAL CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 2 + // [0-9A-Z] (radix of 36) + CryptoReplaceFfxFpeConfig_UPPER_CASE_ALPHA_NUMERIC CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 3 + // [0-9A-Za-z] (radix of 62) + CryptoReplaceFfxFpeConfig_ALPHA_NUMERIC CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 4 +) + +var CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_name = map[int32]string{ + 0: "FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED", + 1: "NUMERIC", + 2: "HEXADECIMAL", + 3: "UPPER_CASE_ALPHA_NUMERIC", + 4: "ALPHA_NUMERIC", +} +var CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_value = map[string]int32{ + "FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED": 0, + "NUMERIC": 1, + "HEXADECIMAL": 2, + "UPPER_CASE_ALPHA_NUMERIC": 3, + "ALPHA_NUMERIC": 4, +} + +func (x CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) String() string { + return proto.EnumName(CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_name, int32(x)) +} +func (CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{47, 0} +} + +type RecordCondition_Expressions_LogicalOperator int32 + +const ( + RecordCondition_Expressions_LOGICAL_OPERATOR_UNSPECIFIED RecordCondition_Expressions_LogicalOperator = 0 + RecordCondition_Expressions_AND RecordCondition_Expressions_LogicalOperator = 1 +) + +var RecordCondition_Expressions_LogicalOperator_name = map[int32]string{ + 0: "LOGICAL_OPERATOR_UNSPECIFIED", + 1: "AND", +} +var RecordCondition_Expressions_LogicalOperator_value = map[string]int32{ + "LOGICAL_OPERATOR_UNSPECIFIED": 0, + "AND": 1, +} + +func (x RecordCondition_Expressions_LogicalOperator) String() string { + return proto.EnumName(RecordCondition_Expressions_LogicalOperator_name, int32(x)) +} +func (RecordCondition_Expressions_LogicalOperator) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{57, 2, 0} +} + +// Possible outcomes of transformations. +type TransformationSummary_TransformationResultCode int32 + +const ( + TransformationSummary_TRANSFORMATION_RESULT_CODE_UNSPECIFIED TransformationSummary_TransformationResultCode = 0 + TransformationSummary_SUCCESS TransformationSummary_TransformationResultCode = 1 + TransformationSummary_ERROR TransformationSummary_TransformationResultCode = 2 +) + +var TransformationSummary_TransformationResultCode_name = map[int32]string{ + 0: "TRANSFORMATION_RESULT_CODE_UNSPECIFIED", + 1: "SUCCESS", + 2: "ERROR", +} +var TransformationSummary_TransformationResultCode_value = map[string]int32{ + "TRANSFORMATION_RESULT_CODE_UNSPECIFIED": 0, + "SUCCESS": 1, + "ERROR": 2, +} + +func (x TransformationSummary_TransformationResultCode) String() string { + return proto.EnumName(TransformationSummary_TransformationResultCode_name, int32(x)) +} +func (TransformationSummary_TransformationResultCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor0, []int{59, 0} +} + +// Whether the trigger is currently active. If PAUSED or CANCELLED, no jobs +// will be created with this configuration. The service may automatically +// pause triggers experiencing frequent errors. To restart a job, set the +// status to HEALTHY after correcting user errors. +type JobTrigger_Status int32 + +const ( + JobTrigger_STATUS_UNSPECIFIED JobTrigger_Status = 0 + // Trigger is healthy. + JobTrigger_HEALTHY JobTrigger_Status = 1 + // Trigger is temporarily paused. + JobTrigger_PAUSED JobTrigger_Status = 2 + // Trigger is cancelled and can not be resumed. + JobTrigger_CANCELLED JobTrigger_Status = 3 +) + +var JobTrigger_Status_name = map[int32]string{ + 0: "STATUS_UNSPECIFIED", + 1: "HEALTHY", + 2: "PAUSED", + 3: "CANCELLED", +} +var JobTrigger_Status_value = map[string]int32{ + "STATUS_UNSPECIFIED": 0, + "HEALTHY": 1, + "PAUSED": 2, + "CANCELLED": 3, +} + +func (x JobTrigger_Status) String() string { + return proto.EnumName(JobTrigger_Status_name, int32(x)) +} +func (JobTrigger_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{64, 0} } + +type DlpJob_JobState int32 + +const ( + DlpJob_JOB_STATE_UNSPECIFIED DlpJob_JobState = 0 + // The job has not yet started. + DlpJob_PENDING DlpJob_JobState = 1 + // The job is currently running. + DlpJob_RUNNING DlpJob_JobState = 2 + // The job is no longer running. + DlpJob_DONE DlpJob_JobState = 3 + // The job was canceled before it could complete. + DlpJob_CANCELED DlpJob_JobState = 4 + // The job had an error and did not complete. + DlpJob_FAILED DlpJob_JobState = 5 +) + +var DlpJob_JobState_name = map[int32]string{ + 0: "JOB_STATE_UNSPECIFIED", + 1: "PENDING", + 2: "RUNNING", + 3: "DONE", + 4: "CANCELED", + 5: "FAILED", +} +var DlpJob_JobState_value = map[string]int32{ + "JOB_STATE_UNSPECIFIED": 0, + "PENDING": 1, + "RUNNING": 2, + "DONE": 3, + "CANCELED": 4, + "FAILED": 5, +} + +func (x DlpJob_JobState) String() string { + return proto.EnumName(DlpJob_JobState_name, int32(x)) +} +func (DlpJob_JobState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{80, 0} } + +// Configuration description of the scanning process. +// When used with redactContent only info_types and min_likelihood are currently +// used. +type InspectConfig struct { + // Restricts what info_types to look for. The values must correspond to + // InfoType values returned by ListInfoTypes or found in documentation. + // Empty info_types runs all enabled detectors. + InfoTypes []*InfoType `protobuf:"bytes,1,rep,name=info_types,json=infoTypes" json:"info_types,omitempty"` + // Only returns findings equal or above this threshold. The default is + // POSSIBLE. + MinLikelihood Likelihood `protobuf:"varint,2,opt,name=min_likelihood,json=minLikelihood,enum=google.privacy.dlp.v2.Likelihood" json:"min_likelihood,omitempty"` + Limits *InspectConfig_FindingLimits `protobuf:"bytes,3,opt,name=limits" json:"limits,omitempty"` + // When true, a contextual quote from the data that triggered a finding is + // included in the response; see Finding.quote. + IncludeQuote bool `protobuf:"varint,4,opt,name=include_quote,json=includeQuote" json:"include_quote,omitempty"` + // When true, excludes type information of the findings. + ExcludeInfoTypes bool `protobuf:"varint,5,opt,name=exclude_info_types,json=excludeInfoTypes" json:"exclude_info_types,omitempty"` + // Custom infoTypes provided by the user. + CustomInfoTypes []*CustomInfoType `protobuf:"bytes,6,rep,name=custom_info_types,json=customInfoTypes" json:"custom_info_types,omitempty"` + // List of options defining data content to scan. + // If empty, text, images, and other content will be included. + ContentOptions []ContentOption `protobuf:"varint,8,rep,packed,name=content_options,json=contentOptions,enum=google.privacy.dlp.v2.ContentOption" json:"content_options,omitempty"` +} + +func (m *InspectConfig) Reset() { *m = InspectConfig{} } +func (m *InspectConfig) String() string { return proto.CompactTextString(m) } +func (*InspectConfig) ProtoMessage() {} +func (*InspectConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +func (m *InspectConfig) GetInfoTypes() []*InfoType { + if m != nil { + return m.InfoTypes + } + return nil +} + +func (m *InspectConfig) GetMinLikelihood() Likelihood { + if m != nil { + return m.MinLikelihood + } + return Likelihood_LIKELIHOOD_UNSPECIFIED +} + +func (m *InspectConfig) GetLimits() *InspectConfig_FindingLimits { + if m != nil { + return m.Limits + } + return nil +} + +func (m *InspectConfig) GetIncludeQuote() bool { + if m != nil { + return m.IncludeQuote + } + return false +} + +func (m *InspectConfig) GetExcludeInfoTypes() bool { + if m != nil { + return m.ExcludeInfoTypes + } + return false +} + +func (m *InspectConfig) GetCustomInfoTypes() []*CustomInfoType { + if m != nil { + return m.CustomInfoTypes + } + return nil +} + +func (m *InspectConfig) GetContentOptions() []ContentOption { + if m != nil { + return m.ContentOptions + } + return nil +} + +type InspectConfig_FindingLimits struct { + // Max number of findings that will be returned for each item scanned. + // When set within `InspectDataSourceRequest`, + // the maximum returned is 1000 regardless if this is set higher. + // When set within `InspectContentRequest`, this field is ignored. + MaxFindingsPerItem int32 `protobuf:"varint,1,opt,name=max_findings_per_item,json=maxFindingsPerItem" json:"max_findings_per_item,omitempty"` + // Max number of findings that will be returned per request/job. + // When set within `InspectContentRequest`, the maximum returned is 1000 + // regardless if this is set higher. + MaxFindingsPerRequest int32 `protobuf:"varint,2,opt,name=max_findings_per_request,json=maxFindingsPerRequest" json:"max_findings_per_request,omitempty"` + // Configuration of findings limit given for specified infoTypes. + MaxFindingsPerInfoType []*InspectConfig_FindingLimits_InfoTypeLimit `protobuf:"bytes,3,rep,name=max_findings_per_info_type,json=maxFindingsPerInfoType" json:"max_findings_per_info_type,omitempty"` +} + +func (m *InspectConfig_FindingLimits) Reset() { *m = InspectConfig_FindingLimits{} } +func (m *InspectConfig_FindingLimits) String() string { return proto.CompactTextString(m) } +func (*InspectConfig_FindingLimits) ProtoMessage() {} +func (*InspectConfig_FindingLimits) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } + +func (m *InspectConfig_FindingLimits) GetMaxFindingsPerItem() int32 { + if m != nil { + return m.MaxFindingsPerItem + } + return 0 +} + +func (m *InspectConfig_FindingLimits) GetMaxFindingsPerRequest() int32 { + if m != nil { + return m.MaxFindingsPerRequest + } + return 0 +} + +func (m *InspectConfig_FindingLimits) GetMaxFindingsPerInfoType() []*InspectConfig_FindingLimits_InfoTypeLimit { + if m != nil { + return m.MaxFindingsPerInfoType + } + return nil +} + +// Max findings configuration per infoType, per content item or long +// running DlpJob. +type InspectConfig_FindingLimits_InfoTypeLimit struct { + // Type of information the findings limit applies to. Only one limit per + // info_type should be provided. If InfoTypeLimit does not have an + // info_type, the DLP API applies the limit against all info_types that + // are found but not specified in another InfoTypeLimit. + InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` + // Max findings limit for the given infoType. + MaxFindings int32 `protobuf:"varint,2,opt,name=max_findings,json=maxFindings" json:"max_findings,omitempty"` +} + +func (m *InspectConfig_FindingLimits_InfoTypeLimit) Reset() { + *m = InspectConfig_FindingLimits_InfoTypeLimit{} +} +func (m *InspectConfig_FindingLimits_InfoTypeLimit) String() string { return proto.CompactTextString(m) } +func (*InspectConfig_FindingLimits_InfoTypeLimit) ProtoMessage() {} +func (*InspectConfig_FindingLimits_InfoTypeLimit) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{0, 0, 0} +} + +func (m *InspectConfig_FindingLimits_InfoTypeLimit) GetInfoType() *InfoType { + if m != nil { + return m.InfoType + } + return nil +} + +func (m *InspectConfig_FindingLimits_InfoTypeLimit) GetMaxFindings() int32 { + if m != nil { + return m.MaxFindings + } + return 0 +} + +// Container for bytes to inspect or redact. +type ByteContentItem struct { + // The type of data stored in the bytes string. Default will be TEXT_UTF8. + Type ByteContentItem_BytesType `protobuf:"varint,1,opt,name=type,enum=google.privacy.dlp.v2.ByteContentItem_BytesType" json:"type,omitempty"` + // Content data to inspect or redact. + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` +} + +func (m *ByteContentItem) Reset() { *m = ByteContentItem{} } +func (m *ByteContentItem) String() string { return proto.CompactTextString(m) } +func (*ByteContentItem) ProtoMessage() {} +func (*ByteContentItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func (m *ByteContentItem) GetType() ByteContentItem_BytesType { + if m != nil { + return m.Type + } + return ByteContentItem_BYTES_TYPE_UNSPECIFIED +} + +func (m *ByteContentItem) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + +// Container structure for the content to inspect. +type ContentItem struct { + // Data of the item either in the byte array or UTF-8 string form, or table. + // + // Types that are valid to be assigned to DataItem: + // *ContentItem_Value + // *ContentItem_Table + // *ContentItem_ByteItem + DataItem isContentItem_DataItem `protobuf_oneof:"data_item"` +} + +func (m *ContentItem) Reset() { *m = ContentItem{} } +func (m *ContentItem) String() string { return proto.CompactTextString(m) } +func (*ContentItem) ProtoMessage() {} +func (*ContentItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + +type isContentItem_DataItem interface { + isContentItem_DataItem() +} + +type ContentItem_Value struct { + Value string `protobuf:"bytes,3,opt,name=value,oneof"` +} +type ContentItem_Table struct { + Table *Table `protobuf:"bytes,4,opt,name=table,oneof"` +} +type ContentItem_ByteItem struct { + ByteItem *ByteContentItem `protobuf:"bytes,5,opt,name=byte_item,json=byteItem,oneof"` +} + +func (*ContentItem_Value) isContentItem_DataItem() {} +func (*ContentItem_Table) isContentItem_DataItem() {} +func (*ContentItem_ByteItem) isContentItem_DataItem() {} + +func (m *ContentItem) GetDataItem() isContentItem_DataItem { + if m != nil { + return m.DataItem + } + return nil +} + +func (m *ContentItem) GetValue() string { + if x, ok := m.GetDataItem().(*ContentItem_Value); ok { + return x.Value + } + return "" +} + +func (m *ContentItem) GetTable() *Table { + if x, ok := m.GetDataItem().(*ContentItem_Table); ok { + return x.Table + } + return nil +} + +func (m *ContentItem) GetByteItem() *ByteContentItem { + if x, ok := m.GetDataItem().(*ContentItem_ByteItem); ok { + return x.ByteItem + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ContentItem) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ContentItem_OneofMarshaler, _ContentItem_OneofUnmarshaler, _ContentItem_OneofSizer, []interface{}{ + (*ContentItem_Value)(nil), + (*ContentItem_Table)(nil), + (*ContentItem_ByteItem)(nil), + } +} + +func _ContentItem_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ContentItem) + // data_item + switch x := m.DataItem.(type) { + case *ContentItem_Value: + b.EncodeVarint(3<<3 | proto.WireBytes) + b.EncodeStringBytes(x.Value) + case *ContentItem_Table: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Table); err != nil { + return err + } + case *ContentItem_ByteItem: + b.EncodeVarint(5<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ByteItem); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ContentItem.DataItem has unexpected type %T", x) + } + return nil +} + +func _ContentItem_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ContentItem) + switch tag { + case 3: // data_item.value + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.DataItem = &ContentItem_Value{x} + return true, err + case 4: // data_item.table + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Table) + err := b.DecodeMessage(msg) + m.DataItem = &ContentItem_Table{msg} + return true, err + case 5: // data_item.byte_item + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ByteContentItem) + err := b.DecodeMessage(msg) + m.DataItem = &ContentItem_ByteItem{msg} + return true, err + default: + return false, nil + } +} + +func _ContentItem_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ContentItem) + // data_item + switch x := m.DataItem.(type) { + case *ContentItem_Value: + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(len(x.Value))) + n += len(x.Value) + case *ContentItem_Table: + s := proto.Size(x.Table) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *ContentItem_ByteItem: + s := proto.Size(x.ByteItem) + n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Structured content to inspect. Up to 50,000 `Value`s per request allowed. +type Table struct { + Headers []*FieldId `protobuf:"bytes,1,rep,name=headers" json:"headers,omitempty"` + Rows []*Table_Row `protobuf:"bytes,2,rep,name=rows" json:"rows,omitempty"` +} + +func (m *Table) Reset() { *m = Table{} } +func (m *Table) String() string { return proto.CompactTextString(m) } +func (*Table) ProtoMessage() {} +func (*Table) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } + +func (m *Table) GetHeaders() []*FieldId { + if m != nil { + return m.Headers + } + return nil +} + +func (m *Table) GetRows() []*Table_Row { + if m != nil { + return m.Rows + } + return nil +} + +type Table_Row struct { + Values []*Value `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` +} + +func (m *Table_Row) Reset() { *m = Table_Row{} } +func (m *Table_Row) String() string { return proto.CompactTextString(m) } +func (*Table_Row) ProtoMessage() {} +func (*Table_Row) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} } + +func (m *Table_Row) GetValues() []*Value { + if m != nil { + return m.Values + } + return nil +} + +// All the findings for a single scanned item. +type InspectResult struct { + // List of findings for an item. + Findings []*Finding `protobuf:"bytes,1,rep,name=findings" json:"findings,omitempty"` + // If true, then this item might have more findings than were returned, + // and the findings returned are an arbitrary subset of all findings. + // The findings list might be truncated because the input items were too + // large, or because the server reached the maximum amount of resources + // allowed for a single API call. For best results, divide the input into + // smaller batches. + FindingsTruncated bool `protobuf:"varint,2,opt,name=findings_truncated,json=findingsTruncated" json:"findings_truncated,omitempty"` +} + +func (m *InspectResult) Reset() { *m = InspectResult{} } +func (m *InspectResult) String() string { return proto.CompactTextString(m) } +func (*InspectResult) ProtoMessage() {} +func (*InspectResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } + +func (m *InspectResult) GetFindings() []*Finding { + if m != nil { + return m.Findings + } + return nil +} + +func (m *InspectResult) GetFindingsTruncated() bool { + if m != nil { + return m.FindingsTruncated + } + return false +} + +// Represents a piece of potentially sensitive content. +type Finding struct { + // The content that was found. Even if the content is not textual, it + // may be converted to a textual representation here. + // Provided if requested by the `InspectConfig` and the finding is + // less than or equal to 4096 bytes long. If the finding exceeds 4096 bytes + // in length, the quote may be omitted. + Quote string `protobuf:"bytes,1,opt,name=quote" json:"quote,omitempty"` + // The type of content that might have been found. + // Provided if requested by the `InspectConfig`. + InfoType *InfoType `protobuf:"bytes,2,opt,name=info_type,json=infoType" json:"info_type,omitempty"` + // Estimate of how likely it is that the `info_type` is correct. + Likelihood Likelihood `protobuf:"varint,3,opt,name=likelihood,enum=google.privacy.dlp.v2.Likelihood" json:"likelihood,omitempty"` + // Where the content was found. + Location *Location `protobuf:"bytes,4,opt,name=location" json:"location,omitempty"` + // Timestamp when finding was detected. + CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime" json:"create_time,omitempty"` + // Contains data parsed from quotes. Only populated if include_quote was set + // to true and a supported infoType was requested. Currently supported + // infoTypes: DATE, DATE_OF_BIRTH and TIME. + QuoteInfo *QuoteInfo `protobuf:"bytes,7,opt,name=quote_info,json=quoteInfo" json:"quote_info,omitempty"` +} + +func (m *Finding) Reset() { *m = Finding{} } +func (m *Finding) String() string { return proto.CompactTextString(m) } +func (*Finding) ProtoMessage() {} +func (*Finding) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +func (m *Finding) GetQuote() string { + if m != nil { + return m.Quote + } + return "" +} + +func (m *Finding) GetInfoType() *InfoType { + if m != nil { + return m.InfoType + } + return nil +} + +func (m *Finding) GetLikelihood() Likelihood { + if m != nil { + return m.Likelihood + } + return Likelihood_LIKELIHOOD_UNSPECIFIED +} + +func (m *Finding) GetLocation() *Location { + if m != nil { + return m.Location + } + return nil +} + +func (m *Finding) GetCreateTime() *google_protobuf1.Timestamp { + if m != nil { + return m.CreateTime + } + return nil +} + +func (m *Finding) GetQuoteInfo() *QuoteInfo { + if m != nil { + return m.QuoteInfo + } + return nil +} + +// Specifies the location of the finding. +type Location struct { + // Zero-based byte offsets delimiting the finding. + // These are relative to the finding's containing element. + // Note that when the content is not textual, this references + // the UTF-8 encoded textual representation of the content. + // Omitted if content is an image. + ByteRange *Range `protobuf:"bytes,1,opt,name=byte_range,json=byteRange" json:"byte_range,omitempty"` + // Unicode character offsets delimiting the finding. + // These are relative to the finding's containing element. + // Provided when the content is text. + CodepointRange *Range `protobuf:"bytes,2,opt,name=codepoint_range,json=codepointRange" json:"codepoint_range,omitempty"` + // List of nested objects pointing to the precise location of the finding + // within the file or record. + ContentLocations []*ContentLocation `protobuf:"bytes,7,rep,name=content_locations,json=contentLocations" json:"content_locations,omitempty"` +} + +func (m *Location) Reset() { *m = Location{} } +func (m *Location) String() string { return proto.CompactTextString(m) } +func (*Location) ProtoMessage() {} +func (*Location) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } + +func (m *Location) GetByteRange() *Range { + if m != nil { + return m.ByteRange + } + return nil +} + +func (m *Location) GetCodepointRange() *Range { + if m != nil { + return m.CodepointRange + } + return nil +} + +func (m *Location) GetContentLocations() []*ContentLocation { + if m != nil { + return m.ContentLocations + } + return nil +} + +// Findings container location data. +type ContentLocation struct { + // Name of the container where the finding is located. + // The top level name is the source file name or table name. Nested names + // could be absent if the embedded object has no string identifier + // (for an example an image contained within a document). + ContainerName string `protobuf:"bytes,1,opt,name=container_name,json=containerName" json:"container_name,omitempty"` + // Type of the container within the file with location of the finding. + // + // Types that are valid to be assigned to Location: + // *ContentLocation_RecordLocation + // *ContentLocation_ImageLocation + // *ContentLocation_DocumentLocation + Location isContentLocation_Location `protobuf_oneof:"location"` + // Findings container modification timestamp, if applicable. + // For Google Cloud Storage contains last file modification timestamp. + // For BigQuery table contains last_modified_time property. + // For Datastore - not populated. + ContainerTimestamp *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=container_timestamp,json=containerTimestamp" json:"container_timestamp,omitempty"` + // Findings container version, if available + // ("generation" for Google Cloud Storage). + ContainerVersion string `protobuf:"bytes,7,opt,name=container_version,json=containerVersion" json:"container_version,omitempty"` +} + +func (m *ContentLocation) Reset() { *m = ContentLocation{} } +func (m *ContentLocation) String() string { return proto.CompactTextString(m) } +func (*ContentLocation) ProtoMessage() {} +func (*ContentLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } + +type isContentLocation_Location interface { + isContentLocation_Location() +} + +type ContentLocation_RecordLocation struct { + RecordLocation *RecordLocation `protobuf:"bytes,2,opt,name=record_location,json=recordLocation,oneof"` +} +type ContentLocation_ImageLocation struct { + ImageLocation *ImageLocation `protobuf:"bytes,3,opt,name=image_location,json=imageLocation,oneof"` +} +type ContentLocation_DocumentLocation struct { + DocumentLocation *DocumentLocation `protobuf:"bytes,5,opt,name=document_location,json=documentLocation,oneof"` +} + +func (*ContentLocation_RecordLocation) isContentLocation_Location() {} +func (*ContentLocation_ImageLocation) isContentLocation_Location() {} +func (*ContentLocation_DocumentLocation) isContentLocation_Location() {} + +func (m *ContentLocation) GetLocation() isContentLocation_Location { + if m != nil { + return m.Location + } + return nil +} + +func (m *ContentLocation) GetContainerName() string { + if m != nil { + return m.ContainerName + } + return "" +} + +func (m *ContentLocation) GetRecordLocation() *RecordLocation { + if x, ok := m.GetLocation().(*ContentLocation_RecordLocation); ok { + return x.RecordLocation + } + return nil +} + +func (m *ContentLocation) GetImageLocation() *ImageLocation { + if x, ok := m.GetLocation().(*ContentLocation_ImageLocation); ok { + return x.ImageLocation + } + return nil +} + +func (m *ContentLocation) GetDocumentLocation() *DocumentLocation { + if x, ok := m.GetLocation().(*ContentLocation_DocumentLocation); ok { + return x.DocumentLocation + } + return nil +} + +func (m *ContentLocation) GetContainerTimestamp() *google_protobuf1.Timestamp { + if m != nil { + return m.ContainerTimestamp + } + return nil +} + +func (m *ContentLocation) GetContainerVersion() string { + if m != nil { + return m.ContainerVersion + } + return "" +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ContentLocation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ContentLocation_OneofMarshaler, _ContentLocation_OneofUnmarshaler, _ContentLocation_OneofSizer, []interface{}{ + (*ContentLocation_RecordLocation)(nil), + (*ContentLocation_ImageLocation)(nil), + (*ContentLocation_DocumentLocation)(nil), + } +} + +func _ContentLocation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ContentLocation) + // location + switch x := m.Location.(type) { + case *ContentLocation_RecordLocation: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.RecordLocation); err != nil { + return err + } + case *ContentLocation_ImageLocation: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ImageLocation); err != nil { + return err + } + case *ContentLocation_DocumentLocation: + b.EncodeVarint(5<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.DocumentLocation); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ContentLocation.Location has unexpected type %T", x) + } + return nil +} + +func _ContentLocation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ContentLocation) + switch tag { + case 2: // location.record_location + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(RecordLocation) + err := b.DecodeMessage(msg) + m.Location = &ContentLocation_RecordLocation{msg} + return true, err + case 3: // location.image_location + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ImageLocation) + err := b.DecodeMessage(msg) + m.Location = &ContentLocation_ImageLocation{msg} + return true, err + case 5: // location.document_location + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(DocumentLocation) + err := b.DecodeMessage(msg) + m.Location = &ContentLocation_DocumentLocation{msg} + return true, err + default: + return false, nil + } +} + +func _ContentLocation_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ContentLocation) + // location + switch x := m.Location.(type) { + case *ContentLocation_RecordLocation: + s := proto.Size(x.RecordLocation) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *ContentLocation_ImageLocation: + s := proto.Size(x.ImageLocation) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *ContentLocation_DocumentLocation: + s := proto.Size(x.DocumentLocation) + n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Location of a finding within a document. +type DocumentLocation struct { + // Offset of the line, from the beginning of the file, where the finding + // is located. + FileOffset int64 `protobuf:"varint,1,opt,name=file_offset,json=fileOffset" json:"file_offset,omitempty"` +} + +func (m *DocumentLocation) Reset() { *m = DocumentLocation{} } +func (m *DocumentLocation) String() string { return proto.CompactTextString(m) } +func (*DocumentLocation) ProtoMessage() {} +func (*DocumentLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } + +func (m *DocumentLocation) GetFileOffset() int64 { + if m != nil { + return m.FileOffset + } + return 0 +} + +// Location of a finding within a row or record. +type RecordLocation struct { + // Key of the finding. + RecordKey *RecordKey `protobuf:"bytes,1,opt,name=record_key,json=recordKey" json:"record_key,omitempty"` + // Field id of the field containing the finding. + FieldId *FieldId `protobuf:"bytes,2,opt,name=field_id,json=fieldId" json:"field_id,omitempty"` + // Location within a `ContentItem.Table`. + TableLocation *TableLocation `protobuf:"bytes,3,opt,name=table_location,json=tableLocation" json:"table_location,omitempty"` +} + +func (m *RecordLocation) Reset() { *m = RecordLocation{} } +func (m *RecordLocation) String() string { return proto.CompactTextString(m) } +func (*RecordLocation) ProtoMessage() {} +func (*RecordLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } + +func (m *RecordLocation) GetRecordKey() *RecordKey { + if m != nil { + return m.RecordKey + } + return nil +} + +func (m *RecordLocation) GetFieldId() *FieldId { + if m != nil { + return m.FieldId + } + return nil +} + +func (m *RecordLocation) GetTableLocation() *TableLocation { + if m != nil { + return m.TableLocation + } + return nil +} + +// Location of a finding within a table. +type TableLocation struct { + // The zero-based index of the row where the finding is located. + RowIndex int64 `protobuf:"varint,1,opt,name=row_index,json=rowIndex" json:"row_index,omitempty"` +} + +func (m *TableLocation) Reset() { *m = TableLocation{} } +func (m *TableLocation) String() string { return proto.CompactTextString(m) } +func (*TableLocation) ProtoMessage() {} +func (*TableLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } + +func (m *TableLocation) GetRowIndex() int64 { + if m != nil { + return m.RowIndex + } + return 0 +} + +// Generic half-open interval [start, end) +type Range struct { + // Index of the first character of the range (inclusive). + Start int64 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` + // Index of the last character of the range (exclusive). + End int64 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` +} + +func (m *Range) Reset() { *m = Range{} } +func (m *Range) String() string { return proto.CompactTextString(m) } +func (*Range) ProtoMessage() {} +func (*Range) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } + +func (m *Range) GetStart() int64 { + if m != nil { + return m.Start + } + return 0 +} + +func (m *Range) GetEnd() int64 { + if m != nil { + return m.End + } + return 0 +} + +// Location of the finding within an image. +type ImageLocation struct { + // Bounding boxes locating the pixels within the image containing the finding. + BoundingBoxes []*BoundingBox `protobuf:"bytes,1,rep,name=bounding_boxes,json=boundingBoxes" json:"bounding_boxes,omitempty"` +} + +func (m *ImageLocation) Reset() { *m = ImageLocation{} } +func (m *ImageLocation) String() string { return proto.CompactTextString(m) } +func (*ImageLocation) ProtoMessage() {} +func (*ImageLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } + +func (m *ImageLocation) GetBoundingBoxes() []*BoundingBox { + if m != nil { + return m.BoundingBoxes + } + return nil +} + +// Bounding box encompassing detected text within an image. +type BoundingBox struct { + // Top coordinate of the bounding box. (0,0) is upper left. + Top int32 `protobuf:"varint,1,opt,name=top" json:"top,omitempty"` + // Left coordinate of the bounding box. (0,0) is upper left. + Left int32 `protobuf:"varint,2,opt,name=left" json:"left,omitempty"` + // Width of the bounding box in pixels. + Width int32 `protobuf:"varint,3,opt,name=width" json:"width,omitempty"` + // Height of the bounding box in pixels. + Height int32 `protobuf:"varint,4,opt,name=height" json:"height,omitempty"` +} + +func (m *BoundingBox) Reset() { *m = BoundingBox{} } +func (m *BoundingBox) String() string { return proto.CompactTextString(m) } +func (*BoundingBox) ProtoMessage() {} +func (*BoundingBox) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } + +func (m *BoundingBox) GetTop() int32 { + if m != nil { + return m.Top + } + return 0 +} + +func (m *BoundingBox) GetLeft() int32 { + if m != nil { + return m.Left + } + return 0 +} + +func (m *BoundingBox) GetWidth() int32 { + if m != nil { + return m.Width + } + return 0 +} + +func (m *BoundingBox) GetHeight() int32 { + if m != nil { + return m.Height + } + return 0 +} + +// Request to search for potentially sensitive info in a list of items +// and replace it with a default or provided content. +type RedactImageRequest struct { + // The parent resource name, for example projects/my-project-id. + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` + // Configuration for the inspector. + InspectConfig *InspectConfig `protobuf:"bytes,2,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` + // The configuration for specifying what content to redact from images. + ImageRedactionConfigs []*RedactImageRequest_ImageRedactionConfig `protobuf:"bytes,5,rep,name=image_redaction_configs,json=imageRedactionConfigs" json:"image_redaction_configs,omitempty"` + // The content must be PNG, JPEG, SVG or BMP. + ByteItem *ByteContentItem `protobuf:"bytes,7,opt,name=byte_item,json=byteItem" json:"byte_item,omitempty"` +} + +func (m *RedactImageRequest) Reset() { *m = RedactImageRequest{} } +func (m *RedactImageRequest) String() string { return proto.CompactTextString(m) } +func (*RedactImageRequest) ProtoMessage() {} +func (*RedactImageRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } + +func (m *RedactImageRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *RedactImageRequest) GetInspectConfig() *InspectConfig { + if m != nil { + return m.InspectConfig + } + return nil +} + +func (m *RedactImageRequest) GetImageRedactionConfigs() []*RedactImageRequest_ImageRedactionConfig { + if m != nil { + return m.ImageRedactionConfigs + } + return nil +} + +func (m *RedactImageRequest) GetByteItem() *ByteContentItem { + if m != nil { + return m.ByteItem + } + return nil +} + +// Configuration for determining how redaction of images should occur. +type RedactImageRequest_ImageRedactionConfig struct { + // Type of information to redact from images. + // + // Types that are valid to be assigned to Target: + // *RedactImageRequest_ImageRedactionConfig_InfoType + // *RedactImageRequest_ImageRedactionConfig_RedactAllText + Target isRedactImageRequest_ImageRedactionConfig_Target `protobuf_oneof:"target"` + // The color to use when redacting content from an image. If not specified, + // the default is black. + RedactionColor *Color `protobuf:"bytes,3,opt,name=redaction_color,json=redactionColor" json:"redaction_color,omitempty"` +} + +func (m *RedactImageRequest_ImageRedactionConfig) Reset() { + *m = RedactImageRequest_ImageRedactionConfig{} +} +func (m *RedactImageRequest_ImageRedactionConfig) String() string { return proto.CompactTextString(m) } +func (*RedactImageRequest_ImageRedactionConfig) ProtoMessage() {} +func (*RedactImageRequest_ImageRedactionConfig) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{14, 0} +} + +type isRedactImageRequest_ImageRedactionConfig_Target interface { + isRedactImageRequest_ImageRedactionConfig_Target() +} + +type RedactImageRequest_ImageRedactionConfig_InfoType struct { + InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType,oneof"` +} +type RedactImageRequest_ImageRedactionConfig_RedactAllText struct { + RedactAllText bool `protobuf:"varint,2,opt,name=redact_all_text,json=redactAllText,oneof"` +} + +func (*RedactImageRequest_ImageRedactionConfig_InfoType) isRedactImageRequest_ImageRedactionConfig_Target() { +} +func (*RedactImageRequest_ImageRedactionConfig_RedactAllText) isRedactImageRequest_ImageRedactionConfig_Target() { +} + +func (m *RedactImageRequest_ImageRedactionConfig) GetTarget() isRedactImageRequest_ImageRedactionConfig_Target { + if m != nil { + return m.Target + } + return nil +} + +func (m *RedactImageRequest_ImageRedactionConfig) GetInfoType() *InfoType { + if x, ok := m.GetTarget().(*RedactImageRequest_ImageRedactionConfig_InfoType); ok { + return x.InfoType + } + return nil +} + +func (m *RedactImageRequest_ImageRedactionConfig) GetRedactAllText() bool { + if x, ok := m.GetTarget().(*RedactImageRequest_ImageRedactionConfig_RedactAllText); ok { + return x.RedactAllText + } + return false +} + +func (m *RedactImageRequest_ImageRedactionConfig) GetRedactionColor() *Color { + if m != nil { + return m.RedactionColor + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*RedactImageRequest_ImageRedactionConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _RedactImageRequest_ImageRedactionConfig_OneofMarshaler, _RedactImageRequest_ImageRedactionConfig_OneofUnmarshaler, _RedactImageRequest_ImageRedactionConfig_OneofSizer, []interface{}{ + (*RedactImageRequest_ImageRedactionConfig_InfoType)(nil), + (*RedactImageRequest_ImageRedactionConfig_RedactAllText)(nil), + } +} + +func _RedactImageRequest_ImageRedactionConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*RedactImageRequest_ImageRedactionConfig) + // target + switch x := m.Target.(type) { + case *RedactImageRequest_ImageRedactionConfig_InfoType: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.InfoType); err != nil { + return err + } + case *RedactImageRequest_ImageRedactionConfig_RedactAllText: + t := uint64(0) + if x.RedactAllText { + t = 1 + } + b.EncodeVarint(2<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("RedactImageRequest_ImageRedactionConfig.Target has unexpected type %T", x) + } + return nil +} + +func _RedactImageRequest_ImageRedactionConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*RedactImageRequest_ImageRedactionConfig) + switch tag { + case 1: // target.info_type + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(InfoType) + err := b.DecodeMessage(msg) + m.Target = &RedactImageRequest_ImageRedactionConfig_InfoType{msg} + return true, err + case 2: // target.redact_all_text + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Target = &RedactImageRequest_ImageRedactionConfig_RedactAllText{x != 0} + return true, err + default: + return false, nil + } +} + +func _RedactImageRequest_ImageRedactionConfig_OneofSizer(msg proto.Message) (n int) { + m := msg.(*RedactImageRequest_ImageRedactionConfig) + // target + switch x := m.Target.(type) { + case *RedactImageRequest_ImageRedactionConfig_InfoType: + s := proto.Size(x.InfoType) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *RedactImageRequest_ImageRedactionConfig_RedactAllText: + n += proto.SizeVarint(2<<3 | proto.WireVarint) + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Represents a color in the RGB color space. +type Color struct { + // The amount of red in the color as a value in the interval [0, 1]. + Red float32 `protobuf:"fixed32,1,opt,name=red" json:"red,omitempty"` + // The amount of green in the color as a value in the interval [0, 1]. + Green float32 `protobuf:"fixed32,2,opt,name=green" json:"green,omitempty"` + // The amount of blue in the color as a value in the interval [0, 1]. + Blue float32 `protobuf:"fixed32,3,opt,name=blue" json:"blue,omitempty"` +} + +func (m *Color) Reset() { *m = Color{} } +func (m *Color) String() string { return proto.CompactTextString(m) } +func (*Color) ProtoMessage() {} +func (*Color) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } + +func (m *Color) GetRed() float32 { + if m != nil { + return m.Red + } + return 0 +} + +func (m *Color) GetGreen() float32 { + if m != nil { + return m.Green + } + return 0 +} + +func (m *Color) GetBlue() float32 { + if m != nil { + return m.Blue + } + return 0 +} + +// Results of redacting an image. +type RedactImageResponse struct { + // The redacted image. The type will be the same as the original image. + RedactedImage []byte `protobuf:"bytes,1,opt,name=redacted_image,json=redactedImage,proto3" json:"redacted_image,omitempty"` + // If an image was being inspected and the InspectConfig's include_quote was + // set to true, then this field will include all text, if any, that was found + // in the image. + ExtractedText string `protobuf:"bytes,2,opt,name=extracted_text,json=extractedText" json:"extracted_text,omitempty"` +} + +func (m *RedactImageResponse) Reset() { *m = RedactImageResponse{} } +func (m *RedactImageResponse) String() string { return proto.CompactTextString(m) } +func (*RedactImageResponse) ProtoMessage() {} +func (*RedactImageResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } + +func (m *RedactImageResponse) GetRedactedImage() []byte { + if m != nil { + return m.RedactedImage + } + return nil +} + +func (m *RedactImageResponse) GetExtractedText() string { + if m != nil { + return m.ExtractedText + } + return "" +} + +// Request to de-identify a list of items. +type DeidentifyContentRequest struct { + // The parent resource name, for example projects/my-project-id. + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` + // Configuration for the de-identification of the content item. + // Items specified here will override the template referenced by the + // deidentify_template_name argument. + DeidentifyConfig *DeidentifyConfig `protobuf:"bytes,2,opt,name=deidentify_config,json=deidentifyConfig" json:"deidentify_config,omitempty"` + // Configuration for the inspector. + // Items specified here will override the template referenced by the + // inspect_template_name argument. + InspectConfig *InspectConfig `protobuf:"bytes,3,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` + // The item to de-identify. Will be treated as text. + Item *ContentItem `protobuf:"bytes,4,opt,name=item" json:"item,omitempty"` + // Optional template to use. Any configuration directly specified in + // inspect_config will override those set in the template. Singular fields + // that are set in this request will replace their corresponding fields in the + // template. Repeated fields are appended. Singular sub-messages and groups + // are recursively merged. + InspectTemplateName string `protobuf:"bytes,5,opt,name=inspect_template_name,json=inspectTemplateName" json:"inspect_template_name,omitempty"` + // Optional template to use. Any configuration directly specified in + // deidentify_config will override those set in the template. Singular fields + // that are set in this request will replace their corresponding fields in the + // template. Repeated fields are appended. Singular sub-messages and groups + // are recursively merged. + DeidentifyTemplateName string `protobuf:"bytes,6,opt,name=deidentify_template_name,json=deidentifyTemplateName" json:"deidentify_template_name,omitempty"` +} + +func (m *DeidentifyContentRequest) Reset() { *m = DeidentifyContentRequest{} } +func (m *DeidentifyContentRequest) String() string { return proto.CompactTextString(m) } +func (*DeidentifyContentRequest) ProtoMessage() {} +func (*DeidentifyContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } + +func (m *DeidentifyContentRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *DeidentifyContentRequest) GetDeidentifyConfig() *DeidentifyConfig { + if m != nil { + return m.DeidentifyConfig + } + return nil +} + +func (m *DeidentifyContentRequest) GetInspectConfig() *InspectConfig { + if m != nil { + return m.InspectConfig + } + return nil +} + +func (m *DeidentifyContentRequest) GetItem() *ContentItem { + if m != nil { + return m.Item + } + return nil +} + +func (m *DeidentifyContentRequest) GetInspectTemplateName() string { + if m != nil { + return m.InspectTemplateName + } + return "" +} + +func (m *DeidentifyContentRequest) GetDeidentifyTemplateName() string { + if m != nil { + return m.DeidentifyTemplateName + } + return "" +} + +// Results of de-identifying a ContentItem. +type DeidentifyContentResponse struct { + // The de-identified item. + Item *ContentItem `protobuf:"bytes,1,opt,name=item" json:"item,omitempty"` + // An overview of the changes that were made on the `item`. + Overview *TransformationOverview `protobuf:"bytes,2,opt,name=overview" json:"overview,omitempty"` +} + +func (m *DeidentifyContentResponse) Reset() { *m = DeidentifyContentResponse{} } +func (m *DeidentifyContentResponse) String() string { return proto.CompactTextString(m) } +func (*DeidentifyContentResponse) ProtoMessage() {} +func (*DeidentifyContentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } + +func (m *DeidentifyContentResponse) GetItem() *ContentItem { + if m != nil { + return m.Item + } + return nil +} + +func (m *DeidentifyContentResponse) GetOverview() *TransformationOverview { + if m != nil { + return m.Overview + } + return nil +} + +// Request to re-identify an item. +type ReidentifyContentRequest struct { + // The parent resource name. + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` + // Configuration for the re-identification of the content item. + // This field shares the same proto message type that is used for + // de-identification, however its usage here is for the reversal of the + // previous de-identification. Re-identification is performed by examining + // the transformations used to de-identify the items and executing the + // reverse. This requires that only reversible transformations + // be provided here. The reversible transformations are: + // + // - `CryptoReplaceFfxFpeConfig` + ReidentifyConfig *DeidentifyConfig `protobuf:"bytes,2,opt,name=reidentify_config,json=reidentifyConfig" json:"reidentify_config,omitempty"` + // Configuration for the inspector. + InspectConfig *InspectConfig `protobuf:"bytes,3,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` + // The item to re-identify. Will be treated as text. + Item *ContentItem `protobuf:"bytes,4,opt,name=item" json:"item,omitempty"` + // Optional template to use. Any configuration directly specified in + // `inspect_config` will override those set in the template. Singular fields + // that are set in this request will replace their corresponding fields in the + // template. Repeated fields are appended. Singular sub-messages and groups + // are recursively merged. + InspectTemplateName string `protobuf:"bytes,5,opt,name=inspect_template_name,json=inspectTemplateName" json:"inspect_template_name,omitempty"` + // Optional template to use. References an instance of `DeidentifyTemplate`. + // Any configuration directly specified in `reidentify_config` or + // `inspect_config` will override those set in the template. Singular fields + // that are set in this request will replace their corresponding fields in the + // template. Repeated fields are appended. Singular sub-messages and groups + // are recursively merged. + ReidentifyTemplateName string `protobuf:"bytes,6,opt,name=reidentify_template_name,json=reidentifyTemplateName" json:"reidentify_template_name,omitempty"` +} + +func (m *ReidentifyContentRequest) Reset() { *m = ReidentifyContentRequest{} } +func (m *ReidentifyContentRequest) String() string { return proto.CompactTextString(m) } +func (*ReidentifyContentRequest) ProtoMessage() {} +func (*ReidentifyContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } + +func (m *ReidentifyContentRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *ReidentifyContentRequest) GetReidentifyConfig() *DeidentifyConfig { + if m != nil { + return m.ReidentifyConfig + } + return nil +} + +func (m *ReidentifyContentRequest) GetInspectConfig() *InspectConfig { + if m != nil { + return m.InspectConfig + } + return nil +} + +func (m *ReidentifyContentRequest) GetItem() *ContentItem { + if m != nil { + return m.Item + } + return nil +} + +func (m *ReidentifyContentRequest) GetInspectTemplateName() string { + if m != nil { + return m.InspectTemplateName + } + return "" +} + +func (m *ReidentifyContentRequest) GetReidentifyTemplateName() string { + if m != nil { + return m.ReidentifyTemplateName + } + return "" +} + +// Results of re-identifying a item. +type ReidentifyContentResponse struct { + // The re-identified item. + Item *ContentItem `protobuf:"bytes,1,opt,name=item" json:"item,omitempty"` + // An overview of the changes that were made to the `item`. + Overview *TransformationOverview `protobuf:"bytes,2,opt,name=overview" json:"overview,omitempty"` +} + +func (m *ReidentifyContentResponse) Reset() { *m = ReidentifyContentResponse{} } +func (m *ReidentifyContentResponse) String() string { return proto.CompactTextString(m) } +func (*ReidentifyContentResponse) ProtoMessage() {} +func (*ReidentifyContentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } + +func (m *ReidentifyContentResponse) GetItem() *ContentItem { + if m != nil { + return m.Item + } + return nil +} + +func (m *ReidentifyContentResponse) GetOverview() *TransformationOverview { + if m != nil { + return m.Overview + } + return nil +} + +// Request to search for potentially sensitive info in a ContentItem. +type InspectContentRequest struct { + // The parent resource name, for example projects/my-project-id. + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` + // Configuration for the inspector. What specified here will override + // the template referenced by the inspect_template_name argument. + InspectConfig *InspectConfig `protobuf:"bytes,2,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` + // The item to inspect. + Item *ContentItem `protobuf:"bytes,3,opt,name=item" json:"item,omitempty"` + // Optional template to use. Any configuration directly specified in + // inspect_config will override those set in the template. Singular fields + // that are set in this request will replace their corresponding fields in the + // template. Repeated fields are appended. Singular sub-messages and groups + // are recursively merged. + InspectTemplateName string `protobuf:"bytes,4,opt,name=inspect_template_name,json=inspectTemplateName" json:"inspect_template_name,omitempty"` +} + +func (m *InspectContentRequest) Reset() { *m = InspectContentRequest{} } +func (m *InspectContentRequest) String() string { return proto.CompactTextString(m) } +func (*InspectContentRequest) ProtoMessage() {} +func (*InspectContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } + +func (m *InspectContentRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *InspectContentRequest) GetInspectConfig() *InspectConfig { + if m != nil { + return m.InspectConfig + } + return nil +} + +func (m *InspectContentRequest) GetItem() *ContentItem { + if m != nil { + return m.Item + } + return nil +} + +func (m *InspectContentRequest) GetInspectTemplateName() string { + if m != nil { + return m.InspectTemplateName + } + return "" +} + +// Results of inspecting an item. +type InspectContentResponse struct { + // The findings. + Result *InspectResult `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"` +} + +func (m *InspectContentResponse) Reset() { *m = InspectContentResponse{} } +func (m *InspectContentResponse) String() string { return proto.CompactTextString(m) } +func (*InspectContentResponse) ProtoMessage() {} +func (*InspectContentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } + +func (m *InspectContentResponse) GetResult() *InspectResult { + if m != nil { + return m.Result + } + return nil +} + +// Cloud repository for storing output. +type OutputStorageConfig struct { + // Types that are valid to be assigned to Type: + // *OutputStorageConfig_Table + Type isOutputStorageConfig_Type `protobuf_oneof:"type"` + // Schema used for writing the findings. Columns are derived from the + // `Finding` object. If appending to an existing table, any columns from the + // predefined schema that are missing will be added. No columns in the + // existing table will be deleted. + // + // If unspecified, then all available columns will be used for a new table, + // and no changes will be made to an existing table. + OutputSchema OutputStorageConfig_OutputSchema `protobuf:"varint,3,opt,name=output_schema,json=outputSchema,enum=google.privacy.dlp.v2.OutputStorageConfig_OutputSchema" json:"output_schema,omitempty"` +} + +func (m *OutputStorageConfig) Reset() { *m = OutputStorageConfig{} } +func (m *OutputStorageConfig) String() string { return proto.CompactTextString(m) } +func (*OutputStorageConfig) ProtoMessage() {} +func (*OutputStorageConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } + +type isOutputStorageConfig_Type interface { + isOutputStorageConfig_Type() +} + +type OutputStorageConfig_Table struct { + Table *BigQueryTable `protobuf:"bytes,1,opt,name=table,oneof"` +} + +func (*OutputStorageConfig_Table) isOutputStorageConfig_Type() {} + +func (m *OutputStorageConfig) GetType() isOutputStorageConfig_Type { + if m != nil { + return m.Type + } + return nil +} + +func (m *OutputStorageConfig) GetTable() *BigQueryTable { + if x, ok := m.GetType().(*OutputStorageConfig_Table); ok { + return x.Table + } + return nil +} + +func (m *OutputStorageConfig) GetOutputSchema() OutputStorageConfig_OutputSchema { + if m != nil { + return m.OutputSchema + } + return OutputStorageConfig_OUTPUT_SCHEMA_UNSPECIFIED +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*OutputStorageConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _OutputStorageConfig_OneofMarshaler, _OutputStorageConfig_OneofUnmarshaler, _OutputStorageConfig_OneofSizer, []interface{}{ + (*OutputStorageConfig_Table)(nil), + } +} + +func _OutputStorageConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*OutputStorageConfig) + // type + switch x := m.Type.(type) { + case *OutputStorageConfig_Table: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Table); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("OutputStorageConfig.Type has unexpected type %T", x) + } + return nil +} + +func _OutputStorageConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*OutputStorageConfig) + switch tag { + case 1: // type.table + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(BigQueryTable) + err := b.DecodeMessage(msg) + m.Type = &OutputStorageConfig_Table{msg} + return true, err + default: + return false, nil + } +} + +func _OutputStorageConfig_OneofSizer(msg proto.Message) (n int) { + m := msg.(*OutputStorageConfig) + // type + switch x := m.Type.(type) { + case *OutputStorageConfig_Table: + s := proto.Size(x.Table) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Statistics regarding a specific InfoType. +type InfoTypeStats struct { + // The type of finding this stat is for. + InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` + // Number of findings for this infoType. + Count int64 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` +} + +func (m *InfoTypeStats) Reset() { *m = InfoTypeStats{} } +func (m *InfoTypeStats) String() string { return proto.CompactTextString(m) } +func (*InfoTypeStats) ProtoMessage() {} +func (*InfoTypeStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } + +func (m *InfoTypeStats) GetInfoType() *InfoType { + if m != nil { + return m.InfoType + } + return nil +} + +func (m *InfoTypeStats) GetCount() int64 { + if m != nil { + return m.Count + } + return 0 +} + +// The results of an inspect DataSource job. +type InspectDataSourceDetails struct { + // The configuration used for this job. + RequestedOptions *InspectDataSourceDetails_RequestedOptions `protobuf:"bytes,2,opt,name=requested_options,json=requestedOptions" json:"requested_options,omitempty"` + // A summary of the outcome of this inspect job. + Result *InspectDataSourceDetails_Result `protobuf:"bytes,3,opt,name=result" json:"result,omitempty"` +} + +func (m *InspectDataSourceDetails) Reset() { *m = InspectDataSourceDetails{} } +func (m *InspectDataSourceDetails) String() string { return proto.CompactTextString(m) } +func (*InspectDataSourceDetails) ProtoMessage() {} +func (*InspectDataSourceDetails) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } + +func (m *InspectDataSourceDetails) GetRequestedOptions() *InspectDataSourceDetails_RequestedOptions { + if m != nil { + return m.RequestedOptions + } + return nil +} + +func (m *InspectDataSourceDetails) GetResult() *InspectDataSourceDetails_Result { + if m != nil { + return m.Result + } + return nil +} + +type InspectDataSourceDetails_RequestedOptions struct { + // If run with an inspect template, a snapshot of it's state at the time of + // this run. + SnapshotInspectTemplate *InspectTemplate `protobuf:"bytes,1,opt,name=snapshot_inspect_template,json=snapshotInspectTemplate" json:"snapshot_inspect_template,omitempty"` + JobConfig *InspectJobConfig `protobuf:"bytes,3,opt,name=job_config,json=jobConfig" json:"job_config,omitempty"` +} + +func (m *InspectDataSourceDetails_RequestedOptions) Reset() { + *m = InspectDataSourceDetails_RequestedOptions{} +} +func (m *InspectDataSourceDetails_RequestedOptions) String() string { return proto.CompactTextString(m) } +func (*InspectDataSourceDetails_RequestedOptions) ProtoMessage() {} +func (*InspectDataSourceDetails_RequestedOptions) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{25, 0} +} + +func (m *InspectDataSourceDetails_RequestedOptions) GetSnapshotInspectTemplate() *InspectTemplate { + if m != nil { + return m.SnapshotInspectTemplate + } + return nil +} + +func (m *InspectDataSourceDetails_RequestedOptions) GetJobConfig() *InspectJobConfig { + if m != nil { + return m.JobConfig + } + return nil +} + +type InspectDataSourceDetails_Result struct { + // Total size in bytes that were processed. + ProcessedBytes int64 `protobuf:"varint,1,opt,name=processed_bytes,json=processedBytes" json:"processed_bytes,omitempty"` + // Estimate of the number of bytes to process. + TotalEstimatedBytes int64 `protobuf:"varint,2,opt,name=total_estimated_bytes,json=totalEstimatedBytes" json:"total_estimated_bytes,omitempty"` + // Statistics of how many instances of each info type were found during + // inspect job. + InfoTypeStats []*InfoTypeStats `protobuf:"bytes,3,rep,name=info_type_stats,json=infoTypeStats" json:"info_type_stats,omitempty"` +} + +func (m *InspectDataSourceDetails_Result) Reset() { *m = InspectDataSourceDetails_Result{} } +func (m *InspectDataSourceDetails_Result) String() string { return proto.CompactTextString(m) } +func (*InspectDataSourceDetails_Result) ProtoMessage() {} +func (*InspectDataSourceDetails_Result) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{25, 1} +} + +func (m *InspectDataSourceDetails_Result) GetProcessedBytes() int64 { + if m != nil { + return m.ProcessedBytes + } + return 0 +} + +func (m *InspectDataSourceDetails_Result) GetTotalEstimatedBytes() int64 { + if m != nil { + return m.TotalEstimatedBytes + } + return 0 +} + +func (m *InspectDataSourceDetails_Result) GetInfoTypeStats() []*InfoTypeStats { + if m != nil { + return m.InfoTypeStats + } + return nil +} + +// InfoType description. +type InfoTypeDescription struct { + // Internal name of the infoType. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Human readable form of the infoType name. + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` + // Which parts of the API supports this InfoType. + SupportedBy []InfoTypeSupportedBy `protobuf:"varint,3,rep,packed,name=supported_by,json=supportedBy,enum=google.privacy.dlp.v2.InfoTypeSupportedBy" json:"supported_by,omitempty"` +} + +func (m *InfoTypeDescription) Reset() { *m = InfoTypeDescription{} } +func (m *InfoTypeDescription) String() string { return proto.CompactTextString(m) } +func (*InfoTypeDescription) ProtoMessage() {} +func (*InfoTypeDescription) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } + +func (m *InfoTypeDescription) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *InfoTypeDescription) GetDisplayName() string { + if m != nil { + return m.DisplayName + } + return "" +} + +func (m *InfoTypeDescription) GetSupportedBy() []InfoTypeSupportedBy { + if m != nil { + return m.SupportedBy + } + return nil +} + +// Request for the list of infoTypes. +type ListInfoTypesRequest struct { + // Optional BCP-47 language code for localized infoType friendly + // names. If omitted, or if localized strings are not available, + // en-US strings will be returned. + LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` + // Optional filter to only return infoTypes supported by certain parts of the + // API. Defaults to supported_by=INSPECT. + Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` +} + +func (m *ListInfoTypesRequest) Reset() { *m = ListInfoTypesRequest{} } +func (m *ListInfoTypesRequest) String() string { return proto.CompactTextString(m) } +func (*ListInfoTypesRequest) ProtoMessage() {} +func (*ListInfoTypesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } + +func (m *ListInfoTypesRequest) GetLanguageCode() string { + if m != nil { + return m.LanguageCode + } + return "" +} + +func (m *ListInfoTypesRequest) GetFilter() string { + if m != nil { + return m.Filter + } + return "" +} + +// Response to the ListInfoTypes request. +type ListInfoTypesResponse struct { + // Set of sensitive infoTypes. + InfoTypes []*InfoTypeDescription `protobuf:"bytes,1,rep,name=info_types,json=infoTypes" json:"info_types,omitempty"` +} + +func (m *ListInfoTypesResponse) Reset() { *m = ListInfoTypesResponse{} } +func (m *ListInfoTypesResponse) String() string { return proto.CompactTextString(m) } +func (*ListInfoTypesResponse) ProtoMessage() {} +func (*ListInfoTypesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } + +func (m *ListInfoTypesResponse) GetInfoTypes() []*InfoTypeDescription { + if m != nil { + return m.InfoTypes + } + return nil +} + +// Configuration for a risk analysis job. +type RiskAnalysisJobConfig struct { + // Privacy metric to compute. + PrivacyMetric *PrivacyMetric `protobuf:"bytes,1,opt,name=privacy_metric,json=privacyMetric" json:"privacy_metric,omitempty"` + // Input dataset to compute metrics over. + SourceTable *BigQueryTable `protobuf:"bytes,2,opt,name=source_table,json=sourceTable" json:"source_table,omitempty"` + // Actions to execute at the completion of the job. Are executed in the order + // provided. + Actions []*Action `protobuf:"bytes,3,rep,name=actions" json:"actions,omitempty"` +} + +func (m *RiskAnalysisJobConfig) Reset() { *m = RiskAnalysisJobConfig{} } +func (m *RiskAnalysisJobConfig) String() string { return proto.CompactTextString(m) } +func (*RiskAnalysisJobConfig) ProtoMessage() {} +func (*RiskAnalysisJobConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } + +func (m *RiskAnalysisJobConfig) GetPrivacyMetric() *PrivacyMetric { + if m != nil { + return m.PrivacyMetric + } + return nil +} + +func (m *RiskAnalysisJobConfig) GetSourceTable() *BigQueryTable { + if m != nil { + return m.SourceTable + } + return nil +} + +func (m *RiskAnalysisJobConfig) GetActions() []*Action { + if m != nil { + return m.Actions + } + return nil +} + +// Privacy metric to compute for reidentification risk analysis. +type PrivacyMetric struct { + // Types that are valid to be assigned to Type: + // *PrivacyMetric_NumericalStatsConfig_ + // *PrivacyMetric_CategoricalStatsConfig_ + // *PrivacyMetric_KAnonymityConfig_ + // *PrivacyMetric_LDiversityConfig_ + // *PrivacyMetric_KMapEstimationConfig_ + Type isPrivacyMetric_Type `protobuf_oneof:"type"` +} + +func (m *PrivacyMetric) Reset() { *m = PrivacyMetric{} } +func (m *PrivacyMetric) String() string { return proto.CompactTextString(m) } +func (*PrivacyMetric) ProtoMessage() {} +func (*PrivacyMetric) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } + +type isPrivacyMetric_Type interface { + isPrivacyMetric_Type() +} + +type PrivacyMetric_NumericalStatsConfig_ struct { + NumericalStatsConfig *PrivacyMetric_NumericalStatsConfig `protobuf:"bytes,1,opt,name=numerical_stats_config,json=numericalStatsConfig,oneof"` +} +type PrivacyMetric_CategoricalStatsConfig_ struct { + CategoricalStatsConfig *PrivacyMetric_CategoricalStatsConfig `protobuf:"bytes,2,opt,name=categorical_stats_config,json=categoricalStatsConfig,oneof"` +} +type PrivacyMetric_KAnonymityConfig_ struct { + KAnonymityConfig *PrivacyMetric_KAnonymityConfig `protobuf:"bytes,3,opt,name=k_anonymity_config,json=kAnonymityConfig,oneof"` +} +type PrivacyMetric_LDiversityConfig_ struct { + LDiversityConfig *PrivacyMetric_LDiversityConfig `protobuf:"bytes,4,opt,name=l_diversity_config,json=lDiversityConfig,oneof"` +} +type PrivacyMetric_KMapEstimationConfig_ struct { + KMapEstimationConfig *PrivacyMetric_KMapEstimationConfig `protobuf:"bytes,5,opt,name=k_map_estimation_config,json=kMapEstimationConfig,oneof"` +} + +func (*PrivacyMetric_NumericalStatsConfig_) isPrivacyMetric_Type() {} +func (*PrivacyMetric_CategoricalStatsConfig_) isPrivacyMetric_Type() {} +func (*PrivacyMetric_KAnonymityConfig_) isPrivacyMetric_Type() {} +func (*PrivacyMetric_LDiversityConfig_) isPrivacyMetric_Type() {} +func (*PrivacyMetric_KMapEstimationConfig_) isPrivacyMetric_Type() {} + +func (m *PrivacyMetric) GetType() isPrivacyMetric_Type { + if m != nil { + return m.Type + } + return nil +} + +func (m *PrivacyMetric) GetNumericalStatsConfig() *PrivacyMetric_NumericalStatsConfig { + if x, ok := m.GetType().(*PrivacyMetric_NumericalStatsConfig_); ok { + return x.NumericalStatsConfig + } + return nil +} + +func (m *PrivacyMetric) GetCategoricalStatsConfig() *PrivacyMetric_CategoricalStatsConfig { + if x, ok := m.GetType().(*PrivacyMetric_CategoricalStatsConfig_); ok { + return x.CategoricalStatsConfig + } + return nil +} + +func (m *PrivacyMetric) GetKAnonymityConfig() *PrivacyMetric_KAnonymityConfig { + if x, ok := m.GetType().(*PrivacyMetric_KAnonymityConfig_); ok { + return x.KAnonymityConfig + } + return nil +} + +func (m *PrivacyMetric) GetLDiversityConfig() *PrivacyMetric_LDiversityConfig { + if x, ok := m.GetType().(*PrivacyMetric_LDiversityConfig_); ok { + return x.LDiversityConfig + } + return nil +} + +func (m *PrivacyMetric) GetKMapEstimationConfig() *PrivacyMetric_KMapEstimationConfig { + if x, ok := m.GetType().(*PrivacyMetric_KMapEstimationConfig_); ok { + return x.KMapEstimationConfig + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*PrivacyMetric) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _PrivacyMetric_OneofMarshaler, _PrivacyMetric_OneofUnmarshaler, _PrivacyMetric_OneofSizer, []interface{}{ + (*PrivacyMetric_NumericalStatsConfig_)(nil), + (*PrivacyMetric_CategoricalStatsConfig_)(nil), + (*PrivacyMetric_KAnonymityConfig_)(nil), + (*PrivacyMetric_LDiversityConfig_)(nil), + (*PrivacyMetric_KMapEstimationConfig_)(nil), + } +} + +func _PrivacyMetric_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*PrivacyMetric) + // type + switch x := m.Type.(type) { + case *PrivacyMetric_NumericalStatsConfig_: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.NumericalStatsConfig); err != nil { + return err + } + case *PrivacyMetric_CategoricalStatsConfig_: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.CategoricalStatsConfig); err != nil { + return err + } + case *PrivacyMetric_KAnonymityConfig_: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.KAnonymityConfig); err != nil { + return err + } + case *PrivacyMetric_LDiversityConfig_: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.LDiversityConfig); err != nil { + return err + } + case *PrivacyMetric_KMapEstimationConfig_: + b.EncodeVarint(5<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.KMapEstimationConfig); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("PrivacyMetric.Type has unexpected type %T", x) + } + return nil +} + +func _PrivacyMetric_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*PrivacyMetric) + switch tag { + case 1: // type.numerical_stats_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(PrivacyMetric_NumericalStatsConfig) + err := b.DecodeMessage(msg) + m.Type = &PrivacyMetric_NumericalStatsConfig_{msg} + return true, err + case 2: // type.categorical_stats_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(PrivacyMetric_CategoricalStatsConfig) + err := b.DecodeMessage(msg) + m.Type = &PrivacyMetric_CategoricalStatsConfig_{msg} + return true, err + case 3: // type.k_anonymity_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(PrivacyMetric_KAnonymityConfig) + err := b.DecodeMessage(msg) + m.Type = &PrivacyMetric_KAnonymityConfig_{msg} + return true, err + case 4: // type.l_diversity_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(PrivacyMetric_LDiversityConfig) + err := b.DecodeMessage(msg) + m.Type = &PrivacyMetric_LDiversityConfig_{msg} + return true, err + case 5: // type.k_map_estimation_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(PrivacyMetric_KMapEstimationConfig) + err := b.DecodeMessage(msg) + m.Type = &PrivacyMetric_KMapEstimationConfig_{msg} + return true, err + default: + return false, nil + } +} + +func _PrivacyMetric_OneofSizer(msg proto.Message) (n int) { + m := msg.(*PrivacyMetric) + // type + switch x := m.Type.(type) { + case *PrivacyMetric_NumericalStatsConfig_: + s := proto.Size(x.NumericalStatsConfig) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrivacyMetric_CategoricalStatsConfig_: + s := proto.Size(x.CategoricalStatsConfig) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrivacyMetric_KAnonymityConfig_: + s := proto.Size(x.KAnonymityConfig) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrivacyMetric_LDiversityConfig_: + s := proto.Size(x.LDiversityConfig) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrivacyMetric_KMapEstimationConfig_: + s := proto.Size(x.KMapEstimationConfig) + n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Compute numerical stats over an individual column, including +// min, max, and quantiles. +type PrivacyMetric_NumericalStatsConfig struct { + // Field to compute numerical stats on. Supported types are + // integer, float, date, datetime, timestamp, time. + Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` +} + +func (m *PrivacyMetric_NumericalStatsConfig) Reset() { *m = PrivacyMetric_NumericalStatsConfig{} } +func (m *PrivacyMetric_NumericalStatsConfig) String() string { return proto.CompactTextString(m) } +func (*PrivacyMetric_NumericalStatsConfig) ProtoMessage() {} +func (*PrivacyMetric_NumericalStatsConfig) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{30, 0} +} + +func (m *PrivacyMetric_NumericalStatsConfig) GetField() *FieldId { + if m != nil { + return m.Field + } + return nil +} + +// Compute numerical stats over an individual column, including +// number of distinct values and value count distribution. +type PrivacyMetric_CategoricalStatsConfig struct { + // Field to compute categorical stats on. All column types are + // supported except for arrays and structs. However, it may be more + // informative to use NumericalStats when the field type is supported, + // depending on the data. + Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` +} + +func (m *PrivacyMetric_CategoricalStatsConfig) Reset() { *m = PrivacyMetric_CategoricalStatsConfig{} } +func (m *PrivacyMetric_CategoricalStatsConfig) String() string { return proto.CompactTextString(m) } +func (*PrivacyMetric_CategoricalStatsConfig) ProtoMessage() {} +func (*PrivacyMetric_CategoricalStatsConfig) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{30, 1} +} + +func (m *PrivacyMetric_CategoricalStatsConfig) GetField() *FieldId { + if m != nil { + return m.Field + } + return nil +} + +// k-anonymity metric, used for analysis of reidentification risk. +type PrivacyMetric_KAnonymityConfig struct { + // Set of fields to compute k-anonymity over. When multiple fields are + // specified, they are considered a single composite key. Structs and + // repeated data types are not supported; however, nested fields are + // supported so long as they are not structs themselves or nested within + // a repeated field. + QuasiIds []*FieldId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds" json:"quasi_ids,omitempty"` +} + +func (m *PrivacyMetric_KAnonymityConfig) Reset() { *m = PrivacyMetric_KAnonymityConfig{} } +func (m *PrivacyMetric_KAnonymityConfig) String() string { return proto.CompactTextString(m) } +func (*PrivacyMetric_KAnonymityConfig) ProtoMessage() {} +func (*PrivacyMetric_KAnonymityConfig) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{30, 2} +} + +func (m *PrivacyMetric_KAnonymityConfig) GetQuasiIds() []*FieldId { + if m != nil { + return m.QuasiIds + } + return nil +} + +// l-diversity metric, used for analysis of reidentification risk. +type PrivacyMetric_LDiversityConfig struct { + // Set of quasi-identifiers indicating how equivalence classes are + // defined for the l-diversity computation. When multiple fields are + // specified, they are considered a single composite key. + QuasiIds []*FieldId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds" json:"quasi_ids,omitempty"` + // Sensitive field for computing the l-value. + SensitiveAttribute *FieldId `protobuf:"bytes,2,opt,name=sensitive_attribute,json=sensitiveAttribute" json:"sensitive_attribute,omitempty"` +} + +func (m *PrivacyMetric_LDiversityConfig) Reset() { *m = PrivacyMetric_LDiversityConfig{} } +func (m *PrivacyMetric_LDiversityConfig) String() string { return proto.CompactTextString(m) } +func (*PrivacyMetric_LDiversityConfig) ProtoMessage() {} +func (*PrivacyMetric_LDiversityConfig) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{30, 3} +} + +func (m *PrivacyMetric_LDiversityConfig) GetQuasiIds() []*FieldId { + if m != nil { + return m.QuasiIds + } + return nil +} + +func (m *PrivacyMetric_LDiversityConfig) GetSensitiveAttribute() *FieldId { + if m != nil { + return m.SensitiveAttribute + } + return nil +} + +// Reidentifiability metric. This corresponds to a risk model similar to what +// is called "journalist risk" in the literature, except the attack dataset is +// statistically modeled instead of being perfectly known. This can be done +// using publicly available data (like the US Census), or using a custom +// statistical model (indicated as one or several BigQuery tables), or by +// extrapolating from the distribution of values in the input dataset. +type PrivacyMetric_KMapEstimationConfig struct { + // Fields considered to be quasi-identifiers. No two columns can have the + // same tag. [required] + QuasiIds []*PrivacyMetric_KMapEstimationConfig_TaggedField `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds" json:"quasi_ids,omitempty"` + // ISO 3166-1 alpha-2 region code to use in the statistical modeling. + // Required if no column is tagged with a region-specific InfoType (like + // US_ZIP_5) or a region code. + RegionCode string `protobuf:"bytes,2,opt,name=region_code,json=regionCode" json:"region_code,omitempty"` + // Several auxiliary tables can be used in the analysis. Each custom_tag + // used to tag a quasi-identifiers column must appear in exactly one column + // of one auxiliary table. + AuxiliaryTables []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable `protobuf:"bytes,3,rep,name=auxiliary_tables,json=auxiliaryTables" json:"auxiliary_tables,omitempty"` +} + +func (m *PrivacyMetric_KMapEstimationConfig) Reset() { *m = PrivacyMetric_KMapEstimationConfig{} } +func (m *PrivacyMetric_KMapEstimationConfig) String() string { return proto.CompactTextString(m) } +func (*PrivacyMetric_KMapEstimationConfig) ProtoMessage() {} +func (*PrivacyMetric_KMapEstimationConfig) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{30, 4} +} + +func (m *PrivacyMetric_KMapEstimationConfig) GetQuasiIds() []*PrivacyMetric_KMapEstimationConfig_TaggedField { + if m != nil { + return m.QuasiIds + } + return nil +} + +func (m *PrivacyMetric_KMapEstimationConfig) GetRegionCode() string { + if m != nil { + return m.RegionCode + } + return "" +} + +func (m *PrivacyMetric_KMapEstimationConfig) GetAuxiliaryTables() []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable { + if m != nil { + return m.AuxiliaryTables + } + return nil +} + +// A column with a semantic tag attached. +type PrivacyMetric_KMapEstimationConfig_TaggedField struct { + // Identifies the column. [required] + Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` + // Semantic tag that identifies what a column contains, to determine which + // statistical model to use to estimate the reidentifiability of each + // value. [required] + // + // Types that are valid to be assigned to Tag: + // *PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType + // *PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag + // *PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred + Tag isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag `protobuf_oneof:"tag"` +} + +func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) Reset() { + *m = PrivacyMetric_KMapEstimationConfig_TaggedField{} +} +func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) String() string { + return proto.CompactTextString(m) +} +func (*PrivacyMetric_KMapEstimationConfig_TaggedField) ProtoMessage() {} +func (*PrivacyMetric_KMapEstimationConfig_TaggedField) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{30, 4, 0} +} + +type isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag interface { + isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() +} + +type PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType struct { + InfoType *InfoType `protobuf:"bytes,2,opt,name=info_type,json=infoType,oneof"` +} +type PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag struct { + CustomTag string `protobuf:"bytes,3,opt,name=custom_tag,json=customTag,oneof"` +} +type PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred struct { + Inferred *google_protobuf3.Empty `protobuf:"bytes,4,opt,name=inferred,oneof"` +} + +func (*PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { +} +func (*PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { +} +func (*PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { +} + +func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetTag() isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag { + if m != nil { + return m.Tag + } + return nil +} + +func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetField() *FieldId { + if m != nil { + return m.Field + } + return nil +} + +func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetInfoType() *InfoType { + if x, ok := m.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType); ok { + return x.InfoType + } + return nil +} + +func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetCustomTag() string { + if x, ok := m.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag); ok { + return x.CustomTag + } + return "" +} + +func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetInferred() *google_protobuf3.Empty { + if x, ok := m.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred); ok { + return x.Inferred + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*PrivacyMetric_KMapEstimationConfig_TaggedField) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofMarshaler, _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofUnmarshaler, _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofSizer, []interface{}{ + (*PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType)(nil), + (*PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag)(nil), + (*PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred)(nil), + } +} + +func _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*PrivacyMetric_KMapEstimationConfig_TaggedField) + // tag + switch x := m.Tag.(type) { + case *PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.InfoType); err != nil { + return err + } + case *PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag: + b.EncodeVarint(3<<3 | proto.WireBytes) + b.EncodeStringBytes(x.CustomTag) + case *PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Inferred); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("PrivacyMetric_KMapEstimationConfig_TaggedField.Tag has unexpected type %T", x) + } + return nil +} + +func _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*PrivacyMetric_KMapEstimationConfig_TaggedField) + switch tag { + case 2: // tag.info_type + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(InfoType) + err := b.DecodeMessage(msg) + m.Tag = &PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType{msg} + return true, err + case 3: // tag.custom_tag + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.Tag = &PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag{x} + return true, err + case 4: // tag.inferred + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(google_protobuf3.Empty) + err := b.DecodeMessage(msg) + m.Tag = &PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred{msg} + return true, err + default: + return false, nil + } +} + +func _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofSizer(msg proto.Message) (n int) { + m := msg.(*PrivacyMetric_KMapEstimationConfig_TaggedField) + // tag + switch x := m.Tag.(type) { + case *PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType: + s := proto.Size(x.InfoType) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag: + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(len(x.CustomTag))) + n += len(x.CustomTag) + case *PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred: + s := proto.Size(x.Inferred) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// An auxiliary table contains statistical information on the relative +// frequency of different quasi-identifiers values. It has one or several +// quasi-identifiers columns, and one column that indicates the relative +// frequency of each quasi-identifier tuple. +// If a tuple is present in the data but not in the auxiliary table, the +// corresponding relative frequency is assumed to be zero (and thus, the +// tuple is highly reidentifiable). +type PrivacyMetric_KMapEstimationConfig_AuxiliaryTable struct { + // Auxiliary table location. [required] + Table *BigQueryTable `protobuf:"bytes,3,opt,name=table" json:"table,omitempty"` + // Quasi-identifier columns. [required] + QuasiIds []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds" json:"quasi_ids,omitempty"` + // The relative frequency column must contain a floating-point number + // between 0 and 1 (inclusive). Null values are assumed to be zero. + // [required] + RelativeFrequency *FieldId `protobuf:"bytes,2,opt,name=relative_frequency,json=relativeFrequency" json:"relative_frequency,omitempty"` +} + +func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) Reset() { + *m = PrivacyMetric_KMapEstimationConfig_AuxiliaryTable{} +} +func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) String() string { + return proto.CompactTextString(m) +} +func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) ProtoMessage() {} +func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{30, 4, 1} +} + +func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetTable() *BigQueryTable { + if m != nil { + return m.Table + } + return nil +} + +func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetQuasiIds() []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField { + if m != nil { + return m.QuasiIds + } + return nil +} + +func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetRelativeFrequency() *FieldId { + if m != nil { + return m.RelativeFrequency + } + return nil +} + +// A quasi-identifier column has a custom_tag, used to know which column +// in the data corresponds to which column in the statistical model. +type PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField struct { + Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` + CustomTag string `protobuf:"bytes,2,opt,name=custom_tag,json=customTag" json:"custom_tag,omitempty"` +} + +func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) Reset() { + *m = PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField{} +} +func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) String() string { + return proto.CompactTextString(m) +} +func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) ProtoMessage() {} +func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{30, 4, 1, 0} +} + +func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) GetField() *FieldId { + if m != nil { + return m.Field + } + return nil +} + +func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) GetCustomTag() string { + if m != nil { + return m.CustomTag + } + return "" +} + +// Result of a risk analysis operation request. +type AnalyzeDataSourceRiskDetails struct { + // Privacy metric to compute. + RequestedPrivacyMetric *PrivacyMetric `protobuf:"bytes,1,opt,name=requested_privacy_metric,json=requestedPrivacyMetric" json:"requested_privacy_metric,omitempty"` + // Input dataset to compute metrics over. + RequestedSourceTable *BigQueryTable `protobuf:"bytes,2,opt,name=requested_source_table,json=requestedSourceTable" json:"requested_source_table,omitempty"` + // Values associated with this metric. + // + // Types that are valid to be assigned to Result: + // *AnalyzeDataSourceRiskDetails_NumericalStatsResult_ + // *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_ + // *AnalyzeDataSourceRiskDetails_KAnonymityResult_ + // *AnalyzeDataSourceRiskDetails_LDiversityResult_ + // *AnalyzeDataSourceRiskDetails_KMapEstimationResult_ + Result isAnalyzeDataSourceRiskDetails_Result `protobuf_oneof:"result"` +} + +func (m *AnalyzeDataSourceRiskDetails) Reset() { *m = AnalyzeDataSourceRiskDetails{} } +func (m *AnalyzeDataSourceRiskDetails) String() string { return proto.CompactTextString(m) } +func (*AnalyzeDataSourceRiskDetails) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } + +type isAnalyzeDataSourceRiskDetails_Result interface { + isAnalyzeDataSourceRiskDetails_Result() +} + +type AnalyzeDataSourceRiskDetails_NumericalStatsResult_ struct { + NumericalStatsResult *AnalyzeDataSourceRiskDetails_NumericalStatsResult `protobuf:"bytes,3,opt,name=numerical_stats_result,json=numericalStatsResult,oneof"` +} +type AnalyzeDataSourceRiskDetails_CategoricalStatsResult_ struct { + CategoricalStatsResult *AnalyzeDataSourceRiskDetails_CategoricalStatsResult `protobuf:"bytes,4,opt,name=categorical_stats_result,json=categoricalStatsResult,oneof"` +} +type AnalyzeDataSourceRiskDetails_KAnonymityResult_ struct { + KAnonymityResult *AnalyzeDataSourceRiskDetails_KAnonymityResult `protobuf:"bytes,5,opt,name=k_anonymity_result,json=kAnonymityResult,oneof"` +} +type AnalyzeDataSourceRiskDetails_LDiversityResult_ struct { + LDiversityResult *AnalyzeDataSourceRiskDetails_LDiversityResult `protobuf:"bytes,6,opt,name=l_diversity_result,json=lDiversityResult,oneof"` +} +type AnalyzeDataSourceRiskDetails_KMapEstimationResult_ struct { + KMapEstimationResult *AnalyzeDataSourceRiskDetails_KMapEstimationResult `protobuf:"bytes,7,opt,name=k_map_estimation_result,json=kMapEstimationResult,oneof"` +} + +func (*AnalyzeDataSourceRiskDetails_NumericalStatsResult_) isAnalyzeDataSourceRiskDetails_Result() {} +func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_) isAnalyzeDataSourceRiskDetails_Result() {} +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_) isAnalyzeDataSourceRiskDetails_Result() {} +func (*AnalyzeDataSourceRiskDetails_LDiversityResult_) isAnalyzeDataSourceRiskDetails_Result() {} +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_) isAnalyzeDataSourceRiskDetails_Result() {} + +func (m *AnalyzeDataSourceRiskDetails) GetResult() isAnalyzeDataSourceRiskDetails_Result { + if m != nil { + return m.Result + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails) GetRequestedPrivacyMetric() *PrivacyMetric { + if m != nil { + return m.RequestedPrivacyMetric + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails) GetRequestedSourceTable() *BigQueryTable { + if m != nil { + return m.RequestedSourceTable + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails) GetNumericalStatsResult() *AnalyzeDataSourceRiskDetails_NumericalStatsResult { + if x, ok := m.GetResult().(*AnalyzeDataSourceRiskDetails_NumericalStatsResult_); ok { + return x.NumericalStatsResult + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails) GetCategoricalStatsResult() *AnalyzeDataSourceRiskDetails_CategoricalStatsResult { + if x, ok := m.GetResult().(*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_); ok { + return x.CategoricalStatsResult + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails) GetKAnonymityResult() *AnalyzeDataSourceRiskDetails_KAnonymityResult { + if x, ok := m.GetResult().(*AnalyzeDataSourceRiskDetails_KAnonymityResult_); ok { + return x.KAnonymityResult + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails) GetLDiversityResult() *AnalyzeDataSourceRiskDetails_LDiversityResult { + if x, ok := m.GetResult().(*AnalyzeDataSourceRiskDetails_LDiversityResult_); ok { + return x.LDiversityResult + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails) GetKMapEstimationResult() *AnalyzeDataSourceRiskDetails_KMapEstimationResult { + if x, ok := m.GetResult().(*AnalyzeDataSourceRiskDetails_KMapEstimationResult_); ok { + return x.KMapEstimationResult + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*AnalyzeDataSourceRiskDetails) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _AnalyzeDataSourceRiskDetails_OneofMarshaler, _AnalyzeDataSourceRiskDetails_OneofUnmarshaler, _AnalyzeDataSourceRiskDetails_OneofSizer, []interface{}{ + (*AnalyzeDataSourceRiskDetails_NumericalStatsResult_)(nil), + (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_)(nil), + (*AnalyzeDataSourceRiskDetails_KAnonymityResult_)(nil), + (*AnalyzeDataSourceRiskDetails_LDiversityResult_)(nil), + (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_)(nil), + } +} + +func _AnalyzeDataSourceRiskDetails_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*AnalyzeDataSourceRiskDetails) + // result + switch x := m.Result.(type) { + case *AnalyzeDataSourceRiskDetails_NumericalStatsResult_: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.NumericalStatsResult); err != nil { + return err + } + case *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.CategoricalStatsResult); err != nil { + return err + } + case *AnalyzeDataSourceRiskDetails_KAnonymityResult_: + b.EncodeVarint(5<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.KAnonymityResult); err != nil { + return err + } + case *AnalyzeDataSourceRiskDetails_LDiversityResult_: + b.EncodeVarint(6<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.LDiversityResult); err != nil { + return err + } + case *AnalyzeDataSourceRiskDetails_KMapEstimationResult_: + b.EncodeVarint(7<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.KMapEstimationResult); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("AnalyzeDataSourceRiskDetails.Result has unexpected type %T", x) + } + return nil +} + +func _AnalyzeDataSourceRiskDetails_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*AnalyzeDataSourceRiskDetails) + switch tag { + case 3: // result.numerical_stats_result + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(AnalyzeDataSourceRiskDetails_NumericalStatsResult) + err := b.DecodeMessage(msg) + m.Result = &AnalyzeDataSourceRiskDetails_NumericalStatsResult_{msg} + return true, err + case 4: // result.categorical_stats_result + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(AnalyzeDataSourceRiskDetails_CategoricalStatsResult) + err := b.DecodeMessage(msg) + m.Result = &AnalyzeDataSourceRiskDetails_CategoricalStatsResult_{msg} + return true, err + case 5: // result.k_anonymity_result + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(AnalyzeDataSourceRiskDetails_KAnonymityResult) + err := b.DecodeMessage(msg) + m.Result = &AnalyzeDataSourceRiskDetails_KAnonymityResult_{msg} + return true, err + case 6: // result.l_diversity_result + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(AnalyzeDataSourceRiskDetails_LDiversityResult) + err := b.DecodeMessage(msg) + m.Result = &AnalyzeDataSourceRiskDetails_LDiversityResult_{msg} + return true, err + case 7: // result.k_map_estimation_result + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(AnalyzeDataSourceRiskDetails_KMapEstimationResult) + err := b.DecodeMessage(msg) + m.Result = &AnalyzeDataSourceRiskDetails_KMapEstimationResult_{msg} + return true, err + default: + return false, nil + } +} + +func _AnalyzeDataSourceRiskDetails_OneofSizer(msg proto.Message) (n int) { + m := msg.(*AnalyzeDataSourceRiskDetails) + // result + switch x := m.Result.(type) { + case *AnalyzeDataSourceRiskDetails_NumericalStatsResult_: + s := proto.Size(x.NumericalStatsResult) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_: + s := proto.Size(x.CategoricalStatsResult) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *AnalyzeDataSourceRiskDetails_KAnonymityResult_: + s := proto.Size(x.KAnonymityResult) + n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *AnalyzeDataSourceRiskDetails_LDiversityResult_: + s := proto.Size(x.LDiversityResult) + n += proto.SizeVarint(6<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *AnalyzeDataSourceRiskDetails_KMapEstimationResult_: + s := proto.Size(x.KMapEstimationResult) + n += proto.SizeVarint(7<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Result of the numerical stats computation. +type AnalyzeDataSourceRiskDetails_NumericalStatsResult struct { + // Minimum value appearing in the column. + MinValue *Value `protobuf:"bytes,1,opt,name=min_value,json=minValue" json:"min_value,omitempty"` + // Maximum value appearing in the column. + MaxValue *Value `protobuf:"bytes,2,opt,name=max_value,json=maxValue" json:"max_value,omitempty"` + // List of 99 values that partition the set of field values into 100 equal + // sized buckets. + QuantileValues []*Value `protobuf:"bytes,4,rep,name=quantile_values,json=quantileValues" json:"quantile_values,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_NumericalStatsResult) Reset() { + *m = AnalyzeDataSourceRiskDetails_NumericalStatsResult{} +} +func (m *AnalyzeDataSourceRiskDetails_NumericalStatsResult) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_NumericalStatsResult) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_NumericalStatsResult) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 0} +} + +func (m *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetMinValue() *Value { + if m != nil { + return m.MinValue + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetMaxValue() *Value { + if m != nil { + return m.MaxValue + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetQuantileValues() []*Value { + if m != nil { + return m.QuantileValues + } + return nil +} + +// Result of the categorical stats computation. +type AnalyzeDataSourceRiskDetails_CategoricalStatsResult struct { + // Histogram of value frequencies in the column. + ValueFrequencyHistogramBuckets []*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket `protobuf:"bytes,5,rep,name=value_frequency_histogram_buckets,json=valueFrequencyHistogramBuckets" json:"value_frequency_histogram_buckets,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) Reset() { + *m = AnalyzeDataSourceRiskDetails_CategoricalStatsResult{} +} +func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 1} +} + +func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) GetValueFrequencyHistogramBuckets() []*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket { + if m != nil { + return m.ValueFrequencyHistogramBuckets + } + return nil +} + +type AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket struct { + // Lower bound on the value frequency of the values in this bucket. + ValueFrequencyLowerBound int64 `protobuf:"varint,1,opt,name=value_frequency_lower_bound,json=valueFrequencyLowerBound" json:"value_frequency_lower_bound,omitempty"` + // Upper bound on the value frequency of the values in this bucket. + ValueFrequencyUpperBound int64 `protobuf:"varint,2,opt,name=value_frequency_upper_bound,json=valueFrequencyUpperBound" json:"value_frequency_upper_bound,omitempty"` + // Total number of values in this bucket. + BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` + // Sample of value frequencies in this bucket. The total number of + // values returned per bucket is capped at 20. + BucketValues []*ValueFrequency `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues" json:"bucket_values,omitempty"` + // Total number of distinct values in this bucket. + BucketValueCount int64 `protobuf:"varint,5,opt,name=bucket_value_count,json=bucketValueCount" json:"bucket_value_count,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) Reset() { + *m = AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket{} +} +func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) ProtoMessage() { +} +func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 1, 0} +} + +func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetValueFrequencyLowerBound() int64 { + if m != nil { + return m.ValueFrequencyLowerBound + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetValueFrequencyUpperBound() int64 { + if m != nil { + return m.ValueFrequencyUpperBound + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketSize() int64 { + if m != nil { + return m.BucketSize + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketValues() []*ValueFrequency { + if m != nil { + return m.BucketValues + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketValueCount() int64 { + if m != nil { + return m.BucketValueCount + } + return 0 +} + +// Result of the k-anonymity computation. +type AnalyzeDataSourceRiskDetails_KAnonymityResult struct { + // Histogram of k-anonymity equivalence classes. + EquivalenceClassHistogramBuckets []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket `protobuf:"bytes,5,rep,name=equivalence_class_histogram_buckets,json=equivalenceClassHistogramBuckets" json:"equivalence_class_histogram_buckets,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult) Reset() { + *m = AnalyzeDataSourceRiskDetails_KAnonymityResult{} +} +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 2} +} + +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult) GetEquivalenceClassHistogramBuckets() []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket { + if m != nil { + return m.EquivalenceClassHistogramBuckets + } + return nil +} + +// The set of columns' values that share the same ldiversity value +type AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass struct { + // Set of values defining the equivalence class. One value per + // quasi-identifier column in the original KAnonymity metric message. + // The order is always the same as the original request. + QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues" json:"quasi_ids_values,omitempty"` + // Size of the equivalence class, for example number of rows with the + // above set of values. + EquivalenceClassSize int64 `protobuf:"varint,2,opt,name=equivalence_class_size,json=equivalenceClassSize" json:"equivalence_class_size,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) Reset() { + *m = AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass{} +} +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 2, 0} +} + +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) GetQuasiIdsValues() []*Value { + if m != nil { + return m.QuasiIdsValues + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) GetEquivalenceClassSize() int64 { + if m != nil { + return m.EquivalenceClassSize + } + return 0 +} + +type AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket struct { + // Lower bound on the size of the equivalence classes in this bucket. + EquivalenceClassSizeLowerBound int64 `protobuf:"varint,1,opt,name=equivalence_class_size_lower_bound,json=equivalenceClassSizeLowerBound" json:"equivalence_class_size_lower_bound,omitempty"` + // Upper bound on the size of the equivalence classes in this bucket. + EquivalenceClassSizeUpperBound int64 `protobuf:"varint,2,opt,name=equivalence_class_size_upper_bound,json=equivalenceClassSizeUpperBound" json:"equivalence_class_size_upper_bound,omitempty"` + // Total number of equivalence classes in this bucket. + BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` + // Sample of equivalence classes in this bucket. The total number of + // classes returned per bucket is capped at 20. + BucketValues []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues" json:"bucket_values,omitempty"` + // Total number of distinct equivalence classes in this bucket. + BucketValueCount int64 `protobuf:"varint,5,opt,name=bucket_value_count,json=bucketValueCount" json:"bucket_value_count,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) Reset() { + *m = AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket{} +} +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 2, 1} +} + +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetEquivalenceClassSizeLowerBound() int64 { + if m != nil { + return m.EquivalenceClassSizeLowerBound + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetEquivalenceClassSizeUpperBound() int64 { + if m != nil { + return m.EquivalenceClassSizeUpperBound + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetBucketSize() int64 { + if m != nil { + return m.BucketSize + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass { + if m != nil { + return m.BucketValues + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetBucketValueCount() int64 { + if m != nil { + return m.BucketValueCount + } + return 0 +} + +// Result of the l-diversity computation. +type AnalyzeDataSourceRiskDetails_LDiversityResult struct { + // Histogram of l-diversity equivalence class sensitive value frequencies. + SensitiveValueFrequencyHistogramBuckets []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket `protobuf:"bytes,5,rep,name=sensitive_value_frequency_histogram_buckets,json=sensitiveValueFrequencyHistogramBuckets" json:"sensitive_value_frequency_histogram_buckets,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult) Reset() { + *m = AnalyzeDataSourceRiskDetails_LDiversityResult{} +} +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_LDiversityResult) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_LDiversityResult) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 3} +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult) GetSensitiveValueFrequencyHistogramBuckets() []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket { + if m != nil { + return m.SensitiveValueFrequencyHistogramBuckets + } + return nil +} + +// The set of columns' values that share the same ldiversity value. +type AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass struct { + // Quasi-identifier values defining the k-anonymity equivalence + // class. The order is always the same as the original request. + QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues" json:"quasi_ids_values,omitempty"` + // Size of the k-anonymity equivalence class. + EquivalenceClassSize int64 `protobuf:"varint,2,opt,name=equivalence_class_size,json=equivalenceClassSize" json:"equivalence_class_size,omitempty"` + // Number of distinct sensitive values in this equivalence class. + NumDistinctSensitiveValues int64 `protobuf:"varint,3,opt,name=num_distinct_sensitive_values,json=numDistinctSensitiveValues" json:"num_distinct_sensitive_values,omitempty"` + // Estimated frequencies of top sensitive values. + TopSensitiveValues []*ValueFrequency `protobuf:"bytes,4,rep,name=top_sensitive_values,json=topSensitiveValues" json:"top_sensitive_values,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) Reset() { + *m = AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass{} +} +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 3, 0} +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetQuasiIdsValues() []*Value { + if m != nil { + return m.QuasiIdsValues + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetEquivalenceClassSize() int64 { + if m != nil { + return m.EquivalenceClassSize + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetNumDistinctSensitiveValues() int64 { + if m != nil { + return m.NumDistinctSensitiveValues + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetTopSensitiveValues() []*ValueFrequency { + if m != nil { + return m.TopSensitiveValues + } + return nil +} + +type AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket struct { + // Lower bound on the sensitive value frequencies of the equivalence + // classes in this bucket. + SensitiveValueFrequencyLowerBound int64 `protobuf:"varint,1,opt,name=sensitive_value_frequency_lower_bound,json=sensitiveValueFrequencyLowerBound" json:"sensitive_value_frequency_lower_bound,omitempty"` + // Upper bound on the sensitive value frequencies of the equivalence + // classes in this bucket. + SensitiveValueFrequencyUpperBound int64 `protobuf:"varint,2,opt,name=sensitive_value_frequency_upper_bound,json=sensitiveValueFrequencyUpperBound" json:"sensitive_value_frequency_upper_bound,omitempty"` + // Total number of equivalence classes in this bucket. + BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` + // Sample of equivalence classes in this bucket. The total number of + // classes returned per bucket is capped at 20. + BucketValues []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues" json:"bucket_values,omitempty"` + // Total number of distinct equivalence classes in this bucket. + BucketValueCount int64 `protobuf:"varint,5,opt,name=bucket_value_count,json=bucketValueCount" json:"bucket_value_count,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) Reset() { + *m = AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket{} +} +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 3, 1} +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetSensitiveValueFrequencyLowerBound() int64 { + if m != nil { + return m.SensitiveValueFrequencyLowerBound + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetSensitiveValueFrequencyUpperBound() int64 { + if m != nil { + return m.SensitiveValueFrequencyUpperBound + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetBucketSize() int64 { + if m != nil { + return m.BucketSize + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass { + if m != nil { + return m.BucketValues + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetBucketValueCount() int64 { + if m != nil { + return m.BucketValueCount + } + return 0 +} + +// Result of the reidentifiability analysis. Note that these results are an +// estimation, not exact values. +type AnalyzeDataSourceRiskDetails_KMapEstimationResult struct { + // The intervals [min_anonymity, max_anonymity] do not overlap. If a value + // doesn't correspond to any such interval, the associated frequency is + // zero. For example, the following records: + // {min_anonymity: 1, max_anonymity: 1, frequency: 17} + // {min_anonymity: 2, max_anonymity: 3, frequency: 42} + // {min_anonymity: 5, max_anonymity: 10, frequency: 99} + // mean that there are no record with an estimated anonymity of 4, 5, or + // larger than 10. + KMapEstimationHistogram []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket `protobuf:"bytes,1,rep,name=k_map_estimation_histogram,json=kMapEstimationHistogram" json:"k_map_estimation_histogram,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult) Reset() { + *m = AnalyzeDataSourceRiskDetails_KMapEstimationResult{} +} +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 4} +} + +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult) GetKMapEstimationHistogram() []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket { + if m != nil { + return m.KMapEstimationHistogram + } + return nil +} + +// A tuple of values for the quasi-identifier columns. +type AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues struct { + // The quasi-identifier values. + QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues" json:"quasi_ids_values,omitempty"` + // The estimated anonymity for these quasi-identifier values. + EstimatedAnonymity int64 `protobuf:"varint,2,opt,name=estimated_anonymity,json=estimatedAnonymity" json:"estimated_anonymity,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) Reset() { + *m = AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues{} +} +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) ProtoMessage() {} +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 4, 0} +} + +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) GetQuasiIdsValues() []*Value { + if m != nil { + return m.QuasiIdsValues + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) GetEstimatedAnonymity() int64 { + if m != nil { + return m.EstimatedAnonymity + } + return 0 +} + +// A KMapEstimationHistogramBucket message with the following values: +// min_anonymity: 3 +// max_anonymity: 5 +// frequency: 42 +// means that there are 42 records whose quasi-identifier values correspond +// to 3, 4 or 5 people in the overlying population. An important particular +// case is when min_anonymity = max_anonymity = 1: the frequency field then +// corresponds to the number of uniquely identifiable records. +type AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket struct { + // Always positive. + MinAnonymity int64 `protobuf:"varint,1,opt,name=min_anonymity,json=minAnonymity" json:"min_anonymity,omitempty"` + // Always greater than or equal to min_anonymity. + MaxAnonymity int64 `protobuf:"varint,2,opt,name=max_anonymity,json=maxAnonymity" json:"max_anonymity,omitempty"` + // Number of records within these anonymity bounds. + BucketSize int64 `protobuf:"varint,5,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` + // Sample of quasi-identifier tuple values in this bucket. The total + // number of classes returned per bucket is capped at 20. + BucketValues []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues `protobuf:"bytes,6,rep,name=bucket_values,json=bucketValues" json:"bucket_values,omitempty"` + // Total number of distinct quasi-identifier tuple values in this bucket. + BucketValueCount int64 `protobuf:"varint,7,opt,name=bucket_value_count,json=bucketValueCount" json:"bucket_value_count,omitempty"` +} + +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) Reset() { + *m = AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket{} +} +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) String() string { + return proto.CompactTextString(m) +} +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) ProtoMessage() { +} +func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{31, 4, 1} +} + +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetMinAnonymity() int64 { + if m != nil { + return m.MinAnonymity + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetMaxAnonymity() int64 { + if m != nil { + return m.MaxAnonymity + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetBucketSize() int64 { + if m != nil { + return m.BucketSize + } + return 0 +} + +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues { + if m != nil { + return m.BucketValues + } + return nil +} + +func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetBucketValueCount() int64 { + if m != nil { + return m.BucketValueCount + } + return 0 +} + +// A value of a field, including its frequency. +type ValueFrequency struct { + // A value contained in the field in question. + Value *Value `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` + // How many times the value is contained in the field. + Count int64 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` +} + +func (m *ValueFrequency) Reset() { *m = ValueFrequency{} } +func (m *ValueFrequency) String() string { return proto.CompactTextString(m) } +func (*ValueFrequency) ProtoMessage() {} +func (*ValueFrequency) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } + +func (m *ValueFrequency) GetValue() *Value { + if m != nil { + return m.Value + } + return nil +} + +func (m *ValueFrequency) GetCount() int64 { + if m != nil { + return m.Count + } + return 0 +} + +// Set of primitive values supported by the system. +// Note that for the purposes of inspection or transformation, the number +// of bytes considered to comprise a 'Value' is based on its representation +// as a UTF-8 encoded string. For example, if 'integer_value' is set to +// 123456789, the number of bytes would be counted as 9, even though an +// int64 only holds up to 8 bytes of data. +type Value struct { + // Types that are valid to be assigned to Type: + // *Value_IntegerValue + // *Value_FloatValue + // *Value_StringValue + // *Value_BooleanValue + // *Value_TimestampValue + // *Value_TimeValue + // *Value_DateValue + // *Value_DayOfWeekValue + Type isValue_Type `protobuf_oneof:"type"` +} + +func (m *Value) Reset() { *m = Value{} } +func (m *Value) String() string { return proto.CompactTextString(m) } +func (*Value) ProtoMessage() {} +func (*Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } + +type isValue_Type interface { + isValue_Type() +} + +type Value_IntegerValue struct { + IntegerValue int64 `protobuf:"varint,1,opt,name=integer_value,json=integerValue,oneof"` +} +type Value_FloatValue struct { + FloatValue float64 `protobuf:"fixed64,2,opt,name=float_value,json=floatValue,oneof"` +} +type Value_StringValue struct { + StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,oneof"` +} +type Value_BooleanValue struct { + BooleanValue bool `protobuf:"varint,4,opt,name=boolean_value,json=booleanValue,oneof"` +} +type Value_TimestampValue struct { + TimestampValue *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=timestamp_value,json=timestampValue,oneof"` +} +type Value_TimeValue struct { + TimeValue *google_type2.TimeOfDay `protobuf:"bytes,6,opt,name=time_value,json=timeValue,oneof"` +} +type Value_DateValue struct { + DateValue *google_type.Date `protobuf:"bytes,7,opt,name=date_value,json=dateValue,oneof"` +} +type Value_DayOfWeekValue struct { + DayOfWeekValue google_type1.DayOfWeek `protobuf:"varint,8,opt,name=day_of_week_value,json=dayOfWeekValue,enum=google.type.DayOfWeek,oneof"` +} + +func (*Value_IntegerValue) isValue_Type() {} +func (*Value_FloatValue) isValue_Type() {} +func (*Value_StringValue) isValue_Type() {} +func (*Value_BooleanValue) isValue_Type() {} +func (*Value_TimestampValue) isValue_Type() {} +func (*Value_TimeValue) isValue_Type() {} +func (*Value_DateValue) isValue_Type() {} +func (*Value_DayOfWeekValue) isValue_Type() {} + +func (m *Value) GetType() isValue_Type { + if m != nil { + return m.Type + } + return nil +} + +func (m *Value) GetIntegerValue() int64 { + if x, ok := m.GetType().(*Value_IntegerValue); ok { + return x.IntegerValue + } + return 0 +} + +func (m *Value) GetFloatValue() float64 { + if x, ok := m.GetType().(*Value_FloatValue); ok { + return x.FloatValue + } + return 0 +} + +func (m *Value) GetStringValue() string { + if x, ok := m.GetType().(*Value_StringValue); ok { + return x.StringValue + } + return "" +} + +func (m *Value) GetBooleanValue() bool { + if x, ok := m.GetType().(*Value_BooleanValue); ok { + return x.BooleanValue + } + return false +} + +func (m *Value) GetTimestampValue() *google_protobuf1.Timestamp { + if x, ok := m.GetType().(*Value_TimestampValue); ok { + return x.TimestampValue + } + return nil +} + +func (m *Value) GetTimeValue() *google_type2.TimeOfDay { + if x, ok := m.GetType().(*Value_TimeValue); ok { + return x.TimeValue + } + return nil +} + +func (m *Value) GetDateValue() *google_type.Date { + if x, ok := m.GetType().(*Value_DateValue); ok { + return x.DateValue + } + return nil +} + +func (m *Value) GetDayOfWeekValue() google_type1.DayOfWeek { + if x, ok := m.GetType().(*Value_DayOfWeekValue); ok { + return x.DayOfWeekValue + } + return google_type1.DayOfWeek_DAY_OF_WEEK_UNSPECIFIED +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*Value) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _Value_OneofMarshaler, _Value_OneofUnmarshaler, _Value_OneofSizer, []interface{}{ + (*Value_IntegerValue)(nil), + (*Value_FloatValue)(nil), + (*Value_StringValue)(nil), + (*Value_BooleanValue)(nil), + (*Value_TimestampValue)(nil), + (*Value_TimeValue)(nil), + (*Value_DateValue)(nil), + (*Value_DayOfWeekValue)(nil), + } +} + +func _Value_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*Value) + // type + switch x := m.Type.(type) { + case *Value_IntegerValue: + b.EncodeVarint(1<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.IntegerValue)) + case *Value_FloatValue: + b.EncodeVarint(2<<3 | proto.WireFixed64) + b.EncodeFixed64(math.Float64bits(x.FloatValue)) + case *Value_StringValue: + b.EncodeVarint(3<<3 | proto.WireBytes) + b.EncodeStringBytes(x.StringValue) + case *Value_BooleanValue: + t := uint64(0) + if x.BooleanValue { + t = 1 + } + b.EncodeVarint(4<<3 | proto.WireVarint) + b.EncodeVarint(t) + case *Value_TimestampValue: + b.EncodeVarint(5<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.TimestampValue); err != nil { + return err + } + case *Value_TimeValue: + b.EncodeVarint(6<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.TimeValue); err != nil { + return err + } + case *Value_DateValue: + b.EncodeVarint(7<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.DateValue); err != nil { + return err + } + case *Value_DayOfWeekValue: + b.EncodeVarint(8<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.DayOfWeekValue)) + case nil: + default: + return fmt.Errorf("Value.Type has unexpected type %T", x) + } + return nil +} + +func _Value_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*Value) + switch tag { + case 1: // type.integer_value + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Type = &Value_IntegerValue{int64(x)} + return true, err + case 2: // type.float_value + if wire != proto.WireFixed64 { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeFixed64() + m.Type = &Value_FloatValue{math.Float64frombits(x)} + return true, err + case 3: // type.string_value + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.Type = &Value_StringValue{x} + return true, err + case 4: // type.boolean_value + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Type = &Value_BooleanValue{x != 0} + return true, err + case 5: // type.timestamp_value + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(google_protobuf1.Timestamp) + err := b.DecodeMessage(msg) + m.Type = &Value_TimestampValue{msg} + return true, err + case 6: // type.time_value + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(google_type2.TimeOfDay) + err := b.DecodeMessage(msg) + m.Type = &Value_TimeValue{msg} + return true, err + case 7: // type.date_value + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(google_type.Date) + err := b.DecodeMessage(msg) + m.Type = &Value_DateValue{msg} + return true, err + case 8: // type.day_of_week_value + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Type = &Value_DayOfWeekValue{google_type1.DayOfWeek(x)} + return true, err + default: + return false, nil + } +} + +func _Value_OneofSizer(msg proto.Message) (n int) { + m := msg.(*Value) + // type + switch x := m.Type.(type) { + case *Value_IntegerValue: + n += proto.SizeVarint(1<<3 | proto.WireVarint) + n += proto.SizeVarint(uint64(x.IntegerValue)) + case *Value_FloatValue: + n += proto.SizeVarint(2<<3 | proto.WireFixed64) + n += 8 + case *Value_StringValue: + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(len(x.StringValue))) + n += len(x.StringValue) + case *Value_BooleanValue: + n += proto.SizeVarint(4<<3 | proto.WireVarint) + n += 1 + case *Value_TimestampValue: + s := proto.Size(x.TimestampValue) + n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *Value_TimeValue: + s := proto.Size(x.TimeValue) + n += proto.SizeVarint(6<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *Value_DateValue: + s := proto.Size(x.DateValue) + n += proto.SizeVarint(7<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *Value_DayOfWeekValue: + n += proto.SizeVarint(8<<3 | proto.WireVarint) + n += proto.SizeVarint(uint64(x.DayOfWeekValue)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Message for infoType-dependent details parsed from quote. +type QuoteInfo struct { + // Object representation of the quote. + // + // Types that are valid to be assigned to ParsedQuote: + // *QuoteInfo_DateTime + ParsedQuote isQuoteInfo_ParsedQuote `protobuf_oneof:"parsed_quote"` +} + +func (m *QuoteInfo) Reset() { *m = QuoteInfo{} } +func (m *QuoteInfo) String() string { return proto.CompactTextString(m) } +func (*QuoteInfo) ProtoMessage() {} +func (*QuoteInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } + +type isQuoteInfo_ParsedQuote interface { + isQuoteInfo_ParsedQuote() +} + +type QuoteInfo_DateTime struct { + DateTime *DateTime `protobuf:"bytes,2,opt,name=date_time,json=dateTime,oneof"` +} + +func (*QuoteInfo_DateTime) isQuoteInfo_ParsedQuote() {} + +func (m *QuoteInfo) GetParsedQuote() isQuoteInfo_ParsedQuote { + if m != nil { + return m.ParsedQuote + } + return nil +} + +func (m *QuoteInfo) GetDateTime() *DateTime { + if x, ok := m.GetParsedQuote().(*QuoteInfo_DateTime); ok { + return x.DateTime + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*QuoteInfo) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _QuoteInfo_OneofMarshaler, _QuoteInfo_OneofUnmarshaler, _QuoteInfo_OneofSizer, []interface{}{ + (*QuoteInfo_DateTime)(nil), + } +} + +func _QuoteInfo_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*QuoteInfo) + // parsed_quote + switch x := m.ParsedQuote.(type) { + case *QuoteInfo_DateTime: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.DateTime); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("QuoteInfo.ParsedQuote has unexpected type %T", x) + } + return nil +} + +func _QuoteInfo_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*QuoteInfo) + switch tag { + case 2: // parsed_quote.date_time + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(DateTime) + err := b.DecodeMessage(msg) + m.ParsedQuote = &QuoteInfo_DateTime{msg} + return true, err + default: + return false, nil + } +} + +func _QuoteInfo_OneofSizer(msg proto.Message) (n int) { + m := msg.(*QuoteInfo) + // parsed_quote + switch x := m.ParsedQuote.(type) { + case *QuoteInfo_DateTime: + s := proto.Size(x.DateTime) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Message for a date time object. +type DateTime struct { + // One or more of the following must be set. All fields are optional, but + // when set must be valid date or time values. + Date *google_type.Date `protobuf:"bytes,1,opt,name=date" json:"date,omitempty"` + DayOfWeek google_type1.DayOfWeek `protobuf:"varint,2,opt,name=day_of_week,json=dayOfWeek,enum=google.type.DayOfWeek" json:"day_of_week,omitempty"` + Time *google_type2.TimeOfDay `protobuf:"bytes,3,opt,name=time" json:"time,omitempty"` + TimeZone *DateTime_TimeZone `protobuf:"bytes,4,opt,name=time_zone,json=timeZone" json:"time_zone,omitempty"` +} + +func (m *DateTime) Reset() { *m = DateTime{} } +func (m *DateTime) String() string { return proto.CompactTextString(m) } +func (*DateTime) ProtoMessage() {} +func (*DateTime) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } + +func (m *DateTime) GetDate() *google_type.Date { + if m != nil { + return m.Date + } + return nil +} + +func (m *DateTime) GetDayOfWeek() google_type1.DayOfWeek { + if m != nil { + return m.DayOfWeek + } + return google_type1.DayOfWeek_DAY_OF_WEEK_UNSPECIFIED +} + +func (m *DateTime) GetTime() *google_type2.TimeOfDay { + if m != nil { + return m.Time + } + return nil +} + +func (m *DateTime) GetTimeZone() *DateTime_TimeZone { + if m != nil { + return m.TimeZone + } + return nil +} + +type DateTime_TimeZone struct { + // Set only if the offset can be determined. Positive for time ahead of UTC. + // E.g. For "UTC-9", this value is -540. + OffsetMinutes int32 `protobuf:"varint,1,opt,name=offset_minutes,json=offsetMinutes" json:"offset_minutes,omitempty"` +} + +func (m *DateTime_TimeZone) Reset() { *m = DateTime_TimeZone{} } +func (m *DateTime_TimeZone) String() string { return proto.CompactTextString(m) } +func (*DateTime_TimeZone) ProtoMessage() {} +func (*DateTime_TimeZone) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35, 0} } + +func (m *DateTime_TimeZone) GetOffsetMinutes() int32 { + if m != nil { + return m.OffsetMinutes + } + return 0 +} + +// The configuration that controls how the data will change. +type DeidentifyConfig struct { + // Types that are valid to be assigned to Transformation: + // *DeidentifyConfig_InfoTypeTransformations + // *DeidentifyConfig_RecordTransformations + Transformation isDeidentifyConfig_Transformation `protobuf_oneof:"transformation"` +} + +func (m *DeidentifyConfig) Reset() { *m = DeidentifyConfig{} } +func (m *DeidentifyConfig) String() string { return proto.CompactTextString(m) } +func (*DeidentifyConfig) ProtoMessage() {} +func (*DeidentifyConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } + +type isDeidentifyConfig_Transformation interface { + isDeidentifyConfig_Transformation() +} + +type DeidentifyConfig_InfoTypeTransformations struct { + InfoTypeTransformations *InfoTypeTransformations `protobuf:"bytes,1,opt,name=info_type_transformations,json=infoTypeTransformations,oneof"` +} +type DeidentifyConfig_RecordTransformations struct { + RecordTransformations *RecordTransformations `protobuf:"bytes,2,opt,name=record_transformations,json=recordTransformations,oneof"` +} + +func (*DeidentifyConfig_InfoTypeTransformations) isDeidentifyConfig_Transformation() {} +func (*DeidentifyConfig_RecordTransformations) isDeidentifyConfig_Transformation() {} + +func (m *DeidentifyConfig) GetTransformation() isDeidentifyConfig_Transformation { + if m != nil { + return m.Transformation + } + return nil +} + +func (m *DeidentifyConfig) GetInfoTypeTransformations() *InfoTypeTransformations { + if x, ok := m.GetTransformation().(*DeidentifyConfig_InfoTypeTransformations); ok { + return x.InfoTypeTransformations + } + return nil +} + +func (m *DeidentifyConfig) GetRecordTransformations() *RecordTransformations { + if x, ok := m.GetTransformation().(*DeidentifyConfig_RecordTransformations); ok { + return x.RecordTransformations + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*DeidentifyConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _DeidentifyConfig_OneofMarshaler, _DeidentifyConfig_OneofUnmarshaler, _DeidentifyConfig_OneofSizer, []interface{}{ + (*DeidentifyConfig_InfoTypeTransformations)(nil), + (*DeidentifyConfig_RecordTransformations)(nil), + } +} + +func _DeidentifyConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*DeidentifyConfig) + // transformation + switch x := m.Transformation.(type) { + case *DeidentifyConfig_InfoTypeTransformations: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.InfoTypeTransformations); err != nil { + return err + } + case *DeidentifyConfig_RecordTransformations: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.RecordTransformations); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("DeidentifyConfig.Transformation has unexpected type %T", x) + } + return nil +} + +func _DeidentifyConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*DeidentifyConfig) + switch tag { + case 1: // transformation.info_type_transformations + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(InfoTypeTransformations) + err := b.DecodeMessage(msg) + m.Transformation = &DeidentifyConfig_InfoTypeTransformations{msg} + return true, err + case 2: // transformation.record_transformations + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(RecordTransformations) + err := b.DecodeMessage(msg) + m.Transformation = &DeidentifyConfig_RecordTransformations{msg} + return true, err + default: + return false, nil + } +} + +func _DeidentifyConfig_OneofSizer(msg proto.Message) (n int) { + m := msg.(*DeidentifyConfig) + // transformation + switch x := m.Transformation.(type) { + case *DeidentifyConfig_InfoTypeTransformations: + s := proto.Size(x.InfoTypeTransformations) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *DeidentifyConfig_RecordTransformations: + s := proto.Size(x.RecordTransformations) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// A rule for transforming a value. +type PrimitiveTransformation struct { + // Types that are valid to be assigned to Transformation: + // *PrimitiveTransformation_ReplaceConfig + // *PrimitiveTransformation_RedactConfig + // *PrimitiveTransformation_CharacterMaskConfig + // *PrimitiveTransformation_CryptoReplaceFfxFpeConfig + // *PrimitiveTransformation_FixedSizeBucketingConfig + // *PrimitiveTransformation_BucketingConfig + // *PrimitiveTransformation_ReplaceWithInfoTypeConfig + // *PrimitiveTransformation_TimePartConfig + // *PrimitiveTransformation_CryptoHashConfig + // *PrimitiveTransformation_DateShiftConfig + Transformation isPrimitiveTransformation_Transformation `protobuf_oneof:"transformation"` +} + +func (m *PrimitiveTransformation) Reset() { *m = PrimitiveTransformation{} } +func (m *PrimitiveTransformation) String() string { return proto.CompactTextString(m) } +func (*PrimitiveTransformation) ProtoMessage() {} +func (*PrimitiveTransformation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } + +type isPrimitiveTransformation_Transformation interface { + isPrimitiveTransformation_Transformation() +} + +type PrimitiveTransformation_ReplaceConfig struct { + ReplaceConfig *ReplaceValueConfig `protobuf:"bytes,1,opt,name=replace_config,json=replaceConfig,oneof"` +} +type PrimitiveTransformation_RedactConfig struct { + RedactConfig *RedactConfig `protobuf:"bytes,2,opt,name=redact_config,json=redactConfig,oneof"` +} +type PrimitiveTransformation_CharacterMaskConfig struct { + CharacterMaskConfig *CharacterMaskConfig `protobuf:"bytes,3,opt,name=character_mask_config,json=characterMaskConfig,oneof"` +} +type PrimitiveTransformation_CryptoReplaceFfxFpeConfig struct { + CryptoReplaceFfxFpeConfig *CryptoReplaceFfxFpeConfig `protobuf:"bytes,4,opt,name=crypto_replace_ffx_fpe_config,json=cryptoReplaceFfxFpeConfig,oneof"` +} +type PrimitiveTransformation_FixedSizeBucketingConfig struct { + FixedSizeBucketingConfig *FixedSizeBucketingConfig `protobuf:"bytes,5,opt,name=fixed_size_bucketing_config,json=fixedSizeBucketingConfig,oneof"` +} +type PrimitiveTransformation_BucketingConfig struct { + BucketingConfig *BucketingConfig `protobuf:"bytes,6,opt,name=bucketing_config,json=bucketingConfig,oneof"` +} +type PrimitiveTransformation_ReplaceWithInfoTypeConfig struct { + ReplaceWithInfoTypeConfig *ReplaceWithInfoTypeConfig `protobuf:"bytes,7,opt,name=replace_with_info_type_config,json=replaceWithInfoTypeConfig,oneof"` +} +type PrimitiveTransformation_TimePartConfig struct { + TimePartConfig *TimePartConfig `protobuf:"bytes,8,opt,name=time_part_config,json=timePartConfig,oneof"` +} +type PrimitiveTransformation_CryptoHashConfig struct { + CryptoHashConfig *CryptoHashConfig `protobuf:"bytes,9,opt,name=crypto_hash_config,json=cryptoHashConfig,oneof"` +} +type PrimitiveTransformation_DateShiftConfig struct { + DateShiftConfig *DateShiftConfig `protobuf:"bytes,11,opt,name=date_shift_config,json=dateShiftConfig,oneof"` +} + +func (*PrimitiveTransformation_ReplaceConfig) isPrimitiveTransformation_Transformation() {} +func (*PrimitiveTransformation_RedactConfig) isPrimitiveTransformation_Transformation() {} +func (*PrimitiveTransformation_CharacterMaskConfig) isPrimitiveTransformation_Transformation() {} +func (*PrimitiveTransformation_CryptoReplaceFfxFpeConfig) isPrimitiveTransformation_Transformation() {} +func (*PrimitiveTransformation_FixedSizeBucketingConfig) isPrimitiveTransformation_Transformation() {} +func (*PrimitiveTransformation_BucketingConfig) isPrimitiveTransformation_Transformation() {} +func (*PrimitiveTransformation_ReplaceWithInfoTypeConfig) isPrimitiveTransformation_Transformation() {} +func (*PrimitiveTransformation_TimePartConfig) isPrimitiveTransformation_Transformation() {} +func (*PrimitiveTransformation_CryptoHashConfig) isPrimitiveTransformation_Transformation() {} +func (*PrimitiveTransformation_DateShiftConfig) isPrimitiveTransformation_Transformation() {} + +func (m *PrimitiveTransformation) GetTransformation() isPrimitiveTransformation_Transformation { + if m != nil { + return m.Transformation + } + return nil +} + +func (m *PrimitiveTransformation) GetReplaceConfig() *ReplaceValueConfig { + if x, ok := m.GetTransformation().(*PrimitiveTransformation_ReplaceConfig); ok { + return x.ReplaceConfig + } + return nil +} + +func (m *PrimitiveTransformation) GetRedactConfig() *RedactConfig { + if x, ok := m.GetTransformation().(*PrimitiveTransformation_RedactConfig); ok { + return x.RedactConfig + } + return nil +} + +func (m *PrimitiveTransformation) GetCharacterMaskConfig() *CharacterMaskConfig { + if x, ok := m.GetTransformation().(*PrimitiveTransformation_CharacterMaskConfig); ok { + return x.CharacterMaskConfig + } + return nil +} + +func (m *PrimitiveTransformation) GetCryptoReplaceFfxFpeConfig() *CryptoReplaceFfxFpeConfig { + if x, ok := m.GetTransformation().(*PrimitiveTransformation_CryptoReplaceFfxFpeConfig); ok { + return x.CryptoReplaceFfxFpeConfig + } + return nil +} + +func (m *PrimitiveTransformation) GetFixedSizeBucketingConfig() *FixedSizeBucketingConfig { + if x, ok := m.GetTransformation().(*PrimitiveTransformation_FixedSizeBucketingConfig); ok { + return x.FixedSizeBucketingConfig + } + return nil +} + +func (m *PrimitiveTransformation) GetBucketingConfig() *BucketingConfig { + if x, ok := m.GetTransformation().(*PrimitiveTransformation_BucketingConfig); ok { + return x.BucketingConfig + } + return nil +} + +func (m *PrimitiveTransformation) GetReplaceWithInfoTypeConfig() *ReplaceWithInfoTypeConfig { + if x, ok := m.GetTransformation().(*PrimitiveTransformation_ReplaceWithInfoTypeConfig); ok { + return x.ReplaceWithInfoTypeConfig + } + return nil +} + +func (m *PrimitiveTransformation) GetTimePartConfig() *TimePartConfig { + if x, ok := m.GetTransformation().(*PrimitiveTransformation_TimePartConfig); ok { + return x.TimePartConfig + } + return nil +} + +func (m *PrimitiveTransformation) GetCryptoHashConfig() *CryptoHashConfig { + if x, ok := m.GetTransformation().(*PrimitiveTransformation_CryptoHashConfig); ok { + return x.CryptoHashConfig + } + return nil +} + +func (m *PrimitiveTransformation) GetDateShiftConfig() *DateShiftConfig { + if x, ok := m.GetTransformation().(*PrimitiveTransformation_DateShiftConfig); ok { + return x.DateShiftConfig + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*PrimitiveTransformation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _PrimitiveTransformation_OneofMarshaler, _PrimitiveTransformation_OneofUnmarshaler, _PrimitiveTransformation_OneofSizer, []interface{}{ + (*PrimitiveTransformation_ReplaceConfig)(nil), + (*PrimitiveTransformation_RedactConfig)(nil), + (*PrimitiveTransformation_CharacterMaskConfig)(nil), + (*PrimitiveTransformation_CryptoReplaceFfxFpeConfig)(nil), + (*PrimitiveTransformation_FixedSizeBucketingConfig)(nil), + (*PrimitiveTransformation_BucketingConfig)(nil), + (*PrimitiveTransformation_ReplaceWithInfoTypeConfig)(nil), + (*PrimitiveTransformation_TimePartConfig)(nil), + (*PrimitiveTransformation_CryptoHashConfig)(nil), + (*PrimitiveTransformation_DateShiftConfig)(nil), + } +} + +func _PrimitiveTransformation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*PrimitiveTransformation) + // transformation + switch x := m.Transformation.(type) { + case *PrimitiveTransformation_ReplaceConfig: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ReplaceConfig); err != nil { + return err + } + case *PrimitiveTransformation_RedactConfig: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.RedactConfig); err != nil { + return err + } + case *PrimitiveTransformation_CharacterMaskConfig: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.CharacterMaskConfig); err != nil { + return err + } + case *PrimitiveTransformation_CryptoReplaceFfxFpeConfig: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.CryptoReplaceFfxFpeConfig); err != nil { + return err + } + case *PrimitiveTransformation_FixedSizeBucketingConfig: + b.EncodeVarint(5<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.FixedSizeBucketingConfig); err != nil { + return err + } + case *PrimitiveTransformation_BucketingConfig: + b.EncodeVarint(6<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.BucketingConfig); err != nil { + return err + } + case *PrimitiveTransformation_ReplaceWithInfoTypeConfig: + b.EncodeVarint(7<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ReplaceWithInfoTypeConfig); err != nil { + return err + } + case *PrimitiveTransformation_TimePartConfig: + b.EncodeVarint(8<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.TimePartConfig); err != nil { + return err + } + case *PrimitiveTransformation_CryptoHashConfig: + b.EncodeVarint(9<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.CryptoHashConfig); err != nil { + return err + } + case *PrimitiveTransformation_DateShiftConfig: + b.EncodeVarint(11<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.DateShiftConfig); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("PrimitiveTransformation.Transformation has unexpected type %T", x) + } + return nil +} + +func _PrimitiveTransformation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*PrimitiveTransformation) + switch tag { + case 1: // transformation.replace_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ReplaceValueConfig) + err := b.DecodeMessage(msg) + m.Transformation = &PrimitiveTransformation_ReplaceConfig{msg} + return true, err + case 2: // transformation.redact_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(RedactConfig) + err := b.DecodeMessage(msg) + m.Transformation = &PrimitiveTransformation_RedactConfig{msg} + return true, err + case 3: // transformation.character_mask_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CharacterMaskConfig) + err := b.DecodeMessage(msg) + m.Transformation = &PrimitiveTransformation_CharacterMaskConfig{msg} + return true, err + case 4: // transformation.crypto_replace_ffx_fpe_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CryptoReplaceFfxFpeConfig) + err := b.DecodeMessage(msg) + m.Transformation = &PrimitiveTransformation_CryptoReplaceFfxFpeConfig{msg} + return true, err + case 5: // transformation.fixed_size_bucketing_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(FixedSizeBucketingConfig) + err := b.DecodeMessage(msg) + m.Transformation = &PrimitiveTransformation_FixedSizeBucketingConfig{msg} + return true, err + case 6: // transformation.bucketing_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(BucketingConfig) + err := b.DecodeMessage(msg) + m.Transformation = &PrimitiveTransformation_BucketingConfig{msg} + return true, err + case 7: // transformation.replace_with_info_type_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ReplaceWithInfoTypeConfig) + err := b.DecodeMessage(msg) + m.Transformation = &PrimitiveTransformation_ReplaceWithInfoTypeConfig{msg} + return true, err + case 8: // transformation.time_part_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(TimePartConfig) + err := b.DecodeMessage(msg) + m.Transformation = &PrimitiveTransformation_TimePartConfig{msg} + return true, err + case 9: // transformation.crypto_hash_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CryptoHashConfig) + err := b.DecodeMessage(msg) + m.Transformation = &PrimitiveTransformation_CryptoHashConfig{msg} + return true, err + case 11: // transformation.date_shift_config + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(DateShiftConfig) + err := b.DecodeMessage(msg) + m.Transformation = &PrimitiveTransformation_DateShiftConfig{msg} + return true, err + default: + return false, nil + } +} + +func _PrimitiveTransformation_OneofSizer(msg proto.Message) (n int) { + m := msg.(*PrimitiveTransformation) + // transformation + switch x := m.Transformation.(type) { + case *PrimitiveTransformation_ReplaceConfig: + s := proto.Size(x.ReplaceConfig) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrimitiveTransformation_RedactConfig: + s := proto.Size(x.RedactConfig) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrimitiveTransformation_CharacterMaskConfig: + s := proto.Size(x.CharacterMaskConfig) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrimitiveTransformation_CryptoReplaceFfxFpeConfig: + s := proto.Size(x.CryptoReplaceFfxFpeConfig) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrimitiveTransformation_FixedSizeBucketingConfig: + s := proto.Size(x.FixedSizeBucketingConfig) + n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrimitiveTransformation_BucketingConfig: + s := proto.Size(x.BucketingConfig) + n += proto.SizeVarint(6<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrimitiveTransformation_ReplaceWithInfoTypeConfig: + s := proto.Size(x.ReplaceWithInfoTypeConfig) + n += proto.SizeVarint(7<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrimitiveTransformation_TimePartConfig: + s := proto.Size(x.TimePartConfig) + n += proto.SizeVarint(8<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrimitiveTransformation_CryptoHashConfig: + s := proto.Size(x.CryptoHashConfig) + n += proto.SizeVarint(9<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *PrimitiveTransformation_DateShiftConfig: + s := proto.Size(x.DateShiftConfig) + n += proto.SizeVarint(11<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a +// portion of the value. +type TimePartConfig struct { + PartToExtract TimePartConfig_TimePart `protobuf:"varint,1,opt,name=part_to_extract,json=partToExtract,enum=google.privacy.dlp.v2.TimePartConfig_TimePart" json:"part_to_extract,omitempty"` +} + +func (m *TimePartConfig) Reset() { *m = TimePartConfig{} } +func (m *TimePartConfig) String() string { return proto.CompactTextString(m) } +func (*TimePartConfig) ProtoMessage() {} +func (*TimePartConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } + +func (m *TimePartConfig) GetPartToExtract() TimePartConfig_TimePart { + if m != nil { + return m.PartToExtract + } + return TimePartConfig_TIME_PART_UNSPECIFIED +} + +// Pseudonymization method that generates surrogates via cryptographic hashing. +// Uses SHA-256. +// The key size must be either 32 or 64 bytes. +// Outputs a 32 byte digest as an uppercase hex string +// (for example, 41D1567F7F99F1DC2A5FAB886DEE5BEE). +// Currently, only string and integer values can be hashed. +type CryptoHashConfig struct { + // The key used by the hash function. + CryptoKey *CryptoKey `protobuf:"bytes,1,opt,name=crypto_key,json=cryptoKey" json:"crypto_key,omitempty"` +} + +func (m *CryptoHashConfig) Reset() { *m = CryptoHashConfig{} } +func (m *CryptoHashConfig) String() string { return proto.CompactTextString(m) } +func (*CryptoHashConfig) ProtoMessage() {} +func (*CryptoHashConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } + +func (m *CryptoHashConfig) GetCryptoKey() *CryptoKey { + if m != nil { + return m.CryptoKey + } + return nil +} + +// Replace each input value with a given `Value`. +type ReplaceValueConfig struct { + // Value to replace it with. + NewValue *Value `protobuf:"bytes,1,opt,name=new_value,json=newValue" json:"new_value,omitempty"` +} + +func (m *ReplaceValueConfig) Reset() { *m = ReplaceValueConfig{} } +func (m *ReplaceValueConfig) String() string { return proto.CompactTextString(m) } +func (*ReplaceValueConfig) ProtoMessage() {} +func (*ReplaceValueConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } + +func (m *ReplaceValueConfig) GetNewValue() *Value { + if m != nil { + return m.NewValue + } + return nil +} + +// Replace each matching finding with the name of the info_type. +type ReplaceWithInfoTypeConfig struct { +} + +func (m *ReplaceWithInfoTypeConfig) Reset() { *m = ReplaceWithInfoTypeConfig{} } +func (m *ReplaceWithInfoTypeConfig) String() string { return proto.CompactTextString(m) } +func (*ReplaceWithInfoTypeConfig) ProtoMessage() {} +func (*ReplaceWithInfoTypeConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } + +// Redact a given value. For example, if used with an `InfoTypeTransformation` +// transforming PHONE_NUMBER, and input 'My phone number is 206-555-0123', the +// output would be 'My phone number is '. +type RedactConfig struct { +} + +func (m *RedactConfig) Reset() { *m = RedactConfig{} } +func (m *RedactConfig) String() string { return proto.CompactTextString(m) } +func (*RedactConfig) ProtoMessage() {} +func (*RedactConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } + +// Characters to skip when doing deidentification of a value. These will be left +// alone and skipped. +type CharsToIgnore struct { + // Types that are valid to be assigned to Characters: + // *CharsToIgnore_CharactersToSkip + // *CharsToIgnore_CommonCharactersToIgnore + Characters isCharsToIgnore_Characters `protobuf_oneof:"characters"` +} + +func (m *CharsToIgnore) Reset() { *m = CharsToIgnore{} } +func (m *CharsToIgnore) String() string { return proto.CompactTextString(m) } +func (*CharsToIgnore) ProtoMessage() {} +func (*CharsToIgnore) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } + +type isCharsToIgnore_Characters interface { + isCharsToIgnore_Characters() +} + +type CharsToIgnore_CharactersToSkip struct { + CharactersToSkip string `protobuf:"bytes,1,opt,name=characters_to_skip,json=charactersToSkip,oneof"` +} +type CharsToIgnore_CommonCharactersToIgnore struct { + CommonCharactersToIgnore CharsToIgnore_CommonCharsToIgnore `protobuf:"varint,2,opt,name=common_characters_to_ignore,json=commonCharactersToIgnore,enum=google.privacy.dlp.v2.CharsToIgnore_CommonCharsToIgnore,oneof"` +} + +func (*CharsToIgnore_CharactersToSkip) isCharsToIgnore_Characters() {} +func (*CharsToIgnore_CommonCharactersToIgnore) isCharsToIgnore_Characters() {} + +func (m *CharsToIgnore) GetCharacters() isCharsToIgnore_Characters { + if m != nil { + return m.Characters + } + return nil +} + +func (m *CharsToIgnore) GetCharactersToSkip() string { + if x, ok := m.GetCharacters().(*CharsToIgnore_CharactersToSkip); ok { + return x.CharactersToSkip + } + return "" +} + +func (m *CharsToIgnore) GetCommonCharactersToIgnore() CharsToIgnore_CommonCharsToIgnore { + if x, ok := m.GetCharacters().(*CharsToIgnore_CommonCharactersToIgnore); ok { + return x.CommonCharactersToIgnore + } + return CharsToIgnore_COMMON_CHARS_TO_IGNORE_UNSPECIFIED +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*CharsToIgnore) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _CharsToIgnore_OneofMarshaler, _CharsToIgnore_OneofUnmarshaler, _CharsToIgnore_OneofSizer, []interface{}{ + (*CharsToIgnore_CharactersToSkip)(nil), + (*CharsToIgnore_CommonCharactersToIgnore)(nil), + } +} + +func _CharsToIgnore_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*CharsToIgnore) + // characters + switch x := m.Characters.(type) { + case *CharsToIgnore_CharactersToSkip: + b.EncodeVarint(1<<3 | proto.WireBytes) + b.EncodeStringBytes(x.CharactersToSkip) + case *CharsToIgnore_CommonCharactersToIgnore: + b.EncodeVarint(2<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.CommonCharactersToIgnore)) + case nil: + default: + return fmt.Errorf("CharsToIgnore.Characters has unexpected type %T", x) + } + return nil +} + +func _CharsToIgnore_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*CharsToIgnore) + switch tag { + case 1: // characters.characters_to_skip + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.Characters = &CharsToIgnore_CharactersToSkip{x} + return true, err + case 2: // characters.common_characters_to_ignore + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Characters = &CharsToIgnore_CommonCharactersToIgnore{CharsToIgnore_CommonCharsToIgnore(x)} + return true, err + default: + return false, nil + } +} + +func _CharsToIgnore_OneofSizer(msg proto.Message) (n int) { + m := msg.(*CharsToIgnore) + // characters + switch x := m.Characters.(type) { + case *CharsToIgnore_CharactersToSkip: + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(len(x.CharactersToSkip))) + n += len(x.CharactersToSkip) + case *CharsToIgnore_CommonCharactersToIgnore: + n += proto.SizeVarint(2<<3 | proto.WireVarint) + n += proto.SizeVarint(uint64(x.CommonCharactersToIgnore)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Partially mask a string by replacing a given number of characters with a +// fixed character. Masking can start from the beginning or end of the string. +// This can be used on data of any type (numbers, longs, and so on) and when +// de-identifying structured data we'll attempt to preserve the original data's +// type. (This allows you to take a long like 123 and modify it to a string like +// **3. +type CharacterMaskConfig struct { + // Character to mask the sensitive values—for example, "*" for an + // alphabetic string such as name, or "0" for a numeric string such as ZIP + // code or credit card number. String must have length 1. If not supplied, we + // will default to "*" for strings, 0 for digits. + MaskingCharacter string `protobuf:"bytes,1,opt,name=masking_character,json=maskingCharacter" json:"masking_character,omitempty"` + // Number of characters to mask. If not set, all matching chars will be + // masked. Skipped characters do not count towards this tally. + NumberToMask int32 `protobuf:"varint,2,opt,name=number_to_mask,json=numberToMask" json:"number_to_mask,omitempty"` + // Mask characters in reverse order. For example, if `masking_character` is + // '0', number_to_mask is 14, and `reverse_order` is false, then + // 1234-5678-9012-3456 -> 00000000000000-3456 + // If `masking_character` is '*', `number_to_mask` is 3, and `reverse_order` + // is true, then 12345 -> 12*** + ReverseOrder bool `protobuf:"varint,3,opt,name=reverse_order,json=reverseOrder" json:"reverse_order,omitempty"` + // When masking a string, items in this list will be skipped when replacing. + // For example, if your string is 555-555-5555 and you ask us to skip `-` and + // mask 5 chars with * we would produce ***-*55-5555. + CharactersToIgnore []*CharsToIgnore `protobuf:"bytes,4,rep,name=characters_to_ignore,json=charactersToIgnore" json:"characters_to_ignore,omitempty"` +} + +func (m *CharacterMaskConfig) Reset() { *m = CharacterMaskConfig{} } +func (m *CharacterMaskConfig) String() string { return proto.CompactTextString(m) } +func (*CharacterMaskConfig) ProtoMessage() {} +func (*CharacterMaskConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } + +func (m *CharacterMaskConfig) GetMaskingCharacter() string { + if m != nil { + return m.MaskingCharacter + } + return "" +} + +func (m *CharacterMaskConfig) GetNumberToMask() int32 { + if m != nil { + return m.NumberToMask + } + return 0 +} + +func (m *CharacterMaskConfig) GetReverseOrder() bool { + if m != nil { + return m.ReverseOrder + } + return false +} + +func (m *CharacterMaskConfig) GetCharactersToIgnore() []*CharsToIgnore { + if m != nil { + return m.CharactersToIgnore + } + return nil +} + +// Buckets values based on fixed size ranges. The +// Bucketing transformation can provide all of this functionality, +// but requires more configuration. This message is provided as a convenience to +// the user for simple bucketing strategies. +// +// The transformed value will be a hyphenated string of +// <lower_bound>-<upper_bound>, i.e if lower_bound = 10 and upper_bound = 20 +// all values that are within this bucket will be replaced with "10-20". +// +// This can be used on data of type: double, long. +// +// If the bound Value type differs from the type of data +// being transformed, we will first attempt converting the type of the data to +// be transformed to match the type of the bound before comparing. +type FixedSizeBucketingConfig struct { + // Lower bound value of buckets. All values less than `lower_bound` are + // grouped together into a single bucket; for example if `lower_bound` = 10, + // then all values less than 10 are replaced with the value “-10â€. [Required]. + LowerBound *Value `protobuf:"bytes,1,opt,name=lower_bound,json=lowerBound" json:"lower_bound,omitempty"` + // Upper bound value of buckets. All values greater than upper_bound are + // grouped together into a single bucket; for example if `upper_bound` = 89, + // then all values greater than 89 are replaced with the value “89+â€. + // [Required]. + UpperBound *Value `protobuf:"bytes,2,opt,name=upper_bound,json=upperBound" json:"upper_bound,omitempty"` + // Size of each bucket (except for minimum and maximum buckets). So if + // `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the + // following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, + // 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works. [Required]. + BucketSize float64 `protobuf:"fixed64,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` +} + +func (m *FixedSizeBucketingConfig) Reset() { *m = FixedSizeBucketingConfig{} } +func (m *FixedSizeBucketingConfig) String() string { return proto.CompactTextString(m) } +func (*FixedSizeBucketingConfig) ProtoMessage() {} +func (*FixedSizeBucketingConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } + +func (m *FixedSizeBucketingConfig) GetLowerBound() *Value { + if m != nil { + return m.LowerBound + } + return nil +} + +func (m *FixedSizeBucketingConfig) GetUpperBound() *Value { + if m != nil { + return m.UpperBound + } + return nil +} + +func (m *FixedSizeBucketingConfig) GetBucketSize() float64 { + if m != nil { + return m.BucketSize + } + return 0 +} + +// Generalization function that buckets values based on ranges. The ranges and +// replacement values are dynamically provided by the user for custom behavior, +// such as 1-30 -> LOW 31-65 -> MEDIUM 66-100 -> HIGH +// This can be used on +// data of type: number, long, string, timestamp. +// If the bound `Value` type differs from the type of data being transformed, we +// will first attempt converting the type of the data to be transformed to match +// the type of the bound before comparing. +type BucketingConfig struct { + // Set of buckets. Ranges must be non-overlapping. + Buckets []*BucketingConfig_Bucket `protobuf:"bytes,1,rep,name=buckets" json:"buckets,omitempty"` +} + +func (m *BucketingConfig) Reset() { *m = BucketingConfig{} } +func (m *BucketingConfig) String() string { return proto.CompactTextString(m) } +func (*BucketingConfig) ProtoMessage() {} +func (*BucketingConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } + +func (m *BucketingConfig) GetBuckets() []*BucketingConfig_Bucket { + if m != nil { + return m.Buckets + } + return nil +} + +// Bucket is represented as a range, along with replacement values. +type BucketingConfig_Bucket struct { + // Lower bound of the range, inclusive. Type should be the same as max if + // used. + Min *Value `protobuf:"bytes,1,opt,name=min" json:"min,omitempty"` + // Upper bound of the range, exclusive; type must match min. + Max *Value `protobuf:"bytes,2,opt,name=max" json:"max,omitempty"` + // Replacement value for this bucket. If not provided + // the default behavior will be to hyphenate the min-max range. + ReplacementValue *Value `protobuf:"bytes,3,opt,name=replacement_value,json=replacementValue" json:"replacement_value,omitempty"` +} + +func (m *BucketingConfig_Bucket) Reset() { *m = BucketingConfig_Bucket{} } +func (m *BucketingConfig_Bucket) String() string { return proto.CompactTextString(m) } +func (*BucketingConfig_Bucket) ProtoMessage() {} +func (*BucketingConfig_Bucket) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46, 0} } + +func (m *BucketingConfig_Bucket) GetMin() *Value { + if m != nil { + return m.Min + } + return nil +} + +func (m *BucketingConfig_Bucket) GetMax() *Value { + if m != nil { + return m.Max + } + return nil +} + +func (m *BucketingConfig_Bucket) GetReplacementValue() *Value { + if m != nil { + return m.ReplacementValue + } + return nil +} + +// Replaces an identifier with a surrogate using FPE with the FFX +// mode of operation; however when used in the `ReidentifyContent` API method, +// it serves the opposite function by reversing the surrogate back into +// the original identifier. +// The identifier must be encoded as ASCII. +// For a given crypto key and context, the same identifier will be +// replaced with the same surrogate. +// Identifiers must be at least two characters long. +// In the case that the identifier is the empty string, it will be skipped. +// See [Pseudonymization](/dlp/docs/pseudonymization) for example usage. +type CryptoReplaceFfxFpeConfig struct { + // The key used by the encryption algorithm. [required] + CryptoKey *CryptoKey `protobuf:"bytes,1,opt,name=crypto_key,json=cryptoKey" json:"crypto_key,omitempty"` + // The 'tweak', a context may be used for higher security since the same + // identifier in two different contexts won't be given the same surrogate. If + // the context is not set, a default tweak will be used. + // + // If the context is set but: + // + // 1. there is no record present when transforming a given value or + // 1. the field is not present when transforming a given value, + // + // a default tweak will be used. + // + // Note that case (1) is expected when an `InfoTypeTransformation` is + // applied to both structured and non-structured `ContentItem`s. + // Currently, the referenced field may be of value type integer or string. + // + // The tweak is constructed as a sequence of bytes in big endian byte order + // such that: + // + // - a 64 bit integer is encoded followed by a single byte of value 1 + // - a string is encoded in UTF-8 format followed by a single byte of value + // Ã¥ 2 + Context *FieldId `protobuf:"bytes,2,opt,name=context" json:"context,omitempty"` + // Types that are valid to be assigned to Alphabet: + // *CryptoReplaceFfxFpeConfig_CommonAlphabet + // *CryptoReplaceFfxFpeConfig_CustomAlphabet + // *CryptoReplaceFfxFpeConfig_Radix + Alphabet isCryptoReplaceFfxFpeConfig_Alphabet `protobuf_oneof:"alphabet"` + // The custom infoType to annotate the surrogate with. + // This annotation will be applied to the surrogate by prefixing it with + // the name of the custom infoType followed by the number of + // characters comprising the surrogate. The following scheme defines the + // format: info_type_name(surrogate_character_count):surrogate + // + // For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and + // the surrogate is 'abc', the full replacement value + // will be: 'MY_TOKEN_INFO_TYPE(3):abc' + // + // This annotation identifies the surrogate when inspecting content using the + // custom infoType + // [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype). + // This facilitates reversal of the surrogate when it occurs in free text. + // + // In order for inspection to work properly, the name of this infoType must + // not occur naturally anywhere in your data; otherwise, inspection may + // find a surrogate that does not correspond to an actual identifier. + // Therefore, choose your custom infoType name carefully after considering + // what your data looks like. One way to select a name that has a high chance + // of yielding reliable detection is to include one or more unicode characters + // that are highly improbable to exist in your data. + // For example, assuming your data is entered from a regular ASCII keyboard, + // the symbol with the hex code point 29DD might be used like so: + // â§MY_TOKEN_TYPE + SurrogateInfoType *InfoType `protobuf:"bytes,8,opt,name=surrogate_info_type,json=surrogateInfoType" json:"surrogate_info_type,omitempty"` +} + +func (m *CryptoReplaceFfxFpeConfig) Reset() { *m = CryptoReplaceFfxFpeConfig{} } +func (m *CryptoReplaceFfxFpeConfig) String() string { return proto.CompactTextString(m) } +func (*CryptoReplaceFfxFpeConfig) ProtoMessage() {} +func (*CryptoReplaceFfxFpeConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } + +type isCryptoReplaceFfxFpeConfig_Alphabet interface { + isCryptoReplaceFfxFpeConfig_Alphabet() +} + +type CryptoReplaceFfxFpeConfig_CommonAlphabet struct { + CommonAlphabet CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet `protobuf:"varint,4,opt,name=common_alphabet,json=commonAlphabet,enum=google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet,oneof"` +} +type CryptoReplaceFfxFpeConfig_CustomAlphabet struct { + CustomAlphabet string `protobuf:"bytes,5,opt,name=custom_alphabet,json=customAlphabet,oneof"` +} +type CryptoReplaceFfxFpeConfig_Radix struct { + Radix int32 `protobuf:"varint,6,opt,name=radix,oneof"` +} + +func (*CryptoReplaceFfxFpeConfig_CommonAlphabet) isCryptoReplaceFfxFpeConfig_Alphabet() {} +func (*CryptoReplaceFfxFpeConfig_CustomAlphabet) isCryptoReplaceFfxFpeConfig_Alphabet() {} +func (*CryptoReplaceFfxFpeConfig_Radix) isCryptoReplaceFfxFpeConfig_Alphabet() {} + +func (m *CryptoReplaceFfxFpeConfig) GetAlphabet() isCryptoReplaceFfxFpeConfig_Alphabet { + if m != nil { + return m.Alphabet + } + return nil +} + +func (m *CryptoReplaceFfxFpeConfig) GetCryptoKey() *CryptoKey { + if m != nil { + return m.CryptoKey + } + return nil +} + +func (m *CryptoReplaceFfxFpeConfig) GetContext() *FieldId { + if m != nil { + return m.Context + } + return nil +} + +func (m *CryptoReplaceFfxFpeConfig) GetCommonAlphabet() CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet { + if x, ok := m.GetAlphabet().(*CryptoReplaceFfxFpeConfig_CommonAlphabet); ok { + return x.CommonAlphabet + } + return CryptoReplaceFfxFpeConfig_FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED +} + +func (m *CryptoReplaceFfxFpeConfig) GetCustomAlphabet() string { + if x, ok := m.GetAlphabet().(*CryptoReplaceFfxFpeConfig_CustomAlphabet); ok { + return x.CustomAlphabet + } + return "" +} + +func (m *CryptoReplaceFfxFpeConfig) GetRadix() int32 { + if x, ok := m.GetAlphabet().(*CryptoReplaceFfxFpeConfig_Radix); ok { + return x.Radix + } + return 0 +} + +func (m *CryptoReplaceFfxFpeConfig) GetSurrogateInfoType() *InfoType { + if m != nil { + return m.SurrogateInfoType + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*CryptoReplaceFfxFpeConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _CryptoReplaceFfxFpeConfig_OneofMarshaler, _CryptoReplaceFfxFpeConfig_OneofUnmarshaler, _CryptoReplaceFfxFpeConfig_OneofSizer, []interface{}{ + (*CryptoReplaceFfxFpeConfig_CommonAlphabet)(nil), + (*CryptoReplaceFfxFpeConfig_CustomAlphabet)(nil), + (*CryptoReplaceFfxFpeConfig_Radix)(nil), + } +} + +func _CryptoReplaceFfxFpeConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*CryptoReplaceFfxFpeConfig) + // alphabet + switch x := m.Alphabet.(type) { + case *CryptoReplaceFfxFpeConfig_CommonAlphabet: + b.EncodeVarint(4<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.CommonAlphabet)) + case *CryptoReplaceFfxFpeConfig_CustomAlphabet: + b.EncodeVarint(5<<3 | proto.WireBytes) + b.EncodeStringBytes(x.CustomAlphabet) + case *CryptoReplaceFfxFpeConfig_Radix: + b.EncodeVarint(6<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.Radix)) + case nil: + default: + return fmt.Errorf("CryptoReplaceFfxFpeConfig.Alphabet has unexpected type %T", x) + } + return nil +} + +func _CryptoReplaceFfxFpeConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*CryptoReplaceFfxFpeConfig) + switch tag { + case 4: // alphabet.common_alphabet + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Alphabet = &CryptoReplaceFfxFpeConfig_CommonAlphabet{CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet(x)} + return true, err + case 5: // alphabet.custom_alphabet + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.Alphabet = &CryptoReplaceFfxFpeConfig_CustomAlphabet{x} + return true, err + case 6: // alphabet.radix + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Alphabet = &CryptoReplaceFfxFpeConfig_Radix{int32(x)} + return true, err + default: + return false, nil + } +} + +func _CryptoReplaceFfxFpeConfig_OneofSizer(msg proto.Message) (n int) { + m := msg.(*CryptoReplaceFfxFpeConfig) + // alphabet + switch x := m.Alphabet.(type) { + case *CryptoReplaceFfxFpeConfig_CommonAlphabet: + n += proto.SizeVarint(4<<3 | proto.WireVarint) + n += proto.SizeVarint(uint64(x.CommonAlphabet)) + case *CryptoReplaceFfxFpeConfig_CustomAlphabet: + n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(len(x.CustomAlphabet))) + n += len(x.CustomAlphabet) + case *CryptoReplaceFfxFpeConfig_Radix: + n += proto.SizeVarint(6<<3 | proto.WireVarint) + n += proto.SizeVarint(uint64(x.Radix)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// This is a data encryption key (DEK) (as opposed to +// a key encryption key (KEK) stored by KMS). +// When using KMS to wrap/unwrap DEKs, be sure to set an appropriate +// IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot +// unwrap the data crypto key. +type CryptoKey struct { + // Types that are valid to be assigned to Source: + // *CryptoKey_Transient + // *CryptoKey_Unwrapped + // *CryptoKey_KmsWrapped + Source isCryptoKey_Source `protobuf_oneof:"source"` +} + +func (m *CryptoKey) Reset() { *m = CryptoKey{} } +func (m *CryptoKey) String() string { return proto.CompactTextString(m) } +func (*CryptoKey) ProtoMessage() {} +func (*CryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } + +type isCryptoKey_Source interface { + isCryptoKey_Source() +} + +type CryptoKey_Transient struct { + Transient *TransientCryptoKey `protobuf:"bytes,1,opt,name=transient,oneof"` +} +type CryptoKey_Unwrapped struct { + Unwrapped *UnwrappedCryptoKey `protobuf:"bytes,2,opt,name=unwrapped,oneof"` +} +type CryptoKey_KmsWrapped struct { + KmsWrapped *KmsWrappedCryptoKey `protobuf:"bytes,3,opt,name=kms_wrapped,json=kmsWrapped,oneof"` +} + +func (*CryptoKey_Transient) isCryptoKey_Source() {} +func (*CryptoKey_Unwrapped) isCryptoKey_Source() {} +func (*CryptoKey_KmsWrapped) isCryptoKey_Source() {} + +func (m *CryptoKey) GetSource() isCryptoKey_Source { + if m != nil { + return m.Source + } + return nil +} + +func (m *CryptoKey) GetTransient() *TransientCryptoKey { + if x, ok := m.GetSource().(*CryptoKey_Transient); ok { + return x.Transient + } + return nil +} + +func (m *CryptoKey) GetUnwrapped() *UnwrappedCryptoKey { + if x, ok := m.GetSource().(*CryptoKey_Unwrapped); ok { + return x.Unwrapped + } + return nil +} + +func (m *CryptoKey) GetKmsWrapped() *KmsWrappedCryptoKey { + if x, ok := m.GetSource().(*CryptoKey_KmsWrapped); ok { + return x.KmsWrapped + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*CryptoKey) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _CryptoKey_OneofMarshaler, _CryptoKey_OneofUnmarshaler, _CryptoKey_OneofSizer, []interface{}{ + (*CryptoKey_Transient)(nil), + (*CryptoKey_Unwrapped)(nil), + (*CryptoKey_KmsWrapped)(nil), + } +} + +func _CryptoKey_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*CryptoKey) + // source + switch x := m.Source.(type) { + case *CryptoKey_Transient: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Transient); err != nil { + return err + } + case *CryptoKey_Unwrapped: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Unwrapped); err != nil { + return err + } + case *CryptoKey_KmsWrapped: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.KmsWrapped); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("CryptoKey.Source has unexpected type %T", x) + } + return nil +} + +func _CryptoKey_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*CryptoKey) + switch tag { + case 1: // source.transient + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(TransientCryptoKey) + err := b.DecodeMessage(msg) + m.Source = &CryptoKey_Transient{msg} + return true, err + case 2: // source.unwrapped + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(UnwrappedCryptoKey) + err := b.DecodeMessage(msg) + m.Source = &CryptoKey_Unwrapped{msg} + return true, err + case 3: // source.kms_wrapped + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(KmsWrappedCryptoKey) + err := b.DecodeMessage(msg) + m.Source = &CryptoKey_KmsWrapped{msg} + return true, err + default: + return false, nil + } +} + +func _CryptoKey_OneofSizer(msg proto.Message) (n int) { + m := msg.(*CryptoKey) + // source + switch x := m.Source.(type) { + case *CryptoKey_Transient: + s := proto.Size(x.Transient) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *CryptoKey_Unwrapped: + s := proto.Size(x.Unwrapped) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *CryptoKey_KmsWrapped: + s := proto.Size(x.KmsWrapped) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Use this to have a random data crypto key generated. +// It will be discarded after the request finishes. +type TransientCryptoKey struct { + // Name of the key. [required] + // This is an arbitrary string used to differentiate different keys. + // A unique key is generated per name: two separate `TransientCryptoKey` + // protos share the same generated key if their names are the same. + // When the data crypto key is generated, this name is not used in any way + // (repeating the api call will result in a different key being generated). + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *TransientCryptoKey) Reset() { *m = TransientCryptoKey{} } +func (m *TransientCryptoKey) String() string { return proto.CompactTextString(m) } +func (*TransientCryptoKey) ProtoMessage() {} +func (*TransientCryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } + +func (m *TransientCryptoKey) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// Using raw keys is prone to security risks due to accidentally +// leaking the key. Choose another type of key if possible. +type UnwrappedCryptoKey struct { + // The AES 128/192/256 bit key. [required] + Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` +} + +func (m *UnwrappedCryptoKey) Reset() { *m = UnwrappedCryptoKey{} } +func (m *UnwrappedCryptoKey) String() string { return proto.CompactTextString(m) } +func (*UnwrappedCryptoKey) ProtoMessage() {} +func (*UnwrappedCryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } + +func (m *UnwrappedCryptoKey) GetKey() []byte { + if m != nil { + return m.Key + } + return nil +} + +// Include to use an existing data crypto key wrapped by KMS. +// Authorization requires the following IAM permissions when sending a request +// to perform a crypto transformation using a kms-wrapped crypto key: +// dlp.kms.encrypt +type KmsWrappedCryptoKey struct { + // The wrapped data crypto key. [required] + WrappedKey []byte `protobuf:"bytes,1,opt,name=wrapped_key,json=wrappedKey,proto3" json:"wrapped_key,omitempty"` + // The resource name of the KMS CryptoKey to use for unwrapping. [required] + CryptoKeyName string `protobuf:"bytes,2,opt,name=crypto_key_name,json=cryptoKeyName" json:"crypto_key_name,omitempty"` +} + +func (m *KmsWrappedCryptoKey) Reset() { *m = KmsWrappedCryptoKey{} } +func (m *KmsWrappedCryptoKey) String() string { return proto.CompactTextString(m) } +func (*KmsWrappedCryptoKey) ProtoMessage() {} +func (*KmsWrappedCryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } + +func (m *KmsWrappedCryptoKey) GetWrappedKey() []byte { + if m != nil { + return m.WrappedKey + } + return nil +} + +func (m *KmsWrappedCryptoKey) GetCryptoKeyName() string { + if m != nil { + return m.CryptoKeyName + } + return "" +} + +// Shifts dates by random number of days, with option to be consistent for the +// same context. +type DateShiftConfig struct { + // Range of shift in days. Actual shift will be selected at random within this + // range (inclusive ends). Negative means shift to earlier in time. Must not + // be more than 365250 days (1000 years) each direction. + // + // For example, 3 means shift date to at most 3 days into the future. + // [Required] + UpperBoundDays int32 `protobuf:"varint,1,opt,name=upper_bound_days,json=upperBoundDays" json:"upper_bound_days,omitempty"` + // For example, -5 means shift date to at most 5 days back in the past. + // [Required] + LowerBoundDays int32 `protobuf:"varint,2,opt,name=lower_bound_days,json=lowerBoundDays" json:"lower_bound_days,omitempty"` + // Points to the field that contains the context, for example, an entity id. + // If set, must also set method. If set, shift will be consistent for the + // given context. + Context *FieldId `protobuf:"bytes,3,opt,name=context" json:"context,omitempty"` + // Method for calculating shift that takes context into consideration. If + // set, must also set context. Can only be applied to table items. + // + // Types that are valid to be assigned to Method: + // *DateShiftConfig_CryptoKey + Method isDateShiftConfig_Method `protobuf_oneof:"method"` +} + +func (m *DateShiftConfig) Reset() { *m = DateShiftConfig{} } +func (m *DateShiftConfig) String() string { return proto.CompactTextString(m) } +func (*DateShiftConfig) ProtoMessage() {} +func (*DateShiftConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } + +type isDateShiftConfig_Method interface { + isDateShiftConfig_Method() +} + +type DateShiftConfig_CryptoKey struct { + CryptoKey *CryptoKey `protobuf:"bytes,4,opt,name=crypto_key,json=cryptoKey,oneof"` +} + +func (*DateShiftConfig_CryptoKey) isDateShiftConfig_Method() {} + +func (m *DateShiftConfig) GetMethod() isDateShiftConfig_Method { + if m != nil { + return m.Method + } + return nil +} + +func (m *DateShiftConfig) GetUpperBoundDays() int32 { + if m != nil { + return m.UpperBoundDays + } + return 0 +} + +func (m *DateShiftConfig) GetLowerBoundDays() int32 { + if m != nil { + return m.LowerBoundDays + } + return 0 +} + +func (m *DateShiftConfig) GetContext() *FieldId { + if m != nil { + return m.Context + } + return nil +} + +func (m *DateShiftConfig) GetCryptoKey() *CryptoKey { + if x, ok := m.GetMethod().(*DateShiftConfig_CryptoKey); ok { + return x.CryptoKey + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*DateShiftConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _DateShiftConfig_OneofMarshaler, _DateShiftConfig_OneofUnmarshaler, _DateShiftConfig_OneofSizer, []interface{}{ + (*DateShiftConfig_CryptoKey)(nil), + } +} + +func _DateShiftConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*DateShiftConfig) + // method + switch x := m.Method.(type) { + case *DateShiftConfig_CryptoKey: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.CryptoKey); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("DateShiftConfig.Method has unexpected type %T", x) + } + return nil +} + +func _DateShiftConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*DateShiftConfig) + switch tag { + case 4: // method.crypto_key + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CryptoKey) + err := b.DecodeMessage(msg) + m.Method = &DateShiftConfig_CryptoKey{msg} + return true, err + default: + return false, nil + } +} + +func _DateShiftConfig_OneofSizer(msg proto.Message) (n int) { + m := msg.(*DateShiftConfig) + // method + switch x := m.Method.(type) { + case *DateShiftConfig_CryptoKey: + s := proto.Size(x.CryptoKey) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// A type of transformation that will scan unstructured text and +// apply various `PrimitiveTransformation`s to each finding, where the +// transformation is applied to only values that were identified as a specific +// info_type. +type InfoTypeTransformations struct { + // Transformation for each infoType. Cannot specify more than one + // for a given infoType. [required] + Transformations []*InfoTypeTransformations_InfoTypeTransformation `protobuf:"bytes,1,rep,name=transformations" json:"transformations,omitempty"` +} + +func (m *InfoTypeTransformations) Reset() { *m = InfoTypeTransformations{} } +func (m *InfoTypeTransformations) String() string { return proto.CompactTextString(m) } +func (*InfoTypeTransformations) ProtoMessage() {} +func (*InfoTypeTransformations) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } + +func (m *InfoTypeTransformations) GetTransformations() []*InfoTypeTransformations_InfoTypeTransformation { + if m != nil { + return m.Transformations + } + return nil +} + +// A transformation to apply to text that is identified as a specific +// info_type. +type InfoTypeTransformations_InfoTypeTransformation struct { + // InfoTypes to apply the transformation to. Empty list will match all + // available infoTypes for this transformation. + InfoTypes []*InfoType `protobuf:"bytes,1,rep,name=info_types,json=infoTypes" json:"info_types,omitempty"` + // Primitive transformation to apply to the infoType. [required] + PrimitiveTransformation *PrimitiveTransformation `protobuf:"bytes,2,opt,name=primitive_transformation,json=primitiveTransformation" json:"primitive_transformation,omitempty"` +} + +func (m *InfoTypeTransformations_InfoTypeTransformation) Reset() { + *m = InfoTypeTransformations_InfoTypeTransformation{} +} +func (m *InfoTypeTransformations_InfoTypeTransformation) String() string { + return proto.CompactTextString(m) +} +func (*InfoTypeTransformations_InfoTypeTransformation) ProtoMessage() {} +func (*InfoTypeTransformations_InfoTypeTransformation) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{53, 0} +} + +func (m *InfoTypeTransformations_InfoTypeTransformation) GetInfoTypes() []*InfoType { + if m != nil { + return m.InfoTypes + } + return nil +} + +func (m *InfoTypeTransformations_InfoTypeTransformation) GetPrimitiveTransformation() *PrimitiveTransformation { + if m != nil { + return m.PrimitiveTransformation + } + return nil +} + +// The transformation to apply to the field. +type FieldTransformation struct { + // Input field(s) to apply the transformation to. [required] + Fields []*FieldId `protobuf:"bytes,1,rep,name=fields" json:"fields,omitempty"` + // Only apply the transformation if the condition evaluates to true for the + // given `RecordCondition`. The conditions are allowed to reference fields + // that are not used in the actual transformation. [optional] + // + // Example Use Cases: + // + // - Apply a different bucket transformation to an age column if the zip code + // column for the same record is within a specific range. + // - Redact a field if the date of birth field is greater than 85. + Condition *RecordCondition `protobuf:"bytes,3,opt,name=condition" json:"condition,omitempty"` + // Transformation to apply. [required] + // + // Types that are valid to be assigned to Transformation: + // *FieldTransformation_PrimitiveTransformation + // *FieldTransformation_InfoTypeTransformations + Transformation isFieldTransformation_Transformation `protobuf_oneof:"transformation"` +} + +func (m *FieldTransformation) Reset() { *m = FieldTransformation{} } +func (m *FieldTransformation) String() string { return proto.CompactTextString(m) } +func (*FieldTransformation) ProtoMessage() {} +func (*FieldTransformation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } + +type isFieldTransformation_Transformation interface { + isFieldTransformation_Transformation() +} + +type FieldTransformation_PrimitiveTransformation struct { + PrimitiveTransformation *PrimitiveTransformation `protobuf:"bytes,4,opt,name=primitive_transformation,json=primitiveTransformation,oneof"` +} +type FieldTransformation_InfoTypeTransformations struct { + InfoTypeTransformations *InfoTypeTransformations `protobuf:"bytes,5,opt,name=info_type_transformations,json=infoTypeTransformations,oneof"` +} + +func (*FieldTransformation_PrimitiveTransformation) isFieldTransformation_Transformation() {} +func (*FieldTransformation_InfoTypeTransformations) isFieldTransformation_Transformation() {} + +func (m *FieldTransformation) GetTransformation() isFieldTransformation_Transformation { + if m != nil { + return m.Transformation + } + return nil +} + +func (m *FieldTransformation) GetFields() []*FieldId { + if m != nil { + return m.Fields + } + return nil +} + +func (m *FieldTransformation) GetCondition() *RecordCondition { + if m != nil { + return m.Condition + } + return nil +} + +func (m *FieldTransformation) GetPrimitiveTransformation() *PrimitiveTransformation { + if x, ok := m.GetTransformation().(*FieldTransformation_PrimitiveTransformation); ok { + return x.PrimitiveTransformation + } + return nil +} + +func (m *FieldTransformation) GetInfoTypeTransformations() *InfoTypeTransformations { + if x, ok := m.GetTransformation().(*FieldTransformation_InfoTypeTransformations); ok { + return x.InfoTypeTransformations + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*FieldTransformation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _FieldTransformation_OneofMarshaler, _FieldTransformation_OneofUnmarshaler, _FieldTransformation_OneofSizer, []interface{}{ + (*FieldTransformation_PrimitiveTransformation)(nil), + (*FieldTransformation_InfoTypeTransformations)(nil), + } +} + +func _FieldTransformation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*FieldTransformation) + // transformation + switch x := m.Transformation.(type) { + case *FieldTransformation_PrimitiveTransformation: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.PrimitiveTransformation); err != nil { + return err + } + case *FieldTransformation_InfoTypeTransformations: + b.EncodeVarint(5<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.InfoTypeTransformations); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("FieldTransformation.Transformation has unexpected type %T", x) + } + return nil +} + +func _FieldTransformation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*FieldTransformation) + switch tag { + case 4: // transformation.primitive_transformation + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(PrimitiveTransformation) + err := b.DecodeMessage(msg) + m.Transformation = &FieldTransformation_PrimitiveTransformation{msg} + return true, err + case 5: // transformation.info_type_transformations + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(InfoTypeTransformations) + err := b.DecodeMessage(msg) + m.Transformation = &FieldTransformation_InfoTypeTransformations{msg} + return true, err + default: + return false, nil + } +} + +func _FieldTransformation_OneofSizer(msg proto.Message) (n int) { + m := msg.(*FieldTransformation) + // transformation + switch x := m.Transformation.(type) { + case *FieldTransformation_PrimitiveTransformation: + s := proto.Size(x.PrimitiveTransformation) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *FieldTransformation_InfoTypeTransformations: + s := proto.Size(x.InfoTypeTransformations) + n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// A type of transformation that is applied over structured data such as a +// table. +type RecordTransformations struct { + // Transform the record by applying various field transformations. + FieldTransformations []*FieldTransformation `protobuf:"bytes,1,rep,name=field_transformations,json=fieldTransformations" json:"field_transformations,omitempty"` + // Configuration defining which records get suppressed entirely. Records that + // match any suppression rule are omitted from the output [optional]. + RecordSuppressions []*RecordSuppression `protobuf:"bytes,2,rep,name=record_suppressions,json=recordSuppressions" json:"record_suppressions,omitempty"` +} + +func (m *RecordTransformations) Reset() { *m = RecordTransformations{} } +func (m *RecordTransformations) String() string { return proto.CompactTextString(m) } +func (*RecordTransformations) ProtoMessage() {} +func (*RecordTransformations) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } + +func (m *RecordTransformations) GetFieldTransformations() []*FieldTransformation { + if m != nil { + return m.FieldTransformations + } + return nil +} + +func (m *RecordTransformations) GetRecordSuppressions() []*RecordSuppression { + if m != nil { + return m.RecordSuppressions + } + return nil +} + +// Configuration to suppress records whose suppression conditions evaluate to +// true. +type RecordSuppression struct { + // A condition that when it evaluates to true will result in the record being + // evaluated to be suppressed from the transformed content. + Condition *RecordCondition `protobuf:"bytes,1,opt,name=condition" json:"condition,omitempty"` +} + +func (m *RecordSuppression) Reset() { *m = RecordSuppression{} } +func (m *RecordSuppression) String() string { return proto.CompactTextString(m) } +func (*RecordSuppression) ProtoMessage() {} +func (*RecordSuppression) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } + +func (m *RecordSuppression) GetCondition() *RecordCondition { + if m != nil { + return m.Condition + } + return nil +} + +// A condition for determining whether a transformation should be applied to +// a field. +type RecordCondition struct { + // An expression. + Expressions *RecordCondition_Expressions `protobuf:"bytes,3,opt,name=expressions" json:"expressions,omitempty"` +} + +func (m *RecordCondition) Reset() { *m = RecordCondition{} } +func (m *RecordCondition) String() string { return proto.CompactTextString(m) } +func (*RecordCondition) ProtoMessage() {} +func (*RecordCondition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } + +func (m *RecordCondition) GetExpressions() *RecordCondition_Expressions { + if m != nil { + return m.Expressions + } + return nil +} + +// The field type of `value` and `field` do not need to match to be +// considered equal, but not all comparisons are possible. +// +// A `value` of type: +// +// - `string` can be compared against all other types +// - `boolean` can only be compared against other booleans +// - `integer` can be compared against doubles or a string if the string value +// can be parsed as an integer. +// - `double` can be compared against integers or a string if the string can +// be parsed as a double. +// - `Timestamp` can be compared against strings in RFC 3339 date string +// format. +// - `TimeOfDay` can be compared against timestamps and strings in the format +// of 'HH:mm:ss'. +// +// If we fail to compare do to type mismatch, a warning will be given and +// the condition will evaluate to false. +type RecordCondition_Condition struct { + // Field within the record this condition is evaluated against. [required] + Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` + // Operator used to compare the field or infoType to the value. [required] + Operator RelationalOperator `protobuf:"varint,3,opt,name=operator,enum=google.privacy.dlp.v2.RelationalOperator" json:"operator,omitempty"` + // Value to compare against. [Required, except for `EXISTS` tests.] + Value *Value `protobuf:"bytes,4,opt,name=value" json:"value,omitempty"` +} + +func (m *RecordCondition_Condition) Reset() { *m = RecordCondition_Condition{} } +func (m *RecordCondition_Condition) String() string { return proto.CompactTextString(m) } +func (*RecordCondition_Condition) ProtoMessage() {} +func (*RecordCondition_Condition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57, 0} } + +func (m *RecordCondition_Condition) GetField() *FieldId { + if m != nil { + return m.Field + } + return nil +} + +func (m *RecordCondition_Condition) GetOperator() RelationalOperator { + if m != nil { + return m.Operator + } + return RelationalOperator_RELATIONAL_OPERATOR_UNSPECIFIED +} + +func (m *RecordCondition_Condition) GetValue() *Value { + if m != nil { + return m.Value + } + return nil +} + +// A collection of conditions. +type RecordCondition_Conditions struct { + Conditions []*RecordCondition_Condition `protobuf:"bytes,1,rep,name=conditions" json:"conditions,omitempty"` +} + +func (m *RecordCondition_Conditions) Reset() { *m = RecordCondition_Conditions{} } +func (m *RecordCondition_Conditions) String() string { return proto.CompactTextString(m) } +func (*RecordCondition_Conditions) ProtoMessage() {} +func (*RecordCondition_Conditions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57, 1} } + +func (m *RecordCondition_Conditions) GetConditions() []*RecordCondition_Condition { + if m != nil { + return m.Conditions + } + return nil +} + +// An expression, consisting or an operator and conditions. +type RecordCondition_Expressions struct { + // The operator to apply to the result of conditions. Default and currently + // only supported value is `AND`. + LogicalOperator RecordCondition_Expressions_LogicalOperator `protobuf:"varint,1,opt,name=logical_operator,json=logicalOperator,enum=google.privacy.dlp.v2.RecordCondition_Expressions_LogicalOperator" json:"logical_operator,omitempty"` + // Types that are valid to be assigned to Type: + // *RecordCondition_Expressions_Conditions + Type isRecordCondition_Expressions_Type `protobuf_oneof:"type"` +} + +func (m *RecordCondition_Expressions) Reset() { *m = RecordCondition_Expressions{} } +func (m *RecordCondition_Expressions) String() string { return proto.CompactTextString(m) } +func (*RecordCondition_Expressions) ProtoMessage() {} +func (*RecordCondition_Expressions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57, 2} } + +type isRecordCondition_Expressions_Type interface { + isRecordCondition_Expressions_Type() +} + +type RecordCondition_Expressions_Conditions struct { + Conditions *RecordCondition_Conditions `protobuf:"bytes,3,opt,name=conditions,oneof"` +} + +func (*RecordCondition_Expressions_Conditions) isRecordCondition_Expressions_Type() {} + +func (m *RecordCondition_Expressions) GetType() isRecordCondition_Expressions_Type { + if m != nil { + return m.Type + } + return nil +} + +func (m *RecordCondition_Expressions) GetLogicalOperator() RecordCondition_Expressions_LogicalOperator { + if m != nil { + return m.LogicalOperator + } + return RecordCondition_Expressions_LOGICAL_OPERATOR_UNSPECIFIED +} + +func (m *RecordCondition_Expressions) GetConditions() *RecordCondition_Conditions { + if x, ok := m.GetType().(*RecordCondition_Expressions_Conditions); ok { + return x.Conditions + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*RecordCondition_Expressions) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _RecordCondition_Expressions_OneofMarshaler, _RecordCondition_Expressions_OneofUnmarshaler, _RecordCondition_Expressions_OneofSizer, []interface{}{ + (*RecordCondition_Expressions_Conditions)(nil), + } +} + +func _RecordCondition_Expressions_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*RecordCondition_Expressions) + // type + switch x := m.Type.(type) { + case *RecordCondition_Expressions_Conditions: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Conditions); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("RecordCondition_Expressions.Type has unexpected type %T", x) + } + return nil +} + +func _RecordCondition_Expressions_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*RecordCondition_Expressions) + switch tag { + case 3: // type.conditions + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(RecordCondition_Conditions) + err := b.DecodeMessage(msg) + m.Type = &RecordCondition_Expressions_Conditions{msg} + return true, err + default: + return false, nil + } +} + +func _RecordCondition_Expressions_OneofSizer(msg proto.Message) (n int) { + m := msg.(*RecordCondition_Expressions) + // type + switch x := m.Type.(type) { + case *RecordCondition_Expressions_Conditions: + s := proto.Size(x.Conditions) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Overview of the modifications that occurred. +type TransformationOverview struct { + // Total size in bytes that were transformed in some way. + TransformedBytes int64 `protobuf:"varint,2,opt,name=transformed_bytes,json=transformedBytes" json:"transformed_bytes,omitempty"` + // Transformations applied to the dataset. + TransformationSummaries []*TransformationSummary `protobuf:"bytes,3,rep,name=transformation_summaries,json=transformationSummaries" json:"transformation_summaries,omitempty"` +} + +func (m *TransformationOverview) Reset() { *m = TransformationOverview{} } +func (m *TransformationOverview) String() string { return proto.CompactTextString(m) } +func (*TransformationOverview) ProtoMessage() {} +func (*TransformationOverview) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} } + +func (m *TransformationOverview) GetTransformedBytes() int64 { + if m != nil { + return m.TransformedBytes + } + return 0 +} + +func (m *TransformationOverview) GetTransformationSummaries() []*TransformationSummary { + if m != nil { + return m.TransformationSummaries + } + return nil +} + +// Summary of a single tranformation. +// Only one of 'transformation', 'field_transformation', or 'record_suppress' +// will be set. +type TransformationSummary struct { + // Set if the transformation was limited to a specific info_type. + InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` + // Set if the transformation was limited to a specific FieldId. + Field *FieldId `protobuf:"bytes,2,opt,name=field" json:"field,omitempty"` + // The specific transformation these stats apply to. + Transformation *PrimitiveTransformation `protobuf:"bytes,3,opt,name=transformation" json:"transformation,omitempty"` + // The field transformation that was applied. + // If multiple field transformations are requested for a single field, + // this list will contain all of them; otherwise, only one is supplied. + FieldTransformations []*FieldTransformation `protobuf:"bytes,5,rep,name=field_transformations,json=fieldTransformations" json:"field_transformations,omitempty"` + // The specific suppression option these stats apply to. + RecordSuppress *RecordSuppression `protobuf:"bytes,6,opt,name=record_suppress,json=recordSuppress" json:"record_suppress,omitempty"` + Results []*TransformationSummary_SummaryResult `protobuf:"bytes,4,rep,name=results" json:"results,omitempty"` + // Total size in bytes that were transformed in some way. + TransformedBytes int64 `protobuf:"varint,7,opt,name=transformed_bytes,json=transformedBytes" json:"transformed_bytes,omitempty"` +} + +func (m *TransformationSummary) Reset() { *m = TransformationSummary{} } +func (m *TransformationSummary) String() string { return proto.CompactTextString(m) } +func (*TransformationSummary) ProtoMessage() {} +func (*TransformationSummary) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} } + +func (m *TransformationSummary) GetInfoType() *InfoType { + if m != nil { + return m.InfoType + } + return nil +} + +func (m *TransformationSummary) GetField() *FieldId { + if m != nil { + return m.Field + } + return nil +} + +func (m *TransformationSummary) GetTransformation() *PrimitiveTransformation { + if m != nil { + return m.Transformation + } + return nil +} + +func (m *TransformationSummary) GetFieldTransformations() []*FieldTransformation { + if m != nil { + return m.FieldTransformations + } + return nil +} + +func (m *TransformationSummary) GetRecordSuppress() *RecordSuppression { + if m != nil { + return m.RecordSuppress + } + return nil +} + +func (m *TransformationSummary) GetResults() []*TransformationSummary_SummaryResult { + if m != nil { + return m.Results + } + return nil +} + +func (m *TransformationSummary) GetTransformedBytes() int64 { + if m != nil { + return m.TransformedBytes + } + return 0 +} + +// A collection that informs the user the number of times a particular +// `TransformationResultCode` and error details occurred. +type TransformationSummary_SummaryResult struct { + Count int64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"` + Code TransformationSummary_TransformationResultCode `protobuf:"varint,2,opt,name=code,enum=google.privacy.dlp.v2.TransformationSummary_TransformationResultCode" json:"code,omitempty"` + // A place for warnings or errors to show up if a transformation didn't + // work as expected. + Details string `protobuf:"bytes,3,opt,name=details" json:"details,omitempty"` +} + +func (m *TransformationSummary_SummaryResult) Reset() { *m = TransformationSummary_SummaryResult{} } +func (m *TransformationSummary_SummaryResult) String() string { return proto.CompactTextString(m) } +func (*TransformationSummary_SummaryResult) ProtoMessage() {} +func (*TransformationSummary_SummaryResult) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{59, 0} +} + +func (m *TransformationSummary_SummaryResult) GetCount() int64 { + if m != nil { + return m.Count + } + return 0 +} + +func (m *TransformationSummary_SummaryResult) GetCode() TransformationSummary_TransformationResultCode { + if m != nil { + return m.Code + } + return TransformationSummary_TRANSFORMATION_RESULT_CODE_UNSPECIFIED +} + +func (m *TransformationSummary_SummaryResult) GetDetails() string { + if m != nil { + return m.Details + } + return "" +} + +// Schedule for triggeredJobs. +type Schedule struct { + // Types that are valid to be assigned to Option: + // *Schedule_RecurrencePeriodDuration + Option isSchedule_Option `protobuf_oneof:"option"` +} + +func (m *Schedule) Reset() { *m = Schedule{} } +func (m *Schedule) String() string { return proto.CompactTextString(m) } +func (*Schedule) ProtoMessage() {} +func (*Schedule) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} } + +type isSchedule_Option interface { + isSchedule_Option() +} + +type Schedule_RecurrencePeriodDuration struct { + RecurrencePeriodDuration *google_protobuf2.Duration `protobuf:"bytes,1,opt,name=recurrence_period_duration,json=recurrencePeriodDuration,oneof"` +} + +func (*Schedule_RecurrencePeriodDuration) isSchedule_Option() {} + +func (m *Schedule) GetOption() isSchedule_Option { + if m != nil { + return m.Option + } + return nil +} + +func (m *Schedule) GetRecurrencePeriodDuration() *google_protobuf2.Duration { + if x, ok := m.GetOption().(*Schedule_RecurrencePeriodDuration); ok { + return x.RecurrencePeriodDuration + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*Schedule) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _Schedule_OneofMarshaler, _Schedule_OneofUnmarshaler, _Schedule_OneofSizer, []interface{}{ + (*Schedule_RecurrencePeriodDuration)(nil), + } +} + +func _Schedule_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*Schedule) + // option + switch x := m.Option.(type) { + case *Schedule_RecurrencePeriodDuration: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.RecurrencePeriodDuration); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("Schedule.Option has unexpected type %T", x) + } + return nil +} + +func _Schedule_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*Schedule) + switch tag { + case 1: // option.recurrence_period_duration + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(google_protobuf2.Duration) + err := b.DecodeMessage(msg) + m.Option = &Schedule_RecurrencePeriodDuration{msg} + return true, err + default: + return false, nil + } +} + +func _Schedule_OneofSizer(msg proto.Message) (n int) { + m := msg.(*Schedule) + // option + switch x := m.Option.(type) { + case *Schedule_RecurrencePeriodDuration: + s := proto.Size(x.RecurrencePeriodDuration) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// The inspectTemplate contains a configuration (set of types of sensitive data +// to be detected) to be used anywhere you otherwise would normally specify +// InspectConfig. +type InspectTemplate struct { + // The template name. Output only. + // + // The template will have one of the following formats: + // `projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID` OR + // `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Display name (max 256 chars). + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` + // Short description (max 256 chars). + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + // The creation timestamp of a inspectTemplate, output only field. + CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime" json:"create_time,omitempty"` + // The last update timestamp of a inspectTemplate, output only field. + UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` + // The core content of the template. Configuration of the scanning process. + InspectConfig *InspectConfig `protobuf:"bytes,6,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` +} + +func (m *InspectTemplate) Reset() { *m = InspectTemplate{} } +func (m *InspectTemplate) String() string { return proto.CompactTextString(m) } +func (*InspectTemplate) ProtoMessage() {} +func (*InspectTemplate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} } + +func (m *InspectTemplate) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *InspectTemplate) GetDisplayName() string { + if m != nil { + return m.DisplayName + } + return "" +} + +func (m *InspectTemplate) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *InspectTemplate) GetCreateTime() *google_protobuf1.Timestamp { + if m != nil { + return m.CreateTime + } + return nil +} + +func (m *InspectTemplate) GetUpdateTime() *google_protobuf1.Timestamp { + if m != nil { + return m.UpdateTime + } + return nil +} + +func (m *InspectTemplate) GetInspectConfig() *InspectConfig { + if m != nil { + return m.InspectConfig + } + return nil +} + +// The DeidentifyTemplates contains instructions on how to deidentify content. +type DeidentifyTemplate struct { + // The template name. Output only. + // + // The template will have one of the following formats: + // `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR + // `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Display name (max 256 chars). + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` + // Short description (max 256 chars). + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + // The creation timestamp of a inspectTemplate, output only field. + CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime" json:"create_time,omitempty"` + // The last update timestamp of a inspectTemplate, output only field. + UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` + // ///////////// // The core content of the template // /////////////// + DeidentifyConfig *DeidentifyConfig `protobuf:"bytes,6,opt,name=deidentify_config,json=deidentifyConfig" json:"deidentify_config,omitempty"` +} + +func (m *DeidentifyTemplate) Reset() { *m = DeidentifyTemplate{} } +func (m *DeidentifyTemplate) String() string { return proto.CompactTextString(m) } +func (*DeidentifyTemplate) ProtoMessage() {} +func (*DeidentifyTemplate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} } + +func (m *DeidentifyTemplate) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *DeidentifyTemplate) GetDisplayName() string { + if m != nil { + return m.DisplayName + } + return "" +} + +func (m *DeidentifyTemplate) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *DeidentifyTemplate) GetCreateTime() *google_protobuf1.Timestamp { + if m != nil { + return m.CreateTime + } + return nil +} + +func (m *DeidentifyTemplate) GetUpdateTime() *google_protobuf1.Timestamp { + if m != nil { + return m.UpdateTime + } + return nil +} + +func (m *DeidentifyTemplate) GetDeidentifyConfig() *DeidentifyConfig { + if m != nil { + return m.DeidentifyConfig + } + return nil +} + +// Details information about an error encountered during job execution or +// the results of an unsuccessful activation of the JobTrigger. +// Output only field. +type Error struct { + Details *google_rpc.Status `protobuf:"bytes,1,opt,name=details" json:"details,omitempty"` + // The times the error occurred. + Timestamps []*google_protobuf1.Timestamp `protobuf:"bytes,2,rep,name=timestamps" json:"timestamps,omitempty"` +} + +func (m *Error) Reset() { *m = Error{} } +func (m *Error) String() string { return proto.CompactTextString(m) } +func (*Error) ProtoMessage() {} +func (*Error) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} } + +func (m *Error) GetDetails() *google_rpc.Status { + if m != nil { + return m.Details + } + return nil +} + +func (m *Error) GetTimestamps() []*google_protobuf1.Timestamp { + if m != nil { + return m.Timestamps + } + return nil +} + +// Contains a configuration to make dlp api calls on a repeating basis. +type JobTrigger struct { + // Unique resource name for the triggeredJob, assigned by the service when the + // triggeredJob is created, for example + // `projects/dlp-test-project/triggeredJobs/53234423`. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // Display name (max 100 chars) + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` + // User provided description (max 256 chars) + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + // The configuration details for the specific type of job to run. + // + // Types that are valid to be assigned to Job: + // *JobTrigger_InspectJob + Job isJobTrigger_Job `protobuf_oneof:"job"` + // A list of triggers which will be OR'ed together. Only one in the list + // needs to trigger for a job to be started. The list may contain only + // a single Schedule trigger and must have at least one object. + Triggers []*JobTrigger_Trigger `protobuf:"bytes,5,rep,name=triggers" json:"triggers,omitempty"` + // A stream of errors encountered when the trigger was activated. Repeated + // errors may result in the JobTrigger automaticaly being paused. + // Will return the last 100 errors. Whenever the JobTrigger is modified + // this list will be cleared. Output only field. + Errors []*Error `protobuf:"bytes,6,rep,name=errors" json:"errors,omitempty"` + // The creation timestamp of a triggeredJob, output only field. + CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime" json:"create_time,omitempty"` + // The last update timestamp of a triggeredJob, output only field. + UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,8,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` + // The timestamp of the last time this trigger executed, output only field. + LastRunTime *google_protobuf1.Timestamp `protobuf:"bytes,9,opt,name=last_run_time,json=lastRunTime" json:"last_run_time,omitempty"` + // A status for this trigger. [required] + Status JobTrigger_Status `protobuf:"varint,10,opt,name=status,enum=google.privacy.dlp.v2.JobTrigger_Status" json:"status,omitempty"` +} + +func (m *JobTrigger) Reset() { *m = JobTrigger{} } +func (m *JobTrigger) String() string { return proto.CompactTextString(m) } +func (*JobTrigger) ProtoMessage() {} +func (*JobTrigger) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} } + +type isJobTrigger_Job interface { + isJobTrigger_Job() +} + +type JobTrigger_InspectJob struct { + InspectJob *InspectJobConfig `protobuf:"bytes,4,opt,name=inspect_job,json=inspectJob,oneof"` +} + +func (*JobTrigger_InspectJob) isJobTrigger_Job() {} + +func (m *JobTrigger) GetJob() isJobTrigger_Job { + if m != nil { + return m.Job + } + return nil +} + +func (m *JobTrigger) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *JobTrigger) GetDisplayName() string { + if m != nil { + return m.DisplayName + } + return "" +} + +func (m *JobTrigger) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *JobTrigger) GetInspectJob() *InspectJobConfig { + if x, ok := m.GetJob().(*JobTrigger_InspectJob); ok { + return x.InspectJob + } + return nil +} + +func (m *JobTrigger) GetTriggers() []*JobTrigger_Trigger { + if m != nil { + return m.Triggers + } + return nil +} + +func (m *JobTrigger) GetErrors() []*Error { + if m != nil { + return m.Errors + } + return nil +} + +func (m *JobTrigger) GetCreateTime() *google_protobuf1.Timestamp { + if m != nil { + return m.CreateTime + } + return nil +} + +func (m *JobTrigger) GetUpdateTime() *google_protobuf1.Timestamp { + if m != nil { + return m.UpdateTime + } + return nil +} + +func (m *JobTrigger) GetLastRunTime() *google_protobuf1.Timestamp { + if m != nil { + return m.LastRunTime + } + return nil +} + +func (m *JobTrigger) GetStatus() JobTrigger_Status { + if m != nil { + return m.Status + } + return JobTrigger_STATUS_UNSPECIFIED +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*JobTrigger) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _JobTrigger_OneofMarshaler, _JobTrigger_OneofUnmarshaler, _JobTrigger_OneofSizer, []interface{}{ + (*JobTrigger_InspectJob)(nil), + } +} + +func _JobTrigger_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*JobTrigger) + // job + switch x := m.Job.(type) { + case *JobTrigger_InspectJob: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.InspectJob); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("JobTrigger.Job has unexpected type %T", x) + } + return nil +} + +func _JobTrigger_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*JobTrigger) + switch tag { + case 4: // job.inspect_job + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(InspectJobConfig) + err := b.DecodeMessage(msg) + m.Job = &JobTrigger_InspectJob{msg} + return true, err + default: + return false, nil + } +} + +func _JobTrigger_OneofSizer(msg proto.Message) (n int) { + m := msg.(*JobTrigger) + // job + switch x := m.Job.(type) { + case *JobTrigger_InspectJob: + s := proto.Size(x.InspectJob) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// What event needs to occur for a new job to be started. +type JobTrigger_Trigger struct { + // Types that are valid to be assigned to Trigger: + // *JobTrigger_Trigger_Schedule + Trigger isJobTrigger_Trigger_Trigger `protobuf_oneof:"trigger"` +} + +func (m *JobTrigger_Trigger) Reset() { *m = JobTrigger_Trigger{} } +func (m *JobTrigger_Trigger) String() string { return proto.CompactTextString(m) } +func (*JobTrigger_Trigger) ProtoMessage() {} +func (*JobTrigger_Trigger) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64, 0} } + +type isJobTrigger_Trigger_Trigger interface { + isJobTrigger_Trigger_Trigger() +} + +type JobTrigger_Trigger_Schedule struct { + Schedule *Schedule `protobuf:"bytes,1,opt,name=schedule,oneof"` +} + +func (*JobTrigger_Trigger_Schedule) isJobTrigger_Trigger_Trigger() {} + +func (m *JobTrigger_Trigger) GetTrigger() isJobTrigger_Trigger_Trigger { + if m != nil { + return m.Trigger + } + return nil +} + +func (m *JobTrigger_Trigger) GetSchedule() *Schedule { + if x, ok := m.GetTrigger().(*JobTrigger_Trigger_Schedule); ok { + return x.Schedule + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*JobTrigger_Trigger) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _JobTrigger_Trigger_OneofMarshaler, _JobTrigger_Trigger_OneofUnmarshaler, _JobTrigger_Trigger_OneofSizer, []interface{}{ + (*JobTrigger_Trigger_Schedule)(nil), + } +} + +func _JobTrigger_Trigger_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*JobTrigger_Trigger) + // trigger + switch x := m.Trigger.(type) { + case *JobTrigger_Trigger_Schedule: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Schedule); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("JobTrigger_Trigger.Trigger has unexpected type %T", x) + } + return nil +} + +func _JobTrigger_Trigger_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*JobTrigger_Trigger) + switch tag { + case 1: // trigger.schedule + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Schedule) + err := b.DecodeMessage(msg) + m.Trigger = &JobTrigger_Trigger_Schedule{msg} + return true, err + default: + return false, nil + } +} + +func _JobTrigger_Trigger_OneofSizer(msg proto.Message) (n int) { + m := msg.(*JobTrigger_Trigger) + // trigger + switch x := m.Trigger.(type) { + case *JobTrigger_Trigger_Schedule: + s := proto.Size(x.Schedule) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// A task to execute on the completion of a job. +type Action struct { + // Types that are valid to be assigned to Action: + // *Action_SaveFindings_ + // *Action_PubSub + Action isAction_Action `protobuf_oneof:"action"` +} + +func (m *Action) Reset() { *m = Action{} } +func (m *Action) String() string { return proto.CompactTextString(m) } +func (*Action) ProtoMessage() {} +func (*Action) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} } + +type isAction_Action interface { + isAction_Action() +} + +type Action_SaveFindings_ struct { + SaveFindings *Action_SaveFindings `protobuf:"bytes,1,opt,name=save_findings,json=saveFindings,oneof"` +} +type Action_PubSub struct { + PubSub *Action_PublishToPubSub `protobuf:"bytes,2,opt,name=pub_sub,json=pubSub,oneof"` +} + +func (*Action_SaveFindings_) isAction_Action() {} +func (*Action_PubSub) isAction_Action() {} + +func (m *Action) GetAction() isAction_Action { + if m != nil { + return m.Action + } + return nil +} + +func (m *Action) GetSaveFindings() *Action_SaveFindings { + if x, ok := m.GetAction().(*Action_SaveFindings_); ok { + return x.SaveFindings + } + return nil +} + +func (m *Action) GetPubSub() *Action_PublishToPubSub { + if x, ok := m.GetAction().(*Action_PubSub); ok { + return x.PubSub + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*Action) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _Action_OneofMarshaler, _Action_OneofUnmarshaler, _Action_OneofSizer, []interface{}{ + (*Action_SaveFindings_)(nil), + (*Action_PubSub)(nil), + } +} + +func _Action_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*Action) + // action + switch x := m.Action.(type) { + case *Action_SaveFindings_: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.SaveFindings); err != nil { + return err + } + case *Action_PubSub: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.PubSub); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("Action.Action has unexpected type %T", x) + } + return nil +} + +func _Action_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*Action) + switch tag { + case 1: // action.save_findings + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Action_SaveFindings) + err := b.DecodeMessage(msg) + m.Action = &Action_SaveFindings_{msg} + return true, err + case 2: // action.pub_sub + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Action_PublishToPubSub) + err := b.DecodeMessage(msg) + m.Action = &Action_PubSub{msg} + return true, err + default: + return false, nil + } +} + +func _Action_OneofSizer(msg proto.Message) (n int) { + m := msg.(*Action) + // action + switch x := m.Action.(type) { + case *Action_SaveFindings_: + s := proto.Size(x.SaveFindings) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *Action_PubSub: + s := proto.Size(x.PubSub) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// If set, the detailed findings will be persisted to the specified +// OutputStorageConfig. Compatible with: Inspect +type Action_SaveFindings struct { + OutputConfig *OutputStorageConfig `protobuf:"bytes,1,opt,name=output_config,json=outputConfig" json:"output_config,omitempty"` +} + +func (m *Action_SaveFindings) Reset() { *m = Action_SaveFindings{} } +func (m *Action_SaveFindings) String() string { return proto.CompactTextString(m) } +func (*Action_SaveFindings) ProtoMessage() {} +func (*Action_SaveFindings) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65, 0} } + +func (m *Action_SaveFindings) GetOutputConfig() *OutputStorageConfig { + if m != nil { + return m.OutputConfig + } + return nil +} + +// Publish the results of a DlpJob to a pub sub channel. +// Compatible with: Inpect, Risk +type Action_PublishToPubSub struct { + // Cloud Pub/Sub topic to send notifications to. The topic must have given + // publishing access rights to the DLP API service account executing + // the long running DlpJob sending the notifications. + // Format is projects/{project}/topics/{topic}. + Topic string `protobuf:"bytes,1,opt,name=topic" json:"topic,omitempty"` +} + +func (m *Action_PublishToPubSub) Reset() { *m = Action_PublishToPubSub{} } +func (m *Action_PublishToPubSub) String() string { return proto.CompactTextString(m) } +func (*Action_PublishToPubSub) ProtoMessage() {} +func (*Action_PublishToPubSub) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65, 1} } + +func (m *Action_PublishToPubSub) GetTopic() string { + if m != nil { + return m.Topic + } + return "" +} + +// Request message for CreateInspectTemplate. +type CreateInspectTemplateRequest struct { + // The parent resource name, for example projects/my-project-id or + // organizations/my-org-id. + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` + // The InspectTemplate to create. + InspectTemplate *InspectTemplate `protobuf:"bytes,2,opt,name=inspect_template,json=inspectTemplate" json:"inspect_template,omitempty"` + // The template id can contain uppercase and lowercase letters, + // numbers, and hyphens; that is, it must match the regular + // expression: `[a-zA-Z\\d-]+`. The maximum length is 100 + // characters. Can be empty to allow the system to generate one. + TemplateId string `protobuf:"bytes,3,opt,name=template_id,json=templateId" json:"template_id,omitempty"` +} + +func (m *CreateInspectTemplateRequest) Reset() { *m = CreateInspectTemplateRequest{} } +func (m *CreateInspectTemplateRequest) String() string { return proto.CompactTextString(m) } +func (*CreateInspectTemplateRequest) ProtoMessage() {} +func (*CreateInspectTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} } + +func (m *CreateInspectTemplateRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *CreateInspectTemplateRequest) GetInspectTemplate() *InspectTemplate { + if m != nil { + return m.InspectTemplate + } + return nil +} + +func (m *CreateInspectTemplateRequest) GetTemplateId() string { + if m != nil { + return m.TemplateId + } + return "" +} + +// Request message for UpdateInspectTemplate. +type UpdateInspectTemplateRequest struct { + // Resource name of organization and inspectTemplate to be updated, for + // example `organizations/433245324/inspectTemplates/432452342` or + // projects/project-id/inspectTemplates/432452342. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // New InspectTemplate value. + InspectTemplate *InspectTemplate `protobuf:"bytes,2,opt,name=inspect_template,json=inspectTemplate" json:"inspect_template,omitempty"` + // Mask to control which fields get updated. + UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` +} + +func (m *UpdateInspectTemplateRequest) Reset() { *m = UpdateInspectTemplateRequest{} } +func (m *UpdateInspectTemplateRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateInspectTemplateRequest) ProtoMessage() {} +func (*UpdateInspectTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} } + +func (m *UpdateInspectTemplateRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *UpdateInspectTemplateRequest) GetInspectTemplate() *InspectTemplate { + if m != nil { + return m.InspectTemplate + } + return nil +} + +func (m *UpdateInspectTemplateRequest) GetUpdateMask() *google_protobuf4.FieldMask { + if m != nil { + return m.UpdateMask + } + return nil +} + +// Request message for GetInspectTemplate. +type GetInspectTemplateRequest struct { + // Resource name of the organization and inspectTemplate to be read, for + // example `organizations/433245324/inspectTemplates/432452342` or + // projects/project-id/inspectTemplates/432452342. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *GetInspectTemplateRequest) Reset() { *m = GetInspectTemplateRequest{} } +func (m *GetInspectTemplateRequest) String() string { return proto.CompactTextString(m) } +func (*GetInspectTemplateRequest) ProtoMessage() {} +func (*GetInspectTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} } + +func (m *GetInspectTemplateRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// Request message for ListInspectTemplates. +type ListInspectTemplatesRequest struct { + // The parent resource name, for example projects/my-project-id or + // organizations/my-org-id. + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` + // Optional page token to continue retrieval. Comes from previous call + // to `ListInspectTemplates`. + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` + // Optional size of the page, can be limited by server. If zero server returns + // a page of max size 100. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` +} + +func (m *ListInspectTemplatesRequest) Reset() { *m = ListInspectTemplatesRequest{} } +func (m *ListInspectTemplatesRequest) String() string { return proto.CompactTextString(m) } +func (*ListInspectTemplatesRequest) ProtoMessage() {} +func (*ListInspectTemplatesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} } + +func (m *ListInspectTemplatesRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *ListInspectTemplatesRequest) GetPageToken() string { + if m != nil { + return m.PageToken + } + return "" +} + +func (m *ListInspectTemplatesRequest) GetPageSize() int32 { + if m != nil { + return m.PageSize + } + return 0 +} + +// Response message for ListInspectTemplates. +type ListInspectTemplatesResponse struct { + // List of inspectTemplates, up to page_size in ListInspectTemplatesRequest. + InspectTemplates []*InspectTemplate `protobuf:"bytes,1,rep,name=inspect_templates,json=inspectTemplates" json:"inspect_templates,omitempty"` + // If the next page is available then the next page token to be used + // in following ListInspectTemplates request. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` +} + +func (m *ListInspectTemplatesResponse) Reset() { *m = ListInspectTemplatesResponse{} } +func (m *ListInspectTemplatesResponse) String() string { return proto.CompactTextString(m) } +func (*ListInspectTemplatesResponse) ProtoMessage() {} +func (*ListInspectTemplatesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} } + +func (m *ListInspectTemplatesResponse) GetInspectTemplates() []*InspectTemplate { + if m != nil { + return m.InspectTemplates + } + return nil +} + +func (m *ListInspectTemplatesResponse) GetNextPageToken() string { + if m != nil { + return m.NextPageToken + } + return "" +} + +// Request message for DeleteInspectTemplate. +type DeleteInspectTemplateRequest struct { + // Resource name of the organization and inspectTemplate to be deleted, for + // example `organizations/433245324/inspectTemplates/432452342` or + // projects/project-id/inspectTemplates/432452342. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *DeleteInspectTemplateRequest) Reset() { *m = DeleteInspectTemplateRequest{} } +func (m *DeleteInspectTemplateRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteInspectTemplateRequest) ProtoMessage() {} +func (*DeleteInspectTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} } + +func (m *DeleteInspectTemplateRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// Request message for CreateJobTrigger. +type CreateJobTriggerRequest struct { + // The parent resource name, for example projects/my-project-id. + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` + // The JobTrigger to create. + JobTrigger *JobTrigger `protobuf:"bytes,2,opt,name=job_trigger,json=jobTrigger" json:"job_trigger,omitempty"` + // The trigger id can contain uppercase and lowercase letters, + // numbers, and hyphens; that is, it must match the regular + // expression: `[a-zA-Z\\d-]+`. The maximum length is 100 + // characters. Can be empty to allow the system to generate one. + TriggerId string `protobuf:"bytes,3,opt,name=trigger_id,json=triggerId" json:"trigger_id,omitempty"` +} + +func (m *CreateJobTriggerRequest) Reset() { *m = CreateJobTriggerRequest{} } +func (m *CreateJobTriggerRequest) String() string { return proto.CompactTextString(m) } +func (*CreateJobTriggerRequest) ProtoMessage() {} +func (*CreateJobTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} } + +func (m *CreateJobTriggerRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *CreateJobTriggerRequest) GetJobTrigger() *JobTrigger { + if m != nil { + return m.JobTrigger + } + return nil +} + +func (m *CreateJobTriggerRequest) GetTriggerId() string { + if m != nil { + return m.TriggerId + } + return "" +} + +// Request message for UpdateJobTrigger. +type UpdateJobTriggerRequest struct { + // Resource name of the project and the triggeredJob, for example + // `projects/dlp-test-project/jobTriggers/53234423`. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // New JobTrigger value. + JobTrigger *JobTrigger `protobuf:"bytes,2,opt,name=job_trigger,json=jobTrigger" json:"job_trigger,omitempty"` + // Mask to control which fields get updated. + UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` +} + +func (m *UpdateJobTriggerRequest) Reset() { *m = UpdateJobTriggerRequest{} } +func (m *UpdateJobTriggerRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateJobTriggerRequest) ProtoMessage() {} +func (*UpdateJobTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{73} } + +func (m *UpdateJobTriggerRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *UpdateJobTriggerRequest) GetJobTrigger() *JobTrigger { + if m != nil { + return m.JobTrigger + } + return nil +} + +func (m *UpdateJobTriggerRequest) GetUpdateMask() *google_protobuf4.FieldMask { + if m != nil { + return m.UpdateMask + } + return nil +} + +// Request message for GetJobTrigger. +type GetJobTriggerRequest struct { + // Resource name of the project and the triggeredJob, for example + // `projects/dlp-test-project/jobTriggers/53234423`. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *GetJobTriggerRequest) Reset() { *m = GetJobTriggerRequest{} } +func (m *GetJobTriggerRequest) String() string { return proto.CompactTextString(m) } +func (*GetJobTriggerRequest) ProtoMessage() {} +func (*GetJobTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{74} } + +func (m *GetJobTriggerRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// Request message for CreateDlpJobRequest. Used to initiate long running +// jobs such as calculating risk metrics or inspecting Google Cloud +// Storage. +type CreateDlpJobRequest struct { + // The parent resource name, for example projects/my-project-id. + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` + // The configuration details for the specific type of job to run. + // + // Types that are valid to be assigned to Job: + // *CreateDlpJobRequest_InspectJob + // *CreateDlpJobRequest_RiskJob + Job isCreateDlpJobRequest_Job `protobuf_oneof:"job"` + // The job id can contain uppercase and lowercase letters, + // numbers, and hyphens; that is, it must match the regular + // expression: `[a-zA-Z\\d-]+`. The maximum length is 100 + // characters. Can be empty to allow the system to generate one. + JobId string `protobuf:"bytes,4,opt,name=job_id,json=jobId" json:"job_id,omitempty"` +} + +func (m *CreateDlpJobRequest) Reset() { *m = CreateDlpJobRequest{} } +func (m *CreateDlpJobRequest) String() string { return proto.CompactTextString(m) } +func (*CreateDlpJobRequest) ProtoMessage() {} +func (*CreateDlpJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{75} } + +type isCreateDlpJobRequest_Job interface { + isCreateDlpJobRequest_Job() +} + +type CreateDlpJobRequest_InspectJob struct { + InspectJob *InspectJobConfig `protobuf:"bytes,2,opt,name=inspect_job,json=inspectJob,oneof"` +} +type CreateDlpJobRequest_RiskJob struct { + RiskJob *RiskAnalysisJobConfig `protobuf:"bytes,3,opt,name=risk_job,json=riskJob,oneof"` +} + +func (*CreateDlpJobRequest_InspectJob) isCreateDlpJobRequest_Job() {} +func (*CreateDlpJobRequest_RiskJob) isCreateDlpJobRequest_Job() {} + +func (m *CreateDlpJobRequest) GetJob() isCreateDlpJobRequest_Job { + if m != nil { + return m.Job + } + return nil +} + +func (m *CreateDlpJobRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *CreateDlpJobRequest) GetInspectJob() *InspectJobConfig { + if x, ok := m.GetJob().(*CreateDlpJobRequest_InspectJob); ok { + return x.InspectJob + } + return nil +} + +func (m *CreateDlpJobRequest) GetRiskJob() *RiskAnalysisJobConfig { + if x, ok := m.GetJob().(*CreateDlpJobRequest_RiskJob); ok { + return x.RiskJob + } + return nil +} + +func (m *CreateDlpJobRequest) GetJobId() string { + if m != nil { + return m.JobId + } + return "" +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*CreateDlpJobRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _CreateDlpJobRequest_OneofMarshaler, _CreateDlpJobRequest_OneofUnmarshaler, _CreateDlpJobRequest_OneofSizer, []interface{}{ + (*CreateDlpJobRequest_InspectJob)(nil), + (*CreateDlpJobRequest_RiskJob)(nil), + } +} + +func _CreateDlpJobRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*CreateDlpJobRequest) + // job + switch x := m.Job.(type) { + case *CreateDlpJobRequest_InspectJob: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.InspectJob); err != nil { + return err + } + case *CreateDlpJobRequest_RiskJob: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.RiskJob); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("CreateDlpJobRequest.Job has unexpected type %T", x) + } + return nil +} + +func _CreateDlpJobRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*CreateDlpJobRequest) + switch tag { + case 2: // job.inspect_job + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(InspectJobConfig) + err := b.DecodeMessage(msg) + m.Job = &CreateDlpJobRequest_InspectJob{msg} + return true, err + case 3: // job.risk_job + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(RiskAnalysisJobConfig) + err := b.DecodeMessage(msg) + m.Job = &CreateDlpJobRequest_RiskJob{msg} + return true, err + default: + return false, nil + } +} + +func _CreateDlpJobRequest_OneofSizer(msg proto.Message) (n int) { + m := msg.(*CreateDlpJobRequest) + // job + switch x := m.Job.(type) { + case *CreateDlpJobRequest_InspectJob: + s := proto.Size(x.InspectJob) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *CreateDlpJobRequest_RiskJob: + s := proto.Size(x.RiskJob) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Request message for ListJobTriggers. +type ListJobTriggersRequest struct { + // The parent resource name, for example projects/my-project-id. + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` + // Optional page token to continue retrieval. Comes from previous call + // to ListJobTriggers. `order_by` and `filter` should not change for + // subsequent calls, but can be omitted if token is specified. + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` + // Optional size of the page, can be limited by a server. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` + // Optional comma separated list of triggeredJob fields to order by, + // followed by 'asc/desc' postfix, i.e. + // `"create_time asc,name desc,schedule_mode asc"`. This list is + // case-insensitive. + // + // Example: `"name asc,schedule_mode desc, status desc"` + // + // Supported filters keys and values are: + // + // - `create_time`: corresponds to time the triggeredJob was created. + // - `update_time`: corresponds to time the triggeredJob was last updated. + // - `name`: corresponds to JobTrigger's display name. + // - `status`: corresponds to the triggeredJob status. + OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy" json:"order_by,omitempty"` +} + +func (m *ListJobTriggersRequest) Reset() { *m = ListJobTriggersRequest{} } +func (m *ListJobTriggersRequest) String() string { return proto.CompactTextString(m) } +func (*ListJobTriggersRequest) ProtoMessage() {} +func (*ListJobTriggersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} } + +func (m *ListJobTriggersRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *ListJobTriggersRequest) GetPageToken() string { + if m != nil { + return m.PageToken + } + return "" +} + +func (m *ListJobTriggersRequest) GetPageSize() int32 { + if m != nil { + return m.PageSize + } + return 0 +} + +func (m *ListJobTriggersRequest) GetOrderBy() string { + if m != nil { + return m.OrderBy + } + return "" +} + +// Response message for ListJobTriggers. +type ListJobTriggersResponse struct { + // List of triggeredJobs, up to page_size in ListJobTriggersRequest. + JobTriggers []*JobTrigger `protobuf:"bytes,1,rep,name=job_triggers,json=jobTriggers" json:"job_triggers,omitempty"` + // If the next page is available then the next page token to be used + // in following ListJobTriggers request. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` +} + +func (m *ListJobTriggersResponse) Reset() { *m = ListJobTriggersResponse{} } +func (m *ListJobTriggersResponse) String() string { return proto.CompactTextString(m) } +func (*ListJobTriggersResponse) ProtoMessage() {} +func (*ListJobTriggersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{77} } + +func (m *ListJobTriggersResponse) GetJobTriggers() []*JobTrigger { + if m != nil { + return m.JobTriggers + } + return nil +} + +func (m *ListJobTriggersResponse) GetNextPageToken() string { + if m != nil { + return m.NextPageToken + } + return "" +} + +// Request message for DeleteJobTrigger. +type DeleteJobTriggerRequest struct { + // Resource name of the project and the triggeredJob, for example + // `projects/dlp-test-project/jobTriggers/53234423`. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *DeleteJobTriggerRequest) Reset() { *m = DeleteJobTriggerRequest{} } +func (m *DeleteJobTriggerRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteJobTriggerRequest) ProtoMessage() {} +func (*DeleteJobTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{78} } + +func (m *DeleteJobTriggerRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +type InspectJobConfig struct { + // The data to scan. + StorageConfig *StorageConfig `protobuf:"bytes,1,opt,name=storage_config,json=storageConfig" json:"storage_config,omitempty"` + // How and what to scan for. + InspectConfig *InspectConfig `protobuf:"bytes,2,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` + // If provided, will be used as the default for all values in InspectConfig. + // `inspect_config` will be merged into the values persisted as part of the + // template. + InspectTemplateName string `protobuf:"bytes,3,opt,name=inspect_template_name,json=inspectTemplateName" json:"inspect_template_name,omitempty"` + // Actions to execute at the completion of the job. Are executed in the order + // provided. + Actions []*Action `protobuf:"bytes,4,rep,name=actions" json:"actions,omitempty"` +} + +func (m *InspectJobConfig) Reset() { *m = InspectJobConfig{} } +func (m *InspectJobConfig) String() string { return proto.CompactTextString(m) } +func (*InspectJobConfig) ProtoMessage() {} +func (*InspectJobConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} } + +func (m *InspectJobConfig) GetStorageConfig() *StorageConfig { + if m != nil { + return m.StorageConfig + } + return nil +} + +func (m *InspectJobConfig) GetInspectConfig() *InspectConfig { + if m != nil { + return m.InspectConfig + } + return nil +} + +func (m *InspectJobConfig) GetInspectTemplateName() string { + if m != nil { + return m.InspectTemplateName + } + return "" +} + +func (m *InspectJobConfig) GetActions() []*Action { + if m != nil { + return m.Actions + } + return nil +} + +// Combines all of the information about a DLP job. +type DlpJob struct { + // The server-assigned name. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // The type of job. + Type DlpJobType `protobuf:"varint,2,opt,name=type,enum=google.privacy.dlp.v2.DlpJobType" json:"type,omitempty"` + // State of a job. + State DlpJob_JobState `protobuf:"varint,3,opt,name=state,enum=google.privacy.dlp.v2.DlpJob_JobState" json:"state,omitempty"` + // Types that are valid to be assigned to Details: + // *DlpJob_RiskDetails + // *DlpJob_InspectDetails + Details isDlpJob_Details `protobuf_oneof:"details"` + // Time when the job was created. + CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime" json:"create_time,omitempty"` + // Time when the job started. + StartTime *google_protobuf1.Timestamp `protobuf:"bytes,7,opt,name=start_time,json=startTime" json:"start_time,omitempty"` + // Time when the job finished. + EndTime *google_protobuf1.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime" json:"end_time,omitempty"` + // If created by a job trigger, the resource name of the trigger that + // instantiated the job. + JobTriggerName string `protobuf:"bytes,10,opt,name=job_trigger_name,json=jobTriggerName" json:"job_trigger_name,omitempty"` + // A stream of errors encountered running the job. + Errors []*Error `protobuf:"bytes,11,rep,name=errors" json:"errors,omitempty"` +} + +func (m *DlpJob) Reset() { *m = DlpJob{} } +func (m *DlpJob) String() string { return proto.CompactTextString(m) } +func (*DlpJob) ProtoMessage() {} +func (*DlpJob) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{80} } + +type isDlpJob_Details interface { + isDlpJob_Details() +} + +type DlpJob_RiskDetails struct { + RiskDetails *AnalyzeDataSourceRiskDetails `protobuf:"bytes,4,opt,name=risk_details,json=riskDetails,oneof"` +} +type DlpJob_InspectDetails struct { + InspectDetails *InspectDataSourceDetails `protobuf:"bytes,5,opt,name=inspect_details,json=inspectDetails,oneof"` +} + +func (*DlpJob_RiskDetails) isDlpJob_Details() {} +func (*DlpJob_InspectDetails) isDlpJob_Details() {} + +func (m *DlpJob) GetDetails() isDlpJob_Details { + if m != nil { + return m.Details + } + return nil +} + +func (m *DlpJob) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *DlpJob) GetType() DlpJobType { + if m != nil { + return m.Type + } + return DlpJobType_DLP_JOB_TYPE_UNSPECIFIED +} + +func (m *DlpJob) GetState() DlpJob_JobState { + if m != nil { + return m.State + } + return DlpJob_JOB_STATE_UNSPECIFIED +} + +func (m *DlpJob) GetRiskDetails() *AnalyzeDataSourceRiskDetails { + if x, ok := m.GetDetails().(*DlpJob_RiskDetails); ok { + return x.RiskDetails + } + return nil +} + +func (m *DlpJob) GetInspectDetails() *InspectDataSourceDetails { + if x, ok := m.GetDetails().(*DlpJob_InspectDetails); ok { + return x.InspectDetails + } + return nil +} + +func (m *DlpJob) GetCreateTime() *google_protobuf1.Timestamp { + if m != nil { + return m.CreateTime + } + return nil +} + +func (m *DlpJob) GetStartTime() *google_protobuf1.Timestamp { + if m != nil { + return m.StartTime + } + return nil +} + +func (m *DlpJob) GetEndTime() *google_protobuf1.Timestamp { + if m != nil { + return m.EndTime + } + return nil +} + +func (m *DlpJob) GetJobTriggerName() string { + if m != nil { + return m.JobTriggerName + } + return "" +} + +func (m *DlpJob) GetErrors() []*Error { + if m != nil { + return m.Errors + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*DlpJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _DlpJob_OneofMarshaler, _DlpJob_OneofUnmarshaler, _DlpJob_OneofSizer, []interface{}{ + (*DlpJob_RiskDetails)(nil), + (*DlpJob_InspectDetails)(nil), + } +} + +func _DlpJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*DlpJob) + // details + switch x := m.Details.(type) { + case *DlpJob_RiskDetails: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.RiskDetails); err != nil { + return err + } + case *DlpJob_InspectDetails: + b.EncodeVarint(5<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.InspectDetails); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("DlpJob.Details has unexpected type %T", x) + } + return nil +} + +func _DlpJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*DlpJob) + switch tag { + case 4: // details.risk_details + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(AnalyzeDataSourceRiskDetails) + err := b.DecodeMessage(msg) + m.Details = &DlpJob_RiskDetails{msg} + return true, err + case 5: // details.inspect_details + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(InspectDataSourceDetails) + err := b.DecodeMessage(msg) + m.Details = &DlpJob_InspectDetails{msg} + return true, err + default: + return false, nil + } +} + +func _DlpJob_OneofSizer(msg proto.Message) (n int) { + m := msg.(*DlpJob) + // details + switch x := m.Details.(type) { + case *DlpJob_RiskDetails: + s := proto.Size(x.RiskDetails) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *DlpJob_InspectDetails: + s := proto.Size(x.InspectDetails) + n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// The request message for [DlpJobs.GetDlpJob][]. +type GetDlpJobRequest struct { + // The name of the DlpJob resource. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *GetDlpJobRequest) Reset() { *m = GetDlpJobRequest{} } +func (m *GetDlpJobRequest) String() string { return proto.CompactTextString(m) } +func (*GetDlpJobRequest) ProtoMessage() {} +func (*GetDlpJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{81} } + +func (m *GetDlpJobRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// The request message for listing DLP jobs. +type ListDlpJobsRequest struct { + // The parent resource name, for example projects/my-project-id. + Parent string `protobuf:"bytes,4,opt,name=parent" json:"parent,omitempty"` + // Optional. Allows filtering. + // + // Supported syntax: + // + // * Filter expressions are made up of one or more restrictions. + // * Restrictions can be combined by `AND` or `OR` logical operators. A + // sequence of restrictions implicitly uses `AND`. + // * A restriction has the form of `<field> <operator> <value>`. + // * Supported fields/values for inspect jobs: + // - `state` - PENDING|RUNNING|CANCELED|FINISHED|FAILED + // - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY + // - `trigger_name` - The resource name of the trigger that created job. + // * Supported fields for risk analysis jobs: + // - `state` - RUNNING|CANCELED|FINISHED|FAILED + // * The operator must be `=` or `!=`. + // + // Examples: + // + // * inspected_storage = cloud_storage AND state = done + // * inspected_storage = cloud_storage OR inspected_storage = bigquery + // * inspected_storage = cloud_storage AND (state = done OR state = canceled) + // + // The length of this field should be no more than 500 characters. + Filter string `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"` + // The standard list page size. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` + // The standard list page token. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` + // The type of job. Defaults to `DlpJobType.INSPECT` + Type DlpJobType `protobuf:"varint,5,opt,name=type,enum=google.privacy.dlp.v2.DlpJobType" json:"type,omitempty"` +} + +func (m *ListDlpJobsRequest) Reset() { *m = ListDlpJobsRequest{} } +func (m *ListDlpJobsRequest) String() string { return proto.CompactTextString(m) } +func (*ListDlpJobsRequest) ProtoMessage() {} +func (*ListDlpJobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{82} } + +func (m *ListDlpJobsRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *ListDlpJobsRequest) GetFilter() string { + if m != nil { + return m.Filter + } + return "" +} + +func (m *ListDlpJobsRequest) GetPageSize() int32 { + if m != nil { + return m.PageSize + } + return 0 +} + +func (m *ListDlpJobsRequest) GetPageToken() string { + if m != nil { + return m.PageToken + } + return "" +} + +func (m *ListDlpJobsRequest) GetType() DlpJobType { + if m != nil { + return m.Type + } + return DlpJobType_DLP_JOB_TYPE_UNSPECIFIED +} + +// The response message for listing DLP jobs. +type ListDlpJobsResponse struct { + // A list of DlpJobs that matches the specified filter in the request. + Jobs []*DlpJob `protobuf:"bytes,1,rep,name=jobs" json:"jobs,omitempty"` + // The standard List next-page token. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` +} + +func (m *ListDlpJobsResponse) Reset() { *m = ListDlpJobsResponse{} } +func (m *ListDlpJobsResponse) String() string { return proto.CompactTextString(m) } +func (*ListDlpJobsResponse) ProtoMessage() {} +func (*ListDlpJobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{83} } + +func (m *ListDlpJobsResponse) GetJobs() []*DlpJob { + if m != nil { + return m.Jobs + } + return nil +} + +func (m *ListDlpJobsResponse) GetNextPageToken() string { + if m != nil { + return m.NextPageToken + } + return "" +} + +// The request message for canceling a DLP job. +type CancelDlpJobRequest struct { + // The name of the DlpJob resource to be cancelled. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *CancelDlpJobRequest) Reset() { *m = CancelDlpJobRequest{} } +func (m *CancelDlpJobRequest) String() string { return proto.CompactTextString(m) } +func (*CancelDlpJobRequest) ProtoMessage() {} +func (*CancelDlpJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{84} } + +func (m *CancelDlpJobRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// The request message for deleting a DLP job. +type DeleteDlpJobRequest struct { + // The name of the DlpJob resource to be deleted. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *DeleteDlpJobRequest) Reset() { *m = DeleteDlpJobRequest{} } +func (m *DeleteDlpJobRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteDlpJobRequest) ProtoMessage() {} +func (*DeleteDlpJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{85} } + +func (m *DeleteDlpJobRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// Request message for CreateDeidentifyTemplate. +type CreateDeidentifyTemplateRequest struct { + // The parent resource name, for example projects/my-project-id or + // organizations/my-org-id. + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` + // The DeidentifyTemplate to create. + DeidentifyTemplate *DeidentifyTemplate `protobuf:"bytes,2,opt,name=deidentify_template,json=deidentifyTemplate" json:"deidentify_template,omitempty"` + // The template id can contain uppercase and lowercase letters, + // numbers, and hyphens; that is, it must match the regular + // expression: `[a-zA-Z\\d-]+`. The maximum length is 100 + // characters. Can be empty to allow the system to generate one. + TemplateId string `protobuf:"bytes,3,opt,name=template_id,json=templateId" json:"template_id,omitempty"` +} + +func (m *CreateDeidentifyTemplateRequest) Reset() { *m = CreateDeidentifyTemplateRequest{} } +func (m *CreateDeidentifyTemplateRequest) String() string { return proto.CompactTextString(m) } +func (*CreateDeidentifyTemplateRequest) ProtoMessage() {} +func (*CreateDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{86} +} + +func (m *CreateDeidentifyTemplateRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *CreateDeidentifyTemplateRequest) GetDeidentifyTemplate() *DeidentifyTemplate { + if m != nil { + return m.DeidentifyTemplate + } + return nil +} + +func (m *CreateDeidentifyTemplateRequest) GetTemplateId() string { + if m != nil { + return m.TemplateId + } + return "" +} + +// Request message for UpdateDeidentifyTemplate. +type UpdateDeidentifyTemplateRequest struct { + // Resource name of organization and deidentify template to be updated, for + // example `organizations/433245324/deidentifyTemplates/432452342` or + // projects/project-id/deidentifyTemplates/432452342. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // New DeidentifyTemplate value. + DeidentifyTemplate *DeidentifyTemplate `protobuf:"bytes,2,opt,name=deidentify_template,json=deidentifyTemplate" json:"deidentify_template,omitempty"` + // Mask to control which fields get updated. + UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` +} + +func (m *UpdateDeidentifyTemplateRequest) Reset() { *m = UpdateDeidentifyTemplateRequest{} } +func (m *UpdateDeidentifyTemplateRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateDeidentifyTemplateRequest) ProtoMessage() {} +func (*UpdateDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{87} +} + +func (m *UpdateDeidentifyTemplateRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *UpdateDeidentifyTemplateRequest) GetDeidentifyTemplate() *DeidentifyTemplate { + if m != nil { + return m.DeidentifyTemplate + } + return nil +} + +func (m *UpdateDeidentifyTemplateRequest) GetUpdateMask() *google_protobuf4.FieldMask { + if m != nil { + return m.UpdateMask + } + return nil +} + +// Request message for GetDeidentifyTemplate. +type GetDeidentifyTemplateRequest struct { + // Resource name of the organization and deidentify template to be read, for + // example `organizations/433245324/deidentifyTemplates/432452342` or + // projects/project-id/deidentifyTemplates/432452342. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *GetDeidentifyTemplateRequest) Reset() { *m = GetDeidentifyTemplateRequest{} } +func (m *GetDeidentifyTemplateRequest) String() string { return proto.CompactTextString(m) } +func (*GetDeidentifyTemplateRequest) ProtoMessage() {} +func (*GetDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{88} } + +func (m *GetDeidentifyTemplateRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// Request message for ListDeidentifyTemplates. +type ListDeidentifyTemplatesRequest struct { + // The parent resource name, for example projects/my-project-id or + // organizations/my-org-id. + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` + // Optional page token to continue retrieval. Comes from previous call + // to `ListDeidentifyTemplates`. + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` + // Optional size of the page, can be limited by server. If zero server returns + // a page of max size 100. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` +} + +func (m *ListDeidentifyTemplatesRequest) Reset() { *m = ListDeidentifyTemplatesRequest{} } +func (m *ListDeidentifyTemplatesRequest) String() string { return proto.CompactTextString(m) } +func (*ListDeidentifyTemplatesRequest) ProtoMessage() {} +func (*ListDeidentifyTemplatesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{89} } + +func (m *ListDeidentifyTemplatesRequest) GetParent() string { + if m != nil { + return m.Parent + } + return "" +} + +func (m *ListDeidentifyTemplatesRequest) GetPageToken() string { + if m != nil { + return m.PageToken + } + return "" +} + +func (m *ListDeidentifyTemplatesRequest) GetPageSize() int32 { + if m != nil { + return m.PageSize + } + return 0 +} + +// Response message for ListDeidentifyTemplates. +type ListDeidentifyTemplatesResponse struct { + // List of deidentify templates, up to page_size in + // ListDeidentifyTemplatesRequest. + DeidentifyTemplates []*DeidentifyTemplate `protobuf:"bytes,1,rep,name=deidentify_templates,json=deidentifyTemplates" json:"deidentify_templates,omitempty"` + // If the next page is available then the next page token to be used + // in following ListDeidentifyTemplates request. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` +} + +func (m *ListDeidentifyTemplatesResponse) Reset() { *m = ListDeidentifyTemplatesResponse{} } +func (m *ListDeidentifyTemplatesResponse) String() string { return proto.CompactTextString(m) } +func (*ListDeidentifyTemplatesResponse) ProtoMessage() {} +func (*ListDeidentifyTemplatesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{90} +} + +func (m *ListDeidentifyTemplatesResponse) GetDeidentifyTemplates() []*DeidentifyTemplate { + if m != nil { + return m.DeidentifyTemplates + } + return nil +} + +func (m *ListDeidentifyTemplatesResponse) GetNextPageToken() string { + if m != nil { + return m.NextPageToken + } + return "" +} + +// Request message for DeleteDeidentifyTemplate. +type DeleteDeidentifyTemplateRequest struct { + // Resource name of the organization and deidentify template to be deleted, + // for example `organizations/433245324/deidentifyTemplates/432452342` or + // projects/project-id/deidentifyTemplates/432452342. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *DeleteDeidentifyTemplateRequest) Reset() { *m = DeleteDeidentifyTemplateRequest{} } +func (m *DeleteDeidentifyTemplateRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteDeidentifyTemplateRequest) ProtoMessage() {} +func (*DeleteDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{91} +} + +func (m *DeleteDeidentifyTemplateRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func init() { + proto.RegisterType((*InspectConfig)(nil), "google.privacy.dlp.v2.InspectConfig") + proto.RegisterType((*InspectConfig_FindingLimits)(nil), "google.privacy.dlp.v2.InspectConfig.FindingLimits") + proto.RegisterType((*InspectConfig_FindingLimits_InfoTypeLimit)(nil), "google.privacy.dlp.v2.InspectConfig.FindingLimits.InfoTypeLimit") + proto.RegisterType((*ByteContentItem)(nil), "google.privacy.dlp.v2.ByteContentItem") + proto.RegisterType((*ContentItem)(nil), "google.privacy.dlp.v2.ContentItem") + proto.RegisterType((*Table)(nil), "google.privacy.dlp.v2.Table") + proto.RegisterType((*Table_Row)(nil), "google.privacy.dlp.v2.Table.Row") + proto.RegisterType((*InspectResult)(nil), "google.privacy.dlp.v2.InspectResult") + proto.RegisterType((*Finding)(nil), "google.privacy.dlp.v2.Finding") + proto.RegisterType((*Location)(nil), "google.privacy.dlp.v2.Location") + proto.RegisterType((*ContentLocation)(nil), "google.privacy.dlp.v2.ContentLocation") + proto.RegisterType((*DocumentLocation)(nil), "google.privacy.dlp.v2.DocumentLocation") + proto.RegisterType((*RecordLocation)(nil), "google.privacy.dlp.v2.RecordLocation") + proto.RegisterType((*TableLocation)(nil), "google.privacy.dlp.v2.TableLocation") + proto.RegisterType((*Range)(nil), "google.privacy.dlp.v2.Range") + proto.RegisterType((*ImageLocation)(nil), "google.privacy.dlp.v2.ImageLocation") + proto.RegisterType((*BoundingBox)(nil), "google.privacy.dlp.v2.BoundingBox") + proto.RegisterType((*RedactImageRequest)(nil), "google.privacy.dlp.v2.RedactImageRequest") + proto.RegisterType((*RedactImageRequest_ImageRedactionConfig)(nil), "google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig") + proto.RegisterType((*Color)(nil), "google.privacy.dlp.v2.Color") + proto.RegisterType((*RedactImageResponse)(nil), "google.privacy.dlp.v2.RedactImageResponse") + proto.RegisterType((*DeidentifyContentRequest)(nil), "google.privacy.dlp.v2.DeidentifyContentRequest") + proto.RegisterType((*DeidentifyContentResponse)(nil), "google.privacy.dlp.v2.DeidentifyContentResponse") + proto.RegisterType((*ReidentifyContentRequest)(nil), "google.privacy.dlp.v2.ReidentifyContentRequest") + proto.RegisterType((*ReidentifyContentResponse)(nil), "google.privacy.dlp.v2.ReidentifyContentResponse") + proto.RegisterType((*InspectContentRequest)(nil), "google.privacy.dlp.v2.InspectContentRequest") + proto.RegisterType((*InspectContentResponse)(nil), "google.privacy.dlp.v2.InspectContentResponse") + proto.RegisterType((*OutputStorageConfig)(nil), "google.privacy.dlp.v2.OutputStorageConfig") + proto.RegisterType((*InfoTypeStats)(nil), "google.privacy.dlp.v2.InfoTypeStats") + proto.RegisterType((*InspectDataSourceDetails)(nil), "google.privacy.dlp.v2.InspectDataSourceDetails") + proto.RegisterType((*InspectDataSourceDetails_RequestedOptions)(nil), "google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions") + proto.RegisterType((*InspectDataSourceDetails_Result)(nil), "google.privacy.dlp.v2.InspectDataSourceDetails.Result") + proto.RegisterType((*InfoTypeDescription)(nil), "google.privacy.dlp.v2.InfoTypeDescription") + proto.RegisterType((*ListInfoTypesRequest)(nil), "google.privacy.dlp.v2.ListInfoTypesRequest") + proto.RegisterType((*ListInfoTypesResponse)(nil), "google.privacy.dlp.v2.ListInfoTypesResponse") + proto.RegisterType((*RiskAnalysisJobConfig)(nil), "google.privacy.dlp.v2.RiskAnalysisJobConfig") + proto.RegisterType((*PrivacyMetric)(nil), "google.privacy.dlp.v2.PrivacyMetric") + proto.RegisterType((*PrivacyMetric_NumericalStatsConfig)(nil), "google.privacy.dlp.v2.PrivacyMetric.NumericalStatsConfig") + proto.RegisterType((*PrivacyMetric_CategoricalStatsConfig)(nil), "google.privacy.dlp.v2.PrivacyMetric.CategoricalStatsConfig") + proto.RegisterType((*PrivacyMetric_KAnonymityConfig)(nil), "google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig") + proto.RegisterType((*PrivacyMetric_LDiversityConfig)(nil), "google.privacy.dlp.v2.PrivacyMetric.LDiversityConfig") + proto.RegisterType((*PrivacyMetric_KMapEstimationConfig)(nil), "google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig") + proto.RegisterType((*PrivacyMetric_KMapEstimationConfig_TaggedField)(nil), "google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField") + proto.RegisterType((*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable)(nil), "google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable") + proto.RegisterType((*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField)(nil), "google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdField") + proto.RegisterType((*AnalyzeDataSourceRiskDetails)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_NumericalStatsResult)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_CategoricalStatsResult)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_KAnonymityResult)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_LDiversityResult)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_KMapEstimationResult)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues") + proto.RegisterType((*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket)(nil), "google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket") + proto.RegisterType((*ValueFrequency)(nil), "google.privacy.dlp.v2.ValueFrequency") + proto.RegisterType((*Value)(nil), "google.privacy.dlp.v2.Value") + proto.RegisterType((*QuoteInfo)(nil), "google.privacy.dlp.v2.QuoteInfo") + proto.RegisterType((*DateTime)(nil), "google.privacy.dlp.v2.DateTime") + proto.RegisterType((*DateTime_TimeZone)(nil), "google.privacy.dlp.v2.DateTime.TimeZone") + proto.RegisterType((*DeidentifyConfig)(nil), "google.privacy.dlp.v2.DeidentifyConfig") + proto.RegisterType((*PrimitiveTransformation)(nil), "google.privacy.dlp.v2.PrimitiveTransformation") + proto.RegisterType((*TimePartConfig)(nil), "google.privacy.dlp.v2.TimePartConfig") + proto.RegisterType((*CryptoHashConfig)(nil), "google.privacy.dlp.v2.CryptoHashConfig") + proto.RegisterType((*ReplaceValueConfig)(nil), "google.privacy.dlp.v2.ReplaceValueConfig") + proto.RegisterType((*ReplaceWithInfoTypeConfig)(nil), "google.privacy.dlp.v2.ReplaceWithInfoTypeConfig") + proto.RegisterType((*RedactConfig)(nil), "google.privacy.dlp.v2.RedactConfig") + proto.RegisterType((*CharsToIgnore)(nil), "google.privacy.dlp.v2.CharsToIgnore") + proto.RegisterType((*CharacterMaskConfig)(nil), "google.privacy.dlp.v2.CharacterMaskConfig") + proto.RegisterType((*FixedSizeBucketingConfig)(nil), "google.privacy.dlp.v2.FixedSizeBucketingConfig") + proto.RegisterType((*BucketingConfig)(nil), "google.privacy.dlp.v2.BucketingConfig") + proto.RegisterType((*BucketingConfig_Bucket)(nil), "google.privacy.dlp.v2.BucketingConfig.Bucket") + proto.RegisterType((*CryptoReplaceFfxFpeConfig)(nil), "google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig") + proto.RegisterType((*CryptoKey)(nil), "google.privacy.dlp.v2.CryptoKey") + proto.RegisterType((*TransientCryptoKey)(nil), "google.privacy.dlp.v2.TransientCryptoKey") + proto.RegisterType((*UnwrappedCryptoKey)(nil), "google.privacy.dlp.v2.UnwrappedCryptoKey") + proto.RegisterType((*KmsWrappedCryptoKey)(nil), "google.privacy.dlp.v2.KmsWrappedCryptoKey") + proto.RegisterType((*DateShiftConfig)(nil), "google.privacy.dlp.v2.DateShiftConfig") + proto.RegisterType((*InfoTypeTransformations)(nil), "google.privacy.dlp.v2.InfoTypeTransformations") + proto.RegisterType((*InfoTypeTransformations_InfoTypeTransformation)(nil), "google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation") + proto.RegisterType((*FieldTransformation)(nil), "google.privacy.dlp.v2.FieldTransformation") + proto.RegisterType((*RecordTransformations)(nil), "google.privacy.dlp.v2.RecordTransformations") + proto.RegisterType((*RecordSuppression)(nil), "google.privacy.dlp.v2.RecordSuppression") + proto.RegisterType((*RecordCondition)(nil), "google.privacy.dlp.v2.RecordCondition") + proto.RegisterType((*RecordCondition_Condition)(nil), "google.privacy.dlp.v2.RecordCondition.Condition") + proto.RegisterType((*RecordCondition_Conditions)(nil), "google.privacy.dlp.v2.RecordCondition.Conditions") + proto.RegisterType((*RecordCondition_Expressions)(nil), "google.privacy.dlp.v2.RecordCondition.Expressions") + proto.RegisterType((*TransformationOverview)(nil), "google.privacy.dlp.v2.TransformationOverview") + proto.RegisterType((*TransformationSummary)(nil), "google.privacy.dlp.v2.TransformationSummary") + proto.RegisterType((*TransformationSummary_SummaryResult)(nil), "google.privacy.dlp.v2.TransformationSummary.SummaryResult") + proto.RegisterType((*Schedule)(nil), "google.privacy.dlp.v2.Schedule") + proto.RegisterType((*InspectTemplate)(nil), "google.privacy.dlp.v2.InspectTemplate") + proto.RegisterType((*DeidentifyTemplate)(nil), "google.privacy.dlp.v2.DeidentifyTemplate") + proto.RegisterType((*Error)(nil), "google.privacy.dlp.v2.Error") + proto.RegisterType((*JobTrigger)(nil), "google.privacy.dlp.v2.JobTrigger") + proto.RegisterType((*JobTrigger_Trigger)(nil), "google.privacy.dlp.v2.JobTrigger.Trigger") + proto.RegisterType((*Action)(nil), "google.privacy.dlp.v2.Action") + proto.RegisterType((*Action_SaveFindings)(nil), "google.privacy.dlp.v2.Action.SaveFindings") + proto.RegisterType((*Action_PublishToPubSub)(nil), "google.privacy.dlp.v2.Action.PublishToPubSub") + proto.RegisterType((*CreateInspectTemplateRequest)(nil), "google.privacy.dlp.v2.CreateInspectTemplateRequest") + proto.RegisterType((*UpdateInspectTemplateRequest)(nil), "google.privacy.dlp.v2.UpdateInspectTemplateRequest") + proto.RegisterType((*GetInspectTemplateRequest)(nil), "google.privacy.dlp.v2.GetInspectTemplateRequest") + proto.RegisterType((*ListInspectTemplatesRequest)(nil), "google.privacy.dlp.v2.ListInspectTemplatesRequest") + proto.RegisterType((*ListInspectTemplatesResponse)(nil), "google.privacy.dlp.v2.ListInspectTemplatesResponse") + proto.RegisterType((*DeleteInspectTemplateRequest)(nil), "google.privacy.dlp.v2.DeleteInspectTemplateRequest") + proto.RegisterType((*CreateJobTriggerRequest)(nil), "google.privacy.dlp.v2.CreateJobTriggerRequest") + proto.RegisterType((*UpdateJobTriggerRequest)(nil), "google.privacy.dlp.v2.UpdateJobTriggerRequest") + proto.RegisterType((*GetJobTriggerRequest)(nil), "google.privacy.dlp.v2.GetJobTriggerRequest") + proto.RegisterType((*CreateDlpJobRequest)(nil), "google.privacy.dlp.v2.CreateDlpJobRequest") + proto.RegisterType((*ListJobTriggersRequest)(nil), "google.privacy.dlp.v2.ListJobTriggersRequest") + proto.RegisterType((*ListJobTriggersResponse)(nil), "google.privacy.dlp.v2.ListJobTriggersResponse") + proto.RegisterType((*DeleteJobTriggerRequest)(nil), "google.privacy.dlp.v2.DeleteJobTriggerRequest") + proto.RegisterType((*InspectJobConfig)(nil), "google.privacy.dlp.v2.InspectJobConfig") + proto.RegisterType((*DlpJob)(nil), "google.privacy.dlp.v2.DlpJob") + proto.RegisterType((*GetDlpJobRequest)(nil), "google.privacy.dlp.v2.GetDlpJobRequest") + proto.RegisterType((*ListDlpJobsRequest)(nil), "google.privacy.dlp.v2.ListDlpJobsRequest") + proto.RegisterType((*ListDlpJobsResponse)(nil), "google.privacy.dlp.v2.ListDlpJobsResponse") + proto.RegisterType((*CancelDlpJobRequest)(nil), "google.privacy.dlp.v2.CancelDlpJobRequest") + proto.RegisterType((*DeleteDlpJobRequest)(nil), "google.privacy.dlp.v2.DeleteDlpJobRequest") + proto.RegisterType((*CreateDeidentifyTemplateRequest)(nil), "google.privacy.dlp.v2.CreateDeidentifyTemplateRequest") + proto.RegisterType((*UpdateDeidentifyTemplateRequest)(nil), "google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest") + proto.RegisterType((*GetDeidentifyTemplateRequest)(nil), "google.privacy.dlp.v2.GetDeidentifyTemplateRequest") + proto.RegisterType((*ListDeidentifyTemplatesRequest)(nil), "google.privacy.dlp.v2.ListDeidentifyTemplatesRequest") + proto.RegisterType((*ListDeidentifyTemplatesResponse)(nil), "google.privacy.dlp.v2.ListDeidentifyTemplatesResponse") + proto.RegisterType((*DeleteDeidentifyTemplateRequest)(nil), "google.privacy.dlp.v2.DeleteDeidentifyTemplateRequest") + proto.RegisterEnum("google.privacy.dlp.v2.ContentOption", ContentOption_name, ContentOption_value) + proto.RegisterEnum("google.privacy.dlp.v2.InfoTypeSupportedBy", InfoTypeSupportedBy_name, InfoTypeSupportedBy_value) + proto.RegisterEnum("google.privacy.dlp.v2.RelationalOperator", RelationalOperator_name, RelationalOperator_value) + proto.RegisterEnum("google.privacy.dlp.v2.DlpJobType", DlpJobType_name, DlpJobType_value) + proto.RegisterEnum("google.privacy.dlp.v2.ByteContentItem_BytesType", ByteContentItem_BytesType_name, ByteContentItem_BytesType_value) + proto.RegisterEnum("google.privacy.dlp.v2.OutputStorageConfig_OutputSchema", OutputStorageConfig_OutputSchema_name, OutputStorageConfig_OutputSchema_value) + proto.RegisterEnum("google.privacy.dlp.v2.TimePartConfig_TimePart", TimePartConfig_TimePart_name, TimePartConfig_TimePart_value) + proto.RegisterEnum("google.privacy.dlp.v2.CharsToIgnore_CommonCharsToIgnore", CharsToIgnore_CommonCharsToIgnore_name, CharsToIgnore_CommonCharsToIgnore_value) + proto.RegisterEnum("google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet", CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_name, CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_value) + proto.RegisterEnum("google.privacy.dlp.v2.RecordCondition_Expressions_LogicalOperator", RecordCondition_Expressions_LogicalOperator_name, RecordCondition_Expressions_LogicalOperator_value) + proto.RegisterEnum("google.privacy.dlp.v2.TransformationSummary_TransformationResultCode", TransformationSummary_TransformationResultCode_name, TransformationSummary_TransformationResultCode_value) + proto.RegisterEnum("google.privacy.dlp.v2.JobTrigger_Status", JobTrigger_Status_name, JobTrigger_Status_value) + proto.RegisterEnum("google.privacy.dlp.v2.DlpJob_JobState", DlpJob_JobState_name, DlpJob_JobState_value) +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// Client API for DlpService service + +type DlpServiceClient interface { + // Finds potentially sensitive info in content. + // This method has limits on input size, processing time, and output size. + // [How-to guide for text](/dlp/docs/inspecting-text), [How-to guide for + // images](/dlp/docs/inspecting-images) + InspectContent(ctx context.Context, in *InspectContentRequest, opts ...grpc.CallOption) (*InspectContentResponse, error) + // Redacts potentially sensitive info from an image. + // This method has limits on input size, processing time, and output size. + // [How-to guide](/dlp/docs/redacting-sensitive-data-images) + RedactImage(ctx context.Context, in *RedactImageRequest, opts ...grpc.CallOption) (*RedactImageResponse, error) + // De-identifies potentially sensitive info from a ContentItem. + // This method has limits on input size and output size. + // [How-to guide](/dlp/docs/deidentify-sensitive-data) + DeidentifyContent(ctx context.Context, in *DeidentifyContentRequest, opts ...grpc.CallOption) (*DeidentifyContentResponse, error) + // Re-identify content that has been de-identified. + ReidentifyContent(ctx context.Context, in *ReidentifyContentRequest, opts ...grpc.CallOption) (*ReidentifyContentResponse, error) + // Returns sensitive information types DLP supports. + ListInfoTypes(ctx context.Context, in *ListInfoTypesRequest, opts ...grpc.CallOption) (*ListInfoTypesResponse, error) + // Creates an inspect template for re-using frequently used configuration + // for inspecting content, images, and storage. + CreateInspectTemplate(ctx context.Context, in *CreateInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) + // Updates the inspect template. + UpdateInspectTemplate(ctx context.Context, in *UpdateInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) + // Gets an inspect template. + GetInspectTemplate(ctx context.Context, in *GetInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) + // Lists inspect templates. + ListInspectTemplates(ctx context.Context, in *ListInspectTemplatesRequest, opts ...grpc.CallOption) (*ListInspectTemplatesResponse, error) + // Deletes inspect templates. + DeleteInspectTemplate(ctx context.Context, in *DeleteInspectTemplateRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) + // Creates an Deidentify template for re-using frequently used configuration + // for Deidentifying content, images, and storage. + CreateDeidentifyTemplate(ctx context.Context, in *CreateDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) + // Updates the inspect template. + UpdateDeidentifyTemplate(ctx context.Context, in *UpdateDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) + // Gets an inspect template. + GetDeidentifyTemplate(ctx context.Context, in *GetDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) + // Lists inspect templates. + ListDeidentifyTemplates(ctx context.Context, in *ListDeidentifyTemplatesRequest, opts ...grpc.CallOption) (*ListDeidentifyTemplatesResponse, error) + // Deletes inspect templates. + DeleteDeidentifyTemplate(ctx context.Context, in *DeleteDeidentifyTemplateRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) + // Creates a job to run DLP actions such as scanning storage for sensitive + // information on a set schedule. + CreateJobTrigger(ctx context.Context, in *CreateJobTriggerRequest, opts ...grpc.CallOption) (*JobTrigger, error) + // Updates a job trigger. + UpdateJobTrigger(ctx context.Context, in *UpdateJobTriggerRequest, opts ...grpc.CallOption) (*JobTrigger, error) + // Gets a job trigger. + GetJobTrigger(ctx context.Context, in *GetJobTriggerRequest, opts ...grpc.CallOption) (*JobTrigger, error) + // Lists job triggers. + ListJobTriggers(ctx context.Context, in *ListJobTriggersRequest, opts ...grpc.CallOption) (*ListJobTriggersResponse, error) + // Deletes a job trigger. + DeleteJobTrigger(ctx context.Context, in *DeleteJobTriggerRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) + // Create a new job to inspect storage or calculate risk metrics [How-to + // guide](/dlp/docs/compute-risk-analysis). + CreateDlpJob(ctx context.Context, in *CreateDlpJobRequest, opts ...grpc.CallOption) (*DlpJob, error) + // Lists DlpJobs that match the specified filter in the request. + ListDlpJobs(ctx context.Context, in *ListDlpJobsRequest, opts ...grpc.CallOption) (*ListDlpJobsResponse, error) + // Gets the latest state of a long-running DlpJob. + GetDlpJob(ctx context.Context, in *GetDlpJobRequest, opts ...grpc.CallOption) (*DlpJob, error) + // Deletes a long-running DlpJob. This method indicates that the client is + // no longer interested in the DlpJob result. The job will be cancelled if + // possible. + DeleteDlpJob(ctx context.Context, in *DeleteDlpJobRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) + // Starts asynchronous cancellation on a long-running DlpJob. The server + // makes a best effort to cancel the DlpJob, but success is not + // guaranteed. + CancelDlpJob(ctx context.Context, in *CancelDlpJobRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) +} + +type dlpServiceClient struct { + cc *grpc.ClientConn +} + +func NewDlpServiceClient(cc *grpc.ClientConn) DlpServiceClient { + return &dlpServiceClient{cc} +} + +func (c *dlpServiceClient) InspectContent(ctx context.Context, in *InspectContentRequest, opts ...grpc.CallOption) (*InspectContentResponse, error) { + out := new(InspectContentResponse) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/InspectContent", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) RedactImage(ctx context.Context, in *RedactImageRequest, opts ...grpc.CallOption) (*RedactImageResponse, error) { + out := new(RedactImageResponse) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/RedactImage", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) DeidentifyContent(ctx context.Context, in *DeidentifyContentRequest, opts ...grpc.CallOption) (*DeidentifyContentResponse, error) { + out := new(DeidentifyContentResponse) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/DeidentifyContent", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) ReidentifyContent(ctx context.Context, in *ReidentifyContentRequest, opts ...grpc.CallOption) (*ReidentifyContentResponse, error) { + out := new(ReidentifyContentResponse) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/ReidentifyContent", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) ListInfoTypes(ctx context.Context, in *ListInfoTypesRequest, opts ...grpc.CallOption) (*ListInfoTypesResponse, error) { + out := new(ListInfoTypesResponse) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/ListInfoTypes", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) CreateInspectTemplate(ctx context.Context, in *CreateInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) { + out := new(InspectTemplate) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/CreateInspectTemplate", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) UpdateInspectTemplate(ctx context.Context, in *UpdateInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) { + out := new(InspectTemplate) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/UpdateInspectTemplate", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) GetInspectTemplate(ctx context.Context, in *GetInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) { + out := new(InspectTemplate) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/GetInspectTemplate", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) ListInspectTemplates(ctx context.Context, in *ListInspectTemplatesRequest, opts ...grpc.CallOption) (*ListInspectTemplatesResponse, error) { + out := new(ListInspectTemplatesResponse) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/ListInspectTemplates", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) DeleteInspectTemplate(ctx context.Context, in *DeleteInspectTemplateRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { + out := new(google_protobuf3.Empty) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/DeleteInspectTemplate", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) CreateDeidentifyTemplate(ctx context.Context, in *CreateDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) { + out := new(DeidentifyTemplate) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/CreateDeidentifyTemplate", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) UpdateDeidentifyTemplate(ctx context.Context, in *UpdateDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) { + out := new(DeidentifyTemplate) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/UpdateDeidentifyTemplate", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) GetDeidentifyTemplate(ctx context.Context, in *GetDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) { + out := new(DeidentifyTemplate) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/GetDeidentifyTemplate", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) ListDeidentifyTemplates(ctx context.Context, in *ListDeidentifyTemplatesRequest, opts ...grpc.CallOption) (*ListDeidentifyTemplatesResponse, error) { + out := new(ListDeidentifyTemplatesResponse) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/ListDeidentifyTemplates", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) DeleteDeidentifyTemplate(ctx context.Context, in *DeleteDeidentifyTemplateRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { + out := new(google_protobuf3.Empty) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/DeleteDeidentifyTemplate", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) CreateJobTrigger(ctx context.Context, in *CreateJobTriggerRequest, opts ...grpc.CallOption) (*JobTrigger, error) { + out := new(JobTrigger) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/CreateJobTrigger", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) UpdateJobTrigger(ctx context.Context, in *UpdateJobTriggerRequest, opts ...grpc.CallOption) (*JobTrigger, error) { + out := new(JobTrigger) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/UpdateJobTrigger", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) GetJobTrigger(ctx context.Context, in *GetJobTriggerRequest, opts ...grpc.CallOption) (*JobTrigger, error) { + out := new(JobTrigger) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/GetJobTrigger", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) ListJobTriggers(ctx context.Context, in *ListJobTriggersRequest, opts ...grpc.CallOption) (*ListJobTriggersResponse, error) { + out := new(ListJobTriggersResponse) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/ListJobTriggers", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) DeleteJobTrigger(ctx context.Context, in *DeleteJobTriggerRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { + out := new(google_protobuf3.Empty) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/DeleteJobTrigger", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) CreateDlpJob(ctx context.Context, in *CreateDlpJobRequest, opts ...grpc.CallOption) (*DlpJob, error) { + out := new(DlpJob) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/CreateDlpJob", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) ListDlpJobs(ctx context.Context, in *ListDlpJobsRequest, opts ...grpc.CallOption) (*ListDlpJobsResponse, error) { + out := new(ListDlpJobsResponse) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/ListDlpJobs", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) GetDlpJob(ctx context.Context, in *GetDlpJobRequest, opts ...grpc.CallOption) (*DlpJob, error) { + out := new(DlpJob) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/GetDlpJob", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) DeleteDlpJob(ctx context.Context, in *DeleteDlpJobRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { + out := new(google_protobuf3.Empty) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/DeleteDlpJob", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dlpServiceClient) CancelDlpJob(ctx context.Context, in *CancelDlpJobRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { + out := new(google_protobuf3.Empty) + err := grpc.Invoke(ctx, "/google.privacy.dlp.v2.DlpService/CancelDlpJob", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for DlpService service + +type DlpServiceServer interface { + // Finds potentially sensitive info in content. + // This method has limits on input size, processing time, and output size. + // [How-to guide for text](/dlp/docs/inspecting-text), [How-to guide for + // images](/dlp/docs/inspecting-images) + InspectContent(context.Context, *InspectContentRequest) (*InspectContentResponse, error) + // Redacts potentially sensitive info from an image. + // This method has limits on input size, processing time, and output size. + // [How-to guide](/dlp/docs/redacting-sensitive-data-images) + RedactImage(context.Context, *RedactImageRequest) (*RedactImageResponse, error) + // De-identifies potentially sensitive info from a ContentItem. + // This method has limits on input size and output size. + // [How-to guide](/dlp/docs/deidentify-sensitive-data) + DeidentifyContent(context.Context, *DeidentifyContentRequest) (*DeidentifyContentResponse, error) + // Re-identify content that has been de-identified. + ReidentifyContent(context.Context, *ReidentifyContentRequest) (*ReidentifyContentResponse, error) + // Returns sensitive information types DLP supports. + ListInfoTypes(context.Context, *ListInfoTypesRequest) (*ListInfoTypesResponse, error) + // Creates an inspect template for re-using frequently used configuration + // for inspecting content, images, and storage. + CreateInspectTemplate(context.Context, *CreateInspectTemplateRequest) (*InspectTemplate, error) + // Updates the inspect template. + UpdateInspectTemplate(context.Context, *UpdateInspectTemplateRequest) (*InspectTemplate, error) + // Gets an inspect template. + GetInspectTemplate(context.Context, *GetInspectTemplateRequest) (*InspectTemplate, error) + // Lists inspect templates. + ListInspectTemplates(context.Context, *ListInspectTemplatesRequest) (*ListInspectTemplatesResponse, error) + // Deletes inspect templates. + DeleteInspectTemplate(context.Context, *DeleteInspectTemplateRequest) (*google_protobuf3.Empty, error) + // Creates an Deidentify template for re-using frequently used configuration + // for Deidentifying content, images, and storage. + CreateDeidentifyTemplate(context.Context, *CreateDeidentifyTemplateRequest) (*DeidentifyTemplate, error) + // Updates the inspect template. + UpdateDeidentifyTemplate(context.Context, *UpdateDeidentifyTemplateRequest) (*DeidentifyTemplate, error) + // Gets an inspect template. + GetDeidentifyTemplate(context.Context, *GetDeidentifyTemplateRequest) (*DeidentifyTemplate, error) + // Lists inspect templates. + ListDeidentifyTemplates(context.Context, *ListDeidentifyTemplatesRequest) (*ListDeidentifyTemplatesResponse, error) + // Deletes inspect templates. + DeleteDeidentifyTemplate(context.Context, *DeleteDeidentifyTemplateRequest) (*google_protobuf3.Empty, error) + // Creates a job to run DLP actions such as scanning storage for sensitive + // information on a set schedule. + CreateJobTrigger(context.Context, *CreateJobTriggerRequest) (*JobTrigger, error) + // Updates a job trigger. + UpdateJobTrigger(context.Context, *UpdateJobTriggerRequest) (*JobTrigger, error) + // Gets a job trigger. + GetJobTrigger(context.Context, *GetJobTriggerRequest) (*JobTrigger, error) + // Lists job triggers. + ListJobTriggers(context.Context, *ListJobTriggersRequest) (*ListJobTriggersResponse, error) + // Deletes a job trigger. + DeleteJobTrigger(context.Context, *DeleteJobTriggerRequest) (*google_protobuf3.Empty, error) + // Create a new job to inspect storage or calculate risk metrics [How-to + // guide](/dlp/docs/compute-risk-analysis). + CreateDlpJob(context.Context, *CreateDlpJobRequest) (*DlpJob, error) + // Lists DlpJobs that match the specified filter in the request. + ListDlpJobs(context.Context, *ListDlpJobsRequest) (*ListDlpJobsResponse, error) + // Gets the latest state of a long-running DlpJob. + GetDlpJob(context.Context, *GetDlpJobRequest) (*DlpJob, error) + // Deletes a long-running DlpJob. This method indicates that the client is + // no longer interested in the DlpJob result. The job will be cancelled if + // possible. + DeleteDlpJob(context.Context, *DeleteDlpJobRequest) (*google_protobuf3.Empty, error) + // Starts asynchronous cancellation on a long-running DlpJob. The server + // makes a best effort to cancel the DlpJob, but success is not + // guaranteed. + CancelDlpJob(context.Context, *CancelDlpJobRequest) (*google_protobuf3.Empty, error) +} + +func RegisterDlpServiceServer(s *grpc.Server, srv DlpServiceServer) { + s.RegisterService(&_DlpService_serviceDesc, srv) +} + +func _DlpService_InspectContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InspectContentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).InspectContent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/InspectContent", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).InspectContent(ctx, req.(*InspectContentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_RedactImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RedactImageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).RedactImage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/RedactImage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).RedactImage(ctx, req.(*RedactImageRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_DeidentifyContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeidentifyContentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).DeidentifyContent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/DeidentifyContent", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).DeidentifyContent(ctx, req.(*DeidentifyContentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_ReidentifyContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReidentifyContentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).ReidentifyContent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/ReidentifyContent", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).ReidentifyContent(ctx, req.(*ReidentifyContentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_ListInfoTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListInfoTypesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).ListInfoTypes(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/ListInfoTypes", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).ListInfoTypes(ctx, req.(*ListInfoTypesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_CreateInspectTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateInspectTemplateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).CreateInspectTemplate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/CreateInspectTemplate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).CreateInspectTemplate(ctx, req.(*CreateInspectTemplateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_UpdateInspectTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateInspectTemplateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).UpdateInspectTemplate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/UpdateInspectTemplate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).UpdateInspectTemplate(ctx, req.(*UpdateInspectTemplateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_GetInspectTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetInspectTemplateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).GetInspectTemplate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/GetInspectTemplate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).GetInspectTemplate(ctx, req.(*GetInspectTemplateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_ListInspectTemplates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListInspectTemplatesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).ListInspectTemplates(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/ListInspectTemplates", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).ListInspectTemplates(ctx, req.(*ListInspectTemplatesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_DeleteInspectTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteInspectTemplateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).DeleteInspectTemplate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/DeleteInspectTemplate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).DeleteInspectTemplate(ctx, req.(*DeleteInspectTemplateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_CreateDeidentifyTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateDeidentifyTemplateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).CreateDeidentifyTemplate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/CreateDeidentifyTemplate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).CreateDeidentifyTemplate(ctx, req.(*CreateDeidentifyTemplateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_UpdateDeidentifyTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateDeidentifyTemplateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).UpdateDeidentifyTemplate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/UpdateDeidentifyTemplate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).UpdateDeidentifyTemplate(ctx, req.(*UpdateDeidentifyTemplateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_GetDeidentifyTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDeidentifyTemplateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).GetDeidentifyTemplate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/GetDeidentifyTemplate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).GetDeidentifyTemplate(ctx, req.(*GetDeidentifyTemplateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_ListDeidentifyTemplates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListDeidentifyTemplatesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).ListDeidentifyTemplates(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/ListDeidentifyTemplates", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).ListDeidentifyTemplates(ctx, req.(*ListDeidentifyTemplatesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_DeleteDeidentifyTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteDeidentifyTemplateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).DeleteDeidentifyTemplate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/DeleteDeidentifyTemplate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).DeleteDeidentifyTemplate(ctx, req.(*DeleteDeidentifyTemplateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_CreateJobTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateJobTriggerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).CreateJobTrigger(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/CreateJobTrigger", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).CreateJobTrigger(ctx, req.(*CreateJobTriggerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_UpdateJobTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateJobTriggerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).UpdateJobTrigger(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/UpdateJobTrigger", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).UpdateJobTrigger(ctx, req.(*UpdateJobTriggerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_GetJobTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetJobTriggerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).GetJobTrigger(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/GetJobTrigger", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).GetJobTrigger(ctx, req.(*GetJobTriggerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_ListJobTriggers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListJobTriggersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).ListJobTriggers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/ListJobTriggers", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).ListJobTriggers(ctx, req.(*ListJobTriggersRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_DeleteJobTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteJobTriggerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).DeleteJobTrigger(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/DeleteJobTrigger", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).DeleteJobTrigger(ctx, req.(*DeleteJobTriggerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_CreateDlpJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateDlpJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).CreateDlpJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/CreateDlpJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).CreateDlpJob(ctx, req.(*CreateDlpJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_ListDlpJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListDlpJobsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).ListDlpJobs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/ListDlpJobs", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).ListDlpJobs(ctx, req.(*ListDlpJobsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_GetDlpJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDlpJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).GetDlpJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/GetDlpJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).GetDlpJob(ctx, req.(*GetDlpJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_DeleteDlpJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteDlpJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).DeleteDlpJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/DeleteDlpJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).DeleteDlpJob(ctx, req.(*DeleteDlpJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DlpService_CancelDlpJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CancelDlpJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DlpServiceServer).CancelDlpJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.privacy.dlp.v2.DlpService/CancelDlpJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DlpServiceServer).CancelDlpJob(ctx, req.(*CancelDlpJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _DlpService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "google.privacy.dlp.v2.DlpService", + HandlerType: (*DlpServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "InspectContent", + Handler: _DlpService_InspectContent_Handler, + }, + { + MethodName: "RedactImage", + Handler: _DlpService_RedactImage_Handler, + }, + { + MethodName: "DeidentifyContent", + Handler: _DlpService_DeidentifyContent_Handler, + }, + { + MethodName: "ReidentifyContent", + Handler: _DlpService_ReidentifyContent_Handler, + }, + { + MethodName: "ListInfoTypes", + Handler: _DlpService_ListInfoTypes_Handler, + }, + { + MethodName: "CreateInspectTemplate", + Handler: _DlpService_CreateInspectTemplate_Handler, + }, + { + MethodName: "UpdateInspectTemplate", + Handler: _DlpService_UpdateInspectTemplate_Handler, + }, + { + MethodName: "GetInspectTemplate", + Handler: _DlpService_GetInspectTemplate_Handler, + }, + { + MethodName: "ListInspectTemplates", + Handler: _DlpService_ListInspectTemplates_Handler, + }, + { + MethodName: "DeleteInspectTemplate", + Handler: _DlpService_DeleteInspectTemplate_Handler, + }, + { + MethodName: "CreateDeidentifyTemplate", + Handler: _DlpService_CreateDeidentifyTemplate_Handler, + }, + { + MethodName: "UpdateDeidentifyTemplate", + Handler: _DlpService_UpdateDeidentifyTemplate_Handler, + }, + { + MethodName: "GetDeidentifyTemplate", + Handler: _DlpService_GetDeidentifyTemplate_Handler, + }, + { + MethodName: "ListDeidentifyTemplates", + Handler: _DlpService_ListDeidentifyTemplates_Handler, + }, + { + MethodName: "DeleteDeidentifyTemplate", + Handler: _DlpService_DeleteDeidentifyTemplate_Handler, + }, + { + MethodName: "CreateJobTrigger", + Handler: _DlpService_CreateJobTrigger_Handler, + }, + { + MethodName: "UpdateJobTrigger", + Handler: _DlpService_UpdateJobTrigger_Handler, + }, + { + MethodName: "GetJobTrigger", + Handler: _DlpService_GetJobTrigger_Handler, + }, + { + MethodName: "ListJobTriggers", + Handler: _DlpService_ListJobTriggers_Handler, + }, + { + MethodName: "DeleteJobTrigger", + Handler: _DlpService_DeleteJobTrigger_Handler, + }, + { + MethodName: "CreateDlpJob", + Handler: _DlpService_CreateDlpJob_Handler, + }, + { + MethodName: "ListDlpJobs", + Handler: _DlpService_ListDlpJobs_Handler, + }, + { + MethodName: "GetDlpJob", + Handler: _DlpService_GetDlpJob_Handler, + }, + { + MethodName: "DeleteDlpJob", + Handler: _DlpService_DeleteDlpJob_Handler, + }, + { + MethodName: "CancelDlpJob", + Handler: _DlpService_CancelDlpJob_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/privacy/dlp/v2/dlp.proto", +} + +func init() { proto.RegisterFile("google/privacy/dlp/v2/dlp.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 7980 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x6d, 0x6c, 0x1b, 0xd9, + 0x76, 0x98, 0x86, 0x14, 0x25, 0xea, 0x50, 0xa4, 0xa8, 0x2b, 0x4b, 0x96, 0x69, 0x7b, 0xed, 0x1d, + 0xef, 0x7a, 0xbd, 0x5a, 0x5b, 0xda, 0xd5, 0x7e, 0xbc, 0x5d, 0xef, 0xbe, 0x4d, 0x28, 0x92, 0x16, + 0xe9, 0x95, 0x44, 0x79, 0x48, 0x79, 0xd7, 0xce, 0x62, 0xa7, 0x23, 0xf2, 0x8a, 0x1a, 0x8b, 0xe4, + 0xd0, 0x33, 0x43, 0x5b, 0xda, 0x24, 0xc0, 0x4b, 0xd1, 0x36, 0x48, 0xd1, 0x87, 0x06, 0x68, 0x5f, + 0x1f, 0x9a, 0xb4, 0x41, 0xda, 0xfe, 0x28, 0x10, 0x20, 0x2d, 0x8a, 0xb6, 0x09, 0xd2, 0xa6, 0xfd, + 0x91, 0x7e, 0xa2, 0x28, 0x8a, 0x17, 0xbc, 0x5f, 0x45, 0x51, 0x20, 0x7d, 0xfd, 0x40, 0x81, 0xcd, + 0x9f, 0x02, 0xfd, 0xd1, 0x0f, 0xa0, 0x28, 0xee, 0xd7, 0x7c, 0x71, 0x86, 0x1f, 0xb2, 0x17, 0x09, + 0xf2, 0x4b, 0x9c, 0x73, 0xcf, 0x39, 0xf7, 0xdc, 0x73, 0xcf, 0x3d, 0xf7, 0xdc, 0x73, 0x3f, 0x04, + 0xd7, 0x5a, 0x86, 0xd1, 0x6a, 0xe3, 0x8d, 0x9e, 0xa9, 0x3f, 0xd3, 0x1a, 0x67, 0x1b, 0xcd, 0x76, + 0x6f, 0xe3, 0xd9, 0x26, 0xf9, 0xb3, 0xde, 0x33, 0x0d, 0xdb, 0x40, 0xcb, 0x0c, 0x61, 0x9d, 0x23, + 0xac, 0x93, 0x92, 0x67, 0x9b, 0xb9, 0x2b, 0x9c, 0x4e, 0xeb, 0xe9, 0x1b, 0x5a, 0xb7, 0x6b, 0xd8, + 0x9a, 0xad, 0x1b, 0x5d, 0x8b, 0x11, 0xe5, 0x6e, 0x84, 0x73, 0xb5, 0x6c, 0xc3, 0xd4, 0x5a, 0x98, + 0x23, 0xbd, 0xe2, 0x20, 0x19, 0xb6, 0x71, 0xd8, 0x3f, 0xda, 0x68, 0xf6, 0x4d, 0xca, 0x85, 0x97, + 0x5f, 0x0e, 0x96, 0xe3, 0x4e, 0xcf, 0x3e, 0xe3, 0x85, 0xd7, 0x83, 0x85, 0x47, 0x3a, 0x6e, 0x37, + 0xd5, 0x8e, 0x66, 0x9d, 0x70, 0x8c, 0x6b, 0x41, 0x0c, 0x5b, 0xef, 0x60, 0xcb, 0xd6, 0x3a, 0xbc, + 0x65, 0xb9, 0x8b, 0x1c, 0xc1, 0xec, 0x35, 0x36, 0x2c, 0x5b, 0xb3, 0xfb, 0x42, 0xfa, 0x15, 0x5e, + 0x60, 0x9f, 0xf5, 0xf0, 0x46, 0x53, 0xb3, 0x71, 0x40, 0x20, 0x0e, 0x3f, 0x33, 0x8e, 0x9e, 0x63, + 0x7c, 0x12, 0x56, 0x48, 0xaa, 0x32, 0x8e, 0x9a, 0x1a, 0x97, 0x56, 0xfe, 0xd7, 0x33, 0x90, 0xae, + 0x74, 0xad, 0x1e, 0x6e, 0xd8, 0x05, 0xa3, 0x7b, 0xa4, 0xb7, 0xd0, 0xa7, 0x00, 0x7a, 0xf7, 0xc8, + 0x50, 0x09, 0xba, 0xb5, 0x2a, 0x5d, 0x8f, 0xdf, 0x4a, 0x6d, 0x5e, 0x5b, 0x0f, 0xd5, 0xf5, 0x7a, + 0xa5, 0x7b, 0x64, 0xd4, 0xcf, 0x7a, 0x58, 0x99, 0xd3, 0xf9, 0x2f, 0x0b, 0x95, 0x21, 0xd3, 0xd1, + 0xbb, 0x6a, 0x5b, 0x3f, 0xc1, 0x6d, 0xfd, 0xd8, 0x30, 0x9a, 0xab, 0xb1, 0xeb, 0xd2, 0xad, 0xcc, + 0xe6, 0xab, 0x11, 0x3c, 0x76, 0x1c, 0x44, 0x25, 0xdd, 0xd1, 0xbb, 0xee, 0x27, 0xba, 0x0f, 0x33, + 0x6d, 0xbd, 0xa3, 0xdb, 0xd6, 0x6a, 0xfc, 0xba, 0x74, 0x2b, 0xb5, 0xb9, 0x19, 0x29, 0x85, 0x47, + 0xfe, 0xf5, 0x7b, 0x7a, 0xb7, 0xa9, 0x77, 0x5b, 0x3b, 0x94, 0x52, 0xe1, 0x1c, 0xd0, 0x0d, 0x48, + 0xeb, 0xdd, 0x46, 0xbb, 0xdf, 0xc4, 0xea, 0xd3, 0xbe, 0x61, 0xe3, 0xd5, 0xe9, 0xeb, 0xd2, 0xad, + 0xa4, 0x32, 0xcf, 0x81, 0x0f, 0x08, 0x0c, 0xdd, 0x06, 0x84, 0x4f, 0x19, 0x92, 0x47, 0x05, 0x09, + 0x8a, 0x99, 0xe5, 0x25, 0x15, 0xa7, 0xa1, 0x0f, 0x60, 0xb1, 0xd1, 0xb7, 0x6c, 0xa3, 0xe3, 0x45, + 0x9e, 0xa1, 0xfa, 0x7a, 0x3d, 0x42, 0xd2, 0x02, 0xc5, 0x77, 0xb4, 0xb6, 0xd0, 0xf0, 0x7d, 0x5b, + 0x68, 0x17, 0x16, 0x1a, 0x46, 0xd7, 0xc6, 0x5d, 0x5b, 0x35, 0x7a, 0xd4, 0x6c, 0x57, 0x93, 0xd7, + 0xe3, 0xb7, 0x32, 0x9b, 0xaf, 0x45, 0x31, 0x64, 0xd8, 0x55, 0x8a, 0xac, 0x64, 0x1a, 0xde, 0x4f, + 0x2b, 0xf7, 0x4d, 0x0c, 0xd2, 0x3e, 0x75, 0xa0, 0x77, 0x60, 0xb9, 0xa3, 0x9d, 0xaa, 0x47, 0x0c, + 0x68, 0xa9, 0x3d, 0x6c, 0xaa, 0xba, 0x8d, 0x3b, 0xab, 0xd2, 0x75, 0xe9, 0x56, 0x42, 0x41, 0x1d, + 0xed, 0x94, 0x13, 0x58, 0xfb, 0xd8, 0xac, 0xd8, 0xb8, 0x83, 0xbe, 0x03, 0xab, 0x03, 0x24, 0x26, + 0x7e, 0xda, 0xc7, 0x96, 0x4d, 0x7b, 0x36, 0xa1, 0x2c, 0xfb, 0xa9, 0x14, 0x56, 0x88, 0x7e, 0x0e, + 0x72, 0x83, 0x75, 0x09, 0x4d, 0xad, 0xc6, 0xa9, 0xa2, 0x7e, 0x7a, 0xf2, 0x2e, 0x75, 0x8c, 0x8e, + 0x7e, 0x2a, 0x2b, 0x01, 0x91, 0x79, 0x61, 0xae, 0x47, 0xec, 0xda, 0x83, 0x88, 0x3e, 0x81, 0x39, + 0xb7, 0x76, 0x89, 0x1a, 0xd4, 0x48, 0xb3, 0x4e, 0x0a, 0xb3, 0x46, 0xaf, 0xc2, 0xbc, 0xb7, 0x31, + 0xbc, 0xe5, 0x29, 0x4f, 0xe5, 0xf2, 0x1f, 0x48, 0xb0, 0xb0, 0x75, 0x66, 0x63, 0xde, 0x27, 0x54, + 0x79, 0x45, 0x98, 0x76, 0xea, 0xcb, 0x6c, 0xbe, 0x1d, 0x51, 0x5f, 0x80, 0x8a, 0x7e, 0x5b, 0x54, + 0x00, 0x4a, 0x8d, 0x10, 0x4c, 0x37, 0x35, 0x5b, 0xa3, 0x95, 0xce, 0x2b, 0xf4, 0xb7, 0x6c, 0xc1, + 0x9c, 0x83, 0x86, 0x72, 0xb0, 0xb2, 0xf5, 0xa8, 0x5e, 0xaa, 0xa9, 0xf5, 0x47, 0xfb, 0x25, 0xf5, + 0x60, 0xaf, 0xb6, 0x5f, 0x2a, 0x54, 0xee, 0x55, 0x4a, 0xc5, 0xec, 0x14, 0xca, 0x00, 0x54, 0x76, + 0xf3, 0xdb, 0x25, 0xf5, 0xfe, 0x7e, 0x69, 0x3b, 0x2b, 0xa1, 0x34, 0xcc, 0xb1, 0xef, 0xad, 0xdd, + 0xfd, 0x6c, 0xcc, 0xfd, 0xdc, 0xdf, 0xdb, 0xce, 0xc6, 0xdd, 0xcf, 0xda, 0xc3, 0xed, 0xec, 0x34, + 0xf9, 0xac, 0x97, 0xbe, 0xa8, 0xab, 0x07, 0xf5, 0x7b, 0x1f, 0x66, 0x13, 0xf2, 0xdf, 0x95, 0x20, + 0xe5, 0x6d, 0xde, 0x0a, 0x24, 0x9e, 0x69, 0xed, 0x3e, 0xa6, 0x03, 0x74, 0xae, 0x3c, 0xa5, 0xb0, + 0x4f, 0xf4, 0x1e, 0x24, 0x6c, 0xed, 0xb0, 0xcd, 0x46, 0x59, 0x6a, 0xf3, 0x4a, 0x44, 0xbb, 0xeb, + 0x04, 0x87, 0x50, 0x51, 0x64, 0x54, 0x82, 0xb9, 0xc3, 0x33, 0x1b, 0x33, 0x83, 0x4c, 0x50, 0xca, + 0x9b, 0xe3, 0x69, 0xac, 0x3c, 0xa5, 0x24, 0x09, 0x29, 0xf9, 0xbd, 0x95, 0x82, 0x39, 0xa2, 0x21, + 0xca, 0x46, 0xfe, 0x07, 0x12, 0x24, 0x68, 0x35, 0xe8, 0x43, 0x98, 0x3d, 0xc6, 0x5a, 0x13, 0x9b, + 0xc2, 0xa9, 0xbd, 0x12, 0xc1, 0xfb, 0x1e, 0xf1, 0xd7, 0x95, 0xa6, 0x22, 0xd0, 0xd1, 0x7b, 0x30, + 0x6d, 0x1a, 0xcf, 0x49, 0x9f, 0x13, 0xb2, 0xeb, 0xc3, 0x1a, 0xb3, 0xae, 0x18, 0xcf, 0x15, 0x8a, + 0x9d, 0xfb, 0x18, 0xe2, 0x8a, 0xf1, 0x1c, 0xbd, 0x07, 0x33, 0x54, 0x27, 0xa2, 0xd6, 0x28, 0x5d, + 0x3c, 0x24, 0x48, 0x0a, 0xc7, 0x95, 0xbf, 0x76, 0xbc, 0xb2, 0x82, 0xad, 0x7e, 0xdb, 0x46, 0x77, + 0x21, 0xe9, 0xd8, 0xde, 0x28, 0xf1, 0x29, 0x9a, 0xe2, 0xe0, 0xa3, 0x3b, 0x80, 0x9c, 0x41, 0x68, + 0x9b, 0xfd, 0x6e, 0x43, 0xb3, 0x31, 0xf3, 0xca, 0x49, 0x65, 0x51, 0x94, 0xd4, 0x45, 0x81, 0xfc, + 0x1f, 0x62, 0x30, 0xcb, 0x99, 0xa0, 0x0b, 0x90, 0x60, 0xee, 0x92, 0x18, 0xf0, 0x9c, 0xc2, 0x3e, + 0xfc, 0x43, 0x29, 0x36, 0xe9, 0x50, 0xca, 0x03, 0x78, 0x26, 0x87, 0xf8, 0xb8, 0x93, 0x83, 0x87, + 0x08, 0x7d, 0x0c, 0xc9, 0xb6, 0xd1, 0xa0, 0x53, 0x32, 0x37, 0xb1, 0xa8, 0xfa, 0x77, 0x38, 0x9a, + 0xe2, 0x10, 0xa0, 0x8f, 0x21, 0xd5, 0x30, 0xb1, 0x66, 0x63, 0x95, 0x4c, 0x86, 0xab, 0x33, 0x94, + 0x3e, 0xe7, 0xd2, 0xb3, 0x49, 0x79, 0xbd, 0x2e, 0x26, 0x65, 0x05, 0x18, 0x3a, 0x01, 0xa0, 0x9f, + 0x02, 0xa0, 0x3a, 0xa0, 0x9e, 0x6c, 0x75, 0x96, 0xd2, 0x46, 0x59, 0x04, 0x9d, 0x54, 0x88, 0x02, + 0x94, 0xb9, 0xa7, 0xe2, 0xa7, 0xfc, 0x9f, 0x25, 0x48, 0xee, 0xb8, 0xa2, 0x00, 0xb5, 0x78, 0x53, + 0xeb, 0xb6, 0x84, 0x53, 0x8a, 0x32, 0x10, 0x85, 0xe0, 0x28, 0x74, 0x84, 0xd0, 0x9f, 0xa8, 0x44, + 0x26, 0x8b, 0x26, 0xee, 0x19, 0x7a, 0xd7, 0xe6, 0x1c, 0x62, 0x63, 0x70, 0xc8, 0x38, 0x44, 0x8c, + 0x4d, 0x0d, 0x16, 0xc5, 0x9c, 0x23, 0x54, 0x64, 0xad, 0xce, 0x52, 0x13, 0xbb, 0x39, 0x7c, 0xd6, + 0x71, 0x74, 0x9b, 0x6d, 0xf8, 0x01, 0x96, 0xfc, 0xdb, 0x71, 0x58, 0x08, 0x60, 0xa1, 0xd7, 0x81, + 0xce, 0x4f, 0x9a, 0xde, 0xc5, 0xa6, 0xda, 0xd5, 0x3a, 0xc2, 0xa8, 0xd2, 0x0e, 0x74, 0x4f, 0xeb, + 0x60, 0xb4, 0x0f, 0x0b, 0x26, 0x6e, 0x18, 0x66, 0xd3, 0x11, 0x87, 0x37, 0x2b, 0x6a, 0x52, 0x55, + 0x28, 0xb6, 0xa8, 0xa6, 0x3c, 0xa5, 0x64, 0x4c, 0x1f, 0x04, 0xed, 0x42, 0x46, 0xef, 0x68, 0x2d, + 0xec, 0x32, 0x64, 0xf1, 0x44, 0xd4, 0xa4, 0x5a, 0x21, 0xc8, 0x1e, 0x7e, 0x69, 0xdd, 0x0b, 0x40, + 0x0f, 0x61, 0xb1, 0x69, 0x34, 0xfa, 0x1d, 0xaf, 0xc6, 0xb8, 0xbb, 0x7a, 0x23, 0x82, 0x63, 0x91, + 0xe3, 0x7b, 0x98, 0x66, 0x9b, 0x01, 0x18, 0xfa, 0x0c, 0x96, 0x5c, 0xfd, 0x38, 0x21, 0xe1, 0x18, + 0xf6, 0x89, 0x1c, 0x32, 0x07, 0x86, 0xde, 0x62, 0xbd, 0xca, 0x98, 0x3d, 0xc3, 0xa6, 0x45, 0x84, + 0x9c, 0xa5, 0xfa, 0xce, 0x3a, 0x05, 0x0f, 0x19, 0x7c, 0x0b, 0xdc, 0xe1, 0x24, 0xbf, 0x0b, 0xd9, + 0xa0, 0xb4, 0xe8, 0x1a, 0xa4, 0x8e, 0xf4, 0x36, 0x56, 0x8d, 0xa3, 0x23, 0x0b, 0xdb, 0xb4, 0xdb, + 0xe2, 0x0a, 0x10, 0x50, 0x95, 0x42, 0xe4, 0x7f, 0x2f, 0x41, 0xc6, 0xdf, 0x0d, 0x64, 0xa0, 0xf0, + 0x6e, 0x3c, 0xc1, 0x67, 0xdc, 0xb4, 0xaf, 0x0f, 0xed, 0xc1, 0xcf, 0xf0, 0x99, 0x32, 0x67, 0x8a, + 0x9f, 0xe8, 0x23, 0xe2, 0xf1, 0x48, 0xe4, 0xac, 0x37, 0xb9, 0x01, 0x8c, 0x74, 0xd8, 0x47, 0xec, + 0x07, 0xfa, 0x0c, 0x32, 0x74, 0x46, 0x19, 0xb7, 0xc3, 0xa9, 0xeb, 0x76, 0xac, 0x39, 0x6d, 0x7b, + 0x3f, 0xe5, 0xdb, 0x90, 0xf6, 0x95, 0xa3, 0xcb, 0x30, 0x67, 0x1a, 0xcf, 0x55, 0xbd, 0xdb, 0xc4, + 0xa7, 0x5c, 0x17, 0x49, 0xd3, 0x78, 0x5e, 0x21, 0xdf, 0xf2, 0x06, 0x24, 0xd8, 0xb0, 0xba, 0x00, + 0x09, 0xcb, 0xd6, 0x4c, 0xa1, 0x2d, 0xf6, 0x81, 0xb2, 0x10, 0xc7, 0x5d, 0xd6, 0x9e, 0xb8, 0x42, + 0x7e, 0xca, 0x8f, 0x21, 0xed, 0xb3, 0x37, 0x54, 0x81, 0xcc, 0xa1, 0xd1, 0xa7, 0xee, 0x57, 0x3d, + 0x34, 0x4e, 0x9d, 0x89, 0x43, 0x8e, 0x9a, 0x0a, 0x39, 0xf2, 0x96, 0x71, 0xaa, 0xa4, 0x0f, 0xdd, + 0x0f, 0x6c, 0xc9, 0x1a, 0xa4, 0x3c, 0xa5, 0xa4, 0x72, 0xdb, 0xe8, 0xf1, 0x50, 0x8f, 0xfc, 0x24, + 0x81, 0x45, 0x1b, 0x1f, 0x89, 0x38, 0x8e, 0xfe, 0x26, 0x82, 0x3f, 0xd7, 0x9b, 0xf6, 0x31, 0xd5, + 0x59, 0x42, 0x61, 0x1f, 0x68, 0x05, 0x66, 0x8e, 0xb1, 0xde, 0x3a, 0xb6, 0xa9, 0xbf, 0x4d, 0x28, + 0xfc, 0x4b, 0xfe, 0xf3, 0xd3, 0x80, 0x14, 0xdc, 0xd4, 0x1a, 0x36, 0x6d, 0x85, 0x88, 0xfd, 0x56, + 0x60, 0xa6, 0xa7, 0x99, 0xb8, 0x6b, 0xf3, 0x31, 0xce, 0xbf, 0x48, 0xcf, 0xe8, 0x6c, 0x5e, 0x53, + 0x1b, 0x34, 0xb6, 0xe3, 0x5d, 0xfb, 0xda, 0x38, 0x71, 0xa0, 0x92, 0xd6, 0x7d, 0x2b, 0x95, 0x67, + 0x70, 0x91, 0x8d, 0x6b, 0x93, 0x0a, 0xa0, 0x1b, 0x5d, 0xce, 0x94, 0xc4, 0xec, 0x44, 0x65, 0x9f, + 0x46, 0xda, 0x5b, 0x50, 0xe0, 0x75, 0xfe, 0xc1, 0xf9, 0xf0, 0xfa, 0x96, 0xf5, 0x10, 0xa8, 0x85, + 0x0a, 0xde, 0x38, 0x65, 0x76, 0x92, 0x38, 0xc5, 0x8d, 0x52, 0x72, 0xbf, 0x2f, 0xc1, 0x85, 0xb0, + 0x4a, 0xd1, 0xa7, 0x93, 0xc7, 0xa9, 0x24, 0xfc, 0x71, 0xa6, 0xd7, 0x5b, 0xc4, 0x7f, 0x12, 0x96, + 0xaa, 0xd6, 0x6e, 0xab, 0x36, 0x3e, 0x65, 0xdd, 0x9b, 0x24, 0x8e, 0x8c, 0x15, 0xe4, 0xdb, 0xed, + 0x3a, 0x3e, 0xb5, 0xc9, 0x04, 0xe2, 0xd5, 0x5c, 0xdb, 0x30, 0xf9, 0x38, 0xb9, 0x12, 0xe9, 0xf7, + 0xdb, 0x86, 0x49, 0xdc, 0xab, 0x23, 0x71, 0xdb, 0x30, 0xb7, 0x92, 0x30, 0x63, 0x6b, 0x66, 0x0b, + 0xdb, 0x72, 0x01, 0x12, 0x14, 0x44, 0x2c, 0xcd, 0xc4, 0x4d, 0x2a, 0x7d, 0x4c, 0x21, 0x3f, 0x89, + 0x55, 0xb5, 0x4c, 0x8c, 0x99, 0x2f, 0x8f, 0x29, 0xec, 0x83, 0xd8, 0xdf, 0xa1, 0x08, 0x1f, 0x63, + 0x0a, 0xfd, 0x2d, 0x37, 0x60, 0xc9, 0xd7, 0x3f, 0x56, 0xcf, 0xe8, 0x5a, 0x98, 0xcc, 0x1e, 0xac, + 0x5e, 0xdc, 0x54, 0x69, 0xb7, 0x50, 0xee, 0xf3, 0xa2, 0x4d, 0xb8, 0x49, 0xd1, 0x09, 0x1a, 0x3e, + 0xb5, 0x4d, 0x86, 0xe7, 0x34, 0x7e, 0x4e, 0x49, 0x3b, 0x50, 0xd2, 0x74, 0xf9, 0xff, 0xc6, 0x60, + 0xb5, 0x88, 0xf5, 0x26, 0xee, 0xda, 0xfa, 0xd1, 0x19, 0xef, 0xa1, 0x51, 0xc6, 0x5b, 0x87, 0xc5, + 0xa6, 0x43, 0xe3, 0xb7, 0xdf, 0x48, 0xc7, 0xef, 0xad, 0x83, 0x98, 0x54, 0xb6, 0x19, 0x80, 0x84, + 0x0c, 0x89, 0xf8, 0xf9, 0x87, 0xc4, 0x07, 0x30, 0x4d, 0xad, 0x92, 0x05, 0x45, 0xf2, 0xf0, 0xf9, + 0x9b, 0x5a, 0x24, 0xc5, 0x47, 0x9b, 0xb0, 0x2c, 0x84, 0xb0, 0x71, 0xa7, 0xd7, 0x26, 0xd1, 0x11, + 0x9d, 0xa2, 0x13, 0x54, 0x03, 0x4b, 0xbc, 0xb0, 0xce, 0xcb, 0xe8, 0x44, 0xfd, 0x21, 0xac, 0x7a, + 0xd4, 0xe1, 0x27, 0x9b, 0xa1, 0x64, 0x2b, 0x6e, 0xb9, 0x97, 0x52, 0xfe, 0x35, 0x09, 0x2e, 0x85, + 0x68, 0x9f, 0xf7, 0xb4, 0x68, 0x83, 0x34, 0x61, 0x1b, 0x2a, 0x90, 0x34, 0x9e, 0x61, 0xf3, 0x99, + 0x8e, 0x9f, 0xf3, 0x5e, 0xb9, 0x13, 0xe5, 0xef, 0x4d, 0xad, 0x6b, 0x1d, 0x19, 0x66, 0x87, 0x7a, + 0xdc, 0x2a, 0x27, 0x52, 0x1c, 0x72, 0x6a, 0x1e, 0xca, 0x39, 0xcc, 0xc3, 0x7c, 0x61, 0xf3, 0x30, + 0xff, 0x24, 0x99, 0x87, 0x39, 0xc2, 0x3c, 0xcc, 0x68, 0xf3, 0x50, 0xfe, 0x38, 0x9b, 0xc7, 0x7f, + 0x97, 0x60, 0xd9, 0xd5, 0xf3, 0x38, 0xb6, 0xf1, 0x52, 0xe7, 0x3d, 0xa1, 0x81, 0xf8, 0xcb, 0xea, + 0xc5, 0xe9, 0xc8, 0x5e, 0x94, 0x1f, 0xc2, 0x4a, 0xb0, 0xa5, 0xbc, 0x1f, 0x3e, 0x81, 0x19, 0x93, + 0xae, 0x4d, 0x79, 0x4f, 0x8c, 0x68, 0x0a, 0x5b, 0xc7, 0x2a, 0x9c, 0x46, 0xfe, 0xb7, 0x31, 0x58, + 0xaa, 0xf6, 0xed, 0x5e, 0xdf, 0xae, 0xb1, 0xd4, 0x2b, 0x6f, 0xdb, 0x27, 0x22, 0x73, 0x30, 0x9c, + 0xe9, 0x96, 0xde, 0x7a, 0xd0, 0xc7, 0xe6, 0x59, 0x20, 0x83, 0xf0, 0x25, 0xa4, 0x0d, 0xca, 0x54, + 0xb5, 0x1a, 0xc7, 0xb8, 0xa3, 0xf1, 0xd5, 0xe5, 0x77, 0x22, 0xb8, 0x84, 0x08, 0x20, 0x60, 0x94, + 0x5c, 0x99, 0x37, 0x3c, 0x5f, 0xf2, 0x2f, 0x4b, 0x30, 0xef, 0x2d, 0x46, 0x57, 0xe1, 0x52, 0xf5, + 0xa0, 0xbe, 0x7f, 0x50, 0x57, 0x6b, 0x85, 0x72, 0x69, 0x37, 0x1f, 0xc8, 0xbc, 0x2c, 0x42, 0x7a, + 0x2b, 0x5f, 0xab, 0x14, 0xd4, 0x42, 0x75, 0xe7, 0x60, 0x77, 0xaf, 0x96, 0x95, 0xd0, 0x02, 0xa4, + 0xb6, 0x0b, 0x35, 0x07, 0x10, 0x43, 0xcb, 0xb0, 0x58, 0xcc, 0xd7, 0xf3, 0xb5, 0x7a, 0x55, 0x29, + 0x39, 0xe0, 0x38, 0x01, 0x6f, 0x55, 0xb6, 0xd5, 0x07, 0x07, 0x25, 0xe5, 0x91, 0x03, 0x9e, 0x26, + 0xe4, 0xf9, 0x9d, 0x1d, 0x07, 0x90, 0xd8, 0x9a, 0x61, 0xf9, 0x25, 0xb9, 0xe1, 0x66, 0xbb, 0x6a, + 0xb6, 0x66, 0x5b, 0x2f, 0x98, 0xed, 0xba, 0x00, 0x89, 0x86, 0xd1, 0xef, 0xda, 0x3c, 0x50, 0x65, + 0x1f, 0xf2, 0x8f, 0xa6, 0x61, 0x95, 0xf7, 0x66, 0x51, 0xb3, 0xb5, 0x9a, 0xd1, 0x37, 0x1b, 0xb8, + 0x88, 0x6d, 0x4d, 0x6f, 0x5b, 0xa8, 0x43, 0xbc, 0x1f, 0x1d, 0x04, 0xb8, 0xe9, 0x24, 0x2f, 0x99, + 0x91, 0x8f, 0x48, 0xf2, 0x0d, 0xf0, 0x5a, 0x57, 0x04, 0x23, 0x9e, 0xc8, 0x24, 0x6e, 0xd1, 0x0f, + 0x41, 0x7b, 0x8e, 0xf5, 0xb1, 0x51, 0xf0, 0xc1, 0xe4, 0x75, 0x78, 0xed, 0x31, 0xf7, 0x4f, 0x25, + 0xc8, 0x06, 0xab, 0x45, 0x87, 0x70, 0xc9, 0xea, 0x6a, 0x3d, 0xeb, 0xd8, 0xb0, 0xd5, 0xe0, 0xc8, + 0xe1, 0x4a, 0xbd, 0x39, 0xbc, 0x5e, 0x31, 0x96, 0x94, 0x8b, 0x82, 0x51, 0xa0, 0x00, 0xdd, 0x03, + 0x78, 0x62, 0x1c, 0xfa, 0x7d, 0xfb, 0x1b, 0xc3, 0x99, 0xde, 0x37, 0x0e, 0xb9, 0x63, 0x98, 0x7b, + 0x22, 0x7e, 0xe6, 0xfe, 0xbe, 0x04, 0x33, 0x3c, 0x57, 0xf4, 0x06, 0x2c, 0xf4, 0x4c, 0xa3, 0x81, + 0x2d, 0x0b, 0x37, 0x55, 0x12, 0x70, 0x5a, 0x7c, 0x11, 0x92, 0x71, 0xc0, 0x34, 0x75, 0x48, 0x1c, + 0x82, 0x6d, 0xd8, 0x5a, 0x5b, 0xc5, 0x96, 0xad, 0x77, 0x34, 0xdb, 0x41, 0x67, 0xdd, 0xbe, 0x44, + 0x0b, 0x4b, 0xa2, 0x8c, 0xd1, 0xec, 0xc0, 0x82, 0x63, 0x58, 0xaa, 0x45, 0x6c, 0x8d, 0xa7, 0x72, + 0x5f, 0x1b, 0x61, 0x5e, 0xd4, 0x2e, 0x89, 0x2b, 0xf3, 0x7c, 0xca, 0xbf, 0x2a, 0xc1, 0x92, 0x40, + 0x28, 0x62, 0xab, 0x61, 0xea, 0x54, 0xf5, 0x24, 0x30, 0xf4, 0x64, 0x08, 0xe8, 0x6f, 0xf4, 0x2a, + 0xcc, 0x37, 0x75, 0xab, 0xd7, 0xd6, 0xce, 0x98, 0xd7, 0x62, 0x81, 0x5d, 0x8a, 0xc3, 0xe8, 0x9c, + 0xb3, 0x0b, 0xf3, 0x56, 0xbf, 0xd7, 0x33, 0x4c, 0xd6, 0x14, 0x2a, 0x59, 0x66, 0x73, 0x6d, 0x94, + 0x64, 0x82, 0x64, 0xeb, 0x4c, 0x49, 0x59, 0xee, 0x87, 0x5c, 0x83, 0x0b, 0x3b, 0xba, 0x65, 0x3b, + 0xf9, 0x79, 0xe1, 0xe5, 0x6f, 0x40, 0xba, 0xad, 0x75, 0x5b, 0x7d, 0xb2, 0xf6, 0x68, 0x18, 0x4d, + 0x21, 0xe6, 0xbc, 0x00, 0x16, 0x8c, 0x26, 0x26, 0x53, 0xc1, 0x91, 0xde, 0xb6, 0xb1, 0xc9, 0x05, + 0xe5, 0x5f, 0xf2, 0x21, 0x2c, 0x07, 0x98, 0x72, 0x87, 0x5a, 0x09, 0xd9, 0x78, 0x19, 0x25, 0xba, + 0x47, 0x67, 0x9e, 0x3d, 0x18, 0xf9, 0xbf, 0x49, 0xb0, 0xac, 0xe8, 0xd6, 0x49, 0xbe, 0xab, 0xb5, + 0xcf, 0x2c, 0xdd, 0x72, 0x2c, 0x86, 0x4c, 0x44, 0x9c, 0x95, 0xda, 0xc1, 0xb6, 0xa9, 0x37, 0x46, + 0x38, 0xda, 0x7d, 0xf6, 0xb9, 0x4b, 0x71, 0x95, 0x74, 0xcf, 0xfb, 0x89, 0xb6, 0x61, 0xde, 0xa2, + 0x83, 0x4a, 0x65, 0x3e, 0x3b, 0x36, 0xbe, 0xcf, 0x56, 0x52, 0x8c, 0x92, 0xe5, 0x66, 0xbf, 0x03, + 0xb3, 0x6c, 0x45, 0x21, 0x8c, 0xe9, 0x6a, 0x04, 0x8f, 0x3c, 0xc5, 0x52, 0x04, 0xb6, 0xfc, 0x2f, + 0x32, 0x90, 0xf6, 0x89, 0x88, 0x9e, 0xc2, 0x4a, 0xb7, 0xdf, 0xc1, 0xa6, 0xde, 0xd0, 0xda, 0xcc, + 0x3e, 0xc5, 0xd8, 0x62, 0x0d, 0xfd, 0x68, 0x9c, 0x86, 0xae, 0xef, 0x09, 0x16, 0xd4, 0x4c, 0x99, + 0xee, 0xca, 0x53, 0xca, 0x85, 0x6e, 0x08, 0x1c, 0x3d, 0x87, 0xd5, 0x86, 0x66, 0xe3, 0x96, 0x11, + 0x52, 0x29, 0x53, 0xc9, 0xc7, 0x63, 0x55, 0x5a, 0x70, 0x99, 0xf8, 0xab, 0x5d, 0x69, 0x84, 0x96, + 0x20, 0x0c, 0xe8, 0x44, 0xd5, 0xba, 0x46, 0xf7, 0xac, 0xa3, 0xdb, 0x67, 0x7e, 0x1f, 0xf2, 0xfe, + 0x58, 0x55, 0x7e, 0x96, 0x17, 0xd4, 0x4e, 0x65, 0xd9, 0x93, 0x00, 0x8c, 0x54, 0xd3, 0x56, 0x9b, + 0x3a, 0xcd, 0x22, 0xb9, 0xd5, 0x4c, 0x4f, 0x50, 0xcd, 0x4e, 0x51, 0x50, 0xbb, 0xd5, 0xb4, 0x03, + 0x30, 0x64, 0xc2, 0xc5, 0x13, 0xb5, 0xa3, 0xf5, 0x84, 0x37, 0x72, 0xd7, 0xf3, 0x3c, 0xbb, 0x36, + 0x5e, 0xd7, 0x7d, 0xb6, 0xab, 0xf5, 0x4a, 0x0e, 0x07, 0xb7, 0xeb, 0x4e, 0x42, 0xe0, 0xb9, 0x1d, + 0xb8, 0x10, 0xd6, 0xd5, 0xe8, 0x3d, 0x48, 0xd0, 0x64, 0x12, 0x37, 0x9a, 0x51, 0x99, 0x27, 0x86, + 0x9c, 0xdb, 0x83, 0x95, 0xf0, 0x3e, 0x3c, 0x27, 0xbf, 0x2a, 0x64, 0x83, 0x1d, 0x84, 0x3e, 0x86, + 0xb9, 0xa7, 0x7d, 0xcd, 0xd2, 0x55, 0xbd, 0x39, 0xee, 0x46, 0x46, 0x92, 0x12, 0x54, 0x9a, 0x56, + 0xee, 0xd7, 0x25, 0xc8, 0x06, 0xfb, 0xe2, 0x85, 0x38, 0xa2, 0x2a, 0x2c, 0x59, 0xb8, 0x6b, 0xe9, + 0xb6, 0xfe, 0x0c, 0xab, 0x9a, 0x6d, 0x9b, 0xfa, 0x61, 0xdf, 0xc6, 0x63, 0x26, 0xec, 0x90, 0x43, + 0x9a, 0x17, 0x94, 0xb9, 0x6f, 0x66, 0xe0, 0x42, 0x58, 0x17, 0xa2, 0xc3, 0x41, 0x31, 0x4b, 0xe7, + 0x36, 0x88, 0xf5, 0xba, 0xd6, 0x6a, 0xe1, 0x26, 0x15, 0xc4, 0xd3, 0x9a, 0x6b, 0x90, 0x32, 0x71, + 0x8b, 0x19, 0x5e, 0x53, 0xcc, 0x30, 0xc0, 0x40, 0xd4, 0xa9, 0x5b, 0x90, 0xd5, 0xfa, 0xa7, 0x7a, + 0x5b, 0xd7, 0xcc, 0x33, 0xe6, 0xf4, 0x84, 0xc7, 0x2a, 0x9f, 0x5f, 0x96, 0xbc, 0xe0, 0xc8, 0x3c, + 0xe3, 0x82, 0xe6, 0xfb, 0xb6, 0x72, 0xff, 0x49, 0x82, 0x94, 0x47, 0xde, 0xf3, 0x19, 0x93, 0x3f, + 0xaf, 0x14, 0x9b, 0x3c, 0xaf, 0x74, 0x0d, 0x80, 0x6f, 0x77, 0xdb, 0x5a, 0xcb, 0xd9, 0xf0, 0x9b, + 0x63, 0xb0, 0xba, 0x46, 0x6c, 0x9c, 0x20, 0x63, 0xd3, 0xc4, 0x4d, 0xee, 0x1c, 0x56, 0x06, 0x92, + 0xd6, 0xa5, 0x4e, 0xcf, 0x3e, 0xe3, 0x6c, 0x29, 0xe6, 0x56, 0x02, 0xe2, 0xb6, 0xd6, 0xca, 0xfd, + 0xcf, 0x18, 0x64, 0xfc, 0x7a, 0x40, 0x77, 0xc5, 0x52, 0x20, 0x3e, 0xc1, 0xb4, 0xc2, 0x17, 0x02, + 0xe6, 0xa0, 0xb1, 0x1c, 0xbc, 0xac, 0x0e, 0x5a, 0x7f, 0xc0, 0xcc, 0x25, 0x68, 0x3c, 0xbb, 0x80, + 0x4c, 0xdc, 0xd6, 0xe8, 0x48, 0x38, 0xa2, 0x01, 0x6b, 0xb7, 0x71, 0x36, 0xe6, 0x48, 0x58, 0x14, + 0x94, 0xf7, 0x04, 0x61, 0xae, 0x01, 0xf3, 0xde, 0x8a, 0xce, 0xd9, 0xeb, 0x57, 0x7d, 0xbd, 0xc6, + 0x0c, 0xda, 0xed, 0x33, 0x67, 0xfd, 0xf0, 0xbf, 0x5e, 0x81, 0x2b, 0x34, 0x58, 0xf8, 0x1a, 0xbb, + 0xa1, 0x32, 0x89, 0x20, 0x44, 0x78, 0xff, 0x15, 0x59, 0xcd, 0x8b, 0xf0, 0xfe, 0x05, 0x22, 0x88, + 0x15, 0x87, 0x8b, 0x7f, 0xda, 0x7e, 0x0c, 0x6e, 0x89, 0x7a, 0xee, 0xa0, 0xe2, 0x82, 0xc3, 0xa3, + 0xe6, 0x89, 0x2e, 0xbe, 0x27, 0x0d, 0xc6, 0x04, 0xbe, 0xc5, 0x43, 0xd4, 0xd8, 0x1d, 0xa6, 0x91, + 0x40, 0x88, 0xc0, 0x42, 0xef, 0xc1, 0x10, 0x81, 0x87, 0xe4, 0x7f, 0x4e, 0x0a, 0x8b, 0x11, 0xb8, + 0x10, 0x6c, 0xb0, 0xdc, 0x3f, 0x8f, 0x10, 0xc1, 0xe9, 0xc6, 0x11, 0x63, 0x20, 0x64, 0xe0, 0x82, + 0xd8, 0xfe, 0x90, 0x81, 0x4b, 0xc0, 0xe6, 0xd7, 0xe2, 0x79, 0x24, 0x70, 0x27, 0x28, 0xa7, 0x6e, + 0x4f, 0x04, 0xe1, 0xd6, 0xea, 0x8d, 0x20, 0x78, 0xad, 0x33, 0xe7, 0xaf, 0xd5, 0x9d, 0xc4, 0xdc, + 0x5a, 0xdb, 0x01, 0x18, 0xfa, 0x05, 0x29, 0x24, 0xa2, 0xe0, 0x75, 0xcf, 0x9e, 0xbf, 0xe3, 0xfd, + 0x2e, 0xc2, 0xed, 0xf8, 0x93, 0x10, 0x78, 0xee, 0xc7, 0x52, 0x30, 0xc2, 0xe0, 0xc2, 0x7d, 0x04, + 0x73, 0x1d, 0xbd, 0xab, 0xb2, 0xe3, 0x13, 0xc3, 0x77, 0x7e, 0xd9, 0xd1, 0x80, 0x64, 0x47, 0xef, + 0xd2, 0x5f, 0x94, 0x54, 0x3b, 0xe5, 0xa4, 0xb1, 0xb1, 0x48, 0xb5, 0x53, 0x46, 0x5a, 0x82, 0x85, + 0xa7, 0x7d, 0xad, 0x6b, 0xeb, 0x6d, 0xac, 0xf2, 0x63, 0x09, 0xd3, 0x63, 0x1c, 0x4b, 0xc8, 0x08, + 0x22, 0xfa, 0x69, 0xe5, 0xbe, 0x3f, 0x3d, 0x18, 0xe9, 0xf0, 0x76, 0xfd, 0x43, 0x09, 0x5e, 0xa5, + 0x9c, 0x5d, 0x1f, 0xa8, 0x1e, 0xeb, 0x96, 0x6d, 0xb4, 0x4c, 0xad, 0xa3, 0x1e, 0xf6, 0x1b, 0x27, + 0xd8, 0x16, 0xfb, 0x33, 0x4f, 0x5e, 0x9e, 0xc9, 0x0f, 0x80, 0xcb, 0xa2, 0xce, 0x2d, 0x5a, 0xa5, + 0xf2, 0x0a, 0x15, 0xca, 0x71, 0xaf, 0x81, 0x62, 0x2b, 0xf7, 0x8f, 0x62, 0x70, 0x6d, 0x04, 0x0f, + 0xf4, 0x5d, 0xb8, 0x1c, 0x6c, 0x5a, 0xdb, 0x78, 0x8e, 0x4d, 0x95, 0x6e, 0xbb, 0xf1, 0x45, 0xf6, + 0xaa, 0xbf, 0xa2, 0x1d, 0x82, 0x40, 0x77, 0xe1, 0xc2, 0xc8, 0xfb, 0xbd, 0x9e, 0x43, 0x1e, 0x0b, + 0x23, 0x3f, 0x20, 0x08, 0x8c, 0xfc, 0x1a, 0xa4, 0x98, 0xfa, 0x54, 0x4b, 0xff, 0x9a, 0xcd, 0x8a, + 0x71, 0x05, 0x18, 0xa8, 0xa6, 0x7f, 0x8d, 0xd1, 0x7d, 0x48, 0x73, 0x04, 0x5f, 0xd7, 0xbe, 0x3e, + 0xac, 0x6b, 0x9d, 0x8a, 0x94, 0x79, 0x46, 0xcb, 0x7a, 0x18, 0xdd, 0x06, 0xe4, 0xe5, 0xa5, 0xb2, + 0x74, 0x50, 0x82, 0xd6, 0x99, 0xf5, 0x60, 0x16, 0x08, 0x3c, 0xf7, 0x4d, 0xc2, 0x1b, 0xa9, 0x72, + 0x4b, 0xf8, 0x4d, 0x09, 0x6e, 0xe0, 0xa7, 0x7d, 0xfd, 0x99, 0xd6, 0xc6, 0xdd, 0x06, 0x56, 0x1b, + 0x6d, 0xcd, 0xb2, 0x22, 0x6d, 0xe1, 0xab, 0x97, 0xe1, 0x7c, 0x3c, 0x80, 0x60, 0xff, 0x5f, 0xf7, + 0x88, 0x52, 0x20, 0x92, 0x0c, 0x58, 0xc0, 0xaf, 0x48, 0x90, 0x73, 0xe9, 0x4b, 0x01, 0x74, 0x74, + 0x0f, 0xb2, 0x4e, 0x48, 0xa1, 0x4e, 0x70, 0xa4, 0x27, 0x23, 0x02, 0x04, 0xae, 0xd9, 0xf7, 0x60, + 0x65, 0x50, 0x2b, 0xb4, 0x47, 0x99, 0x01, 0x5c, 0x08, 0x0a, 0x4a, 0xfa, 0x36, 0xf7, 0x4b, 0x71, + 0xb8, 0x14, 0xd9, 0x38, 0x74, 0x1f, 0xe4, 0x70, 0x9e, 0x21, 0xf6, 0xf9, 0x4a, 0x18, 0x7f, 0x8f, + 0x95, 0x46, 0xf3, 0x1a, 0x34, 0xd6, 0x50, 0x5e, 0x93, 0x98, 0xec, 0x9f, 0x91, 0xc2, 0x6d, 0x56, + 0x7d, 0xc9, 0xd6, 0x10, 0xec, 0xcd, 0x17, 0xb2, 0xf6, 0xbf, 0x39, 0xeb, 0x5d, 0x45, 0x71, 0x6b, + 0xff, 0x5d, 0x09, 0xde, 0x72, 0x57, 0x42, 0xe3, 0x7a, 0xc0, 0xaf, 0x5e, 0xc6, 0xe4, 0xe7, 0x01, + 0x04, 0xad, 0xfe, 0x0d, 0x47, 0xa4, 0x87, 0xc3, 0xdd, 0xdf, 0x6f, 0xc5, 0x20, 0xe7, 0xb2, 0xf9, + 0xe3, 0x65, 0xfc, 0x28, 0x0f, 0x57, 0xbb, 0xfd, 0x8e, 0xda, 0xd4, 0x2d, 0x5b, 0xef, 0x36, 0x6c, + 0x35, 0xa0, 0x67, 0x8b, 0x1b, 0x56, 0xae, 0xdb, 0xef, 0x14, 0x39, 0x4e, 0xcd, 0xd7, 0x6e, 0x0b, + 0x7d, 0x0e, 0x17, 0x6c, 0xa3, 0x37, 0x48, 0x39, 0x91, 0x8b, 0x44, 0xb6, 0xd1, 0x0b, 0x30, 0xce, + 0xfd, 0x20, 0x0e, 0x97, 0x22, 0xf5, 0x8f, 0xf6, 0xe1, 0xf5, 0x68, 0xa3, 0x18, 0x1c, 0x9b, 0xaf, + 0x46, 0x74, 0x97, 0x67, 0x78, 0x0e, 0xe5, 0x38, 0x38, 0x42, 0xa3, 0x38, 0xfe, 0x91, 0x0d, 0xd2, + 0x21, 0xc6, 0xfb, 0x52, 0x07, 0xe9, 0x5f, 0x4b, 0x04, 0xf3, 0x08, 0x7c, 0xa0, 0xfe, 0x2d, 0x09, + 0x72, 0x03, 0x51, 0xa1, 0x33, 0x3e, 0xb9, 0x55, 0x1f, 0xbd, 0xac, 0xc0, 0x30, 0x00, 0x0c, 0x8e, + 0xcf, 0x8b, 0x27, 0xe1, 0xc5, 0xb9, 0xbf, 0x22, 0xc1, 0x65, 0x3f, 0x29, 0x5f, 0x0c, 0x72, 0x65, + 0xbc, 0xac, 0x01, 0xb9, 0x01, 0x4b, 0x6e, 0xf2, 0xdf, 0x59, 0x17, 0x70, 0xe3, 0x41, 0x4e, 0x91, + 0xe3, 0x48, 0x73, 0xff, 0x3c, 0x06, 0x57, 0x87, 0xb6, 0x09, 0xdd, 0x80, 0x34, 0x89, 0x6c, 0x5d, + 0x66, 0xcc, 0xb6, 0xe7, 0x3b, 0x7a, 0xd7, 0x61, 0x43, 0x91, 0xb4, 0xd3, 0x81, 0x1a, 0xe7, 0x3b, + 0xda, 0xa9, 0x8b, 0x14, 0xb0, 0xcc, 0xc4, 0x80, 0x65, 0xfe, 0xd2, 0x80, 0x65, 0xb2, 0xf3, 0xf7, + 0xcd, 0x6f, 0xa9, 0xfb, 0x7c, 0x7d, 0x30, 0x96, 0x79, 0xce, 0x86, 0x9b, 0xe7, 0x56, 0x52, 0xec, + 0x5f, 0xc9, 0x8f, 0x21, 0xe3, 0x1f, 0x9a, 0x68, 0x53, 0x9c, 0xaa, 0x1e, 0x67, 0x59, 0xc0, 0x4f, + 0x5c, 0x87, 0xef, 0xd8, 0xfd, 0x5a, 0x1c, 0x12, 0x2c, 0xf0, 0x7f, 0x1d, 0xd2, 0x7a, 0xd7, 0xc6, + 0x2d, 0x6c, 0x7a, 0x96, 0x1c, 0xf1, 0xf2, 0x94, 0x32, 0xcf, 0xc1, 0x0c, 0xed, 0x55, 0x48, 0x1d, + 0xb5, 0x0d, 0xcd, 0xf6, 0x2c, 0x2e, 0xa4, 0xf2, 0x94, 0x02, 0x14, 0xc8, 0x50, 0x6e, 0xc0, 0xbc, + 0x65, 0x9b, 0x7a, 0xb7, 0xa5, 0xfa, 0x8f, 0x7e, 0xa7, 0x18, 0xd4, 0xa9, 0xee, 0xd0, 0x30, 0xda, + 0x58, 0x13, 0x2b, 0x9c, 0x69, 0x7e, 0x04, 0x69, 0x9e, 0x83, 0x9d, 0xe5, 0x88, 0x73, 0xd0, 0x91, + 0x23, 0x26, 0x46, 0x1d, 0x77, 0x2c, 0x4f, 0x29, 0x19, 0x87, 0x88, 0xb1, 0xf9, 0x0e, 0x00, 0x81, + 0x70, 0x0e, 0x33, 0xfe, 0xdc, 0x93, 0x7d, 0xd6, 0xc3, 0x94, 0xba, 0x7a, 0x54, 0xd4, 0xce, 0xca, + 0x53, 0xca, 0x1c, 0xc1, 0x65, 0x84, 0x9b, 0x00, 0x4d, 0xcd, 0x16, 0x84, 0x6c, 0x4d, 0xb8, 0xe8, + 0x23, 0x2c, 0x6a, 0x36, 0x26, 0x34, 0x04, 0x8d, 0xd1, 0x14, 0x60, 0xb1, 0xa9, 0x9d, 0xa9, 0xc6, + 0x91, 0xfa, 0x1c, 0xe3, 0x13, 0x4e, 0x9a, 0xa4, 0xfb, 0xcc, 0x2b, 0x01, 0xd2, 0xb3, 0xea, 0xd1, + 0xe7, 0x18, 0x9f, 0x10, 0x89, 0x9b, 0xe2, 0x83, 0x32, 0x71, 0xf2, 0x2e, 0x3f, 0x03, 0x73, 0xce, + 0x29, 0x61, 0xf4, 0x29, 0x3d, 0xb8, 0xce, 0x8f, 0x25, 0x0f, 0xcf, 0xd0, 0x15, 0xf9, 0x79, 0xe4, + 0xf2, 0x94, 0x92, 0x6c, 0xf2, 0xdf, 0x5b, 0x19, 0x98, 0xef, 0x69, 0xa6, 0x85, 0x9b, 0xec, 0x8a, + 0x8b, 0xfc, 0x17, 0x63, 0x90, 0x14, 0x88, 0xe8, 0x75, 0x7a, 0x87, 0x40, 0xd8, 0xd4, 0x60, 0x23, + 0xe9, 0xb5, 0x02, 0x8c, 0x3e, 0x80, 0x94, 0xa7, 0x75, 0xfc, 0xea, 0x4e, 0x44, 0xbb, 0x88, 0x56, + 0xf8, 0x4f, 0xb4, 0x06, 0xd3, 0x54, 0xec, 0xf8, 0x30, 0xe5, 0x2b, 0x14, 0x07, 0x95, 0x80, 0x76, + 0x81, 0xfa, 0xb5, 0xd1, 0x15, 0x37, 0x04, 0x6e, 0x8d, 0x68, 0x27, 0xe5, 0xf1, 0xd8, 0xe8, 0x62, + 0x25, 0x69, 0xf3, 0x5f, 0xb9, 0x77, 0x20, 0x29, 0xa0, 0xe8, 0x75, 0xc8, 0xb0, 0xc3, 0xa9, 0x6a, + 0x47, 0xef, 0xf6, 0xc5, 0x8e, 0x67, 0x42, 0x49, 0x33, 0xe8, 0x2e, 0x03, 0xca, 0xff, 0x5b, 0x82, + 0x6c, 0xf0, 0xcc, 0x0d, 0x6a, 0xc3, 0x25, 0x77, 0x47, 0xd3, 0xf6, 0x9d, 0xfd, 0xb0, 0xb8, 0xba, + 0xd6, 0x47, 0x24, 0x4a, 0xfd, 0x27, 0x46, 0xac, 0xf2, 0x94, 0x72, 0x51, 0x0f, 0x2f, 0x42, 0x18, + 0x56, 0xf8, 0xb9, 0xd8, 0x60, 0x55, 0xac, 0xc7, 0x6f, 0x0f, 0x3d, 0x23, 0x3b, 0x58, 0xd1, 0xb2, + 0x19, 0x56, 0xb0, 0x95, 0x85, 0x8c, 0x9f, 0xbf, 0xfc, 0x93, 0x59, 0xb8, 0xb8, 0x6f, 0xea, 0x1d, + 0x1a, 0x0c, 0xf8, 0xd1, 0x91, 0x02, 0x19, 0x13, 0xf7, 0xda, 0x1a, 0x09, 0xc9, 0xbc, 0x9b, 0x65, + 0x6f, 0x46, 0x0a, 0x43, 0x91, 0xb9, 0x3f, 0xe3, 0x3b, 0x2c, 0x69, 0xce, 0x82, 0xab, 0xf5, 0x3e, + 0xf0, 0xa3, 0x79, 0xfe, 0xad, 0xb0, 0x1b, 0x43, 0xcf, 0x64, 0x3a, 0xcc, 0xe6, 0x4d, 0xcf, 0x37, + 0xfa, 0x53, 0xb0, 0xdc, 0x38, 0xd6, 0xe8, 0xf9, 0x3d, 0x93, 0xde, 0xa4, 0xf3, 0xef, 0x75, 0x45, + 0xed, 0x92, 0x16, 0x04, 0xcd, 0xae, 0x66, 0x9d, 0x38, 0xac, 0x97, 0x1a, 0x83, 0x60, 0x64, 0xc3, + 0xd5, 0x86, 0x79, 0xd6, 0xb3, 0x0d, 0x55, 0x28, 0xe2, 0xe8, 0xe8, 0x54, 0x3d, 0xea, 0x61, 0xff, + 0x76, 0x57, 0xd4, 0x0d, 0x9e, 0x02, 0xa5, 0xe5, 0x6a, 0xb9, 0x77, 0x74, 0x7a, 0xaf, 0xe7, 0xea, + 0xe5, 0x52, 0x23, 0xaa, 0x10, 0xf5, 0xe0, 0xf2, 0x91, 0x7e, 0x8a, 0x9b, 0x6c, 0x7d, 0xc5, 0x26, + 0x09, 0xe2, 0x59, 0x7d, 0xdb, 0x5e, 0x1b, 0x91, 0x99, 0xde, 0x53, 0xdc, 0x24, 0xd3, 0xe0, 0x96, + 0xa0, 0x73, 0xaa, 0x5c, 0x3d, 0x8a, 0x28, 0x43, 0x35, 0xc8, 0x0e, 0x54, 0x33, 0x33, 0xfc, 0x08, + 0xeb, 0x00, 0xf7, 0x85, 0xc3, 0x00, 0x53, 0x1b, 0xae, 0x0a, 0xad, 0x3d, 0xd7, 0xed, 0x63, 0xf7, + 0x96, 0x97, 0xa8, 0x61, 0x76, 0xa8, 0xf2, 0xb8, 0x66, 0x3e, 0xd7, 0xed, 0x63, 0x31, 0xa0, 0x5c, + 0xe5, 0x99, 0x51, 0x85, 0xe8, 0x01, 0x64, 0xa9, 0x1b, 0xe9, 0x69, 0xa6, 0x63, 0x63, 0xc9, 0xa1, + 0x37, 0x05, 0x88, 0xbb, 0xd8, 0xd7, 0x4c, 0xd7, 0xca, 0xe8, 0x44, 0xe2, 0x42, 0xd0, 0xe7, 0x80, + 0xb8, 0x15, 0x1c, 0x6b, 0xd6, 0xb1, 0x60, 0x3a, 0x37, 0xf4, 0x50, 0x06, 0xeb, 0xfa, 0xb2, 0x66, + 0x1d, 0xbb, 0x7b, 0x9b, 0x8d, 0x00, 0x8c, 0x1e, 0x1d, 0x25, 0xae, 0xdd, 0x3a, 0xd6, 0x8f, 0x1c, + 0x61, 0x53, 0x43, 0xf5, 0x4e, 0x5c, 0x5f, 0x8d, 0xa0, 0xbb, 0x7a, 0x6f, 0xfa, 0x41, 0x21, 0x83, + 0xfc, 0x1b, 0x09, 0x32, 0xfe, 0x56, 0xa2, 0x87, 0xb0, 0x40, 0x35, 0x64, 0x1b, 0x2a, 0x3f, 0x03, + 0xcb, 0x6f, 0xa3, 0xad, 0x8f, 0xa5, 0x25, 0xe7, 0x53, 0x49, 0x13, 0x36, 0x75, 0xa3, 0xc4, 0x98, + 0xc8, 0xdf, 0x93, 0x98, 0xff, 0x25, 0x65, 0xe8, 0x12, 0x2c, 0xd7, 0x2b, 0xbb, 0x25, 0x75, 0x3f, + 0xaf, 0xd4, 0x03, 0xa7, 0xa0, 0x92, 0x30, 0xfd, 0xa8, 0x94, 0x57, 0xb2, 0x12, 0x9a, 0x83, 0xc4, + 0x6e, 0x75, 0xaf, 0x5e, 0xce, 0xc6, 0x50, 0x16, 0xe6, 0x8b, 0xf9, 0x47, 0x6a, 0xf5, 0x9e, 0xca, + 0x20, 0x71, 0xb4, 0x00, 0x29, 0x0e, 0xf9, 0xbc, 0x54, 0xfa, 0x2c, 0x3b, 0x4d, 0x50, 0xc8, 0x2f, + 0x02, 0xa1, 0xf4, 0x09, 0x82, 0x52, 0xae, 0x1e, 0x28, 0x04, 0x52, 0xcc, 0x3f, 0xca, 0xce, 0xc8, + 0x35, 0xc8, 0x06, 0xb5, 0x8f, 0x7e, 0x0a, 0x80, 0x77, 0xe1, 0xe8, 0x7b, 0x07, 0x8c, 0x98, 0xde, + 0x3b, 0x68, 0x88, 0x9f, 0x72, 0x15, 0xd0, 0xa0, 0x7b, 0x43, 0x1f, 0xc1, 0x5c, 0x17, 0x3f, 0x9f, + 0x24, 0x5d, 0xdb, 0xc5, 0xcf, 0xe9, 0x2f, 0xf9, 0x32, 0x5c, 0x8a, 0xb4, 0x70, 0x39, 0x03, 0xf3, + 0x5e, 0xcf, 0x27, 0xff, 0x24, 0x06, 0x69, 0xe2, 0xb6, 0xac, 0xba, 0x51, 0x69, 0x75, 0x0d, 0x13, + 0xa3, 0x75, 0x40, 0x8e, 0xc3, 0xb2, 0x48, 0x2f, 0x5a, 0x27, 0x3a, 0x3b, 0xc4, 0x3f, 0x47, 0x4d, + 0xcd, 0x29, 0xab, 0x1b, 0xb5, 0x13, 0xbd, 0x87, 0xce, 0xe0, 0x72, 0xc3, 0xe8, 0x74, 0x8c, 0xae, + 0xea, 0x27, 0xd3, 0x29, 0x3b, 0x3e, 0xa3, 0x7f, 0x38, 0xc4, 0x63, 0x3a, 0x55, 0xaf, 0x17, 0x28, + 0x1f, 0x1f, 0x8c, 0x38, 0x97, 0x86, 0x03, 0x16, 0x15, 0xb3, 0x32, 0xf9, 0x87, 0x12, 0x2c, 0x85, + 0xd0, 0xa0, 0x9b, 0x20, 0x17, 0xaa, 0xbb, 0xbb, 0xd5, 0x3d, 0xb5, 0x50, 0xce, 0x2b, 0x35, 0xb5, + 0x5e, 0x55, 0x2b, 0xdb, 0x7b, 0x55, 0x25, 0x78, 0x55, 0x31, 0x05, 0xb3, 0x7b, 0x07, 0xbb, 0x25, + 0xa5, 0x52, 0xc8, 0x4a, 0xe8, 0x02, 0x64, 0xf3, 0x3b, 0xfb, 0xe5, 0xbc, 0x7a, 0xb0, 0xbf, 0x5f, + 0x52, 0xd4, 0x42, 0xbe, 0x56, 0xca, 0xc6, 0x5c, 0xe8, 0x4e, 0xf5, 0x73, 0x01, 0xa5, 0xc6, 0xb3, + 0x7f, 0xb0, 0x57, 0xa8, 0x1f, 0xe4, 0xeb, 0x95, 0xea, 0x5e, 0x76, 0x1a, 0x65, 0x00, 0x3e, 0x2f, + 0x57, 0xea, 0xa5, 0xda, 0x7e, 0xbe, 0x50, 0xca, 0x26, 0xb6, 0xe6, 0x01, 0x5c, 0x6d, 0xc8, 0xff, + 0x95, 0xc8, 0x19, 0x32, 0x09, 0xbc, 0x05, 0x8b, 0x64, 0x72, 0xa1, 0xae, 0x51, 0x14, 0xf3, 0xb3, + 0x3d, 0x59, 0x5e, 0xe0, 0x90, 0xa1, 0xd7, 0x20, 0xd3, 0xed, 0x77, 0x0e, 0xb1, 0x49, 0x94, 0x4b, + 0x4a, 0xf9, 0x2d, 0x8a, 0x79, 0x06, 0xad, 0x1b, 0x84, 0x31, 0x59, 0xe7, 0x98, 0x98, 0xac, 0x6f, + 0xb1, 0x6a, 0x98, 0x4d, 0xcc, 0x4e, 0xd8, 0x27, 0xc9, 0xf4, 0x46, 0x81, 0x55, 0x02, 0x43, 0x0f, + 0xe1, 0x42, 0x68, 0x5f, 0x4d, 0x0f, 0x3d, 0x58, 0xe5, 0xd3, 0xb1, 0x82, 0x1a, 0x83, 0xfd, 0xf1, + 0x3b, 0x12, 0xac, 0x46, 0xcd, 0x12, 0xe8, 0xbb, 0x90, 0x0a, 0x26, 0x20, 0x46, 0xd9, 0x34, 0xb4, + 0xbd, 0xc9, 0xec, 0x54, 0x30, 0xdb, 0x30, 0x92, 0xbc, 0x3f, 0x34, 0xe9, 0x20, 0x79, 0x97, 0x76, + 0xf2, 0x2f, 0xc7, 0x60, 0x21, 0x28, 0xf2, 0x36, 0xcc, 0x8a, 0xf4, 0x19, 0x5b, 0xeb, 0xde, 0x19, + 0x6f, 0xce, 0xe2, 0xdf, 0x8a, 0xa0, 0xa6, 0x87, 0xe5, 0xf8, 0x6a, 0x75, 0x1d, 0xe2, 0x1d, 0xbd, + 0x3b, 0x56, 0xf3, 0x09, 0x22, 0xc5, 0xd7, 0x4e, 0xc7, 0x6a, 0x2f, 0x41, 0x44, 0x15, 0x58, 0xe4, + 0x53, 0x18, 0xbd, 0x30, 0xe6, 0xae, 0x99, 0x46, 0x51, 0x67, 0x3d, 0x64, 0xcc, 0x91, 0xfc, 0xde, + 0x34, 0x5c, 0x8a, 0x0c, 0x34, 0x5e, 0xd8, 0xf1, 0xa1, 0x0f, 0x61, 0x96, 0xde, 0xe3, 0xe3, 0x77, + 0x26, 0xc6, 0xb8, 0x6f, 0xc5, 0xd1, 0x91, 0x05, 0x0b, 0xdc, 0xe5, 0x68, 0xed, 0xde, 0xb1, 0x76, + 0x88, 0xd9, 0x9e, 0x66, 0x26, 0x72, 0x7f, 0x2d, 0xb2, 0x15, 0xeb, 0xf7, 0x8e, 0x4e, 0x99, 0x07, + 0xd9, 0xa3, 0xdb, 0xe1, 0x79, 0xce, 0x8f, 0xcc, 0xd5, 0xac, 0x0a, 0x01, 0x41, 0x6f, 0x02, 0xbf, + 0x3e, 0xef, 0x56, 0x9a, 0xe0, 0x4e, 0x31, 0xc3, 0x0a, 0x1c, 0xd4, 0x15, 0x48, 0x98, 0x5a, 0x53, + 0x3f, 0xa5, 0x91, 0x4e, 0xa2, 0x3c, 0xa5, 0xb0, 0x4f, 0x7a, 0x78, 0xa5, 0x6f, 0x9a, 0x46, 0x4b, + 0xb3, 0x3d, 0x37, 0xfe, 0x79, 0x10, 0x31, 0xf2, 0xb8, 0xec, 0xa2, 0x43, 0x2b, 0x40, 0xf2, 0x5f, + 0x96, 0xe0, 0x62, 0x44, 0x0b, 0xd0, 0x1a, 0xdc, 0xbc, 0x77, 0xef, 0x0b, 0x95, 0x3b, 0xc2, 0xbd, + 0x7c, 0xbd, 0xf2, 0xb0, 0xa4, 0x52, 0x5f, 0xb6, 0x55, 0xaa, 0x0f, 0x73, 0x84, 0x64, 0xda, 0x2b, + 0x7d, 0x91, 0x2f, 0x96, 0x0a, 0x95, 0xdd, 0xfc, 0x4e, 0x36, 0x86, 0xae, 0xc0, 0xaa, 0xeb, 0x13, + 0x19, 0x0b, 0x55, 0xa0, 0xc7, 0xd1, 0x22, 0xa4, 0xfd, 0xa0, 0xe9, 0x2d, 0x80, 0xa4, 0xd0, 0x91, + 0xfc, 0x7f, 0x24, 0x98, 0x73, 0xba, 0x1f, 0x55, 0x60, 0x8e, 0x46, 0x10, 0xba, 0x38, 0xb2, 0x1e, + 0x1d, 0xf3, 0xd7, 0x05, 0x9e, 0x43, 0x4d, 0xd7, 0xd2, 0x02, 0x4a, 0x58, 0xf5, 0xbb, 0xcf, 0x4d, + 0xad, 0xd7, 0xc3, 0xc2, 0x1d, 0x44, 0xb1, 0x3a, 0x10, 0x78, 0x3e, 0x56, 0x0e, 0x35, 0xda, 0x85, + 0xd4, 0x49, 0xc7, 0x52, 0x05, 0xb3, 0xe1, 0x41, 0xfe, 0x67, 0x1d, 0xeb, 0xf3, 0x41, 0x6e, 0x70, + 0xe2, 0x80, 0xb7, 0x92, 0x30, 0xc3, 0x4e, 0x14, 0xc8, 0xb7, 0x00, 0x0d, 0x36, 0x23, 0xec, 0xb0, + 0xa9, 0x7c, 0x13, 0xd0, 0xa0, 0x94, 0x28, 0x0b, 0x71, 0x31, 0xb8, 0xe6, 0x15, 0xf2, 0x53, 0xfe, + 0x0a, 0x96, 0x42, 0x04, 0x20, 0xee, 0x8d, 0x13, 0xab, 0x2e, 0x01, 0x70, 0x10, 0x41, 0xb8, 0x09, + 0x0b, 0xee, 0x68, 0xf5, 0x9e, 0x67, 0x4d, 0x3b, 0x03, 0x92, 0x9e, 0xbf, 0xff, 0x43, 0x09, 0x16, + 0x02, 0x91, 0x20, 0xba, 0x05, 0x59, 0x8f, 0xeb, 0x55, 0x9b, 0xda, 0x99, 0x58, 0xee, 0x66, 0x5c, + 0x0f, 0x5b, 0xd4, 0xce, 0x2c, 0x82, 0xe9, 0xf1, 0xf1, 0x0c, 0x93, 0xcd, 0x52, 0x19, 0xd7, 0x95, + 0x53, 0x4c, 0xcf, 0xe0, 0x8f, 0x4f, 0x36, 0xf8, 0xf3, 0x3e, 0xbf, 0x33, 0x3d, 0x9e, 0xdf, 0xa1, + 0x27, 0x87, 0xc4, 0x07, 0xe9, 0xa0, 0x0e, 0xb6, 0x8f, 0x8d, 0xa6, 0xfc, 0xa3, 0x18, 0x5c, 0x8c, + 0x58, 0x54, 0x23, 0x03, 0x16, 0x06, 0x57, 0xe7, 0xc3, 0x8e, 0x81, 0x45, 0x30, 0x8a, 0x80, 0x2b, + 0x41, 0xee, 0xb9, 0x7f, 0x26, 0xc1, 0x4a, 0x38, 0xee, 0x0b, 0x3f, 0x92, 0xa2, 0xc3, 0x6a, 0x4f, + 0xac, 0xc5, 0x03, 0x89, 0x00, 0x3e, 0x76, 0xd6, 0xa3, 0x8f, 0xd3, 0x84, 0x2d, 0xe1, 0x95, 0x8b, + 0xbd, 0xf0, 0x02, 0xf9, 0x7b, 0x71, 0x58, 0xa2, 0x9d, 0x16, 0x68, 0xc2, 0x07, 0x30, 0x43, 0x8f, + 0x08, 0x8d, 0x7b, 0xe6, 0x8f, 0x63, 0xa3, 0x22, 0xcc, 0x35, 0x8c, 0x6e, 0x53, 0xf7, 0xdc, 0xab, + 0xbd, 0x39, 0x34, 0x67, 0x51, 0x10, 0xd8, 0x8a, 0x4b, 0x88, 0x4e, 0x86, 0x28, 0x60, 0xfa, 0x3c, + 0x0a, 0x28, 0x4f, 0x45, 0xaa, 0x60, 0x78, 0x86, 0x27, 0xf1, 0x92, 0x33, 0x3c, 0x21, 0xab, 0xb2, + 0x1f, 0x4b, 0xb0, 0x1c, 0x9a, 0xbf, 0x41, 0x2a, 0x2c, 0xb3, 0x4b, 0xce, 0xe1, 0x96, 0xbd, 0x36, + 0xac, 0x4f, 0x02, 0x06, 0x70, 0xe1, 0x68, 0x10, 0x68, 0xa1, 0x47, 0xb0, 0xc4, 0xd3, 0x4d, 0x56, + 0xbf, 0xd7, 0x33, 0xb1, 0x65, 0xf1, 0x5c, 0x53, 0x7c, 0x48, 0xd6, 0x8d, 0xc9, 0x5a, 0x73, 0x09, + 0x14, 0x64, 0x06, 0x41, 0x96, 0xfc, 0x08, 0x16, 0x07, 0x10, 0xfd, 0xd6, 0x21, 0x9d, 0xd3, 0x3a, + 0xe4, 0x5f, 0x4f, 0xc0, 0x42, 0xa0, 0x18, 0xd5, 0x21, 0x85, 0x4f, 0xdd, 0x16, 0x0c, 0x7f, 0x12, + 0x28, 0x40, 0xbc, 0x5e, 0x72, 0x29, 0x15, 0x2f, 0x9b, 0xdc, 0xef, 0x92, 0xe9, 0xd0, 0xa9, 0xe3, + 0x7c, 0x67, 0xec, 0x4a, 0x90, 0x34, 0x7a, 0xd8, 0xd4, 0x6c, 0x7e, 0x81, 0x36, 0x33, 0x24, 0x6f, + 0xd6, 0xa6, 0xfd, 0xa2, 0xb5, 0xab, 0x9c, 0x40, 0x71, 0x48, 0xdd, 0xb4, 0xff, 0xf4, 0xd8, 0x69, + 0xff, 0xdc, 0x57, 0x00, 0x8e, 0xf4, 0x16, 0xda, 0x07, 0x70, 0x74, 0x28, 0x4c, 0xe8, 0xed, 0x31, + 0x35, 0xe4, 0xf6, 0x83, 0x87, 0x47, 0xee, 0x87, 0x31, 0x48, 0x79, 0x74, 0x87, 0x3a, 0x64, 0x42, + 0x69, 0xd1, 0x23, 0x6c, 0x4e, 0x93, 0x59, 0x36, 0x61, 0x6b, 0xf2, 0x9e, 0x58, 0xdf, 0x61, 0xac, + 0x1c, 0x5d, 0x2c, 0xb4, 0xfd, 0x00, 0x54, 0xf3, 0x35, 0x88, 0x75, 0xf9, 0x3b, 0x93, 0x36, 0x88, + 0x0c, 0x56, 0x0f, 0x1b, 0xf9, 0x13, 0x58, 0x08, 0x54, 0x8c, 0xae, 0xc3, 0x95, 0x9d, 0xea, 0x76, + 0xa5, 0x90, 0xdf, 0x51, 0xab, 0xfb, 0x25, 0x25, 0x5f, 0xaf, 0x2a, 0x81, 0x88, 0x6c, 0x16, 0xe2, + 0xf9, 0xbd, 0x62, 0x56, 0x72, 0x32, 0xf7, 0x7f, 0x47, 0x82, 0x95, 0xf0, 0x8b, 0x82, 0x64, 0x19, + 0xe9, 0x0c, 0xe7, 0xc0, 0x95, 0x9a, 0xac, 0xa7, 0x80, 0xdd, 0xa7, 0x69, 0xc1, 0xaa, 0x7f, 0xec, + 0xab, 0x56, 0xbf, 0xd3, 0xd1, 0x4c, 0xdd, 0x39, 0x59, 0x7c, 0x7b, 0xac, 0x6b, 0x8a, 0x35, 0x4a, + 0x75, 0xa6, 0x5c, 0xb4, 0x43, 0xc0, 0x3a, 0xb6, 0xe4, 0x1f, 0xce, 0xc0, 0x72, 0x28, 0xc9, 0x0b, + 0xde, 0x15, 0x73, 0xc6, 0x4c, 0x6c, 0x92, 0x31, 0xf3, 0x30, 0xe8, 0x24, 0x79, 0xef, 0x4e, 0x3a, + 0xed, 0x05, 0xb8, 0x44, 0x3b, 0xd4, 0xc4, 0x4b, 0x72, 0xa8, 0x0f, 0x9c, 0xe7, 0x49, 0x84, 0x43, + 0xe5, 0xf9, 0xd3, 0xf1, 0x9d, 0x69, 0xc6, 0xef, 0x4c, 0x51, 0x1d, 0x66, 0xd9, 0x5e, 0xa0, 0xd8, + 0x58, 0xbf, 0x3b, 0x49, 0x8f, 0xaf, 0x8b, 0x9e, 0x67, 0x17, 0xda, 0x04, 0xab, 0x70, 0x2b, 0x9c, + 0x0d, 0xb7, 0xc2, 0xdc, 0xaf, 0x48, 0x90, 0xf6, 0xf1, 0x71, 0x37, 0x14, 0x25, 0xcf, 0x86, 0x22, + 0x7a, 0x04, 0xd3, 0xce, 0xc9, 0xf8, 0x4c, 0x64, 0xe0, 0x15, 0x2e, 0x67, 0x40, 0xbd, 0xb4, 0x9a, + 0x82, 0xd1, 0xc4, 0x0a, 0x65, 0x89, 0x56, 0x61, 0xb6, 0xc9, 0x76, 0x62, 0xd9, 0x96, 0xa2, 0x22, + 0x3e, 0xe5, 0xaf, 0x60, 0x35, 0x8a, 0x96, 0xac, 0xaa, 0xea, 0x4a, 0x7e, 0xaf, 0x76, 0xaf, 0xaa, + 0xec, 0xd2, 0xe4, 0x8f, 0xaa, 0x94, 0x6a, 0x07, 0x3b, 0x75, 0xb5, 0x50, 0x2d, 0x86, 0xa4, 0x97, + 0x6a, 0x07, 0x85, 0x42, 0xa9, 0x56, 0x63, 0xc9, 0xc8, 0x92, 0xa2, 0x54, 0x95, 0x6c, 0x4c, 0x36, + 0x20, 0x59, 0x6b, 0x1c, 0xe3, 0x66, 0xbf, 0x8d, 0xd1, 0x23, 0xc8, 0x99, 0xb8, 0xd1, 0x37, 0x4d, + 0x7a, 0x3e, 0xa5, 0x87, 0x4d, 0xdd, 0x68, 0xaa, 0xe2, 0xf9, 0x3f, 0x3e, 0x38, 0x2e, 0x0d, 0x6c, + 0x4e, 0x16, 0x39, 0x42, 0x79, 0x4a, 0x59, 0x75, 0xc9, 0xf7, 0x29, 0xb5, 0x28, 0x23, 0x51, 0x2e, + 0xbb, 0x17, 0x29, 0xff, 0xbd, 0x18, 0x2c, 0x04, 0xef, 0x01, 0x9e, 0xf3, 0xc6, 0xdb, 0x75, 0x48, + 0x35, 0xdd, 0x3b, 0x60, 0x5c, 0x73, 0x5e, 0x50, 0xf0, 0xb9, 0xa3, 0xe9, 0x89, 0x9e, 0x3b, 0xfa, + 0x18, 0x52, 0xfd, 0x9e, 0xbb, 0x29, 0x99, 0x18, 0x4d, 0xcc, 0xd0, 0x29, 0xf1, 0xe0, 0xa5, 0xe7, + 0x99, 0x73, 0x5f, 0x7a, 0x96, 0xff, 0x49, 0x0c, 0x50, 0x71, 0xe0, 0xbe, 0xf8, 0x9f, 0x44, 0xb5, + 0x85, 0x3e, 0x33, 0x31, 0xf3, 0x82, 0xcf, 0x4c, 0xc8, 0x4f, 0x21, 0x51, 0x32, 0x4d, 0xc3, 0x44, + 0xb7, 0xdd, 0x71, 0xc6, 0xcc, 0x19, 0x09, 0xa6, 0x66, 0xaf, 0xb1, 0x5e, 0xa3, 0xcf, 0x4d, 0x3a, + 0x63, 0x0f, 0xdd, 0x65, 0x5b, 0xeb, 0x54, 0x4a, 0x11, 0x36, 0x0e, 0x6d, 0x88, 0x8b, 0x2d, 0xff, + 0x28, 0x01, 0x70, 0xdf, 0x38, 0xac, 0x9b, 0x7a, 0xab, 0x85, 0xcd, 0x6f, 0xaf, 0xab, 0xee, 0x43, + 0x4a, 0xd8, 0xd9, 0x13, 0xe3, 0x90, 0x77, 0xd5, 0xb8, 0x77, 0x68, 0x49, 0x70, 0xa0, 0x3b, 0x30, + 0x12, 0xcb, 0xd9, 0x4c, 0x5e, 0x31, 0x65, 0x44, 0xc5, 0x72, 0x6e, 0xcb, 0xd6, 0xf9, 0x5f, 0xc5, + 0x21, 0x45, 0xef, 0xc1, 0x0c, 0x26, 0xda, 0x16, 0x07, 0x52, 0xa2, 0x82, 0x39, 0xda, 0x25, 0x0a, + 0xc7, 0x0d, 0xda, 0xdc, 0xec, 0x8b, 0xd8, 0x5c, 0x72, 0x22, 0x9b, 0xfb, 0x14, 0xd2, 0x6d, 0xcd, + 0xb2, 0x55, 0xb3, 0xdf, 0x65, 0xe4, 0x73, 0x23, 0xc9, 0x53, 0x84, 0x40, 0xe9, 0x77, 0x29, 0xfd, + 0x4f, 0xc3, 0x0c, 0x7b, 0xa8, 0x74, 0x15, 0xe8, 0xcc, 0x70, 0x6b, 0xb4, 0xd2, 0xb8, 0xa5, 0x71, + 0xba, 0x5c, 0x0d, 0x66, 0x85, 0xa1, 0x7c, 0x17, 0x92, 0x16, 0xf7, 0xc7, 0x23, 0xc2, 0x11, 0xe1, + 0xb6, 0xcb, 0x53, 0x8a, 0x43, 0xb2, 0x35, 0x07, 0xb3, 0xbc, 0x1f, 0xe4, 0x32, 0xcc, 0xb0, 0x6a, + 0xd0, 0x0a, 0xa0, 0x5a, 0x3d, 0x5f, 0x3f, 0xa8, 0x0d, 0xce, 0x09, 0xe5, 0x52, 0x7e, 0xa7, 0x5e, + 0x7e, 0x94, 0x95, 0x10, 0xc0, 0xcc, 0x7e, 0xfe, 0xa0, 0x56, 0x2a, 0xb2, 0x77, 0x11, 0x0b, 0xf9, + 0xbd, 0x42, 0x69, 0x67, 0xa7, 0x54, 0xcc, 0xc6, 0xb7, 0x12, 0x10, 0x7f, 0x62, 0x1c, 0xca, 0xbf, + 0x13, 0x83, 0x19, 0x76, 0x07, 0x15, 0x3d, 0x80, 0xb4, 0xa5, 0x3d, 0xc3, 0xaa, 0xe7, 0x59, 0xbe, + 0x61, 0x69, 0x2a, 0x46, 0xb5, 0x5e, 0xd3, 0x9e, 0x61, 0xf1, 0x62, 0x64, 0x79, 0x4a, 0x99, 0xb7, + 0x3c, 0xdf, 0xa8, 0x0c, 0xb3, 0xbd, 0xfe, 0xa1, 0x6a, 0xf5, 0x0f, 0x47, 0xbc, 0x50, 0xc1, 0x99, + 0xed, 0xf7, 0x0f, 0xdb, 0xba, 0x75, 0x5c, 0x37, 0xf6, 0xfb, 0x87, 0xb5, 0xfe, 0x61, 0x79, 0x4a, + 0x99, 0xe9, 0xd1, 0x5f, 0x39, 0x15, 0xe6, 0xbd, 0x35, 0xa1, 0xaa, 0xf3, 0x30, 0x82, 0x6f, 0x7f, + 0x7f, 0x6d, 0xfc, 0x87, 0x11, 0xc4, 0x5b, 0x08, 0xfc, 0xe2, 0xe4, 0x1b, 0xb0, 0x10, 0xa8, 0x9d, + 0x44, 0x0c, 0xb6, 0xd1, 0xe3, 0xf7, 0x81, 0xe6, 0x14, 0xf6, 0x41, 0x66, 0x3d, 0x76, 0x59, 0x57, + 0xfe, 0x0d, 0x09, 0xae, 0x14, 0xa8, 0xbd, 0x06, 0x2f, 0xc7, 0x8f, 0x78, 0x3c, 0xe3, 0x01, 0x64, + 0x07, 0x6e, 0xdf, 0xc7, 0x26, 0xba, 0x7d, 0xbf, 0x10, 0x78, 0xda, 0x02, 0x5d, 0x83, 0x94, 0xf3, + 0x04, 0x86, 0xde, 0xe4, 0x4e, 0x05, 0x04, 0xa8, 0xd2, 0x94, 0x7f, 0x4f, 0x82, 0x2b, 0x07, 0x74, + 0x7c, 0x44, 0x08, 0x1b, 0xe6, 0xcd, 0xbe, 0x05, 0x41, 0xdd, 0x51, 0x4d, 0xb7, 0x98, 0xe2, 0x11, + 0xc3, 0x92, 0xc6, 0xaf, 0xbb, 0x9a, 0x75, 0x22, 0x46, 0x35, 0xf9, 0x2d, 0x6f, 0xc0, 0xa5, 0x6d, + 0x6c, 0x8f, 0xdf, 0x00, 0xf9, 0x29, 0x5c, 0x66, 0x77, 0xd3, 0x7d, 0x14, 0xd6, 0xa8, 0x0e, 0xba, + 0x0a, 0xd0, 0xd3, 0x5a, 0x58, 0xb5, 0x8d, 0x13, 0xfe, 0xc2, 0xd3, 0x9c, 0x32, 0x47, 0x20, 0x75, + 0x02, 0x40, 0x97, 0x81, 0x7e, 0xb8, 0x3b, 0x3d, 0x09, 0x25, 0x49, 0x00, 0x74, 0x9f, 0xe7, 0x57, + 0x25, 0xb8, 0x12, 0x5e, 0x27, 0xbf, 0x16, 0x5f, 0x83, 0xc5, 0xa0, 0x52, 0xc5, 0xda, 0x76, 0x5c, + 0xad, 0x66, 0x03, 0x5a, 0xb5, 0xd0, 0x4d, 0x58, 0xe8, 0xe2, 0x53, 0x5b, 0x1d, 0x10, 0x3b, 0x4d, + 0xc0, 0xfb, 0x42, 0x74, 0x79, 0x13, 0xae, 0x14, 0x71, 0x1b, 0x4f, 0x62, 0x05, 0x74, 0x13, 0x80, + 0xd9, 0xb9, 0xeb, 0xed, 0x46, 0x69, 0x70, 0x0b, 0x52, 0x4f, 0x8c, 0x43, 0x95, 0xfb, 0x2d, 0x6e, + 0x34, 0xaf, 0x8e, 0x74, 0xa2, 0x0a, 0x3c, 0x71, 0xe7, 0xd7, 0xab, 0x00, 0x9c, 0xde, 0x35, 0xe9, + 0x39, 0x0e, 0xa9, 0x34, 0xc9, 0x82, 0xf5, 0x22, 0xb3, 0xe8, 0x41, 0xb1, 0xc2, 0x8c, 0xf9, 0x65, + 0x88, 0xf4, 0x42, 0xd6, 0xbb, 0x06, 0x17, 0xb6, 0xb1, 0x3d, 0x96, 0xb0, 0xf2, 0x4f, 0x24, 0x58, + 0x62, 0x3a, 0x2f, 0xb6, 0x7b, 0xf7, 0x8d, 0xc3, 0x51, 0xfa, 0x0e, 0x84, 0x0c, 0xb1, 0x17, 0x09, + 0x19, 0x2a, 0x90, 0x34, 0x75, 0xeb, 0x84, 0x32, 0x8a, 0x0f, 0x3f, 0xc3, 0x15, 0xf6, 0x24, 0x43, + 0x79, 0x4a, 0x99, 0x25, 0xf4, 0x84, 0xd5, 0x32, 0xcc, 0x10, 0x9d, 0xeb, 0x4d, 0xfe, 0x24, 0x4f, + 0xe2, 0x89, 0x71, 0x58, 0x69, 0x8a, 0xc9, 0xe7, 0x17, 0x25, 0x58, 0x21, 0x43, 0xc5, 0x55, 0xc9, + 0xb7, 0x39, 0x32, 0xd1, 0x25, 0x48, 0xd2, 0x2d, 0x6b, 0xf5, 0xf0, 0x8c, 0x8b, 0x33, 0x4b, 0xbf, + 0xb7, 0xce, 0x88, 0x24, 0x17, 0x07, 0x24, 0xe1, 0xe3, 0xb5, 0x08, 0xf3, 0x1e, 0xbb, 0x11, 0x43, + 0x75, 0x0c, 0xc3, 0x49, 0xb9, 0x86, 0x33, 0xfe, 0x00, 0xbd, 0x03, 0x17, 0xd9, 0x00, 0x1d, 0xcf, + 0x4e, 0xfe, 0x6a, 0x0c, 0xb2, 0xc1, 0xee, 0x24, 0xeb, 0x14, 0xfe, 0xfe, 0xbb, 0x7f, 0x76, 0x8c, + 0x5a, 0xa7, 0xf8, 0xe7, 0xc5, 0xb4, 0xe5, 0x7b, 0xc0, 0xe8, 0xa5, 0xbe, 0xf4, 0x14, 0xf9, 0x62, + 0x53, 0x3c, 0xfa, 0xdd, 0x2d, 0xcf, 0x5b, 0x1a, 0xd3, 0x13, 0xbd, 0xa5, 0xf1, 0x2f, 0x13, 0x30, + 0xc3, 0x46, 0x4f, 0xa8, 0x3f, 0x78, 0x9f, 0x3f, 0x65, 0x3d, 0xfc, 0x35, 0x77, 0xc6, 0xc0, 0xf3, + 0x76, 0xf5, 0x27, 0xf4, 0x1d, 0x4c, 0x1b, 0xf3, 0xcc, 0xe8, 0xcd, 0xa1, 0x74, 0xc4, 0x1c, 0x48, + 0xc0, 0x86, 0x15, 0x46, 0x84, 0xbe, 0x80, 0x79, 0x3a, 0xb6, 0xc4, 0x8a, 0x85, 0xc5, 0xf6, 0xef, + 0x9e, 0xe3, 0x78, 0x77, 0x79, 0x4a, 0x49, 0x99, 0x9e, 0x0b, 0xcd, 0x8f, 0x41, 0xcc, 0xb5, 0x0e, + 0xf3, 0xe1, 0xc7, 0xed, 0xa2, 0x5e, 0x12, 0x2a, 0x4f, 0x29, 0xa2, 0xc7, 0x05, 0xef, 0x17, 0x7a, + 0x61, 0xf8, 0x23, 0x00, 0xfa, 0x56, 0xe8, 0xb8, 0x6b, 0x80, 0x39, 0x8a, 0x4d, 0x49, 0xdf, 0x87, + 0x24, 0xee, 0x36, 0xc7, 0x8d, 0xff, 0x67, 0x71, 0xb7, 0x49, 0xc9, 0x6e, 0x41, 0xd6, 0x33, 0x62, + 0x99, 0x81, 0x01, 0xed, 0xf9, 0x8c, 0x3b, 0x24, 0xa9, 0x6d, 0xb9, 0xcb, 0x9a, 0xd4, 0xf8, 0xcb, + 0x1a, 0xb9, 0x01, 0x49, 0xd1, 0xaf, 0xe8, 0x12, 0x2c, 0xdf, 0xaf, 0x6e, 0xa9, 0x24, 0x16, 0x0f, + 0x49, 0xcf, 0xec, 0x97, 0xf6, 0x8a, 0x95, 0xbd, 0xed, 0xac, 0x44, 0x3e, 0x94, 0x83, 0xbd, 0x3d, + 0xf2, 0x11, 0x43, 0x49, 0x98, 0x2e, 0x56, 0xf7, 0x4a, 0xd9, 0x38, 0x9a, 0x87, 0x24, 0x8b, 0xca, + 0x4b, 0xc5, 0xec, 0x34, 0x89, 0xd7, 0xef, 0xe5, 0x2b, 0xe4, 0x77, 0x82, 0x44, 0xfd, 0x22, 0x5f, + 0x74, 0x13, 0xb2, 0xdb, 0xd8, 0xf6, 0x4f, 0x04, 0x61, 0xce, 0xe0, 0xb7, 0x25, 0x40, 0xc4, 0x8b, + 0x31, 0xcc, 0x10, 0x5f, 0x3a, 0xed, 0xf3, 0xa5, 0xee, 0x83, 0x3e, 0x92, 0xf7, 0x41, 0x1f, 0xbf, + 0x13, 0x8d, 0x05, 0x9c, 0xa8, 0xdf, 0x01, 0xc7, 0x83, 0x0e, 0x58, 0x0c, 0xaa, 0xc4, 0x44, 0x83, + 0x4a, 0xee, 0xc1, 0x92, 0x4f, 0x70, 0xee, 0x7a, 0xdf, 0x81, 0xe9, 0x27, 0xc6, 0xa1, 0x70, 0xb9, + 0x57, 0x87, 0x72, 0x53, 0x28, 0xea, 0xd8, 0x7e, 0xf6, 0x4d, 0x58, 0x2a, 0x68, 0xdd, 0x06, 0x6e, + 0x8f, 0x56, 0xeb, 0x9b, 0xb0, 0xc4, 0x5c, 0xf2, 0x68, 0xd4, 0xdf, 0x92, 0xe0, 0x1a, 0x9f, 0xb6, + 0x07, 0x52, 0x3b, 0xa3, 0xa6, 0xb6, 0xc7, 0xb0, 0x14, 0xf2, 0xfc, 0xe4, 0x88, 0x93, 0x07, 0x21, + 0xd5, 0xa0, 0xc1, 0x47, 0x2a, 0x47, 0x2f, 0x0f, 0xfe, 0x9d, 0x04, 0xd7, 0x58, 0x30, 0x15, 0x2d, + 0x78, 0x98, 0x13, 0xfd, 0x36, 0x85, 0x7e, 0xa1, 0x60, 0x6b, 0x13, 0xae, 0x90, 0x31, 0x33, 0x49, + 0x63, 0x64, 0x1b, 0x5e, 0xa1, 0x56, 0x38, 0x40, 0xf4, 0xad, 0x2e, 0x18, 0xfe, 0xb6, 0x04, 0xd7, + 0x22, 0xab, 0xe5, 0x03, 0xe1, 0x4b, 0xb8, 0x10, 0xa2, 0x66, 0x31, 0x30, 0x26, 0xd0, 0xf3, 0xd2, + 0xa0, 0x9e, 0xc7, 0x1f, 0x33, 0xef, 0xc3, 0x35, 0x3e, 0x10, 0x26, 0x51, 0xeb, 0xda, 0x2e, 0xa4, + 0x7d, 0xff, 0xd6, 0x03, 0x5d, 0x84, 0xa5, 0x42, 0x75, 0xaf, 0x5e, 0xda, 0x0b, 0x1e, 0x13, 0xca, + 0xc2, 0xbc, 0x28, 0xa8, 0x97, 0xbe, 0xa8, 0x67, 0x25, 0xb4, 0x08, 0x69, 0x01, 0xa1, 0xff, 0xc6, + 0x21, 0x1b, 0x5b, 0xdb, 0x77, 0x5f, 0x58, 0xf3, 0x3c, 0x74, 0x46, 0x1c, 0x71, 0x69, 0xef, 0x60, + 0x37, 0xec, 0x3f, 0x46, 0xa4, 0x60, 0xb6, 0x42, 0x01, 0x9c, 0xa3, 0x52, 0xa9, 0x7d, 0xa6, 0xe6, + 0xf7, 0xf2, 0x3b, 0x8f, 0x6a, 0x95, 0x5a, 0x36, 0xb6, 0xf6, 0x8f, 0x25, 0x40, 0x83, 0x3b, 0x99, + 0xe8, 0x06, 0x5c, 0x53, 0x4a, 0x3b, 0x34, 0x09, 0x1f, 0xbd, 0x8f, 0x36, 0x0f, 0xc9, 0xd2, 0x83, + 0x83, 0xfc, 0x8e, 0x5a, 0xaf, 0x66, 0x25, 0xd2, 0x80, 0xbd, 0x6a, 0x5d, 0x75, 0x20, 0xf4, 0x60, + 0xf0, 0xb6, 0x52, 0xca, 0xd7, 0x4b, 0x8a, 0x5a, 0x2f, 0xe7, 0xf7, 0xd8, 0x7f, 0xa4, 0xd8, 0x29, + 0xd5, 0x6a, 0xec, 0x73, 0x1a, 0xe5, 0x60, 0xc5, 0x8b, 0xa0, 0x56, 0x15, 0x46, 0x5e, 0xcb, 0x26, + 0x88, 0xa2, 0x1c, 0x54, 0x4f, 0xc1, 0x0c, 0x99, 0x28, 0x4a, 0x5f, 0x54, 0x6a, 0xf5, 0x5a, 0x76, + 0x76, 0x4d, 0x01, 0x70, 0xfd, 0x29, 0xba, 0x02, 0xab, 0xc5, 0x9d, 0x7d, 0x95, 0xcc, 0x49, 0x21, + 0x9a, 0x58, 0x80, 0x14, 0xd7, 0x04, 0xc1, 0xc8, 0x4a, 0x68, 0x19, 0x16, 0x7d, 0xda, 0xa0, 0xe0, + 0xd8, 0xe6, 0xff, 0x93, 0x29, 0xd3, 0x1a, 0x36, 0x9f, 0xe9, 0x0d, 0x8c, 0xfe, 0x86, 0x04, 0x19, + 0xff, 0xab, 0x99, 0xe8, 0xf6, 0xc8, 0xf0, 0xcf, 0xf3, 0x8c, 0x68, 0xee, 0xce, 0x98, 0xd8, 0xcc, + 0xdc, 0xe5, 0xcd, 0x3f, 0xfd, 0xe3, 0xff, 0xf2, 0x97, 0x62, 0xb7, 0xe5, 0x37, 0x36, 0x9e, 0x6d, + 0x6e, 0xfc, 0x2c, 0x1b, 0x63, 0xdf, 0xed, 0x99, 0xc6, 0x13, 0xdc, 0xb0, 0xad, 0x8d, 0xb5, 0x9f, + 0xdf, 0xe0, 0xef, 0xf3, 0xdf, 0xe5, 0x71, 0xca, 0x5d, 0x69, 0x0d, 0xfd, 0x40, 0x82, 0x94, 0xe7, + 0x9d, 0x65, 0xf4, 0xe6, 0xd8, 0x6f, 0x65, 0xe7, 0xd6, 0xc6, 0x41, 0xe5, 0xa2, 0x6d, 0x50, 0xd1, + 0xde, 0x94, 0x5f, 0x8b, 0x12, 0x8d, 0xbe, 0xe5, 0x7c, 0x97, 0xdd, 0xf6, 0x20, 0x72, 0xfd, 0xa6, + 0x04, 0x8b, 0x03, 0x6f, 0x03, 0xa3, 0x8d, 0x71, 0x12, 0xdf, 0x5e, 0x0d, 0xbe, 0x3d, 0x3e, 0x01, + 0x97, 0xf4, 0x7d, 0x2a, 0xe9, 0x86, 0xbc, 0x36, 0x4a, 0x89, 0xae, 0x4b, 0x10, 0xf2, 0x2a, 0x63, + 0xcb, 0xab, 0x4c, 0x2a, 0xaf, 0xf2, 0xe2, 0xf2, 0x9a, 0x3e, 0x79, 0x7f, 0x41, 0x82, 0xb4, 0xef, + 0xfd, 0x41, 0xf4, 0x56, 0xe4, 0xff, 0xde, 0x18, 0x7c, 0xfa, 0x30, 0x77, 0x7b, 0x3c, 0x64, 0x2e, + 0xe3, 0x32, 0x95, 0x71, 0x01, 0xa5, 0x89, 0x8c, 0xee, 0xe9, 0xa7, 0xff, 0x28, 0xc1, 0x72, 0x68, + 0x26, 0x10, 0xbd, 0x1b, 0x79, 0x70, 0x2c, 0x3a, 0x6f, 0x98, 0x1b, 0x33, 0x0d, 0x24, 0xb7, 0xa8, + 0x34, 0x9a, 0x7c, 0xc7, 0xab, 0x31, 0xc3, 0x6c, 0x69, 0x5d, 0xfd, 0x6b, 0xb6, 0xbb, 0x4b, 0x0d, + 0x32, 0x90, 0x2b, 0xba, 0x2b, 0xad, 0x3d, 0xbe, 0x23, 0xdf, 0x8a, 0xb4, 0xdf, 0x41, 0x74, 0xda, + 0xbe, 0xd0, 0xe4, 0x61, 0x64, 0xfb, 0x86, 0xa5, 0x1a, 0x27, 0x6d, 0xdf, 0x26, 0x6b, 0x1f, 0x99, + 0x4b, 0x82, 0xad, 0x1b, 0x90, 0x76, 0x63, 0xed, 0xe7, 0x69, 0xfb, 0x36, 0x6f, 0xb9, 0x34, 0x6e, + 0xeb, 0x22, 0xd0, 0xd1, 0xef, 0x4b, 0x80, 0x06, 0x13, 0x8b, 0x28, 0xca, 0x86, 0x23, 0x73, 0x90, + 0x63, 0xb7, 0x4c, 0xa3, 0x2d, 0xfb, 0x19, 0x34, 0x59, 0xcb, 0x1e, 0xaf, 0xa1, 0xb1, 0x9b, 0x85, + 0x7e, 0x22, 0x89, 0xc7, 0x3e, 0x03, 0xa9, 0xc2, 0xcd, 0xa1, 0x16, 0x1f, 0x9a, 0x28, 0xcd, 0xbd, + 0x3b, 0x11, 0x0d, 0x1f, 0x2c, 0xfe, 0x46, 0x8e, 0x6b, 0x9e, 0x4e, 0x23, 0xc7, 0xb0, 0x4d, 0xf4, + 0xaf, 0x24, 0x58, 0x0e, 0xcd, 0x67, 0x46, 0x1a, 0xe6, 0xb0, 0xec, 0x67, 0x2e, 0xe2, 0x7d, 0x37, + 0xd1, 0x92, 0xb5, 0x49, 0xbb, 0x6b, 0x6d, 0xfc, 0xee, 0xfa, 0x43, 0x09, 0x56, 0xa3, 0x56, 0x0e, + 0xe8, 0x83, 0xa1, 0x5e, 0x24, 0x32, 0x1a, 0xcb, 0x8d, 0x1f, 0x18, 0xca, 0x1d, 0xda, 0xc4, 0x96, + 0xfc, 0xf6, 0xd0, 0xce, 0x0a, 0x89, 0x1e, 0xc9, 0x70, 0x7b, 0x5b, 0x7e, 0x2b, 0xaa, 0xcb, 0xc2, + 0x29, 0x68, 0x73, 0xa3, 0xd6, 0x1b, 0x91, 0xcd, 0x1d, 0xb1, 0x40, 0x39, 0x47, 0x73, 0x37, 0xdf, + 0x8e, 0xee, 0xd1, 0x10, 0xc9, 0xb9, 0x77, 0x79, 0x7b, 0xf3, 0xad, 0xd0, 0x7e, 0x8d, 0xa4, 0x40, + 0x7f, 0x20, 0xc1, 0x72, 0xe8, 0x72, 0x24, 0xd2, 0x4e, 0x87, 0x2d, 0x5e, 0x26, 0x69, 0x28, 0xf7, + 0xa1, 0x68, 0xe2, 0x86, 0x3e, 0xbe, 0x83, 0x26, 0x69, 0x25, 0xfa, 0x1f, 0x3c, 0x85, 0x1a, 0xb2, + 0x8c, 0x41, 0xef, 0x0f, 0x71, 0x1f, 0xd1, 0xab, 0xad, 0xdc, 0x07, 0x93, 0x92, 0x71, 0xc7, 0xe3, + 0x6f, 0xf3, 0x04, 0xb6, 0xec, 0xb4, 0x79, 0x3c, 0x43, 0x46, 0x3f, 0x96, 0x60, 0x35, 0x6a, 0x45, + 0x14, 0x69, 0xc5, 0x23, 0x96, 0x50, 0x91, 0x4e, 0x88, 0xb7, 0x6a, 0xed, 0x1c, 0x3d, 0xb9, 0x36, + 0x51, 0x4f, 0xfe, 0x40, 0x82, 0x6c, 0x70, 0xbf, 0x07, 0xad, 0x0f, 0x75, 0x41, 0x03, 0xc9, 0xea, + 0xdc, 0xe8, 0xfc, 0xb8, 0xbc, 0x4e, 0x1b, 0x74, 0x4b, 0xbe, 0x11, 0xa5, 0x72, 0x4f, 0xfe, 0x9c, + 0x47, 0xf8, 0xd9, 0xe0, 0x86, 0x4f, 0xa4, 0x5c, 0x11, 0x3b, 0x43, 0x13, 0xc8, 0xb5, 0x79, 0x23, + 0x54, 0x69, 0x1e, 0xa1, 0xf8, 0xe0, 0xfe, 0x0b, 0x12, 0xa4, 0x7d, 0x1b, 0x3b, 0x91, 0x11, 0x68, + 0xd8, 0xf6, 0xcf, 0x38, 0x12, 0xbd, 0x45, 0x25, 0x7a, 0x1d, 0x8d, 0x23, 0x11, 0xfa, 0xeb, 0x12, + 0x2c, 0x04, 0xf6, 0x32, 0xd0, 0x9d, 0x21, 0x23, 0x69, 0x70, 0xf7, 0x25, 0xb7, 0x3e, 0x2e, 0x3a, + 0x1f, 0x70, 0x7e, 0xf9, 0x86, 0xf7, 0x24, 0xfa, 0x45, 0xfa, 0x66, 0x81, 0x7f, 0x8b, 0x23, 0xb2, + 0x1b, 0x23, 0xf6, 0x42, 0x22, 0x07, 0x09, 0x97, 0x64, 0x6d, 0x2c, 0x4d, 0xfd, 0x59, 0x09, 0xe6, + 0xbd, 0x9b, 0x6c, 0x68, 0x6d, 0xf8, 0x3c, 0xeb, 0x4d, 0xff, 0xe5, 0x86, 0x67, 0x23, 0xe5, 0x35, + 0x2a, 0xc8, 0x6b, 0xf2, 0xb5, 0x48, 0x7f, 0xc2, 0x72, 0x9d, 0xc4, 0x80, 0xbe, 0x2f, 0x41, 0xca, + 0x93, 0xfe, 0x8c, 0x5c, 0xba, 0x0e, 0xe6, 0x76, 0x23, 0x97, 0xae, 0x21, 0xd9, 0x54, 0xf9, 0x0d, + 0x2a, 0xd2, 0xab, 0x68, 0x94, 0x48, 0xe8, 0xe7, 0x60, 0xce, 0xc9, 0x37, 0xa3, 0x37, 0x86, 0x4c, + 0x50, 0x93, 0x28, 0xc4, 0x5f, 0xfb, 0x80, 0x2b, 0x62, 0x55, 0x93, 0x5e, 0xf9, 0x59, 0x98, 0xf7, + 0xa6, 0x5b, 0x23, 0x3b, 0x25, 0x24, 0x27, 0x1b, 0x69, 0x16, 0xbc, 0xf2, 0xb5, 0x91, 0x95, 0x53, + 0x93, 0xf0, 0xe4, 0x85, 0xa3, 0x4d, 0x62, 0x30, 0x79, 0x1c, 0x59, 0xfb, 0x3b, 0xb4, 0xf6, 0xb7, + 0xe4, 0x9b, 0x23, 0x6a, 0xbf, 0xdb, 0xa0, 0x4c, 0xef, 0x4a, 0x6b, 0x5b, 0xdf, 0x97, 0xe0, 0x52, + 0xc3, 0xe8, 0x84, 0x57, 0xbe, 0x95, 0x2c, 0xb6, 0x7b, 0xfb, 0xa4, 0x8e, 0x7d, 0xe9, 0xf1, 0x87, + 0x1c, 0xa5, 0x65, 0xb4, 0xb5, 0x6e, 0x6b, 0xdd, 0x30, 0x5b, 0x1b, 0x2d, 0xdc, 0xa5, 0x12, 0x6c, + 0xb0, 0x22, 0xad, 0xa7, 0x5b, 0x81, 0xff, 0x0f, 0xfd, 0x71, 0xb3, 0xdd, 0xfb, 0x8d, 0xd8, 0xd2, + 0x36, 0x23, 0x2d, 0xb4, 0x8d, 0x7e, 0x93, 0xf4, 0xd3, 0xfa, 0xc3, 0xcd, 0x7f, 0x23, 0xa0, 0x5f, + 0x52, 0xe8, 0x97, 0xc5, 0x76, 0xef, 0xcb, 0x87, 0x9b, 0x87, 0x33, 0x94, 0xe1, 0xbb, 0xff, 0x3f, + 0x00, 0x00, 0xff, 0xff, 0x1d, 0x42, 0x75, 0x5c, 0xc5, 0x7a, 0x00, 0x00, +} diff --git a/googleapis/privacy/dlp/v2/storage.pb.go b/googleapis/privacy/dlp/v2/storage.pb.go new file mode 100644 index 00000000..7431e172 --- /dev/null +++ b/googleapis/privacy/dlp/v2/storage.pb.go @@ -0,0 +1,1614 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: google/privacy/dlp/v2/storage.proto + +package dlp + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import _ "google.golang.org/genproto/googleapis/api/annotations" +import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// Categorization of results based on how likely they are to represent a match, +// based on the number of elements they contain which imply a match. +type Likelihood int32 + +const ( + // Default value; information with all likelihoods is included. + Likelihood_LIKELIHOOD_UNSPECIFIED Likelihood = 0 + // Few matching elements. + Likelihood_VERY_UNLIKELY Likelihood = 1 + Likelihood_UNLIKELY Likelihood = 2 + // Some matching elements. + Likelihood_POSSIBLE Likelihood = 3 + Likelihood_LIKELY Likelihood = 4 + // Many matching elements. + Likelihood_VERY_LIKELY Likelihood = 5 +) + +var Likelihood_name = map[int32]string{ + 0: "LIKELIHOOD_UNSPECIFIED", + 1: "VERY_UNLIKELY", + 2: "UNLIKELY", + 3: "POSSIBLE", + 4: "LIKELY", + 5: "VERY_LIKELY", +} +var Likelihood_value = map[string]int32{ + "LIKELIHOOD_UNSPECIFIED": 0, + "VERY_UNLIKELY": 1, + "UNLIKELY": 2, + "POSSIBLE": 3, + "LIKELY": 4, + "VERY_LIKELY": 5, +} + +func (x Likelihood) String() string { + return proto.EnumName(Likelihood_name, int32(x)) +} +func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } + +// Type of information detected by the API. +type InfoType struct { + // Name of the information type. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *InfoType) Reset() { *m = InfoType{} } +func (m *InfoType) String() string { return proto.CompactTextString(m) } +func (*InfoType) ProtoMessage() {} +func (*InfoType) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } + +func (m *InfoType) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// Custom information type provided by the user. Used to find domain-specific +// sensitive information configurable to the data in question. +type CustomInfoType struct { + // Info type configuration. All custom info types must have configurations + // that do not conflict with built-in info types or other custom info types. + InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` + // Likelihood to return for this custom info type. This base value can be + // altered by a detection rule if the finding meets the criteria specified by + // the rule. Defaults to `VERY_LIKELY` if not specified. + Likelihood Likelihood `protobuf:"varint,6,opt,name=likelihood,enum=google.privacy.dlp.v2.Likelihood" json:"likelihood,omitempty"` + // Types that are valid to be assigned to Type: + // *CustomInfoType_Dictionary_ + // *CustomInfoType_Regex_ + // *CustomInfoType_SurrogateType_ + Type isCustomInfoType_Type `protobuf_oneof:"type"` + // Set of detection rules to apply to all findings of this custom info type. + // Rules are applied in order that they are specified. Not supported for the + // `surrogate_type` custom info type. + DetectionRules []*CustomInfoType_DetectionRule `protobuf:"bytes,7,rep,name=detection_rules,json=detectionRules" json:"detection_rules,omitempty"` +} + +func (m *CustomInfoType) Reset() { *m = CustomInfoType{} } +func (m *CustomInfoType) String() string { return proto.CompactTextString(m) } +func (*CustomInfoType) ProtoMessage() {} +func (*CustomInfoType) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } + +type isCustomInfoType_Type interface { + isCustomInfoType_Type() +} + +type CustomInfoType_Dictionary_ struct { + Dictionary *CustomInfoType_Dictionary `protobuf:"bytes,2,opt,name=dictionary,oneof"` +} +type CustomInfoType_Regex_ struct { + Regex *CustomInfoType_Regex `protobuf:"bytes,3,opt,name=regex,oneof"` +} +type CustomInfoType_SurrogateType_ struct { + SurrogateType *CustomInfoType_SurrogateType `protobuf:"bytes,4,opt,name=surrogate_type,json=surrogateType,oneof"` +} + +func (*CustomInfoType_Dictionary_) isCustomInfoType_Type() {} +func (*CustomInfoType_Regex_) isCustomInfoType_Type() {} +func (*CustomInfoType_SurrogateType_) isCustomInfoType_Type() {} + +func (m *CustomInfoType) GetType() isCustomInfoType_Type { + if m != nil { + return m.Type + } + return nil +} + +func (m *CustomInfoType) GetInfoType() *InfoType { + if m != nil { + return m.InfoType + } + return nil +} + +func (m *CustomInfoType) GetLikelihood() Likelihood { + if m != nil { + return m.Likelihood + } + return Likelihood_LIKELIHOOD_UNSPECIFIED +} + +func (m *CustomInfoType) GetDictionary() *CustomInfoType_Dictionary { + if x, ok := m.GetType().(*CustomInfoType_Dictionary_); ok { + return x.Dictionary + } + return nil +} + +func (m *CustomInfoType) GetRegex() *CustomInfoType_Regex { + if x, ok := m.GetType().(*CustomInfoType_Regex_); ok { + return x.Regex + } + return nil +} + +func (m *CustomInfoType) GetSurrogateType() *CustomInfoType_SurrogateType { + if x, ok := m.GetType().(*CustomInfoType_SurrogateType_); ok { + return x.SurrogateType + } + return nil +} + +func (m *CustomInfoType) GetDetectionRules() []*CustomInfoType_DetectionRule { + if m != nil { + return m.DetectionRules + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*CustomInfoType) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _CustomInfoType_OneofMarshaler, _CustomInfoType_OneofUnmarshaler, _CustomInfoType_OneofSizer, []interface{}{ + (*CustomInfoType_Dictionary_)(nil), + (*CustomInfoType_Regex_)(nil), + (*CustomInfoType_SurrogateType_)(nil), + } +} + +func _CustomInfoType_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*CustomInfoType) + // type + switch x := m.Type.(type) { + case *CustomInfoType_Dictionary_: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Dictionary); err != nil { + return err + } + case *CustomInfoType_Regex_: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Regex); err != nil { + return err + } + case *CustomInfoType_SurrogateType_: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.SurrogateType); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("CustomInfoType.Type has unexpected type %T", x) + } + return nil +} + +func _CustomInfoType_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*CustomInfoType) + switch tag { + case 2: // type.dictionary + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CustomInfoType_Dictionary) + err := b.DecodeMessage(msg) + m.Type = &CustomInfoType_Dictionary_{msg} + return true, err + case 3: // type.regex + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CustomInfoType_Regex) + err := b.DecodeMessage(msg) + m.Type = &CustomInfoType_Regex_{msg} + return true, err + case 4: // type.surrogate_type + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CustomInfoType_SurrogateType) + err := b.DecodeMessage(msg) + m.Type = &CustomInfoType_SurrogateType_{msg} + return true, err + default: + return false, nil + } +} + +func _CustomInfoType_OneofSizer(msg proto.Message) (n int) { + m := msg.(*CustomInfoType) + // type + switch x := m.Type.(type) { + case *CustomInfoType_Dictionary_: + s := proto.Size(x.Dictionary) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *CustomInfoType_Regex_: + s := proto.Size(x.Regex) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *CustomInfoType_SurrogateType_: + s := proto.Size(x.SurrogateType) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Custom information type based on a dictionary of words or phrases. This can +// be used to match sensitive information specific to the data, such as a list +// of employee IDs or job titles. +// +// Dictionary words are case-insensitive and all characters other than letters +// and digits in the unicode [Basic Multilingual +// Plane](https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane) +// will be replaced with whitespace when scanning for matches, so the +// dictionary phrase "Sam Johnson" will match all three phrases "sam johnson", +// "Sam, Johnson", and "Sam (Johnson)". Additionally, the characters +// surrounding any match must be of a different type than the adjacent +// characters within the word, so letters must be next to non-letters and +// digits next to non-digits. For example, the dictionary word "jen" will +// match the first three letters of the text "jen123" but will return no +// matches for "jennifer". +// +// Dictionary words containing a large number of characters that are not +// letters or digits may result in unexpected findings because such characters +// are treated as whitespace. +type CustomInfoType_Dictionary struct { + // Types that are valid to be assigned to Source: + // *CustomInfoType_Dictionary_WordList_ + Source isCustomInfoType_Dictionary_Source `protobuf_oneof:"source"` +} + +func (m *CustomInfoType_Dictionary) Reset() { *m = CustomInfoType_Dictionary{} } +func (m *CustomInfoType_Dictionary) String() string { return proto.CompactTextString(m) } +func (*CustomInfoType_Dictionary) ProtoMessage() {} +func (*CustomInfoType_Dictionary) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 0} } + +type isCustomInfoType_Dictionary_Source interface { + isCustomInfoType_Dictionary_Source() +} + +type CustomInfoType_Dictionary_WordList_ struct { + WordList *CustomInfoType_Dictionary_WordList `protobuf:"bytes,1,opt,name=word_list,json=wordList,oneof"` +} + +func (*CustomInfoType_Dictionary_WordList_) isCustomInfoType_Dictionary_Source() {} + +func (m *CustomInfoType_Dictionary) GetSource() isCustomInfoType_Dictionary_Source { + if m != nil { + return m.Source + } + return nil +} + +func (m *CustomInfoType_Dictionary) GetWordList() *CustomInfoType_Dictionary_WordList { + if x, ok := m.GetSource().(*CustomInfoType_Dictionary_WordList_); ok { + return x.WordList + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*CustomInfoType_Dictionary) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _CustomInfoType_Dictionary_OneofMarshaler, _CustomInfoType_Dictionary_OneofUnmarshaler, _CustomInfoType_Dictionary_OneofSizer, []interface{}{ + (*CustomInfoType_Dictionary_WordList_)(nil), + } +} + +func _CustomInfoType_Dictionary_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*CustomInfoType_Dictionary) + // source + switch x := m.Source.(type) { + case *CustomInfoType_Dictionary_WordList_: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.WordList); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("CustomInfoType_Dictionary.Source has unexpected type %T", x) + } + return nil +} + +func _CustomInfoType_Dictionary_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*CustomInfoType_Dictionary) + switch tag { + case 1: // source.word_list + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CustomInfoType_Dictionary_WordList) + err := b.DecodeMessage(msg) + m.Source = &CustomInfoType_Dictionary_WordList_{msg} + return true, err + default: + return false, nil + } +} + +func _CustomInfoType_Dictionary_OneofSizer(msg proto.Message) (n int) { + m := msg.(*CustomInfoType_Dictionary) + // source + switch x := m.Source.(type) { + case *CustomInfoType_Dictionary_WordList_: + s := proto.Size(x.WordList) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Message defining a list of words or phrases to search for in the data. +type CustomInfoType_Dictionary_WordList struct { + // Words or phrases defining the dictionary. The dictionary must contain + // at least one phrase and every phrase must contain at least 2 characters + // that are letters or digits. [required] + Words []string `protobuf:"bytes,1,rep,name=words" json:"words,omitempty"` +} + +func (m *CustomInfoType_Dictionary_WordList) Reset() { *m = CustomInfoType_Dictionary_WordList{} } +func (m *CustomInfoType_Dictionary_WordList) String() string { return proto.CompactTextString(m) } +func (*CustomInfoType_Dictionary_WordList) ProtoMessage() {} +func (*CustomInfoType_Dictionary_WordList) Descriptor() ([]byte, []int) { + return fileDescriptor1, []int{1, 0, 0} +} + +func (m *CustomInfoType_Dictionary_WordList) GetWords() []string { + if m != nil { + return m.Words + } + return nil +} + +// Message defining a custom regular expression. +type CustomInfoType_Regex struct { + // Pattern defining the regular expression. + Pattern string `protobuf:"bytes,1,opt,name=pattern" json:"pattern,omitempty"` +} + +func (m *CustomInfoType_Regex) Reset() { *m = CustomInfoType_Regex{} } +func (m *CustomInfoType_Regex) String() string { return proto.CompactTextString(m) } +func (*CustomInfoType_Regex) ProtoMessage() {} +func (*CustomInfoType_Regex) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 1} } + +func (m *CustomInfoType_Regex) GetPattern() string { + if m != nil { + return m.Pattern + } + return "" +} + +// Message for detecting output from deidentification transformations +// such as +// [`CryptoReplaceFfxFpeConfig`](/dlp/docs/reference/rest/v2/content/deidentify#CryptoReplaceFfxFpeConfig). +// These types of transformations are +// those that perform pseudonymization, thereby producing a "surrogate" as +// output. This should be used in conjunction with a field on the +// transformation such as `surrogate_info_type`. This custom info type does +// not support the use of `detection_rules`. +type CustomInfoType_SurrogateType struct { +} + +func (m *CustomInfoType_SurrogateType) Reset() { *m = CustomInfoType_SurrogateType{} } +func (m *CustomInfoType_SurrogateType) String() string { return proto.CompactTextString(m) } +func (*CustomInfoType_SurrogateType) ProtoMessage() {} +func (*CustomInfoType_SurrogateType) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 2} } + +// Rule for modifying a custom info type to alter behavior under certain +// circumstances, depending on the specific details of the rule. Not supported +// for the `surrogate_type` custom info type. +type CustomInfoType_DetectionRule struct { + // Types that are valid to be assigned to Type: + // *CustomInfoType_DetectionRule_HotwordRule_ + Type isCustomInfoType_DetectionRule_Type `protobuf_oneof:"type"` +} + +func (m *CustomInfoType_DetectionRule) Reset() { *m = CustomInfoType_DetectionRule{} } +func (m *CustomInfoType_DetectionRule) String() string { return proto.CompactTextString(m) } +func (*CustomInfoType_DetectionRule) ProtoMessage() {} +func (*CustomInfoType_DetectionRule) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 3} } + +type isCustomInfoType_DetectionRule_Type interface { + isCustomInfoType_DetectionRule_Type() +} + +type CustomInfoType_DetectionRule_HotwordRule_ struct { + HotwordRule *CustomInfoType_DetectionRule_HotwordRule `protobuf:"bytes,1,opt,name=hotword_rule,json=hotwordRule,oneof"` +} + +func (*CustomInfoType_DetectionRule_HotwordRule_) isCustomInfoType_DetectionRule_Type() {} + +func (m *CustomInfoType_DetectionRule) GetType() isCustomInfoType_DetectionRule_Type { + if m != nil { + return m.Type + } + return nil +} + +func (m *CustomInfoType_DetectionRule) GetHotwordRule() *CustomInfoType_DetectionRule_HotwordRule { + if x, ok := m.GetType().(*CustomInfoType_DetectionRule_HotwordRule_); ok { + return x.HotwordRule + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*CustomInfoType_DetectionRule) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _CustomInfoType_DetectionRule_OneofMarshaler, _CustomInfoType_DetectionRule_OneofUnmarshaler, _CustomInfoType_DetectionRule_OneofSizer, []interface{}{ + (*CustomInfoType_DetectionRule_HotwordRule_)(nil), + } +} + +func _CustomInfoType_DetectionRule_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*CustomInfoType_DetectionRule) + // type + switch x := m.Type.(type) { + case *CustomInfoType_DetectionRule_HotwordRule_: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.HotwordRule); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("CustomInfoType_DetectionRule.Type has unexpected type %T", x) + } + return nil +} + +func _CustomInfoType_DetectionRule_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*CustomInfoType_DetectionRule) + switch tag { + case 1: // type.hotword_rule + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CustomInfoType_DetectionRule_HotwordRule) + err := b.DecodeMessage(msg) + m.Type = &CustomInfoType_DetectionRule_HotwordRule_{msg} + return true, err + default: + return false, nil + } +} + +func _CustomInfoType_DetectionRule_OneofSizer(msg proto.Message) (n int) { + m := msg.(*CustomInfoType_DetectionRule) + // type + switch x := m.Type.(type) { + case *CustomInfoType_DetectionRule_HotwordRule_: + s := proto.Size(x.HotwordRule) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Message for specifying a window around a finding to apply a detection +// rule. +type CustomInfoType_DetectionRule_Proximity struct { + // Number of characters before the finding to consider. + WindowBefore int32 `protobuf:"varint,1,opt,name=window_before,json=windowBefore" json:"window_before,omitempty"` + // Number of characters after the finding to consider. + WindowAfter int32 `protobuf:"varint,2,opt,name=window_after,json=windowAfter" json:"window_after,omitempty"` +} + +func (m *CustomInfoType_DetectionRule_Proximity) Reset() { + *m = CustomInfoType_DetectionRule_Proximity{} +} +func (m *CustomInfoType_DetectionRule_Proximity) String() string { return proto.CompactTextString(m) } +func (*CustomInfoType_DetectionRule_Proximity) ProtoMessage() {} +func (*CustomInfoType_DetectionRule_Proximity) Descriptor() ([]byte, []int) { + return fileDescriptor1, []int{1, 3, 0} +} + +func (m *CustomInfoType_DetectionRule_Proximity) GetWindowBefore() int32 { + if m != nil { + return m.WindowBefore + } + return 0 +} + +func (m *CustomInfoType_DetectionRule_Proximity) GetWindowAfter() int32 { + if m != nil { + return m.WindowAfter + } + return 0 +} + +// Message for specifying an adjustment to the likelihood of a finding as +// part of a detection rule. +type CustomInfoType_DetectionRule_LikelihoodAdjustment struct { + // Types that are valid to be assigned to Adjustment: + // *CustomInfoType_DetectionRule_LikelihoodAdjustment_FixedLikelihood + // *CustomInfoType_DetectionRule_LikelihoodAdjustment_RelativeLikelihood + Adjustment isCustomInfoType_DetectionRule_LikelihoodAdjustment_Adjustment `protobuf_oneof:"adjustment"` +} + +func (m *CustomInfoType_DetectionRule_LikelihoodAdjustment) Reset() { + *m = CustomInfoType_DetectionRule_LikelihoodAdjustment{} +} +func (m *CustomInfoType_DetectionRule_LikelihoodAdjustment) String() string { + return proto.CompactTextString(m) +} +func (*CustomInfoType_DetectionRule_LikelihoodAdjustment) ProtoMessage() {} +func (*CustomInfoType_DetectionRule_LikelihoodAdjustment) Descriptor() ([]byte, []int) { + return fileDescriptor1, []int{1, 3, 1} +} + +type isCustomInfoType_DetectionRule_LikelihoodAdjustment_Adjustment interface { + isCustomInfoType_DetectionRule_LikelihoodAdjustment_Adjustment() +} + +type CustomInfoType_DetectionRule_LikelihoodAdjustment_FixedLikelihood struct { + FixedLikelihood Likelihood `protobuf:"varint,1,opt,name=fixed_likelihood,json=fixedLikelihood,enum=google.privacy.dlp.v2.Likelihood,oneof"` +} +type CustomInfoType_DetectionRule_LikelihoodAdjustment_RelativeLikelihood struct { + RelativeLikelihood int32 `protobuf:"varint,2,opt,name=relative_likelihood,json=relativeLikelihood,oneof"` +} + +func (*CustomInfoType_DetectionRule_LikelihoodAdjustment_FixedLikelihood) isCustomInfoType_DetectionRule_LikelihoodAdjustment_Adjustment() { +} +func (*CustomInfoType_DetectionRule_LikelihoodAdjustment_RelativeLikelihood) isCustomInfoType_DetectionRule_LikelihoodAdjustment_Adjustment() { +} + +func (m *CustomInfoType_DetectionRule_LikelihoodAdjustment) GetAdjustment() isCustomInfoType_DetectionRule_LikelihoodAdjustment_Adjustment { + if m != nil { + return m.Adjustment + } + return nil +} + +func (m *CustomInfoType_DetectionRule_LikelihoodAdjustment) GetFixedLikelihood() Likelihood { + if x, ok := m.GetAdjustment().(*CustomInfoType_DetectionRule_LikelihoodAdjustment_FixedLikelihood); ok { + return x.FixedLikelihood + } + return Likelihood_LIKELIHOOD_UNSPECIFIED +} + +func (m *CustomInfoType_DetectionRule_LikelihoodAdjustment) GetRelativeLikelihood() int32 { + if x, ok := m.GetAdjustment().(*CustomInfoType_DetectionRule_LikelihoodAdjustment_RelativeLikelihood); ok { + return x.RelativeLikelihood + } + return 0 +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*CustomInfoType_DetectionRule_LikelihoodAdjustment) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _CustomInfoType_DetectionRule_LikelihoodAdjustment_OneofMarshaler, _CustomInfoType_DetectionRule_LikelihoodAdjustment_OneofUnmarshaler, _CustomInfoType_DetectionRule_LikelihoodAdjustment_OneofSizer, []interface{}{ + (*CustomInfoType_DetectionRule_LikelihoodAdjustment_FixedLikelihood)(nil), + (*CustomInfoType_DetectionRule_LikelihoodAdjustment_RelativeLikelihood)(nil), + } +} + +func _CustomInfoType_DetectionRule_LikelihoodAdjustment_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*CustomInfoType_DetectionRule_LikelihoodAdjustment) + // adjustment + switch x := m.Adjustment.(type) { + case *CustomInfoType_DetectionRule_LikelihoodAdjustment_FixedLikelihood: + b.EncodeVarint(1<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.FixedLikelihood)) + case *CustomInfoType_DetectionRule_LikelihoodAdjustment_RelativeLikelihood: + b.EncodeVarint(2<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.RelativeLikelihood)) + case nil: + default: + return fmt.Errorf("CustomInfoType_DetectionRule_LikelihoodAdjustment.Adjustment has unexpected type %T", x) + } + return nil +} + +func _CustomInfoType_DetectionRule_LikelihoodAdjustment_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*CustomInfoType_DetectionRule_LikelihoodAdjustment) + switch tag { + case 1: // adjustment.fixed_likelihood + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Adjustment = &CustomInfoType_DetectionRule_LikelihoodAdjustment_FixedLikelihood{Likelihood(x)} + return true, err + case 2: // adjustment.relative_likelihood + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Adjustment = &CustomInfoType_DetectionRule_LikelihoodAdjustment_RelativeLikelihood{int32(x)} + return true, err + default: + return false, nil + } +} + +func _CustomInfoType_DetectionRule_LikelihoodAdjustment_OneofSizer(msg proto.Message) (n int) { + m := msg.(*CustomInfoType_DetectionRule_LikelihoodAdjustment) + // adjustment + switch x := m.Adjustment.(type) { + case *CustomInfoType_DetectionRule_LikelihoodAdjustment_FixedLikelihood: + n += proto.SizeVarint(1<<3 | proto.WireVarint) + n += proto.SizeVarint(uint64(x.FixedLikelihood)) + case *CustomInfoType_DetectionRule_LikelihoodAdjustment_RelativeLikelihood: + n += proto.SizeVarint(2<<3 | proto.WireVarint) + n += proto.SizeVarint(uint64(x.RelativeLikelihood)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Detection rule that adjusts the likelihood of findings within a certain +// proximity of hotwords. +type CustomInfoType_DetectionRule_HotwordRule struct { + // Regex pattern defining what qualifies as a hotword. + HotwordRegex *CustomInfoType_Regex `protobuf:"bytes,1,opt,name=hotword_regex,json=hotwordRegex" json:"hotword_regex,omitempty"` + // Proximity of the finding within which the entire hotword must reside. + // The total length of the window cannot exceed 1000 characters. Note that + // the finding itself will be included in the window, so that hotwords may + // be used to match substrings of the finding itself. For example, the + // certainty of a phone number regex "\(\d{3}\) \d{3}-\d{4}" could be + // adjusted upwards if the area code is known to be the local area code of + // a company office using the hotword regex "\(xxx\)", where "xxx" + // is the area code in question. + Proximity *CustomInfoType_DetectionRule_Proximity `protobuf:"bytes,2,opt,name=proximity" json:"proximity,omitempty"` + // Likelihood adjustment to apply to all matching findings. + LikelihoodAdjustment *CustomInfoType_DetectionRule_LikelihoodAdjustment `protobuf:"bytes,3,opt,name=likelihood_adjustment,json=likelihoodAdjustment" json:"likelihood_adjustment,omitempty"` +} + +func (m *CustomInfoType_DetectionRule_HotwordRule) Reset() { + *m = CustomInfoType_DetectionRule_HotwordRule{} +} +func (m *CustomInfoType_DetectionRule_HotwordRule) String() string { return proto.CompactTextString(m) } +func (*CustomInfoType_DetectionRule_HotwordRule) ProtoMessage() {} +func (*CustomInfoType_DetectionRule_HotwordRule) Descriptor() ([]byte, []int) { + return fileDescriptor1, []int{1, 3, 2} +} + +func (m *CustomInfoType_DetectionRule_HotwordRule) GetHotwordRegex() *CustomInfoType_Regex { + if m != nil { + return m.HotwordRegex + } + return nil +} + +func (m *CustomInfoType_DetectionRule_HotwordRule) GetProximity() *CustomInfoType_DetectionRule_Proximity { + if m != nil { + return m.Proximity + } + return nil +} + +func (m *CustomInfoType_DetectionRule_HotwordRule) GetLikelihoodAdjustment() *CustomInfoType_DetectionRule_LikelihoodAdjustment { + if m != nil { + return m.LikelihoodAdjustment + } + return nil +} + +// General identifier of a data field in a storage service. +type FieldId struct { + // Name describing the field. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *FieldId) Reset() { *m = FieldId{} } +func (m *FieldId) String() string { return proto.CompactTextString(m) } +func (*FieldId) ProtoMessage() {} +func (*FieldId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } + +func (m *FieldId) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// Datastore partition ID. +// A partition ID identifies a grouping of entities. The grouping is always +// by project and namespace, however the namespace ID may be empty. +// +// A partition ID contains several dimensions: +// project ID and namespace ID. +type PartitionId struct { + // The ID of the project to which the entities belong. + ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` + // If not empty, the ID of the namespace to which the entities belong. + NamespaceId string `protobuf:"bytes,4,opt,name=namespace_id,json=namespaceId" json:"namespace_id,omitempty"` +} + +func (m *PartitionId) Reset() { *m = PartitionId{} } +func (m *PartitionId) String() string { return proto.CompactTextString(m) } +func (*PartitionId) ProtoMessage() {} +func (*PartitionId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } + +func (m *PartitionId) GetProjectId() string { + if m != nil { + return m.ProjectId + } + return "" +} + +func (m *PartitionId) GetNamespaceId() string { + if m != nil { + return m.NamespaceId + } + return "" +} + +// A representation of a Datastore kind. +type KindExpression struct { + // The name of the kind. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` +} + +func (m *KindExpression) Reset() { *m = KindExpression{} } +func (m *KindExpression) String() string { return proto.CompactTextString(m) } +func (*KindExpression) ProtoMessage() {} +func (*KindExpression) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } + +func (m *KindExpression) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// Options defining a data set within Google Cloud Datastore. +type DatastoreOptions struct { + // A partition ID identifies a grouping of entities. The grouping is always + // by project and namespace, however the namespace ID may be empty. + PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"` + // The kind to process. + Kind *KindExpression `protobuf:"bytes,2,opt,name=kind" json:"kind,omitempty"` +} + +func (m *DatastoreOptions) Reset() { *m = DatastoreOptions{} } +func (m *DatastoreOptions) String() string { return proto.CompactTextString(m) } +func (*DatastoreOptions) ProtoMessage() {} +func (*DatastoreOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } + +func (m *DatastoreOptions) GetPartitionId() *PartitionId { + if m != nil { + return m.PartitionId + } + return nil +} + +func (m *DatastoreOptions) GetKind() *KindExpression { + if m != nil { + return m.Kind + } + return nil +} + +// Options defining a file or a set of files (path ending with *) within +// a Google Cloud Storage bucket. +type CloudStorageOptions struct { + FileSet *CloudStorageOptions_FileSet `protobuf:"bytes,1,opt,name=file_set,json=fileSet" json:"file_set,omitempty"` + // Max number of bytes to scan from a file. If a scanned file's size is bigger + // than this value then the rest of the bytes are omitted. + BytesLimitPerFile int64 `protobuf:"varint,4,opt,name=bytes_limit_per_file,json=bytesLimitPerFile" json:"bytes_limit_per_file,omitempty"` +} + +func (m *CloudStorageOptions) Reset() { *m = CloudStorageOptions{} } +func (m *CloudStorageOptions) String() string { return proto.CompactTextString(m) } +func (*CloudStorageOptions) ProtoMessage() {} +func (*CloudStorageOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } + +func (m *CloudStorageOptions) GetFileSet() *CloudStorageOptions_FileSet { + if m != nil { + return m.FileSet + } + return nil +} + +func (m *CloudStorageOptions) GetBytesLimitPerFile() int64 { + if m != nil { + return m.BytesLimitPerFile + } + return 0 +} + +// Set of files to scan. +type CloudStorageOptions_FileSet struct { + // The url, in the format `gs://<bucket>/<path>`. Trailing wildcard in the + // path is allowed. + Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` +} + +func (m *CloudStorageOptions_FileSet) Reset() { *m = CloudStorageOptions_FileSet{} } +func (m *CloudStorageOptions_FileSet) String() string { return proto.CompactTextString(m) } +func (*CloudStorageOptions_FileSet) ProtoMessage() {} +func (*CloudStorageOptions_FileSet) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6, 0} } + +func (m *CloudStorageOptions_FileSet) GetUrl() string { + if m != nil { + return m.Url + } + return "" +} + +// Options defining BigQuery table and row identifiers. +type BigQueryOptions struct { + // Complete BigQuery table reference. + TableReference *BigQueryTable `protobuf:"bytes,1,opt,name=table_reference,json=tableReference" json:"table_reference,omitempty"` + // References to fields uniquely identifying rows within the table. + // Nested fields in the format, like `person.birthdate.year`, are allowed. + IdentifyingFields []*FieldId `protobuf:"bytes,2,rep,name=identifying_fields,json=identifyingFields" json:"identifying_fields,omitempty"` +} + +func (m *BigQueryOptions) Reset() { *m = BigQueryOptions{} } +func (m *BigQueryOptions) String() string { return proto.CompactTextString(m) } +func (*BigQueryOptions) ProtoMessage() {} +func (*BigQueryOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } + +func (m *BigQueryOptions) GetTableReference() *BigQueryTable { + if m != nil { + return m.TableReference + } + return nil +} + +func (m *BigQueryOptions) GetIdentifyingFields() []*FieldId { + if m != nil { + return m.IdentifyingFields + } + return nil +} + +// Shared message indicating Cloud storage type. +type StorageConfig struct { + // Types that are valid to be assigned to Type: + // *StorageConfig_DatastoreOptions + // *StorageConfig_CloudStorageOptions + // *StorageConfig_BigQueryOptions + Type isStorageConfig_Type `protobuf_oneof:"type"` + TimespanConfig *StorageConfig_TimespanConfig `protobuf:"bytes,6,opt,name=timespan_config,json=timespanConfig" json:"timespan_config,omitempty"` +} + +func (m *StorageConfig) Reset() { *m = StorageConfig{} } +func (m *StorageConfig) String() string { return proto.CompactTextString(m) } +func (*StorageConfig) ProtoMessage() {} +func (*StorageConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } + +type isStorageConfig_Type interface { + isStorageConfig_Type() +} + +type StorageConfig_DatastoreOptions struct { + DatastoreOptions *DatastoreOptions `protobuf:"bytes,2,opt,name=datastore_options,json=datastoreOptions,oneof"` +} +type StorageConfig_CloudStorageOptions struct { + CloudStorageOptions *CloudStorageOptions `protobuf:"bytes,3,opt,name=cloud_storage_options,json=cloudStorageOptions,oneof"` +} +type StorageConfig_BigQueryOptions struct { + BigQueryOptions *BigQueryOptions `protobuf:"bytes,4,opt,name=big_query_options,json=bigQueryOptions,oneof"` +} + +func (*StorageConfig_DatastoreOptions) isStorageConfig_Type() {} +func (*StorageConfig_CloudStorageOptions) isStorageConfig_Type() {} +func (*StorageConfig_BigQueryOptions) isStorageConfig_Type() {} + +func (m *StorageConfig) GetType() isStorageConfig_Type { + if m != nil { + return m.Type + } + return nil +} + +func (m *StorageConfig) GetDatastoreOptions() *DatastoreOptions { + if x, ok := m.GetType().(*StorageConfig_DatastoreOptions); ok { + return x.DatastoreOptions + } + return nil +} + +func (m *StorageConfig) GetCloudStorageOptions() *CloudStorageOptions { + if x, ok := m.GetType().(*StorageConfig_CloudStorageOptions); ok { + return x.CloudStorageOptions + } + return nil +} + +func (m *StorageConfig) GetBigQueryOptions() *BigQueryOptions { + if x, ok := m.GetType().(*StorageConfig_BigQueryOptions); ok { + return x.BigQueryOptions + } + return nil +} + +func (m *StorageConfig) GetTimespanConfig() *StorageConfig_TimespanConfig { + if m != nil { + return m.TimespanConfig + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*StorageConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _StorageConfig_OneofMarshaler, _StorageConfig_OneofUnmarshaler, _StorageConfig_OneofSizer, []interface{}{ + (*StorageConfig_DatastoreOptions)(nil), + (*StorageConfig_CloudStorageOptions)(nil), + (*StorageConfig_BigQueryOptions)(nil), + } +} + +func _StorageConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*StorageConfig) + // type + switch x := m.Type.(type) { + case *StorageConfig_DatastoreOptions: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.DatastoreOptions); err != nil { + return err + } + case *StorageConfig_CloudStorageOptions: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.CloudStorageOptions); err != nil { + return err + } + case *StorageConfig_BigQueryOptions: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.BigQueryOptions); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("StorageConfig.Type has unexpected type %T", x) + } + return nil +} + +func _StorageConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*StorageConfig) + switch tag { + case 2: // type.datastore_options + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(DatastoreOptions) + err := b.DecodeMessage(msg) + m.Type = &StorageConfig_DatastoreOptions{msg} + return true, err + case 3: // type.cloud_storage_options + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CloudStorageOptions) + err := b.DecodeMessage(msg) + m.Type = &StorageConfig_CloudStorageOptions{msg} + return true, err + case 4: // type.big_query_options + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(BigQueryOptions) + err := b.DecodeMessage(msg) + m.Type = &StorageConfig_BigQueryOptions{msg} + return true, err + default: + return false, nil + } +} + +func _StorageConfig_OneofSizer(msg proto.Message) (n int) { + m := msg.(*StorageConfig) + // type + switch x := m.Type.(type) { + case *StorageConfig_DatastoreOptions: + s := proto.Size(x.DatastoreOptions) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *StorageConfig_CloudStorageOptions: + s := proto.Size(x.CloudStorageOptions) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *StorageConfig_BigQueryOptions: + s := proto.Size(x.BigQueryOptions) + n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Configuration of the timespan of the items to include in scanning. +// Currently only supported when inspecting Google Cloud Storage and BigQuery. +type StorageConfig_TimespanConfig struct { + // Exclude files older than this value. + StartTime *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"` + // Exclude files newer than this value. + // If set to zero, no upper time limit is applied. + EndTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` + // Specification of the field containing the timestamp of scanned items. + // Required for data sources like Datastore or BigQuery. + // The valid data types of the timestamp field are: + // for BigQuery - timestamp, date, datetime; + // for Datastore - timestamp. + // Datastore entity will be scanned if the timestamp property does not exist + // or its value is empty or invalid. + TimestampField *FieldId `protobuf:"bytes,3,opt,name=timestamp_field,json=timestampField" json:"timestamp_field,omitempty"` + // When the job is started by a JobTrigger we will automatically figure out + // a valid start_time to avoid scanning files that have not been modified + // since the last time the JobTrigger executed. This will be based on the + // time of the execution of the last run of the JobTrigger. + EnableAutoPopulationOfTimespanConfig bool `protobuf:"varint,4,opt,name=enable_auto_population_of_timespan_config,json=enableAutoPopulationOfTimespanConfig" json:"enable_auto_population_of_timespan_config,omitempty"` +} + +func (m *StorageConfig_TimespanConfig) Reset() { *m = StorageConfig_TimespanConfig{} } +func (m *StorageConfig_TimespanConfig) String() string { return proto.CompactTextString(m) } +func (*StorageConfig_TimespanConfig) ProtoMessage() {} +func (*StorageConfig_TimespanConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8, 0} } + +func (m *StorageConfig_TimespanConfig) GetStartTime() *google_protobuf1.Timestamp { + if m != nil { + return m.StartTime + } + return nil +} + +func (m *StorageConfig_TimespanConfig) GetEndTime() *google_protobuf1.Timestamp { + if m != nil { + return m.EndTime + } + return nil +} + +func (m *StorageConfig_TimespanConfig) GetTimestampField() *FieldId { + if m != nil { + return m.TimestampField + } + return nil +} + +func (m *StorageConfig_TimespanConfig) GetEnableAutoPopulationOfTimespanConfig() bool { + if m != nil { + return m.EnableAutoPopulationOfTimespanConfig + } + return false +} + +// Row key for identifying a record in BigQuery table. +type BigQueryKey struct { + // Complete BigQuery table reference. + TableReference *BigQueryTable `protobuf:"bytes,1,opt,name=table_reference,json=tableReference" json:"table_reference,omitempty"` + // Absolute number of the row from the beginning of the table at the time + // of scanning. + RowNumber int64 `protobuf:"varint,2,opt,name=row_number,json=rowNumber" json:"row_number,omitempty"` +} + +func (m *BigQueryKey) Reset() { *m = BigQueryKey{} } +func (m *BigQueryKey) String() string { return proto.CompactTextString(m) } +func (*BigQueryKey) ProtoMessage() {} +func (*BigQueryKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } + +func (m *BigQueryKey) GetTableReference() *BigQueryTable { + if m != nil { + return m.TableReference + } + return nil +} + +func (m *BigQueryKey) GetRowNumber() int64 { + if m != nil { + return m.RowNumber + } + return 0 +} + +// Record key for a finding in Cloud Datastore. +type DatastoreKey struct { + // Datastore entity key. + EntityKey *Key `protobuf:"bytes,1,opt,name=entity_key,json=entityKey" json:"entity_key,omitempty"` +} + +func (m *DatastoreKey) Reset() { *m = DatastoreKey{} } +func (m *DatastoreKey) String() string { return proto.CompactTextString(m) } +func (*DatastoreKey) ProtoMessage() {} +func (*DatastoreKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } + +func (m *DatastoreKey) GetEntityKey() *Key { + if m != nil { + return m.EntityKey + } + return nil +} + +// A unique identifier for a Datastore entity. +// If a key's partition ID or any of its path kinds or names are +// reserved/read-only, the key is reserved/read-only. +// A reserved/read-only key is forbidden in certain documented contexts. +type Key struct { + // Entities are partitioned into subsets, currently identified by a project + // ID and namespace ID. + // Queries are scoped to a single partition. + PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"` + // The entity path. + // An entity path consists of one or more elements composed of a kind and a + // string or numerical identifier, which identify entities. The first + // element identifies a _root entity_, the second element identifies + // a _child_ of the root entity, the third element identifies a child of the + // second entity, and so forth. The entities identified by all prefixes of + // the path are called the element's _ancestors_. + // + // A path can never be empty, and a path can have at most 100 elements. + Path []*Key_PathElement `protobuf:"bytes,2,rep,name=path" json:"path,omitempty"` +} + +func (m *Key) Reset() { *m = Key{} } +func (m *Key) String() string { return proto.CompactTextString(m) } +func (*Key) ProtoMessage() {} +func (*Key) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } + +func (m *Key) GetPartitionId() *PartitionId { + if m != nil { + return m.PartitionId + } + return nil +} + +func (m *Key) GetPath() []*Key_PathElement { + if m != nil { + return m.Path + } + return nil +} + +// A (kind, ID/name) pair used to construct a key path. +// +// If either name or ID is set, the element is complete. +// If neither is set, the element is incomplete. +type Key_PathElement struct { + // The kind of the entity. + // A kind matching regex `__.*__` is reserved/read-only. + // A kind must not contain more than 1500 bytes when UTF-8 encoded. + // Cannot be `""`. + Kind string `protobuf:"bytes,1,opt,name=kind" json:"kind,omitempty"` + // The type of ID. + // + // Types that are valid to be assigned to IdType: + // *Key_PathElement_Id + // *Key_PathElement_Name + IdType isKey_PathElement_IdType `protobuf_oneof:"id_type"` +} + +func (m *Key_PathElement) Reset() { *m = Key_PathElement{} } +func (m *Key_PathElement) String() string { return proto.CompactTextString(m) } +func (*Key_PathElement) ProtoMessage() {} +func (*Key_PathElement) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11, 0} } + +type isKey_PathElement_IdType interface { + isKey_PathElement_IdType() +} + +type Key_PathElement_Id struct { + Id int64 `protobuf:"varint,2,opt,name=id,oneof"` +} +type Key_PathElement_Name struct { + Name string `protobuf:"bytes,3,opt,name=name,oneof"` +} + +func (*Key_PathElement_Id) isKey_PathElement_IdType() {} +func (*Key_PathElement_Name) isKey_PathElement_IdType() {} + +func (m *Key_PathElement) GetIdType() isKey_PathElement_IdType { + if m != nil { + return m.IdType + } + return nil +} + +func (m *Key_PathElement) GetKind() string { + if m != nil { + return m.Kind + } + return "" +} + +func (m *Key_PathElement) GetId() int64 { + if x, ok := m.GetIdType().(*Key_PathElement_Id); ok { + return x.Id + } + return 0 +} + +func (m *Key_PathElement) GetName() string { + if x, ok := m.GetIdType().(*Key_PathElement_Name); ok { + return x.Name + } + return "" +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*Key_PathElement) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _Key_PathElement_OneofMarshaler, _Key_PathElement_OneofUnmarshaler, _Key_PathElement_OneofSizer, []interface{}{ + (*Key_PathElement_Id)(nil), + (*Key_PathElement_Name)(nil), + } +} + +func _Key_PathElement_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*Key_PathElement) + // id_type + switch x := m.IdType.(type) { + case *Key_PathElement_Id: + b.EncodeVarint(2<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.Id)) + case *Key_PathElement_Name: + b.EncodeVarint(3<<3 | proto.WireBytes) + b.EncodeStringBytes(x.Name) + case nil: + default: + return fmt.Errorf("Key_PathElement.IdType has unexpected type %T", x) + } + return nil +} + +func _Key_PathElement_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*Key_PathElement) + switch tag { + case 2: // id_type.id + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.IdType = &Key_PathElement_Id{int64(x)} + return true, err + case 3: // id_type.name + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.IdType = &Key_PathElement_Name{x} + return true, err + default: + return false, nil + } +} + +func _Key_PathElement_OneofSizer(msg proto.Message) (n int) { + m := msg.(*Key_PathElement) + // id_type + switch x := m.IdType.(type) { + case *Key_PathElement_Id: + n += proto.SizeVarint(2<<3 | proto.WireVarint) + n += proto.SizeVarint(uint64(x.Id)) + case *Key_PathElement_Name: + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(len(x.Name))) + n += len(x.Name) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Message for a unique key indicating a record that contains a finding. +type RecordKey struct { + // Types that are valid to be assigned to Type: + // *RecordKey_DatastoreKey + // *RecordKey_BigQueryKey + Type isRecordKey_Type `protobuf_oneof:"type"` +} + +func (m *RecordKey) Reset() { *m = RecordKey{} } +func (m *RecordKey) String() string { return proto.CompactTextString(m) } +func (*RecordKey) ProtoMessage() {} +func (*RecordKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } + +type isRecordKey_Type interface { + isRecordKey_Type() +} + +type RecordKey_DatastoreKey struct { + DatastoreKey *DatastoreKey `protobuf:"bytes,2,opt,name=datastore_key,json=datastoreKey,oneof"` +} +type RecordKey_BigQueryKey struct { + BigQueryKey *BigQueryKey `protobuf:"bytes,3,opt,name=big_query_key,json=bigQueryKey,oneof"` +} + +func (*RecordKey_DatastoreKey) isRecordKey_Type() {} +func (*RecordKey_BigQueryKey) isRecordKey_Type() {} + +func (m *RecordKey) GetType() isRecordKey_Type { + if m != nil { + return m.Type + } + return nil +} + +func (m *RecordKey) GetDatastoreKey() *DatastoreKey { + if x, ok := m.GetType().(*RecordKey_DatastoreKey); ok { + return x.DatastoreKey + } + return nil +} + +func (m *RecordKey) GetBigQueryKey() *BigQueryKey { + if x, ok := m.GetType().(*RecordKey_BigQueryKey); ok { + return x.BigQueryKey + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*RecordKey) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _RecordKey_OneofMarshaler, _RecordKey_OneofUnmarshaler, _RecordKey_OneofSizer, []interface{}{ + (*RecordKey_DatastoreKey)(nil), + (*RecordKey_BigQueryKey)(nil), + } +} + +func _RecordKey_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*RecordKey) + // type + switch x := m.Type.(type) { + case *RecordKey_DatastoreKey: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.DatastoreKey); err != nil { + return err + } + case *RecordKey_BigQueryKey: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.BigQueryKey); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("RecordKey.Type has unexpected type %T", x) + } + return nil +} + +func _RecordKey_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*RecordKey) + switch tag { + case 2: // type.datastore_key + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(DatastoreKey) + err := b.DecodeMessage(msg) + m.Type = &RecordKey_DatastoreKey{msg} + return true, err + case 3: // type.big_query_key + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(BigQueryKey) + err := b.DecodeMessage(msg) + m.Type = &RecordKey_BigQueryKey{msg} + return true, err + default: + return false, nil + } +} + +func _RecordKey_OneofSizer(msg proto.Message) (n int) { + m := msg.(*RecordKey) + // type + switch x := m.Type.(type) { + case *RecordKey_DatastoreKey: + s := proto.Size(x.DatastoreKey) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *RecordKey_BigQueryKey: + s := proto.Size(x.BigQueryKey) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Message defining the location of a BigQuery table. A table is uniquely +// identified by its project_id, dataset_id, and table_name. Within a query +// a table is often referenced with a string in the format of: +// `<project_id>:<dataset_id>.<table_id>` or +// `<project_id>.<dataset_id>.<table_id>`. +type BigQueryTable struct { + // The Google Cloud Platform project ID of the project containing the table. + // If omitted, project ID is inferred from the API call. + ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` + // Dataset ID of the table. + DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` + // Name of the table. + TableId string `protobuf:"bytes,3,opt,name=table_id,json=tableId" json:"table_id,omitempty"` +} + +func (m *BigQueryTable) Reset() { *m = BigQueryTable{} } +func (m *BigQueryTable) String() string { return proto.CompactTextString(m) } +func (*BigQueryTable) ProtoMessage() {} +func (*BigQueryTable) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } + +func (m *BigQueryTable) GetProjectId() string { + if m != nil { + return m.ProjectId + } + return "" +} + +func (m *BigQueryTable) GetDatasetId() string { + if m != nil { + return m.DatasetId + } + return "" +} + +func (m *BigQueryTable) GetTableId() string { + if m != nil { + return m.TableId + } + return "" +} + +func init() { + proto.RegisterType((*InfoType)(nil), "google.privacy.dlp.v2.InfoType") + proto.RegisterType((*CustomInfoType)(nil), "google.privacy.dlp.v2.CustomInfoType") + proto.RegisterType((*CustomInfoType_Dictionary)(nil), "google.privacy.dlp.v2.CustomInfoType.Dictionary") + proto.RegisterType((*CustomInfoType_Dictionary_WordList)(nil), "google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList") + proto.RegisterType((*CustomInfoType_Regex)(nil), "google.privacy.dlp.v2.CustomInfoType.Regex") + proto.RegisterType((*CustomInfoType_SurrogateType)(nil), "google.privacy.dlp.v2.CustomInfoType.SurrogateType") + proto.RegisterType((*CustomInfoType_DetectionRule)(nil), "google.privacy.dlp.v2.CustomInfoType.DetectionRule") + proto.RegisterType((*CustomInfoType_DetectionRule_Proximity)(nil), "google.privacy.dlp.v2.CustomInfoType.DetectionRule.Proximity") + proto.RegisterType((*CustomInfoType_DetectionRule_LikelihoodAdjustment)(nil), "google.privacy.dlp.v2.CustomInfoType.DetectionRule.LikelihoodAdjustment") + proto.RegisterType((*CustomInfoType_DetectionRule_HotwordRule)(nil), "google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRule") + proto.RegisterType((*FieldId)(nil), "google.privacy.dlp.v2.FieldId") + proto.RegisterType((*PartitionId)(nil), "google.privacy.dlp.v2.PartitionId") + proto.RegisterType((*KindExpression)(nil), "google.privacy.dlp.v2.KindExpression") + proto.RegisterType((*DatastoreOptions)(nil), "google.privacy.dlp.v2.DatastoreOptions") + proto.RegisterType((*CloudStorageOptions)(nil), "google.privacy.dlp.v2.CloudStorageOptions") + proto.RegisterType((*CloudStorageOptions_FileSet)(nil), "google.privacy.dlp.v2.CloudStorageOptions.FileSet") + proto.RegisterType((*BigQueryOptions)(nil), "google.privacy.dlp.v2.BigQueryOptions") + proto.RegisterType((*StorageConfig)(nil), "google.privacy.dlp.v2.StorageConfig") + proto.RegisterType((*StorageConfig_TimespanConfig)(nil), "google.privacy.dlp.v2.StorageConfig.TimespanConfig") + proto.RegisterType((*BigQueryKey)(nil), "google.privacy.dlp.v2.BigQueryKey") + proto.RegisterType((*DatastoreKey)(nil), "google.privacy.dlp.v2.DatastoreKey") + proto.RegisterType((*Key)(nil), "google.privacy.dlp.v2.Key") + proto.RegisterType((*Key_PathElement)(nil), "google.privacy.dlp.v2.Key.PathElement") + proto.RegisterType((*RecordKey)(nil), "google.privacy.dlp.v2.RecordKey") + proto.RegisterType((*BigQueryTable)(nil), "google.privacy.dlp.v2.BigQueryTable") + proto.RegisterEnum("google.privacy.dlp.v2.Likelihood", Likelihood_name, Likelihood_value) +} + +func init() { proto.RegisterFile("google/privacy/dlp/v2/storage.proto", fileDescriptor1) } + +var fileDescriptor1 = []byte{ + // 1517 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xef, 0x6e, 0x1b, 0x37, + 0x12, 0xd7, 0x4a, 0x96, 0x2d, 0x8d, 0xac, 0x3f, 0xa6, 0x9d, 0x83, 0xa2, 0x3b, 0x27, 0x8e, 0x92, + 0xcb, 0xe5, 0x72, 0x80, 0x74, 0x75, 0x50, 0xa0, 0xee, 0x1f, 0x14, 0x96, 0xa5, 0x44, 0xaa, 0x1d, + 0x5b, 0xa5, 0x1d, 0xa7, 0x69, 0x0d, 0x6c, 0x57, 0x22, 0x25, 0x33, 0x59, 0x2d, 0xb7, 0xbb, 0x94, + 0x6d, 0xa1, 0xe8, 0x33, 0x14, 0x28, 0xfa, 0x08, 0x05, 0x8a, 0x16, 0x05, 0x0a, 0xf4, 0x63, 0xfb, + 0x06, 0x7d, 0x88, 0x3e, 0x45, 0x1f, 0xa0, 0x20, 0xb9, 0xbb, 0x92, 0x1c, 0xab, 0x76, 0x82, 0x7c, + 0xd2, 0xce, 0x70, 0x7e, 0xc3, 0xe1, 0x6f, 0x86, 0x33, 0x14, 0xdc, 0xee, 0x73, 0xde, 0xb7, 0x69, + 0xd5, 0xf5, 0xd8, 0x89, 0xd5, 0x1d, 0x55, 0x89, 0xed, 0x56, 0x4f, 0xd6, 0xab, 0xbe, 0xe0, 0x9e, + 0xd5, 0xa7, 0x15, 0xd7, 0xe3, 0x82, 0xa3, 0x6b, 0xda, 0xa8, 0x12, 0x18, 0x55, 0x88, 0xed, 0x56, + 0x4e, 0xd6, 0x4b, 0xff, 0x0a, 0xb0, 0x96, 0xcb, 0xaa, 0x96, 0xe3, 0x70, 0x61, 0x09, 0xc6, 0x1d, + 0x5f, 0x83, 0x4a, 0x37, 0x23, 0xcf, 0x5c, 0xf0, 0xce, 0xb0, 0x57, 0x15, 0x6c, 0x40, 0x7d, 0x61, + 0x0d, 0x5c, 0x6d, 0x50, 0xbe, 0x01, 0xa9, 0x96, 0xd3, 0xe3, 0x07, 0x23, 0x97, 0x22, 0x04, 0x73, + 0x8e, 0x35, 0xa0, 0x45, 0x63, 0xcd, 0xb8, 0x97, 0xc6, 0xea, 0xbb, 0xfc, 0x27, 0x40, 0x6e, 0x6b, + 0xe8, 0x0b, 0x3e, 0x88, 0xcc, 0xde, 0x87, 0x34, 0x73, 0x7a, 0xdc, 0x14, 0x23, 0x57, 0xdb, 0x66, + 0xd6, 0x6f, 0x56, 0x2e, 0x0c, 0xae, 0x12, 0x62, 0x70, 0x8a, 0x85, 0xe8, 0x4d, 0x00, 0x9b, 0xbd, + 0xa0, 0x36, 0x3b, 0xe6, 0x9c, 0x14, 0xe7, 0xd7, 0x8c, 0x7b, 0xb9, 0xf5, 0x5b, 0x33, 0xe0, 0x3b, + 0x91, 0x21, 0x9e, 0x00, 0x21, 0x0c, 0x40, 0x58, 0x57, 0x1e, 0xd3, 0xf2, 0x46, 0xc5, 0xb8, 0x8a, + 0xe0, 0xff, 0x33, 0x5c, 0x4c, 0xc7, 0x5e, 0xa9, 0x47, 0xb8, 0x66, 0x0c, 0x4f, 0x78, 0x41, 0x5b, + 0x90, 0xf4, 0x68, 0x9f, 0x9e, 0x15, 0x13, 0xca, 0xdd, 0xff, 0xae, 0xe6, 0x0e, 0x4b, 0x48, 0x33, + 0x86, 0x35, 0x16, 0x1d, 0x41, 0xce, 0x1f, 0x7a, 0x1e, 0xef, 0x5b, 0x82, 0x6a, 0x7a, 0xe6, 0x94, + 0xb7, 0x07, 0x57, 0xf3, 0xb6, 0x1f, 0x62, 0xa5, 0xd4, 0x8c, 0xe1, 0xac, 0x3f, 0xa9, 0x40, 0x47, + 0x90, 0x27, 0x54, 0x50, 0x15, 0xb2, 0xe9, 0x0d, 0x6d, 0xea, 0x17, 0x17, 0xd6, 0x12, 0x57, 0x77, + 0x5f, 0x0f, 0xc1, 0x78, 0x68, 0x53, 0x9c, 0x23, 0x93, 0xa2, 0x5f, 0xfa, 0xc6, 0x00, 0x18, 0xb3, + 0x83, 0x3e, 0x81, 0xf4, 0x29, 0xf7, 0x88, 0x69, 0x33, 0x5f, 0x04, 0x49, 0xde, 0x78, 0x55, 0x8a, + 0x2b, 0x4f, 0xb9, 0x47, 0x76, 0x98, 0x2f, 0x9a, 0x31, 0x9c, 0x3a, 0x0d, 0xbe, 0x4b, 0x6b, 0x90, + 0x0a, 0xf5, 0x68, 0x05, 0x92, 0x52, 0xef, 0x17, 0x8d, 0xb5, 0xc4, 0xbd, 0x34, 0xd6, 0x42, 0x2d, + 0x05, 0xf3, 0x3e, 0x1f, 0x7a, 0x5d, 0x5a, 0xba, 0x05, 0x49, 0x45, 0x31, 0x2a, 0xc2, 0x82, 0x6b, + 0x09, 0x41, 0x3d, 0x27, 0xa8, 0xce, 0x50, 0x2c, 0xe5, 0x21, 0x3b, 0xc5, 0x5b, 0xe9, 0xd7, 0x24, + 0x64, 0xa7, 0x8e, 0x8a, 0x08, 0x2c, 0x1e, 0x73, 0xa1, 0x8e, 0x23, 0x69, 0x0b, 0x8e, 0xf3, 0xe1, + 0x6b, 0xb0, 0x56, 0x69, 0x6a, 0x3f, 0xf2, 0xbb, 0x19, 0xc3, 0x99, 0xe3, 0xb1, 0x58, 0xda, 0x87, + 0x74, 0xdb, 0xe3, 0x67, 0x6c, 0xc0, 0xc4, 0x08, 0xdd, 0x86, 0xec, 0x29, 0x73, 0x08, 0x3f, 0x35, + 0x3b, 0xb4, 0xc7, 0x3d, 0xbd, 0x67, 0x12, 0x2f, 0x6a, 0x65, 0x4d, 0xe9, 0xd0, 0x2d, 0x08, 0x64, + 0xd3, 0xea, 0x09, 0xea, 0xa9, 0x4a, 0x4e, 0xe2, 0x8c, 0xd6, 0x6d, 0x4a, 0x55, 0xe9, 0x7b, 0x03, + 0x56, 0xc6, 0xb7, 0x60, 0x93, 0x3c, 0x1f, 0xfa, 0x62, 0x40, 0x1d, 0x81, 0x76, 0xa1, 0xd0, 0x63, + 0x67, 0x54, 0x26, 0x28, 0xba, 0x4c, 0xc6, 0x15, 0x2f, 0x53, 0x33, 0x86, 0xf3, 0x0a, 0x3c, 0x56, + 0xa1, 0xb7, 0x60, 0xd9, 0xa3, 0xb6, 0x25, 0xd8, 0x09, 0x9d, 0x74, 0xa9, 0x42, 0x6a, 0xc6, 0x30, + 0x0a, 0x17, 0xc7, 0x90, 0xda, 0x22, 0x80, 0x15, 0x05, 0x54, 0xfa, 0x2d, 0x0e, 0x99, 0x09, 0x76, + 0x50, 0x1b, 0xb2, 0x11, 0xe9, 0xea, 0x62, 0x19, 0xaf, 0x7c, 0xb1, 0x70, 0x98, 0x36, 0x5d, 0x03, + 0x9f, 0x41, 0xda, 0x0d, 0x09, 0x0e, 0x6e, 0xfd, 0x07, 0xaf, 0x93, 0xc3, 0x28, 0x4b, 0x78, 0xec, + 0x0f, 0x7d, 0x05, 0xd7, 0xc6, 0xc7, 0x36, 0xc7, 0xe7, 0x0a, 0xfa, 0x41, 0xf3, 0x75, 0x36, 0xba, + 0x28, 0x71, 0x78, 0xc5, 0xbe, 0x40, 0x5b, 0x9b, 0x87, 0x39, 0xd9, 0x2f, 0xc2, 0xdf, 0xf2, 0x2a, + 0x2c, 0x3c, 0x64, 0xd4, 0x26, 0x2d, 0x72, 0x61, 0x57, 0xde, 0x83, 0x4c, 0xdb, 0xf2, 0x04, 0x93, + 0x5b, 0xb5, 0x08, 0x5a, 0x05, 0x70, 0x3d, 0xfe, 0x9c, 0x76, 0x85, 0xc9, 0x74, 0xce, 0xd2, 0xea, + 0x6c, 0x52, 0xd3, 0x22, 0xb2, 0xce, 0x24, 0xca, 0x77, 0xad, 0x2e, 0x95, 0x06, 0x73, 0xca, 0x20, + 0x13, 0xe9, 0x5a, 0xa4, 0x7c, 0x07, 0x72, 0xdb, 0xcc, 0x21, 0x8d, 0x33, 0xd7, 0xa3, 0xbe, 0xcf, + 0xb8, 0x73, 0xe1, 0xb6, 0xdf, 0x1a, 0x50, 0xa8, 0x5b, 0xc2, 0x92, 0x83, 0x89, 0xee, 0xb9, 0x6a, + 0xd0, 0xa0, 0x06, 0x2c, 0xba, 0x61, 0x2c, 0xd2, 0xbb, 0xce, 0x73, 0x79, 0x06, 0x61, 0x13, 0x61, + 0xe3, 0x8c, 0x3b, 0x71, 0x86, 0x0d, 0x98, 0x7b, 0xc1, 0x1c, 0x12, 0x24, 0xf6, 0xdf, 0x33, 0xe0, + 0xd3, 0x41, 0x62, 0x05, 0x29, 0xff, 0x62, 0xc0, 0xf2, 0x96, 0xcd, 0x87, 0x64, 0x5f, 0x0f, 0xcc, + 0x30, 0xb2, 0xc7, 0x90, 0xea, 0x31, 0x9b, 0x9a, 0x3e, 0x0d, 0x5b, 0xd8, 0xfa, 0xac, 0x34, 0xbe, + 0x8c, 0xae, 0x3c, 0x64, 0x36, 0xdd, 0xa7, 0x02, 0x2f, 0xf4, 0xf4, 0x07, 0xaa, 0xc2, 0x4a, 0x67, + 0x24, 0xa8, 0x6f, 0xda, 0xb2, 0x64, 0x4c, 0x97, 0x7a, 0xa6, 0x5c, 0x52, 0x74, 0x26, 0xf0, 0x92, + 0x5a, 0xdb, 0x91, 0x4b, 0x6d, 0xea, 0x49, 0x70, 0xe9, 0x9f, 0x32, 0x89, 0x1a, 0x5b, 0x80, 0xc4, + 0xd0, 0xb3, 0x03, 0x32, 0xe5, 0x67, 0xf9, 0x67, 0x03, 0xf2, 0x35, 0xd6, 0xff, 0x78, 0x48, 0xbd, + 0xd1, 0x38, 0xe0, 0xbc, 0xb0, 0x3a, 0x36, 0x35, 0x3d, 0xda, 0xa3, 0x1e, 0x75, 0xba, 0x61, 0xaf, + 0xba, 0x33, 0x23, 0xee, 0xd0, 0xc1, 0x81, 0x44, 0xe1, 0x9c, 0x02, 0xe3, 0x10, 0x8b, 0x1e, 0x03, + 0x62, 0x84, 0x3a, 0x82, 0xf5, 0x46, 0xcc, 0xe9, 0x9b, 0x3d, 0x59, 0x50, 0x7e, 0x31, 0xae, 0x66, + 0xc6, 0x8d, 0x19, 0x1e, 0x83, 0xaa, 0xc3, 0x4b, 0x13, 0x48, 0xa5, 0xf3, 0xcb, 0x3f, 0x25, 0x21, + 0x1b, 0x70, 0xb4, 0xc5, 0x9d, 0x1e, 0xeb, 0xa3, 0x43, 0x58, 0x22, 0x61, 0x39, 0x98, 0x5c, 0x1f, + 0x22, 0x48, 0xe0, 0x7f, 0x66, 0xf8, 0x3f, 0x5f, 0x3e, 0xcd, 0x18, 0x2e, 0x90, 0xf3, 0x25, 0xf5, + 0x39, 0x5c, 0xeb, 0xca, 0x8c, 0x98, 0xc1, 0x0b, 0x28, 0xf2, 0xad, 0x2f, 0xe3, 0xfd, 0xab, 0x67, + 0xb1, 0x19, 0xc3, 0xcb, 0xdd, 0x0b, 0x4a, 0xe3, 0x00, 0x96, 0x3a, 0xac, 0x6f, 0x7e, 0x21, 0xc9, + 0x8b, 0xbc, 0xeb, 0x61, 0x7d, 0xf7, 0x12, 0xae, 0xc7, 0x9e, 0xf3, 0x9d, 0x73, 0xf9, 0x3b, 0x82, + 0xbc, 0x7a, 0x5f, 0xb9, 0x96, 0x63, 0x76, 0x15, 0x45, 0xea, 0x81, 0x33, 0x7b, 0x42, 0x4f, 0xd1, + 0x59, 0x39, 0x08, 0xb0, 0x5a, 0xc4, 0x39, 0x31, 0x25, 0x97, 0xbe, 0x8b, 0x43, 0x6e, 0xda, 0x04, + 0x6d, 0x00, 0xf8, 0xc2, 0xf2, 0x84, 0x29, 0x4d, 0x83, 0x5a, 0x29, 0x8d, 0xf7, 0xd2, 0x6f, 0x3e, + 0xed, 0x57, 0xbe, 0xf9, 0x70, 0x5a, 0x59, 0x4b, 0x19, 0xbd, 0x0d, 0x29, 0xea, 0x10, 0x0d, 0x8c, + 0x5f, 0x0a, 0x5c, 0xa0, 0x0e, 0x51, 0xb0, 0x47, 0xc1, 0x11, 0xa5, 0x56, 0x57, 0x54, 0x90, 0x94, + 0xcb, 0x0a, 0x2a, 0x17, 0xc1, 0x94, 0x06, 0x3d, 0x85, 0xff, 0x52, 0x47, 0x15, 0xbb, 0x35, 0x14, + 0xdc, 0x74, 0xb9, 0x3b, 0xb4, 0xd5, 0xd3, 0xd5, 0xe4, 0x3d, 0xf3, 0x3c, 0x8b, 0x32, 0x33, 0x29, + 0x7c, 0x47, 0x03, 0x36, 0x87, 0x82, 0xb7, 0x23, 0xf3, 0xbd, 0xde, 0x34, 0x27, 0x51, 0x0b, 0xfd, + 0x12, 0x32, 0x61, 0xca, 0xb6, 0xe9, 0xe8, 0x4d, 0xdf, 0xad, 0x55, 0x00, 0x8f, 0x9f, 0x9a, 0xce, + 0x70, 0xd0, 0x09, 0x26, 0x77, 0x02, 0xa7, 0x3d, 0x7e, 0xba, 0xab, 0x14, 0xe5, 0x16, 0x2c, 0x46, + 0x95, 0x2e, 0x77, 0xdf, 0x00, 0x90, 0xd7, 0x49, 0x8c, 0xcc, 0x17, 0x74, 0xf4, 0x72, 0xa2, 0xa6, + 0x7b, 0x1c, 0x1d, 0xe1, 0xb4, 0xb6, 0xde, 0xa6, 0xa3, 0xf2, 0x1f, 0x06, 0x24, 0xa4, 0x8b, 0x37, + 0xd4, 0x67, 0xdf, 0x85, 0x39, 0xd7, 0x12, 0xc7, 0x41, 0x1b, 0xb8, 0x3b, 0x3b, 0x86, 0x4a, 0xdb, + 0x12, 0xc7, 0x0d, 0x9b, 0xaa, 0xa9, 0xa5, 0x30, 0xa5, 0x03, 0x39, 0x76, 0x22, 0xa5, 0x1c, 0x11, + 0xaa, 0x65, 0x07, 0x23, 0x42, 0x7e, 0xa3, 0x02, 0xc4, 0x83, 0x11, 0x94, 0x68, 0xc6, 0x70, 0x9c, + 0x11, 0xb4, 0x12, 0x0c, 0x12, 0x59, 0x26, 0xe9, 0x66, 0x4c, 0x8f, 0x92, 0x5a, 0x1a, 0x16, 0x18, + 0x51, 0x6f, 0xe4, 0xf2, 0x0f, 0x06, 0xa4, 0x31, 0xed, 0x72, 0x8f, 0xc8, 0x63, 0x7e, 0x04, 0xd9, + 0x71, 0x4f, 0x91, 0x64, 0xe9, 0xe2, 0xbc, 0x7d, 0x59, 0x3f, 0xd9, 0xa6, 0xf2, 0x49, 0xbf, 0x48, + 0x26, 0x59, 0x6f, 0x42, 0x76, 0x7c, 0xcb, 0xa5, 0xaf, 0xc4, 0xdf, 0x72, 0x36, 0x51, 0x2e, 0xf2, + 0x71, 0xd7, 0x19, 0x8b, 0x51, 0x51, 0x1d, 0x43, 0x76, 0xaa, 0x2e, 0xce, 0x8d, 0x5e, 0xe3, 0xfc, + 0xe8, 0x5d, 0x05, 0x50, 0x11, 0xd1, 0xc9, 0xc9, 0x1c, 0x68, 0x5a, 0x04, 0x5d, 0x87, 0x94, 0x2e, + 0x4a, 0xa6, 0xaf, 0x51, 0x1a, 0x2f, 0x28, 0xb9, 0x45, 0xee, 0x0b, 0x80, 0x89, 0xe7, 0x59, 0x09, + 0xfe, 0xb1, 0xd3, 0xda, 0x6e, 0xec, 0xb4, 0x9a, 0x7b, 0x7b, 0x75, 0xf3, 0xc9, 0xee, 0x7e, 0xbb, + 0xb1, 0xd5, 0x7a, 0xd8, 0x6a, 0xd4, 0x0b, 0x31, 0xb4, 0x04, 0xd9, 0xc3, 0x06, 0x7e, 0x66, 0x3e, + 0xd9, 0x55, 0x26, 0xcf, 0x0a, 0x06, 0x5a, 0x84, 0x54, 0x24, 0xc5, 0xa5, 0xd4, 0xde, 0xdb, 0xdf, + 0x6f, 0xd5, 0x76, 0x1a, 0x85, 0x04, 0x02, 0x98, 0x0f, 0x56, 0xe6, 0x50, 0x1e, 0x32, 0x0a, 0x1a, + 0x28, 0x92, 0xb5, 0xaf, 0x0d, 0xb8, 0xde, 0xe5, 0x83, 0x8b, 0x09, 0xaa, 0x41, 0xdd, 0x76, 0x83, + 0x96, 0xd5, 0x36, 0x3e, 0x7d, 0x27, 0x30, 0xea, 0x73, 0xdb, 0x72, 0xfa, 0x15, 0xee, 0xf5, 0xab, + 0x7d, 0xea, 0xa8, 0xe6, 0x51, 0xd5, 0x4b, 0x96, 0xcb, 0xfc, 0x73, 0x7f, 0x6a, 0xdf, 0x23, 0xb6, + 0xfb, 0x63, 0x7c, 0xf9, 0x91, 0x86, 0xaa, 0x8e, 0x5d, 0xa9, 0xdb, 0x6e, 0xe5, 0x70, 0xfd, 0xf7, + 0x50, 0x7b, 0xa4, 0xb4, 0x47, 0x75, 0xdb, 0x3d, 0x3a, 0x5c, 0xef, 0xcc, 0x2b, 0x87, 0x0f, 0xfe, + 0x0a, 0x00, 0x00, 0xff, 0xff, 0x23, 0xed, 0x0b, 0x18, 0x24, 0x0f, 0x00, 0x00, +} -- GitLab