From 8629f08cdf138ae0674a180abd6c4c0fe6b33f7a Mon Sep 17 00:00:00 2001 From: Yuval Goldberg Date: Mon, 31 Jan 2022 17:25:23 +0200 Subject: [PATCH] Rename flag `--list-all-pkgs` to `--list-pkgs` Resolves #828 In order to avoid confusion on the effect of `--list-all-pkgs` flag, rename the flag to solely `--list-pkgs` which will result in listing the packages alongside scanning for vulnerabilities according to the given behavior. In essence, - | OS package list | OS package vulnerabilities | Langueage-specific package list | Language-specific vulnerabilities ------------------------------------- | --------------- | -------------------------- | ------------------------------- | --------------------------------- `--vuln-type os` | x | v | x | x `--vuln-type library` | x | x | x | v `--vuln-type os,library` | x | v | x | v `--vuln-type os --list-pkgs` | v | v | x | x `--vuln-type library --list-pkgs` | x | x | v | v `--vuln-type os,library --list-pkgs` | v | v | v | v Signed-off-by: Yuval Goldberg --- docs/docs/references/cli/client.md | 2 +- docs/docs/references/cli/fs.md | 2 +- docs/docs/references/cli/image.md | 2 +- docs/docs/references/cli/repo.md | 2 +- docs/docs/references/cli/rootfs.md | 2 +- integration/client_server_test.go | 2 +- integration/fs_test.go | 8 +-- pkg/commands/app.go | 16 ++--- pkg/commands/artifact/run.go | 2 +- pkg/commands/option/report.go | 22 +++---- pkg/commands/option/report_test.go | 24 ++++---- pkg/rpc/client/client.go | 6 +- pkg/rpc/server/server.go | 6 +- pkg/scanner/local/scan.go | 4 +- pkg/scanner/local/scan_test.go | 6 +- pkg/types/scanoptions.go | 2 +- rpc/scanner/service.pb.go | 94 +++++++++++++++--------------- rpc/scanner/service.proto | 6 +- rpc/scanner/service.twirp.go | 67 +++++++++++---------- 19 files changed, 137 insertions(+), 138 deletions(-) diff --git a/docs/docs/references/cli/client.md b/docs/docs/references/cli/client.md index d37eb9c8229..77aabc0778d 100644 --- a/docs/docs/references/cli/client.md +++ b/docs/docs/references/cli/client.md @@ -21,7 +21,7 @@ OPTIONS: --ignorefile value specify .trivyignore file (default: ".trivyignore") [$TRIVY_IGNOREFILE] --timeout value timeout (default: 5m0s) [$TRIVY_TIMEOUT] --ignore-policy value specify the Rego file to evaluate each vulnerability [$TRIVY_IGNORE_POLICY] - --list-all-pkgs enabling the option will output all packages regardless of vulnerability (default: false) [$TRIVY_LIST_ALL_PKGS] + --list-pkgs enabling the option will output all packages regardless of vulnerability (default: false) [$TRIVY_LIST_PKGS] --offline-scan do not issue API requests to identify dependencies (default: false) [$TRIVY_OFFLINE_SCAN] --token value for authentication [$TRIVY_TOKEN] --token-header value specify a header name for token (default: "Trivy-Token") [$TRIVY_TOKEN_HEADER] diff --git a/docs/docs/references/cli/fs.md b/docs/docs/references/cli/fs.md index a40c67dbc36..926b1f27e1c 100644 --- a/docs/docs/references/cli/fs.md +++ b/docs/docs/references/cli/fs.md @@ -24,7 +24,7 @@ OPTIONS: --timeout value timeout (default: 5m0s) [$TRIVY_TIMEOUT] --no-progress suppress progress bar (default: false) [$TRIVY_NO_PROGRESS] --ignore-policy value specify the Rego file to evaluate each vulnerability [$TRIVY_IGNORE_POLICY] - --list-all-pkgs enabling the option will output all packages regardless of vulnerability (default: false) [$TRIVY_LIST_ALL_PKGS] + --list-pkgs enabling the option will output all packages regardless of vulnerability (default: false) [$TRIVY_LIST_PKGS] --offline-scan do not issue API requests to identify dependencies (default: false) [$TRIVY_OFFLINE_SCAN] --skip-files value specify the file paths to skip traversal [$TRIVY_SKIP_FILES] --skip-dirs value specify the directories where the traversal is skipped [$TRIVY_SKIP_DIRS] diff --git a/docs/docs/references/cli/image.md b/docs/docs/references/cli/image.md index 9c68c2d1886..88b08c63863 100644 --- a/docs/docs/references/cli/image.md +++ b/docs/docs/references/cli/image.md @@ -25,7 +25,7 @@ OPTIONS: --ignorefile value specify .trivyignore file (default: ".trivyignore") [$TRIVY_IGNOREFILE] --timeout value timeout (default: 5m0s) [$TRIVY_TIMEOUT] --ignore-policy value specify the Rego file to evaluate each vulnerability [$TRIVY_IGNORE_POLICY] - --list-all-pkgs enabling the option will output all packages regardless of vulnerability (default: false) [$TRIVY_LIST_ALL_PKGS] + --list-pkgs enabling the option will output all packages regardless of vulnerability (default: false) [$TRIVY_LIST_PKGS] --offline-scan do not issue API requests to identify dependencies (default: false) [$TRIVY_OFFLINE_SCAN] --skip-files value specify the file path to skip traversal [$TRIVY_SKIP_FILES] --skip-dirs value specify the directory where the traversal is skipped [$TRIVY_SKIP_DIRS] diff --git a/docs/docs/references/cli/repo.md b/docs/docs/references/cli/repo.md index 32c39356206..7735db89c39 100644 --- a/docs/docs/references/cli/repo.md +++ b/docs/docs/references/cli/repo.md @@ -25,7 +25,7 @@ OPTIONS: --no-progress suppress progress bar (default: false) [$TRIVY_NO_PROGRESS] --quiet, -q suppress progress bar and log output (default: false) [$TRIVY_QUIET] --ignore-policy value specify the Rego file to evaluate each vulnerability [$TRIVY_IGNORE_POLICY] - --list-all-pkgs enabling the option will output all packages regardless of vulnerability (default: false) [$TRIVY_LIST_ALL_PKGS] + --list-pkgs enabling the option will output all packages regardless of vulnerability (default: false) [$TRIVY_LIST_PKGS] --offline-scan do not issue API requests to identify dependencies (default: false) [$TRIVY_OFFLINE_SCAN] --skip-files value specify the file path to skip traversal [$TRIVY_SKIP_FILES] --skip-dirs value specify the directory where the traversal is skipped [$TRIVY_SKIP_DIRS] diff --git a/docs/docs/references/cli/rootfs.md b/docs/docs/references/cli/rootfs.md index 5bb941080d5..fd65efb1ef8 100644 --- a/docs/docs/references/cli/rootfs.md +++ b/docs/docs/references/cli/rootfs.md @@ -24,7 +24,7 @@ OPTIONS: --timeout value timeout (default: 5m0s) [$TRIVY_TIMEOUT] --no-progress suppress progress bar (default: false) [$TRIVY_NO_PROGRESS] --ignore-policy value specify the Rego file to evaluate each vulnerability [$TRIVY_IGNORE_POLICY] - --list-all-pkgs enabling the option will output all packages regardless of vulnerability (default: false) [$TRIVY_LIST_ALL_PKGS] + --list-pkgs enabling the option will output all packages regardless of vulnerability (default: false) [$TRIVY_LIST_PKGS] --offline-scan do not issue API requests to identify dependencies (default: false) [$TRIVY_OFFLINE_SCAN] --skip-files value specify the file paths to skip traversal [$TRIVY_SKIP_FILES] --skip-dirs value specify the directories where the traversal is skipped [$TRIVY_SKIP_DIRS] diff --git a/integration/client_server_test.go b/integration/client_server_test.go index ae35a883a7b..dc31e071caf 100644 --- a/integration/client_server_test.go +++ b/integration/client_server_test.go @@ -36,7 +36,7 @@ type csArgs struct { Input string ClientToken string ClientTokenHeader string - ListAllPackages bool + ListPackages bool Target string } diff --git a/integration/fs_test.go b/integration/fs_test.go index 52c9ac20297..daca099fb6a 100644 --- a/integration/fs_test.go +++ b/integration/fs_test.go @@ -22,7 +22,7 @@ func TestFilesystem(t *testing.T) { ignoreIDs []string policyPaths []string namespaces []string - listAllPkgs bool + listPkgs bool input string } tests := []struct { @@ -50,7 +50,7 @@ func TestFilesystem(t *testing.T) { name: "pip", args: args{ securityChecks: "vuln", - listAllPkgs: true, + listPkgs: true, input: "testdata/fixtures/fs/pip", }, golden: "testdata/pip.json.golden", @@ -139,8 +139,8 @@ func TestFilesystem(t *testing.T) { outputFile = tt.golden } - if tt.args.listAllPkgs { - osArgs = append(osArgs, "--list-all-pkgs") + if tt.args.listPkgs { + osArgs = append(osArgs, "--list-pkgs") } osArgs = append(osArgs, "--output", outputFile) diff --git a/pkg/commands/app.go b/pkg/commands/app.go index c77be8df5a8..10cbed0b0d4 100644 --- a/pkg/commands/app.go +++ b/pkg/commands/app.go @@ -227,10 +227,10 @@ var ( EnvVars: []string{"TRIVY_IGNORE_POLICY"}, } - listAllPackages = cli.BoolFlag{ - Name: "list-all-pkgs", + listPackages = cli.BoolFlag{ + Name: "list-pkgs", Usage: "enabling the option will output all packages regardless of vulnerability", - EnvVars: []string{"TRIVY_LIST_ALL_PKGS"}, + EnvVars: []string{"TRIVY_LIST_PKGS"}, } skipFiles = cli.StringSliceFlag{ @@ -448,7 +448,7 @@ func NewImageCommand() *cli.Command { &timeoutFlag, &lightFlag, &ignorePolicy, - &listAllPackages, + &listPackages, &cacheBackendFlag, &redisBackendCACert, &redisBackendCert, @@ -490,7 +490,7 @@ func NewFilesystemCommand() *cli.Command { &timeoutFlag, &noProgressFlag, &ignorePolicy, - &listAllPackages, + &listPackages, &offlineScan, &dbRepositoryFlag, stringSliceFlag(skipFiles), @@ -537,7 +537,7 @@ func NewRootfsCommand() *cli.Command { &timeoutFlag, &noProgressFlag, &ignorePolicy, - &listAllPackages, + &listPackages, &offlineScan, &dbRepositoryFlag, stringSliceFlag(skipFiles), @@ -580,7 +580,7 @@ func NewRepositoryCommand() *cli.Command { &noProgressFlag, &quietFlag, &ignorePolicy, - &listAllPackages, + &listPackages, &offlineScan, &insecureFlag, &dbRepositoryFlag, @@ -617,7 +617,7 @@ func NewClientCommand() *cli.Command { stringSliceFlag(skipFiles), stringSliceFlag(skipDirs), stringSliceFlag(configPolicy), - &listAllPackages, + &listPackages, &offlineScan, &insecureFlag, diff --git a/pkg/commands/artifact/run.go b/pkg/commands/artifact/run.go index cb7795203c4..443ed8a34d1 100644 --- a/pkg/commands/artifact/run.go +++ b/pkg/commands/artifact/run.go @@ -208,7 +208,7 @@ func scan(ctx context.Context, opt Option, initializeScanner InitializeScanner, VulnType: opt.VulnType, SecurityChecks: opt.SecurityChecks, ScanRemovedPackages: opt.ScanRemovedPkgs, // this is valid only for image subcommand - ListAllPackages: opt.ListAllPkgs, + ListPackages: opt.ListPkgs, } log.Logger.Debugf("Vulnerability type: %s", scanOptions.VulnType) diff --git a/pkg/commands/option/report.go b/pkg/commands/option/report.go index df5536aca48..24e3ff6ff59 100644 --- a/pkg/commands/option/report.go +++ b/pkg/commands/option/report.go @@ -35,7 +35,7 @@ type ReportOption struct { SecurityChecks []string Output io.Writer Severities []dbTypes.Severity - ListAllPkgs bool + ListPkgs bool } // NewReportOption is the factory method to return ReportOption @@ -52,7 +52,7 @@ func NewReportOption(c *cli.Context) ReportOption { IgnoreFile: c.String("ignorefile"), IgnoreUnfixed: c.Bool("ignore-unfixed"), ExitCode: c.Int("exit-code"), - ListAllPkgs: c.Bool("list-all-pkgs"), + ListPkgs: c.Bool("list-pkgs"), } } @@ -70,14 +70,14 @@ func (c *ReportOption) Init(output io.Writer, logger *zap.SugaredLogger) error { } } - // "--list-all-pkgs" option is unavailable with "--format table". - // If user specifies "--list-all-pkgs" with "--format table", we should warn it. - if c.ListAllPkgs && c.Format == "table" { - logger.Warn(`"--list-all-pkgs" cannot be used with "--format table". Try "--format json" or other formats.`) + // "--list-pkgs" option is unavailable with "--format table". + // If user specifies "--list-pkgs" with "--format table", we should warn it. + if c.ListPkgs && c.Format == "table" { + logger.Warn(`"--list-pkgs" cannot be used with "--format table". Try "--format json" or other formats.`) } - if c.forceListAllPkgs(logger) { - c.ListAllPkgs = true + if c.forceListPkgs(logger) { + c.ListPkgs = true } c.Severities = splitSeverity(logger, c.severities) @@ -136,9 +136,9 @@ func (c *ReportOption) populateSecurityChecks() error { return nil } -func (c *ReportOption) forceListAllPkgs(logger *zap.SugaredLogger) bool { - if c.Format == "cyclonedx" && !c.ListAllPkgs { - logger.Debugf("'--format cyclonedx' automatically enables '--list-all-pkgs'.") +func (c *ReportOption) forceListPkgs(logger *zap.SugaredLogger) bool { + if c.Format == "cyclonedx" && !c.ListPkgs { + logger.Debugf("'--format cyclonedx' automatically enables '--list-pkgs'.") return true } return false diff --git a/pkg/commands/option/report_test.go b/pkg/commands/option/report_test.go index fb9741324f6..3645a8200fd 100644 --- a/pkg/commands/option/report_test.go +++ b/pkg/commands/option/report_test.go @@ -24,7 +24,7 @@ func TestReportReportConfig_Init(t *testing.T) { severities string IgnoreFile string IgnoreUnfixed bool - listAllPksgs bool + listPkgs bool ExitCode int VulnType []string Output *os.File @@ -79,7 +79,7 @@ func TestReportReportConfig_Init(t *testing.T) { vulnType: "os,library", securityChecks: "vuln", Format: "cyclonedx", - listAllPksgs: true, + listPkgs: true, }, args: []string{"centos:7"}, want: ReportOption{ @@ -88,22 +88,22 @@ func TestReportReportConfig_Init(t *testing.T) { SecurityChecks: []string{types.SecurityCheckVulnerability}, Format: "cyclonedx", Output: os.Stdout, - ListAllPkgs: true, + ListPkgs: true, }, }, { - name: "happy path with an cyclonedx option list-all-pkgs is false", + name: "happy path with an cyclonedx option list-pkgs is false", fields: fields{ severities: "CRITICAL", vulnType: "os,library", securityChecks: "vuln", Format: "cyclonedx", - listAllPksgs: false, + listPkgs: false, debug: true, }, args: []string{"centos:7"}, logs: []string{ - "'--format cyclonedx' automatically enables '--list-all-pkgs'.", + "'--format cyclonedx' automatically enables '--list-pkgs'.", "Severities: CRITICAL", }, want: ReportOption{ @@ -112,7 +112,7 @@ func TestReportReportConfig_Init(t *testing.T) { SecurityChecks: []string{types.SecurityCheckVulnerability}, Format: "cyclonedx", Output: os.Stdout, - ListAllPkgs: true, + ListPkgs: true, }, }, { @@ -178,17 +178,17 @@ func TestReportReportConfig_Init(t *testing.T) { }, }, { - name: "invalid option combination: --list-all-pkgs with --format table", + name: "invalid option combination: --list-pkgs with --format table", fields: fields{ Format: "table", severities: "LOW", vulnType: "os", securityChecks: "vuln", - listAllPksgs: true, + listPkgs: true, }, args: []string{"centos:7"}, logs: []string{ - `"--list-all-pkgs" cannot be used with "--format table". Try "--format json" or other formats.`, + `"--list-pkgs" cannot be used with "--format table". Try "--format json" or other formats.`, }, want: ReportOption{ Format: "table", @@ -196,7 +196,7 @@ func TestReportReportConfig_Init(t *testing.T) { Severities: []dbTypes.Severity{dbTypes.SeverityLow}, VulnType: []string{types.VulnTypeOS}, SecurityChecks: []string{types.SecurityCheckVulnerability}, - ListAllPkgs: true, + ListPkgs: true, }, }, } @@ -223,7 +223,7 @@ func TestReportReportConfig_Init(t *testing.T) { IgnoreFile: tt.fields.IgnoreFile, IgnoreUnfixed: tt.fields.IgnoreUnfixed, ExitCode: tt.fields.ExitCode, - ListAllPkgs: tt.fields.listAllPksgs, + ListPkgs: tt.fields.listPkgs, Output: tt.fields.Output, } err := c.Init(os.Stdout, logger.Sugar()) diff --git a/pkg/rpc/client/client.go b/pkg/rpc/client/client.go index 77189052604..cfa37eafa7c 100644 --- a/pkg/rpc/client/client.go +++ b/pkg/rpc/client/client.go @@ -71,9 +71,9 @@ func (s Scanner) Scan(target, artifactKey string, blobKeys []string, options typ ArtifactId: artifactKey, BlobIds: blobKeys, Options: &rpc.ScanOptions{ - VulnType: options.VulnType, - SecurityChecks: options.SecurityChecks, - ListAllPackages: options.ListAllPackages, + VulnType: options.VulnType, + SecurityChecks: options.SecurityChecks, + ListPackages: options.ListPackages, }, }) return err diff --git a/pkg/rpc/server/server.go b/pkg/rpc/server/server.go index a805bc904de..846cc987a0f 100644 --- a/pkg/rpc/server/server.go +++ b/pkg/rpc/server/server.go @@ -39,9 +39,9 @@ func NewScanServer(s scanner.Driver, vulnClient result.Client) *ScanServer { // Scan scans and return response func (s *ScanServer) Scan(_ context.Context, in *rpcScanner.ScanRequest) (*rpcScanner.ScanResponse, error) { options := types.ScanOptions{ - VulnType: in.Options.VulnType, - SecurityChecks: in.Options.SecurityChecks, - ListAllPackages: in.Options.ListAllPackages, + VulnType: in.Options.VulnType, + SecurityChecks: in.Options.SecurityChecks, + ListPackages: in.Options.ListPackages, } results, os, err := s.localScanner.Scan(in.Target, in.ArtifactId, in.BlobIds, options) if err != nil { diff --git a/pkg/scanner/local/scan.go b/pkg/scanner/local/scan.go index cb3c6f83682..5066406af15 100644 --- a/pkg/scanner/local/scan.go +++ b/pkg/scanner/local/scan.go @@ -157,7 +157,7 @@ func (s Scanner) scanOSPkgs(target string, detail ftypes.ArtifactDetail, options return nil, eosl, nil } - if options.ListAllPackages { + if options.ListPackages { sort.Slice(pkgs, func(i, j int) bool { return strings.Compare(pkgs[i].Name, pkgs[j].Name) <= 0 }) @@ -225,7 +225,7 @@ func (s Scanner) scanLibrary(apps []ftypes.Application, options types.ScanOption Class: types.ClassLangPkg, Type: app.Type, } - if options.ListAllPackages { + if options.ListPackages { libReport.Packages = app.Libraries } results = append(results, libReport) diff --git a/pkg/scanner/local/scan_test.go b/pkg/scanner/local/scan_test.go index 920ae5452aa..dc6bd503782 100644 --- a/pkg/scanner/local/scan_test.go +++ b/pkg/scanner/local/scan_test.go @@ -157,9 +157,9 @@ func TestScanner_Scan(t *testing.T) { target: "alpine:latest", layerIDs: []string{"sha256:5216338b40a7b96416b8b9858974bbe4acc3096ee60acbc4dfb1ee02aecceb10"}, options: types.ScanOptions{ - VulnType: []string{types.VulnTypeOS, types.VulnTypeLibrary}, - SecurityChecks: []string{types.SecurityCheckVulnerability}, - ListAllPackages: true, + VulnType: []string{types.VulnTypeOS, types.VulnTypeLibrary}, + SecurityChecks: []string{types.SecurityCheckVulnerability}, + ListPackages: true, }, }, fixtures: []string{"testdata/fixtures/happy.yaml"}, diff --git a/pkg/types/scanoptions.go b/pkg/types/scanoptions.go index da45e225039..94c9a0c1c2b 100644 --- a/pkg/types/scanoptions.go +++ b/pkg/types/scanoptions.go @@ -5,5 +5,5 @@ type ScanOptions struct { VulnType []string SecurityChecks []string ScanRemovedPackages bool - ListAllPackages bool + ListPackages bool } diff --git a/rpc/scanner/service.pb.go b/rpc/scanner/service.pb.go index 21ad3ad7870..870d5004bba 100644 --- a/rpc/scanner/service.pb.go +++ b/rpc/scanner/service.pb.go @@ -97,9 +97,9 @@ type ScanOptions struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - VulnType []string `protobuf:"bytes,1,rep,name=vuln_type,json=vulnType,proto3" json:"vuln_type,omitempty"` - SecurityChecks []string `protobuf:"bytes,2,rep,name=security_checks,json=securityChecks,proto3" json:"security_checks,omitempty"` - ListAllPackages bool `protobuf:"varint,3,opt,name=list_all_packages,json=listAllPackages,proto3" json:"list_all_packages,omitempty"` + VulnType []string `protobuf:"bytes,1,rep,name=vuln_type,json=vulnType,proto3" json:"vuln_type,omitempty"` + SecurityChecks []string `protobuf:"bytes,2,rep,name=security_checks,json=securityChecks,proto3" json:"security_checks,omitempty"` + ListPackages bool `protobuf:"varint,3,opt,name=list_packages,json=listPackages,proto3" json:"list_packages,omitempty"` } func (x *ScanOptions) Reset() { @@ -148,9 +148,9 @@ func (x *ScanOptions) GetSecurityChecks() []string { return nil } -func (x *ScanOptions) GetListAllPackages() bool { +func (x *ScanOptions) GetListPackages() bool { if x != nil { - return x.ListAllPackages + return x.ListPackages } return false } @@ -323,52 +323,52 @@ var file_rpc_scanner_service_proto_rawDesc = []byte{ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7f, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6e, 0x4f, 0x70, 0x74, 0x69, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x78, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x75, 0x6c, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x76, 0x75, 0x6c, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x69, 0x73, - 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x64, 0x0a, 0x0c, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x4f, 0x53, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, - 0x2e, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x06, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x45, - 0x0a, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x11, 0x6d, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4d, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6d, 0x69, 0x73, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x32, 0x50, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x04, - 0x53, 0x63, 0x61, 0x6e, 0x12, 0x1d, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x73, 0x63, 0x61, - 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x73, 0x63, 0x61, 0x6e, - 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x61, 0x71, 0x75, 0x61, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2f, 0x74, - 0x72, 0x69, 0x76, 0x79, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, - 0x3b, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x69, 0x73, + 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x64, + 0x0a, 0x0c, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, + 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x72, 0x69, + 0x76, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4f, 0x53, 0x52, 0x02, 0x6f, 0x73, + 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, + 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0f, 0x76, + 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x54, + 0x0a, 0x11, 0x6d, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x72, 0x69, 0x76, + 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x4d, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x11, 0x6d, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x31, + 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x72, + 0x69, 0x76, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x32, 0x50, 0x0a, 0x07, 0x53, 0x63, + 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x04, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x1d, 0x2e, + 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, + 0x72, 0x69, 0x76, 0x79, 0x2e, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x33, 0x5a, 0x31, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x71, 0x75, 0x61, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2f, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2f, 0x72, 0x70, + 0x63, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3b, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/rpc/scanner/service.proto b/rpc/scanner/service.proto index 7e305a13058..02ddd2d9af8 100644 --- a/rpc/scanner/service.proto +++ b/rpc/scanner/service.proto @@ -17,9 +17,9 @@ message ScanRequest { } message ScanOptions { - repeated string vuln_type = 1; - repeated string security_checks = 2; - bool list_all_packages = 3; + repeated string vuln_type = 1; + repeated string security_checks = 2; + bool list_packages = 3; } message ScanResponse { diff --git a/rpc/scanner/service.twirp.go b/rpc/scanner/service.twirp.go index 69459897461..05138cc20cb 100644 --- a/rpc/scanner/service.twirp.go +++ b/rpc/scanner/service.twirp.go @@ -1091,38 +1091,37 @@ func callClientError(ctx context.Context, h *twirp.ClientHooks, err twirp.Error) } var twirpFileDescriptor0 = []byte{ - // 514 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x53, 0x3d, 0x6f, 0xdb, 0x30, - 0x10, 0x85, 0x6c, 0xc7, 0x1f, 0xa7, 0xa2, 0x76, 0x88, 0xb6, 0x50, 0x92, 0x7e, 0x18, 0x1e, 0x5a, - 0xa3, 0x83, 0x0c, 0x2b, 0x43, 0x87, 0x4e, 0x6d, 0x1a, 0x14, 0x19, 0x8a, 0x04, 0x74, 0xd0, 0xa1, - 0x8b, 0x40, 0x53, 0x8c, 0x43, 0x44, 0x16, 0x15, 0x1e, 0x65, 0xc0, 0x53, 0xff, 0x47, 0xff, 0x5e, - 0xff, 0x48, 0x20, 0x52, 0x0a, 0x22, 0x07, 0x9e, 0xa4, 0x7b, 0xf7, 0x8e, 0x7c, 0xf7, 0x78, 0x07, - 0x47, 0x3a, 0xe7, 0x33, 0xe4, 0x2c, 0xcb, 0x84, 0x9e, 0xa1, 0xd0, 0x1b, 0xc9, 0x45, 0x98, 0x6b, - 0x65, 0x14, 0x19, 0x19, 0x2d, 0x37, 0xdb, 0xb0, 0x4a, 0x86, 0x9b, 0xf9, 0x71, 0x50, 0x92, 0xb9, - 0x5a, 0xaf, 0x55, 0xd6, 0xe4, 0x4e, 0xfe, 0x79, 0xe0, 0x2f, 0x38, 0xcb, 0xa8, 0xb8, 0x2f, 0x04, - 0x1a, 0xf2, 0x06, 0xba, 0x86, 0xe9, 0x95, 0x30, 0x81, 0x37, 0xf6, 0xa6, 0x03, 0x5a, 0x45, 0xe4, - 0x03, 0xf8, 0x4c, 0x1b, 0x79, 0xc3, 0xb8, 0x89, 0x65, 0x12, 0xb4, 0x6c, 0x12, 0x6a, 0xe8, 0x22, - 0x21, 0x47, 0xd0, 0x5f, 0xa6, 0x6a, 0x19, 0xcb, 0x04, 0x83, 0xf6, 0xb8, 0x3d, 0x1d, 0xd0, 0x5e, - 0x19, 0x5f, 0x24, 0x48, 0xbe, 0x40, 0x4f, 0xe5, 0x46, 0xaa, 0x0c, 0x83, 0xce, 0xd8, 0x9b, 0xfa, - 0xd1, 0xbb, 0x70, 0x57, 0x61, 0x58, 0x6a, 0xb8, 0x74, 0x24, 0x5a, 0xb3, 0x27, 0x7f, 0x9d, 0xb6, - 0x0a, 0x27, 0x27, 0x30, 0xd8, 0x14, 0x69, 0x16, 0x9b, 0x6d, 0x2e, 0x02, 0xcf, 0xde, 0xd1, 0x2f, - 0x81, 0xeb, 0x6d, 0x2e, 0xc8, 0x27, 0x18, 0xa2, 0xe0, 0x85, 0x96, 0x66, 0x1b, 0xf3, 0x5b, 0xc1, - 0xef, 0x30, 0x68, 0x59, 0xca, 0xcb, 0x1a, 0x3e, 0xb3, 0x28, 0xf9, 0x0c, 0x87, 0xa9, 0x44, 0x13, - 0xb3, 0x34, 0x8d, 0x73, 0xc6, 0xef, 0xd8, 0x4a, 0x94, 0x8a, 0xbd, 0x69, 0x9f, 0x0e, 0xcb, 0xc4, - 0xb7, 0x34, 0xbd, 0xaa, 0xe0, 0x49, 0x02, 0x2f, 0x9c, 0x39, 0x98, 0xab, 0x0c, 0x05, 0x19, 0x43, - 0x4b, 0xa1, 0x75, 0xc6, 0x8f, 0x46, 0x55, 0x13, 0xce, 0xd6, 0xf0, 0x72, 0x41, 0x5b, 0x0a, 0x49, - 0x04, 0x3d, 0x2d, 0xb0, 0x48, 0x8d, 0x73, 0xc1, 0x8f, 0x82, 0xe7, 0xbd, 0x52, 0x4b, 0xa0, 0x35, - 0x71, 0xf2, 0xbf, 0x05, 0x5d, 0x87, 0xed, 0xb5, 0xff, 0x1c, 0x86, 0x65, 0xa7, 0x42, 0xb3, 0xa5, - 0x4c, 0xa5, 0x91, 0xc2, 0x75, 0xe7, 0x47, 0x27, 0x4d, 0x15, 0xbf, 0x9f, 0x90, 0xb6, 0x74, 0xb7, - 0x86, 0x5c, 0xc3, 0xe1, 0x5a, 0x22, 0x57, 0xd9, 0x8d, 0x5c, 0x15, 0x9a, 0xd5, 0x6f, 0x52, 0x1e, - 0xf4, 0xb1, 0x79, 0xd0, 0x0f, 0x61, 0x04, 0x37, 0x22, 0xf9, 0xb5, 0x43, 0xa7, 0xcf, 0x0f, 0x20, - 0xaf, 0xe0, 0x80, 0xa7, 0x0c, 0x31, 0xe8, 0x5a, 0xcd, 0x2e, 0x20, 0x04, 0x3a, 0xf6, 0xa1, 0xda, - 0x16, 0xb4, 0xff, 0x64, 0x0e, 0xfd, 0x47, 0xcb, 0x0f, 0xec, 0xb5, 0xaf, 0x9b, 0xd7, 0x56, 0xce, - 0xd3, 0x47, 0x1a, 0xf9, 0x09, 0x23, 0x5e, 0xa0, 0x51, 0xeb, 0x58, 0x0b, 0x54, 0x85, 0xe6, 0x02, - 0x83, 0x9e, 0x2d, 0x7d, 0xdb, 0x2c, 0x3d, 0xb3, 0x2c, 0x5a, 0x91, 0xe8, 0x90, 0x37, 0x62, 0x8c, - 0xae, 0xa0, 0xb7, 0x70, 0x6f, 0x40, 0xce, 0xa1, 0x53, 0xfe, 0x92, 0x3d, 0x73, 0x58, 0xed, 0xc2, - 0xf1, 0xfb, 0x7d, 0x69, 0x37, 0x0d, 0xdf, 0x4f, 0xff, 0xcc, 0x57, 0xd2, 0xdc, 0x16, 0xcb, 0x52, - 0xc2, 0x8c, 0xdd, 0x17, 0xac, 0x1e, 0xb5, 0x99, 0x2d, 0x9c, 0x3d, 0x59, 0xd1, 0xaf, 0xd5, 0x77, - 0xd9, 0xb5, 0x7b, 0x77, 0xfa, 0x10, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x5b, 0x27, 0x32, 0xc0, 0x03, - 0x00, 0x00, + // 508 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x93, 0xbd, 0x6e, 0xdb, 0x30, + 0x10, 0xc7, 0x21, 0xdb, 0xf1, 0xc7, 0x29, 0xad, 0x5d, 0xa2, 0x2d, 0x94, 0xa4, 0x1f, 0x86, 0x0b, + 0xb4, 0x9e, 0x64, 0x58, 0x19, 0x3a, 0x74, 0x6b, 0x1a, 0x14, 0x19, 0x8a, 0x04, 0x74, 0xd0, 0xa1, + 0x8b, 0x40, 0x53, 0x8c, 0x43, 0x44, 0x16, 0x15, 0x1e, 0x65, 0xd4, 0xaf, 0xd2, 0xd7, 0xeb, 0x8b, + 0x04, 0x22, 0xa5, 0x20, 0x72, 0xe0, 0x49, 0xba, 0x3f, 0x7f, 0x47, 0xfe, 0xef, 0xc8, 0x83, 0x23, + 0x9d, 0xf3, 0x19, 0x72, 0x96, 0x65, 0x42, 0xcf, 0x50, 0xe8, 0x8d, 0xe4, 0x22, 0xcc, 0xb5, 0x32, + 0x8a, 0x8c, 0x8c, 0x96, 0x9b, 0x6d, 0x58, 0x2d, 0x86, 0x9b, 0xf9, 0x71, 0x50, 0xc2, 0x5c, 0xad, + 0xd7, 0x2a, 0x6b, 0xb2, 0x93, 0x7f, 0x1e, 0xf8, 0x0b, 0xce, 0x32, 0x2a, 0xee, 0x0b, 0x81, 0x86, + 0xbc, 0x85, 0xae, 0x61, 0x7a, 0x25, 0x4c, 0xe0, 0x8d, 0xbd, 0xe9, 0x80, 0x56, 0x11, 0xf9, 0x08, + 0x3e, 0xd3, 0x46, 0xde, 0x30, 0x6e, 0x62, 0x99, 0x04, 0x2d, 0xbb, 0x08, 0xb5, 0x74, 0x91, 0x90, + 0x23, 0xe8, 0x2f, 0x53, 0xb5, 0x8c, 0x65, 0x82, 0x41, 0x7b, 0xdc, 0x9e, 0x0e, 0x68, 0xaf, 0x8c, + 0x2f, 0x12, 0x24, 0x5f, 0xa1, 0xa7, 0x72, 0x23, 0x55, 0x86, 0x41, 0x67, 0xec, 0x4d, 0xfd, 0xe8, + 0x7d, 0xb8, 0xeb, 0x30, 0x2c, 0x3d, 0x5c, 0x3a, 0x88, 0xd6, 0xf4, 0xe4, 0xaf, 0xf3, 0x56, 0xe9, + 0xe4, 0x04, 0x06, 0x9b, 0x22, 0xcd, 0x62, 0xb3, 0xcd, 0x45, 0xe0, 0xd9, 0x33, 0xfa, 0xa5, 0x70, + 0xbd, 0xcd, 0x05, 0xf9, 0x02, 0x43, 0x14, 0xbc, 0xd0, 0xd2, 0x6c, 0x63, 0x7e, 0x2b, 0xf8, 0x1d, + 0x06, 0x2d, 0x8b, 0xbc, 0xac, 0xe5, 0x33, 0xab, 0x92, 0x4f, 0xf0, 0x22, 0x95, 0x68, 0xe2, 0x9c, + 0xf1, 0x3b, 0xb6, 0x12, 0xa5, 0x5b, 0x6f, 0xda, 0xa7, 0x87, 0xa5, 0x78, 0x55, 0x69, 0x93, 0x04, + 0x0e, 0x5d, 0x57, 0x30, 0x57, 0x19, 0x0a, 0x32, 0x86, 0x96, 0x42, 0xdb, 0x12, 0x3f, 0x1a, 0x55, + 0xee, 0x5d, 0x3f, 0xc3, 0xcb, 0x05, 0x6d, 0x29, 0x24, 0x11, 0xf4, 0xb4, 0xc0, 0x22, 0x35, 0xae, + 0x7c, 0x3f, 0x0a, 0x9e, 0x17, 0x49, 0x2d, 0x40, 0x6b, 0x70, 0xf2, 0xbf, 0x05, 0x5d, 0xa7, 0xed, + 0xed, 0xfb, 0x39, 0x0c, 0xcb, 0x12, 0x85, 0x66, 0x4b, 0x99, 0x4a, 0x23, 0x85, 0x2b, 0xcb, 0x8f, + 0x4e, 0x9a, 0x2e, 0x7e, 0x3f, 0x81, 0xb6, 0x74, 0x37, 0x87, 0x5c, 0xc3, 0xab, 0xb5, 0x44, 0xae, + 0xb2, 0x1b, 0xb9, 0x2a, 0x34, 0xab, 0x2f, 0xa3, 0xdc, 0xe8, 0x73, 0x73, 0xa3, 0x1f, 0xc2, 0x08, + 0x6e, 0x44, 0xf2, 0x6b, 0x07, 0xa7, 0xcf, 0x37, 0x20, 0xaf, 0xe1, 0x80, 0xa7, 0x0c, 0x31, 0xe8, + 0x5a, 0xcf, 0x2e, 0x20, 0x04, 0x3a, 0xf6, 0x86, 0xda, 0x56, 0xb4, 0xff, 0x64, 0x0e, 0xfd, 0xc7, + 0x7e, 0x1f, 0xd8, 0x63, 0xdf, 0x34, 0x8f, 0xad, 0x3a, 0x4f, 0x1f, 0x31, 0xf2, 0x13, 0x46, 0xbc, + 0x40, 0xa3, 0xd6, 0xb1, 0x16, 0xa8, 0x0a, 0xcd, 0x05, 0x06, 0x3d, 0x9b, 0xfa, 0xae, 0x99, 0x7a, + 0x66, 0x29, 0x5a, 0x41, 0x74, 0xc8, 0x1b, 0x31, 0x46, 0x57, 0xd0, 0x5b, 0xb8, 0x3b, 0x20, 0xe7, + 0xd0, 0x29, 0x7f, 0xc9, 0x9e, 0x07, 0x58, 0x0d, 0xc1, 0xf1, 0x87, 0x7d, 0xcb, 0xee, 0x35, 0x7c, + 0x3f, 0xfd, 0x33, 0x5f, 0x49, 0x73, 0x5b, 0x2c, 0x4b, 0x0b, 0x33, 0x76, 0x5f, 0xb0, 0xfa, 0x8d, + 0xcd, 0x6c, 0xe2, 0xec, 0xc9, 0x6c, 0x7e, 0xab, 0xbe, 0xcb, 0xae, 0x1d, 0xb8, 0xd3, 0x87, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x05, 0xf1, 0xe6, 0x83, 0xb9, 0x03, 0x00, 0x00, }