From f92b0e0626270504c894a890fcb879380ea5bf32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Furkan=20G=C3=B6ksel?= Date: Fri, 19 Sep 2025 23:27:04 +0300 Subject: [PATCH] Add Chocolatey Inventory Extractor --- binary/proto/package_metadata.go | 5 + binary/proto/scan_result.proto | 12 + .../scan_result_go_proto/scan_result.pb.go | 3543 ++++++++--------- docs/supported_inventory_types.md | 1 + extractor/filesystem/list/list.go | 32 +- .../filesystem/os/chocolatey/chocolatey.go | 194 + .../os/chocolatey/chocolatey_test.go | 292 ++ .../os/chocolatey/metadata/metadata.go | 70 + .../os/chocolatey/metadata/metadata_test.go | 211 + .../lib/atom.install/atom.install.nuspec | 41 + .../testdata/chocolatey/lib/atom/atom.nuspec | 44 + .../chocolatey/lib/atom/atom_withoutid.nuspec | 43 + .../lib/atom/atom_withoutversion.nuspec | 43 + .../chocolatey/lib/cmake/cmake.nuspec | 50 + go.mod | 1 + purl/purl.go | 85 +- 16 files changed, 2631 insertions(+), 2036 deletions(-) create mode 100644 extractor/filesystem/os/chocolatey/chocolatey.go create mode 100644 extractor/filesystem/os/chocolatey/chocolatey_test.go create mode 100644 extractor/filesystem/os/chocolatey/metadata/metadata.go create mode 100644 extractor/filesystem/os/chocolatey/metadata/metadata_test.go create mode 100755 extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom.install/atom.install.nuspec create mode 100755 extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom.nuspec create mode 100755 extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom_withoutid.nuspec create mode 100755 extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom_withoutversion.nuspec create mode 100755 extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/cmake/cmake.nuspec diff --git a/binary/proto/package_metadata.go b/binary/proto/package_metadata.go index 8df0f6fc0..9fef0649f 100644 --- a/binary/proto/package_metadata.go +++ b/binary/proto/package_metadata.go @@ -23,6 +23,7 @@ import ( javascriptmeta "github.com/google/osv-scalibr/extractor/filesystem/language/javascript/packagejson/metadata" "github.com/google/osv-scalibr/extractor/filesystem/language/python/wheelegg" apkmeta "github.com/google/osv-scalibr/extractor/filesystem/os/apk/metadata" + chocolateymeta "github.com/google/osv-scalibr/extractor/filesystem/os/chocolatey/metadata" cosmeta "github.com/google/osv-scalibr/extractor/filesystem/os/cos/metadata" dpkgmeta "github.com/google/osv-scalibr/extractor/filesystem/os/dpkg/metadata" flatpakmeta "github.com/google/osv-scalibr/extractor/filesystem/os/flatpak/metadata" @@ -90,6 +91,9 @@ var ( reflect.TypeOf(&spb.Package_WingetMetadata{}): func(p *spb.Package) any { return wingetmeta.ToStruct(p.GetWingetMetadata()) }, + reflect.TypeOf(&spb.Package_ChocolateyMetadata{}): func(p *spb.Package) any { + return chocolateymeta.ToStruct(p.GetChocolateyMetadata()) + }, } _ = []MetadataProtoSetter{ @@ -110,5 +114,6 @@ var ( (*asdfmeta.Metadata)(nil), (*macportsmeta.Metadata)(nil), (*wingetmeta.Metadata)(nil), + (*chocolateymeta.Metadata)(nil), } ) diff --git a/binary/proto/scan_result.proto b/binary/proto/scan_result.proto index 658c934e8..ecefba160 100644 --- a/binary/proto/scan_result.proto +++ b/binary/proto/scan_result.proto @@ -127,6 +127,7 @@ message Package { MacportsPackageMetadata macports_metadata = 53; WingetPackageMetadata winget_metadata = 54; AsdfMetadata asdf_metadata = 55; + ChocolateyPackageMetadata chocolatey_metadata = 56; } // LINT.ThenChange(/binary/proto/package_metadata.go) @@ -629,6 +630,17 @@ message WingetPackageMetadata { repeated string commands = 7; } +// The additional data found in Chocolatey packages. +message ChocolateyPackageMetadata { + string name = 1; + string version = 2; + string authors = 3; + string summary = 4; + string licenseurl = 5; + string projecturl = 6; + string tags = 7; +} + // A secret (i.e. credential) found by Veles secret scanning. message Secret { SecretData secret = 1; diff --git a/binary/proto/scan_result_go_proto/scan_result.pb.go b/binary/proto/scan_result_go_proto/scan_result.pb.go index 5c382b8d4..f55a17280 100644 --- a/binary/proto/scan_result_go_proto/scan_result.pb.go +++ b/binary/proto/scan_result_go_proto/scan_result.pb.go @@ -15,18 +15,19 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 -// protoc v6.32.0 +// protoc-gen-go v1.36.8 +// protoc v3.12.4 // source: proto/scan_result.proto package scan_result_go_proto import ( + timestamp "github.com/golang/protobuf/ptypes/timestamp" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -328,18 +329,15 @@ func (x SecretStatus_SecretStatusEnum) Number() protoreflect.EnumNumber { // Deprecated: Use SecretStatus_SecretStatusEnum.Descriptor instead. func (SecretStatus_SecretStatusEnum) EnumDescriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 0} + return file_proto_scan_result_proto_rawDescGZIP(), []int{55, 0} } // The results of a scan incl. scan status and artifacts found. type ScanResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + StartTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + EndTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // Status of the overall scan. Status *ScanStatus `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` // Status and versions of the plugins that ran. @@ -351,6 +349,8 @@ type ScanResult struct { // Deprecated: Marked as deprecated in proto/scan_result.proto. FindingsDeprecated []*GenericFinding `protobuf:"bytes,7,rep,name=findings_deprecated,json=findingsDeprecated,proto3" json:"findings_deprecated,omitempty"` Inventory *Inventory `protobuf:"bytes,8,opt,name=inventory,proto3" json:"inventory,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ScanResult) Reset() { @@ -390,14 +390,14 @@ func (x *ScanResult) GetVersion() string { return "" } -func (x *ScanResult) GetStartTime() *timestamppb.Timestamp { +func (x *ScanResult) GetStartTime() *timestamp.Timestamp { if x != nil { return x.StartTime } return nil } -func (x *ScanResult) GetEndTime() *timestamppb.Timestamp { +func (x *ScanResult) GetEndTime() *timestamp.Timestamp { if x != nil { return x.EndTime } @@ -443,13 +443,12 @@ func (x *ScanResult) GetInventory() *Inventory { // The artifacts (e.g. software inventory, security findings) that a scan found. type Inventory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Packages []*Package `protobuf:"bytes,1,rep,name=packages,proto3" json:"packages,omitempty"` - GenericFindings []*GenericFinding `protobuf:"bytes,2,rep,name=generic_findings,json=genericFindings,proto3" json:"generic_findings,omitempty"` - Secrets []*Secret `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Packages []*Package `protobuf:"bytes,1,rep,name=packages,proto3" json:"packages,omitempty"` + GenericFindings []*GenericFinding `protobuf:"bytes,2,rep,name=generic_findings,json=genericFindings,proto3" json:"generic_findings,omitempty"` + Secrets []*Secret `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Inventory) Reset() { @@ -504,12 +503,11 @@ func (x *Inventory) GetSecrets() []*Secret { } type ScanStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Status ScanStatus_ScanStatusEnum `protobuf:"varint,1,opt,name=status,proto3,enum=scalibr.ScanStatus_ScanStatusEnum" json:"status,omitempty"` FailureReason string `protobuf:"bytes,2,opt,name=failure_reason,json=failureReason,proto3" json:"failure_reason,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ScanStatus) Reset() { @@ -557,13 +555,12 @@ func (x *ScanStatus) GetFailureReason() string { } type PluginStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` + Status *ScanStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` - Status *ScanStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PluginStatus) Reset() { @@ -620,10 +617,7 @@ func (x *PluginStatus) GetStatus() *ScanStatus { // A software package or library found by an extractor. // PURL or CPE needs to be set, maybe both. type Package struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Human-readable name of the software, to be used for things like logging. // For vuln matching, use the name from metadata. Name string `protobuf:"bytes,11,opt,name=name,proto3" json:"name,omitempty"` @@ -648,7 +642,7 @@ type Package struct { // The additional data found in the package. // LINT.IfChange // - // Types that are assignable to Metadata: + // Types that are valid to be assigned to Metadata: // // *Package_PythonMetadata // *Package_JavascriptMetadata @@ -684,6 +678,7 @@ type Package struct { // *Package_MacportsMetadata // *Package_WingetMetadata // *Package_AsdfMetadata + // *Package_ChocolateyMetadata Metadata isPackage_Metadata `protobuf_oneof:"metadata"` // Deprecated - use exploitability_signals instead // TODO(b/400910349): Remove once integrators stop using this. @@ -697,7 +692,9 @@ type Package struct { // container image scanning. LayerDetails *LayerDetails `protobuf:"bytes,35,opt,name=layer_details,json=layerDetails,proto3" json:"layer_details,omitempty"` // Software licenses information - Licenses []string `protobuf:"bytes,52,rep,name=licenses,proto3" json:"licenses,omitempty"` + Licenses []string `protobuf:"bytes,52,rep,name=licenses,proto3" json:"licenses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Package) Reset() { @@ -787,247 +784,324 @@ func (x *Package) GetPlugins() []string { return nil } -func (m *Package) GetMetadata() isPackage_Metadata { - if m != nil { - return m.Metadata +func (x *Package) GetMetadata() isPackage_Metadata { + if x != nil { + return x.Metadata } return nil } func (x *Package) GetPythonMetadata() *PythonPackageMetadata { - if x, ok := x.GetMetadata().(*Package_PythonMetadata); ok { - return x.PythonMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PythonMetadata); ok { + return x.PythonMetadata + } } return nil } func (x *Package) GetJavascriptMetadata() *JavascriptPackageJSONMetadata { - if x, ok := x.GetMetadata().(*Package_JavascriptMetadata); ok { - return x.JavascriptMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_JavascriptMetadata); ok { + return x.JavascriptMetadata + } } return nil } func (x *Package) GetApkMetadata() *APKPackageMetadata { - if x, ok := x.GetMetadata().(*Package_ApkMetadata); ok { - return x.ApkMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_ApkMetadata); ok { + return x.ApkMetadata + } } return nil } func (x *Package) GetDpkgMetadata() *DPKGPackageMetadata { - if x, ok := x.GetMetadata().(*Package_DpkgMetadata); ok { - return x.DpkgMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_DpkgMetadata); ok { + return x.DpkgMetadata + } } return nil } func (x *Package) GetRpmMetadata() *RPMPackageMetadata { - if x, ok := x.GetMetadata().(*Package_RpmMetadata); ok { - return x.RpmMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_RpmMetadata); ok { + return x.RpmMetadata + } } return nil } func (x *Package) GetCosMetadata() *COSPackageMetadata { - if x, ok := x.GetMetadata().(*Package_CosMetadata); ok { - return x.CosMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_CosMetadata); ok { + return x.CosMetadata + } } return nil } func (x *Package) GetDepsjsonMetadata() *DEPSJSONMetadata { - if x, ok := x.GetMetadata().(*Package_DepsjsonMetadata); ok { - return x.DepsjsonMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_DepsjsonMetadata); ok { + return x.DepsjsonMetadata + } } return nil } func (x *Package) GetSpdxMetadata() *SPDXPackageMetadata { - if x, ok := x.GetMetadata().(*Package_SpdxMetadata); ok { - return x.SpdxMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_SpdxMetadata); ok { + return x.SpdxMetadata + } } return nil } func (x *Package) GetJavaArchiveMetadata() *JavaArchiveMetadata { - if x, ok := x.GetMetadata().(*Package_JavaArchiveMetadata); ok { - return x.JavaArchiveMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_JavaArchiveMetadata); ok { + return x.JavaArchiveMetadata + } } return nil } func (x *Package) GetJavaLockfileMetadata() *JavaLockfileMetadata { - if x, ok := x.GetMetadata().(*Package_JavaLockfileMetadata); ok { - return x.JavaLockfileMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_JavaLockfileMetadata); ok { + return x.JavaLockfileMetadata + } } return nil } func (x *Package) GetPacmanMetadata() *PACMANPackageMetadata { - if x, ok := x.GetMetadata().(*Package_PacmanMetadata); ok { - return x.PacmanMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PacmanMetadata); ok { + return x.PacmanMetadata + } } return nil } func (x *Package) GetNixMetadata() *NixPackageMetadata { - if x, ok := x.GetMetadata().(*Package_NixMetadata); ok { - return x.NixMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_NixMetadata); ok { + return x.NixMetadata + } } return nil } func (x *Package) GetKernelModuleMetadata() *KernelModuleMetadata { - if x, ok := x.GetMetadata().(*Package_KernelModuleMetadata); ok { - return x.KernelModuleMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_KernelModuleMetadata); ok { + return x.KernelModuleMetadata + } } return nil } func (x *Package) GetVmlinuzMetadata() *VmlinuzMetadata { - if x, ok := x.GetMetadata().(*Package_VmlinuzMetadata); ok { - return x.VmlinuzMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_VmlinuzMetadata); ok { + return x.VmlinuzMetadata + } } return nil } func (x *Package) GetPortageMetadata() *PortagePackageMetadata { - if x, ok := x.GetMetadata().(*Package_PortageMetadata); ok { - return x.PortageMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PortageMetadata); ok { + return x.PortageMetadata + } } return nil } func (x *Package) GetOsvMetadata() *OSVPackageMetadata { - if x, ok := x.GetMetadata().(*Package_OsvMetadata); ok { - return x.OsvMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_OsvMetadata); ok { + return x.OsvMetadata + } } return nil } func (x *Package) GetNetportsMetadata() *NetportsMetadata { - if x, ok := x.GetMetadata().(*Package_NetportsMetadata); ok { - return x.NetportsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_NetportsMetadata); ok { + return x.NetportsMetadata + } } return nil } func (x *Package) GetPythonRequirementsMetadata() *PythonRequirementsMetadata { - if x, ok := x.GetMetadata().(*Package_PythonRequirementsMetadata); ok { - return x.PythonRequirementsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PythonRequirementsMetadata); ok { + return x.PythonRequirementsMetadata + } } return nil } func (x *Package) GetPythonSetupMetadata() *PythonSetupMetadata { - if x, ok := x.GetMetadata().(*Package_PythonSetupMetadata); ok { - return x.PythonSetupMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PythonSetupMetadata); ok { + return x.PythonSetupMetadata + } } return nil } func (x *Package) GetContainerdContainerMetadata() *ContainerdContainerMetadata { - if x, ok := x.GetMetadata().(*Package_ContainerdContainerMetadata); ok { - return x.ContainerdContainerMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_ContainerdContainerMetadata); ok { + return x.ContainerdContainerMetadata + } } return nil } func (x *Package) GetSnapMetadata() *SNAPPackageMetadata { - if x, ok := x.GetMetadata().(*Package_SnapMetadata); ok { - return x.SnapMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_SnapMetadata); ok { + return x.SnapMetadata + } } return nil } func (x *Package) GetFlatpakMetadata() *FlatpakPackageMetadata { - if x, ok := x.GetMetadata().(*Package_FlatpakMetadata); ok { - return x.FlatpakMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_FlatpakMetadata); ok { + return x.FlatpakMetadata + } } return nil } func (x *Package) GetMacAppsMetadata() *MacAppsMetadata { - if x, ok := x.GetMetadata().(*Package_MacAppsMetadata); ok { - return x.MacAppsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_MacAppsMetadata); ok { + return x.MacAppsMetadata + } } return nil } func (x *Package) GetContainerdRuntimeContainerMetadata() *ContainerdRuntimeContainerMetadata { - if x, ok := x.GetMetadata().(*Package_ContainerdRuntimeContainerMetadata); ok { - return x.ContainerdRuntimeContainerMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_ContainerdRuntimeContainerMetadata); ok { + return x.ContainerdRuntimeContainerMetadata + } } return nil } func (x *Package) GetCdxMetadata() *CDXPackageMetadata { - if x, ok := x.GetMetadata().(*Package_CdxMetadata); ok { - return x.CdxMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_CdxMetadata); ok { + return x.CdxMetadata + } } return nil } func (x *Package) GetWindowsOsVersionMetadata() *WindowsOSVersion { - if x, ok := x.GetMetadata().(*Package_WindowsOsVersionMetadata); ok { - return x.WindowsOsVersionMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_WindowsOsVersionMetadata); ok { + return x.WindowsOsVersionMetadata + } } return nil } func (x *Package) GetHomebrewMetadata() *HomebrewPackageMetadata { - if x, ok := x.GetMetadata().(*Package_HomebrewMetadata); ok { - return x.HomebrewMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_HomebrewMetadata); ok { + return x.HomebrewMetadata + } } return nil } func (x *Package) GetChromeExtensionsMetadata() *ChromeExtensionsMetadata { - if x, ok := x.GetMetadata().(*Package_ChromeExtensionsMetadata); ok { - return x.ChromeExtensionsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_ChromeExtensionsMetadata); ok { + return x.ChromeExtensionsMetadata + } } return nil } func (x *Package) GetVscodeExtensionsMetadata() *VSCodeExtensionsMetadata { - if x, ok := x.GetMetadata().(*Package_VscodeExtensionsMetadata); ok { - return x.VscodeExtensionsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_VscodeExtensionsMetadata); ok { + return x.VscodeExtensionsMetadata + } } return nil } func (x *Package) GetPodmanMetadata() *PodmanMetadata { - if x, ok := x.GetMetadata().(*Package_PodmanMetadata); ok { - return x.PodmanMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PodmanMetadata); ok { + return x.PodmanMetadata + } } return nil } func (x *Package) GetDockerContainersMetadata() *DockerContainersMetadata { - if x, ok := x.GetMetadata().(*Package_DockerContainersMetadata); ok { - return x.DockerContainersMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_DockerContainersMetadata); ok { + return x.DockerContainersMetadata + } } return nil } func (x *Package) GetMacportsMetadata() *MacportsPackageMetadata { - if x, ok := x.GetMetadata().(*Package_MacportsMetadata); ok { - return x.MacportsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_MacportsMetadata); ok { + return x.MacportsMetadata + } } return nil } func (x *Package) GetWingetMetadata() *WingetPackageMetadata { - if x, ok := x.GetMetadata().(*Package_WingetMetadata); ok { - return x.WingetMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_WingetMetadata); ok { + return x.WingetMetadata + } } return nil } func (x *Package) GetAsdfMetadata() *AsdfMetadata { - if x, ok := x.GetMetadata().(*Package_AsdfMetadata); ok { - return x.AsdfMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_AsdfMetadata); ok { + return x.AsdfMetadata + } + } + return nil +} + +func (x *Package) GetChocolateyMetadata() *ChocolateyPackageMetadata { + if x != nil { + if x, ok := x.Metadata.(*Package_ChocolateyMetadata); ok { + return x.ChocolateyMetadata + } } return nil } @@ -1201,6 +1275,10 @@ type Package_AsdfMetadata struct { AsdfMetadata *AsdfMetadata `protobuf:"bytes,55,opt,name=asdf_metadata,json=asdfMetadata,proto3,oneof"` } +type Package_ChocolateyMetadata struct { + ChocolateyMetadata *ChocolateyPackageMetadata `protobuf:"bytes,56,opt,name=chocolatey_metadata,json=chocolateyMetadata,proto3,oneof"` +} + func (*Package_PythonMetadata) isPackage_Metadata() {} func (*Package_JavascriptMetadata) isPackage_Metadata() {} @@ -1269,14 +1347,15 @@ func (*Package_WingetMetadata) isPackage_Metadata() {} func (*Package_AsdfMetadata) isPackage_Metadata() {} +func (*Package_ChocolateyMetadata) isPackage_Metadata() {} + // Additional identifiers for source code software packages (e.g. NPM). type SourceCodeIdentifier struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"` + Commit string `protobuf:"bytes,2,opt,name=commit,proto3" json:"commit,omitempty"` unknownFields protoimpl.UnknownFields - - Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"` - Commit string `protobuf:"bytes,2,opt,name=commit,proto3" json:"commit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SourceCodeIdentifier) Reset() { @@ -1325,10 +1404,7 @@ func (x *SourceCodeIdentifier) GetCommit() string { // Details about the layer a package was found in. type LayerDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The index of the layer in the container image. Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // The diff ID (typically a sha256 hash) of the layer in the container image. @@ -1340,7 +1416,9 @@ type LayerDetails struct { // found in all layers depending on how the container image is built. Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` // Denotes whether the layer is in the base image. - InBaseImage bool `protobuf:"varint,4,opt,name=in_base_image,json=inBaseImage,proto3" json:"in_base_image,omitempty"` + InBaseImage bool `protobuf:"varint,4,opt,name=in_base_image,json=inBaseImage,proto3" json:"in_base_image,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LayerDetails) Reset() { @@ -1411,19 +1489,18 @@ func (x *LayerDetails) GetInBaseImage() bool { // PackageExploitabilitySignal is used to indicate that specific vulnerabilities // are not applicable to a given package. type PackageExploitabilitySignal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the plugin (e.g. Annotator) that added this signal. Plugin string `protobuf:"bytes,1,opt,name=plugin,proto3" json:"plugin,omitempty"` // Reason for exclusion. Justification VexJustification `protobuf:"varint,2,opt,name=justification,proto3,enum=scalibr.VexJustification" json:"justification,omitempty"` - // Types that are assignable to VulnFilter: + // Types that are valid to be assigned to VulnFilter: // // *PackageExploitabilitySignal_VulnIdentifiers // *PackageExploitabilitySignal_MatchesAllVulns - VulnFilter isPackageExploitabilitySignal_VulnFilter `protobuf_oneof:"vuln_filter"` + VulnFilter isPackageExploitabilitySignal_VulnFilter `protobuf_oneof:"vuln_filter"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PackageExploitabilitySignal) Reset() { @@ -1470,23 +1547,27 @@ func (x *PackageExploitabilitySignal) GetJustification() VexJustification { return VexJustification_VEX_JUSTIFICATION_UNSPECIFIED } -func (m *PackageExploitabilitySignal) GetVulnFilter() isPackageExploitabilitySignal_VulnFilter { - if m != nil { - return m.VulnFilter +func (x *PackageExploitabilitySignal) GetVulnFilter() isPackageExploitabilitySignal_VulnFilter { + if x != nil { + return x.VulnFilter } return nil } func (x *PackageExploitabilitySignal) GetVulnIdentifiers() *VulnIdentifiers { - if x, ok := x.GetVulnFilter().(*PackageExploitabilitySignal_VulnIdentifiers); ok { - return x.VulnIdentifiers + if x != nil { + if x, ok := x.VulnFilter.(*PackageExploitabilitySignal_VulnIdentifiers); ok { + return x.VulnIdentifiers + } } return nil } func (x *PackageExploitabilitySignal) GetMatchesAllVulns() bool { - if x, ok := x.GetVulnFilter().(*PackageExploitabilitySignal_MatchesAllVulns); ok { - return x.MatchesAllVulns + if x != nil { + if x, ok := x.VulnFilter.(*PackageExploitabilitySignal_MatchesAllVulns); ok { + return x.MatchesAllVulns + } } return false } @@ -1512,11 +1593,10 @@ func (*PackageExploitabilitySignal_VulnIdentifiers) isPackageExploitabilitySigna func (*PackageExploitabilitySignal_MatchesAllVulns) isPackageExploitabilitySignal_VulnFilter() {} type VulnIdentifiers struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Identifiers []string `protobuf:"bytes,1,rep,name=identifiers,proto3" json:"identifiers,omitempty"` unknownFields protoimpl.UnknownFields - - Identifiers []string `protobuf:"bytes,1,rep,name=identifiers,proto3" json:"identifiers,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VulnIdentifiers) Reset() { @@ -1559,14 +1639,13 @@ func (x *VulnIdentifiers) GetIdentifiers() []string { // FindingExploitabilitySignal is used to indicate that a finding is not // exploitable. type FindingExploitabilitySignal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the plugin (e.g. Annotator) that added this signal. Plugin string `protobuf:"bytes,1,opt,name=plugin,proto3" json:"plugin,omitempty"` // Reason for exclusion. Justification VexJustification `protobuf:"varint,2,opt,name=justification,proto3,enum=scalibr.VexJustification" json:"justification,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FindingExploitabilitySignal) Reset() { @@ -1615,10 +1694,7 @@ func (x *FindingExploitabilitySignal) GetJustification() VexJustification { // Package URL, see https://github.com/package-url/purl-spec type Purl struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // String representation. Purl string `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"` // Package type, e.g. "maven, npm, pypi". @@ -1632,7 +1708,9 @@ type Purl struct { // Extra qualifying data for a package such as an OS, architecture, etc. Qualifiers []*Qualifier `protobuf:"bytes,6,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"` // Extra subpath within a package, relative to the package root. - Subpath string `protobuf:"bytes,7,opt,name=subpath,proto3" json:"subpath,omitempty"` + Subpath string `protobuf:"bytes,7,opt,name=subpath,proto3" json:"subpath,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Purl) Reset() { @@ -1715,12 +1793,11 @@ func (x *Purl) GetSubpath() string { } type Qualifier struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Qualifier) Reset() { @@ -1770,10 +1847,7 @@ func (x *Qualifier) GetValue() string { // Describes generic security findings not associated with any // specific package, e.g. weak credentials. type GenericFinding struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Info specific to the finding. Should always be the same for the same type // of finding. Adv *GenericFindingAdvisory `protobuf:"bytes,1,opt,name=adv,proto3" json:"adv,omitempty"` @@ -1783,6 +1857,8 @@ type GenericFinding struct { Plugins []string `protobuf:"bytes,4,rep,name=plugins,proto3" json:"plugins,omitempty"` // Signals that indicate this finding is not exploitable. ExploitabilitySignals []*FindingExploitabilitySignal `protobuf:"bytes,5,rep,name=exploitability_signals,json=exploitabilitySignals,proto3" json:"exploitability_signals,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GenericFinding) Reset() { @@ -1847,10 +1923,7 @@ func (x *GenericFinding) GetExploitabilitySignals() []*FindingExploitabilitySign // contain any information specific to the target (e.g. which files were // found vulnerable). type GenericFindingAdvisory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A unique ID for the finding. Id *AdvisoryId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` @@ -1858,6 +1931,8 @@ type GenericFindingAdvisory struct { // Remediation instructions, e.g. "update to latest version". Recommendation string `protobuf:"bytes,5,opt,name=recommendation,proto3" json:"recommendation,omitempty"` Sev SeverityEnum `protobuf:"varint,7,opt,name=sev,proto3,enum=scalibr.SeverityEnum" json:"sev,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GenericFindingAdvisory) Reset() { @@ -1927,12 +2002,11 @@ func (x *GenericFindingAdvisory) GetSev() SeverityEnum { // A unique identifier per advisory. type AdvisoryId struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Publisher string `protobuf:"bytes,1,opt,name=publisher,proto3" json:"publisher,omitempty"` // e.g. "CVE". + Reference string `protobuf:"bytes,2,opt,name=reference,proto3" json:"reference,omitempty"` // e.g. "CVE-2023-1234". unknownFields protoimpl.UnknownFields - - Publisher string `protobuf:"bytes,1,opt,name=publisher,proto3" json:"publisher,omitempty"` // e.g. "CVE". - Reference string `protobuf:"bytes,2,opt,name=reference,proto3" json:"reference,omitempty"` // e.g. "CVE-2023-1234". + sizeCache protoimpl.SizeCache } func (x *AdvisoryId) Reset() { @@ -1981,12 +2055,11 @@ func (x *AdvisoryId) GetReference() string { // Instance-specific details about the generic security finding. type GenericFindingTargetDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Free-text info. - Extra string `protobuf:"bytes,4,opt,name=extra,proto3" json:"extra,omitempty"` + Extra string `protobuf:"bytes,4,opt,name=extra,proto3" json:"extra,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GenericFindingTargetDetails) Reset() { @@ -2028,12 +2101,11 @@ func (x *GenericFindingTargetDetails) GetExtra() string { // The additional data found in python packages. type PythonPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` + AuthorEmail string `protobuf:"bytes,2,opt,name=author_email,json=authorEmail,proto3" json:"author_email,omitempty"` unknownFields protoimpl.UnknownFields - - Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` - AuthorEmail string `protobuf:"bytes,2,opt,name=author_email,json=authorEmail,proto3" json:"author_email,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PythonPackageMetadata) Reset() { @@ -2082,14 +2154,13 @@ func (x *PythonPackageMetadata) GetAuthorEmail() string { // The additional data found in npm packages. type JavascriptPackageJSONMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` - Maintainers []string `protobuf:"bytes,2,rep,name=maintainers,proto3" json:"maintainers,omitempty"` - Contributors []string `protobuf:"bytes,3,rep,name=contributors,proto3" json:"contributors,omitempty"` - FromNpmRepository bool `protobuf:"varint,4,opt,name=from_npm_repository,json=fromNpmRepository,proto3" json:"from_npm_repository,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` + Maintainers []string `protobuf:"bytes,2,rep,name=maintainers,proto3" json:"maintainers,omitempty"` + Contributors []string `protobuf:"bytes,3,rep,name=contributors,proto3" json:"contributors,omitempty"` + FromNpmRepository bool `protobuf:"varint,4,opt,name=from_npm_repository,json=fromNpmRepository,proto3" json:"from_npm_repository,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JavascriptPackageJSONMetadata) Reset() { @@ -2152,16 +2223,15 @@ func (x *JavascriptPackageJSONMetadata) GetFromNpmRepository() bool { // The additional data found in APK packages. type APKPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + OriginName string `protobuf:"bytes,2,opt,name=origin_name,json=originName,proto3" json:"origin_name,omitempty"` + OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + Maintainer string `protobuf:"bytes,5,opt,name=maintainer,proto3" json:"maintainer,omitempty"` + Architecture string `protobuf:"bytes,6,opt,name=architecture,proto3" json:"architecture,omitempty"` unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - OriginName string `protobuf:"bytes,2,opt,name=origin_name,json=originName,proto3" json:"origin_name,omitempty"` - OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - Maintainer string `protobuf:"bytes,5,opt,name=maintainer,proto3" json:"maintainer,omitempty"` - Architecture string `protobuf:"bytes,6,opt,name=architecture,proto3" json:"architecture,omitempty"` + sizeCache protoimpl.SizeCache } func (x *APKPackageMetadata) Reset() { @@ -2239,20 +2309,19 @@ func (x *APKPackageMetadata) GetArchitecture() string { // The additional data found in DPKG packages. // Next ID: 11 type DPKGPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - SourceName string `protobuf:"bytes,2,opt,name=source_name,json=sourceName,proto3" json:"source_name,omitempty"` - SourceVersion string `protobuf:"bytes,3,opt,name=source_version,json=sourceVersion,proto3" json:"source_version,omitempty"` - PackageVersion string `protobuf:"bytes,4,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` - OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - Maintainer string `protobuf:"bytes,8,opt,name=maintainer,proto3" json:"maintainer,omitempty"` - Architecture string `protobuf:"bytes,9,opt,name=architecture,proto3" json:"architecture,omitempty"` - Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + SourceName string `protobuf:"bytes,2,opt,name=source_name,json=sourceName,proto3" json:"source_name,omitempty"` + SourceVersion string `protobuf:"bytes,3,opt,name=source_version,json=sourceVersion,proto3" json:"source_version,omitempty"` + PackageVersion string `protobuf:"bytes,4,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` + OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + Maintainer string `protobuf:"bytes,8,opt,name=maintainer,proto3" json:"maintainer,omitempty"` + Architecture string `protobuf:"bytes,9,opt,name=architecture,proto3" json:"architecture,omitempty"` + Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DPKGPackageMetadata) Reset() { @@ -2357,19 +2426,18 @@ func (x *DPKGPackageMetadata) GetStatus() string { // The additional data found in RPM packages. type RPMPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + SourceRpm string `protobuf:"bytes,2,opt,name=source_rpm,json=sourceRpm,proto3" json:"source_rpm,omitempty"` + Epoch int32 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + OsId string `protobuf:"bytes,4,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionId string `protobuf:"bytes,5,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + OsBuildId string `protobuf:"bytes,6,opt,name=os_build_id,json=osBuildId,proto3" json:"os_build_id,omitempty"` + OsName string `protobuf:"bytes,7,opt,name=os_name,json=osName,proto3" json:"os_name,omitempty"` + Vendor string `protobuf:"bytes,8,opt,name=vendor,proto3" json:"vendor,omitempty"` + Architecture string `protobuf:"bytes,9,opt,name=architecture,proto3" json:"architecture,omitempty"` unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - SourceRpm string `protobuf:"bytes,2,opt,name=source_rpm,json=sourceRpm,proto3" json:"source_rpm,omitempty"` - Epoch int32 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` - OsId string `protobuf:"bytes,4,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionId string `protobuf:"bytes,5,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - OsBuildId string `protobuf:"bytes,6,opt,name=os_build_id,json=osBuildId,proto3" json:"os_build_id,omitempty"` - OsName string `protobuf:"bytes,7,opt,name=os_name,json=osName,proto3" json:"os_name,omitempty"` - Vendor string `protobuf:"bytes,8,opt,name=vendor,proto3" json:"vendor,omitempty"` - Architecture string `protobuf:"bytes,9,opt,name=architecture,proto3" json:"architecture,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RPMPackageMetadata) Reset() { @@ -2467,16 +2535,15 @@ func (x *RPMPackageMetadata) GetArchitecture() string { // The additional data found in COS packages. type COSPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"` + OsVersion string `protobuf:"bytes,4,opt,name=os_version,json=osVersion,proto3" json:"os_version,omitempty"` + OsVersionId string `protobuf:"bytes,5,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + EbuildVersion string `protobuf:"bytes,6,opt,name=ebuild_version,json=ebuildVersion,proto3" json:"ebuild_version,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"` - OsVersion string `protobuf:"bytes,4,opt,name=os_version,json=osVersion,proto3" json:"os_version,omitempty"` - OsVersionId string `protobuf:"bytes,5,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - EbuildVersion string `protobuf:"bytes,6,opt,name=ebuild_version,json=ebuildVersion,proto3" json:"ebuild_version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *COSPackageMetadata) Reset() { @@ -2553,16 +2620,15 @@ func (x *COSPackageMetadata) GetEbuildVersion() string { // The additional data found in PACMAN packages. type PACMANPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - PackageDescription string `protobuf:"bytes,5,opt,name=package_description,json=packageDescription,proto3" json:"package_description,omitempty"` - PackageDependencies string `protobuf:"bytes,6,opt,name=package_dependencies,json=packageDependencies,proto3" json:"package_dependencies,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + PackageDescription string `protobuf:"bytes,5,opt,name=package_description,json=packageDescription,proto3" json:"package_description,omitempty"` + PackageDependencies string `protobuf:"bytes,6,opt,name=package_dependencies,json=packageDependencies,proto3" json:"package_dependencies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PACMANPackageMetadata) Reset() { @@ -2639,17 +2705,16 @@ func (x *PACMANPackageMetadata) GetPackageDependencies() string { // The additional data found in Nix packages. type NixPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - PackageHash string `protobuf:"bytes,3,opt,name=package_hash,json=packageHash,proto3" json:"package_hash,omitempty"` - PackageOutput string `protobuf:"bytes,4,opt,name=package_output,json=packageOutput,proto3" json:"package_output,omitempty"` - OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` - OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + PackageHash string `protobuf:"bytes,3,opt,name=package_hash,json=packageHash,proto3" json:"package_hash,omitempty"` + PackageOutput string `protobuf:"bytes,4,opt,name=package_output,json=packageOutput,proto3" json:"package_output,omitempty"` + OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` + OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NixPackageMetadata) Reset() { @@ -2733,13 +2798,12 @@ func (x *NixPackageMetadata) GetOsVersionId() string { // The additional data found in .NET deps json packages. type DEPSJSONMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DEPSJSONMetadata) Reset() { @@ -2795,18 +2859,17 @@ func (x *DEPSJSONMetadata) GetType() string { // The additional data found in SNAP packages. type SNAPPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Grade string `protobuf:"bytes,3,opt,name=grade,proto3" json:"grade,omitempty"` - Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` - Architectures []string `protobuf:"bytes,5,rep,name=architectures,proto3" json:"architectures,omitempty"` - OsId string `protobuf:"bytes,6,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionCodename string `protobuf:"bytes,7,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` - OsVersionId string `protobuf:"bytes,8,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Grade string `protobuf:"bytes,3,opt,name=grade,proto3" json:"grade,omitempty"` + Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + Architectures []string `protobuf:"bytes,5,rep,name=architectures,proto3" json:"architectures,omitempty"` + OsId string `protobuf:"bytes,6,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionCodename string `protobuf:"bytes,7,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` + OsVersionId string `protobuf:"bytes,8,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SNAPPackageMetadata) Reset() { @@ -2897,14 +2960,13 @@ func (x *SNAPPackageMetadata) GetOsVersionId() string { // The additional data found in portage packages. type PortagePackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PortagePackageMetadata) Reset() { @@ -2967,19 +3029,18 @@ func (x *PortagePackageMetadata) GetOsVersionId() string { // The additional data found in Flatpak packages. type FlatpakPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageId string `protobuf:"bytes,2,opt,name=package_id,json=packageId,proto3" json:"package_id,omitempty"` - PackageVersion string `protobuf:"bytes,3,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - ReleaseDate string `protobuf:"bytes,4,opt,name=release_date,json=releaseDate,proto3" json:"release_date,omitempty"` - OsName string `protobuf:"bytes,5,opt,name=os_name,json=osName,proto3" json:"os_name,omitempty"` - OsId string `protobuf:"bytes,6,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - OsBuildId string `protobuf:"bytes,8,opt,name=os_build_id,json=osBuildId,proto3" json:"os_build_id,omitempty"` - Developer string `protobuf:"bytes,9,opt,name=developer,proto3" json:"developer,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageId string `protobuf:"bytes,2,opt,name=package_id,json=packageId,proto3" json:"package_id,omitempty"` + PackageVersion string `protobuf:"bytes,3,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + ReleaseDate string `protobuf:"bytes,4,opt,name=release_date,json=releaseDate,proto3" json:"release_date,omitempty"` + OsName string `protobuf:"bytes,5,opt,name=os_name,json=osName,proto3" json:"os_name,omitempty"` + OsId string `protobuf:"bytes,6,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + OsBuildId string `protobuf:"bytes,8,opt,name=os_build_id,json=osBuildId,proto3" json:"os_build_id,omitempty"` + Developer string `protobuf:"bytes,9,opt,name=developer,proto3" json:"developer,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FlatpakPackageMetadata) Reset() { @@ -3077,18 +3138,17 @@ func (x *FlatpakPackageMetadata) GetDeveloper() string { // The additional data found in MODULE packages. type KernelModuleMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - PackageVermagic string `protobuf:"bytes,3,opt,name=package_vermagic,json=packageVermagic,proto3" json:"package_vermagic,omitempty"` - PackageSourceVersionIdentifier string `protobuf:"bytes,4,opt,name=package_source_version_identifier,json=packageSourceVersionIdentifier,proto3" json:"package_source_version_identifier,omitempty"` - OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` - OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - PackageAuthor string `protobuf:"bytes,8,opt,name=package_author,json=packageAuthor,proto3" json:"package_author,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + PackageVermagic string `protobuf:"bytes,3,opt,name=package_vermagic,json=packageVermagic,proto3" json:"package_vermagic,omitempty"` + PackageSourceVersionIdentifier string `protobuf:"bytes,4,opt,name=package_source_version_identifier,json=packageSourceVersionIdentifier,proto3" json:"package_source_version_identifier,omitempty"` + OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` + OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + PackageAuthor string `protobuf:"bytes,8,opt,name=package_author,json=packageAuthor,proto3" json:"package_author,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *KernelModuleMetadata) Reset() { @@ -3179,22 +3239,21 @@ func (x *KernelModuleMetadata) GetPackageAuthor() string { // The additional data found in Vmlinuz packages. type VmlinuzMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Architecture string `protobuf:"bytes,3,opt,name=architecture,proto3" json:"architecture,omitempty"` - ExtendedVersion string `protobuf:"bytes,4,opt,name=extended_version,json=extendedVersion,proto3" json:"extended_version,omitempty"` - Format string `protobuf:"bytes,5,opt,name=format,proto3" json:"format,omitempty"` - SwapDevice int32 `protobuf:"varint,6,opt,name=swap_device,json=swapDevice,proto3" json:"swap_device,omitempty"` - RootDevice int32 `protobuf:"varint,7,opt,name=root_device,json=rootDevice,proto3" json:"root_device,omitempty"` - VideoMode string `protobuf:"bytes,8,opt,name=video_mode,json=videoMode,proto3" json:"video_mode,omitempty"` - OsId string `protobuf:"bytes,9,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionCodename string `protobuf:"bytes,10,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` - OsVersionId string `protobuf:"bytes,11,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - RwRootFs bool `protobuf:"varint,12,opt,name=rw_root_fs,json=rwRootFs,proto3" json:"rw_root_fs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Architecture string `protobuf:"bytes,3,opt,name=architecture,proto3" json:"architecture,omitempty"` + ExtendedVersion string `protobuf:"bytes,4,opt,name=extended_version,json=extendedVersion,proto3" json:"extended_version,omitempty"` + Format string `protobuf:"bytes,5,opt,name=format,proto3" json:"format,omitempty"` + SwapDevice int32 `protobuf:"varint,6,opt,name=swap_device,json=swapDevice,proto3" json:"swap_device,omitempty"` + RootDevice int32 `protobuf:"varint,7,opt,name=root_device,json=rootDevice,proto3" json:"root_device,omitempty"` + VideoMode string `protobuf:"bytes,8,opt,name=video_mode,json=videoMode,proto3" json:"video_mode,omitempty"` + OsId string `protobuf:"bytes,9,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionCodename string `protobuf:"bytes,10,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` + OsVersionId string `protobuf:"bytes,11,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + RwRootFs bool `protobuf:"varint,12,opt,name=rw_root_fs,json=rwRootFs,proto3" json:"rw_root_fs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VmlinuzMetadata) Reset() { @@ -3313,20 +3372,19 @@ func (x *VmlinuzMetadata) GetRwRootFs() bool { // The additional data found in Mac Applications. type MacAppsMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BundleDisplayName string `protobuf:"bytes,1,opt,name=bundle_display_name,json=bundleDisplayName,proto3" json:"bundle_display_name,omitempty"` - BundleIdentifier string `protobuf:"bytes,2,opt,name=bundle_identifier,json=bundleIdentifier,proto3" json:"bundle_identifier,omitempty"` - BundleShortVersionString string `protobuf:"bytes,3,opt,name=bundle_short_version_string,json=bundleShortVersionString,proto3" json:"bundle_short_version_string,omitempty"` - BundleExecutable string `protobuf:"bytes,4,opt,name=bundle_executable,json=bundleExecutable,proto3" json:"bundle_executable,omitempty"` - BundleName string `protobuf:"bytes,5,opt,name=bundle_name,json=bundleName,proto3" json:"bundle_name,omitempty"` - BundlePackageType string `protobuf:"bytes,6,opt,name=bundle_package_type,json=bundlePackageType,proto3" json:"bundle_package_type,omitempty"` - BundleSignature string `protobuf:"bytes,7,opt,name=bundle_signature,json=bundleSignature,proto3" json:"bundle_signature,omitempty"` - BundleVersion string `protobuf:"bytes,8,opt,name=bundle_version,json=bundleVersion,proto3" json:"bundle_version,omitempty"` - ProductId string `protobuf:"bytes,9,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` - UpdateUrl string `protobuf:"bytes,10,opt,name=update_url,json=updateUrl,proto3" json:"update_url,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BundleDisplayName string `protobuf:"bytes,1,opt,name=bundle_display_name,json=bundleDisplayName,proto3" json:"bundle_display_name,omitempty"` + BundleIdentifier string `protobuf:"bytes,2,opt,name=bundle_identifier,json=bundleIdentifier,proto3" json:"bundle_identifier,omitempty"` + BundleShortVersionString string `protobuf:"bytes,3,opt,name=bundle_short_version_string,json=bundleShortVersionString,proto3" json:"bundle_short_version_string,omitempty"` + BundleExecutable string `protobuf:"bytes,4,opt,name=bundle_executable,json=bundleExecutable,proto3" json:"bundle_executable,omitempty"` + BundleName string `protobuf:"bytes,5,opt,name=bundle_name,json=bundleName,proto3" json:"bundle_name,omitempty"` + BundlePackageType string `protobuf:"bytes,6,opt,name=bundle_package_type,json=bundlePackageType,proto3" json:"bundle_package_type,omitempty"` + BundleSignature string `protobuf:"bytes,7,opt,name=bundle_signature,json=bundleSignature,proto3" json:"bundle_signature,omitempty"` + BundleVersion string `protobuf:"bytes,8,opt,name=bundle_version,json=bundleVersion,proto3" json:"bundle_version,omitempty"` + ProductId string `protobuf:"bytes,9,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` + UpdateUrl string `protobuf:"bytes,10,opt,name=update_url,json=updateUrl,proto3" json:"update_url,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MacAppsMetadata) Reset() { @@ -3431,13 +3489,12 @@ func (x *MacAppsMetadata) GetUpdateUrl() string { // The additional data found in Macports packages. type MacportsPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - PackageRevision string `protobuf:"bytes,3,opt,name=package_revision,json=packageRevision,proto3" json:"package_revision,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + PackageRevision string `protobuf:"bytes,3,opt,name=package_revision,json=packageRevision,proto3" json:"package_revision,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MacportsPackageMetadata) Reset() { @@ -3493,12 +3550,11 @@ func (x *MacportsPackageMetadata) GetPackageRevision() string { // The additional data for packages extracted from SPDX files. type SPDXPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Purl *Purl `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"` + Cpes []string `protobuf:"bytes,2,rep,name=cpes,proto3" json:"cpes,omitempty"` unknownFields protoimpl.UnknownFields - - Purl *Purl `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"` - Cpes []string `protobuf:"bytes,2,rep,name=cpes,proto3" json:"cpes,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SPDXPackageMetadata) Reset() { @@ -3547,12 +3603,11 @@ func (x *SPDXPackageMetadata) GetCpes() []string { // The additional data for packages extracted from CDX files. type CDXPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Purl *Purl `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"` + Cpes []string `protobuf:"bytes,2,rep,name=cpes,proto3" json:"cpes,omitempty"` unknownFields protoimpl.UnknownFields - - Purl *Purl `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"` - Cpes []string `protobuf:"bytes,2,rep,name=cpes,proto3" json:"cpes,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CDXPackageMetadata) Reset() { @@ -3601,13 +3656,12 @@ func (x *CDXPackageMetadata) GetCpes() []string { // The additional data found in Java JAR packages. type JavaArchiveMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ArtifactId string `protobuf:"bytes,2,opt,name=artifact_id,json=artifactId,proto3" json:"artifact_id,omitempty"` + GroupId string `protobuf:"bytes,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + Sha1 string `protobuf:"bytes,4,opt,name=sha1,proto3" json:"sha1,omitempty"` unknownFields protoimpl.UnknownFields - - ArtifactId string `protobuf:"bytes,2,opt,name=artifact_id,json=artifactId,proto3" json:"artifact_id,omitempty"` - GroupId string `protobuf:"bytes,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` - Sha1 string `protobuf:"bytes,4,opt,name=sha1,proto3" json:"sha1,omitempty"` + sizeCache protoimpl.SizeCache } func (x *JavaArchiveMetadata) Reset() { @@ -3663,14 +3717,13 @@ func (x *JavaArchiveMetadata) GetSha1() string { // The additional data found in Java lockfiles. type JavaLockfileMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ArtifactId string `protobuf:"bytes,1,opt,name=artifact_id,json=artifactId,proto3" json:"artifact_id,omitempty"` + GroupId string `protobuf:"bytes,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + DepGroupVals []string `protobuf:"bytes,3,rep,name=dep_group_vals,json=depGroupVals,proto3" json:"dep_group_vals,omitempty"` + IsTransitive bool `protobuf:"varint,4,opt,name=is_transitive,json=isTransitive,proto3" json:"is_transitive,omitempty"` unknownFields protoimpl.UnknownFields - - ArtifactId string `protobuf:"bytes,1,opt,name=artifact_id,json=artifactId,proto3" json:"artifact_id,omitempty"` - GroupId string `protobuf:"bytes,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` - DepGroupVals []string `protobuf:"bytes,3,rep,name=dep_group_vals,json=depGroupVals,proto3" json:"dep_group_vals,omitempty"` - IsTransitive bool `protobuf:"varint,4,opt,name=is_transitive,json=isTransitive,proto3" json:"is_transitive,omitempty"` + sizeCache protoimpl.SizeCache } func (x *JavaLockfileMetadata) Reset() { @@ -3733,14 +3786,13 @@ func (x *JavaLockfileMetadata) GetIsTransitive() bool { // The additional data for packages extracted by an OSV extractor wrapper. type OSVPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PurlType string `protobuf:"bytes,1,opt,name=purl_type,json=purlType,proto3" json:"purl_type,omitempty"` + Commit string `protobuf:"bytes,2,opt,name=commit,proto3" json:"commit,omitempty"` + Ecosystem string `protobuf:"bytes,3,opt,name=ecosystem,proto3" json:"ecosystem,omitempty"` + CompareAs string `protobuf:"bytes,4,opt,name=compare_as,json=compareAs,proto3" json:"compare_as,omitempty"` unknownFields protoimpl.UnknownFields - - PurlType string `protobuf:"bytes,1,opt,name=purl_type,json=purlType,proto3" json:"purl_type,omitempty"` - Commit string `protobuf:"bytes,2,opt,name=commit,proto3" json:"commit,omitempty"` - Ecosystem string `protobuf:"bytes,3,opt,name=ecosystem,proto3" json:"ecosystem,omitempty"` - CompareAs string `protobuf:"bytes,4,opt,name=compare_as,json=compareAs,proto3" json:"compare_as,omitempty"` + sizeCache protoimpl.SizeCache } func (x *OSVPackageMetadata) Reset() { @@ -3802,13 +3854,12 @@ func (x *OSVPackageMetadata) GetCompareAs() string { } type PythonRequirementsMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HashCheckingModeValues []string `protobuf:"bytes,1,rep,name=hash_checking_mode_values,json=hashCheckingModeValues,proto3" json:"hash_checking_mode_values,omitempty"` - VersionComparator string `protobuf:"bytes,2,opt,name=version_comparator,json=versionComparator,proto3" json:"version_comparator,omitempty"` - Requirement string `protobuf:"bytes,3,opt,name=requirement,proto3" json:"requirement,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + HashCheckingModeValues []string `protobuf:"bytes,1,rep,name=hash_checking_mode_values,json=hashCheckingModeValues,proto3" json:"hash_checking_mode_values,omitempty"` + VersionComparator string `protobuf:"bytes,2,opt,name=version_comparator,json=versionComparator,proto3" json:"version_comparator,omitempty"` + Requirement string `protobuf:"bytes,3,opt,name=requirement,proto3" json:"requirement,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PythonRequirementsMetadata) Reset() { @@ -3863,11 +3914,10 @@ func (x *PythonRequirementsMetadata) GetRequirement() string { } type PythonSetupMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - VersionComparator string `protobuf:"bytes,2,opt,name=version_comparator,json=versionComparator,proto3" json:"version_comparator,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + VersionComparator string `protobuf:"bytes,2,opt,name=version_comparator,json=versionComparator,proto3" json:"version_comparator,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PythonSetupMetadata) Reset() { @@ -3909,13 +3959,12 @@ func (x *PythonSetupMetadata) GetVersionComparator() string { // Used to report open ports on a system. type NetportsMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"` + Protocol string `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` + CommandLine string `protobuf:"bytes,3,opt,name=command_line,json=commandLine,proto3" json:"command_line,omitempty"` unknownFields protoimpl.UnknownFields - - Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"` - Protocol string `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` - CommandLine string `protobuf:"bytes,3,opt,name=command_line,json=commandLine,proto3" json:"command_line,omitempty"` + sizeCache protoimpl.SizeCache } func (x *NetportsMetadata) Reset() { @@ -3970,23 +4019,22 @@ func (x *NetportsMetadata) GetCommandLine() string { } type ContainerdContainerMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + NamespaceName string `protobuf:"bytes,1,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` + ImageName string `protobuf:"bytes,2,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` + ImageDigest string `protobuf:"bytes,3,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` + Runtime string `protobuf:"bytes,4,opt,name=runtime,proto3" json:"runtime,omitempty"` + Pid int32 `protobuf:"varint,5,opt,name=pid,proto3" json:"pid,omitempty"` + Snapshotter string `protobuf:"bytes,6,opt,name=snapshotter,proto3" json:"snapshotter,omitempty"` + SnapshotKey string `protobuf:"bytes,7,opt,name=snapshot_key,json=snapshotKey,proto3" json:"snapshot_key,omitempty"` + LowerDir string `protobuf:"bytes,8,opt,name=lower_dir,json=lowerDir,proto3" json:"lower_dir,omitempty"` + UpperDir string `protobuf:"bytes,9,opt,name=upper_dir,json=upperDir,proto3" json:"upper_dir,omitempty"` + WorkDir string `protobuf:"bytes,10,opt,name=work_dir,json=workDir,proto3" json:"work_dir,omitempty"` + Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + PodName string `protobuf:"bytes,12,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"` + PodNamespace string `protobuf:"bytes,13,opt,name=pod_namespace,json=podNamespace,proto3" json:"pod_namespace,omitempty"` unknownFields protoimpl.UnknownFields - - NamespaceName string `protobuf:"bytes,1,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` - ImageName string `protobuf:"bytes,2,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` - ImageDigest string `protobuf:"bytes,3,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` - Runtime string `protobuf:"bytes,4,opt,name=runtime,proto3" json:"runtime,omitempty"` - Pid int32 `protobuf:"varint,5,opt,name=pid,proto3" json:"pid,omitempty"` - Snapshotter string `protobuf:"bytes,6,opt,name=snapshotter,proto3" json:"snapshotter,omitempty"` - SnapshotKey string `protobuf:"bytes,7,opt,name=snapshot_key,json=snapshotKey,proto3" json:"snapshot_key,omitempty"` - LowerDir string `protobuf:"bytes,8,opt,name=lower_dir,json=lowerDir,proto3" json:"lower_dir,omitempty"` - UpperDir string `protobuf:"bytes,9,opt,name=upper_dir,json=upperDir,proto3" json:"upper_dir,omitempty"` - WorkDir string `protobuf:"bytes,10,opt,name=work_dir,json=workDir,proto3" json:"work_dir,omitempty"` - Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` - PodName string `protobuf:"bytes,12,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"` - PodNamespace string `protobuf:"bytes,13,opt,name=pod_namespace,json=podNamespace,proto3" json:"pod_namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ContainerdContainerMetadata) Reset() { @@ -4111,17 +4159,16 @@ func (x *ContainerdContainerMetadata) GetPodNamespace() string { } type ContainerdRuntimeContainerMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + NamespaceName string `protobuf:"bytes,1,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` + ImageName string `protobuf:"bytes,2,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` + ImageDigest string `protobuf:"bytes,3,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` + Runtime string `protobuf:"bytes,4,opt,name=runtime,proto3" json:"runtime,omitempty"` + Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` + Pid int32 `protobuf:"varint,6,opt,name=pid,proto3" json:"pid,omitempty"` + RootfsPath string `protobuf:"bytes,7,opt,name=rootfs_path,json=rootfsPath,proto3" json:"rootfs_path,omitempty"` unknownFields protoimpl.UnknownFields - - NamespaceName string `protobuf:"bytes,1,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` - ImageName string `protobuf:"bytes,2,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` - ImageDigest string `protobuf:"bytes,3,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` - Runtime string `protobuf:"bytes,4,opt,name=runtime,proto3" json:"runtime,omitempty"` - Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` - Pid int32 `protobuf:"varint,6,opt,name=pid,proto3" json:"pid,omitempty"` - RootfsPath string `protobuf:"bytes,7,opt,name=rootfs_path,json=rootfsPath,proto3" json:"rootfs_path,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ContainerdRuntimeContainerMetadata) Reset() { @@ -4204,12 +4251,11 @@ func (x *ContainerdRuntimeContainerMetadata) GetRootfsPath() string { } type WindowsOSVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Product string `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` + FullVersion string `protobuf:"bytes,2,opt,name=full_version,json=fullVersion,proto3" json:"full_version,omitempty"` unknownFields protoimpl.UnknownFields - - Product string `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` - FullVersion string `protobuf:"bytes,2,opt,name=full_version,json=fullVersion,proto3" json:"full_version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WindowsOSVersion) Reset() { @@ -4258,9 +4304,9 @@ func (x *WindowsOSVersion) GetFullVersion() string { // The additional data found in Homebrew packages. type HomebrewPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HomebrewPackageMetadata) Reset() { @@ -4295,18 +4341,17 @@ func (*HomebrewPackageMetadata) Descriptor() ([]byte, []int) { // The additional data found in Chrome extensions. type ChromeExtensionsMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - AuthorEmail string `protobuf:"bytes,3,opt,name=author_email,json=authorEmail,proto3" json:"author_email,omitempty"` - HostPermissions []string `protobuf:"bytes,4,rep,name=host_permissions,json=hostPermissions,proto3" json:"host_permissions,omitempty"` - ManifestVersion int32 `protobuf:"varint,5,opt,name=manifest_version,json=manifestVersion,proto3" json:"manifest_version,omitempty"` - MinimumChromeVersion string `protobuf:"bytes,6,opt,name=minimum_chrome_version,json=minimumChromeVersion,proto3" json:"minimum_chrome_version,omitempty"` - Permissions []string `protobuf:"bytes,7,rep,name=permissions,proto3" json:"permissions,omitempty"` - UpdateUrl string `protobuf:"bytes,8,opt,name=update_url,json=updateUrl,proto3" json:"update_url,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + AuthorEmail string `protobuf:"bytes,3,opt,name=author_email,json=authorEmail,proto3" json:"author_email,omitempty"` + HostPermissions []string `protobuf:"bytes,4,rep,name=host_permissions,json=hostPermissions,proto3" json:"host_permissions,omitempty"` + ManifestVersion int32 `protobuf:"varint,5,opt,name=manifest_version,json=manifestVersion,proto3" json:"manifest_version,omitempty"` + MinimumChromeVersion string `protobuf:"bytes,6,opt,name=minimum_chrome_version,json=minimumChromeVersion,proto3" json:"minimum_chrome_version,omitempty"` + Permissions []string `protobuf:"bytes,7,rep,name=permissions,proto3" json:"permissions,omitempty"` + UpdateUrl string `protobuf:"bytes,8,opt,name=update_url,json=updateUrl,proto3" json:"update_url,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ChromeExtensionsMetadata) Reset() { @@ -4397,17 +4442,16 @@ func (x *ChromeExtensionsMetadata) GetUpdateUrl() string { // The additional data found in VSCode extensions. type VSCodeExtensionsMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - PublisherId string `protobuf:"bytes,2,opt,name=publisher_id,json=publisherId,proto3" json:"publisher_id,omitempty"` - PublisherDisplayName string `protobuf:"bytes,3,opt,name=publisher_display_name,json=publisherDisplayName,proto3" json:"publisher_display_name,omitempty"` - TargetPlatform string `protobuf:"bytes,4,opt,name=target_platform,json=targetPlatform,proto3" json:"target_platform,omitempty"` - Updated bool `protobuf:"varint,5,opt,name=updated,proto3" json:"updated,omitempty"` - IsPreReleaseVersion bool `protobuf:"varint,6,opt,name=is_pre_release_version,json=isPreReleaseVersion,proto3" json:"is_pre_release_version,omitempty"` - InstalledTimestamp int64 `protobuf:"varint,7,opt,name=installed_timestamp,json=installedTimestamp,proto3" json:"installed_timestamp,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + PublisherId string `protobuf:"bytes,2,opt,name=publisher_id,json=publisherId,proto3" json:"publisher_id,omitempty"` + PublisherDisplayName string `protobuf:"bytes,3,opt,name=publisher_display_name,json=publisherDisplayName,proto3" json:"publisher_display_name,omitempty"` + TargetPlatform string `protobuf:"bytes,4,opt,name=target_platform,json=targetPlatform,proto3" json:"target_platform,omitempty"` + Updated bool `protobuf:"varint,5,opt,name=updated,proto3" json:"updated,omitempty"` + IsPreReleaseVersion bool `protobuf:"varint,6,opt,name=is_pre_release_version,json=isPreReleaseVersion,proto3" json:"is_pre_release_version,omitempty"` + InstalledTimestamp int64 `protobuf:"varint,7,opt,name=installed_timestamp,json=installedTimestamp,proto3" json:"installed_timestamp,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VSCodeExtensionsMetadata) Reset() { @@ -4491,18 +4535,17 @@ func (x *VSCodeExtensionsMetadata) GetInstalledTimestamp() int64 { // The additional data found in Podman containers. type PodmanMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ExposedPorts map[uint32]*Protocol `protobuf:"bytes,1,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + ExposedPorts map[uint32]*Protocol `protobuf:"bytes,1,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` Pid int32 `protobuf:"varint,2,opt,name=pid,proto3" json:"pid,omitempty"` NamespaceName string `protobuf:"bytes,3,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` - StartedTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=started_time,json=startedTime,proto3" json:"started_time,omitempty"` - FinishedTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=finished_time,json=finishedTime,proto3" json:"finished_time,omitempty"` + StartedTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=started_time,json=startedTime,proto3" json:"started_time,omitempty"` + FinishedTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=finished_time,json=finishedTime,proto3" json:"finished_time,omitempty"` Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` ExitCode int32 `protobuf:"varint,7,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` Exited bool `protobuf:"varint,8,opt,name=exited,proto3" json:"exited,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PodmanMetadata) Reset() { @@ -4556,14 +4599,14 @@ func (x *PodmanMetadata) GetNamespaceName() string { return "" } -func (x *PodmanMetadata) GetStartedTime() *timestamppb.Timestamp { +func (x *PodmanMetadata) GetStartedTime() *timestamp.Timestamp { if x != nil { return x.StartedTime } return nil } -func (x *PodmanMetadata) GetFinishedTime() *timestamppb.Timestamp { +func (x *PodmanMetadata) GetFinishedTime() *timestamp.Timestamp { if x != nil { return x.FinishedTime } @@ -4592,11 +4635,10 @@ func (x *PodmanMetadata) GetExited() bool { } type Protocol struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` unknownFields protoimpl.UnknownFields - - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Protocol) Reset() { @@ -4637,14 +4679,13 @@ func (x *Protocol) GetNames() []string { } type DockerContainersMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ImageName string `protobuf:"bytes,1,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` + ImageDigest string `protobuf:"bytes,2,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` + Ports []*DockerPort `protobuf:"bytes,4,rep,name=ports,proto3" json:"ports,omitempty"` unknownFields protoimpl.UnknownFields - - ImageName string `protobuf:"bytes,1,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` - ImageDigest string `protobuf:"bytes,2,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` - Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` - Ports []*DockerPort `protobuf:"bytes,4,rep,name=ports,proto3" json:"ports,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DockerContainersMetadata) Reset() { @@ -4706,12 +4747,11 @@ func (x *DockerContainersMetadata) GetPorts() []*DockerPort { } type AsdfMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ToolName string `protobuf:"bytes,1,opt,name=tool_name,json=toolName,proto3" json:"tool_name,omitempty"` + ToolVersion string `protobuf:"bytes,2,opt,name=tool_version,json=toolVersion,proto3" json:"tool_version,omitempty"` unknownFields protoimpl.UnknownFields - - ToolName string `protobuf:"bytes,1,opt,name=tool_name,json=toolName,proto3" json:"tool_name,omitempty"` - ToolVersion string `protobuf:"bytes,2,opt,name=tool_version,json=toolVersion,proto3" json:"tool_version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AsdfMetadata) Reset() { @@ -4759,14 +4799,13 @@ func (x *AsdfMetadata) GetToolVersion() string { } type DockerPort struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` + PrivatePort uint32 `protobuf:"varint,2,opt,name=private_port,json=privatePort,proto3" json:"private_port,omitempty"` + PublicPort uint32 `protobuf:"varint,3,opt,name=public_port,json=publicPort,proto3" json:"public_port,omitempty"` + Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` - PrivatePort uint32 `protobuf:"varint,2,opt,name=private_port,json=privatePort,proto3" json:"private_port,omitempty"` - PublicPort uint32 `protobuf:"varint,3,opt,name=public_port,json=publicPort,proto3" json:"public_port,omitempty"` - Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DockerPort) Reset() { @@ -4829,17 +4868,16 @@ func (x *DockerPort) GetType() string { // The additional data found in Windows Package Manager (Winget) packages. type WingetPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Moniker string `protobuf:"bytes,4,opt,name=moniker,proto3" json:"moniker,omitempty"` + Channel string `protobuf:"bytes,5,opt,name=channel,proto3" json:"channel,omitempty"` + Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` + Commands []string `protobuf:"bytes,7,rep,name=commands,proto3" json:"commands,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - Moniker string `protobuf:"bytes,4,opt,name=moniker,proto3" json:"moniker,omitempty"` - Channel string `protobuf:"bytes,5,opt,name=channel,proto3" json:"channel,omitempty"` - Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` - Commands []string `protobuf:"bytes,7,rep,name=commands,proto3" json:"commands,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WingetPackageMetadata) Reset() { @@ -4921,20 +4959,112 @@ func (x *WingetPackageMetadata) GetCommands() []string { return nil } -// A secret (i.e. credential) found by Veles secret scanning. -type Secret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +// The additional data found in Chocolatey packages. +type ChocolateyPackageMetadata struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Authors string `protobuf:"bytes,3,opt,name=authors,proto3" json:"authors,omitempty"` + Summary string `protobuf:"bytes,4,opt,name=summary,proto3" json:"summary,omitempty"` + Licenseurl string `protobuf:"bytes,5,opt,name=licenseurl,proto3" json:"licenseurl,omitempty"` + Projecturl string `protobuf:"bytes,6,opt,name=projecturl,proto3" json:"projecturl,omitempty"` + Tags string `protobuf:"bytes,7,opt,name=tags,proto3" json:"tags,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ChocolateyPackageMetadata) Reset() { + *x = ChocolateyPackageMetadata{} + mi := &file_proto_scan_result_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ChocolateyPackageMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChocolateyPackageMetadata) ProtoMessage() {} + +func (x *ChocolateyPackageMetadata) ProtoReflect() protoreflect.Message { + mi := &file_proto_scan_result_proto_msgTypes[52] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChocolateyPackageMetadata.ProtoReflect.Descriptor instead. +func (*ChocolateyPackageMetadata) Descriptor() ([]byte, []int) { + return file_proto_scan_result_proto_rawDescGZIP(), []int{52} +} + +func (x *ChocolateyPackageMetadata) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ChocolateyPackageMetadata) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *ChocolateyPackageMetadata) GetAuthors() string { + if x != nil { + return x.Authors + } + return "" +} + +func (x *ChocolateyPackageMetadata) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *ChocolateyPackageMetadata) GetLicenseurl() string { + if x != nil { + return x.Licenseurl + } + return "" +} - Secret *SecretData `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"` - Status *SecretStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - Locations []*Location `protobuf:"bytes,3,rep,name=locations,proto3" json:"locations,omitempty"` +func (x *ChocolateyPackageMetadata) GetProjecturl() string { + if x != nil { + return x.Projecturl + } + return "" +} + +func (x *ChocolateyPackageMetadata) GetTags() string { + if x != nil { + return x.Tags + } + return "" +} + +// A secret (i.e. credential) found by Veles secret scanning. +type Secret struct { + state protoimpl.MessageState `protogen:"open.v1"` + Secret *SecretData `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"` + Status *SecretStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + Locations []*Location `protobuf:"bytes,3,rep,name=locations,proto3" json:"locations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Secret) Reset() { *x = Secret{} - mi := &file_proto_scan_result_proto_msgTypes[52] + mi := &file_proto_scan_result_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4946,7 +5076,7 @@ func (x *Secret) String() string { func (*Secret) ProtoMessage() {} func (x *Secret) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[52] + mi := &file_proto_scan_result_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4959,7 +5089,7 @@ func (x *Secret) ProtoReflect() protoreflect.Message { // Deprecated: Use Secret.ProtoReflect.Descriptor instead. func (*Secret) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{52} + return file_proto_scan_result_proto_rawDescGZIP(), []int{53} } func (x *Secret) GetSecret() *SecretData { @@ -4984,11 +5114,8 @@ func (x *Secret) GetLocations() []*Location { } type SecretData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Secret: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Secret: // // *SecretData_Gcpsak // *SecretData_AnthropicWorkspaceApiKey @@ -5011,12 +5138,14 @@ type SecretData struct { // *SecretData_GcpApiKey // *SecretData_Hugginface // *SecretData_GithubAppRefreshToken_ - Secret isSecretData_Secret `protobuf_oneof:"secret"` + Secret isSecretData_Secret `protobuf_oneof:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData) Reset() { *x = SecretData{} - mi := &file_proto_scan_result_proto_msgTypes[53] + mi := &file_proto_scan_result_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5028,7 +5157,7 @@ func (x *SecretData) String() string { func (*SecretData) ProtoMessage() {} func (x *SecretData) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[53] + mi := &file_proto_scan_result_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5041,159 +5170,201 @@ func (x *SecretData) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData.ProtoReflect.Descriptor instead. func (*SecretData) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54} } -func (m *SecretData) GetSecret() isSecretData_Secret { - if m != nil { - return m.Secret +func (x *SecretData) GetSecret() isSecretData_Secret { + if x != nil { + return x.Secret } return nil } func (x *SecretData) GetGcpsak() *SecretData_GCPSAK { - if x, ok := x.GetSecret().(*SecretData_Gcpsak); ok { - return x.Gcpsak + if x != nil { + if x, ok := x.Secret.(*SecretData_Gcpsak); ok { + return x.Gcpsak + } } return nil } func (x *SecretData) GetAnthropicWorkspaceApiKey() *SecretData_AnthropicWorkspaceAPIKey { - if x, ok := x.GetSecret().(*SecretData_AnthropicWorkspaceApiKey); ok { - return x.AnthropicWorkspaceApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_AnthropicWorkspaceApiKey); ok { + return x.AnthropicWorkspaceApiKey + } } return nil } func (x *SecretData) GetAnthropicModelApiKey() *SecretData_AnthropicModelAPIKey { - if x, ok := x.GetSecret().(*SecretData_AnthropicModelApiKey); ok { - return x.AnthropicModelApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_AnthropicModelApiKey); ok { + return x.AnthropicModelApiKey + } } return nil } func (x *SecretData) GetPerplexity() *SecretData_PerplexityAPIKey { - if x, ok := x.GetSecret().(*SecretData_Perplexity); ok { - return x.Perplexity + if x != nil { + if x, ok := x.Secret.(*SecretData_Perplexity); ok { + return x.Perplexity + } } return nil } func (x *SecretData) GetPrivateKey() *SecretData_PrivateKey { - if x, ok := x.GetSecret().(*SecretData_PrivateKey_); ok { - return x.PrivateKey + if x != nil { + if x, ok := x.Secret.(*SecretData_PrivateKey_); ok { + return x.PrivateKey + } } return nil } func (x *SecretData) GetGrokXaiApiKey() *SecretData_GrokXAIAPIKey { - if x, ok := x.GetSecret().(*SecretData_GrokXaiApiKey); ok { - return x.GrokXaiApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_GrokXaiApiKey); ok { + return x.GrokXaiApiKey + } } return nil } func (x *SecretData) GetGrokXaiManagementApiKey() *SecretData_GrokXAIManagementAPIKey { - if x, ok := x.GetSecret().(*SecretData_GrokXaiManagementApiKey); ok { - return x.GrokXaiManagementApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_GrokXaiManagementApiKey); ok { + return x.GrokXaiManagementApiKey + } } return nil } func (x *SecretData) GetDockerHubPat() *SecretData_DockerHubPat { - if x, ok := x.GetSecret().(*SecretData_DockerHubPat_); ok { - return x.DockerHubPat + if x != nil { + if x, ok := x.Secret.(*SecretData_DockerHubPat_); ok { + return x.DockerHubPat + } } return nil } func (x *SecretData) GetDigitalocean() *SecretData_DigitalOceanAPIToken { - if x, ok := x.GetSecret().(*SecretData_Digitalocean); ok { - return x.Digitalocean + if x != nil { + if x, ok := x.Secret.(*SecretData_Digitalocean); ok { + return x.Digitalocean + } } return nil } func (x *SecretData) GetOpenaiApiKey() *SecretData_OpenAIAPIKey { - if x, ok := x.GetSecret().(*SecretData_OpenaiApiKey); ok { - return x.OpenaiApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_OpenaiApiKey); ok { + return x.OpenaiApiKey + } } return nil } func (x *SecretData) GetPostmanApiKey() *SecretData_PostmanAPIKey { - if x, ok := x.GetSecret().(*SecretData_PostmanApiKey); ok { - return x.PostmanApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_PostmanApiKey); ok { + return x.PostmanApiKey + } } return nil } func (x *SecretData) GetPostmanCollectionAccessToken() *SecretData_PostmanCollectionAccessToken { - if x, ok := x.GetSecret().(*SecretData_PostmanCollectionAccessToken_); ok { - return x.PostmanCollectionAccessToken + if x != nil { + if x, ok := x.Secret.(*SecretData_PostmanCollectionAccessToken_); ok { + return x.PostmanCollectionAccessToken + } } return nil } func (x *SecretData) GetAzureAccessToken() *SecretData_AzureAccessToken { - if x, ok := x.GetSecret().(*SecretData_AzureAccessToken_); ok { - return x.AzureAccessToken + if x != nil { + if x, ok := x.Secret.(*SecretData_AzureAccessToken_); ok { + return x.AzureAccessToken + } } return nil } func (x *SecretData) GetAzureIdentityToken() *SecretData_AzureIdentityToken { - if x, ok := x.GetSecret().(*SecretData_AzureIdentityToken_); ok { - return x.AzureIdentityToken + if x != nil { + if x, ok := x.Secret.(*SecretData_AzureIdentityToken_); ok { + return x.AzureIdentityToken + } } return nil } func (x *SecretData) GetTinkKeyset() *SecretData_TinkKeyset { - if x, ok := x.GetSecret().(*SecretData_TinkKeyset_); ok { - return x.TinkKeyset + if x != nil { + if x, ok := x.Secret.(*SecretData_TinkKeyset_); ok { + return x.TinkKeyset + } } return nil } func (x *SecretData) GetGitlabPat() *SecretData_GitlabPat { - if x, ok := x.GetSecret().(*SecretData_GitlabPat_); ok { - return x.GitlabPat + if x != nil { + if x, ok := x.Secret.(*SecretData_GitlabPat_); ok { + return x.GitlabPat + } } return nil } func (x *SecretData) GetHashicorpVaultToken() *SecretData_HashiCorpVaultToken { - if x, ok := x.GetSecret().(*SecretData_HashicorpVaultToken); ok { - return x.HashicorpVaultToken + if x != nil { + if x, ok := x.Secret.(*SecretData_HashicorpVaultToken); ok { + return x.HashicorpVaultToken + } } return nil } func (x *SecretData) GetHashicorpVaultAppRoleCredentials() *SecretData_HashiCorpVaultAppRoleCredentials { - if x, ok := x.GetSecret().(*SecretData_HashicorpVaultAppRoleCredentials); ok { - return x.HashicorpVaultAppRoleCredentials + if x != nil { + if x, ok := x.Secret.(*SecretData_HashicorpVaultAppRoleCredentials); ok { + return x.HashicorpVaultAppRoleCredentials + } } return nil } func (x *SecretData) GetGcpApiKey() *SecretData_GCPAPIKey { - if x, ok := x.GetSecret().(*SecretData_GcpApiKey); ok { - return x.GcpApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_GcpApiKey); ok { + return x.GcpApiKey + } } return nil } func (x *SecretData) GetHugginface() *SecretData_HuggingfaceAPIKey { - if x, ok := x.GetSecret().(*SecretData_Hugginface); ok { - return x.Hugginface + if x != nil { + if x, ok := x.Secret.(*SecretData_Hugginface); ok { + return x.Hugginface + } } return nil } func (x *SecretData) GetGithubAppRefreshToken() *SecretData_GithubAppRefreshToken { - if x, ok := x.GetSecret().(*SecretData_GithubAppRefreshToken_); ok { - return x.GithubAppRefreshToken + if x != nil { + if x, ok := x.Secret.(*SecretData_GithubAppRefreshToken_); ok { + return x.GithubAppRefreshToken + } } return nil } @@ -5329,17 +5500,16 @@ func (*SecretData_Hugginface) isSecretData_Secret() {} func (*SecretData_GithubAppRefreshToken_) isSecretData_Secret() {} type SecretStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status SecretStatus_SecretStatusEnum `protobuf:"varint,1,opt,name=status,proto3,enum=scalibr.SecretStatus_SecretStatusEnum" json:"status,omitempty"` + LastUpdated *timestamp.Timestamp `protobuf:"bytes,2,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` unknownFields protoimpl.UnknownFields - - Status SecretStatus_SecretStatusEnum `protobuf:"varint,1,opt,name=status,proto3,enum=scalibr.SecretStatus_SecretStatusEnum" json:"status,omitempty"` - LastUpdated *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretStatus) Reset() { *x = SecretStatus{} - mi := &file_proto_scan_result_proto_msgTypes[54] + mi := &file_proto_scan_result_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5351,7 +5521,7 @@ func (x *SecretStatus) String() string { func (*SecretStatus) ProtoMessage() {} func (x *SecretStatus) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[54] + mi := &file_proto_scan_result_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5364,7 +5534,7 @@ func (x *SecretStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretStatus.ProtoReflect.Descriptor instead. func (*SecretStatus) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54} + return file_proto_scan_result_proto_rawDescGZIP(), []int{55} } func (x *SecretStatus) GetStatus() SecretStatus_SecretStatusEnum { @@ -5374,7 +5544,7 @@ func (x *SecretStatus) GetStatus() SecretStatus_SecretStatusEnum { return SecretStatus_UNSPECIFIED } -func (x *SecretStatus) GetLastUpdated() *timestamppb.Timestamp { +func (x *SecretStatus) GetLastUpdated() *timestamp.Timestamp { if x != nil { return x.LastUpdated } @@ -5382,22 +5552,21 @@ func (x *SecretStatus) GetLastUpdated() *timestamppb.Timestamp { } type Location struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Location: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Location: // // *Location_Filepath // *Location_FilepathWithLayerDetails // *Location_EnvironmentVariable // *Location_ContainerCommand - Location isLocation_Location `protobuf_oneof:"location"` + Location isLocation_Location `protobuf_oneof:"location"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Location) Reset() { *x = Location{} - mi := &file_proto_scan_result_proto_msgTypes[55] + mi := &file_proto_scan_result_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5409,7 +5578,7 @@ func (x *Location) String() string { func (*Location) ProtoMessage() {} func (x *Location) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[55] + mi := &file_proto_scan_result_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5422,40 +5591,48 @@ func (x *Location) ProtoReflect() protoreflect.Message { // Deprecated: Use Location.ProtoReflect.Descriptor instead. func (*Location) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{55} + return file_proto_scan_result_proto_rawDescGZIP(), []int{56} } -func (m *Location) GetLocation() isLocation_Location { - if m != nil { - return m.Location +func (x *Location) GetLocation() isLocation_Location { + if x != nil { + return x.Location } return nil } func (x *Location) GetFilepath() *Filepath { - if x, ok := x.GetLocation().(*Location_Filepath); ok { - return x.Filepath + if x != nil { + if x, ok := x.Location.(*Location_Filepath); ok { + return x.Filepath + } } return nil } func (x *Location) GetFilepathWithLayerDetails() *FilepathWithLayerDetails { - if x, ok := x.GetLocation().(*Location_FilepathWithLayerDetails); ok { - return x.FilepathWithLayerDetails + if x != nil { + if x, ok := x.Location.(*Location_FilepathWithLayerDetails); ok { + return x.FilepathWithLayerDetails + } } return nil } func (x *Location) GetEnvironmentVariable() *EnvironmentVariable { - if x, ok := x.GetLocation().(*Location_EnvironmentVariable); ok { - return x.EnvironmentVariable + if x != nil { + if x, ok := x.Location.(*Location_EnvironmentVariable); ok { + return x.EnvironmentVariable + } } return nil } func (x *Location) GetContainerCommand() *ContainerCommand { - if x, ok := x.GetLocation().(*Location_ContainerCommand); ok { - return x.ContainerCommand + if x != nil { + if x, ok := x.Location.(*Location_ContainerCommand); ok { + return x.ContainerCommand + } } return nil } @@ -5489,16 +5666,15 @@ func (*Location_EnvironmentVariable) isLocation_Location() {} func (*Location_ContainerCommand) isLocation_Location() {} type Filepath struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` unknownFields protoimpl.UnknownFields - - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Filepath) Reset() { *x = Filepath{} - mi := &file_proto_scan_result_proto_msgTypes[56] + mi := &file_proto_scan_result_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5510,7 +5686,7 @@ func (x *Filepath) String() string { func (*Filepath) ProtoMessage() {} func (x *Filepath) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[56] + mi := &file_proto_scan_result_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5523,7 +5699,7 @@ func (x *Filepath) ProtoReflect() protoreflect.Message { // Deprecated: Use Filepath.ProtoReflect.Descriptor instead. func (*Filepath) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{56} + return file_proto_scan_result_proto_rawDescGZIP(), []int{57} } func (x *Filepath) GetPath() string { @@ -5534,17 +5710,16 @@ func (x *Filepath) GetPath() string { } type FilepathWithLayerDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + LayerDetails *LayerDetails `protobuf:"bytes,2,opt,name=layer_details,json=layerDetails,proto3" json:"layer_details,omitempty"` unknownFields protoimpl.UnknownFields - - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - LayerDetails *LayerDetails `protobuf:"bytes,2,opt,name=layer_details,json=layerDetails,proto3" json:"layer_details,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FilepathWithLayerDetails) Reset() { *x = FilepathWithLayerDetails{} - mi := &file_proto_scan_result_proto_msgTypes[57] + mi := &file_proto_scan_result_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5556,7 +5731,7 @@ func (x *FilepathWithLayerDetails) String() string { func (*FilepathWithLayerDetails) ProtoMessage() {} func (x *FilepathWithLayerDetails) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[57] + mi := &file_proto_scan_result_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5569,7 +5744,7 @@ func (x *FilepathWithLayerDetails) ProtoReflect() protoreflect.Message { // Deprecated: Use FilepathWithLayerDetails.ProtoReflect.Descriptor instead. func (*FilepathWithLayerDetails) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{57} + return file_proto_scan_result_proto_rawDescGZIP(), []int{58} } func (x *FilepathWithLayerDetails) GetPath() string { @@ -5587,16 +5762,15 @@ func (x *FilepathWithLayerDetails) GetLayerDetails() *LayerDetails { } type EnvironmentVariable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EnvironmentVariable) Reset() { *x = EnvironmentVariable{} - mi := &file_proto_scan_result_proto_msgTypes[58] + mi := &file_proto_scan_result_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5608,7 +5782,7 @@ func (x *EnvironmentVariable) String() string { func (*EnvironmentVariable) ProtoMessage() {} func (x *EnvironmentVariable) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[58] + mi := &file_proto_scan_result_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5621,7 +5795,7 @@ func (x *EnvironmentVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentVariable.ProtoReflect.Descriptor instead. func (*EnvironmentVariable) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{58} + return file_proto_scan_result_proto_rawDescGZIP(), []int{59} } func (x *EnvironmentVariable) GetName() string { @@ -5632,16 +5806,15 @@ func (x *EnvironmentVariable) GetName() string { } type ContainerCommand struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"` unknownFields protoimpl.UnknownFields - - Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ContainerCommand) Reset() { *x = ContainerCommand{} - mi := &file_proto_scan_result_proto_msgTypes[59] + mi := &file_proto_scan_result_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5653,7 +5826,7 @@ func (x *ContainerCommand) String() string { func (*ContainerCommand) ProtoMessage() {} func (x *ContainerCommand) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[59] + mi := &file_proto_scan_result_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5666,7 +5839,7 @@ func (x *ContainerCommand) ProtoReflect() protoreflect.Message { // Deprecated: Use ContainerCommand.ProtoReflect.Descriptor instead. func (*ContainerCommand) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{59} + return file_proto_scan_result_proto_rawDescGZIP(), []int{60} } func (x *ContainerCommand) GetCommand() string { @@ -5677,10 +5850,7 @@ func (x *ContainerCommand) GetCommand() string { } type SecretData_GCPSAK struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Always filled. PrivateKeyId string `protobuf:"bytes,1,opt,name=private_key_id,json=privateKeyId,proto3" json:"private_key_id,omitempty"` ClientEmail string `protobuf:"bytes,2,opt,name=client_email,json=clientEmail,proto3" json:"client_email,omitempty"` @@ -5696,12 +5866,14 @@ type SecretData_GCPSAK struct { UniverseDomain string `protobuf:"bytes,11,opt,name=universe_domain,json=universeDomain,proto3" json:"universe_domain,omitempty"` // Should not be filled out unless very explicitly requested accepting the // risk that this might accidentally leak the key. - PrivateKey string `protobuf:"bytes,12,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` + PrivateKey string `protobuf:"bytes,12,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData_GCPSAK) Reset() { *x = SecretData_GCPSAK{} - mi := &file_proto_scan_result_proto_msgTypes[61] + mi := &file_proto_scan_result_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5713,7 +5885,7 @@ func (x *SecretData_GCPSAK) String() string { func (*SecretData_GCPSAK) ProtoMessage() {} func (x *SecretData_GCPSAK) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[61] + mi := &file_proto_scan_result_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5726,7 +5898,7 @@ func (x *SecretData_GCPSAK) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_GCPSAK.ProtoReflect.Descriptor instead. func (*SecretData_GCPSAK) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 0} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 0} } func (x *SecretData_GCPSAK) GetPrivateKeyId() string { @@ -5814,17 +5986,16 @@ func (x *SecretData_GCPSAK) GetPrivateKey() string { } type SecretData_AnthropicWorkspaceAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The Anthropic Workspace API key (contains "admin01"). - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData_AnthropicWorkspaceAPIKey) Reset() { *x = SecretData_AnthropicWorkspaceAPIKey{} - mi := &file_proto_scan_result_proto_msgTypes[62] + mi := &file_proto_scan_result_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5836,7 +6007,7 @@ func (x *SecretData_AnthropicWorkspaceAPIKey) String() string { func (*SecretData_AnthropicWorkspaceAPIKey) ProtoMessage() {} func (x *SecretData_AnthropicWorkspaceAPIKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[62] + mi := &file_proto_scan_result_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5849,7 +6020,7 @@ func (x *SecretData_AnthropicWorkspaceAPIKey) ProtoReflect() protoreflect.Messag // Deprecated: Use SecretData_AnthropicWorkspaceAPIKey.ProtoReflect.Descriptor instead. func (*SecretData_AnthropicWorkspaceAPIKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 1} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 1} } func (x *SecretData_AnthropicWorkspaceAPIKey) GetKey() string { @@ -5860,17 +6031,16 @@ func (x *SecretData_AnthropicWorkspaceAPIKey) GetKey() string { } type SecretData_AnthropicModelAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The Anthropic Model API key (regular API key for model access). - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData_AnthropicModelAPIKey) Reset() { *x = SecretData_AnthropicModelAPIKey{} - mi := &file_proto_scan_result_proto_msgTypes[63] + mi := &file_proto_scan_result_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5882,7 +6052,7 @@ func (x *SecretData_AnthropicModelAPIKey) String() string { func (*SecretData_AnthropicModelAPIKey) ProtoMessage() {} func (x *SecretData_AnthropicModelAPIKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[63] + mi := &file_proto_scan_result_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5895,7 +6065,7 @@ func (x *SecretData_AnthropicModelAPIKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_AnthropicModelAPIKey.ProtoReflect.Descriptor instead. func (*SecretData_AnthropicModelAPIKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 2} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 2} } func (x *SecretData_AnthropicModelAPIKey) GetKey() string { @@ -5906,16 +6076,15 @@ func (x *SecretData_AnthropicModelAPIKey) GetKey() string { } type SecretData_PerplexityAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_PerplexityAPIKey) Reset() { *x = SecretData_PerplexityAPIKey{} - mi := &file_proto_scan_result_proto_msgTypes[64] + mi := &file_proto_scan_result_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5927,7 +6096,7 @@ func (x *SecretData_PerplexityAPIKey) String() string { func (*SecretData_PerplexityAPIKey) ProtoMessage() {} func (x *SecretData_PerplexityAPIKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[64] + mi := &file_proto_scan_result_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5940,7 +6109,7 @@ func (x *SecretData_PerplexityAPIKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_PerplexityAPIKey.ProtoReflect.Descriptor instead. func (*SecretData_PerplexityAPIKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 3} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 3} } func (x *SecretData_PerplexityAPIKey) GetKey() string { @@ -5951,16 +6120,15 @@ func (x *SecretData_PerplexityAPIKey) GetKey() string { } type SecretData_GrokXAIAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GrokXAIAPIKey) Reset() { *x = SecretData_GrokXAIAPIKey{} - mi := &file_proto_scan_result_proto_msgTypes[65] + mi := &file_proto_scan_result_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5972,7 +6140,7 @@ func (x *SecretData_GrokXAIAPIKey) String() string { func (*SecretData_GrokXAIAPIKey) ProtoMessage() {} func (x *SecretData_GrokXAIAPIKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[65] + mi := &file_proto_scan_result_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5985,7 +6153,7 @@ func (x *SecretData_GrokXAIAPIKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_GrokXAIAPIKey.ProtoReflect.Descriptor instead. func (*SecretData_GrokXAIAPIKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 4} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 4} } func (x *SecretData_GrokXAIAPIKey) GetKey() string { @@ -5996,16 +6164,15 @@ func (x *SecretData_GrokXAIAPIKey) GetKey() string { } type SecretData_GrokXAIManagementAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GrokXAIManagementAPIKey) Reset() { *x = SecretData_GrokXAIManagementAPIKey{} - mi := &file_proto_scan_result_proto_msgTypes[66] + mi := &file_proto_scan_result_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6017,7 +6184,7 @@ func (x *SecretData_GrokXAIManagementAPIKey) String() string { func (*SecretData_GrokXAIManagementAPIKey) ProtoMessage() {} func (x *SecretData_GrokXAIManagementAPIKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[66] + mi := &file_proto_scan_result_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6030,7 +6197,7 @@ func (x *SecretData_GrokXAIManagementAPIKey) ProtoReflect() protoreflect.Message // Deprecated: Use SecretData_GrokXAIManagementAPIKey.ProtoReflect.Descriptor instead. func (*SecretData_GrokXAIManagementAPIKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 5} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 5} } func (x *SecretData_GrokXAIManagementAPIKey) GetKey() string { @@ -6041,17 +6208,16 @@ func (x *SecretData_GrokXAIManagementAPIKey) GetKey() string { } type SecretData_PrivateKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Block string `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` // PEM/OpenSSH private key block + Der []byte `protobuf:"bytes,2,opt,name=der,proto3" json:"der,omitempty"` // DER-encoded key material unknownFields protoimpl.UnknownFields - - Block string `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` // PEM/OpenSSH private key block - Der []byte `protobuf:"bytes,2,opt,name=der,proto3" json:"der,omitempty"` // DER-encoded key material + sizeCache protoimpl.SizeCache } func (x *SecretData_PrivateKey) Reset() { *x = SecretData_PrivateKey{} - mi := &file_proto_scan_result_proto_msgTypes[67] + mi := &file_proto_scan_result_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6063,7 +6229,7 @@ func (x *SecretData_PrivateKey) String() string { func (*SecretData_PrivateKey) ProtoMessage() {} func (x *SecretData_PrivateKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[67] + mi := &file_proto_scan_result_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6076,7 +6242,7 @@ func (x *SecretData_PrivateKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_PrivateKey.ProtoReflect.Descriptor instead. func (*SecretData_PrivateKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 6} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 6} } func (x *SecretData_PrivateKey) GetBlock() string { @@ -6094,16 +6260,15 @@ func (x *SecretData_PrivateKey) GetDer() []byte { } type SecretData_AzureAccessToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_AzureAccessToken) Reset() { *x = SecretData_AzureAccessToken{} - mi := &file_proto_scan_result_proto_msgTypes[68] + mi := &file_proto_scan_result_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6115,7 +6280,7 @@ func (x *SecretData_AzureAccessToken) String() string { func (*SecretData_AzureAccessToken) ProtoMessage() {} func (x *SecretData_AzureAccessToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[68] + mi := &file_proto_scan_result_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6128,7 +6293,7 @@ func (x *SecretData_AzureAccessToken) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_AzureAccessToken.ProtoReflect.Descriptor instead. func (*SecretData_AzureAccessToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 7} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 7} } func (x *SecretData_AzureAccessToken) GetToken() string { @@ -6139,16 +6304,15 @@ func (x *SecretData_AzureAccessToken) GetToken() string { } type SecretData_AzureIdentityToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_AzureIdentityToken) Reset() { *x = SecretData_AzureIdentityToken{} - mi := &file_proto_scan_result_proto_msgTypes[69] + mi := &file_proto_scan_result_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6160,7 +6324,7 @@ func (x *SecretData_AzureIdentityToken) String() string { func (*SecretData_AzureIdentityToken) ProtoMessage() {} func (x *SecretData_AzureIdentityToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[69] + mi := &file_proto_scan_result_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6173,7 +6337,7 @@ func (x *SecretData_AzureIdentityToken) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_AzureIdentityToken.ProtoReflect.Descriptor instead. func (*SecretData_AzureIdentityToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 8} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 8} } func (x *SecretData_AzureIdentityToken) GetToken() string { @@ -6184,16 +6348,15 @@ func (x *SecretData_AzureIdentityToken) GetToken() string { } type SecretData_OpenAIAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_OpenAIAPIKey) Reset() { *x = SecretData_OpenAIAPIKey{} - mi := &file_proto_scan_result_proto_msgTypes[70] + mi := &file_proto_scan_result_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6205,7 +6368,7 @@ func (x *SecretData_OpenAIAPIKey) String() string { func (*SecretData_OpenAIAPIKey) ProtoMessage() {} func (x *SecretData_OpenAIAPIKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[70] + mi := &file_proto_scan_result_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6218,7 +6381,7 @@ func (x *SecretData_OpenAIAPIKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_OpenAIAPIKey.ProtoReflect.Descriptor instead. func (*SecretData_OpenAIAPIKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 9} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 9} } func (x *SecretData_OpenAIAPIKey) GetKey() string { @@ -6229,17 +6392,16 @@ func (x *SecretData_OpenAIAPIKey) GetKey() string { } type SecretData_DockerHubPat struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Pat string `protobuf:"bytes,1,opt,name=pat,proto3" json:"pat,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` unknownFields protoimpl.UnknownFields - - Pat string `protobuf:"bytes,1,opt,name=pat,proto3" json:"pat,omitempty"` - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_DockerHubPat) Reset() { *x = SecretData_DockerHubPat{} - mi := &file_proto_scan_result_proto_msgTypes[71] + mi := &file_proto_scan_result_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6251,7 +6413,7 @@ func (x *SecretData_DockerHubPat) String() string { func (*SecretData_DockerHubPat) ProtoMessage() {} func (x *SecretData_DockerHubPat) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[71] + mi := &file_proto_scan_result_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6264,7 +6426,7 @@ func (x *SecretData_DockerHubPat) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_DockerHubPat.ProtoReflect.Descriptor instead. func (*SecretData_DockerHubPat) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 10} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 10} } func (x *SecretData_DockerHubPat) GetPat() string { @@ -6282,16 +6444,15 @@ func (x *SecretData_DockerHubPat) GetUsername() string { } type SecretData_GitlabPat struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Pat string `protobuf:"bytes,1,opt,name=pat,proto3" json:"pat,omitempty"` unknownFields protoimpl.UnknownFields - - Pat string `protobuf:"bytes,1,opt,name=pat,proto3" json:"pat,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GitlabPat) Reset() { *x = SecretData_GitlabPat{} - mi := &file_proto_scan_result_proto_msgTypes[72] + mi := &file_proto_scan_result_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6303,7 +6464,7 @@ func (x *SecretData_GitlabPat) String() string { func (*SecretData_GitlabPat) ProtoMessage() {} func (x *SecretData_GitlabPat) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[72] + mi := &file_proto_scan_result_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6316,7 +6477,7 @@ func (x *SecretData_GitlabPat) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_GitlabPat.ProtoReflect.Descriptor instead. func (*SecretData_GitlabPat) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 11} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 11} } func (x *SecretData_GitlabPat) GetPat() string { @@ -6327,16 +6488,15 @@ func (x *SecretData_GitlabPat) GetPat() string { } type SecretData_PostmanAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_PostmanAPIKey) Reset() { *x = SecretData_PostmanAPIKey{} - mi := &file_proto_scan_result_proto_msgTypes[73] + mi := &file_proto_scan_result_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6348,7 +6508,7 @@ func (x *SecretData_PostmanAPIKey) String() string { func (*SecretData_PostmanAPIKey) ProtoMessage() {} func (x *SecretData_PostmanAPIKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[73] + mi := &file_proto_scan_result_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6361,7 +6521,7 @@ func (x *SecretData_PostmanAPIKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_PostmanAPIKey.ProtoReflect.Descriptor instead. func (*SecretData_PostmanAPIKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 12} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 12} } func (x *SecretData_PostmanAPIKey) GetKey() string { @@ -6372,16 +6532,15 @@ func (x *SecretData_PostmanAPIKey) GetKey() string { } type SecretData_PostmanCollectionAccessToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_PostmanCollectionAccessToken) Reset() { *x = SecretData_PostmanCollectionAccessToken{} - mi := &file_proto_scan_result_proto_msgTypes[74] + mi := &file_proto_scan_result_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6393,7 +6552,7 @@ func (x *SecretData_PostmanCollectionAccessToken) String() string { func (*SecretData_PostmanCollectionAccessToken) ProtoMessage() {} func (x *SecretData_PostmanCollectionAccessToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[74] + mi := &file_proto_scan_result_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6406,7 +6565,7 @@ func (x *SecretData_PostmanCollectionAccessToken) ProtoReflect() protoreflect.Me // Deprecated: Use SecretData_PostmanCollectionAccessToken.ProtoReflect.Descriptor instead. func (*SecretData_PostmanCollectionAccessToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 13} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 13} } func (x *SecretData_PostmanCollectionAccessToken) GetKey() string { @@ -6417,16 +6576,15 @@ func (x *SecretData_PostmanCollectionAccessToken) GetKey() string { } type SecretData_DigitalOceanAPIToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_DigitalOceanAPIToken) Reset() { *x = SecretData_DigitalOceanAPIToken{} - mi := &file_proto_scan_result_proto_msgTypes[75] + mi := &file_proto_scan_result_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6438,7 +6596,7 @@ func (x *SecretData_DigitalOceanAPIToken) String() string { func (*SecretData_DigitalOceanAPIToken) ProtoMessage() {} func (x *SecretData_DigitalOceanAPIToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[75] + mi := &file_proto_scan_result_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6451,7 +6609,7 @@ func (x *SecretData_DigitalOceanAPIToken) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_DigitalOceanAPIToken.ProtoReflect.Descriptor instead. func (*SecretData_DigitalOceanAPIToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 14} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 14} } func (x *SecretData_DigitalOceanAPIToken) GetKey() string { @@ -6462,16 +6620,15 @@ func (x *SecretData_DigitalOceanAPIToken) GetKey() string { } type SecretData_GithubAppRefreshToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GithubAppRefreshToken) Reset() { *x = SecretData_GithubAppRefreshToken{} - mi := &file_proto_scan_result_proto_msgTypes[76] + mi := &file_proto_scan_result_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6483,7 +6640,7 @@ func (x *SecretData_GithubAppRefreshToken) String() string { func (*SecretData_GithubAppRefreshToken) ProtoMessage() {} func (x *SecretData_GithubAppRefreshToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[76] + mi := &file_proto_scan_result_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6496,7 +6653,7 @@ func (x *SecretData_GithubAppRefreshToken) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_GithubAppRefreshToken.ProtoReflect.Descriptor instead. func (*SecretData_GithubAppRefreshToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 15} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 15} } func (x *SecretData_GithubAppRefreshToken) GetToken() string { @@ -6507,16 +6664,15 @@ func (x *SecretData_GithubAppRefreshToken) GetToken() string { } type SecretData_TinkKeyset struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` // JSON encoded Tink keyset unknownFields protoimpl.UnknownFields - - Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` // JSON encoded Tink keyset + sizeCache protoimpl.SizeCache } func (x *SecretData_TinkKeyset) Reset() { *x = SecretData_TinkKeyset{} - mi := &file_proto_scan_result_proto_msgTypes[77] + mi := &file_proto_scan_result_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6528,7 +6684,7 @@ func (x *SecretData_TinkKeyset) String() string { func (*SecretData_TinkKeyset) ProtoMessage() {} func (x *SecretData_TinkKeyset) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[77] + mi := &file_proto_scan_result_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6541,7 +6697,7 @@ func (x *SecretData_TinkKeyset) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_TinkKeyset.ProtoReflect.Descriptor instead. func (*SecretData_TinkKeyset) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 16} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 16} } func (x *SecretData_TinkKeyset) GetContent() string { @@ -6552,16 +6708,15 @@ func (x *SecretData_TinkKeyset) GetContent() string { } type SecretData_HashiCorpVaultToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_HashiCorpVaultToken) Reset() { *x = SecretData_HashiCorpVaultToken{} - mi := &file_proto_scan_result_proto_msgTypes[78] + mi := &file_proto_scan_result_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6573,7 +6728,7 @@ func (x *SecretData_HashiCorpVaultToken) String() string { func (*SecretData_HashiCorpVaultToken) ProtoMessage() {} func (x *SecretData_HashiCorpVaultToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[78] + mi := &file_proto_scan_result_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6586,7 +6741,7 @@ func (x *SecretData_HashiCorpVaultToken) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_HashiCorpVaultToken.ProtoReflect.Descriptor instead. func (*SecretData_HashiCorpVaultToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 17} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 17} } func (x *SecretData_HashiCorpVaultToken) GetToken() string { @@ -6597,18 +6752,17 @@ func (x *SecretData_HashiCorpVaultToken) GetToken() string { } type SecretData_HashiCorpVaultAppRoleCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + RoleId string `protobuf:"bytes,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + SecretId string `protobuf:"bytes,2,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` // General ID field for uncertain UUID types when context is unclear unknownFields protoimpl.UnknownFields - - RoleId string `protobuf:"bytes,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` - SecretId string `protobuf:"bytes,2,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` - Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` // General ID field for uncertain UUID types when context is unclear + sizeCache protoimpl.SizeCache } func (x *SecretData_HashiCorpVaultAppRoleCredentials) Reset() { *x = SecretData_HashiCorpVaultAppRoleCredentials{} - mi := &file_proto_scan_result_proto_msgTypes[79] + mi := &file_proto_scan_result_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6620,7 +6774,7 @@ func (x *SecretData_HashiCorpVaultAppRoleCredentials) String() string { func (*SecretData_HashiCorpVaultAppRoleCredentials) ProtoMessage() {} func (x *SecretData_HashiCorpVaultAppRoleCredentials) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[79] + mi := &file_proto_scan_result_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6633,7 +6787,7 @@ func (x *SecretData_HashiCorpVaultAppRoleCredentials) ProtoReflect() protoreflec // Deprecated: Use SecretData_HashiCorpVaultAppRoleCredentials.ProtoReflect.Descriptor instead. func (*SecretData_HashiCorpVaultAppRoleCredentials) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 18} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 18} } func (x *SecretData_HashiCorpVaultAppRoleCredentials) GetRoleId() string { @@ -6658,16 +6812,15 @@ func (x *SecretData_HashiCorpVaultAppRoleCredentials) GetId() string { } type SecretData_GCPAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GCPAPIKey) Reset() { *x = SecretData_GCPAPIKey{} - mi := &file_proto_scan_result_proto_msgTypes[80] + mi := &file_proto_scan_result_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6679,7 +6832,7 @@ func (x *SecretData_GCPAPIKey) String() string { func (*SecretData_GCPAPIKey) ProtoMessage() {} func (x *SecretData_GCPAPIKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[80] + mi := &file_proto_scan_result_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6692,7 +6845,7 @@ func (x *SecretData_GCPAPIKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_GCPAPIKey.ProtoReflect.Descriptor instead. func (*SecretData_GCPAPIKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 19} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 19} } func (x *SecretData_GCPAPIKey) GetKey() string { @@ -6703,18 +6856,17 @@ func (x *SecretData_GCPAPIKey) GetKey() string { } type SecretData_HuggingfaceAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` - FineGrainedScope []string `protobuf:"bytes,3,rep,name=fine_grained_scope,json=fineGrainedScope,proto3" json:"fine_grained_scope,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + FineGrainedScope []string `protobuf:"bytes,3,rep,name=fine_grained_scope,json=fineGrainedScope,proto3" json:"fine_grained_scope,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData_HuggingfaceAPIKey) Reset() { *x = SecretData_HuggingfaceAPIKey{} - mi := &file_proto_scan_result_proto_msgTypes[81] + mi := &file_proto_scan_result_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6726,7 +6878,7 @@ func (x *SecretData_HuggingfaceAPIKey) String() string { func (*SecretData_HuggingfaceAPIKey) ProtoMessage() {} func (x *SecretData_HuggingfaceAPIKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[81] + mi := &file_proto_scan_result_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6739,7 +6891,7 @@ func (x *SecretData_HuggingfaceAPIKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_HuggingfaceAPIKey.ProtoReflect.Descriptor instead. func (*SecretData_HuggingfaceAPIKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{53, 20} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 20} } func (x *SecretData_HuggingfaceAPIKey) GetKey() string { @@ -6765,1147 +6917,576 @@ func (x *SecretData_HuggingfaceAPIKey) GetFineGrainedScope() []string { var File_proto_scan_result_proto protoreflect.FileDescriptor -var file_proto_scan_result_proto_rawDesc = []byte{ - 0x0a, 0x17, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x73, 0x63, 0x61, 0x6c, 0x69, - 0x62, 0x72, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0xce, 0x03, 0x0a, 0x0a, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2b, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3a, 0x0a, 0x0d, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4b, 0x0a, 0x16, 0x69, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x15, 0x69, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x4c, 0x0a, 0x13, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, - 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, - 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x79, 0x22, 0xa8, 0x01, 0x0a, 0x09, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, - 0x12, 0x42, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x66, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, - 0xc6, 0x01, 0x0a, 0x0a, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3a, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, - 0x75, 0x6d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x61, - 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x22, 0x55, 0x0a, 0x0e, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, - 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x4c, 0x59, - 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, - 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x22, 0x69, 0x0a, 0x0c, 0x50, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0xdf, 0x1a, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, - 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x1a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, - 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x75, 0x72, 0x6c, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c, - 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x1b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1c, - 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x14, - 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x13, - 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x31, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x49, 0x0a, - 0x0f, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x59, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x4a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x12, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0c, 0x61, 0x70, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x63, 0x61, 0x6c, - 0x69, 0x62, 0x72, 0x2e, 0x41, 0x50, 0x4b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x70, 0x6b, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x0d, 0x64, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x44, 0x50, 0x4b, 0x47, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x70, - 0x6b, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0c, 0x72, 0x70, - 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x52, 0x50, 0x4d, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x0b, 0x72, 0x70, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0c, - 0x63, 0x6f, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x43, 0x4f, 0x53, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x48, - 0x0a, 0x11, 0x64, 0x65, 0x70, 0x73, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x61, 0x6c, - 0x69, 0x62, 0x72, 0x2e, 0x44, 0x45, 0x50, 0x53, 0x4a, 0x53, 0x4f, 0x4e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x70, 0x73, 0x6a, 0x73, 0x6f, 0x6e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x70, 0x64, 0x78, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x50, 0x44, 0x58, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x0c, 0x73, 0x70, 0x64, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x52, 0x0a, - 0x15, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4a, 0x61, 0x76, 0x61, 0x41, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x13, 0x6a, 0x61, - 0x76, 0x61, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x55, 0x0a, 0x16, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x66, 0x69, - 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x1f, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4a, 0x61, 0x76, 0x61, - 0x4c, 0x6f, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x14, 0x6a, 0x61, 0x76, 0x61, 0x4c, 0x6f, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x49, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6d, - 0x61, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x24, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x41, 0x43, 0x4d, - 0x41, 0x4e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6d, 0x61, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x69, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x63, 0x61, 0x6c, - 0x69, 0x62, 0x72, 0x2e, 0x4e, 0x69, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x69, 0x78, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x55, 0x0a, 0x16, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, - 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x14, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4d, 0x6f, - 0x64, 0x75, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x10, - 0x76, 0x6d, 0x6c, 0x69, 0x6e, 0x75, 0x7a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x56, 0x6d, 0x6c, 0x69, 0x6e, 0x75, 0x7a, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x0f, 0x76, 0x6d, 0x6c, 0x69, 0x6e, 0x75, 0x7a, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x4c, 0x0a, 0x10, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x0f, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x40, 0x0a, 0x0c, 0x6f, 0x73, 0x76, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x4f, 0x53, 0x56, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x73, 0x76, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x48, 0x0a, 0x11, 0x6e, 0x65, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4e, 0x65, 0x74, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x6e, 0x65, 0x74, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x67, 0x0a, - 0x1c, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x15, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x79, - 0x74, 0x68, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1a, 0x70, 0x79, 0x74, 0x68, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x52, 0x0a, 0x15, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, - 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x13, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x75, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x6a, 0x0a, 0x1d, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x4e, 0x41, 0x50, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x73, - 0x6e, 0x61, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4c, 0x0a, 0x10, 0x66, - 0x6c, 0x61, 0x74, 0x70, 0x61, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x46, 0x6c, 0x61, 0x74, 0x70, 0x61, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0f, 0x66, 0x6c, 0x61, 0x74, 0x70, 0x61, - 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x11, 0x6d, 0x61, 0x63, - 0x5f, 0x61, 0x70, 0x70, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x22, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4d, - 0x61, 0x63, 0x41, 0x70, 0x70, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x0f, 0x6d, 0x61, 0x63, 0x41, 0x70, 0x70, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x80, 0x01, 0x0a, 0x25, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, - 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x52, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0c, 0x63, 0x64, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x43, 0x44, 0x58, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x64, 0x78, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5a, 0x0a, 0x1b, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x73, 0x5f, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x4f, 0x53, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x18, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x73, 0x4f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x4f, 0x0a, 0x11, 0x68, 0x6f, 0x6d, 0x65, 0x62, 0x72, 0x65, 0x77, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x48, 0x6f, 0x6d, 0x65, 0x62, 0x72, 0x65, 0x77, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x10, 0x68, 0x6f, 0x6d, 0x65, 0x62, 0x72, 0x65, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x61, 0x0a, 0x1a, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x5f, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x18, 0x63, 0x68, - 0x72, 0x6f, 0x6d, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x61, 0x0a, 0x1a, 0x76, 0x73, 0x63, 0x6f, 0x64, 0x65, - 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x56, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x18, 0x76, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x0f, 0x70, 0x6f, 0x64, - 0x6d, 0x61, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x32, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x6f, 0x64, - 0x6d, 0x61, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0e, 0x70, - 0x6f, 0x64, 0x6d, 0x61, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x61, 0x0a, - 0x1a, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x30, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x44, 0x6f, 0x63, 0x6b, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x18, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x4f, 0x0a, 0x11, 0x6d, 0x61, 0x63, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4d, 0x61, 0x63, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x10, 0x6d, 0x61, 0x63, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x49, 0x0a, 0x0f, 0x77, 0x69, 0x6e, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x57, 0x69, 0x6e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0e, 0x77, 0x69, - 0x6e, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x0d, - 0x61, 0x73, 0x64, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x37, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x41, 0x73, - 0x64, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x73, - 0x64, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5a, 0x0a, 0x16, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x15, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x44, 0x65, 0x70, 0x72, - 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5b, 0x0a, 0x16, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x69, - 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, - 0x18, 0x33, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x15, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x0d, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x52, 0x0c, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x0e, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, - 0x0a, 0x0c, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, - 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x4f, 0x53, 0x5f, 0x50, 0x41, - 0x43, 0x4b, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x53, 0x49, 0x44, - 0x45, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x44, 0x49, 0x52, 0x10, 0x03, 0x42, 0x0a, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, - 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x42, 0x0a, 0x14, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, - 0x6f, 0x64, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x12, 0x0a, - 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, - 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x0c, 0x4c, 0x61, - 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x17, 0x0a, 0x07, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x64, 0x69, 0x66, 0x66, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x22, - 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x45, 0x78, - 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x6a, 0x75, - 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x56, 0x65, 0x78, 0x4a, - 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6a, 0x75, - 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x10, 0x76, - 0x75, 0x6c, 0x6e, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x56, 0x75, 0x6c, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, - 0x00, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x61, 0x6c, - 0x6c, 0x5f, 0x76, 0x75, 0x6c, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x0f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x41, 0x6c, 0x6c, 0x56, 0x75, 0x6c, 0x6e, 0x73, - 0x42, 0x0d, 0x0a, 0x0b, 0x76, 0x75, 0x6c, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, - 0x33, 0x0a, 0x0f, 0x56, 0x75, 0x6c, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x22, 0x76, 0x0a, 0x1b, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, - 0x78, 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x6a, - 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x56, 0x65, 0x78, - 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6a, - 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc8, 0x01, 0x0a, - 0x04, 0x50, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x71, 0x75, 0x61, - 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x52, 0x0a, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, - 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x22, 0x33, 0x0a, 0x09, 0x51, 0x75, 0x61, 0x6c, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xfe, 0x01, 0x0a, - 0x0e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, - 0x31, 0x0a, 0x03, 0x61, 0x64, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x52, 0x03, 0x61, - 0x64, 0x76, 0x12, 0x3c, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x5b, 0x0a, 0x16, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x6c, - 0x6f, 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x52, 0x15, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xd2, 0x01, - 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x41, - 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, - 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, - 0x03, 0x73, 0x65, 0x76, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x75, - 0x6d, 0x52, 0x03, 0x73, 0x65, 0x76, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x06, - 0x10, 0x07, 0x22, 0x48, 0x0a, 0x0a, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x49, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x1c, - 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x45, 0x0a, 0x1b, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, - 0x03, 0x10, 0x04, 0x22, 0x52, 0x0a, 0x15, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x5f, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xad, 0x01, 0x0a, 0x1d, 0x4a, 0x61, 0x76, 0x61, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4a, 0x53, 0x4f, - 0x4e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x72, 0x6f, 0x6d, 0x5f, - 0x6e, 0x70, 0x6d, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x70, 0x6d, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xe4, 0x01, 0x0a, 0x12, 0x41, 0x50, 0x4b, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, - 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, - 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x4a, - 0x04, 0x08, 0x07, 0x10, 0x08, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0xee, - 0x02, 0x0a, 0x13, 0x44, 0x50, 0x4b, 0x47, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, - 0x2e, 0x0a, 0x13, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, - 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x73, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0xa9, 0x02, 0x0a, 0x12, 0x52, 0x50, 0x4d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x70, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x13, - 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, - 0x73, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x6f, 0x73, 0x5f, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x73, - 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x73, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x73, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x4a, 0x04, 0x08, 0x0a, - 0x10, 0x0b, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x12, - 0x43, 0x4f, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, - 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x6f, - 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x25, 0x0a, 0x0e, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x80, 0x02, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4d, 0x41, - 0x4e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x05, - 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, - 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x13, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x70, - 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x22, 0x93, 0x02, 0x0a, 0x12, 0x4e, 0x69, - 0x78, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, - 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6f, - 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0x72, 0x0a, 0x10, 0x44, 0x45, 0x50, 0x53, 0x4a, 0x53, 0x4f, 0x4e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x13, 0x53, 0x4e, 0x41, 0x50, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, - 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x2e, - 0x0a, 0x13, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x73, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, - 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x16, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, - 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x22, - 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x22, 0xb6, 0x02, 0x0a, 0x16, 0x46, 0x6c, 0x61, 0x74, 0x70, 0x61, 0x6b, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, - 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, - 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6f, - 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x73, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, - 0x0b, 0x6f, 0x73, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6f, 0x73, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1c, 0x0a, - 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x22, 0xe8, 0x02, 0x0a, 0x14, - 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x6d, - 0x61, 0x67, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x12, 0x49, 0x0a, 0x21, 0x70, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, - 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6f, - 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x22, 0x8e, 0x03, 0x0a, 0x0f, 0x56, 0x6d, 0x6c, 0x69, 0x6e, - 0x75, 0x7a, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x29, 0x0a, 0x10, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x77, 0x61, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x6f, 0x64, 0x65, - 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x72, 0x77, 0x5f, - 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x66, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, - 0x77, 0x52, 0x6f, 0x6f, 0x74, 0x46, 0x73, 0x22, 0xbb, 0x03, 0x0a, 0x0f, 0x4d, 0x61, 0x63, 0x41, - 0x70, 0x70, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x13, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x1b, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x90, 0x01, 0x0a, 0x17, 0x4d, 0x61, 0x63, 0x70, 0x6f, 0x72, - 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, - 0x10, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x4c, 0x0a, 0x13, 0x53, 0x50, 0x44, 0x58, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x21, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x75, 0x72, 0x6c, 0x52, 0x04, 0x70, 0x75, - 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x04, 0x63, 0x70, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x12, 0x43, 0x44, 0x58, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x04, - 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x75, 0x72, 0x6c, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x12, - 0x12, 0x0a, 0x04, 0x63, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, - 0x70, 0x65, 0x73, 0x22, 0x65, 0x0a, 0x13, 0x4a, 0x61, 0x76, 0x61, 0x41, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x68, 0x61, 0x31, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x68, 0x61, 0x31, 0x22, 0x9d, 0x01, 0x0a, 0x14, 0x4a, - 0x61, 0x76, 0x61, 0x4c, 0x6f, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, - 0x24, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x76, 0x61, 0x6c, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x56, 0x61, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x12, 0x4f, - 0x53, 0x56, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x72, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x72, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x63, 0x6f, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x5f, - 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, - 0x65, 0x41, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x1a, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x39, 0x0a, 0x19, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x68, 0x61, 0x73, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2d, 0x0a, - 0x12, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x44, - 0x0a, 0x13, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x12, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x22, 0x65, 0x0a, 0x10, 0x4e, 0x65, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x73, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4c, 0x69, 0x6e, 0x65, 0x22, 0x9c, 0x03, 0x0a, 0x1b, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x69, - 0x67, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, - 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x74, - 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x64, - 0x69, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x44, - 0x69, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x72, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x70, 0x65, 0x72, 0x44, 0x69, 0x72, 0x12, - 0x19, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x69, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, - 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xea, 0x01, 0x0a, 0x22, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x66, 0x73, - 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f, - 0x74, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, 0x22, 0x4f, 0x0a, 0x10, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x73, 0x4f, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75, 0x6c, - 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x19, 0x0a, 0x17, 0x48, 0x6f, 0x6d, 0x65, - 0x62, 0x72, 0x65, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x22, 0xc0, 0x02, 0x0a, 0x18, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x6f, 0x73, - 0x74, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0f, 0x68, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, - 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x34, 0x0a, 0x16, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x72, 0x6f, 0x6d, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x14, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x22, 0xac, 0x02, 0x0a, 0x18, 0x56, 0x53, 0x43, 0x6f, 0x64, - 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, - 0x72, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, - 0x33, 0x0a, 0x16, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x13, 0x69, 0x73, 0x50, 0x72, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, - 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xba, 0x03, 0x0a, 0x0e, 0x50, 0x6f, 0x64, 0x6d, 0x61, 0x6e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4e, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, - 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x6f, 0x64, 0x6d, 0x61, 0x6e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, - 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, - 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x3f, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, - 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x78, - 0x69, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x74, 0x65, 0x64, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x74, 0x65, 0x64, 0x1a, 0x52, - 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x20, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x14, - 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x18, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x69, 0x67, - 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x44, 0x6f, 0x63, - 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22, 0x4e, - 0x0a, 0x0c, 0x41, 0x73, 0x64, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, - 0x0a, 0x09, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x74, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, - 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x74, - 0x0a, 0x0a, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x21, 0x0a, 0x0c, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x50, 0x6f, 0x72, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x15, 0x57, 0x69, 0x6e, 0x67, 0x65, 0x74, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, - 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, - 0x22, 0x95, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, - 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9e, 0x19, 0x0a, 0x0a, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x06, 0x67, 0x63, 0x70, 0x73, 0x61, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, - 0x53, 0x41, 0x4b, 0x48, 0x00, 0x52, 0x06, 0x67, 0x63, 0x70, 0x73, 0x61, 0x6b, 0x12, 0x6d, 0x0a, - 0x1b, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, - 0x63, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x48, 0x00, 0x52, 0x18, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x61, 0x0a, 0x17, - 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, - 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x2e, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x14, 0x61, 0x6e, 0x74, 0x68, 0x72, - 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, - 0x46, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x65, 0x72, 0x70, 0x6c, 0x65, 0x78, - 0x69, 0x74, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x65, 0x72, - 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x10, 0x67, 0x72, - 0x6f, 0x6b, 0x5f, 0x78, 0x61, 0x69, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x72, 0x6f, 0x6b, 0x58, 0x41, - 0x49, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x6b, 0x58, - 0x61, 0x69, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x6b, 0x0a, 0x1b, 0x67, 0x72, 0x6f, 0x6b, - 0x5f, 0x78, 0x61, 0x69, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x2e, 0x47, 0x72, 0x6f, 0x6b, 0x58, 0x41, 0x49, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x17, 0x67, 0x72, - 0x6f, 0x6b, 0x58, 0x61, 0x69, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, - 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x0e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x5f, - 0x68, 0x75, 0x62, 0x5f, 0x70, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x2e, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x48, 0x75, 0x62, 0x50, 0x61, 0x74, 0x48, - 0x00, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x48, 0x75, 0x62, 0x50, 0x61, 0x74, 0x12, - 0x4e, 0x0a, 0x0c, 0x64, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x6f, 0x63, 0x65, 0x61, 0x6e, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x4f, 0x63, 0x65, 0x61, 0x6e, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, - 0x00, 0x52, 0x0c, 0x64, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x6f, 0x63, 0x65, 0x61, 0x6e, 0x12, - 0x48, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x41, 0x49, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x70, 0x65, - 0x6e, 0x61, 0x69, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x0f, 0x70, 0x6f, 0x73, - 0x74, 0x6d, 0x61, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x41, - 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, - 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x79, 0x0a, 0x1f, 0x70, 0x6f, 0x73, 0x74, 0x6d, 0x61, - 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x30, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x48, 0x00, 0x52, 0x1c, 0x70, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x54, 0x0a, 0x12, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x5a, 0x0a, 0x14, 0x61, 0x7a, 0x75, 0x72, 0x65, - 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, - 0x12, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x41, 0x0a, 0x0b, 0x74, 0x69, 0x6e, 0x6b, 0x5f, 0x6b, 0x65, 0x79, 0x73, - 0x65, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, - 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x69, - 0x6e, 0x6b, 0x4b, 0x65, 0x79, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x69, 0x6e, 0x6b, - 0x4b, 0x65, 0x79, 0x73, 0x65, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, - 0x5f, 0x70, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, - 0x47, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x50, 0x61, 0x74, 0x48, 0x00, 0x52, 0x09, 0x67, 0x69, 0x74, - 0x6c, 0x61, 0x62, 0x50, 0x61, 0x74, 0x12, 0x5d, 0x0a, 0x15, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x5f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x69, - 0x43, 0x6f, 0x72, 0x70, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, - 0x52, 0x13, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x56, 0x61, 0x75, 0x6c, 0x74, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x86, 0x01, 0x0a, 0x24, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, - 0x6f, 0x72, 0x70, 0x5f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x72, 0x6f, - 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x69, 0x43, - 0x6f, 0x72, 0x70, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x70, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x20, 0x68, 0x61, - 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x70, 0x70, 0x52, - 0x6f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3f, - 0x0a, 0x0b, 0x67, 0x63, 0x70, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, 0x41, 0x50, 0x49, 0x4b, - 0x65, 0x79, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x70, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, - 0x47, 0x0a, 0x0a, 0x68, 0x75, 0x67, 0x67, 0x69, 0x6e, 0x66, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x48, 0x75, 0x67, 0x67, 0x69, 0x6e, 0x67, - 0x66, 0x61, 0x63, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x75, - 0x67, 0x67, 0x69, 0x6e, 0x66, 0x61, 0x63, 0x65, 0x12, 0x64, 0x0a, 0x18, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, - 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x41, 0x70, 0x70, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x41, - 0x70, 0x70, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0xb0, - 0x03, 0x0a, 0x06, 0x47, 0x43, 0x50, 0x53, 0x41, 0x4b, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x6d, 0x61, - 0x69, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, 0x69, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x72, 0x69, 0x12, 0x3c, 0x0a, 0x1b, 0x61, 0x75, 0x74, 0x68, - 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x78, 0x35, 0x30, 0x39, 0x5f, 0x63, - 0x65, 0x72, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x61, - 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x58, 0x35, 0x30, 0x39, 0x43, - 0x65, 0x72, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x78, 0x35, 0x30, 0x39, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x58, 0x35, 0x30, 0x39, - 0x43, 0x65, 0x72, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x6e, 0x69, 0x76, 0x65, - 0x72, 0x73, 0x65, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, - 0x79, 0x1a, 0x2c, 0x0a, 0x18, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, - 0x28, 0x0a, 0x14, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x24, 0x0a, 0x10, 0x50, 0x65, 0x72, - 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, - 0x21, 0x0a, 0x0d, 0x47, 0x72, 0x6f, 0x6b, 0x58, 0x41, 0x49, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x1a, 0x2b, 0x0a, 0x17, 0x47, 0x72, 0x6f, 0x6b, 0x58, 0x41, 0x49, 0x4d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, - 0x34, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x03, 0x64, 0x65, 0x72, 0x1a, 0x28, 0x0a, 0x10, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, - 0x2a, 0x0a, 0x12, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x20, 0x0a, 0x0c, 0x4f, - 0x70, 0x65, 0x6e, 0x41, 0x49, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x3c, 0x0a, - 0x0c, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x48, 0x75, 0x62, 0x50, 0x61, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x70, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x61, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x1d, 0x0a, 0x09, 0x47, - 0x69, 0x74, 0x6c, 0x61, 0x62, 0x50, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x61, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x61, 0x74, 0x1a, 0x21, 0x0a, 0x0d, 0x50, 0x6f, - 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x30, 0x0a, - 0x1c, 0x50, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, - 0x28, 0x0a, 0x14, 0x44, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x4f, 0x63, 0x65, 0x61, 0x6e, 0x41, - 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x2d, 0x0a, 0x15, 0x47, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x41, 0x70, 0x70, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x26, 0x0a, 0x0a, 0x54, 0x69, 0x6e, 0x6b, - 0x4b, 0x65, 0x79, 0x73, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x1a, 0x2b, 0x0a, 0x13, 0x48, 0x61, 0x73, 0x68, 0x69, 0x43, 0x6f, 0x72, 0x70, 0x56, 0x61, 0x75, - 0x6c, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x68, 0x0a, - 0x20, 0x48, 0x61, 0x73, 0x68, 0x69, 0x43, 0x6f, 0x72, 0x70, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x41, - 0x70, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x1a, 0x1d, 0x0a, 0x09, 0x47, 0x43, 0x50, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x67, 0x0a, 0x11, 0x48, 0x75, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x66, 0x61, 0x63, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x65, - 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x66, - 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x42, - 0x08, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0xf8, 0x01, 0x0a, 0x0c, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, - 0x75, 0x6d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, - 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x69, 0x0a, 0x10, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, - 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, - 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, - 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x55, 0x50, - 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, - 0x45, 0x44, 0x10, 0x05, 0x22, 0xc8, 0x02, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2f, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x46, 0x69, - 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x48, 0x00, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, - 0x74, 0x68, 0x12, 0x62, 0x0a, 0x1b, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x77, - 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x61, - 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x18, 0x66, 0x69, - 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x51, 0x0a, 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x48, 0x00, 0x52, 0x13, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, - 0x00, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x1e, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, - 0x6a, 0x0a, 0x18, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, 0x4c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x3a, 0x0a, 0x0d, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0c, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x29, 0x0a, 0x13, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2c, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x2a, 0xf7, 0x01, 0x0a, 0x10, 0x56, 0x65, 0x78, 0x4a, 0x75, 0x73, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x45, 0x58, - 0x5f, 0x4a, 0x55, 0x53, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, - 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, - 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x55, 0x4c, 0x4e, 0x45, - 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, - 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x56, 0x55, 0x4c, 0x4e, - 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, - 0x49, 0x4e, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x10, - 0x03, 0x12, 0x35, 0x0a, 0x31, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x43, - 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x41, 0x44, 0x56, - 0x45, 0x52, 0x53, 0x41, 0x52, 0x59, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x4c, 0x49, - 0x4e, 0x45, 0x5f, 0x4d, 0x49, 0x54, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4c, - 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x05, 0x2a, 0x62, - 0x0a, 0x0c, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x18, - 0x0a, 0x14, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4e, 0x49, - 0x4d, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x0a, - 0x0a, 0x06, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, - 0x47, 0x48, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, - 0x10, 0x05, 0x42, 0x3f, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, - 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +const file_proto_scan_result_proto_rawDesc = "" + + "\n" + + "\x17proto/scan_result.proto\x12\ascalibr\x1a\x1fgoogle/protobuf/timestamp.proto\"\xce\x03\n" + + "\n" + + "ScanResult\x12\x18\n" + + "\aversion\x18\x01 \x01(\tR\aversion\x129\n" + + "\n" + + "start_time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tstartTime\x125\n" + + "\bend_time\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\aendTime\x12+\n" + + "\x06status\x18\x04 \x01(\v2\x13.scalibr.ScanStatusR\x06status\x12:\n" + + "\rplugin_status\x18\x05 \x03(\v2\x15.scalibr.PluginStatusR\fpluginStatus\x12K\n" + + "\x16inventories_deprecated\x18\x06 \x03(\v2\x10.scalibr.PackageB\x02\x18\x01R\x15inventoriesDeprecated\x12L\n" + + "\x13findings_deprecated\x18\a \x03(\v2\x17.scalibr.GenericFindingB\x02\x18\x01R\x12findingsDeprecated\x120\n" + + "\tinventory\x18\b \x01(\v2\x12.scalibr.InventoryR\tinventory\"\xa8\x01\n" + + "\tInventory\x12,\n" + + "\bpackages\x18\x01 \x03(\v2\x10.scalibr.PackageR\bpackages\x12B\n" + + "\x10generic_findings\x18\x02 \x03(\v2\x17.scalibr.GenericFindingR\x0fgenericFindings\x12)\n" + + "\asecrets\x18\x03 \x03(\v2\x0f.scalibr.SecretR\asecrets\"\xc6\x01\n" + + "\n" + + "ScanStatus\x12:\n" + + "\x06status\x18\x01 \x01(\x0e2\".scalibr.ScanStatus.ScanStatusEnumR\x06status\x12%\n" + + "\x0efailure_reason\x18\x02 \x01(\tR\rfailureReason\"U\n" + + "\x0eScanStatusEnum\x12\x0f\n" + + "\vUNSPECIFIED\x10\x00\x12\r\n" + + "\tSUCCEEDED\x10\x01\x12\x17\n" + + "\x13PARTIALLY_SUCCEEDED\x10\x02\x12\n" + + "\n" + + "\x06FAILED\x10\x03\"i\n" + + "\fPluginStatus\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\x05R\aversion\x12+\n" + + "\x06status\x18\x03 \x01(\v2\x13.scalibr.ScanStatusR\x06status\"\xb6\x1b\n" + + "\aPackage\x12\x12\n" + + "\x04name\x18\v \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\f \x01(\tR\aversion\x12>\n" + + "\vsource_code\x18\x1a \x01(\v2\x1d.scalibr.SourceCodeIdentifierR\n" + + "sourceCode\x12!\n" + + "\x04purl\x18\x01 \x01(\v2\r.scalibr.PurlR\x04purl\x12\x1c\n" + + "\tecosystem\x18\x1b \x01(\tR\tecosystem\x12\x1c\n" + + "\tlocations\x18\x02 \x03(\tR\tlocations\x125\n" + + "\x14extractor_deprecated\x18\n" + + " \x01(\tB\x02\x18\x01R\x13extractorDeprecated\x12\x18\n" + + "\aplugins\x181 \x03(\tR\aplugins\x12I\n" + + "\x0fpython_metadata\x18\x05 \x01(\v2\x1e.scalibr.PythonPackageMetadataH\x00R\x0epythonMetadata\x12Y\n" + + "\x13javascript_metadata\x18\x06 \x01(\v2&.scalibr.JavascriptPackageJSONMetadataH\x00R\x12javascriptMetadata\x12@\n" + + "\fapk_metadata\x18\a \x01(\v2\x1b.scalibr.APKPackageMetadataH\x00R\vapkMetadata\x12C\n" + + "\rdpkg_metadata\x18\b \x01(\v2\x1c.scalibr.DPKGPackageMetadataH\x00R\fdpkgMetadata\x12@\n" + + "\frpm_metadata\x18\t \x01(\v2\x1b.scalibr.RPMPackageMetadataH\x00R\vrpmMetadata\x12@\n" + + "\fcos_metadata\x18\r \x01(\v2\x1b.scalibr.COSPackageMetadataH\x00R\vcosMetadata\x12H\n" + + "\x11depsjson_metadata\x18( \x01(\v2\x19.scalibr.DEPSJSONMetadataH\x00R\x10depsjsonMetadata\x12C\n" + + "\rspdx_metadata\x18\x0e \x01(\v2\x1c.scalibr.SPDXPackageMetadataH\x00R\fspdxMetadata\x12R\n" + + "\x15java_archive_metadata\x18\x0f \x01(\v2\x1c.scalibr.JavaArchiveMetadataH\x00R\x13javaArchiveMetadata\x12U\n" + + "\x16java_lockfile_metadata\x18\x1f \x01(\v2\x1d.scalibr.JavaLockfileMetadataH\x00R\x14javaLockfileMetadata\x12I\n" + + "\x0fpacman_metadata\x18$ \x01(\v2\x1e.scalibr.PACMANPackageMetadataH\x00R\x0epacmanMetadata\x12@\n" + + "\fnix_metadata\x18% \x01(\v2\x1b.scalibr.NixPackageMetadataH\x00R\vnixMetadata\x12U\n" + + "\x16kernel_module_metadata\x18& \x01(\v2\x1d.scalibr.KernelModuleMetadataH\x00R\x14kernelModuleMetadata\x12E\n" + + "\x10vmlinuz_metadata\x18' \x01(\v2\x18.scalibr.VmlinuzMetadataH\x00R\x0fvmlinuzMetadata\x12L\n" + + "\x10portage_metadata\x18) \x01(\v2\x1f.scalibr.PortagePackageMetadataH\x00R\x0fportageMetadata\x12@\n" + + "\fosv_metadata\x18\x10 \x01(\v2\x1b.scalibr.OSVPackageMetadataH\x00R\vosvMetadata\x12H\n" + + "\x11netports_metadata\x18- \x01(\v2\x19.scalibr.NetportsMetadataH\x00R\x10netportsMetadata\x12g\n" + + "\x1cpython_requirements_metadata\x18\x15 \x01(\v2#.scalibr.PythonRequirementsMetadataH\x00R\x1apythonRequirementsMetadata\x12R\n" + + "\x15python_setup_metadata\x18, \x01(\v2\x1c.scalibr.PythonSetupMetadataH\x00R\x13pythonSetupMetadata\x12j\n" + + "\x1dcontainerd_container_metadata\x18\x16 \x01(\v2$.scalibr.ContainerdContainerMetadataH\x00R\x1bcontainerdContainerMetadata\x12C\n" + + "\rsnap_metadata\x18\x17 \x01(\v2\x1c.scalibr.SNAPPackageMetadataH\x00R\fsnapMetadata\x12L\n" + + "\x10flatpak_metadata\x18\x18 \x01(\v2\x1f.scalibr.FlatpakPackageMetadataH\x00R\x0fflatpakMetadata\x12F\n" + + "\x11mac_apps_metadata\x18\" \x01(\v2\x18.scalibr.MacAppsMetadataH\x00R\x0fmacAppsMetadata\x12\x80\x01\n" + + "%containerd_runtime_container_metadata\x18\x19 \x01(\v2+.scalibr.ContainerdRuntimeContainerMetadataH\x00R\"containerdRuntimeContainerMetadata\x12@\n" + + "\fcdx_metadata\x18\x1e \x01(\v2\x1b.scalibr.CDXPackageMetadataH\x00R\vcdxMetadata\x12Z\n" + + "\x1bwindows_os_version_metadata\x18! \x01(\v2\x19.scalibr.WindowsOSVersionH\x00R\x18windowsOsVersionMetadata\x12O\n" + + "\x11homebrew_metadata\x18* \x01(\v2 .scalibr.HomebrewPackageMetadataH\x00R\x10homebrewMetadata\x12a\n" + + "\x1achrome_extensions_metadata\x18/ \x01(\v2!.scalibr.ChromeExtensionsMetadataH\x00R\x18chromeExtensionsMetadata\x12a\n" + + "\x1avscode_extensions_metadata\x18. \x01(\v2!.scalibr.VSCodeExtensionsMetadataH\x00R\x18vscodeExtensionsMetadata\x12B\n" + + "\x0fpodman_metadata\x182 \x01(\v2\x17.scalibr.PodmanMetadataH\x00R\x0epodmanMetadata\x12a\n" + + "\x1adocker_containers_metadata\x180 \x01(\v2!.scalibr.DockerContainersMetadataH\x00R\x18dockerContainersMetadata\x12O\n" + + "\x11macports_metadata\x185 \x01(\v2 .scalibr.MacportsPackageMetadataH\x00R\x10macportsMetadata\x12I\n" + + "\x0fwinget_metadata\x186 \x01(\v2\x1e.scalibr.WingetPackageMetadataH\x00R\x0ewingetMetadata\x12<\n" + + "\rasdf_metadata\x187 \x01(\v2\x15.scalibr.AsdfMetadataH\x00R\fasdfMetadata\x12U\n" + + "\x13chocolatey_metadata\x188 \x01(\v2\".scalibr.ChocolateyPackageMetadataH\x00R\x12chocolateyMetadata\x12Z\n" + + "\x16annotations_deprecated\x18\x1c \x03(\x0e2\x1f.scalibr.Package.AnnotationEnumB\x02\x18\x01R\x15annotationsDeprecated\x12[\n" + + "\x16exploitability_signals\x183 \x03(\v2$.scalibr.PackageExploitabilitySignalR\x15exploitabilitySignals\x12:\n" + + "\rlayer_details\x18# \x01(\v2\x15.scalibr.LayerDetailsR\flayerDetails\x12\x1a\n" + + "\blicenses\x184 \x03(\tR\blicenses\"`\n" + + "\x0eAnnotationEnum\x12\x0f\n" + + "\vUNSPECIFIED\x10\x00\x12\x10\n" + + "\fTRANSITIONAL\x10\x01\x12\x15\n" + + "\x11INSIDE_OS_PACKAGE\x10\x02\x12\x14\n" + + "\x10INSIDE_CACHE_DIR\x10\x03B\n" + + "\n" + + "\bmetadataJ\x04\b\x03\x10\x04J\x04\b\x04\x10\x05\"B\n" + + "\x14SourceCodeIdentifier\x12\x12\n" + + "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" + + "\x06commit\x18\x02 \x01(\tR\x06commit\"\x96\x01\n" + + "\fLayerDetails\x12\x14\n" + + "\x05index\x18\x01 \x01(\x05R\x05index\x12\x17\n" + + "\adiff_id\x18\x02 \x01(\tR\x06diffId\x12\x19\n" + + "\bchain_id\x18\x05 \x01(\tR\achainId\x12\x18\n" + + "\acommand\x18\x03 \x01(\tR\acommand\x12\"\n" + + "\rin_base_image\x18\x04 \x01(\bR\vinBaseImage\"\xfa\x01\n" + + "\x1bPackageExploitabilitySignal\x12\x16\n" + + "\x06plugin\x18\x01 \x01(\tR\x06plugin\x12?\n" + + "\rjustification\x18\x02 \x01(\x0e2\x19.scalibr.VexJustificationR\rjustification\x12E\n" + + "\x10vuln_identifiers\x18\x03 \x01(\v2\x18.scalibr.VulnIdentifiersH\x00R\x0fvulnIdentifiers\x12,\n" + + "\x11matches_all_vulns\x18\x04 \x01(\bH\x00R\x0fmatchesAllVulnsB\r\n" + + "\vvuln_filter\"3\n" + + "\x0fVulnIdentifiers\x12 \n" + + "\videntifiers\x18\x01 \x03(\tR\videntifiers\"v\n" + + "\x1bFindingExploitabilitySignal\x12\x16\n" + + "\x06plugin\x18\x01 \x01(\tR\x06plugin\x12?\n" + + "\rjustification\x18\x02 \x01(\x0e2\x19.scalibr.VexJustificationR\rjustification\"\xc8\x01\n" + + "\x04Purl\x12\x12\n" + + "\x04purl\x18\x01 \x01(\tR\x04purl\x12\x12\n" + + "\x04type\x18\x02 \x01(\tR\x04type\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x04 \x01(\tR\aversion\x12\x1c\n" + + "\tnamespace\x18\x05 \x01(\tR\tnamespace\x122\n" + + "\n" + + "qualifiers\x18\x06 \x03(\v2\x12.scalibr.QualifierR\n" + + "qualifiers\x12\x18\n" + + "\asubpath\x18\a \x01(\tR\asubpath\"3\n" + + "\tQualifier\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\"\xfe\x01\n" + + "\x0eGenericFinding\x121\n" + + "\x03adv\x18\x01 \x01(\v2\x1f.scalibr.GenericFindingAdvisoryR\x03adv\x12<\n" + + "\x06target\x18\x02 \x01(\v2$.scalibr.GenericFindingTargetDetailsR\x06target\x12\x18\n" + + "\aplugins\x18\x04 \x03(\tR\aplugins\x12[\n" + + "\x16exploitability_signals\x18\x05 \x03(\v2$.scalibr.FindingExploitabilitySignalR\x15exploitabilitySignalsJ\x04\b\x03\x10\x04\"\xd2\x01\n" + + "\x16GenericFindingAdvisory\x12#\n" + + "\x02id\x18\x01 \x01(\v2\x13.scalibr.AdvisoryIdR\x02id\x12\x14\n" + + "\x05title\x18\x03 \x01(\tR\x05title\x12 \n" + + "\vdescription\x18\x04 \x01(\tR\vdescription\x12&\n" + + "\x0erecommendation\x18\x05 \x01(\tR\x0erecommendation\x12'\n" + + "\x03sev\x18\a \x01(\x0e2\x15.scalibr.SeverityEnumR\x03sevJ\x04\b\x02\x10\x03J\x04\b\x06\x10\a\"H\n" + + "\n" + + "AdvisoryId\x12\x1c\n" + + "\tpublisher\x18\x01 \x01(\tR\tpublisher\x12\x1c\n" + + "\treference\x18\x02 \x01(\tR\treference\"E\n" + + "\x1bGenericFindingTargetDetails\x12\x14\n" + + "\x05extra\x18\x04 \x01(\tR\x05extraJ\x04\b\x01\x10\x02J\x04\b\x02\x10\x03J\x04\b\x03\x10\x04\"R\n" + + "\x15PythonPackageMetadata\x12\x16\n" + + "\x06author\x18\x01 \x01(\tR\x06author\x12!\n" + + "\fauthor_email\x18\x02 \x01(\tR\vauthorEmail\"\xad\x01\n" + + "\x1dJavascriptPackageJSONMetadata\x12\x16\n" + + "\x06author\x18\x01 \x01(\tR\x06author\x12 \n" + + "\vmaintainers\x18\x02 \x03(\tR\vmaintainers\x12\"\n" + + "\fcontributors\x18\x03 \x03(\tR\fcontributors\x12.\n" + + "\x13from_npm_repository\x18\x04 \x01(\bR\x11fromNpmRepository\"\xe4\x01\n" + + "\x12APKPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12\x1f\n" + + "\vorigin_name\x18\x02 \x01(\tR\n" + + "originName\x12\x13\n" + + "\x05os_id\x18\x03 \x01(\tR\x04osId\x12\"\n" + + "\ros_version_id\x18\x04 \x01(\tR\vosVersionId\x12\x1e\n" + + "\n" + + "maintainer\x18\x05 \x01(\tR\n" + + "maintainer\x12\"\n" + + "\farchitecture\x18\x06 \x01(\tR\farchitectureJ\x04\b\a\x10\bR\alicense\"\xee\x02\n" + + "\x13DPKGPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12\x1f\n" + + "\vsource_name\x18\x02 \x01(\tR\n" + + "sourceName\x12%\n" + + "\x0esource_version\x18\x03 \x01(\tR\rsourceVersion\x12'\n" + + "\x0fpackage_version\x18\x04 \x01(\tR\x0epackageVersion\x12\x13\n" + + "\x05os_id\x18\x05 \x01(\tR\x04osId\x12.\n" + + "\x13os_version_codename\x18\x06 \x01(\tR\x11osVersionCodename\x12\"\n" + + "\ros_version_id\x18\a \x01(\tR\vosVersionId\x12\x1e\n" + + "\n" + + "maintainer\x18\b \x01(\tR\n" + + "maintainer\x12\"\n" + + "\farchitecture\x18\t \x01(\tR\farchitecture\x12\x16\n" + + "\x06status\x18\n" + + " \x01(\tR\x06status\"\xa9\x02\n" + + "\x12RPMPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12\x1d\n" + + "\n" + + "source_rpm\x18\x02 \x01(\tR\tsourceRpm\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x05R\x05epoch\x12\x13\n" + + "\x05os_id\x18\x04 \x01(\tR\x04osId\x12\"\n" + + "\ros_version_id\x18\x05 \x01(\tR\vosVersionId\x12\x1e\n" + + "\vos_build_id\x18\x06 \x01(\tR\tosBuildId\x12\x17\n" + + "\aos_name\x18\a \x01(\tR\x06osName\x12\x16\n" + + "\x06vendor\x18\b \x01(\tR\x06vendor\x12\"\n" + + "\farchitecture\x18\t \x01(\tR\farchitectureJ\x04\b\n" + + "\x10\vR\alicense\"\xc8\x01\n" + + "\x12COSPackageMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12\x1a\n" + + "\bcategory\x18\x03 \x01(\tR\bcategory\x12\x1d\n" + + "\n" + + "os_version\x18\x04 \x01(\tR\tosVersion\x12\"\n" + + "\ros_version_id\x18\x05 \x01(\tR\vosVersionId\x12%\n" + + "\x0eebuild_version\x18\x06 \x01(\tR\rebuildVersion\"\x80\x02\n" + + "\x15PACMANPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12\x13\n" + + "\x05os_id\x18\x03 \x01(\tR\x04osId\x12\"\n" + + "\ros_version_id\x18\x04 \x01(\tR\vosVersionId\x12/\n" + + "\x13package_description\x18\x05 \x01(\tR\x12packageDescription\x121\n" + + "\x14package_dependencies\x18\x06 \x01(\tR\x13packageDependencies\"\x93\x02\n" + + "\x12NixPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12!\n" + + "\fpackage_hash\x18\x03 \x01(\tR\vpackageHash\x12%\n" + + "\x0epackage_output\x18\x04 \x01(\tR\rpackageOutput\x12\x13\n" + + "\x05os_id\x18\x05 \x01(\tR\x04osId\x12.\n" + + "\x13os_version_codename\x18\x06 \x01(\tR\x11osVersionCodename\x12\"\n" + + "\ros_version_id\x18\a \x01(\tR\vosVersionId\"r\n" + + "\x10DEPSJSONMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12\x12\n" + + "\x04type\x18\x03 \x01(\tR\x04type\"\xfc\x01\n" + + "\x13SNAPPackageMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12\x14\n" + + "\x05grade\x18\x03 \x01(\tR\x05grade\x12\x12\n" + + "\x04type\x18\x04 \x01(\tR\x04type\x12$\n" + + "\rarchitectures\x18\x05 \x03(\tR\rarchitectures\x12\x13\n" + + "\x05os_id\x18\x06 \x01(\tR\x04osId\x12.\n" + + "\x13os_version_codename\x18\a \x01(\tR\x11osVersionCodename\x12\"\n" + + "\ros_version_id\x18\b \x01(\tR\vosVersionId\"\x9d\x01\n" + + "\x16PortagePackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12\x13\n" + + "\x05os_id\x18\x03 \x01(\tR\x04osId\x12\"\n" + + "\ros_version_id\x18\x04 \x01(\tR\vosVersionId\"\xb6\x02\n" + + "\x16FlatpakPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12\x1d\n" + + "\n" + + "package_id\x18\x02 \x01(\tR\tpackageId\x12'\n" + + "\x0fpackage_version\x18\x03 \x01(\tR\x0epackageVersion\x12!\n" + + "\frelease_date\x18\x04 \x01(\tR\vreleaseDate\x12\x17\n" + + "\aos_name\x18\x05 \x01(\tR\x06osName\x12\x13\n" + + "\x05os_id\x18\x06 \x01(\tR\x04osId\x12\"\n" + + "\ros_version_id\x18\a \x01(\tR\vosVersionId\x12\x1e\n" + + "\vos_build_id\x18\b \x01(\tR\tosBuildId\x12\x1c\n" + + "\tdeveloper\x18\t \x01(\tR\tdeveloper\"\xe8\x02\n" + + "\x14KernelModuleMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12)\n" + + "\x10package_vermagic\x18\x03 \x01(\tR\x0fpackageVermagic\x12I\n" + + "!package_source_version_identifier\x18\x04 \x01(\tR\x1epackageSourceVersionIdentifier\x12\x13\n" + + "\x05os_id\x18\x05 \x01(\tR\x04osId\x12.\n" + + "\x13os_version_codename\x18\x06 \x01(\tR\x11osVersionCodename\x12\"\n" + + "\ros_version_id\x18\a \x01(\tR\vosVersionId\x12%\n" + + "\x0epackage_author\x18\b \x01(\tR\rpackageAuthor\"\x8e\x03\n" + + "\x0fVmlinuzMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12\"\n" + + "\farchitecture\x18\x03 \x01(\tR\farchitecture\x12)\n" + + "\x10extended_version\x18\x04 \x01(\tR\x0fextendedVersion\x12\x16\n" + + "\x06format\x18\x05 \x01(\tR\x06format\x12\x1f\n" + + "\vswap_device\x18\x06 \x01(\x05R\n" + + "swapDevice\x12\x1f\n" + + "\vroot_device\x18\a \x01(\x05R\n" + + "rootDevice\x12\x1d\n" + + "\n" + + "video_mode\x18\b \x01(\tR\tvideoMode\x12\x13\n" + + "\x05os_id\x18\t \x01(\tR\x04osId\x12.\n" + + "\x13os_version_codename\x18\n" + + " \x01(\tR\x11osVersionCodename\x12\"\n" + + "\ros_version_id\x18\v \x01(\tR\vosVersionId\x12\x1c\n" + + "\n" + + "rw_root_fs\x18\f \x01(\bR\brwRootFs\"\xbb\x03\n" + + "\x0fMacAppsMetadata\x12.\n" + + "\x13bundle_display_name\x18\x01 \x01(\tR\x11bundleDisplayName\x12+\n" + + "\x11bundle_identifier\x18\x02 \x01(\tR\x10bundleIdentifier\x12=\n" + + "\x1bbundle_short_version_string\x18\x03 \x01(\tR\x18bundleShortVersionString\x12+\n" + + "\x11bundle_executable\x18\x04 \x01(\tR\x10bundleExecutable\x12\x1f\n" + + "\vbundle_name\x18\x05 \x01(\tR\n" + + "bundleName\x12.\n" + + "\x13bundle_package_type\x18\x06 \x01(\tR\x11bundlePackageType\x12)\n" + + "\x10bundle_signature\x18\a \x01(\tR\x0fbundleSignature\x12%\n" + + "\x0ebundle_version\x18\b \x01(\tR\rbundleVersion\x12\x1d\n" + + "\n" + + "product_id\x18\t \x01(\tR\tproductId\x12\x1d\n" + + "\n" + + "update_url\x18\n" + + " \x01(\tR\tupdateUrl\"\x90\x01\n" + + "\x17MacportsPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12)\n" + + "\x10package_revision\x18\x03 \x01(\tR\x0fpackageRevision\"L\n" + + "\x13SPDXPackageMetadata\x12!\n" + + "\x04purl\x18\x01 \x01(\v2\r.scalibr.PurlR\x04purl\x12\x12\n" + + "\x04cpes\x18\x02 \x03(\tR\x04cpes\"K\n" + + "\x12CDXPackageMetadata\x12!\n" + + "\x04purl\x18\x01 \x01(\v2\r.scalibr.PurlR\x04purl\x12\x12\n" + + "\x04cpes\x18\x02 \x03(\tR\x04cpes\"e\n" + + "\x13JavaArchiveMetadata\x12\x1f\n" + + "\vartifact_id\x18\x02 \x01(\tR\n" + + "artifactId\x12\x19\n" + + "\bgroup_id\x18\x03 \x01(\tR\agroupId\x12\x12\n" + + "\x04sha1\x18\x04 \x01(\tR\x04sha1\"\x9d\x01\n" + + "\x14JavaLockfileMetadata\x12\x1f\n" + + "\vartifact_id\x18\x01 \x01(\tR\n" + + "artifactId\x12\x19\n" + + "\bgroup_id\x18\x02 \x01(\tR\agroupId\x12$\n" + + "\x0edep_group_vals\x18\x03 \x03(\tR\fdepGroupVals\x12#\n" + + "\ris_transitive\x18\x04 \x01(\bR\fisTransitive\"\x86\x01\n" + + "\x12OSVPackageMetadata\x12\x1b\n" + + "\tpurl_type\x18\x01 \x01(\tR\bpurlType\x12\x16\n" + + "\x06commit\x18\x02 \x01(\tR\x06commit\x12\x1c\n" + + "\tecosystem\x18\x03 \x01(\tR\tecosystem\x12\x1d\n" + + "\n" + + "compare_as\x18\x04 \x01(\tR\tcompareAs\"\xa8\x01\n" + + "\x1aPythonRequirementsMetadata\x129\n" + + "\x19hash_checking_mode_values\x18\x01 \x03(\tR\x16hashCheckingModeValues\x12-\n" + + "\x12version_comparator\x18\x02 \x01(\tR\x11versionComparator\x12 \n" + + "\vrequirement\x18\x03 \x01(\tR\vrequirement\"D\n" + + "\x13PythonSetupMetadata\x12-\n" + + "\x12version_comparator\x18\x02 \x01(\tR\x11versionComparator\"e\n" + + "\x10NetportsMetadata\x12\x12\n" + + "\x04port\x18\x01 \x01(\rR\x04port\x12\x1a\n" + + "\bprotocol\x18\x02 \x01(\tR\bprotocol\x12!\n" + + "\fcommand_line\x18\x03 \x01(\tR\vcommandLine\"\x9c\x03\n" + + "\x1bContainerdContainerMetadata\x12%\n" + + "\x0enamespace_name\x18\x01 \x01(\tR\rnamespaceName\x12\x1d\n" + + "\n" + + "image_name\x18\x02 \x01(\tR\timageName\x12!\n" + + "\fimage_digest\x18\x03 \x01(\tR\vimageDigest\x12\x18\n" + + "\aruntime\x18\x04 \x01(\tR\aruntime\x12\x10\n" + + "\x03pid\x18\x05 \x01(\x05R\x03pid\x12 \n" + + "\vsnapshotter\x18\x06 \x01(\tR\vsnapshotter\x12!\n" + + "\fsnapshot_key\x18\a \x01(\tR\vsnapshotKey\x12\x1b\n" + + "\tlower_dir\x18\b \x01(\tR\blowerDir\x12\x1b\n" + + "\tupper_dir\x18\t \x01(\tR\bupperDir\x12\x19\n" + + "\bwork_dir\x18\n" + + " \x01(\tR\aworkDir\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x12\x19\n" + + "\bpod_name\x18\f \x01(\tR\apodName\x12#\n" + + "\rpod_namespace\x18\r \x01(\tR\fpodNamespace\"\xea\x01\n" + + "\"ContainerdRuntimeContainerMetadata\x12%\n" + + "\x0enamespace_name\x18\x01 \x01(\tR\rnamespaceName\x12\x1d\n" + + "\n" + + "image_name\x18\x02 \x01(\tR\timageName\x12!\n" + + "\fimage_digest\x18\x03 \x01(\tR\vimageDigest\x12\x18\n" + + "\aruntime\x18\x04 \x01(\tR\aruntime\x12\x0e\n" + + "\x02id\x18\x05 \x01(\tR\x02id\x12\x10\n" + + "\x03pid\x18\x06 \x01(\x05R\x03pid\x12\x1f\n" + + "\vrootfs_path\x18\a \x01(\tR\n" + + "rootfsPath\"O\n" + + "\x10WindowsOSVersion\x12\x18\n" + + "\aproduct\x18\x01 \x01(\tR\aproduct\x12!\n" + + "\ffull_version\x18\x02 \x01(\tR\vfullVersion\"\x19\n" + + "\x17HomebrewPackageMetadata\"\xc0\x02\n" + + "\x18ChromeExtensionsMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12 \n" + + "\vdescription\x18\x02 \x01(\tR\vdescription\x12!\n" + + "\fauthor_email\x18\x03 \x01(\tR\vauthorEmail\x12)\n" + + "\x10host_permissions\x18\x04 \x03(\tR\x0fhostPermissions\x12)\n" + + "\x10manifest_version\x18\x05 \x01(\x05R\x0fmanifestVersion\x124\n" + + "\x16minimum_chrome_version\x18\x06 \x01(\tR\x14minimumChromeVersion\x12 \n" + + "\vpermissions\x18\a \x03(\tR\vpermissions\x12\x1d\n" + + "\n" + + "update_url\x18\b \x01(\tR\tupdateUrl\"\xac\x02\n" + + "\x18VSCodeExtensionsMetadata\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12!\n" + + "\fpublisher_id\x18\x02 \x01(\tR\vpublisherId\x124\n" + + "\x16publisher_display_name\x18\x03 \x01(\tR\x14publisherDisplayName\x12'\n" + + "\x0ftarget_platform\x18\x04 \x01(\tR\x0etargetPlatform\x12\x18\n" + + "\aupdated\x18\x05 \x01(\bR\aupdated\x123\n" + + "\x16is_pre_release_version\x18\x06 \x01(\bR\x13isPreReleaseVersion\x12/\n" + + "\x13installed_timestamp\x18\a \x01(\x03R\x12installedTimestamp\"\xba\x03\n" + + "\x0ePodmanMetadata\x12N\n" + + "\rexposed_ports\x18\x01 \x03(\v2).scalibr.PodmanMetadata.ExposedPortsEntryR\fexposedPorts\x12\x10\n" + + "\x03pid\x18\x02 \x01(\x05R\x03pid\x12%\n" + + "\x0enamespace_name\x18\x03 \x01(\tR\rnamespaceName\x12=\n" + + "\fstarted_time\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\vstartedTime\x12?\n" + + "\rfinished_time\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\ffinishedTime\x12\x16\n" + + "\x06status\x18\x06 \x01(\tR\x06status\x12\x1b\n" + + "\texit_code\x18\a \x01(\x05R\bexitCode\x12\x16\n" + + "\x06exited\x18\b \x01(\bR\x06exited\x1aR\n" + + "\x11ExposedPortsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\rR\x03key\x12'\n" + + "\x05value\x18\x02 \x01(\v2\x11.scalibr.ProtocolR\x05value:\x028\x01\" \n" + + "\bProtocol\x12\x14\n" + + "\x05names\x18\x01 \x03(\tR\x05names\"\x97\x01\n" + + "\x18DockerContainersMetadata\x12\x1d\n" + + "\n" + + "image_name\x18\x01 \x01(\tR\timageName\x12!\n" + + "\fimage_digest\x18\x02 \x01(\tR\vimageDigest\x12\x0e\n" + + "\x02id\x18\x03 \x01(\tR\x02id\x12)\n" + + "\x05ports\x18\x04 \x03(\v2\x13.scalibr.DockerPortR\x05ports\"N\n" + + "\fAsdfMetadata\x12\x1b\n" + + "\ttool_name\x18\x01 \x01(\tR\btoolName\x12!\n" + + "\ftool_version\x18\x02 \x01(\tR\vtoolVersion\"t\n" + + "\n" + + "DockerPort\x12\x0e\n" + + "\x02ip\x18\x01 \x01(\tR\x02ip\x12!\n" + + "\fprivate_port\x18\x02 \x01(\rR\vprivatePort\x12\x1f\n" + + "\vpublic_port\x18\x03 \x01(\rR\n" + + "publicPort\x12\x12\n" + + "\x04type\x18\x04 \x01(\tR\x04type\"\xb9\x01\n" + + "\x15WingetPackageMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x0e\n" + + "\x02id\x18\x02 \x01(\tR\x02id\x12\x18\n" + + "\aversion\x18\x03 \x01(\tR\aversion\x12\x18\n" + + "\amoniker\x18\x04 \x01(\tR\amoniker\x12\x18\n" + + "\achannel\x18\x05 \x01(\tR\achannel\x12\x12\n" + + "\x04tags\x18\x06 \x03(\tR\x04tags\x12\x1a\n" + + "\bcommands\x18\a \x03(\tR\bcommands\"\xd1\x01\n" + + "\x19ChocolateyPackageMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12\x18\n" + + "\aauthors\x18\x03 \x01(\tR\aauthors\x12\x18\n" + + "\asummary\x18\x04 \x01(\tR\asummary\x12\x1e\n" + + "\n" + + "licenseurl\x18\x05 \x01(\tR\n" + + "licenseurl\x12\x1e\n" + + "\n" + + "projecturl\x18\x06 \x01(\tR\n" + + "projecturl\x12\x12\n" + + "\x04tags\x18\a \x01(\tR\x04tags\"\x95\x01\n" + + "\x06Secret\x12+\n" + + "\x06secret\x18\x01 \x01(\v2\x13.scalibr.SecretDataR\x06secret\x12-\n" + + "\x06status\x18\x02 \x01(\v2\x15.scalibr.SecretStatusR\x06status\x12/\n" + + "\tlocations\x18\x03 \x03(\v2\x11.scalibr.LocationR\tlocations\"\x9e\x19\n" + + "\n" + + "SecretData\x124\n" + + "\x06gcpsak\x18\x01 \x01(\v2\x1a.scalibr.SecretData.GCPSAKH\x00R\x06gcpsak\x12m\n" + + "\x1banthropic_workspace_api_key\x18\x02 \x01(\v2,.scalibr.SecretData.AnthropicWorkspaceAPIKeyH\x00R\x18anthropicWorkspaceApiKey\x12a\n" + + "\x17anthropic_model_api_key\x18\x03 \x01(\v2(.scalibr.SecretData.AnthropicModelAPIKeyH\x00R\x14anthropicModelApiKey\x12F\n" + + "\n" + + "perplexity\x18\x04 \x01(\v2$.scalibr.SecretData.PerplexityAPIKeyH\x00R\n" + + "perplexity\x12A\n" + + "\vprivate_key\x18\x05 \x01(\v2\x1e.scalibr.SecretData.PrivateKeyH\x00R\n" + + "privateKey\x12L\n" + + "\x10grok_xai_api_key\x18\x06 \x01(\v2!.scalibr.SecretData.GrokXAIAPIKeyH\x00R\rgrokXaiApiKey\x12k\n" + + "\x1bgrok_xai_management_api_key\x18\a \x01(\v2+.scalibr.SecretData.GrokXAIManagementAPIKeyH\x00R\x17grokXaiManagementApiKey\x12H\n" + + "\x0edocker_hub_pat\x18\b \x01(\v2 .scalibr.SecretData.DockerHubPatH\x00R\fdockerHubPat\x12N\n" + + "\fdigitalocean\x18\t \x01(\v2(.scalibr.SecretData.DigitalOceanAPITokenH\x00R\fdigitalocean\x12H\n" + + "\x0eopenai_api_key\x18\n" + + " \x01(\v2 .scalibr.SecretData.OpenAIAPIKeyH\x00R\fopenaiApiKey\x12K\n" + + "\x0fpostman_api_key\x18\v \x01(\v2!.scalibr.SecretData.PostmanAPIKeyH\x00R\rpostmanApiKey\x12y\n" + + "\x1fpostman_collection_access_token\x18\f \x01(\v20.scalibr.SecretData.PostmanCollectionAccessTokenH\x00R\x1cpostmanCollectionAccessToken\x12T\n" + + "\x12azure_access_token\x18\r \x01(\v2$.scalibr.SecretData.AzureAccessTokenH\x00R\x10azureAccessToken\x12Z\n" + + "\x14azure_identity_token\x18\x0e \x01(\v2&.scalibr.SecretData.AzureIdentityTokenH\x00R\x12azureIdentityToken\x12A\n" + + "\vtink_keyset\x18\x0f \x01(\v2\x1e.scalibr.SecretData.TinkKeysetH\x00R\n" + + "tinkKeyset\x12>\n" + + "\n" + + "gitlab_pat\x18\x10 \x01(\v2\x1d.scalibr.SecretData.GitlabPatH\x00R\tgitlabPat\x12]\n" + + "\x15hashicorp_vault_token\x18\x11 \x01(\v2'.scalibr.SecretData.HashiCorpVaultTokenH\x00R\x13hashicorpVaultToken\x12\x86\x01\n" + + "$hashicorp_vault_app_role_credentials\x18\x12 \x01(\v24.scalibr.SecretData.HashiCorpVaultAppRoleCredentialsH\x00R hashicorpVaultAppRoleCredentials\x12?\n" + + "\vgcp_api_key\x18\x13 \x01(\v2\x1d.scalibr.SecretData.GCPAPIKeyH\x00R\tgcpApiKey\x12G\n" + + "\n" + + "hugginface\x18\x14 \x01(\v2%.scalibr.SecretData.HuggingfaceAPIKeyH\x00R\n" + + "hugginface\x12d\n" + + "\x18github_app_refresh_token\x18\x15 \x01(\v2).scalibr.SecretData.GithubAppRefreshTokenH\x00R\x15githubAppRefreshToken\x1a\xb0\x03\n" + + "\x06GCPSAK\x12$\n" + + "\x0eprivate_key_id\x18\x01 \x01(\tR\fprivateKeyId\x12!\n" + + "\fclient_email\x18\x02 \x01(\tR\vclientEmail\x12\x1c\n" + + "\tsignature\x18\x03 \x01(\fR\tsignature\x12\x12\n" + + "\x04type\x18\x04 \x01(\tR\x04type\x12\x1d\n" + + "\n" + + "project_id\x18\x05 \x01(\tR\tprojectId\x12\x1b\n" + + "\tclient_id\x18\x06 \x01(\tR\bclientId\x12\x19\n" + + "\bauth_uri\x18\a \x01(\tR\aauthUri\x12\x1b\n" + + "\ttoken_uri\x18\b \x01(\tR\btokenUri\x12<\n" + + "\x1bauth_provider_x509_cert_url\x18\t \x01(\tR\x17authProviderX509CertUrl\x12/\n" + + "\x14client_x509_cert_url\x18\n" + + " \x01(\tR\x11clientX509CertUrl\x12'\n" + + "\x0funiverse_domain\x18\v \x01(\tR\x0euniverseDomain\x12\x1f\n" + + "\vprivate_key\x18\f \x01(\tR\n" + + "privateKey\x1a,\n" + + "\x18AnthropicWorkspaceAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a(\n" + + "\x14AnthropicModelAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a$\n" + + "\x10PerplexityAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a!\n" + + "\rGrokXAIAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a+\n" + + "\x17GrokXAIManagementAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a4\n" + + "\n" + + "PrivateKey\x12\x14\n" + + "\x05block\x18\x01 \x01(\tR\x05block\x12\x10\n" + + "\x03der\x18\x02 \x01(\fR\x03der\x1a(\n" + + "\x10AzureAccessToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1a*\n" + + "\x12AzureIdentityToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1a \n" + + "\fOpenAIAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a<\n" + + "\fDockerHubPat\x12\x10\n" + + "\x03pat\x18\x01 \x01(\tR\x03pat\x12\x1a\n" + + "\busername\x18\x02 \x01(\tR\busername\x1a\x1d\n" + + "\tGitlabPat\x12\x10\n" + + "\x03pat\x18\x01 \x01(\tR\x03pat\x1a!\n" + + "\rPostmanAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a0\n" + + "\x1cPostmanCollectionAccessToken\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a(\n" + + "\x14DigitalOceanAPIToken\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a-\n" + + "\x15GithubAppRefreshToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1a&\n" + + "\n" + + "TinkKeyset\x12\x18\n" + + "\acontent\x18\x01 \x01(\tR\acontent\x1a+\n" + + "\x13HashiCorpVaultToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1ah\n" + + " HashiCorpVaultAppRoleCredentials\x12\x17\n" + + "\arole_id\x18\x01 \x01(\tR\x06roleId\x12\x1b\n" + + "\tsecret_id\x18\x02 \x01(\tR\bsecretId\x12\x0e\n" + + "\x02id\x18\x03 \x01(\tR\x02id\x1a\x1d\n" + + "\tGCPAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1ag\n" + + "\x11HuggingfaceAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x12\n" + + "\x04role\x18\x02 \x01(\tR\x04role\x12,\n" + + "\x12fine_grained_scope\x18\x03 \x03(\tR\x10fineGrainedScopeB\b\n" + + "\x06secret\"\xf8\x01\n" + + "\fSecretStatus\x12>\n" + + "\x06status\x18\x01 \x01(\x0e2&.scalibr.SecretStatus.SecretStatusEnumR\x06status\x12=\n" + + "\flast_updated\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\vlastUpdated\"i\n" + + "\x10SecretStatusEnum\x12\x0f\n" + + "\vUNSPECIFIED\x10\x00\x12\x0f\n" + + "\aUNKNOWN\x10\x01\x1a\x02\b\x01\x12\v\n" + + "\aINVALID\x10\x02\x12\t\n" + + "\x05VALID\x10\x03\x12\x0f\n" + + "\vUNSUPPORTED\x10\x04\x12\n" + + "\n" + + "\x06FAILED\x10\x05\"\xc8\x02\n" + + "\bLocation\x12/\n" + + "\bfilepath\x18\x01 \x01(\v2\x11.scalibr.FilepathH\x00R\bfilepath\x12b\n" + + "\x1bfilepath_with_layer_details\x18\x02 \x01(\v2!.scalibr.FilepathWithLayerDetailsH\x00R\x18filepathWithLayerDetails\x12Q\n" + + "\x14environment_variable\x18\x03 \x01(\v2\x1c.scalibr.EnvironmentVariableH\x00R\x13environmentVariable\x12H\n" + + "\x11container_command\x18\x04 \x01(\v2\x19.scalibr.ContainerCommandH\x00R\x10containerCommandB\n" + + "\n" + + "\blocation\"\x1e\n" + + "\bFilepath\x12\x12\n" + + "\x04path\x18\x01 \x01(\tR\x04path\"j\n" + + "\x18FilepathWithLayerDetails\x12\x12\n" + + "\x04path\x18\x01 \x01(\tR\x04path\x12:\n" + + "\rlayer_details\x18\x02 \x01(\v2\x15.scalibr.LayerDetailsR\flayerDetails\")\n" + + "\x13EnvironmentVariable\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\",\n" + + "\x10ContainerCommand\x12\x18\n" + + "\acommand\x18\x01 \x01(\tR\acommand*\xf7\x01\n" + + "\x10VexJustification\x12!\n" + + "\x1dVEX_JUSTIFICATION_UNSPECIFIED\x10\x00\x12\x19\n" + + "\x15COMPONENT_NOT_PRESENT\x10\x01\x12\x1f\n" + + "\x1bVULNERABLE_CODE_NOT_PRESENT\x10\x02\x12'\n" + + "#VULNERABLE_CODE_NOT_IN_EXECUTE_PATH\x10\x03\x125\n" + + "1VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY\x10\x04\x12$\n" + + " INLINE_MITIGATION_ALREADY_EXISTS\x10\x05*b\n" + + "\fSeverityEnum\x12\x18\n" + + "\x14SEVERITY_UNSPECIFIED\x10\x00\x12\v\n" + + "\aMINIMAL\x10\x01\x12\a\n" + + "\x03LOW\x10\x02\x12\n" + + "\n" + + "\x06MEDIUM\x10\x03\x12\b\n" + + "\x04HIGH\x10\x04\x12\f\n" + + "\bCRITICAL\x10\x05B?P\x01Z;github.com/google/scalibr/binary/proto/scan_result_go_protob\x06proto3" var ( file_proto_scan_result_proto_rawDescOnce sync.Once - file_proto_scan_result_proto_rawDescData = file_proto_scan_result_proto_rawDesc + file_proto_scan_result_proto_rawDescData []byte ) func file_proto_scan_result_proto_rawDescGZIP() []byte { file_proto_scan_result_proto_rawDescOnce.Do(func() { - file_proto_scan_result_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_scan_result_proto_rawDescData) + file_proto_scan_result_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_scan_result_proto_rawDesc), len(file_proto_scan_result_proto_rawDesc))) }) return file_proto_scan_result_proto_rawDescData } var file_proto_scan_result_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_proto_scan_result_proto_msgTypes = make([]protoimpl.MessageInfo, 82) +var file_proto_scan_result_proto_msgTypes = make([]protoimpl.MessageInfo, 83) var file_proto_scan_result_proto_goTypes = []any{ (VexJustification)(0), // 0: scalibr.VexJustification (SeverityEnum)(0), // 1: scalibr.SeverityEnum @@ -7964,41 +7545,42 @@ var file_proto_scan_result_proto_goTypes = []any{ (*AsdfMetadata)(nil), // 54: scalibr.AsdfMetadata (*DockerPort)(nil), // 55: scalibr.DockerPort (*WingetPackageMetadata)(nil), // 56: scalibr.WingetPackageMetadata - (*Secret)(nil), // 57: scalibr.Secret - (*SecretData)(nil), // 58: scalibr.SecretData - (*SecretStatus)(nil), // 59: scalibr.SecretStatus - (*Location)(nil), // 60: scalibr.Location - (*Filepath)(nil), // 61: scalibr.Filepath - (*FilepathWithLayerDetails)(nil), // 62: scalibr.FilepathWithLayerDetails - (*EnvironmentVariable)(nil), // 63: scalibr.EnvironmentVariable - (*ContainerCommand)(nil), // 64: scalibr.ContainerCommand - nil, // 65: scalibr.PodmanMetadata.ExposedPortsEntry - (*SecretData_GCPSAK)(nil), // 66: scalibr.SecretData.GCPSAK - (*SecretData_AnthropicWorkspaceAPIKey)(nil), // 67: scalibr.SecretData.AnthropicWorkspaceAPIKey - (*SecretData_AnthropicModelAPIKey)(nil), // 68: scalibr.SecretData.AnthropicModelAPIKey - (*SecretData_PerplexityAPIKey)(nil), // 69: scalibr.SecretData.PerplexityAPIKey - (*SecretData_GrokXAIAPIKey)(nil), // 70: scalibr.SecretData.GrokXAIAPIKey - (*SecretData_GrokXAIManagementAPIKey)(nil), // 71: scalibr.SecretData.GrokXAIManagementAPIKey - (*SecretData_PrivateKey)(nil), // 72: scalibr.SecretData.PrivateKey - (*SecretData_AzureAccessToken)(nil), // 73: scalibr.SecretData.AzureAccessToken - (*SecretData_AzureIdentityToken)(nil), // 74: scalibr.SecretData.AzureIdentityToken - (*SecretData_OpenAIAPIKey)(nil), // 75: scalibr.SecretData.OpenAIAPIKey - (*SecretData_DockerHubPat)(nil), // 76: scalibr.SecretData.DockerHubPat - (*SecretData_GitlabPat)(nil), // 77: scalibr.SecretData.GitlabPat - (*SecretData_PostmanAPIKey)(nil), // 78: scalibr.SecretData.PostmanAPIKey - (*SecretData_PostmanCollectionAccessToken)(nil), // 79: scalibr.SecretData.PostmanCollectionAccessToken - (*SecretData_DigitalOceanAPIToken)(nil), // 80: scalibr.SecretData.DigitalOceanAPIToken - (*SecretData_GithubAppRefreshToken)(nil), // 81: scalibr.SecretData.GithubAppRefreshToken - (*SecretData_TinkKeyset)(nil), // 82: scalibr.SecretData.TinkKeyset - (*SecretData_HashiCorpVaultToken)(nil), // 83: scalibr.SecretData.HashiCorpVaultToken - (*SecretData_HashiCorpVaultAppRoleCredentials)(nil), // 84: scalibr.SecretData.HashiCorpVaultAppRoleCredentials - (*SecretData_GCPAPIKey)(nil), // 85: scalibr.SecretData.GCPAPIKey - (*SecretData_HuggingfaceAPIKey)(nil), // 86: scalibr.SecretData.HuggingfaceAPIKey - (*timestamppb.Timestamp)(nil), // 87: google.protobuf.Timestamp + (*ChocolateyPackageMetadata)(nil), // 57: scalibr.ChocolateyPackageMetadata + (*Secret)(nil), // 58: scalibr.Secret + (*SecretData)(nil), // 59: scalibr.SecretData + (*SecretStatus)(nil), // 60: scalibr.SecretStatus + (*Location)(nil), // 61: scalibr.Location + (*Filepath)(nil), // 62: scalibr.Filepath + (*FilepathWithLayerDetails)(nil), // 63: scalibr.FilepathWithLayerDetails + (*EnvironmentVariable)(nil), // 64: scalibr.EnvironmentVariable + (*ContainerCommand)(nil), // 65: scalibr.ContainerCommand + nil, // 66: scalibr.PodmanMetadata.ExposedPortsEntry + (*SecretData_GCPSAK)(nil), // 67: scalibr.SecretData.GCPSAK + (*SecretData_AnthropicWorkspaceAPIKey)(nil), // 68: scalibr.SecretData.AnthropicWorkspaceAPIKey + (*SecretData_AnthropicModelAPIKey)(nil), // 69: scalibr.SecretData.AnthropicModelAPIKey + (*SecretData_PerplexityAPIKey)(nil), // 70: scalibr.SecretData.PerplexityAPIKey + (*SecretData_GrokXAIAPIKey)(nil), // 71: scalibr.SecretData.GrokXAIAPIKey + (*SecretData_GrokXAIManagementAPIKey)(nil), // 72: scalibr.SecretData.GrokXAIManagementAPIKey + (*SecretData_PrivateKey)(nil), // 73: scalibr.SecretData.PrivateKey + (*SecretData_AzureAccessToken)(nil), // 74: scalibr.SecretData.AzureAccessToken + (*SecretData_AzureIdentityToken)(nil), // 75: scalibr.SecretData.AzureIdentityToken + (*SecretData_OpenAIAPIKey)(nil), // 76: scalibr.SecretData.OpenAIAPIKey + (*SecretData_DockerHubPat)(nil), // 77: scalibr.SecretData.DockerHubPat + (*SecretData_GitlabPat)(nil), // 78: scalibr.SecretData.GitlabPat + (*SecretData_PostmanAPIKey)(nil), // 79: scalibr.SecretData.PostmanAPIKey + (*SecretData_PostmanCollectionAccessToken)(nil), // 80: scalibr.SecretData.PostmanCollectionAccessToken + (*SecretData_DigitalOceanAPIToken)(nil), // 81: scalibr.SecretData.DigitalOceanAPIToken + (*SecretData_GithubAppRefreshToken)(nil), // 82: scalibr.SecretData.GithubAppRefreshToken + (*SecretData_TinkKeyset)(nil), // 83: scalibr.SecretData.TinkKeyset + (*SecretData_HashiCorpVaultToken)(nil), // 84: scalibr.SecretData.HashiCorpVaultToken + (*SecretData_HashiCorpVaultAppRoleCredentials)(nil), // 85: scalibr.SecretData.HashiCorpVaultAppRoleCredentials + (*SecretData_GCPAPIKey)(nil), // 86: scalibr.SecretData.GCPAPIKey + (*SecretData_HuggingfaceAPIKey)(nil), // 87: scalibr.SecretData.HuggingfaceAPIKey + (*timestamp.Timestamp)(nil), // 88: google.protobuf.Timestamp } var file_proto_scan_result_proto_depIdxs = []int32{ - 87, // 0: scalibr.ScanResult.start_time:type_name -> google.protobuf.Timestamp - 87, // 1: scalibr.ScanResult.end_time:type_name -> google.protobuf.Timestamp + 88, // 0: scalibr.ScanResult.start_time:type_name -> google.protobuf.Timestamp + 88, // 1: scalibr.ScanResult.end_time:type_name -> google.protobuf.Timestamp 7, // 2: scalibr.ScanResult.status:type_name -> scalibr.ScanStatus 8, // 3: scalibr.ScanResult.plugin_status:type_name -> scalibr.PluginStatus 9, // 4: scalibr.ScanResult.inventories_deprecated:type_name -> scalibr.Package @@ -8006,7 +7588,7 @@ var file_proto_scan_result_proto_depIdxs = []int32{ 6, // 6: scalibr.ScanResult.inventory:type_name -> scalibr.Inventory 9, // 7: scalibr.Inventory.packages:type_name -> scalibr.Package 17, // 8: scalibr.Inventory.generic_findings:type_name -> scalibr.GenericFinding - 57, // 9: scalibr.Inventory.secrets:type_name -> scalibr.Secret + 58, // 9: scalibr.Inventory.secrets:type_name -> scalibr.Secret 2, // 10: scalibr.ScanStatus.status:type_name -> scalibr.ScanStatus.ScanStatusEnum 7, // 11: scalibr.PluginStatus.status:type_name -> scalibr.ScanStatus 10, // 12: scalibr.Package.source_code:type_name -> scalibr.SourceCodeIdentifier @@ -8045,61 +7627,62 @@ var file_proto_scan_result_proto_depIdxs = []int32{ 36, // 45: scalibr.Package.macports_metadata:type_name -> scalibr.MacportsPackageMetadata 56, // 46: scalibr.Package.winget_metadata:type_name -> scalibr.WingetPackageMetadata 54, // 47: scalibr.Package.asdf_metadata:type_name -> scalibr.AsdfMetadata - 3, // 48: scalibr.Package.annotations_deprecated:type_name -> scalibr.Package.AnnotationEnum - 12, // 49: scalibr.Package.exploitability_signals:type_name -> scalibr.PackageExploitabilitySignal - 11, // 50: scalibr.Package.layer_details:type_name -> scalibr.LayerDetails - 0, // 51: scalibr.PackageExploitabilitySignal.justification:type_name -> scalibr.VexJustification - 13, // 52: scalibr.PackageExploitabilitySignal.vuln_identifiers:type_name -> scalibr.VulnIdentifiers - 0, // 53: scalibr.FindingExploitabilitySignal.justification:type_name -> scalibr.VexJustification - 16, // 54: scalibr.Purl.qualifiers:type_name -> scalibr.Qualifier - 18, // 55: scalibr.GenericFinding.adv:type_name -> scalibr.GenericFindingAdvisory - 20, // 56: scalibr.GenericFinding.target:type_name -> scalibr.GenericFindingTargetDetails - 14, // 57: scalibr.GenericFinding.exploitability_signals:type_name -> scalibr.FindingExploitabilitySignal - 19, // 58: scalibr.GenericFindingAdvisory.id:type_name -> scalibr.AdvisoryId - 1, // 59: scalibr.GenericFindingAdvisory.sev:type_name -> scalibr.SeverityEnum - 15, // 60: scalibr.SPDXPackageMetadata.purl:type_name -> scalibr.Purl - 15, // 61: scalibr.CDXPackageMetadata.purl:type_name -> scalibr.Purl - 65, // 62: scalibr.PodmanMetadata.exposed_ports:type_name -> scalibr.PodmanMetadata.ExposedPortsEntry - 87, // 63: scalibr.PodmanMetadata.started_time:type_name -> google.protobuf.Timestamp - 87, // 64: scalibr.PodmanMetadata.finished_time:type_name -> google.protobuf.Timestamp - 55, // 65: scalibr.DockerContainersMetadata.ports:type_name -> scalibr.DockerPort - 58, // 66: scalibr.Secret.secret:type_name -> scalibr.SecretData - 59, // 67: scalibr.Secret.status:type_name -> scalibr.SecretStatus - 60, // 68: scalibr.Secret.locations:type_name -> scalibr.Location - 66, // 69: scalibr.SecretData.gcpsak:type_name -> scalibr.SecretData.GCPSAK - 67, // 70: scalibr.SecretData.anthropic_workspace_api_key:type_name -> scalibr.SecretData.AnthropicWorkspaceAPIKey - 68, // 71: scalibr.SecretData.anthropic_model_api_key:type_name -> scalibr.SecretData.AnthropicModelAPIKey - 69, // 72: scalibr.SecretData.perplexity:type_name -> scalibr.SecretData.PerplexityAPIKey - 72, // 73: scalibr.SecretData.private_key:type_name -> scalibr.SecretData.PrivateKey - 70, // 74: scalibr.SecretData.grok_xai_api_key:type_name -> scalibr.SecretData.GrokXAIAPIKey - 71, // 75: scalibr.SecretData.grok_xai_management_api_key:type_name -> scalibr.SecretData.GrokXAIManagementAPIKey - 76, // 76: scalibr.SecretData.docker_hub_pat:type_name -> scalibr.SecretData.DockerHubPat - 80, // 77: scalibr.SecretData.digitalocean:type_name -> scalibr.SecretData.DigitalOceanAPIToken - 75, // 78: scalibr.SecretData.openai_api_key:type_name -> scalibr.SecretData.OpenAIAPIKey - 78, // 79: scalibr.SecretData.postman_api_key:type_name -> scalibr.SecretData.PostmanAPIKey - 79, // 80: scalibr.SecretData.postman_collection_access_token:type_name -> scalibr.SecretData.PostmanCollectionAccessToken - 73, // 81: scalibr.SecretData.azure_access_token:type_name -> scalibr.SecretData.AzureAccessToken - 74, // 82: scalibr.SecretData.azure_identity_token:type_name -> scalibr.SecretData.AzureIdentityToken - 82, // 83: scalibr.SecretData.tink_keyset:type_name -> scalibr.SecretData.TinkKeyset - 77, // 84: scalibr.SecretData.gitlab_pat:type_name -> scalibr.SecretData.GitlabPat - 83, // 85: scalibr.SecretData.hashicorp_vault_token:type_name -> scalibr.SecretData.HashiCorpVaultToken - 84, // 86: scalibr.SecretData.hashicorp_vault_app_role_credentials:type_name -> scalibr.SecretData.HashiCorpVaultAppRoleCredentials - 85, // 87: scalibr.SecretData.gcp_api_key:type_name -> scalibr.SecretData.GCPAPIKey - 86, // 88: scalibr.SecretData.hugginface:type_name -> scalibr.SecretData.HuggingfaceAPIKey - 81, // 89: scalibr.SecretData.github_app_refresh_token:type_name -> scalibr.SecretData.GithubAppRefreshToken - 4, // 90: scalibr.SecretStatus.status:type_name -> scalibr.SecretStatus.SecretStatusEnum - 87, // 91: scalibr.SecretStatus.last_updated:type_name -> google.protobuf.Timestamp - 61, // 92: scalibr.Location.filepath:type_name -> scalibr.Filepath - 62, // 93: scalibr.Location.filepath_with_layer_details:type_name -> scalibr.FilepathWithLayerDetails - 63, // 94: scalibr.Location.environment_variable:type_name -> scalibr.EnvironmentVariable - 64, // 95: scalibr.Location.container_command:type_name -> scalibr.ContainerCommand - 11, // 96: scalibr.FilepathWithLayerDetails.layer_details:type_name -> scalibr.LayerDetails - 52, // 97: scalibr.PodmanMetadata.ExposedPortsEntry.value:type_name -> scalibr.Protocol - 98, // [98:98] is the sub-list for method output_type - 98, // [98:98] is the sub-list for method input_type - 98, // [98:98] is the sub-list for extension type_name - 98, // [98:98] is the sub-list for extension extendee - 0, // [0:98] is the sub-list for field type_name + 57, // 48: scalibr.Package.chocolatey_metadata:type_name -> scalibr.ChocolateyPackageMetadata + 3, // 49: scalibr.Package.annotations_deprecated:type_name -> scalibr.Package.AnnotationEnum + 12, // 50: scalibr.Package.exploitability_signals:type_name -> scalibr.PackageExploitabilitySignal + 11, // 51: scalibr.Package.layer_details:type_name -> scalibr.LayerDetails + 0, // 52: scalibr.PackageExploitabilitySignal.justification:type_name -> scalibr.VexJustification + 13, // 53: scalibr.PackageExploitabilitySignal.vuln_identifiers:type_name -> scalibr.VulnIdentifiers + 0, // 54: scalibr.FindingExploitabilitySignal.justification:type_name -> scalibr.VexJustification + 16, // 55: scalibr.Purl.qualifiers:type_name -> scalibr.Qualifier + 18, // 56: scalibr.GenericFinding.adv:type_name -> scalibr.GenericFindingAdvisory + 20, // 57: scalibr.GenericFinding.target:type_name -> scalibr.GenericFindingTargetDetails + 14, // 58: scalibr.GenericFinding.exploitability_signals:type_name -> scalibr.FindingExploitabilitySignal + 19, // 59: scalibr.GenericFindingAdvisory.id:type_name -> scalibr.AdvisoryId + 1, // 60: scalibr.GenericFindingAdvisory.sev:type_name -> scalibr.SeverityEnum + 15, // 61: scalibr.SPDXPackageMetadata.purl:type_name -> scalibr.Purl + 15, // 62: scalibr.CDXPackageMetadata.purl:type_name -> scalibr.Purl + 66, // 63: scalibr.PodmanMetadata.exposed_ports:type_name -> scalibr.PodmanMetadata.ExposedPortsEntry + 88, // 64: scalibr.PodmanMetadata.started_time:type_name -> google.protobuf.Timestamp + 88, // 65: scalibr.PodmanMetadata.finished_time:type_name -> google.protobuf.Timestamp + 55, // 66: scalibr.DockerContainersMetadata.ports:type_name -> scalibr.DockerPort + 59, // 67: scalibr.Secret.secret:type_name -> scalibr.SecretData + 60, // 68: scalibr.Secret.status:type_name -> scalibr.SecretStatus + 61, // 69: scalibr.Secret.locations:type_name -> scalibr.Location + 67, // 70: scalibr.SecretData.gcpsak:type_name -> scalibr.SecretData.GCPSAK + 68, // 71: scalibr.SecretData.anthropic_workspace_api_key:type_name -> scalibr.SecretData.AnthropicWorkspaceAPIKey + 69, // 72: scalibr.SecretData.anthropic_model_api_key:type_name -> scalibr.SecretData.AnthropicModelAPIKey + 70, // 73: scalibr.SecretData.perplexity:type_name -> scalibr.SecretData.PerplexityAPIKey + 73, // 74: scalibr.SecretData.private_key:type_name -> scalibr.SecretData.PrivateKey + 71, // 75: scalibr.SecretData.grok_xai_api_key:type_name -> scalibr.SecretData.GrokXAIAPIKey + 72, // 76: scalibr.SecretData.grok_xai_management_api_key:type_name -> scalibr.SecretData.GrokXAIManagementAPIKey + 77, // 77: scalibr.SecretData.docker_hub_pat:type_name -> scalibr.SecretData.DockerHubPat + 81, // 78: scalibr.SecretData.digitalocean:type_name -> scalibr.SecretData.DigitalOceanAPIToken + 76, // 79: scalibr.SecretData.openai_api_key:type_name -> scalibr.SecretData.OpenAIAPIKey + 79, // 80: scalibr.SecretData.postman_api_key:type_name -> scalibr.SecretData.PostmanAPIKey + 80, // 81: scalibr.SecretData.postman_collection_access_token:type_name -> scalibr.SecretData.PostmanCollectionAccessToken + 74, // 82: scalibr.SecretData.azure_access_token:type_name -> scalibr.SecretData.AzureAccessToken + 75, // 83: scalibr.SecretData.azure_identity_token:type_name -> scalibr.SecretData.AzureIdentityToken + 83, // 84: scalibr.SecretData.tink_keyset:type_name -> scalibr.SecretData.TinkKeyset + 78, // 85: scalibr.SecretData.gitlab_pat:type_name -> scalibr.SecretData.GitlabPat + 84, // 86: scalibr.SecretData.hashicorp_vault_token:type_name -> scalibr.SecretData.HashiCorpVaultToken + 85, // 87: scalibr.SecretData.hashicorp_vault_app_role_credentials:type_name -> scalibr.SecretData.HashiCorpVaultAppRoleCredentials + 86, // 88: scalibr.SecretData.gcp_api_key:type_name -> scalibr.SecretData.GCPAPIKey + 87, // 89: scalibr.SecretData.hugginface:type_name -> scalibr.SecretData.HuggingfaceAPIKey + 82, // 90: scalibr.SecretData.github_app_refresh_token:type_name -> scalibr.SecretData.GithubAppRefreshToken + 4, // 91: scalibr.SecretStatus.status:type_name -> scalibr.SecretStatus.SecretStatusEnum + 88, // 92: scalibr.SecretStatus.last_updated:type_name -> google.protobuf.Timestamp + 62, // 93: scalibr.Location.filepath:type_name -> scalibr.Filepath + 63, // 94: scalibr.Location.filepath_with_layer_details:type_name -> scalibr.FilepathWithLayerDetails + 64, // 95: scalibr.Location.environment_variable:type_name -> scalibr.EnvironmentVariable + 65, // 96: scalibr.Location.container_command:type_name -> scalibr.ContainerCommand + 11, // 97: scalibr.FilepathWithLayerDetails.layer_details:type_name -> scalibr.LayerDetails + 52, // 98: scalibr.PodmanMetadata.ExposedPortsEntry.value:type_name -> scalibr.Protocol + 99, // [99:99] is the sub-list for method output_type + 99, // [99:99] is the sub-list for method input_type + 99, // [99:99] is the sub-list for extension type_name + 99, // [99:99] is the sub-list for extension extendee + 0, // [0:99] is the sub-list for field type_name } func init() { file_proto_scan_result_proto_init() } @@ -8142,12 +7725,13 @@ func file_proto_scan_result_proto_init() { (*Package_MacportsMetadata)(nil), (*Package_WingetMetadata)(nil), (*Package_AsdfMetadata)(nil), + (*Package_ChocolateyMetadata)(nil), } file_proto_scan_result_proto_msgTypes[7].OneofWrappers = []any{ (*PackageExploitabilitySignal_VulnIdentifiers)(nil), (*PackageExploitabilitySignal_MatchesAllVulns)(nil), } - file_proto_scan_result_proto_msgTypes[53].OneofWrappers = []any{ + file_proto_scan_result_proto_msgTypes[54].OneofWrappers = []any{ (*SecretData_Gcpsak)(nil), (*SecretData_AnthropicWorkspaceApiKey)(nil), (*SecretData_AnthropicModelApiKey)(nil), @@ -8170,7 +7754,7 @@ func file_proto_scan_result_proto_init() { (*SecretData_Hugginface)(nil), (*SecretData_GithubAppRefreshToken_)(nil), } - file_proto_scan_result_proto_msgTypes[55].OneofWrappers = []any{ + file_proto_scan_result_proto_msgTypes[56].OneofWrappers = []any{ (*Location_Filepath)(nil), (*Location_FilepathWithLayerDetails)(nil), (*Location_EnvironmentVariable)(nil), @@ -8180,9 +7764,9 @@ func file_proto_scan_result_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_proto_scan_result_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_scan_result_proto_rawDesc), len(file_proto_scan_result_proto_rawDesc)), NumEnums: 5, - NumMessages: 82, + NumMessages: 83, NumExtensions: 0, NumServices: 0, }, @@ -8192,7 +7776,6 @@ func file_proto_scan_result_proto_init() { MessageInfos: file_proto_scan_result_proto_msgTypes, }.Build() File_proto_scan_result_proto = out.File - file_proto_scan_result_proto_rawDesc = nil file_proto_scan_result_proto_goTypes = nil file_proto_scan_result_proto_depIdxs = nil } diff --git a/docs/supported_inventory_types.md b/docs/supported_inventory_types.md index 299ce7a14..44fa4deb6 100644 --- a/docs/supported_inventory_types.md +++ b/docs/supported_inventory_types.md @@ -52,6 +52,7 @@ See the docs on [how to add a new Extractor](/docs/new_extractor.md). | Homebrew | OS X | `os/homebrew` | | MacPorts | OS X | `os/macports` | | OS X Applications | OS X | `os/macapps` | +| Chocolatey | Windows software | `os/chocolatey` | | Windows | Build number | `windows/regosversion` | | Windows | Hotpatches | `windows/dismpatch`, `windows/regpatchlevel` | | Windows | Installed software | `windows/ospackages` | diff --git a/extractor/filesystem/list/list.go b/extractor/filesystem/list/list.go index ceea48558..e19156df9 100644 --- a/extractor/filesystem/list/list.go +++ b/extractor/filesystem/list/list.go @@ -70,6 +70,7 @@ import ( "github.com/google/osv-scalibr/extractor/filesystem/misc/vscodeextensions" wordpressplugins "github.com/google/osv-scalibr/extractor/filesystem/misc/wordpress/plugins" "github.com/google/osv-scalibr/extractor/filesystem/os/apk" + "github.com/google/osv-scalibr/extractor/filesystem/os/chocolatey" "github.com/google/osv-scalibr/extractor/filesystem/os/cos" "github.com/google/osv-scalibr/extractor/filesystem/os/dpkg" "github.com/google/osv-scalibr/extractor/filesystem/os/flatpak" @@ -230,21 +231,22 @@ var ( // OS extractors. OS = InitMap{ - dpkg.Name: {dpkg.NewDefault}, - apk.Name: {apk.NewDefault}, - rpm.Name: {rpm.NewDefault}, - cos.Name: {cos.NewDefault}, - snap.Name: {snap.NewDefault}, - nix.Name: {nix.New}, - module.Name: {module.NewDefault}, - vmlinuz.Name: {vmlinuz.NewDefault}, - pacman.Name: {pacman.NewDefault}, - portage.Name: {portage.NewDefault}, - flatpak.Name: {flatpak.NewDefault}, - homebrew.Name: {homebrew.New}, - macapps.Name: {macapps.NewDefault}, - macports.Name: {macports.New}, - winget.Name: {winget.NewDefault}, + dpkg.Name: {dpkg.NewDefault}, + apk.Name: {apk.NewDefault}, + rpm.Name: {rpm.NewDefault}, + cos.Name: {cos.NewDefault}, + snap.Name: {snap.NewDefault}, + nix.Name: {nix.New}, + module.Name: {module.NewDefault}, + vmlinuz.Name: {vmlinuz.NewDefault}, + pacman.Name: {pacman.NewDefault}, + portage.Name: {portage.NewDefault}, + flatpak.Name: {flatpak.NewDefault}, + homebrew.Name: {homebrew.New}, + macapps.Name: {macapps.NewDefault}, + macports.Name: {macports.New}, + winget.Name: {winget.NewDefault}, + chocolatey.Name: {chocolatey.NewDefault}, } // Credential extractors. diff --git a/extractor/filesystem/os/chocolatey/chocolatey.go b/extractor/filesystem/os/chocolatey/chocolatey.go new file mode 100644 index 000000000..659b3cb4e --- /dev/null +++ b/extractor/filesystem/os/chocolatey/chocolatey.go @@ -0,0 +1,194 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package chocolatey extracts installed binaries from .nuspec files. +package chocolatey + +import ( + "context" + "encoding/xml" + "path/filepath" + "strings" + + "github.com/google/osv-scalibr/extractor" + "github.com/google/osv-scalibr/extractor/filesystem" + "github.com/google/osv-scalibr/extractor/filesystem/internal/units" + chocolateymeta "github.com/google/osv-scalibr/extractor/filesystem/os/chocolatey/metadata" + "github.com/google/osv-scalibr/inventory" + "github.com/google/osv-scalibr/log" + "github.com/google/osv-scalibr/plugin" + "github.com/google/osv-scalibr/purl" + "github.com/google/osv-scalibr/stats" +) + +const ( + // Name is the unique name of this extractor. + Name = "os/chocolatey" + + // defaultMaxFileSizeBytes is the maximum file size an extractor will unmarshal. + // If Extract gets a bigger file, it will return an error. + defaultMaxFileSizeBytes = 100 * units.MiB +) + +// ChocoModule xml parser struct for .nuspec file +type ChocoModule struct { + XMLName xml.Name `xml:"package"` + Metadata Metadata `xml:"metadata"` +} + +// Metadata xml parser struct for metadata tag inside .nuspec file +type Metadata struct { + ID string `xml:"id"` + Version string `xml:"version"` + Authors string `xml:"authors"` + Summary string `xml:"summary"` + LicenseURL string `xml:"licenseUrl"` + ProjectURL string `xml:"projectUrl"` + Tags string `xml:"tags"` +} + +// Config is the configuration for the Extractor. +type Config struct { + // Stats is a stats collector for reporting metrics. + Stats stats.Collector + // MaxFileSizeBytes is the maximum file size this extractor will unmarshal. If + // `FileRequired` gets a bigger file, it will return false, + MaxFileSizeBytes int64 +} + +// DefaultConfig returns the default configuration for the chocolatey extractor. +func DefaultConfig() Config { + return Config{ + Stats: nil, + MaxFileSizeBytes: defaultMaxFileSizeBytes, + } +} + +// Extractor extracts chocolatey packages from .nuspec file. +type Extractor struct { + stats stats.Collector + maxFileSizeBytes int64 +} + +// New returns a chocolatey extractor. +func New(cfg Config) *Extractor { + return &Extractor{ + stats: cfg.Stats, + maxFileSizeBytes: cfg.MaxFileSizeBytes, + } +} + +// NewDefault returns an extractor with the default config settings. +func NewDefault() filesystem.Extractor { return New(DefaultConfig()) } + +// Config returns the configuration of the extractor. +func (e Extractor) Config() Config { + return Config{ + Stats: e.stats, + MaxFileSizeBytes: e.maxFileSizeBytes, + } +} + +// Name of the extractor. +func (e Extractor) Name() string { return Name } + +// Version of the extractor. +func (e Extractor) Version() int { return 0 } + +// Requirements of the extractor. +func (e Extractor) Requirements() *plugin.Capabilities { + return &plugin.Capabilities{OS: plugin.OSWindows} +} + +// FileRequired returns true if the specified file matches .nuspec file pattern. +func (e Extractor) FileRequired(api filesystem.FileAPI) bool { + path := api.Path() + normalized := filepath.ToSlash(path) + // Example: C:\ProgramData\chocolatey\lib\vscode\vscode.nuspec + if !strings.Contains(normalized, "chocolatey/lib/") { + return false + } + if !strings.HasSuffix(normalized, ".nuspec") { + return false + } + + fileinfo, err := api.Stat() + if err != nil { + return false + } + if e.maxFileSizeBytes > 0 && fileinfo.Size() > e.maxFileSizeBytes { + e.reportFileRequired(path, fileinfo.Size(), stats.FileRequiredResultSizeLimitExceeded) + return false + } + + e.reportFileRequired(path, fileinfo.Size(), stats.FileRequiredResultOK) + return true +} + +func (e Extractor) reportFileRequired(path string, fileSizeBytes int64, result stats.FileRequiredResult) { + if e.stats == nil { + return + } + e.stats.AfterFileRequired(e.Name(), &stats.FileRequiredStats{ + Path: path, + Result: result, + FileSizeBytes: fileSizeBytes, + }) +} + +// Extract extracts chocolatey info from .nuspec files passed through the scan input. +func (e Extractor) Extract(ctx context.Context, input *filesystem.ScanInput) (inventory.Inventory, error) { + pkgs, err := e.extractFromInput(input) + if e.stats != nil { + var fileSizeBytes int64 + if input.Info != nil { + fileSizeBytes = input.Info.Size() + } + e.stats.AfterFileExtracted(e.Name(), &stats.FileExtractedStats{ + Path: input.Path, + Result: filesystem.ExtractorErrorToFileExtractedResult(err), + FileSizeBytes: fileSizeBytes, + }) + } + return inventory.Inventory{Packages: pkgs}, err +} + +func (e Extractor) extractFromInput(input *filesystem.ScanInput) ([]*extractor.Package, error) { + var module ChocoModule + packages := []*extractor.Package{} + decoder := xml.NewDecoder(input.Reader) + if err := decoder.Decode(&module); err != nil { + log.Errorf("Error parsing nuspec file: %v", err) + return nil, err + } + if module.Metadata.ID != "" && module.Metadata.Version != "" { + p := &extractor.Package{ + Name: module.Metadata.ID, + Version: module.Metadata.Version, + PURLType: purl.TypeChocolatey, + Metadata: &chocolateymeta.Metadata{ + Name: module.Metadata.ID, + Version: module.Metadata.Version, + Authors: module.Metadata.Authors, + Summary: module.Metadata.Summary, + LicenseURL: module.Metadata.LicenseURL, + ProjectURL: module.Metadata.ProjectURL, + Tags: module.Metadata.Tags, + }, + Locations: []string{input.Path}, + } + packages = append(packages, p) + } + return packages, nil +} diff --git a/extractor/filesystem/os/chocolatey/chocolatey_test.go b/extractor/filesystem/os/chocolatey/chocolatey_test.go new file mode 100644 index 000000000..6028c7470 --- /dev/null +++ b/extractor/filesystem/os/chocolatey/chocolatey_test.go @@ -0,0 +1,292 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package chocolatey_test + +import ( + "io/fs" + "os" + "path/filepath" + "reflect" + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/google/osv-scalibr/extractor" + "github.com/google/osv-scalibr/extractor/filesystem" + "github.com/google/osv-scalibr/extractor/filesystem/internal/units" + "github.com/google/osv-scalibr/extractor/filesystem/os/chocolatey" + chocolateymeta "github.com/google/osv-scalibr/extractor/filesystem/os/chocolatey/metadata" + "github.com/google/osv-scalibr/extractor/filesystem/simplefileapi" + scalibrfs "github.com/google/osv-scalibr/fs" + "github.com/google/osv-scalibr/inventory" + "github.com/google/osv-scalibr/purl" + "github.com/google/osv-scalibr/stats" + "github.com/google/osv-scalibr/testing/fakefs" + "github.com/google/osv-scalibr/testing/testcollector" +) + +func TestNew(t *testing.T) { + tests := []struct { + name string + cfg chocolatey.Config + wantCfg chocolatey.Config + }{ + { + name: "default", + cfg: chocolatey.DefaultConfig(), + wantCfg: chocolatey.Config{ + MaxFileSizeBytes: 100 * units.MiB, + }, + }, + { + name: "custom", + cfg: chocolatey.Config{ + MaxFileSizeBytes: 10, + }, + wantCfg: chocolatey.Config{ + MaxFileSizeBytes: 10, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := chocolatey.New(tt.cfg) + if !reflect.DeepEqual(got.Config(), tt.wantCfg) { + t.Errorf("New(%+v).Config(): got %+v, want %+v", tt.cfg, got.Config(), tt.wantCfg) + } + }) + } +} + +func TestFileRequired(t *testing.T) { + tests := []struct { + name string + path string + fileSizeBytes int64 + maxFileSizeBytes int64 + wantRequired bool + wantResultMetric stats.FileRequiredResult + }{ + { + name: "nuspec file", + path: "/ProgramData/chocolatey/lib/vscode/vscode.nuspec", + wantRequired: true, + wantResultMetric: stats.FileRequiredResultOK, + }, + { + name: "nuspec file required if file size < max file size", + path: "/ProgramData/chocolatey/lib/vscode/vscode.nuspec", + fileSizeBytes: 100 * units.KiB, + maxFileSizeBytes: 1000 * units.KiB, + wantRequired: true, + wantResultMetric: stats.FileRequiredResultOK, + }, + { + name: "nuspec file required if file size == max file size", + path: "/ProgramData/chocolatey/lib/vscode/vscode.nuspec", + fileSizeBytes: 1000 * units.KiB, + maxFileSizeBytes: 1000 * units.KiB, + wantRequired: true, + wantResultMetric: stats.FileRequiredResultOK, + }, + { + name: "nuspec file not required if file size > max file size", + path: "/ProgramData/chocolatey/lib/vscode/vscode.nuspec", + fileSizeBytes: 1000 * units.KiB, + maxFileSizeBytes: 100 * units.KiB, + wantRequired: false, + wantResultMetric: stats.FileRequiredResultSizeLimitExceeded, + }, + { + name: "nuspec file required if max file size set to 0", + path: "/ProgramData/chocolatey/lib/vscode/vscode.nuspec", + fileSizeBytes: 100 * units.KiB, + maxFileSizeBytes: 0, + wantRequired: true, + wantResultMetric: stats.FileRequiredResultOK, + }, + { + name: "invalid file extension", + path: "/ProgramData/chocolatey/lib/vscode/vscode.nuspecrandom", + wantRequired: false, + }, + { + name: "invalid folder", + path: "/ProgramData/chocolatey/lib-bad/vscode/vscode.nuspec", + wantRequired: false, + }, + { + name: "invalid file", + path: "/ProgramData/choco.exe", + wantRequired: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + collector := testcollector.New() + var e filesystem.Extractor = chocolatey.New(chocolatey.Config{ + Stats: collector, + MaxFileSizeBytes: tt.maxFileSizeBytes, + }) + + fileSizeBytes := tt.fileSizeBytes + if fileSizeBytes == 0 { + fileSizeBytes = 1000 + } + + isRequired := e.FileRequired(simplefileapi.New(tt.path, fakefs.FakeFileInfo{ + FileName: filepath.Base(tt.path), + FileMode: fs.ModePerm, + FileSize: fileSizeBytes, + })) + if isRequired != tt.wantRequired { + t.Fatalf("FileRequired(%s): got %v, want %v", tt.path, isRequired, tt.wantRequired) + } + + gotResultMetric := collector.FileRequiredResult(tt.path) + if tt.wantResultMetric != "" && gotResultMetric != tt.wantResultMetric { + t.Errorf("FileRequired(%s) recorded result metric %v, want result metric %v", tt.path, gotResultMetric, tt.wantResultMetric) + } + }) + } +} + +func TestExtract(t *testing.T) { + tests := []struct { + name string + path string + cfg chocolatey.Config + wantPackages []*extractor.Package + wantErr error + wantResultMetric stats.FileExtractedResult + }{ + { + name: "valid nuspec file", + path: "testdata/chocolatey/lib/atom/atom.nuspec", + wantPackages: []*extractor.Package{ + { + Name: "atom", + Version: "1.60.0", + PURLType: purl.TypeChocolatey, + Metadata: &chocolateymeta.Metadata{ + Name: "atom", + Version: "1.60.0", + Authors: "GitHub Inc.", + Summary: "A hackable text editor for the 21st Century.", + LicenseURL: "https://github.com/atom/atom/blob/master/LICENSE.md", + ProjectURL: "https://atom.io/", + Tags: "atom admin text editor notepad github package autocompletion", + }, + Locations: []string{"testdata/chocolatey/lib/atom/atom.nuspec"}, + }, + }, + wantResultMetric: stats.FileExtractedResultSuccess, + }, + { + name: "valid nuspec file for install dependency", + path: "testdata/chocolatey/lib/atom.install/atom.install.nuspec", + wantPackages: []*extractor.Package{ + { + Name: "atom.install", + Version: "1.60.0", + PURLType: purl.TypeChocolatey, + Metadata: &chocolateymeta.Metadata{ + Name: "atom.install", + Version: "1.60.0", + Authors: "GitHub Inc.", + Summary: "A hackable text editor for the 21st Century.", + LicenseURL: "https://github.com/atom/atom/blob/master/LICENSE.md", + ProjectURL: "https://atom.io/", + Tags: "atom admin text editor notepad github package autocompletion", + }, + Locations: []string{"testdata/chocolatey/lib/atom.install/atom.install.nuspec"}, + }, + }, + wantResultMetric: stats.FileExtractedResultSuccess, + }, + { + name: "missing tags field in a valid nuspec file", + path: "testdata/chocolatey/lib/cmake/cmake.nuspec", + wantPackages: []*extractor.Package{ + { + Name: "cmake", + Version: "4.1.1", + PURLType: purl.TypeChocolatey, + Metadata: &chocolateymeta.Metadata{ + Name: "cmake", + Version: "4.1.1", + Authors: "Andy Cedilnik, Bill Hoffman, Brad King, Ken Martin, Alexander Neundorf", + Summary: "Cross-platform, open-source build system including CMake, CTest, CPack, and CMake-GUI", + LicenseURL: "https://gitlab.kitware.com/cmake/cmake/blob/master/Copyright.txt", + ProjectURL: "https://www.cmake.org/", + Tags: "", + }, + Locations: []string{"testdata/chocolatey/lib/cmake/cmake.nuspec"}, + }, + }, + wantResultMetric: stats.FileExtractedResultSuccess, + }, + { + name: "missing id field in an unvalid nuspec file", + path: "testdata/chocolatey/lib/atom/atom_withoutid.nuspec", + wantPackages: []*extractor.Package{}, + }, + { + name: "missing version field in an unvalid nuspec file", + path: "testdata/chocolatey/lib/atom/atom_withoutversion.nuspec", + wantPackages: []*extractor.Package{}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + collector := testcollector.New() + var e filesystem.Extractor = chocolatey.New(chocolatey.Config{ + Stats: collector, + MaxFileSizeBytes: 100, + }) + + d := t.TempDir() + + // Opening and Reading the Test File + r, err := os.Open(tt.path) + defer func() { + if err = r.Close(); err != nil { + t.Errorf("Close(): %v", err) + } + }() + if err != nil { + t.Fatal(err) + } + + info, err := os.Stat(tt.path) + if err != nil { + t.Fatalf("Failed to stat test file: %v", err) + } + + input := &filesystem.ScanInput{ + FS: scalibrfs.DirFS(d), Path: tt.path, Reader: r, Root: d, Info: info, + } + + got, err := e.Extract(t.Context(), input) + + wantInv := inventory.Inventory{Packages: tt.wantPackages} + if diff := cmp.Diff(wantInv, got); diff != "" { + t.Errorf("Package mismatch (-want +got):\n%s", diff) + } + }) + } +} diff --git a/extractor/filesystem/os/chocolatey/metadata/metadata.go b/extractor/filesystem/os/chocolatey/metadata/metadata.go new file mode 100644 index 000000000..faf3f3c5a --- /dev/null +++ b/extractor/filesystem/os/chocolatey/metadata/metadata.go @@ -0,0 +1,70 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package metadata defines a Metadata struct for Chocolatey packages. +package metadata + +import ( + pb "github.com/google/osv-scalibr/binary/proto/scan_result_go_proto" +) + +// Metadata holds parsing information for a Chocolatey package. +type Metadata struct { + Name string + Version string + Authors string + Summary string + LicenseURL string + ProjectURL string + Tags string +} + +// SetProto sets the ChocolateyMetadata field in the Package proto. +func (m *Metadata) SetProto(p *pb.Package) { + if m == nil { + return + } + if p == nil { + return + } + + p.Metadata = &pb.Package_ChocolateyMetadata{ + ChocolateyMetadata: &pb.ChocolateyPackageMetadata{ + Name: m.Name, + Version: m.Version, + Authors: m.Authors, + Summary: m.Summary, + Licenseurl: m.LicenseURL, + Projecturl: m.ProjectURL, + Tags: m.Tags, + }, + } +} + +// ToStruct converts the ChocolateyPackageMetadata proto to a Metadata struct. +func ToStruct(m *pb.ChocolateyPackageMetadata) *Metadata { + if m == nil { + return nil + } + + return &Metadata{ + Name: m.GetName(), + Version: m.GetVersion(), + Authors: m.GetAuthors(), + Summary: m.GetSummary(), + LicenseURL: m.GetLicenseurl(), + ProjectURL: m.GetProjecturl(), + Tags: m.GetTags(), + } +} diff --git a/extractor/filesystem/os/chocolatey/metadata/metadata_test.go b/extractor/filesystem/os/chocolatey/metadata/metadata_test.go new file mode 100644 index 000000000..3466b5f66 --- /dev/null +++ b/extractor/filesystem/os/chocolatey/metadata/metadata_test.go @@ -0,0 +1,211 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package metadata_test + +import ( + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/google/osv-scalibr/extractor/filesystem/os/chocolatey/metadata" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/testing/protocmp" + + pb "github.com/google/osv-scalibr/binary/proto/scan_result_go_proto" +) + +func TestSetProto(t *testing.T) { + testCases := []struct { + desc string + m *metadata.Metadata + p *pb.Package + want *pb.Package + }{ + { + desc: "nil metadata", + m: nil, + p: &pb.Package{Name: "some-package"}, + want: &pb.Package{Name: "some-package"}, + }, + { + desc: "nil package", + m: &metadata.Metadata{ + Name: "name", + }, + p: nil, + want: nil, + }, + { + desc: "set metadata", + m: &metadata.Metadata{ + Name: "name", + }, + p: &pb.Package{Name: "some-package"}, + want: &pb.Package{ + Name: "some-package", + Metadata: &pb.Package_ChocolateyMetadata{ + ChocolateyMetadata: &pb.ChocolateyPackageMetadata{ + Name: "name", + }, + }, + }, + }, + { + desc: "override metadata", + m: &metadata.Metadata{ + Name: "another-name", + }, + p: &pb.Package{ + Name: "some-package", + Metadata: &pb.Package_ChocolateyMetadata{ + ChocolateyMetadata: &pb.ChocolateyPackageMetadata{ + Name: "name", + }, + }, + }, + want: &pb.Package{ + Name: "some-package", + Metadata: &pb.Package_ChocolateyMetadata{ + ChocolateyMetadata: &pb.ChocolateyPackageMetadata{ + Name: "another-name", + }, + }, + }, + }, + { + desc: "set all fields", + m: &metadata.Metadata{ + Name: "name", + Version: "version", + Authors: "authors", + Summary: "summary", + LicenseURL: "licenseurl", + ProjectURL: "projecturl", + Tags: "tags", + }, + p: &pb.Package{Name: "some-package"}, + want: &pb.Package{ + Name: "some-package", + Metadata: &pb.Package_ChocolateyMetadata{ + ChocolateyMetadata: &pb.ChocolateyPackageMetadata{ + Name: "name", + Version: "version", + Authors: "authors", + Summary: "summary", + Licenseurl: "licenseurl", + Projecturl: "projecturl", + Tags: "tags", + }, + }, + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.desc, func(t *testing.T) { + p := proto.Clone(tc.p).(*pb.Package) + tc.m.SetProto(p) + opts := []cmp.Option{ + protocmp.Transform(), + } + if diff := cmp.Diff(tc.want, p, opts...); diff != "" { + t.Errorf("Metatadata{%+v}.SetProto(%+v): (-want +got):\n%s", tc.m, tc.p, diff) + } + + // Test the reverse conversion for completeness. + + if tc.p == nil && tc.want == nil { + return + } + + got := metadata.ToStruct(p.GetChocolateyMetadata()) + if diff := cmp.Diff(tc.m, got); diff != "" { + t.Errorf("ToStruct(%+v): (-want +got):\n%s", p.GetChocolateyMetadata(), diff) + } + }) + } +} + +func TestToStruct(t *testing.T) { + testCases := []struct { + desc string + m *pb.ChocolateyPackageMetadata + want *metadata.Metadata + }{ + { + desc: "nil", + m: nil, + want: nil, + }, + { + desc: "some fields", + m: &pb.ChocolateyPackageMetadata{ + Name: "name", + }, + want: &metadata.Metadata{ + Name: "name", + }, + }, + { + desc: "all fields", + m: &pb.ChocolateyPackageMetadata{ + Name: "name", + Version: "version", + Authors: "authors", + Summary: "summary", + Licenseurl: "licenseurl", + Projecturl: "projecturl", + Tags: "tags", + }, + want: &metadata.Metadata{ + Name: "name", + Version: "version", + Authors: "authors", + Summary: "summary", + LicenseURL: "licenseurl", + ProjectURL: "projecturl", + Tags: "tags", + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.desc, func(t *testing.T) { + got := metadata.ToStruct(tc.m) + if diff := cmp.Diff(tc.want, got); diff != "" { + t.Errorf("ToStruct(%+v): (-want +got):\n%s", tc.m, diff) + } + + if tc.m == nil { + return + } + + // Test the reverse conversion for completeness. + + gotP := &pb.Package{} + wantP := &pb.Package{ + Metadata: &pb.Package_ChocolateyMetadata{ + ChocolateyMetadata: tc.m, + }, + } + got.SetProto(gotP) + opts := []cmp.Option{ + protocmp.Transform(), + } + if diff := cmp.Diff(wantP, gotP, opts...); diff != "" { + t.Errorf("Metatadata{%+v}.SetProto(%+v): (-want +got):\n%s", got, wantP, diff) + } + }) + } +} diff --git a/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom.install/atom.install.nuspec b/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom.install/atom.install.nuspec new file mode 100755 index 000000000..9cd77a371 --- /dev/null +++ b/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom.install/atom.install.nuspec @@ -0,0 +1,41 @@ + + + + atom.install + 1.60.0 + Atom (Install) + GitHub Inc. + Thilas + https://github.com/atom/atom/blob/master/LICENSE.md + https://atom.io/ + https://cdn.jsdelivr.net/gh/Thilas/chocolatey-packages@058df13746c9cfa791d72eedd05f888d48a1bc1a/atom/icon.png + false + Atom is a text editor that's modern, approachable, yet hackable to the core—a tool you can customize to do anything but also use productively without ever touching a config file. + +### Cross-platform editing +Atom works across operating systems. You can use it on OS X, Windows, or Linux. + +### Built-in package manager +Search for and install new packages or start creating your own—all from within Atom. + +### Smart autocompletion +Atom helps you write code faster with a smart, flexible autocomplete. + +### File system browser +Easily browse and open a single file, a whole project, or multiple projects in one window. + +### Multiple panes +Split your Atom interface into multiple panes to compare and edit code across files. + +### Find and replace +Find, preview, and replace text as you type in a file or across all your projects. + A hackable text editor for the 21st Century. + [Release notes](https://atom.io/releases) + Copyright © GitHub Inc. + atom admin text editor notepad github package autocompletion + https://github.com/atom/atom + https://github.com/Thilas/chocolatey-packages/tree/master/atom.install + https://atom.io/docs + https://github.com/atom/atom/issues + + \ No newline at end of file diff --git a/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom.nuspec b/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom.nuspec new file mode 100755 index 000000000..9b7546df5 --- /dev/null +++ b/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom.nuspec @@ -0,0 +1,44 @@ + + + + atom + 1.60.0 + Atom + GitHub Inc. + bradgearon,Thilas + https://github.com/atom/atom/blob/master/LICENSE.md + https://atom.io/ + https://cdn.jsdelivr.net/gh/Thilas/chocolatey-packages@058df13746c9cfa791d72eedd05f888d48a1bc1a/atom/icon.png + false + Atom is a text editor that's modern, approachable, yet hackable to the core—a tool you can customize to do anything but also use productively without ever touching a config file. + +### Cross-platform editing +Atom works across operating systems. You can use it on OS X, Windows, or Linux. + +### Built-in package manager +Search for and install new packages or start creating your own—all from within Atom. + +### Smart autocompletion +Atom helps you write code faster with a smart, flexible autocomplete. + +### File system browser +Easily browse and open a single file, a whole project, or multiple projects in one window. + +### Multiple panes +Split your Atom interface into multiple panes to compare and edit code across files. + +### Find and replace +Find, preview, and replace text as you type in a file or across all your projects. + A hackable text editor for the 21st Century. + [Release notes](https://atom.io/releases) + Copyright © GitHub Inc. + atom admin text editor notepad github package autocompletion + https://github.com/atom/atom + https://github.com/Thilas/chocolatey-packages/tree/master/atom + https://atom.io/docs + https://github.com/atom/atom/issues + + + + + \ No newline at end of file diff --git a/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom_withoutid.nuspec b/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom_withoutid.nuspec new file mode 100755 index 000000000..48babcae5 --- /dev/null +++ b/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom_withoutid.nuspec @@ -0,0 +1,43 @@ + + + + 1.60.0 + Atom + GitHub Inc. + bradgearon,Thilas + https://github.com/atom/atom/blob/master/LICENSE.md + https://atom.io/ + https://cdn.jsdelivr.net/gh/Thilas/chocolatey-packages@058df13746c9cfa791d72eedd05f888d48a1bc1a/atom/icon.png + false + Atom is a text editor that's modern, approachable, yet hackable to the core—a tool you can customize to do anything but also use productively without ever touching a config file. + +### Cross-platform editing +Atom works across operating systems. You can use it on OS X, Windows, or Linux. + +### Built-in package manager +Search for and install new packages or start creating your own—all from within Atom. + +### Smart autocompletion +Atom helps you write code faster with a smart, flexible autocomplete. + +### File system browser +Easily browse and open a single file, a whole project, or multiple projects in one window. + +### Multiple panes +Split your Atom interface into multiple panes to compare and edit code across files. + +### Find and replace +Find, preview, and replace text as you type in a file or across all your projects. + A hackable text editor for the 21st Century. + [Release notes](https://atom.io/releases) + Copyright © GitHub Inc. + atom admin text editor notepad github package autocompletion + https://github.com/atom/atom + https://github.com/Thilas/chocolatey-packages/tree/master/atom + https://atom.io/docs + https://github.com/atom/atom/issues + + + + + diff --git a/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom_withoutversion.nuspec b/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom_withoutversion.nuspec new file mode 100755 index 000000000..170e7c8c2 --- /dev/null +++ b/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/atom/atom_withoutversion.nuspec @@ -0,0 +1,43 @@ + + + + atom + Atom + GitHub Inc. + bradgearon,Thilas + https://github.com/atom/atom/blob/master/LICENSE.md + https://atom.io/ + https://cdn.jsdelivr.net/gh/Thilas/chocolatey-packages@058df13746c9cfa791d72eedd05f888d48a1bc1a/atom/icon.png + false + Atom is a text editor that's modern, approachable, yet hackable to the core—a tool you can customize to do anything but also use productively without ever touching a config file. + +### Cross-platform editing +Atom works across operating systems. You can use it on OS X, Windows, or Linux. + +### Built-in package manager +Search for and install new packages or start creating your own—all from within Atom. + +### Smart autocompletion +Atom helps you write code faster with a smart, flexible autocomplete. + +### File system browser +Easily browse and open a single file, a whole project, or multiple projects in one window. + +### Multiple panes +Split your Atom interface into multiple panes to compare and edit code across files. + +### Find and replace +Find, preview, and replace text as you type in a file or across all your projects. + A hackable text editor for the 21st Century. + [Release notes](https://atom.io/releases) + Copyright © GitHub Inc. + atom admin text editor notepad github package autocompletion + https://github.com/atom/atom + https://github.com/Thilas/chocolatey-packages/tree/master/atom + https://atom.io/docs + https://github.com/atom/atom/issues + + + + + diff --git a/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/cmake/cmake.nuspec b/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/cmake/cmake.nuspec new file mode 100755 index 000000000..fdfab72d0 --- /dev/null +++ b/extractor/filesystem/os/chocolatey/testdata/chocolatey/lib/cmake/cmake.nuspec @@ -0,0 +1,50 @@ + + + + cmake + 4.1.1 + CMake + Andy Cedilnik, Bill Hoffman, Brad King, Ken Martin, Alexander Neundorf + chocolatey-community, dtgm + false + https://gitlab.kitware.com/cmake/cmake/blob/master/Copyright.txt + https://www.cmake.org/ + https://cdn.jsdelivr.net/gh/chocolatey-community/chocolatey-packages@5633c4413a8b71f75f379190546a0047c0e0b12b/icons/cmake.png + CMake is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice. The suite of CMake tools were created by Kitware in response to the need for a powerful, cross-platform build environment for open-source projects such as ITK and VTK. + +[Development](https://www.cmake.org/developer-resources/) + +#### MSI Properties + +`ADD_CMAKE_TO_PATH` +- `0` = Do not add CMake to PATH +- `1` = Add CMake to system PATH for __all users__ (default) + +`DESKTOP_SHORTCUT_REQUESTED` +- `0` = Do not create desktop icon (default) +- `1` = Create CMake desktop icon + +`ALLUSERS` +- `0` = Install for the current user only +- `1` = Install for all users (default) + +For example: `choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System' --apply-install-arguments-to-dependencies` + +## Notes + +- **If the package is out of date please check [Version History](#versionhistory) for the latest submitted version. If you have a question, please ask it in [Chocolatey Community Package Discussions](https://github.com/chocolatey-community/chocolatey-packages/discussions) or raise an issue on the [Chocolatey Community Packages Repository](https://github.com/chocolatey-community/chocolatey-packages/issues) if you have problems with the package. Disqus comments will generally not be responded to.** + Cross-platform, open-source build system including CMake, CTest, CPack, and CMake-GUI + #### Program +* [News](https://blog.kitware.com/tag/CMake/) +* [Changelog](https://www.cmake.org/download/#latest) + © 2000 Kitware Inc + https://gitlab.kitware.com/cmake/cmake + https://github.com/chocolatey-community/chocolatey-packages/tree/master/automatic/cmake + https://www.cmake.org/documentation/ + https://cmake.org/mailing-lists/ + https://gitlab.kitware.com/cmake/cmake/issues + + + + + diff --git a/go.mod b/go.mod index c8f925be2..ba8270df5 100644 --- a/go.mod +++ b/go.mod @@ -23,6 +23,7 @@ require ( github.com/go-git/go-git/v5 v5.16.2 github.com/gobwas/glob v0.2.3 github.com/gohugoio/hashstructure v0.5.0 + github.com/golang/protobuf v1.5.4 github.com/google/go-cmp v0.7.0 github.com/google/go-containerregistry v0.20.6 github.com/google/go-cpy v0.0.0-20211218193943-a9c933c06932 diff --git a/purl/purl.go b/purl/purl.go index 672529415..410634307 100644 --- a/purl/purl.go +++ b/purl/purl.go @@ -111,6 +111,8 @@ const ( TypeNim = "nim" // TypeLua is pkg:lua purl TypeLua = "lua" + // TypeChocolatey is pkg:chocolatey purl + TypeChocolatey = "chocolatey" ) // PackageURL is the struct representation of the parts that make a package url. @@ -177,47 +179,48 @@ func FromString(purl string) (PackageURL, error) { func validType(t string) bool { types := map[string]bool{ - TypeAlpm: true, - TypeApk: true, - TypeBitbucket: true, - TypeBrew: true, - TypeCargo: true, - TypeCocoapods: true, - TypeComposer: true, - TypeConan: true, - TypeConda: true, - TypeCOS: true, - TypeCran: true, - TypeDebian: true, - TypePacman: true, - TypeDocker: true, - TypeFlatpak: true, - TypeGem: true, - TypeGeneric: true, - TypeGithub: true, - TypeGolang: true, - TypeHackage: true, - TypeHaskell: true, - TypeNim: true, - TypeLua: true, - TypeHex: true, - TypeMacApps: true, - TypeMaven: true, - TypeNix: true, - TypeNPM: true, - TypeNuget: true, - TypeOCI: true, - TypeOpkg: true, - TypePub: true, - TypePortage: true, - TypePyPi: true, - TypeRPM: true, - TypeSwift: true, - TypeGooget: true, - TypeWordpress: true, - TypeAsdf: true, - TypeMacports: true, - TypeWinget: true, + TypeAlpm: true, + TypeApk: true, + TypeBitbucket: true, + TypeBrew: true, + TypeCargo: true, + TypeCocoapods: true, + TypeComposer: true, + TypeConan: true, + TypeConda: true, + TypeCOS: true, + TypeCran: true, + TypeDebian: true, + TypePacman: true, + TypeDocker: true, + TypeFlatpak: true, + TypeGem: true, + TypeGeneric: true, + TypeGithub: true, + TypeGolang: true, + TypeHackage: true, + TypeHaskell: true, + TypeNim: true, + TypeLua: true, + TypeHex: true, + TypeMacApps: true, + TypeMaven: true, + TypeNix: true, + TypeNPM: true, + TypeNuget: true, + TypeOCI: true, + TypeOpkg: true, + TypePub: true, + TypePortage: true, + TypePyPi: true, + TypeRPM: true, + TypeSwift: true, + TypeGooget: true, + TypeWordpress: true, + TypeAsdf: true, + TypeMacports: true, + TypeWinget: true, + TypeChocolatey: true, } // purl type is case-insensitive, canonical form is lower-case