From 418029201a96266b25ab8c2d6c17e043fcee670b Mon Sep 17 00:00:00 2001 From: Christoph Hartmann Date: Tue, 31 Oct 2023 10:10:21 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=B9=20remove=20deprecated=20v7=20struc?= =?UTF-8?q?ts=20(#916)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🧹 remove deprecated v7 structs * 🧹 update yac * fix tests --- Makefile | 1 + internal/bundle/bundle.yac.go | 305 +- internal/bundle/bundle_test.go | 20 - internal/bundle/fmt.go | 81 +- internal/bundle/fmt_test.go | 16 +- internal/bundle/yacit/main.go | 8 +- policy/bundle.go | 42 - policy/cnspec_policy.pb.go | 4371 +++++++------------- policy/cnspec_policy.proto | 155 - policy/deprecated_v7.go | 981 ----- policy/deprecated_v7.mql.yaml | 69 - policy/deprecated_v7_test.go | 50 - policy/mquery.go | 151 +- policy/mquery_test.go | 29 +- policy/policy.go | 41 - policy/policy_test.go | 25 +- policy/testdata/policybundle-deps.mql.yaml | 91 +- 17 files changed, 1619 insertions(+), 4817 deletions(-) delete mode 100644 policy/deprecated_v7.go delete mode 100644 policy/deprecated_v7.mql.yaml delete mode 100644 policy/deprecated_v7_test.go diff --git a/Makefile b/Makefile index 374664d2..865ad256 100644 --- a/Makefile +++ b/Makefile @@ -77,6 +77,7 @@ policy/generate: go generate ./policy go generate ./policy/scan go generate ./policy/upstream + go generate ./internal/bundle/yacit upstream/generate: go generate ./upstream diff --git a/internal/bundle/bundle.yac.go b/internal/bundle/bundle.yac.go index 4c3f73b7..4ebe0742 100644 --- a/internal/bundle/bundle.yac.go +++ b/internal/bundle/bundle.yac.go @@ -63,16 +63,14 @@ func (x *Author) UnmarshalYAML(node *yaml.Node) error { } type Bundle struct { - Frameworks []*Framework `protobuf:"bytes,8,rep,name=frameworks,proto3" json:"frameworks,omitempty" yaml:"frameworks,omitempty"` - FrameworkMaps []*FrameworkMap `protobuf:"bytes,9,rep,name=framework_maps,json=frameworkMaps,proto3" json:"framework_maps,omitempty" yaml:"framework_maps,omitempty"` - DeprecatedV7Policies []*DeprecatedV7_Policy `protobuf:"bytes,2,rep,name=deprecated_v7_policies,json=deprecatedV7Policies,proto3" json:"deprecated_v7_policies,omitempty" yaml:"deprecated_v7_policies,omitempty"` - DeprecatedV7Queries []*DeprecatedV7_Mquery `protobuf:"bytes,4,rep,name=deprecated_v7_queries,json=deprecatedV7Queries,proto3" json:"deprecated_v7_queries,omitempty" yaml:"deprecated_v7_queries,omitempty"` - OwnerMrn string `protobuf:"bytes,1,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty" yaml:"owner_mrn,omitempty"` - Policies []*Policy `protobuf:"bytes,7,rep,name=policies,proto3" json:"policies,omitempty" yaml:"policies,omitempty"` - Props []*Property `protobuf:"bytes,3,rep,name=props,proto3" json:"props,omitempty" yaml:"props,omitempty"` - Queries []*Mquery `protobuf:"bytes,6,rep,name=queries,proto3" json:"queries,omitempty" yaml:"queries,omitempty"` - Docs *PolicyDocs `protobuf:"bytes,5,opt,name=docs,proto3" json:"docs,omitempty" yaml:"docs,omitempty"` - FileContext FileContext `json:"-" yaml:"-"` + Frameworks []*Framework `protobuf:"bytes,8,rep,name=frameworks,proto3" json:"frameworks,omitempty" yaml:"frameworks,omitempty"` + FrameworkMaps []*FrameworkMap `protobuf:"bytes,9,rep,name=framework_maps,json=frameworkMaps,proto3" json:"framework_maps,omitempty" yaml:"framework_maps,omitempty"` + OwnerMrn string `protobuf:"bytes,1,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty" yaml:"owner_mrn,omitempty"` + Policies []*Policy `protobuf:"bytes,7,rep,name=policies,proto3" json:"policies,omitempty" yaml:"policies,omitempty"` + Props []*Property `protobuf:"bytes,3,rep,name=props,proto3" json:"props,omitempty" yaml:"props,omitempty"` + Queries []*Mquery `protobuf:"bytes,6,rep,name=queries,proto3" json:"queries,omitempty" yaml:"queries,omitempty"` + Docs *PolicyDocs `protobuf:"bytes,5,opt,name=docs,proto3" json:"docs,omitempty" yaml:"docs,omitempty"` + FileContext FileContext `json:"-" yaml:"-"` } func (x *Bundle) UnmarshalYAML(node *yaml.Node) error { @@ -138,6 +136,7 @@ type ControlMap struct { Policies []*ControlRef `protobuf:"bytes,8,rep,name=policies,proto3" json:"policies,omitempty" yaml:"policies,omitempty"` Checks []*ControlRef `protobuf:"bytes,7,rep,name=checks,proto3" json:"checks,omitempty" yaml:"checks,omitempty"` Controls []*ControlRef `protobuf:"bytes,9,rep,name=controls,proto3" json:"controls,omitempty" yaml:"controls,omitempty"` + Queries []*ControlRef `protobuf:"bytes,10,rep,name=queries,proto3" json:"queries,omitempty" yaml:"queries,omitempty"` FileContext FileContext `json:"-" yaml:"-"` } @@ -174,220 +173,6 @@ func (x *ControlRef) UnmarshalYAML(node *yaml.Node) error { return nil } -type DeprecatedV7_Author struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty" yaml:"email,omitempty"` - FileContext FileContext `json:"-" yaml:"-"` -} - -func (x *DeprecatedV7_Author) UnmarshalYAML(node *yaml.Node) error { - // prevent recursive calls into UnmarshalYAML with a placeholder type - type tmp DeprecatedV7_Author - err := node.Decode((*tmp)(x)) - if err != nil { - return err - } - - x.FileContext.Column = node.Column - x.FileContext.Line = node.Line - return nil -} - -type DeprecatedV7_Bundle struct { - OwnerMrn string `protobuf:"bytes,1,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty" yaml:"owner_mrn,omitempty"` - Policies []*DeprecatedV7_Policy `protobuf:"bytes,2,rep,name=policies,proto3" json:"policies,omitempty" yaml:"policies,omitempty"` - Props []*DeprecatedV7_Mquery `protobuf:"bytes,3,rep,name=props,proto3" json:"props,omitempty" yaml:"props,omitempty"` - Queries []*DeprecatedV7_Mquery `protobuf:"bytes,4,rep,name=queries,proto3" json:"queries,omitempty" yaml:"queries,omitempty"` - Docs *PolicyDocs `protobuf:"bytes,5,opt,name=docs,proto3" json:"docs,omitempty" yaml:"docs,omitempty"` - FileContext FileContext `json:"-" yaml:"-"` -} - -func (x *DeprecatedV7_Bundle) UnmarshalYAML(node *yaml.Node) error { - // prevent recursive calls into UnmarshalYAML with a placeholder type - type tmp DeprecatedV7_Bundle - err := node.Decode((*tmp)(x)) - if err != nil { - return err - } - - x.FileContext.Column = node.Column - x.FileContext.Line = node.Line - return nil -} - -type DeprecatedV7_Mquery struct { - Uid string `protobuf:"bytes,5,opt,name=uid,proto3" json:"uid,omitempty" yaml:"uid,omitempty"` - Mrn string `protobuf:"bytes,4,opt,name=mrn,proto3" json:"mrn,omitempty" yaml:"mrn,omitempty"` - Title string `protobuf:"bytes,20,opt,name=title,proto3" json:"title,omitempty" yaml:"title,omitempty"` - Tags map[string]string `protobuf:"bytes,34,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"tags,omitempty"` - Docs *DeprecatedV7_MqueryDocs `protobuf:"bytes,21,opt,name=docs,proto3" json:"docs,omitempty" yaml:"docs,omitempty"` - Refs []*DeprecatedV7_MqueryRef `protobuf:"bytes,22,rep,name=refs,proto3" json:"refs,omitempty" yaml:"refs,omitempty"` - Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty" yaml:"query,omitempty"` - CodeId string `protobuf:"bytes,2,opt,name=code_id,json=codeId,proto3" json:"code_id,omitempty" yaml:"code_id,omitempty"` - Checksum string `protobuf:"bytes,3,opt,name=checksum,proto3" json:"checksum,omitempty" yaml:"checksum,omitempty"` - Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty" yaml:"type,omitempty"` - Severity *DeprecatedV7_SeverityValue `protobuf:"bytes,19,opt,name=severity,proto3" json:"severity,omitempty" yaml:"severity,omitempty"` - FileContext FileContext `json:"-" yaml:"-"` -} - -func (x *DeprecatedV7_Mquery) UnmarshalYAML(node *yaml.Node) error { - // prevent recursive calls into UnmarshalYAML with a placeholder type - type tmp DeprecatedV7_Mquery - err := node.Decode((*tmp)(x)) - if err != nil { - return err - } - - x.FileContext.Column = node.Column - x.FileContext.Line = node.Line - return nil -} - -type DeprecatedV7_MqueryDocs struct { - Desc string `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty" yaml:"desc,omitempty"` - Audit string `protobuf:"bytes,2,opt,name=audit,proto3" json:"audit,omitempty" yaml:"audit,omitempty"` - Remediation string `protobuf:"bytes,3,opt,name=remediation,proto3" json:"remediation,omitempty" yaml:"remediation,omitempty"` - FileContext FileContext `json:"-" yaml:"-"` -} - -func (x *DeprecatedV7_MqueryDocs) UnmarshalYAML(node *yaml.Node) error { - // prevent recursive calls into UnmarshalYAML with a placeholder type - type tmp DeprecatedV7_MqueryDocs - err := node.Decode((*tmp)(x)) - if err != nil { - return err - } - - x.FileContext.Column = node.Column - x.FileContext.Line = node.Line - return nil -} - -type DeprecatedV7_MqueryRef struct { - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty" yaml:"url,omitempty"` - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title,omitempty"` - FileContext FileContext `json:"-" yaml:"-"` -} - -func (x *DeprecatedV7_MqueryRef) UnmarshalYAML(node *yaml.Node) error { - // prevent recursive calls into UnmarshalYAML with a placeholder type - type tmp DeprecatedV7_MqueryRef - err := node.Decode((*tmp)(x)) - if err != nil { - return err - } - - x.FileContext.Column = node.Column - x.FileContext.Line = node.Line - return nil -} - -type DeprecatedV7_Policy struct { - OwnerMrn string `protobuf:"bytes,8,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty" yaml:"owner_mrn,omitempty"` - Uid string `protobuf:"bytes,36,opt,name=uid,proto3" json:"uid,omitempty" yaml:"uid,omitempty"` - LocalContentChecksum string `protobuf:"bytes,37,opt,name=local_content_checksum,json=localContentChecksum,proto3" json:"local_content_checksum,omitempty" yaml:"local_content_checksum,omitempty"` - GraphContentChecksum string `protobuf:"bytes,38,opt,name=graph_content_checksum,json=graphContentChecksum,proto3" json:"graph_content_checksum,omitempty" yaml:"graph_content_checksum,omitempty"` - LocalExecutionChecksum string `protobuf:"bytes,39,opt,name=local_execution_checksum,json=localExecutionChecksum,proto3" json:"local_execution_checksum,omitempty" yaml:"local_execution_checksum,omitempty"` - GraphExecutionChecksum string `protobuf:"bytes,40,opt,name=graph_execution_checksum,json=graphExecutionChecksum,proto3" json:"graph_execution_checksum,omitempty" yaml:"graph_execution_checksum,omitempty"` - Specs []*DeprecatedV7_PolicySpec `protobuf:"bytes,6,rep,name=specs,proto3" json:"specs,omitempty" yaml:"specs,omitempty"` - AssetFilters map[string]*DeprecatedV7_Mquery `protobuf:"bytes,7,rep,name=asset_filters,json=assetFilters,proto3" json:"asset_filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"asset_filters,omitempty"` - IsPublic bool `protobuf:"varint,9,opt,name=is_public,json=isPublic,proto3" json:"is_public,omitempty" yaml:"is_public,omitempty"` - ScoringSystem explorer.ScoringSystem `protobuf:"varint,10,opt,name=scoring_system,json=scoringSystem,proto3,enum=cnquery.explorer.ScoringSystem" json:"scoring_system,omitempty" yaml:"scoring_system,omitempty"` - Created int64 `protobuf:"varint,32,opt,name=created,proto3" json:"created,omitempty" yaml:"created,omitempty"` - Modified int64 `protobuf:"varint,33,opt,name=modified,proto3" json:"modified,omitempty" yaml:"modified,omitempty"` - QueryCounts *QueryCounts `protobuf:"bytes,42,opt,name=query_counts,json=queryCounts,proto3" json:"query_counts,omitempty" yaml:"query_counts,omitempty"` - Mrn string `protobuf:"bytes,1,opt,name=mrn,proto3" json:"mrn,omitempty" yaml:"mrn,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` - Tags map[string]string `protobuf:"bytes,34,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"tags,omitempty"` - Props map[string]string `protobuf:"bytes,35,rep,name=props,proto3" json:"props,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"props,omitempty"` - Authors []*DeprecatedV7_Author `protobuf:"bytes,30,rep,name=authors,proto3" json:"authors,omitempty" yaml:"authors,omitempty"` - Docs *PolicyDocs `protobuf:"bytes,41,opt,name=docs,proto3" json:"docs,omitempty" yaml:"docs,omitempty"` - FileContext FileContext `json:"-" yaml:"-"` -} - -func (x *DeprecatedV7_Policy) UnmarshalYAML(node *yaml.Node) error { - // prevent recursive calls into UnmarshalYAML with a placeholder type - type tmp DeprecatedV7_Policy - err := node.Decode((*tmp)(x)) - if err != nil { - return err - } - - x.FileContext.Column = node.Column - x.FileContext.Line = node.Line - return nil -} - -type DeprecatedV7_PolicySpec struct { - ScoringQueries map[string]*DeprecatedV7_ScoringSpec `protobuf:"bytes,2,rep,name=scoring_queries,json=scoringQueries,proto3" json:"scoring_queries,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"scoring_queries,omitempty"` - DataQueries map[string]QueryAction `protobuf:"bytes,3,rep,name=data_queries,json=dataQueries,proto3" json:"data_queries,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=cnspec.policy.v1.QueryAction" yaml:"data_queries,omitempty"` - AssetFilter *DeprecatedV7_Mquery `protobuf:"bytes,20,opt,name=asset_filter,json=assetFilter,proto3" json:"asset_filter,omitempty" yaml:"asset_filter,omitempty"` - StartDate int64 `protobuf:"varint,21,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty" yaml:"start_date,omitempty"` - EndDate int64 `protobuf:"varint,22,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty" yaml:"end_date,omitempty"` - ReminderDate int64 `protobuf:"varint,23,opt,name=reminder_date,json=reminderDate,proto3" json:"reminder_date,omitempty" yaml:"reminder_date,omitempty"` - Created int64 `protobuf:"varint,32,opt,name=created,proto3" json:"created,omitempty" yaml:"created,omitempty"` - Modified int64 `protobuf:"varint,33,opt,name=modified,proto3" json:"modified,omitempty" yaml:"modified,omitempty"` - Policies map[string]*DeprecatedV7_ScoringSpec `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"policies,omitempty"` - Title string `protobuf:"bytes,24,opt,name=title,proto3" json:"title,omitempty" yaml:"title,omitempty"` - Docs *PolicyGroupDocs `protobuf:"bytes,25,opt,name=docs,proto3" json:"docs,omitempty" yaml:"docs,omitempty"` - FileContext FileContext `json:"-" yaml:"-"` -} - -func (x *DeprecatedV7_PolicySpec) UnmarshalYAML(node *yaml.Node) error { - // prevent recursive calls into UnmarshalYAML with a placeholder type - type tmp DeprecatedV7_PolicySpec - err := node.Decode((*tmp)(x)) - if err != nil { - return err - } - - x.FileContext.Column = node.Column - x.FileContext.Line = node.Line - return nil -} - -type DeprecatedV7_ScoringSpec struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" yaml:"id,omitempty"` - Weight uint32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty" yaml:"weight,omitempty"` - WeightIsPercentage bool `protobuf:"varint,3,opt,name=weight_is_percentage,json=weightIsPercentage,proto3" json:"weight_is_percentage,omitempty" yaml:"weight_is_percentage,omitempty"` - ScoringSystem explorer.ScoringSystem `protobuf:"varint,4,opt,name=scoring_system,json=scoringSystem,proto3,enum=cnquery.explorer.ScoringSystem" json:"scoring_system,omitempty" yaml:"scoring_system,omitempty"` - Action QueryAction `protobuf:"varint,6,opt,name=action,proto3,enum=cnspec.policy.v1.QueryAction" json:"action,omitempty" yaml:"action,omitempty"` - Severity *DeprecatedV7_SeverityValue `protobuf:"bytes,7,opt,name=severity,proto3" json:"severity,omitempty" yaml:"severity,omitempty"` - FileContext FileContext `json:"-" yaml:"-"` -} - -func (x *DeprecatedV7_ScoringSpec) UnmarshalYAML(node *yaml.Node) error { - // prevent recursive calls into UnmarshalYAML with a placeholder type - type tmp DeprecatedV7_ScoringSpec - err := node.Decode((*tmp)(x)) - if err != nil { - return err - } - - x.FileContext.Column = node.Column - x.FileContext.Line = node.Line - return nil -} - -type DeprecatedV7_SeverityValue struct { - Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty" yaml:"value,omitempty"` - FileContext FileContext `json:"-" yaml:"-"` -} - -func (x *DeprecatedV7_SeverityValue) UnmarshalYAML(node *yaml.Node) error { - // prevent recursive calls into UnmarshalYAML with a placeholder type - type tmp DeprecatedV7_SeverityValue - err := node.Decode((*tmp)(x)) - if err != nil { - return err - } - - x.FileContext.Column = node.Column - x.FileContext.Line = node.Line - return nil -} - type Filters struct { Items map[string]*Mquery `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"items,omitempty"` FileContext FileContext `json:"-" yaml:"-"` @@ -466,6 +251,7 @@ func (x *FrameworkGroup) UnmarshalYAML(node *yaml.Node) error { type FrameworkMap struct { PolicyDependencies []*ObjectRef `protobuf:"bytes,4,rep,name=policy_dependencies,json=policyDependencies,proto3" json:"policy_dependencies,omitempty" yaml:"policy_dependencies,omitempty"` + QueryPackDependencies []*ObjectRef `protobuf:"bytes,6,rep,name=query_pack_dependencies,json=queryPackDependencies,proto3" json:"query_pack_dependencies,omitempty" yaml:"query_pack_dependencies,omitempty"` LocalContentChecksum string `protobuf:"bytes,21,opt,name=local_content_checksum,json=localContentChecksum,proto3" json:"local_content_checksum,omitempty" yaml:"local_content_checksum,omitempty"` LocalExecutionChecksum string `protobuf:"bytes,22,opt,name=local_execution_checksum,json=localExecutionChecksum,proto3" json:"local_execution_checksum,omitempty" yaml:"local_execution_checksum,omitempty"` Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty" yaml:"uid,omitempty"` @@ -652,30 +438,28 @@ func (x *ObjectRef) UnmarshalYAML(node *yaml.Node) error { } type Policy struct { - GraphExecutionChecksum string `protobuf:"bytes,40,opt,name=graph_execution_checksum,json=graphExecutionChecksum,proto3" json:"graph_execution_checksum,omitempty" yaml:"graph_execution_checksum,omitempty"` - ComputedFilters *Filters `protobuf:"bytes,43,opt,name=computed_filters,json=computedFilters,proto3" json:"computed_filters,omitempty" yaml:"computed_filters,omitempty"` - QueryCounts *QueryCounts `protobuf:"bytes,42,opt,name=query_counts,json=queryCounts,proto3" json:"query_counts,omitempty" yaml:"query_counts,omitempty"` - Uid string `protobuf:"bytes,36,opt,name=uid,proto3" json:"uid,omitempty" yaml:"uid,omitempty"` - OwnerMrn string `protobuf:"bytes,8,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty" yaml:"owner_mrn,omitempty"` - Mrn string `protobuf:"bytes,1,opt,name=mrn,proto3" json:"mrn,omitempty" yaml:"mrn,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` - License string `protobuf:"bytes,21,opt,name=license,proto3" json:"license,omitempty" yaml:"license,omitempty"` - Tags map[string]string `protobuf:"bytes,34,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"tags,omitempty"` - Props []*Property `protobuf:"bytes,45,rep,name=props,proto3" json:"props,omitempty" yaml:"props,omitempty"` - Authors []*Author `protobuf:"bytes,30,rep,name=authors,proto3" json:"authors,omitempty" yaml:"authors,omitempty"` - Docs *PolicyDocs `protobuf:"bytes,41,opt,name=docs,proto3" json:"docs,omitempty" yaml:"docs,omitempty"` - Groups []*PolicyGroup `protobuf:"bytes,11,rep,name=groups,proto3" json:"groups,omitempty" yaml:"groups,omitempty"` - Specs []*DeprecatedV7_PolicySpec `protobuf:"bytes,6,rep,name=specs,proto3" json:"specs,omitempty" yaml:"specs,omitempty"` - AssetFilters map[string]*DeprecatedV7_Mquery `protobuf:"bytes,7,rep,name=asset_filters,json=assetFilters,proto3" json:"asset_filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"asset_filters,omitempty"` - Summary string `protobuf:"bytes,46,opt,name=summary,proto3" json:"summary,omitempty" yaml:"summary,omitempty"` - ScoringSystem explorer.ScoringSystem `protobuf:"varint,10,opt,name=scoring_system,json=scoringSystem,proto3,enum=cnquery.explorer.ScoringSystem" json:"scoring_system,omitempty" yaml:"scoring_system,omitempty"` - Created int64 `protobuf:"varint,32,opt,name=created,proto3" json:"created,omitempty" yaml:"created,omitempty"` - Modified int64 `protobuf:"varint,33,opt,name=modified,proto3" json:"modified,omitempty" yaml:"modified,omitempty"` - LocalContentChecksum string `protobuf:"bytes,37,opt,name=local_content_checksum,json=localContentChecksum,proto3" json:"local_content_checksum,omitempty" yaml:"local_content_checksum,omitempty"` - GraphContentChecksum string `protobuf:"bytes,38,opt,name=graph_content_checksum,json=graphContentChecksum,proto3" json:"graph_content_checksum,omitempty" yaml:"graph_content_checksum,omitempty"` - LocalExecutionChecksum string `protobuf:"bytes,39,opt,name=local_execution_checksum,json=localExecutionChecksum,proto3" json:"local_execution_checksum,omitempty" yaml:"local_execution_checksum,omitempty"` - FileContext FileContext `json:"-" yaml:"-"` + Summary string `protobuf:"bytes,46,opt,name=summary,proto3" json:"summary,omitempty" yaml:"summary,omitempty"` + Created int64 `protobuf:"varint,32,opt,name=created,proto3" json:"created,omitempty" yaml:"created,omitempty"` + Modified int64 `protobuf:"varint,33,opt,name=modified,proto3" json:"modified,omitempty" yaml:"modified,omitempty"` + LocalContentChecksum string `protobuf:"bytes,37,opt,name=local_content_checksum,json=localContentChecksum,proto3" json:"local_content_checksum,omitempty" yaml:"local_content_checksum,omitempty"` + GraphContentChecksum string `protobuf:"bytes,38,opt,name=graph_content_checksum,json=graphContentChecksum,proto3" json:"graph_content_checksum,omitempty" yaml:"graph_content_checksum,omitempty"` + LocalExecutionChecksum string `protobuf:"bytes,39,opt,name=local_execution_checksum,json=localExecutionChecksum,proto3" json:"local_execution_checksum,omitempty" yaml:"local_execution_checksum,omitempty"` + GraphExecutionChecksum string `protobuf:"bytes,40,opt,name=graph_execution_checksum,json=graphExecutionChecksum,proto3" json:"graph_execution_checksum,omitempty" yaml:"graph_execution_checksum,omitempty"` + ComputedFilters *Filters `protobuf:"bytes,43,opt,name=computed_filters,json=computedFilters,proto3" json:"computed_filters,omitempty" yaml:"computed_filters,omitempty"` + QueryCounts *QueryCounts `protobuf:"bytes,42,opt,name=query_counts,json=queryCounts,proto3" json:"query_counts,omitempty" yaml:"query_counts,omitempty"` + Uid string `protobuf:"bytes,36,opt,name=uid,proto3" json:"uid,omitempty" yaml:"uid,omitempty"` + OwnerMrn string `protobuf:"bytes,8,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty" yaml:"owner_mrn,omitempty"` + Mrn string `protobuf:"bytes,1,opt,name=mrn,proto3" json:"mrn,omitempty" yaml:"mrn,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" yaml:"name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty" yaml:"version,omitempty"` + License string `protobuf:"bytes,21,opt,name=license,proto3" json:"license,omitempty" yaml:"license,omitempty"` + Tags map[string]string `protobuf:"bytes,34,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" yaml:"tags,omitempty"` + Props []*Property `protobuf:"bytes,45,rep,name=props,proto3" json:"props,omitempty" yaml:"props,omitempty"` + Authors []*Author `protobuf:"bytes,30,rep,name=authors,proto3" json:"authors,omitempty" yaml:"authors,omitempty"` + Docs *PolicyDocs `protobuf:"bytes,41,opt,name=docs,proto3" json:"docs,omitempty" yaml:"docs,omitempty"` + Groups []*PolicyGroup `protobuf:"bytes,11,rep,name=groups,proto3" json:"groups,omitempty" yaml:"groups,omitempty"` + ScoringSystem explorer.ScoringSystem `protobuf:"varint,10,opt,name=scoring_system,json=scoringSystem,proto3,enum=cnquery.explorer.ScoringSystem" json:"scoring_system,omitempty" yaml:"scoring_system,omitempty"` + FileContext FileContext `json:"-" yaml:"-"` } func (x *Policy) UnmarshalYAML(node *yaml.Node) error { @@ -808,31 +592,6 @@ func (x *Property) UnmarshalYAML(node *yaml.Node) error { return nil } -type QueryAction policy.QueryAction - -func (s *QueryAction) UnmarshalYAML(node *yaml.Node) error { - - var decoded interface{} - err := node.Decode(&decoded) - if err != nil { - return err - } - - jsonData, err := json.Marshal(decoded) - if err != nil { - return err - } - - var v policy.QueryAction - err = json.Unmarshal(jsonData, &v) - if err == nil { - *s = QueryAction(v) - return nil - } - - return errors.New("failed to unmarshal QueryAction") -} - type QueryCounts struct { ScoringCount int64 `protobuf:"varint,1,opt,name=scoring_count,json=scoringCount,proto3" json:"scoring_count,omitempty" yaml:"scoring_count,omitempty"` DataCount int64 `protobuf:"varint,2,opt,name=data_count,json=dataCount,proto3" json:"data_count,omitempty" yaml:"data_count,omitempty"` diff --git a/internal/bundle/bundle_test.go b/internal/bundle/bundle_test.go index a09bc532..d018ea0f 100644 --- a/internal/bundle/bundle_test.go +++ b/internal/bundle/bundle_test.go @@ -29,26 +29,6 @@ func TestParser(t *testing.T) { }, baseline.Queries[0].Impact) } -func TestParser_DeprecatedV7(t *testing.T) { - raw, err := os.ReadFile("../../policy/deprecated_v7.mql.yaml") - require.NoError(t, err) - require.NotEmpty(t, raw) - - v8raw, err := DeprecatedV7_ToV8(raw) - require.NoError(t, err) - - baseline, err := ParseYaml(v8raw) - require.NoError(t, err) - assert.NotNil(t, baseline) - assert.Equal(t, 5, len(baseline.Queries)) - assert.Equal(t, &Impact{ - Value: &ImpactValue{ - Value: 30, - }, - FileContext: FileContext{27, 13}, - }, baseline.Queries[0].Impact) -} - func TestRemediationDecoding(t *testing.T) { t.Run("simple remediation text", func(t *testing.T) { desc := "remediation text" diff --git a/internal/bundle/fmt.go b/internal/bundle/fmt.go index 15ef5ff3..111c5af7 100644 --- a/internal/bundle/fmt.go +++ b/internal/bundle/fmt.go @@ -5,7 +5,6 @@ package bundle import ( "bytes" - "encoding/json" "os" "strings" "unicode" @@ -14,7 +13,6 @@ import ( "github.com/rs/zerolog/log" "go.mondoo.com/cnspec/v9/policy" "gopkg.in/yaml.v3" - k8s_yaml "sigs.k8s.io/yaml" ) // Formats the given bundle to a yaml string @@ -60,38 +58,6 @@ func ParseYaml(data []byte) (*Bundle, error) { return &baseline, err } -func DeprecatedV7_ToV8(data []byte) ([]byte, error) { - // In the case of deprecated V7, we are only going to focus on the - // conversion, throwing away everything else, including comments. - // The focus is to get it to v8, none of the other formatting matters in this - // step. - v7baseline := policy.DeprecatedV7_Bundle{} - if err := k8s_yaml.Unmarshal([]byte(data), &v7baseline); err != nil { - return nil, err - } - - v8 := v7baseline.ToV8() - - // this step will unfortunately not produce well-formatted YAML at all - // because the proto structures don't have the yaml tags (only the - // yac-it structures do) ... - // for the same reason we convert between the 2 types using JSON since both - // structs contain the JSON tags. - interim, err := json.Marshal(v8) - if err != nil { - return nil, err - } - - // ... so we have to ping pong convert it a bit ... - v8yaci, err := ParseYaml(interim) - if err != nil { - return nil, err - } - - // ... until we have it where we want it - return Format(v8yaci) -} - // sanitizeStringForYaml is here to help generating literal style yaml strings // if a string has a trailing space in a line, it is automatically converted into quoted style func sanitizeStringForYaml(s string) string { @@ -102,7 +68,6 @@ func sanitizeStringForYaml(s string) string { return strings.Join(lines, "\n") } -// Format formats the .mql.yaml bundle func FormatFile(filename string) error { log.Info().Str("file", filename).Msg("format file") data, err := os.ReadFile(filename) @@ -110,7 +75,25 @@ func FormatFile(filename string) error { return err } + data, err = FormatBundleData(data) + if err != nil { + return err + } + + err = os.WriteFile(filename, data, 0o644) + if err != nil { + return err + } + + return nil +} + +// Format formats the .mql.yaml bundle +func FormatBundleData(data []byte) ([]byte, error) { b, err := ParseYaml(data) + if err != nil { + return nil, err + } // to improve the formatting we need to remove the whitespace at the end of the lines for i := range b.Queries { @@ -142,31 +125,5 @@ func FormatFile(filename string) error { } } - // we have v7 structs in v8 bundle, so it can happen that v7 parses properly - // for that case we need to make sure all the structs are properly converted - if err != nil || hasV7Structs(b) { - data, err = DeprecatedV7_ToV8(data) - } else { - data, err = Format(b) - } - if err != nil { - return err - } - - err = os.WriteFile(filename, data, 0o644) - if err != nil { - return err - } - - return nil -} - -func hasV7Structs(b *Bundle) bool { - for i := range b.Policies { - p := b.Policies[i] - if len(p.Specs) > 0 { - return true - } - } - return false + return Format(b) } diff --git a/internal/bundle/fmt_test.go b/internal/bundle/fmt_test.go index e91cc53a..07ce4fae 100644 --- a/internal/bundle/fmt_test.go +++ b/internal/bundle/fmt_test.go @@ -21,11 +21,10 @@ policies: key: value another-key: another-value name: SSH Server Policy - specs: - - asset_filter: - query: asset.family.contains('unix') - scoring_queries: - query1: + groups: + - filters: asset.family.contains('unix') + checks: + - uid: query1 version: "1.0.0" scoring_system: 2 queries: @@ -37,20 +36,19 @@ queries: Run the "mokutil --sb-state" command and check whether it prints "SecureBoot enabled" remediation: | Enable Secure Boot in your computer's firmware and use a Linux distribution supporting Secure Boot - query: | + mql: | command('mokutil --sb-state').stdout.downcase.contains('secureboot enabled') - severity: 100 + impact: 100 title: Ensure Secure Boot is enabled ` - formatted, err := DeprecatedV7_ToV8([]byte(data)) + formatted, err := FormatBundleData([]byte(data)) require.NoError(t, err) expected := `policies: - uid: sshd-server-policy name: SSH Server Policy version: 1.0.0 - license: unspecified tags: another-key: another-value key: value diff --git a/internal/bundle/yacit/main.go b/internal/bundle/yacit/main.go index 3c6b68e4..fd5e4472 100644 --- a/internal/bundle/yacit/main.go +++ b/internal/bundle/yacit/main.go @@ -48,9 +48,10 @@ func main() { "Authors": 51, - "Docs": 50, - "Refs": 49, - "Groups": 40, + "Docs": 50, + "Refs": 49, + "Groups": 40, + "ScoringSystem": 39, // frameworks "FrameworkOwner": 90, @@ -62,7 +63,6 @@ func main() { }) res.Add(&policy.Bundle{}) - res.Add(&policy.DeprecatedV7_Bundle{}) code := res.String() formatted, err := format.Source([]byte(code)) diff --git a/policy/bundle.go b/policy/bundle.go index da198b88..1975e2a7 100644 --- a/policy/bundle.go +++ b/policy/bundle.go @@ -166,45 +166,7 @@ func aggregateBundles(a *Bundle, b *Bundle) *Bundle { func BundleFromYAML(data []byte) (*Bundle, error) { var res Bundle err := yaml.Unmarshal(data, &res) - - // FIXME: DEPRECATED, remove in v9.0 vv - // first we want to see if this looks like a new Bundle. If it does, just - // return it and we are done. But if it doesn't, then we will try to - // parse it as a v7 bundle instead and see if that works. - if err == nil { - // Only new policies and bundles support logic where you don't have - // any policy in the bundle at all. - if len(res.Policies) == 0 { - return &res, nil - } - - // If the policy as the groups field, then we know it's a new one - for i := range res.Policies { - cur := res.Policies[i] - if cur.Groups != nil { - return &res, nil - } - } - } - - // We either got here because there is an error, or because it may also - // be an old bundle. So let's try to parse it as an old bundle. - var altRes DeprecatedV7_Bundle - altErr := yaml.Unmarshal(data, &altRes) - if altErr == nil && len(altRes.Policies) != 0 { - // we still want to do a sanity check that this is a valid v7 policy - for i := range altRes.Policies { - cur := altRes.Policies[i] - if cur.Specs != nil { - return altRes.ToV8(), nil - } - } - } - - // This is the final fallthrough, where we either have an error or - // it's not a valid v7 policy return &res, err - // ^^ } // ToYAML returns the policy bundle as yaml @@ -612,10 +574,6 @@ func (p *Bundle) Compile(ctx context.Context, schema llx.Schema, library Library ownerMrn = "//local.cnspec.io/run/local-execution" } - // FIXME: DEPRECATED, remove in v9.0 vv - p.DeprecatedV7Conversions() - // ^^ - cache := &bundleCache{ ownerMrn: ownerMrn, bundle: p, diff --git a/policy/cnspec_policy.pb.go b/policy/cnspec_policy.pb.go index 737ea783..7199ce6c 100644 --- a/policy/cnspec_policy.pb.go +++ b/policy/cnspec_policy.pb.go @@ -423,7 +423,7 @@ func (x ReportingJob_Type) Number() protoreflect.EnumNumber { // Deprecated: Use ReportingJob_Type.Descriptor instead. func (ReportingJob_Type) EnumDescriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{33, 0} + return file_cnspec_policy_proto_rawDescGZIP(), []int{24, 0} } type PolicyDelta_PolicyAssignmentActionType int32 @@ -469,7 +469,7 @@ func (x PolicyDelta_PolicyAssignmentActionType) Number() protoreflect.EnumNumber // Deprecated: Use PolicyDelta_PolicyAssignmentActionType.Descriptor instead. func (PolicyDelta_PolicyAssignmentActionType) EnumDescriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{52, 0} + return file_cnspec_policy_proto_rawDescGZIP(), []int{43, 0} } // PolicyGroup specifies and overrides a policy and all its queries and referenced policies. @@ -721,25 +721,21 @@ type Policy struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // FIXME: DEPRECATED, remove in v9.0 vv - // We carry these fields for old services still using the API with this proto. - Specs []*DeprecatedV7_PolicySpec `protobuf:"bytes,6,rep,name=specs,proto3" json:"specs,omitempty"` - AssetFilters map[string]*DeprecatedV7_Mquery `protobuf:"bytes,7,rep,name=asset_filters,json=assetFilters,proto3" json:"asset_filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // key == checksum - Mrn string `protobuf:"bytes,1,opt,name=mrn,proto3" json:"mrn,omitempty"` // will be filled from UID on upload - Uid string `protobuf:"bytes,36,opt,name=uid,proto3" json:"uid,omitempty"` // uid is only used initially, to generate the MRN - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - OwnerMrn string `protobuf:"bytes,8,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty"` - Groups []*PolicyGroup `protobuf:"bytes,11,rep,name=groups,proto3" json:"groups,omitempty"` - License string `protobuf:"bytes,21,opt,name=license,proto3" json:"license,omitempty"` - Docs *PolicyDocs `protobuf:"bytes,41,opt,name=docs,proto3" json:"docs,omitempty"` - Summary string `protobuf:"bytes,46,opt,name=summary,proto3" json:"summary,omitempty"` - ScoringSystem explorer.ScoringSystem `protobuf:"varint,10,opt,name=scoring_system,json=scoringSystem,proto3,enum=cnquery.explorer.ScoringSystem" json:"scoring_system,omitempty"` - Authors []*explorer.Author `protobuf:"bytes,30,rep,name=authors,proto3" json:"authors,omitempty"` - Created int64 `protobuf:"varint,32,opt,name=created,proto3" json:"created,omitempty"` - Modified int64 `protobuf:"varint,33,opt,name=modified,proto3" json:"modified,omitempty"` - Tags map[string]string `protobuf:"bytes,34,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Props []*explorer.Property `protobuf:"bytes,45,rep,name=props,proto3" json:"props,omitempty"` + Mrn string `protobuf:"bytes,1,opt,name=mrn,proto3" json:"mrn,omitempty"` // will be filled from UID on upload + Uid string `protobuf:"bytes,36,opt,name=uid,proto3" json:"uid,omitempty"` // uid is only used initially, to generate the MRN + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + OwnerMrn string `protobuf:"bytes,8,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty"` + Groups []*PolicyGroup `protobuf:"bytes,11,rep,name=groups,proto3" json:"groups,omitempty"` + License string `protobuf:"bytes,21,opt,name=license,proto3" json:"license,omitempty"` + Docs *PolicyDocs `protobuf:"bytes,41,opt,name=docs,proto3" json:"docs,omitempty"` + Summary string `protobuf:"bytes,46,opt,name=summary,proto3" json:"summary,omitempty"` + ScoringSystem explorer.ScoringSystem `protobuf:"varint,10,opt,name=scoring_system,json=scoringSystem,proto3,enum=cnquery.explorer.ScoringSystem" json:"scoring_system,omitempty"` + Authors []*explorer.Author `protobuf:"bytes,30,rep,name=authors,proto3" json:"authors,omitempty"` + Created int64 `protobuf:"varint,32,opt,name=created,proto3" json:"created,omitempty"` + Modified int64 `protobuf:"varint,33,opt,name=modified,proto3" json:"modified,omitempty"` + Tags map[string]string `protobuf:"bytes,34,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Props []*explorer.Property `protobuf:"bytes,45,rep,name=props,proto3" json:"props,omitempty"` // checksums are grouped into: // local... meaning this policy, not policy dependencies // graph... meaning this and all dependent policies @@ -786,20 +782,6 @@ func (*Policy) Descriptor() ([]byte, []int) { return file_cnspec_policy_proto_rawDescGZIP(), []int{2} } -func (x *Policy) GetSpecs() []*DeprecatedV7_PolicySpec { - if x != nil { - return x.Specs - } - return nil -} - -func (x *Policy) GetAssetFilters() map[string]*DeprecatedV7_Mquery { - if x != nil { - return x.AssetFilters - } - return nil -} - func (x *Policy) GetMrn() string { if x != nil { return x.Mrn @@ -952,8 +934,7 @@ type Policies struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DeprecatedV7Items []*DeprecatedV7_Policy `protobuf:"bytes,1,rep,name=deprecated_v7_items,json=deprecatedV7Items,proto3" json:"deprecated_v7_items,omitempty"` - Items []*Policy `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"` + Items []*Policy `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"` } func (x *Policies) Reset() { @@ -988,13 +969,6 @@ func (*Policies) Descriptor() ([]byte, []int) { return file_cnspec_policy_proto_rawDescGZIP(), []int{3} } -func (x *Policies) GetDeprecatedV7Items() []*DeprecatedV7_Policy { - if x != nil { - return x.DeprecatedV7Items - } - return nil -} - func (x *Policies) GetItems() []*Policy { if x != nil { return x.Items @@ -1002,31 +976,18 @@ func (x *Policies) GetItems() []*Policy { return nil } -// FIXME: DEPRECATED, remove in v9.0 vv -// All of these have been replaced as of the policy overhaul -type DeprecatedV7_PolicySpec struct { +type QueryCounts struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Policies map[string]*DeprecatedV7_ScoringSpec `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ScoringQueries map[string]*DeprecatedV7_ScoringSpec `protobuf:"bytes,2,rep,name=scoring_queries,json=scoringQueries,proto3" json:"scoring_queries,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - DataQueries map[string]QueryAction `protobuf:"bytes,3,rep,name=data_queries,json=dataQueries,proto3" json:"data_queries,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=cnspec.policy.v1.QueryAction"` - // filter for the assets this applies to - AssetFilter *DeprecatedV7_Mquery `protobuf:"bytes,20,opt,name=asset_filter,json=assetFilter,proto3" json:"asset_filter,omitempty"` - // the timeline during which this scoring spec is active and reminders will be sent - StartDate int64 `protobuf:"varint,21,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` - EndDate int64 `protobuf:"varint,22,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` - ReminderDate int64 `protobuf:"varint,23,opt,name=reminder_date,json=reminderDate,proto3" json:"reminder_date,omitempty"` - // metadata - Title string `protobuf:"bytes,24,opt,name=title,proto3" json:"title,omitempty"` - Docs *PolicyGroupDocs `protobuf:"bytes,25,opt,name=docs,proto3" json:"docs,omitempty"` - Created int64 `protobuf:"varint,32,opt,name=created,proto3" json:"created,omitempty"` - Modified int64 `protobuf:"varint,33,opt,name=modified,proto3" json:"modified,omitempty"` + ScoringCount int64 `protobuf:"varint,1,opt,name=scoring_count,json=scoringCount,proto3" json:"scoring_count,omitempty"` + DataCount int64 `protobuf:"varint,2,opt,name=data_count,json=dataCount,proto3" json:"data_count,omitempty"` + TotalCount int64 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` } -func (x *DeprecatedV7_PolicySpec) Reset() { - *x = DeprecatedV7_PolicySpec{} +func (x *QueryCounts) Reset() { + *x = QueryCounts{} if protoimpl.UnsafeEnabled { mi := &file_cnspec_policy_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1034,13 +995,13 @@ func (x *DeprecatedV7_PolicySpec) Reset() { } } -func (x *DeprecatedV7_PolicySpec) String() string { +func (x *QueryCounts) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeprecatedV7_PolicySpec) ProtoMessage() {} +func (*QueryCounts) ProtoMessage() {} -func (x *DeprecatedV7_PolicySpec) ProtoReflect() protoreflect.Message { +func (x *QueryCounts) ProtoReflect() protoreflect.Message { mi := &file_cnspec_policy_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1052,840 +1013,63 @@ func (x *DeprecatedV7_PolicySpec) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeprecatedV7_PolicySpec.ProtoReflect.Descriptor instead. -func (*DeprecatedV7_PolicySpec) Descriptor() ([]byte, []int) { +// Deprecated: Use QueryCounts.ProtoReflect.Descriptor instead. +func (*QueryCounts) Descriptor() ([]byte, []int) { return file_cnspec_policy_proto_rawDescGZIP(), []int{4} } -func (x *DeprecatedV7_PolicySpec) GetPolicies() map[string]*DeprecatedV7_ScoringSpec { - if x != nil { - return x.Policies - } - return nil -} - -func (x *DeprecatedV7_PolicySpec) GetScoringQueries() map[string]*DeprecatedV7_ScoringSpec { - if x != nil { - return x.ScoringQueries - } - return nil -} - -func (x *DeprecatedV7_PolicySpec) GetDataQueries() map[string]QueryAction { - if x != nil { - return x.DataQueries - } - return nil -} - -func (x *DeprecatedV7_PolicySpec) GetAssetFilter() *DeprecatedV7_Mquery { - if x != nil { - return x.AssetFilter - } - return nil -} - -func (x *DeprecatedV7_PolicySpec) GetStartDate() int64 { - if x != nil { - return x.StartDate - } - return 0 -} - -func (x *DeprecatedV7_PolicySpec) GetEndDate() int64 { - if x != nil { - return x.EndDate - } - return 0 -} - -func (x *DeprecatedV7_PolicySpec) GetReminderDate() int64 { - if x != nil { - return x.ReminderDate - } - return 0 -} - -func (x *DeprecatedV7_PolicySpec) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *DeprecatedV7_PolicySpec) GetDocs() *PolicyGroupDocs { - if x != nil { - return x.Docs - } - return nil -} - -func (x *DeprecatedV7_PolicySpec) GetCreated() int64 { - if x != nil { - return x.Created - } - return 0 -} - -func (x *DeprecatedV7_PolicySpec) GetModified() int64 { - if x != nil { - return x.Modified - } - return 0 -} - -type DeprecatedV7_Policy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Mrn string `protobuf:"bytes,1,opt,name=mrn,proto3" json:"mrn,omitempty"` // will be filled from UID on upload - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - // checksums are grouped into: - // local... meaning this policy, not policy dependencies - // graph... meaning this and all dependent policies - // content... meaning all the content in the policy, everything there is - // execution... meaning everything that changes the resolved policy - LocalContentChecksum string `protobuf:"bytes,37,opt,name=local_content_checksum,json=localContentChecksum,proto3" json:"local_content_checksum,omitempty"` - GraphContentChecksum string `protobuf:"bytes,38,opt,name=graph_content_checksum,json=graphContentChecksum,proto3" json:"graph_content_checksum,omitempty"` - LocalExecutionChecksum string `protobuf:"bytes,39,opt,name=local_execution_checksum,json=localExecutionChecksum,proto3" json:"local_execution_checksum,omitempty"` - GraphExecutionChecksum string `protobuf:"bytes,40,opt,name=graph_execution_checksum,json=graphExecutionChecksum,proto3" json:"graph_execution_checksum,omitempty"` - Specs []*DeprecatedV7_PolicySpec `protobuf:"bytes,6,rep,name=specs,proto3" json:"specs,omitempty"` - AssetFilters map[string]*DeprecatedV7_Mquery `protobuf:"bytes,7,rep,name=asset_filters,json=assetFilters,proto3" json:"asset_filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // key == checksum - OwnerMrn string `protobuf:"bytes,8,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty"` - IsPublic bool `protobuf:"varint,9,opt,name=is_public,json=isPublic,proto3" json:"is_public,omitempty"` - ScoringSystem explorer.ScoringSystem `protobuf:"varint,10,opt,name=scoring_system,json=scoringSystem,proto3,enum=cnquery.explorer.ScoringSystem" json:"scoring_system,omitempty"` - Authors []*DeprecatedV7_Author `protobuf:"bytes,30,rep,name=authors,proto3" json:"authors,omitempty"` - Created int64 `protobuf:"varint,32,opt,name=created,proto3" json:"created,omitempty"` - Modified int64 `protobuf:"varint,33,opt,name=modified,proto3" json:"modified,omitempty"` - Tags map[string]string `protobuf:"bytes,34,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // mapping query ref => target; target may be empty if not overwriting - Props map[string]string `protobuf:"bytes,35,rep,name=props,proto3" json:"props,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // user-defined uid, which is used to generate the MRN - Uid string `protobuf:"bytes,36,opt,name=uid,proto3" json:"uid,omitempty"` - Docs *PolicyDocs `protobuf:"bytes,41,opt,name=docs,proto3" json:"docs,omitempty"` - QueryCounts *QueryCounts `protobuf:"bytes,42,opt,name=query_counts,json=queryCounts,proto3" json:"query_counts,omitempty"` -} - -func (x *DeprecatedV7_Policy) Reset() { - *x = DeprecatedV7_Policy{} - if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeprecatedV7_Policy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeprecatedV7_Policy) ProtoMessage() {} - -func (x *DeprecatedV7_Policy) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeprecatedV7_Policy.ProtoReflect.Descriptor instead. -func (*DeprecatedV7_Policy) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{5} -} - -func (x *DeprecatedV7_Policy) GetMrn() string { - if x != nil { - return x.Mrn - } - return "" -} - -func (x *DeprecatedV7_Policy) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DeprecatedV7_Policy) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *DeprecatedV7_Policy) GetLocalContentChecksum() string { - if x != nil { - return x.LocalContentChecksum - } - return "" -} - -func (x *DeprecatedV7_Policy) GetGraphContentChecksum() string { - if x != nil { - return x.GraphContentChecksum - } - return "" -} - -func (x *DeprecatedV7_Policy) GetLocalExecutionChecksum() string { - if x != nil { - return x.LocalExecutionChecksum - } - return "" -} - -func (x *DeprecatedV7_Policy) GetGraphExecutionChecksum() string { - if x != nil { - return x.GraphExecutionChecksum - } - return "" -} - -func (x *DeprecatedV7_Policy) GetSpecs() []*DeprecatedV7_PolicySpec { - if x != nil { - return x.Specs - } - return nil -} - -func (x *DeprecatedV7_Policy) GetAssetFilters() map[string]*DeprecatedV7_Mquery { - if x != nil { - return x.AssetFilters - } - return nil -} - -func (x *DeprecatedV7_Policy) GetOwnerMrn() string { - if x != nil { - return x.OwnerMrn - } - return "" -} - -func (x *DeprecatedV7_Policy) GetIsPublic() bool { - if x != nil { - return x.IsPublic - } - return false -} - -func (x *DeprecatedV7_Policy) GetScoringSystem() explorer.ScoringSystem { - if x != nil { - return x.ScoringSystem - } - return explorer.ScoringSystem(0) -} - -func (x *DeprecatedV7_Policy) GetAuthors() []*DeprecatedV7_Author { - if x != nil { - return x.Authors - } - return nil -} - -func (x *DeprecatedV7_Policy) GetCreated() int64 { - if x != nil { - return x.Created - } - return 0 -} - -func (x *DeprecatedV7_Policy) GetModified() int64 { +func (x *QueryCounts) GetScoringCount() int64 { if x != nil { - return x.Modified + return x.ScoringCount } return 0 } -func (x *DeprecatedV7_Policy) GetTags() map[string]string { - if x != nil { - return x.Tags - } - return nil -} - -func (x *DeprecatedV7_Policy) GetProps() map[string]string { - if x != nil { - return x.Props - } - return nil -} - -func (x *DeprecatedV7_Policy) GetUid() string { - if x != nil { - return x.Uid - } - return "" -} - -func (x *DeprecatedV7_Policy) GetDocs() *PolicyDocs { - if x != nil { - return x.Docs - } - return nil -} - -func (x *DeprecatedV7_Policy) GetQueryCounts() *QueryCounts { +func (x *QueryCounts) GetDataCount() int64 { if x != nil { - return x.QueryCounts - } - return nil -} - -type DeprecatedV7_ScoringSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // id of the policy or query, can also be an mrn - // weight: 0 means the result has no weight and will be ignored - // if weight_is_percentage, this value must be in 0 - 100 range - Weight uint32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"` - WeightIsPercentage bool `protobuf:"varint,3,opt,name=weight_is_percentage,json=weightIsPercentage,proto3" json:"weight_is_percentage,omitempty"` - // only ever relevant when multiple scores bubble up into this spec - // the default is average if not specified - ScoringSystem explorer.ScoringSystem `protobuf:"varint,4,opt,name=scoring_system,json=scoringSystem,proto3,enum=cnquery.explorer.ScoringSystem" json:"scoring_system,omitempty"` - Action QueryAction `protobuf:"varint,6,opt,name=action,proto3,enum=cnspec.policy.v1.QueryAction" json:"action,omitempty"` - Severity *DeprecatedV7_SeverityValue `protobuf:"bytes,7,opt,name=severity,proto3" json:"severity,omitempty"` -} - -func (x *DeprecatedV7_ScoringSpec) Reset() { - *x = DeprecatedV7_ScoringSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeprecatedV7_ScoringSpec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeprecatedV7_ScoringSpec) ProtoMessage() {} - -func (x *DeprecatedV7_ScoringSpec) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeprecatedV7_ScoringSpec.ProtoReflect.Descriptor instead. -func (*DeprecatedV7_ScoringSpec) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{6} -} - -func (x *DeprecatedV7_ScoringSpec) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *DeprecatedV7_ScoringSpec) GetWeight() uint32 { - if x != nil { - return x.Weight - } - return 0 -} - -func (x *DeprecatedV7_ScoringSpec) GetWeightIsPercentage() bool { - if x != nil { - return x.WeightIsPercentage - } - return false -} - -func (x *DeprecatedV7_ScoringSpec) GetScoringSystem() explorer.ScoringSystem { - if x != nil { - return x.ScoringSystem - } - return explorer.ScoringSystem(0) -} - -func (x *DeprecatedV7_ScoringSpec) GetAction() QueryAction { - if x != nil { - return x.Action - } - return QueryAction_UNSPECIFIED -} - -func (x *DeprecatedV7_ScoringSpec) GetSeverity() *DeprecatedV7_SeverityValue { - if x != nil { - return x.Severity - } - return nil -} - -type DeprecatedV7_Bundle struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OwnerMrn string `protobuf:"bytes,1,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty"` - Queries []*DeprecatedV7_Mquery `protobuf:"bytes,4,rep,name=queries,proto3" json:"queries,omitempty"` - Policies []*DeprecatedV7_Policy `protobuf:"bytes,2,rep,name=policies,proto3" json:"policies,omitempty"` - Props []*DeprecatedV7_Mquery `protobuf:"bytes,3,rep,name=props,proto3" json:"props,omitempty"` - Docs *PolicyDocs `protobuf:"bytes,5,opt,name=docs,proto3" json:"docs,omitempty"` -} - -func (x *DeprecatedV7_Bundle) Reset() { - *x = DeprecatedV7_Bundle{} - if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeprecatedV7_Bundle) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeprecatedV7_Bundle) ProtoMessage() {} - -func (x *DeprecatedV7_Bundle) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeprecatedV7_Bundle.ProtoReflect.Descriptor instead. -func (*DeprecatedV7_Bundle) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{7} -} - -func (x *DeprecatedV7_Bundle) GetOwnerMrn() string { - if x != nil { - return x.OwnerMrn - } - return "" -} - -func (x *DeprecatedV7_Bundle) GetQueries() []*DeprecatedV7_Mquery { - if x != nil { - return x.Queries - } - return nil -} - -func (x *DeprecatedV7_Bundle) GetPolicies() []*DeprecatedV7_Policy { - if x != nil { - return x.Policies - } - return nil -} - -func (x *DeprecatedV7_Bundle) GetProps() []*DeprecatedV7_Mquery { - if x != nil { - return x.Props - } - return nil -} - -func (x *DeprecatedV7_Bundle) GetDocs() *PolicyDocs { - if x != nil { - return x.Docs - } - return nil -} - -type DeprecatedV7_Author struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` -} - -func (x *DeprecatedV7_Author) Reset() { - *x = DeprecatedV7_Author{} - if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeprecatedV7_Author) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeprecatedV7_Author) ProtoMessage() {} - -func (x *DeprecatedV7_Author) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeprecatedV7_Author.ProtoReflect.Descriptor instead. -func (*DeprecatedV7_Author) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{8} -} - -func (x *DeprecatedV7_Author) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DeprecatedV7_Author) GetEmail() string { - if x != nil { - return x.Email - } - return "" -} - -type QueryCounts struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScoringCount int64 `protobuf:"varint,1,opt,name=scoring_count,json=scoringCount,proto3" json:"scoring_count,omitempty"` - DataCount int64 `protobuf:"varint,2,opt,name=data_count,json=dataCount,proto3" json:"data_count,omitempty"` - TotalCount int64 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` -} - -func (x *QueryCounts) Reset() { - *x = QueryCounts{} - if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryCounts) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryCounts) ProtoMessage() {} - -func (x *QueryCounts) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QueryCounts.ProtoReflect.Descriptor instead. -func (*QueryCounts) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{9} -} - -func (x *QueryCounts) GetScoringCount() int64 { - if x != nil { - return x.ScoringCount - } - return 0 -} - -func (x *QueryCounts) GetDataCount() int64 { - if x != nil { - return x.DataCount - } - return 0 -} - -func (x *QueryCounts) GetTotalCount() int64 { - if x != nil { - return x.TotalCount - } - return 0 -} - -type Bundle struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OwnerMrn string `protobuf:"bytes,1,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty"` - Policies []*Policy `protobuf:"bytes,7,rep,name=policies,proto3" json:"policies,omitempty"` - Props []*explorer.Property `protobuf:"bytes,3,rep,name=props,proto3" json:"props,omitempty"` - Queries []*explorer.Mquery `protobuf:"bytes,6,rep,name=queries,proto3" json:"queries,omitempty"` - Frameworks []*Framework `protobuf:"bytes,8,rep,name=frameworks,proto3" json:"frameworks,omitempty"` - FrameworkMaps []*FrameworkMap `protobuf:"bytes,9,rep,name=framework_maps,json=frameworkMaps,proto3" json:"framework_maps,omitempty"` - Docs *PolicyDocs `protobuf:"bytes,5,opt,name=docs,proto3" json:"docs,omitempty"` - // FIXME: DEPRECATED, remove in v9.0 vv - // This is replaced by queries using cnquery structures - DeprecatedV7Policies []*DeprecatedV7_Policy `protobuf:"bytes,2,rep,name=deprecated_v7_policies,json=deprecatedV7Policies,proto3" json:"deprecated_v7_policies,omitempty"` - // We left props largely unchanged, because it only used 2 fields from the - // Mquery message: uid and query (#5 and #1). Internally it used - // code_id, checksum and mrn (#2, #3, #4). These have been kept consistent - // between all protos and messages. - DeprecatedV7Queries []*DeprecatedV7_Mquery `protobuf:"bytes,4,rep,name=deprecated_v7_queries,json=deprecatedV7Queries,proto3" json:"deprecated_v7_queries,omitempty"` // ^^ -} - -func (x *Bundle) Reset() { - *x = Bundle{} - if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Bundle) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Bundle) ProtoMessage() {} - -func (x *Bundle) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Bundle.ProtoReflect.Descriptor instead. -func (*Bundle) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{10} -} - -func (x *Bundle) GetOwnerMrn() string { - if x != nil { - return x.OwnerMrn - } - return "" -} - -func (x *Bundle) GetPolicies() []*Policy { - if x != nil { - return x.Policies - } - return nil -} - -func (x *Bundle) GetProps() []*explorer.Property { - if x != nil { - return x.Props - } - return nil -} - -func (x *Bundle) GetQueries() []*explorer.Mquery { - if x != nil { - return x.Queries - } - return nil -} - -func (x *Bundle) GetFrameworks() []*Framework { - if x != nil { - return x.Frameworks - } - return nil -} - -func (x *Bundle) GetFrameworkMaps() []*FrameworkMap { - if x != nil { - return x.FrameworkMaps - } - return nil -} - -func (x *Bundle) GetDocs() *PolicyDocs { - if x != nil { - return x.Docs - } - return nil -} - -func (x *Bundle) GetDeprecatedV7Policies() []*DeprecatedV7_Policy { - if x != nil { - return x.DeprecatedV7Policies - } - return nil -} - -func (x *Bundle) GetDeprecatedV7Queries() []*DeprecatedV7_Mquery { - if x != nil { - return x.DeprecatedV7Queries - } - return nil -} - -type PolicyGroupDocs struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Desc string `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"` - Justification string `protobuf:"bytes,2,opt,name=justification,proto3" json:"justification,omitempty"` -} - -func (x *PolicyGroupDocs) Reset() { - *x = PolicyGroupDocs{} - if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PolicyGroupDocs) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PolicyGroupDocs) ProtoMessage() {} - -func (x *PolicyGroupDocs) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PolicyGroupDocs.ProtoReflect.Descriptor instead. -func (*PolicyGroupDocs) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{11} -} - -func (x *PolicyGroupDocs) GetDesc() string { - if x != nil { - return x.Desc - } - return "" -} - -func (x *PolicyGroupDocs) GetJustification() string { - if x != nil { - return x.Justification - } - return "" -} - -type PolicyDocs struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Desc string `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"` -} - -func (x *PolicyDocs) Reset() { - *x = PolicyDocs{} - if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PolicyDocs) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PolicyDocs) ProtoMessage() {} - -func (x *PolicyDocs) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PolicyDocs.ProtoReflect.Descriptor instead. -func (*PolicyDocs) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{12} + return x.DataCount + } + return 0 } -func (x *PolicyDocs) GetDesc() string { +func (x *QueryCounts) GetTotalCount() int64 { if x != nil { - return x.Desc + return x.TotalCount } - return "" + return 0 } -// FIXME: DEPRECATED, remove in v9.0 vv -// This is moving entirely to cnquery's Mquery object. -type DeprecatedV7_Mquery struct { +type Bundle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` - CodeId string `protobuf:"bytes,2,opt,name=code_id,json=codeId,proto3" json:"code_id,omitempty"` - Checksum string `protobuf:"bytes,3,opt,name=checksum,proto3" json:"checksum,omitempty"` - Mrn string `protobuf:"bytes,4,opt,name=mrn,proto3" json:"mrn,omitempty"` - // UID is only needed on Mquery upload, when the MRN is computed. - // It is not be persisted. - Uid string `protobuf:"bytes,5,opt,name=uid,proto3" json:"uid,omitempty"` - Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` - Severity *DeprecatedV7_SeverityValue `protobuf:"bytes,19,opt,name=severity,proto3" json:"severity,omitempty"` - Title string `protobuf:"bytes,20,opt,name=title,proto3" json:"title,omitempty"` - Docs *DeprecatedV7_MqueryDocs `protobuf:"bytes,21,opt,name=docs,proto3" json:"docs,omitempty"` - Refs []*DeprecatedV7_MqueryRef `protobuf:"bytes,22,rep,name=refs,proto3" json:"refs,omitempty"` - Tags map[string]string `protobuf:"bytes,34,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + OwnerMrn string `protobuf:"bytes,1,opt,name=owner_mrn,json=ownerMrn,proto3" json:"owner_mrn,omitempty"` + Policies []*Policy `protobuf:"bytes,7,rep,name=policies,proto3" json:"policies,omitempty"` + Props []*explorer.Property `protobuf:"bytes,3,rep,name=props,proto3" json:"props,omitempty"` + Queries []*explorer.Mquery `protobuf:"bytes,6,rep,name=queries,proto3" json:"queries,omitempty"` + Frameworks []*Framework `protobuf:"bytes,8,rep,name=frameworks,proto3" json:"frameworks,omitempty"` + FrameworkMaps []*FrameworkMap `protobuf:"bytes,9,rep,name=framework_maps,json=frameworkMaps,proto3" json:"framework_maps,omitempty"` + Docs *PolicyDocs `protobuf:"bytes,5,opt,name=docs,proto3" json:"docs,omitempty"` } -func (x *DeprecatedV7_Mquery) Reset() { - *x = DeprecatedV7_Mquery{} +func (x *Bundle) Reset() { + *x = Bundle{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[13] + mi := &file_cnspec_policy_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeprecatedV7_Mquery) String() string { +func (x *Bundle) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeprecatedV7_Mquery) ProtoMessage() {} +func (*Bundle) ProtoMessage() {} -func (x *DeprecatedV7_Mquery) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[13] +func (x *Bundle) ProtoReflect() protoreflect.Message { + mi := &file_cnspec_policy_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1896,162 +1080,86 @@ func (x *DeprecatedV7_Mquery) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeprecatedV7_Mquery.ProtoReflect.Descriptor instead. -func (*DeprecatedV7_Mquery) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{13} -} - -func (x *DeprecatedV7_Mquery) GetQuery() string { - if x != nil { - return x.Query - } - return "" -} - -func (x *DeprecatedV7_Mquery) GetCodeId() string { - if x != nil { - return x.CodeId - } - return "" -} - -func (x *DeprecatedV7_Mquery) GetChecksum() string { - if x != nil { - return x.Checksum - } - return "" -} - -func (x *DeprecatedV7_Mquery) GetMrn() string { - if x != nil { - return x.Mrn - } - return "" -} - -func (x *DeprecatedV7_Mquery) GetUid() string { - if x != nil { - return x.Uid - } - return "" +// Deprecated: Use Bundle.ProtoReflect.Descriptor instead. +func (*Bundle) Descriptor() ([]byte, []int) { + return file_cnspec_policy_proto_rawDescGZIP(), []int{5} } -func (x *DeprecatedV7_Mquery) GetType() string { +func (x *Bundle) GetOwnerMrn() string { if x != nil { - return x.Type + return x.OwnerMrn } return "" } -func (x *DeprecatedV7_Mquery) GetSeverity() *DeprecatedV7_SeverityValue { +func (x *Bundle) GetPolicies() []*Policy { if x != nil { - return x.Severity + return x.Policies } return nil } -func (x *DeprecatedV7_Mquery) GetTitle() string { +func (x *Bundle) GetProps() []*explorer.Property { if x != nil { - return x.Title + return x.Props } - return "" + return nil } -func (x *DeprecatedV7_Mquery) GetDocs() *DeprecatedV7_MqueryDocs { +func (x *Bundle) GetQueries() []*explorer.Mquery { if x != nil { - return x.Docs + return x.Queries } return nil } -func (x *DeprecatedV7_Mquery) GetRefs() []*DeprecatedV7_MqueryRef { +func (x *Bundle) GetFrameworks() []*Framework { if x != nil { - return x.Refs + return x.Frameworks } return nil } -func (x *DeprecatedV7_Mquery) GetTags() map[string]string { +func (x *Bundle) GetFrameworkMaps() []*FrameworkMap { if x != nil { - return x.Tags + return x.FrameworkMaps } return nil } -type DeprecatedV7_SeverityValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *DeprecatedV7_SeverityValue) Reset() { - *x = DeprecatedV7_SeverityValue{} - if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeprecatedV7_SeverityValue) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeprecatedV7_SeverityValue) ProtoMessage() {} - -func (x *DeprecatedV7_SeverityValue) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeprecatedV7_SeverityValue.ProtoReflect.Descriptor instead. -func (*DeprecatedV7_SeverityValue) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{14} -} - -func (x *DeprecatedV7_SeverityValue) GetValue() int64 { +func (x *Bundle) GetDocs() *PolicyDocs { if x != nil { - return x.Value + return x.Docs } - return 0 + return nil } -type DeprecatedV7_MqueryDocs struct { +type PolicyGroupDocs struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Desc string `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"` - Audit string `protobuf:"bytes,2,opt,name=audit,proto3" json:"audit,omitempty"` - Remediation string `protobuf:"bytes,3,opt,name=remediation,proto3" json:"remediation,omitempty"` + Desc string `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"` + Justification string `protobuf:"bytes,2,opt,name=justification,proto3" json:"justification,omitempty"` } -func (x *DeprecatedV7_MqueryDocs) Reset() { - *x = DeprecatedV7_MqueryDocs{} +func (x *PolicyGroupDocs) Reset() { + *x = PolicyGroupDocs{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[15] + mi := &file_cnspec_policy_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeprecatedV7_MqueryDocs) String() string { +func (x *PolicyGroupDocs) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeprecatedV7_MqueryDocs) ProtoMessage() {} +func (*PolicyGroupDocs) ProtoMessage() {} -func (x *DeprecatedV7_MqueryDocs) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[15] +func (x *PolicyGroupDocs) ProtoReflect() protoreflect.Message { + mi := &file_cnspec_policy_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2062,58 +1170,50 @@ func (x *DeprecatedV7_MqueryDocs) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeprecatedV7_MqueryDocs.ProtoReflect.Descriptor instead. -func (*DeprecatedV7_MqueryDocs) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{15} +// Deprecated: Use PolicyGroupDocs.ProtoReflect.Descriptor instead. +func (*PolicyGroupDocs) Descriptor() ([]byte, []int) { + return file_cnspec_policy_proto_rawDescGZIP(), []int{6} } -func (x *DeprecatedV7_MqueryDocs) GetDesc() string { +func (x *PolicyGroupDocs) GetDesc() string { if x != nil { return x.Desc } return "" } -func (x *DeprecatedV7_MqueryDocs) GetAudit() string { - if x != nil { - return x.Audit - } - return "" -} - -func (x *DeprecatedV7_MqueryDocs) GetRemediation() string { +func (x *PolicyGroupDocs) GetJustification() string { if x != nil { - return x.Remediation + return x.Justification } return "" } -type DeprecatedV7_MqueryRef struct { +type PolicyDocs struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + Desc string `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"` } -func (x *DeprecatedV7_MqueryRef) Reset() { - *x = DeprecatedV7_MqueryRef{} +func (x *PolicyDocs) Reset() { + *x = PolicyDocs{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[16] + mi := &file_cnspec_policy_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeprecatedV7_MqueryRef) String() string { +func (x *PolicyDocs) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeprecatedV7_MqueryRef) ProtoMessage() {} +func (*PolicyDocs) ProtoMessage() {} -func (x *DeprecatedV7_MqueryRef) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[16] +func (x *PolicyDocs) ProtoReflect() protoreflect.Message { + mi := &file_cnspec_policy_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2124,21 +1224,14 @@ func (x *DeprecatedV7_MqueryRef) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeprecatedV7_MqueryRef.ProtoReflect.Descriptor instead. -func (*DeprecatedV7_MqueryRef) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{16} -} - -func (x *DeprecatedV7_MqueryRef) GetTitle() string { - if x != nil { - return x.Title - } - return "" +// Deprecated: Use PolicyDocs.ProtoReflect.Descriptor instead. +func (*PolicyDocs) Descriptor() ([]byte, []int) { + return file_cnspec_policy_proto_rawDescGZIP(), []int{7} } -func (x *DeprecatedV7_MqueryRef) GetUrl() string { +func (x *PolicyDocs) GetDesc() string { if x != nil { - return x.Url + return x.Desc } return "" } @@ -2182,7 +1275,7 @@ type Framework struct { func (x *Framework) Reset() { *x = Framework{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[17] + mi := &file_cnspec_policy_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2195,7 +1288,7 @@ func (x *Framework) String() string { func (*Framework) ProtoMessage() {} func (x *Framework) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[17] + mi := &file_cnspec_policy_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2208,7 +1301,7 @@ func (x *Framework) ProtoReflect() protoreflect.Message { // Deprecated: Use Framework.ProtoReflect.Descriptor instead. func (*Framework) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{17} + return file_cnspec_policy_proto_rawDescGZIP(), []int{8} } func (x *Framework) GetMrn() string { @@ -2355,7 +1448,7 @@ type Frameworks struct { func (x *Frameworks) Reset() { *x = Frameworks{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[18] + mi := &file_cnspec_policy_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2368,7 +1461,7 @@ func (x *Frameworks) String() string { func (*Frameworks) ProtoMessage() {} func (x *Frameworks) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[18] + mi := &file_cnspec_policy_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2381,7 +1474,7 @@ func (x *Frameworks) ProtoReflect() protoreflect.Message { // Deprecated: Use Frameworks.ProtoReflect.Descriptor instead. func (*Frameworks) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{18} + return file_cnspec_policy_proto_rawDescGZIP(), []int{9} } func (x *Frameworks) GetItems() []*Framework { @@ -2421,7 +1514,7 @@ type FrameworkGroup struct { func (x *FrameworkGroup) Reset() { *x = FrameworkGroup{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[19] + mi := &file_cnspec_policy_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2434,7 +1527,7 @@ func (x *FrameworkGroup) String() string { func (*FrameworkGroup) ProtoMessage() {} func (x *FrameworkGroup) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[19] + mi := &file_cnspec_policy_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2447,7 +1540,7 @@ func (x *FrameworkGroup) ProtoReflect() protoreflect.Message { // Deprecated: Use FrameworkGroup.ProtoReflect.Descriptor instead. func (*FrameworkGroup) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{19} + return file_cnspec_policy_proto_rawDescGZIP(), []int{10} } func (x *FrameworkGroup) GetControls() []*Control { @@ -2554,7 +1647,7 @@ type FrameworkRef struct { func (x *FrameworkRef) Reset() { *x = FrameworkRef{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[20] + mi := &file_cnspec_policy_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2567,7 +1660,7 @@ func (x *FrameworkRef) String() string { func (*FrameworkRef) ProtoMessage() {} func (x *FrameworkRef) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[20] + mi := &file_cnspec_policy_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2580,7 +1673,7 @@ func (x *FrameworkRef) ProtoReflect() protoreflect.Message { // Deprecated: Use FrameworkRef.ProtoReflect.Descriptor instead. func (*FrameworkRef) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{20} + return file_cnspec_policy_proto_rawDescGZIP(), []int{11} } func (x *FrameworkRef) GetMrn() string { @@ -2625,7 +1718,7 @@ type Control struct { func (x *Control) Reset() { *x = Control{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[21] + mi := &file_cnspec_policy_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2638,7 +1731,7 @@ func (x *Control) String() string { func (*Control) ProtoMessage() {} func (x *Control) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[21] + mi := &file_cnspec_policy_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2651,7 +1744,7 @@ func (x *Control) ProtoReflect() protoreflect.Message { // Deprecated: Use Control.ProtoReflect.Descriptor instead. func (*Control) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{21} + return file_cnspec_policy_proto_rawDescGZIP(), []int{12} } func (x *Control) GetChecksum() string { @@ -2729,7 +1822,7 @@ type FrameworkMap struct { func (x *FrameworkMap) Reset() { *x = FrameworkMap{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[22] + mi := &file_cnspec_policy_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2742,7 +1835,7 @@ func (x *FrameworkMap) String() string { func (*FrameworkMap) ProtoMessage() {} func (x *FrameworkMap) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[22] + mi := &file_cnspec_policy_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2755,7 +1848,7 @@ func (x *FrameworkMap) ProtoReflect() protoreflect.Message { // Deprecated: Use FrameworkMap.ProtoReflect.Descriptor instead. func (*FrameworkMap) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{22} + return file_cnspec_policy_proto_rawDescGZIP(), []int{13} } func (x *FrameworkMap) GetMrn() string { @@ -2837,7 +1930,7 @@ type ControlMap struct { func (x *ControlMap) Reset() { *x = ControlMap{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[23] + mi := &file_cnspec_policy_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2850,7 +1943,7 @@ func (x *ControlMap) String() string { func (*ControlMap) ProtoMessage() {} func (x *ControlMap) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[23] + mi := &file_cnspec_policy_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2863,7 +1956,7 @@ func (x *ControlMap) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlMap.ProtoReflect.Descriptor instead. func (*ControlMap) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{23} + return file_cnspec_policy_proto_rawDescGZIP(), []int{14} } func (x *ControlMap) GetUid() string { @@ -2920,7 +2013,7 @@ type ControlDocs struct { func (x *ControlDocs) Reset() { *x = ControlDocs{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[24] + mi := &file_cnspec_policy_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2933,7 +2026,7 @@ func (x *ControlDocs) String() string { func (*ControlDocs) ProtoMessage() {} func (x *ControlDocs) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[24] + mi := &file_cnspec_policy_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2946,7 +2039,7 @@ func (x *ControlDocs) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlDocs.ProtoReflect.Descriptor instead. func (*ControlDocs) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{24} + return file_cnspec_policy_proto_rawDescGZIP(), []int{15} } func (x *ControlDocs) GetDesc() string { @@ -2976,7 +2069,7 @@ type ControlRef struct { func (x *ControlRef) Reset() { *x = ControlRef{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[25] + mi := &file_cnspec_policy_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2989,7 +2082,7 @@ func (x *ControlRef) String() string { func (*ControlRef) ProtoMessage() {} func (x *ControlRef) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[25] + mi := &file_cnspec_policy_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3002,7 +2095,7 @@ func (x *ControlRef) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlRef.ProtoReflect.Descriptor instead. func (*ControlRef) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{25} + return file_cnspec_policy_proto_rawDescGZIP(), []int{16} } func (x *ControlRef) GetMrn() string { @@ -3041,7 +2134,7 @@ type Asset struct { func (x *Asset) Reset() { *x = Asset{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[26] + mi := &file_cnspec_policy_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3054,7 +2147,7 @@ func (x *Asset) String() string { func (*Asset) ProtoMessage() {} func (x *Asset) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[26] + mi := &file_cnspec_policy_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3067,7 +2160,7 @@ func (x *Asset) ProtoReflect() protoreflect.Message { // Deprecated: Use Asset.ProtoReflect.Descriptor instead. func (*Asset) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{26} + return file_cnspec_policy_proto_rawDescGZIP(), []int{17} } func (x *Asset) GetMrn() string { @@ -3106,21 +2199,18 @@ type ResolvedPolicy struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // FIXME: DEPRECATED, remove in v9.0 vv - // Replaced by the new Mquery version - DeprecatedV7Filters []*DeprecatedV7_Mquery `protobuf:"bytes,4,rep,name=deprecated_v7_filters,json=deprecatedV7Filters,proto3" json:"deprecated_v7_filters,omitempty"` // ^^ - ExecutionJob *ExecutionJob `protobuf:"bytes,2,opt,name=execution_job,json=executionJob,proto3" json:"execution_job,omitempty"` - CollectorJob *CollectorJob `protobuf:"bytes,3,opt,name=collector_job,json=collectorJob,proto3" json:"collector_job,omitempty"` - Filters []*explorer.Mquery `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"` - GraphExecutionChecksum string `protobuf:"bytes,7,opt,name=graph_execution_checksum,json=graphExecutionChecksum,proto3" json:"graph_execution_checksum,omitempty"` - FiltersChecksum string `protobuf:"bytes,20,opt,name=filters_checksum,json=filtersChecksum,proto3" json:"filters_checksum,omitempty"` - ReportingJobUuid string `protobuf:"bytes,21,opt,name=reporting_job_uuid,json=reportingJobUuid,proto3" json:"reporting_job_uuid,omitempty"` + ExecutionJob *ExecutionJob `protobuf:"bytes,2,opt,name=execution_job,json=executionJob,proto3" json:"execution_job,omitempty"` + CollectorJob *CollectorJob `protobuf:"bytes,3,opt,name=collector_job,json=collectorJob,proto3" json:"collector_job,omitempty"` + Filters []*explorer.Mquery `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"` + GraphExecutionChecksum string `protobuf:"bytes,7,opt,name=graph_execution_checksum,json=graphExecutionChecksum,proto3" json:"graph_execution_checksum,omitempty"` + FiltersChecksum string `protobuf:"bytes,20,opt,name=filters_checksum,json=filtersChecksum,proto3" json:"filters_checksum,omitempty"` + ReportingJobUuid string `protobuf:"bytes,21,opt,name=reporting_job_uuid,json=reportingJobUuid,proto3" json:"reporting_job_uuid,omitempty"` } func (x *ResolvedPolicy) Reset() { *x = ResolvedPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[27] + mi := &file_cnspec_policy_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3133,7 +2223,7 @@ func (x *ResolvedPolicy) String() string { func (*ResolvedPolicy) ProtoMessage() {} func (x *ResolvedPolicy) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[27] + mi := &file_cnspec_policy_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3146,14 +2236,7 @@ func (x *ResolvedPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolvedPolicy.ProtoReflect.Descriptor instead. func (*ResolvedPolicy) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{27} -} - -func (x *ResolvedPolicy) GetDeprecatedV7Filters() []*DeprecatedV7_Mquery { - if x != nil { - return x.DeprecatedV7Filters - } - return nil + return file_cnspec_policy_proto_rawDescGZIP(), []int{18} } func (x *ResolvedPolicy) GetExecutionJob() *ExecutionJob { @@ -3215,7 +2298,7 @@ type ExecutionJob struct { func (x *ExecutionJob) Reset() { *x = ExecutionJob{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[28] + mi := &file_cnspec_policy_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3228,7 +2311,7 @@ func (x *ExecutionJob) String() string { func (*ExecutionJob) ProtoMessage() {} func (x *ExecutionJob) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[28] + mi := &file_cnspec_policy_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3241,7 +2324,7 @@ func (x *ExecutionJob) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionJob.ProtoReflect.Descriptor instead. func (*ExecutionJob) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{28} + return file_cnspec_policy_proto_rawDescGZIP(), []int{19} } func (x *ExecutionJob) GetChecksum() string { @@ -3277,7 +2360,7 @@ type ExecutionQuery struct { func (x *ExecutionQuery) Reset() { *x = ExecutionQuery{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[29] + mi := &file_cnspec_policy_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3290,7 +2373,7 @@ func (x *ExecutionQuery) String() string { func (*ExecutionQuery) ProtoMessage() {} func (x *ExecutionQuery) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[29] + mi := &file_cnspec_policy_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3303,7 +2386,7 @@ func (x *ExecutionQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionQuery.ProtoReflect.Descriptor instead. func (*ExecutionQuery) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{29} + return file_cnspec_policy_proto_rawDescGZIP(), []int{20} } func (x *ExecutionQuery) GetQuery() string { @@ -3363,7 +2446,7 @@ type CollectorJob struct { func (x *CollectorJob) Reset() { *x = CollectorJob{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[30] + mi := &file_cnspec_policy_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3376,7 +2459,7 @@ func (x *CollectorJob) String() string { func (*CollectorJob) ProtoMessage() {} func (x *CollectorJob) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[30] + mi := &file_cnspec_policy_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3389,7 +2472,7 @@ func (x *CollectorJob) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectorJob.ProtoReflect.Descriptor instead. func (*CollectorJob) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{30} + return file_cnspec_policy_proto_rawDescGZIP(), []int{21} } func (x *CollectorJob) GetChecksum() string { @@ -3431,7 +2514,7 @@ type StringArray struct { func (x *StringArray) Reset() { *x = StringArray{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[31] + mi := &file_cnspec_policy_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3444,7 +2527,7 @@ func (x *StringArray) String() string { func (*StringArray) ProtoMessage() {} func (x *StringArray) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[31] + mi := &file_cnspec_policy_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3457,7 +2540,7 @@ func (x *StringArray) ProtoReflect() protoreflect.Message { // Deprecated: Use StringArray.ProtoReflect.Descriptor instead. func (*StringArray) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{31} + return file_cnspec_policy_proto_rawDescGZIP(), []int{22} } func (x *StringArray) GetItems() []string { @@ -3479,7 +2562,7 @@ type DataQueryInfo struct { func (x *DataQueryInfo) Reset() { *x = DataQueryInfo{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[32] + mi := &file_cnspec_policy_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3492,7 +2575,7 @@ func (x *DataQueryInfo) String() string { func (*DataQueryInfo) ProtoMessage() {} func (x *DataQueryInfo) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[32] + mi := &file_cnspec_policy_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3505,7 +2588,7 @@ func (x *DataQueryInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use DataQueryInfo.ProtoReflect.Descriptor instead. func (*DataQueryInfo) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{32} + return file_cnspec_policy_proto_rawDescGZIP(), []int{23} } func (x *DataQueryInfo) GetType() string { @@ -3535,10 +2618,6 @@ type ReportingJob struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // FIXME: DEPRECATED, remove in v9.0 vv - // This is replaced by the new spec, which now references cnquery - DeprecatedV7Spec map[string]*DeprecatedV7_ScoringSpec `protobuf:"bytes,4,rep,name=deprecated_v7_spec,json=deprecatedV7Spec,proto3" json:"deprecated_v7_spec,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // ^^ // FIXME: DEPRECATED, remove in v10.0 vv // This is replaced by the new type field, which now carries more info DeprecatedV8IsData bool `protobuf:"varint,8,opt,name=deprecated_v8_is_data,json=deprecatedV8IsData,proto3" json:"deprecated_v8_is_data,omitempty"` // ^^ @@ -3555,7 +2634,7 @@ type ReportingJob struct { func (x *ReportingJob) Reset() { *x = ReportingJob{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[33] + mi := &file_cnspec_policy_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3568,7 +2647,7 @@ func (x *ReportingJob) String() string { func (*ReportingJob) ProtoMessage() {} func (x *ReportingJob) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[33] + mi := &file_cnspec_policy_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3581,14 +2660,7 @@ func (x *ReportingJob) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportingJob.ProtoReflect.Descriptor instead. func (*ReportingJob) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{33} -} - -func (x *ReportingJob) GetDeprecatedV7Spec() map[string]*DeprecatedV7_ScoringSpec { - if x != nil { - return x.DeprecatedV7Spec - } - return nil + return file_cnspec_policy_proto_rawDescGZIP(), []int{24} } func (x *ReportingJob) GetDeprecatedV8IsData() bool { @@ -3678,7 +2750,7 @@ type Report struct { func (x *Report) Reset() { *x = Report{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[34] + mi := &file_cnspec_policy_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3691,7 +2763,7 @@ func (x *Report) String() string { func (*Report) ProtoMessage() {} func (x *Report) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[34] + mi := &file_cnspec_policy_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3704,7 +2776,7 @@ func (x *Report) ProtoReflect() protoreflect.Message { // Deprecated: Use Report.ProtoReflect.Descriptor instead. func (*Report) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{34} + return file_cnspec_policy_proto_rawDescGZIP(), []int{25} } func (x *Report) GetScoringMrn() string { @@ -3816,7 +2888,7 @@ type Reports struct { func (x *Reports) Reset() { *x = Reports{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[35] + mi := &file_cnspec_policy_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3829,7 +2901,7 @@ func (x *Reports) String() string { func (*Reports) ProtoMessage() {} func (x *Reports) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[35] + mi := &file_cnspec_policy_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3842,7 +2914,7 @@ func (x *Reports) ProtoReflect() protoreflect.Message { // Deprecated: Use Reports.ProtoReflect.Descriptor instead. func (*Reports) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{35} + return file_cnspec_policy_proto_rawDescGZIP(), []int{26} } func (x *Reports) GetReports() []*Report { @@ -3867,7 +2939,7 @@ type ReportCollection struct { func (x *ReportCollection) Reset() { *x = ReportCollection{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[36] + mi := &file_cnspec_policy_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3880,7 +2952,7 @@ func (x *ReportCollection) String() string { func (*ReportCollection) ProtoMessage() {} func (x *ReportCollection) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[36] + mi := &file_cnspec_policy_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3893,7 +2965,7 @@ func (x *ReportCollection) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportCollection.ProtoReflect.Descriptor instead. func (*ReportCollection) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{36} + return file_cnspec_policy_proto_rawDescGZIP(), []int{27} } func (x *ReportCollection) GetAssets() map[string]*inventory.Asset { @@ -3945,7 +3017,7 @@ type FrameworkReport struct { func (x *FrameworkReport) Reset() { *x = FrameworkReport{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[37] + mi := &file_cnspec_policy_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3958,7 +3030,7 @@ func (x *FrameworkReport) String() string { func (*FrameworkReport) ProtoMessage() {} func (x *FrameworkReport) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[37] + mi := &file_cnspec_policy_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3971,7 +3043,7 @@ func (x *FrameworkReport) ProtoReflect() protoreflect.Message { // Deprecated: Use FrameworkReport.ProtoReflect.Descriptor instead. func (*FrameworkReport) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{37} + return file_cnspec_policy_proto_rawDescGZIP(), []int{28} } func (x *FrameworkReport) GetScoringMrn() string { @@ -4024,7 +3096,7 @@ type ControlScore struct { func (x *ControlScore) Reset() { *x = ControlScore{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[38] + mi := &file_cnspec_policy_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4037,7 +3109,7 @@ func (x *ControlScore) String() string { func (*ControlScore) ProtoMessage() {} func (x *ControlScore) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[38] + mi := &file_cnspec_policy_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4050,7 +3122,7 @@ func (x *ControlScore) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlScore.ProtoReflect.Descriptor instead. func (*ControlScore) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{38} + return file_cnspec_policy_proto_rawDescGZIP(), []int{29} } func (x *ControlScore) GetMrn() string { @@ -4146,7 +3218,7 @@ type Cvss struct { func (x *Cvss) Reset() { *x = Cvss{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[39] + mi := &file_cnspec_policy_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4159,7 +3231,7 @@ func (x *Cvss) String() string { func (*Cvss) ProtoMessage() {} func (x *Cvss) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[39] + mi := &file_cnspec_policy_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4172,7 +3244,7 @@ func (x *Cvss) ProtoReflect() protoreflect.Message { // Deprecated: Use Cvss.ProtoReflect.Descriptor instead. func (*Cvss) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{39} + return file_cnspec_policy_proto_rawDescGZIP(), []int{30} } func (x *Cvss) GetId() string { @@ -4228,7 +3300,7 @@ type CvssStats struct { func (x *CvssStats) Reset() { *x = CvssStats{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[40] + mi := &file_cnspec_policy_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4241,7 +3313,7 @@ func (x *CvssStats) String() string { func (*CvssStats) ProtoMessage() {} func (x *CvssStats) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[40] + mi := &file_cnspec_policy_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4254,7 +3326,7 @@ func (x *CvssStats) ProtoReflect() protoreflect.Message { // Deprecated: Use CvssStats.ProtoReflect.Descriptor instead. func (*CvssStats) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{40} + return file_cnspec_policy_proto_rawDescGZIP(), []int{31} } func (x *CvssStats) GetTotal() uint32 { @@ -4337,7 +3409,7 @@ type Score struct { func (x *Score) Reset() { *x = Score{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[41] + mi := &file_cnspec_policy_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4350,7 +3422,7 @@ func (x *Score) String() string { func (*Score) ProtoMessage() {} func (x *Score) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[41] + mi := &file_cnspec_policy_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4363,7 +3435,7 @@ func (x *Score) ProtoReflect() protoreflect.Message { // Deprecated: Use Score.ProtoReflect.Descriptor instead. func (*Score) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{41} + return file_cnspec_policy_proto_rawDescGZIP(), []int{32} } func (x *Score) GetQrId() string { @@ -4454,7 +3526,7 @@ type Stats struct { func (x *Stats) Reset() { *x = Stats{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[42] + mi := &file_cnspec_policy_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4467,7 +3539,7 @@ func (x *Stats) String() string { func (*Stats) ProtoMessage() {} func (x *Stats) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[42] + mi := &file_cnspec_policy_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4480,7 +3552,7 @@ func (x *Stats) ProtoReflect() protoreflect.Message { // Deprecated: Use Stats.ProtoReflect.Descriptor instead. func (*Stats) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{42} + return file_cnspec_policy_proto_rawDescGZIP(), []int{33} } func (x *Stats) GetTotal() uint32 { @@ -4557,7 +3629,7 @@ type ScoreDistribution struct { func (x *ScoreDistribution) Reset() { *x = ScoreDistribution{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[43] + mi := &file_cnspec_policy_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4570,7 +3642,7 @@ func (x *ScoreDistribution) String() string { func (*ScoreDistribution) ProtoMessage() {} func (x *ScoreDistribution) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[43] + mi := &file_cnspec_policy_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4583,7 +3655,7 @@ func (x *ScoreDistribution) ProtoReflect() protoreflect.Message { // Deprecated: Use ScoreDistribution.ProtoReflect.Descriptor instead. func (*ScoreDistribution) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{43} + return file_cnspec_policy_proto_rawDescGZIP(), []int{34} } func (x *ScoreDistribution) GetTotal() uint32 { @@ -4651,7 +3723,7 @@ type Empty struct { func (x *Empty) Reset() { *x = Empty{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[44] + mi := &file_cnspec_policy_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4664,7 +3736,7 @@ func (x *Empty) String() string { func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[44] + mi := &file_cnspec_policy_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4677,7 +3749,7 @@ func (x *Empty) ProtoReflect() protoreflect.Message { // Deprecated: Use Empty.ProtoReflect.Descriptor instead. func (*Empty) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{44} + return file_cnspec_policy_proto_rawDescGZIP(), []int{35} } // MRNs are used to uniquely identify resources. They are globally unique. @@ -4692,7 +3764,7 @@ type Mrn struct { func (x *Mrn) Reset() { *x = Mrn{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[45] + mi := &file_cnspec_policy_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4705,7 +3777,7 @@ func (x *Mrn) String() string { func (*Mrn) ProtoMessage() {} func (x *Mrn) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[45] + mi := &file_cnspec_policy_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4718,7 +3790,7 @@ func (x *Mrn) ProtoReflect() protoreflect.Message { // Deprecated: Use Mrn.ProtoReflect.Descriptor instead. func (*Mrn) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{45} + return file_cnspec_policy_proto_rawDescGZIP(), []int{36} } func (x *Mrn) GetMrn() string { @@ -4733,16 +3805,13 @@ type Mqueries struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // FIXME: DEPRECATED, remove in v9.0 vv - // just uses the old datatype and moved to the new one below - DeprecatedV7Items []*DeprecatedV7_Mquery `protobuf:"bytes,1,rep,name=deprecated_v7_items,json=deprecatedV7Items,proto3" json:"deprecated_v7_items,omitempty"` // ^ - Items []*explorer.Mquery `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"` + Items []*explorer.Mquery `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"` } func (x *Mqueries) Reset() { *x = Mqueries{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[46] + mi := &file_cnspec_policy_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4755,7 +3824,7 @@ func (x *Mqueries) String() string { func (*Mqueries) ProtoMessage() {} func (x *Mqueries) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[46] + mi := &file_cnspec_policy_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4768,14 +3837,7 @@ func (x *Mqueries) ProtoReflect() protoreflect.Message { // Deprecated: Use Mqueries.ProtoReflect.Descriptor instead. func (*Mqueries) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{46} -} - -func (x *Mqueries) GetDeprecatedV7Items() []*DeprecatedV7_Mquery { - if x != nil { - return x.DeprecatedV7Items - } - return nil + return file_cnspec_policy_proto_rawDescGZIP(), []int{37} } func (x *Mqueries) GetItems() []*explorer.Mquery { @@ -4797,7 +3859,7 @@ type ListReq struct { func (x *ListReq) Reset() { *x = ListReq{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[47] + mi := &file_cnspec_policy_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4810,7 +3872,7 @@ func (x *ListReq) String() string { func (*ListReq) ProtoMessage() {} func (x *ListReq) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[47] + mi := &file_cnspec_policy_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4823,7 +3885,7 @@ func (x *ListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReq.ProtoReflect.Descriptor instead. func (*ListReq) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{47} + return file_cnspec_policy_proto_rawDescGZIP(), []int{38} } func (x *ListReq) GetOwnerMrn() string { @@ -4855,7 +3917,7 @@ type DefaultPoliciesReq struct { func (x *DefaultPoliciesReq) Reset() { *x = DefaultPoliciesReq{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[48] + mi := &file_cnspec_policy_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4868,7 +3930,7 @@ func (x *DefaultPoliciesReq) String() string { func (*DefaultPoliciesReq) ProtoMessage() {} func (x *DefaultPoliciesReq) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[48] + mi := &file_cnspec_policy_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4881,7 +3943,7 @@ func (x *DefaultPoliciesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DefaultPoliciesReq.ProtoReflect.Descriptor instead. func (*DefaultPoliciesReq) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{48} + return file_cnspec_policy_proto_rawDescGZIP(), []int{39} } func (x *DefaultPoliciesReq) GetKind() string { @@ -4930,7 +3992,7 @@ type URLs struct { func (x *URLs) Reset() { *x = URLs{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[49] + mi := &file_cnspec_policy_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4943,7 +4005,7 @@ func (x *URLs) String() string { func (*URLs) ProtoMessage() {} func (x *URLs) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[49] + mi := &file_cnspec_policy_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4956,7 +4018,7 @@ func (x *URLs) ProtoReflect() protoreflect.Message { // Deprecated: Use URLs.ProtoReflect.Descriptor instead. func (*URLs) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{49} + return file_cnspec_policy_proto_rawDescGZIP(), []int{40} } func (x *URLs) GetUrls() []string { @@ -4980,7 +4042,7 @@ type PolicyAssignment struct { func (x *PolicyAssignment) Reset() { *x = PolicyAssignment{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[50] + mi := &file_cnspec_policy_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4993,7 +4055,7 @@ func (x *PolicyAssignment) String() string { func (*PolicyAssignment) ProtoMessage() {} func (x *PolicyAssignment) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[50] + mi := &file_cnspec_policy_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5006,7 +4068,7 @@ func (x *PolicyAssignment) ProtoReflect() protoreflect.Message { // Deprecated: Use PolicyAssignment.ProtoReflect.Descriptor instead. func (*PolicyAssignment) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{50} + return file_cnspec_policy_proto_rawDescGZIP(), []int{41} } func (x *PolicyAssignment) GetAssetMrn() string { @@ -5050,7 +4112,7 @@ type PolicyMutationDelta struct { func (x *PolicyMutationDelta) Reset() { *x = PolicyMutationDelta{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[51] + mi := &file_cnspec_policy_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5063,7 +4125,7 @@ func (x *PolicyMutationDelta) String() string { func (*PolicyMutationDelta) ProtoMessage() {} func (x *PolicyMutationDelta) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[51] + mi := &file_cnspec_policy_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5076,7 +4138,7 @@ func (x *PolicyMutationDelta) ProtoReflect() protoreflect.Message { // Deprecated: Use PolicyMutationDelta.ProtoReflect.Descriptor instead. func (*PolicyMutationDelta) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{51} + return file_cnspec_policy_proto_rawDescGZIP(), []int{42} } func (x *PolicyMutationDelta) GetPolicyMrn() string { @@ -5112,7 +4174,7 @@ type PolicyDelta struct { func (x *PolicyDelta) Reset() { *x = PolicyDelta{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[52] + mi := &file_cnspec_policy_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5125,7 +4187,7 @@ func (x *PolicyDelta) String() string { func (*PolicyDelta) ProtoMessage() {} func (x *PolicyDelta) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[52] + mi := &file_cnspec_policy_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5138,7 +4200,7 @@ func (x *PolicyDelta) ProtoReflect() protoreflect.Message { // Deprecated: Use PolicyDelta.ProtoReflect.Descriptor instead. func (*PolicyDelta) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{52} + return file_cnspec_policy_proto_rawDescGZIP(), []int{43} } func (x *PolicyDelta) GetPolicyMrn() string { @@ -5167,7 +4229,7 @@ type ResolveReq struct { func (x *ResolveReq) Reset() { *x = ResolveReq{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[53] + mi := &file_cnspec_policy_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5180,7 +4242,7 @@ func (x *ResolveReq) String() string { func (*ResolveReq) ProtoMessage() {} func (x *ResolveReq) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[53] + mi := &file_cnspec_policy_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5193,7 +4255,7 @@ func (x *ResolveReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveReq.ProtoReflect.Descriptor instead. func (*ResolveReq) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{53} + return file_cnspec_policy_proto_rawDescGZIP(), []int{44} } func (x *ResolveReq) GetPolicyMrn() string { @@ -5222,7 +4284,7 @@ type UpdateAssetJobsReq struct { func (x *UpdateAssetJobsReq) Reset() { *x = UpdateAssetJobsReq{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[54] + mi := &file_cnspec_policy_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5235,7 +4297,7 @@ func (x *UpdateAssetJobsReq) String() string { func (*UpdateAssetJobsReq) ProtoMessage() {} func (x *UpdateAssetJobsReq) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[54] + mi := &file_cnspec_policy_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5248,7 +4310,7 @@ func (x *UpdateAssetJobsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAssetJobsReq.ProtoReflect.Descriptor instead. func (*UpdateAssetJobsReq) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{54} + return file_cnspec_policy_proto_rawDescGZIP(), []int{45} } func (x *UpdateAssetJobsReq) GetAssetMrn() string { @@ -5283,7 +4345,7 @@ type StoreResultsReq struct { func (x *StoreResultsReq) Reset() { *x = StoreResultsReq{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[55] + mi := &file_cnspec_policy_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5296,7 +4358,7 @@ func (x *StoreResultsReq) String() string { func (*StoreResultsReq) ProtoMessage() {} func (x *StoreResultsReq) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[55] + mi := &file_cnspec_policy_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5309,7 +4371,7 @@ func (x *StoreResultsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use StoreResultsReq.ProtoReflect.Descriptor instead. func (*StoreResultsReq) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{55} + return file_cnspec_policy_proto_rawDescGZIP(), []int{46} } func (x *StoreResultsReq) GetAssetMrn() string { @@ -5366,7 +4428,7 @@ type EntityScoreReq struct { func (x *EntityScoreReq) Reset() { *x = EntityScoreReq{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[56] + mi := &file_cnspec_policy_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5379,7 +4441,7 @@ func (x *EntityScoreReq) String() string { func (*EntityScoreReq) ProtoMessage() {} func (x *EntityScoreReq) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[56] + mi := &file_cnspec_policy_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5392,7 +4454,7 @@ func (x *EntityScoreReq) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityScoreReq.ProtoReflect.Descriptor instead. func (*EntityScoreReq) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{56} + return file_cnspec_policy_proto_rawDescGZIP(), []int{47} } func (x *EntityScoreReq) GetEntityMrn() string { @@ -5421,7 +4483,7 @@ type SynchronizeAssetsReq struct { func (x *SynchronizeAssetsReq) Reset() { *x = SynchronizeAssetsReq{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[57] + mi := &file_cnspec_policy_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5434,7 +4496,7 @@ func (x *SynchronizeAssetsReq) String() string { func (*SynchronizeAssetsReq) ProtoMessage() {} func (x *SynchronizeAssetsReq) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[57] + mi := &file_cnspec_policy_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5447,7 +4509,7 @@ func (x *SynchronizeAssetsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SynchronizeAssetsReq.ProtoReflect.Descriptor instead. func (*SynchronizeAssetsReq) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{57} + return file_cnspec_policy_proto_rawDescGZIP(), []int{48} } func (x *SynchronizeAssetsReq) GetSpaceMrn() string { @@ -5478,7 +4540,7 @@ type SynchronizeAssetsRespAssetDetail struct { func (x *SynchronizeAssetsRespAssetDetail) Reset() { *x = SynchronizeAssetsRespAssetDetail{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[58] + mi := &file_cnspec_policy_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5491,7 +4553,7 @@ func (x *SynchronizeAssetsRespAssetDetail) String() string { func (*SynchronizeAssetsRespAssetDetail) ProtoMessage() {} func (x *SynchronizeAssetsRespAssetDetail) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[58] + mi := &file_cnspec_policy_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5504,7 +4566,7 @@ func (x *SynchronizeAssetsRespAssetDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use SynchronizeAssetsRespAssetDetail.ProtoReflect.Descriptor instead. func (*SynchronizeAssetsRespAssetDetail) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{58} + return file_cnspec_policy_proto_rawDescGZIP(), []int{49} } func (x *SynchronizeAssetsRespAssetDetail) GetPlatformMrn() string { @@ -5546,7 +4608,7 @@ type SynchronizeAssetsResp struct { func (x *SynchronizeAssetsResp) Reset() { *x = SynchronizeAssetsResp{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[59] + mi := &file_cnspec_policy_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5559,7 +4621,7 @@ func (x *SynchronizeAssetsResp) String() string { func (*SynchronizeAssetsResp) ProtoMessage() {} func (x *SynchronizeAssetsResp) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[59] + mi := &file_cnspec_policy_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5572,7 +4634,7 @@ func (x *SynchronizeAssetsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SynchronizeAssetsResp.ProtoReflect.Descriptor instead. func (*SynchronizeAssetsResp) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{59} + return file_cnspec_policy_proto_rawDescGZIP(), []int{50} } func (x *SynchronizeAssetsResp) GetDetails() map[string]*SynchronizeAssetsRespAssetDetail { @@ -5600,7 +4662,7 @@ type PurgeAssetsRequest struct { func (x *PurgeAssetsRequest) Reset() { *x = PurgeAssetsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[60] + mi := &file_cnspec_policy_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5613,7 +4675,7 @@ func (x *PurgeAssetsRequest) String() string { func (*PurgeAssetsRequest) ProtoMessage() {} func (x *PurgeAssetsRequest) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[60] + mi := &file_cnspec_policy_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5626,7 +4688,7 @@ func (x *PurgeAssetsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PurgeAssetsRequest.ProtoReflect.Descriptor instead. func (*PurgeAssetsRequest) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{60} + return file_cnspec_policy_proto_rawDescGZIP(), []int{51} } func (x *PurgeAssetsRequest) GetSpaceMrn() string { @@ -5691,7 +4753,7 @@ type DateFilter struct { func (x *DateFilter) Reset() { *x = DateFilter{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[61] + mi := &file_cnspec_policy_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5704,7 +4766,7 @@ func (x *DateFilter) String() string { func (*DateFilter) ProtoMessage() {} func (x *DateFilter) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[61] + mi := &file_cnspec_policy_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5717,7 +4779,7 @@ func (x *DateFilter) ProtoReflect() protoreflect.Message { // Deprecated: Use DateFilter.ProtoReflect.Descriptor instead. func (*DateFilter) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{61} + return file_cnspec_policy_proto_rawDescGZIP(), []int{52} } func (x *DateFilter) GetTimestamp() string { @@ -5753,7 +4815,7 @@ type PurgeAssetsConfirmation struct { func (x *PurgeAssetsConfirmation) Reset() { *x = PurgeAssetsConfirmation{} if protoimpl.UnsafeEnabled { - mi := &file_cnspec_policy_proto_msgTypes[62] + mi := &file_cnspec_policy_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5766,7 +4828,7 @@ func (x *PurgeAssetsConfirmation) String() string { func (*PurgeAssetsConfirmation) ProtoMessage() {} func (x *PurgeAssetsConfirmation) ProtoReflect() protoreflect.Message { - mi := &file_cnspec_policy_proto_msgTypes[62] + mi := &file_cnspec_policy_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5779,7 +4841,7 @@ func (x *PurgeAssetsConfirmation) ProtoReflect() protoreflect.Message { // Deprecated: Use PurgeAssetsConfirmation.ProtoReflect.Descriptor instead. func (*PurgeAssetsConfirmation) Descriptor() ([]byte, []int) { - return file_cnspec_policy_proto_rawDescGZIP(), []int{62} + return file_cnspec_policy_proto_rawDescGZIP(), []int{53} } func (x *PurgeAssetsConfirmation) GetAssetMrns() []string { @@ -5854,1268 +4916,989 @@ var file_cnspec_policy_proto_rawDesc = []byte{ 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x06, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x22, 0xcb, 0x09, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3f, 0x0a, - 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, + 0x75, 0x6d, 0x22, 0xd1, 0x07, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, + 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4d, 0x72, 0x6e, 0x12, 0x35, 0x0a, 0x06, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 0x12, 0x4f, - 0x0a, 0x0d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x41, 0x73, 0x73, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, - 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4d, 0x72, 0x6e, 0x12, 0x35, - 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, - 0x30, 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x04, 0x64, 0x6f, 0x63, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x2e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x0e, 0x73, - 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x18, 0x1e, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x07, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x21, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x36, 0x0a, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6e, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, + 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x2d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, - 0x52, 0x05, 0x70, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x34, 0x0a, - 0x16, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x18, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, - 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x38, 0x0a, - 0x18, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x16, 0x67, 0x72, 0x61, 0x70, 0x68, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x75, - 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x2b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0f, 0x63, 0x6f, - 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, - 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x2a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, - 0x66, 0x0a, 0x11, 0x41, 0x73, 0x73, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x91, 0x01, 0x0a, 0x08, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x55, 0x0a, - 0x13, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x37, 0x5f, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x11, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x49, - 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x22, 0x98, 0x07, 0x0a, 0x17, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x53, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x56, 0x37, 0x5f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x66, 0x0a, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, - 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, - 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x69, 0x6e, - 0x67, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x73, - 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x5d, 0x0a, - 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x56, 0x37, 0x5f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0b, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0c, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x14, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, - 0x64, 0x61, 0x74, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, - 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x18, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x64, - 0x6f, 0x63, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6e, 0x73, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x0e, 0x73, 0x63, 0x6f, + 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1f, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x52, 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x18, 0x1e, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x07, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x20, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x04, 0x64, 0x6f, - 0x63, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x20, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, - 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x1a, 0x67, 0x0a, 0x0d, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x53, 0x63, 0x6f, 0x72, 0x69, - 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x6d, 0x0a, 0x13, 0x53, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, - 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x53, 0x63, 0x6f, 0x72, 0x69, 0x6e, - 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x5d, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xbb, 0x09, 0x0a, 0x13, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, - 0x5f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x34, 0x0a, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x34, 0x0a, - 0x16, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x18, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, - 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x38, 0x0a, - 0x18, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x16, 0x67, 0x72, 0x61, 0x70, 0x68, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, - 0x63, 0x52, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 0x12, 0x5c, 0x0a, 0x0d, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x37, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, - 0x6d, 0x72, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x4d, 0x72, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x12, 0x46, 0x0a, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x53, 0x63, 0x6f, 0x72, - 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x69, - 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x3f, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, - 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, - 0x21, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, - 0x43, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x12, 0x46, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x23, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x56, 0x37, 0x5f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, - 0x75, 0x69, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x30, - 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, + 0x69, 0x63, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, + 0x61, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x2d, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x05, + 0x70, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x34, 0x0a, 0x16, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x12, 0x38, 0x0a, 0x18, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x27, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x18, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, + 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x2a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x37, 0x0a, + 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3a, 0x0a, 0x08, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, + 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x22, 0x72, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, + 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf7, 0x02, 0x0a, 0x06, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4d, 0x72, 0x6e, 0x12, 0x34, + 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, + 0x05, 0x70, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4d, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, + 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0a, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x45, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, 0x52, + 0x0d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x30, + 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x04, 0x64, 0x6f, 0x63, 0x73, - 0x12, 0x40, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x1a, 0x66, 0x0a, 0x11, 0x41, 0x73, 0x73, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, - 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, - 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbd, 0x02, - 0x0a, 0x18, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x53, - 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x73, 0x5f, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x12, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, - 0x74, 0x61, 0x67, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x5f, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x63, - 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, - 0x53, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x73, - 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x35, 0x0a, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x63, + 0x22, 0x4b, 0x0a, 0x0f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, + 0x6f, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x6a, 0x75, 0x73, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x20, 0x0a, + 0x0a, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x22, + 0xe3, 0x06, 0x0a, 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, + 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4d, 0x72, 0x6e, 0x12, 0x38, 0x0a, 0x06, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0xa5, 0x02, - 0x0a, 0x13, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6d, - 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4d, - 0x72, 0x6e, 0x12, 0x3f, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x70, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x70, 0x72, - 0x6f, 0x70, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x73, 0x52, - 0x04, 0x64, 0x6f, 0x63, 0x73, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x72, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x63, - 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xaf, 0x04, 0x0a, 0x06, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6d, - 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4d, - 0x72, 0x6e, 0x12, 0x34, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x70, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x79, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x71, 0x75, - 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4d, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, - 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, - 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x45, 0x0a, 0x0e, 0x66, - 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, - 0x4d, 0x61, 0x70, 0x52, 0x0d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, - 0x70, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x04, - 0x64, 0x6f, 0x63, 0x73, 0x12, 0x5b, 0x0a, 0x16, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x76, 0x37, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, + 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, + 0x12, 0x30, 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x04, 0x64, 0x6f, + 0x63, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x2e, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x32, 0x0a, 0x07, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, + 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x6f, + 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x56, 0x37, 0x5f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x14, 0x64, 0x65, 0x70, - 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x12, 0x59, 0x0a, 0x15, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x76, 0x37, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, - 0x5f, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x13, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x56, 0x37, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x0f, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x6f, 0x63, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6a, 0x75, 0x73, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x20, 0x0a, 0x0a, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x22, 0xf3, 0x03, 0x0a, 0x13, - 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x10, - 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, - 0x74, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, - 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x15, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x44, 0x6f, 0x63, 0x73, 0x52, - 0x04, 0x64, 0x6f, 0x63, 0x73, 0x12, 0x3c, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x16, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x66, 0x52, 0x04, 0x72, - 0x65, 0x66, 0x73, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, - 0x37, 0x5f, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x32, 0x0a, 0x1a, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, - 0x37, 0x5f, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x65, 0x0a, 0x17, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x44, 0x6f, 0x63, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x64, 0x65, 0x73, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, - 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x40, 0x0a, 0x16, - 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x52, 0x65, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xe3, - 0x06, 0x0a, 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x10, 0x0a, 0x03, - 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 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, 0x1b, - 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4d, 0x72, 0x6e, 0x12, 0x38, 0x0a, 0x06, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, - 0x30, 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x04, 0x64, 0x6f, 0x63, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x2e, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x32, 0x0a, 0x07, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, - 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x64, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x6f, 0x64, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x22, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, - 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x12, 0x42, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, - 0x18, 0x23, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, - 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x66, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, - 0x63, 0x69, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x25, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x34, 0x0a, 0x16, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x12, 0x38, 0x0a, 0x18, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x27, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x18, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x45, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, - 0x6b, 0x5f, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, 0x52, 0x0d, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, - 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3f, 0x0a, 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x05, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x9d, 0x04, 0x0a, 0x0e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, - 0x6f, 0x72, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, - 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, + 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, + 0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x66, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, + 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x34, 0x0a, 0x16, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x12, 0x38, 0x0a, 0x18, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x27, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x18, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x45, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x16, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x17, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x44, 0x61, 0x74, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, - 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x12, 0x32, - 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x73, 0x18, - 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, - 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, - 0x09, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x72, 0x65, - 0x76, 0x69, 0x65, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x64, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x6f, 0x64, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, 0x64, 0x0a, 0x0c, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, - 0x72, 0x6b, 0x52, 0x65, 0x66, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xce, 0x02, 0x0a, 0x07, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x31, 0x0a, - 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6e, + 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, 0x52, 0x0d, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, 0x73, 0x1a, 0x37, 0x0a, 0x09, + 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3f, 0x0a, 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x9d, 0x04, 0x0a, 0x0e, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x0a, 0x08, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x04, 0x64, 0x6f, 0x63, 0x73, - 0x12, 0x37, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, + 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x61, 0x6e, - 0x75, 0x61, 0x6c, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x99, 0x04, 0x0a, - 0x0c, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, 0x12, 0x10, 0x0a, - 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, - 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, - 0x64, 0x12, 0x52, 0x0a, 0x16, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, - 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x15, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, - 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x13, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, - 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x16, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, + 0x0d, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x17, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, + 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x12, + 0x32, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, + 0x72, 0x65, 0x72, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x73, + 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x72, + 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x1c, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, + 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x6f, + 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, 0x64, 0x0a, 0x0c, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x66, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xce, 0x02, 0x0a, + 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x31, + 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x04, 0x64, 0x6f, 0x63, + 0x73, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x61, + 0x6e, 0x75, 0x61, 0x6c, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x99, 0x04, + 0x0a, 0x0c, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, 0x12, 0x10, + 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x69, 0x64, 0x12, 0x52, 0x0a, 0x16, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, - 0x12, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, - 0x69, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x17, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x66, 0x52, 0x15, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x44, 0x65, 0x70, 0x65, - 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x73, 0x12, 0x44, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, - 0x6f, 0x72, 0x6b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x38, - 0x0a, 0x18, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x92, 0x02, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, 0x34, 0x0a, 0x06, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, + 0x15, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, + 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x13, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, + 0x52, 0x12, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, + 0x63, 0x69, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x17, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x66, 0x52, 0x15, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x44, 0x65, 0x70, + 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, - 0x66, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x08, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x52, 0x65, 0x66, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, 0x52, 0x0a, - 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, - 0x12, 0x2f, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x2e, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x66, 0x52, 0x04, 0x72, 0x65, 0x66, - 0x73, 0x22, 0x62, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x66, 0x12, - 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, - 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x75, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x29, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x01, 0x0a, 0x05, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, - 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x4a, 0x04, 0x08, 0x14, 0x10, 0x15, 0x22, 0xbc, 0x03, 0x0a, 0x0e, 0x52, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x59, 0x0a, 0x15, - 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x37, 0x5f, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x52, 0x13, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x73, 0x12, 0x44, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, + 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, + 0x38, 0x0a, 0x18, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x92, 0x02, 0x0a, 0x0a, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x72, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, 0x34, 0x0a, 0x06, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x06, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, + 0x65, 0x66, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x0c, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x43, 0x0a, 0x0d, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x4a, 0x6f, 0x62, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x6f, - 0x62, 0x12, 0x32, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x67, 0x72, 0x61, 0x70, 0x68, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, - 0x29, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x75, 0x75, 0x69, 0x64, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, - 0x67, 0x4a, 0x6f, 0x62, 0x55, 0x75, 0x69, 0x64, 0x22, 0xcf, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x45, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x5c, 0x0a, 0x0c, - 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa0, 0x02, 0x0a, 0x0e, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, - 0x50, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x08, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, 0x52, + 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x12, 0x2f, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, + 0x65, 0x72, 0x2e, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x66, 0x52, 0x04, 0x72, 0x65, + 0x66, 0x73, 0x22, 0x62, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x66, + 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, + 0x72, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x29, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x01, 0x0a, 0x05, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, + 0x72, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x4a, 0x04, 0x08, 0x14, 0x10, 0x15, 0x22, 0xe1, 0x02, 0x0a, 0x0e, 0x52, + 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x43, 0x0a, + 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x0c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, + 0x6f, 0x62, 0x12, 0x43, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, + 0x6a, 0x6f, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x6f, 0x62, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x6f, 0x62, 0x12, 0x32, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4d, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6a, 0x6f, + 0x62, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x55, 0x75, 0x69, 0x64, 0x22, 0xcf, + 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x45, 0x0a, 0x07, 0x71, + 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x1a, 0x5c, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x6c, 0x6c, 0x78, 0x2e, 0x43, 0x6f, - 0x64, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x1a, 0x3d, - 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdd, 0x04, - 0x0a, 0x0c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x6f, 0x62, 0x12, 0x1a, - 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x58, 0x0a, 0x0e, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, - 0x6f, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, - 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x61, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x34, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x6f, 0x62, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, - 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x6f, 0x62, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0x60, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xa0, 0x02, 0x0a, 0x0e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x50, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x6c, 0x6c, 0x78, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xdd, 0x04, 0x0a, 0x0c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x4a, 0x6f, 0x62, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x12, 0x58, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6a, 0x6f, + 0x62, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x6f, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, + 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x61, 0x0a, 0x11, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x4a, 0x6f, 0x62, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x51, + 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, + 0x0a, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4a, 0x6f, + 0x62, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0x60, 0x0a, + 0x12, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, + 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x62, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x5e, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x3b, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x22, 0xb0, 0x05, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x12, 0x31, 0x0a, 0x15, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x38, 0x5f, 0x69, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x56, 0x38, 0x49, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x13, 0x0a, 0x05, 0x71, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x71, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x46, 0x0a, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, + 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, + 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, + 0x72, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, + 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x4e, + 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, + 0x6f, 0x62, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4c, + 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, + 0x6f, 0x62, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4a, 0x6f, 0x62, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x37, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x63, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x3d, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x56, 0x0a, 0x0e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4a, 0x6f, 0x62, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x49, 0x6d, 0x70, 0x61, 0x63, + 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x04, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x01, + 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x02, + 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x03, 0x12, 0x0a, 0x0a, + 0x06, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x52, 0x41, + 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x05, 0x22, 0x91, 0x07, 0x0a, 0x06, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, + 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, + 0x67, 0x4d, 0x72, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6d, + 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x4d, 0x72, 0x6e, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, + 0x12, 0x36, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x62, 0x0a, 0x15, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x3c, 0x0a, + 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x16, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0c, 0x69, + 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x0a, 0x63, + 0x76, 0x73, 0x73, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x76, 0x73, 0x73, 0x52, 0x09, 0x63, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x49, 0x0a, 0x0b, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x2e, 0x43, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0a, 0x63, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x3a, 0x0a, + 0x0a, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x76, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x09, + 0x63, 0x76, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x73, 0x6f, + 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x1a, 0x52, 0x0a, 0x0b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5e, 0x0a, - 0x0f, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, - 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74, 0x65, - 0x6d, 0x73, 0x22, 0x3b, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x22, - 0x85, 0x07, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, - 0x12, 0x62, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, - 0x37, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x2e, 0x44, 0x65, 0x70, - 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x53, 0x70, 0x65, 0x63, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x10, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x15, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x76, 0x38, 0x5f, 0x69, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x12, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, - 0x38, 0x49, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x12, 0x13, 0x0a, 0x05, 0x71, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x71, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x12, 0x46, 0x0a, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x5f, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x63, - 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, - 0x53, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x73, - 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x4e, 0x0a, 0x0a, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4c, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x6c, 0x6c, 0x78, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x55, 0x0a, 0x0f, 0x43, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x76, 0x73, + 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x07, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22, 0xd6, 0x05, 0x0a, 0x10, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x46, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x0a, - 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, - 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4a, 0x6f, 0x62, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x65, 0x0a, + 0x11, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x62, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x1a, 0x6f, 0x0a, 0x15, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x56, 0x37, 0x53, 0x70, 0x65, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x40, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x53, 0x63, - 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x56, 0x0a, 0x0e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x4a, 0x6f, 0x62, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x01, 0x12, - 0x0e, 0x0a, 0x0a, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x02, 0x12, - 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, - 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x52, 0x41, 0x4d, - 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x05, 0x22, 0x91, 0x07, 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x72, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, - 0x4d, 0x72, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x72, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, - 0x72, 0x6e, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, - 0x36, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x72, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x1a, 0x56, 0x0a, 0x0b, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x0c, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0d, - 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x16, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0c, 0x69, 0x67, - 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x76, - 0x73, 0x73, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x76, 0x73, 0x73, 0x52, 0x09, 0x63, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x49, 0x0a, 0x0b, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, - 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x43, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0a, 0x63, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x0a, - 0x63, 0x76, 0x73, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x76, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x09, 0x63, - 0x76, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x6f, - 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x6c, 0x1a, 0x52, 0x0a, 0x0b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4c, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x6c, - 0x6c, 0x78, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x55, 0x0a, 0x0f, 0x43, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x76, 0x73, 0x73, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x07, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22, 0xd6, 0x05, 0x0a, 0x10, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x46, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x65, 0x0a, 0x11, - 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x69, 0x65, 0x73, 0x1a, 0x56, 0x0a, 0x0b, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x0c, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 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, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x65, 0x0a, 0x15, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, - 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xc3, 0x01, 0x0a, 0x0f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, - 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x6f, 0x72, 0x69, - 0x6e, 0x67, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, - 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x72, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x4d, 0x72, 0x6e, 0x12, 0x34, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, - 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0xa0, 0x03, 0x0a, 0x0c, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x72, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x70, 0x6c, - 0x69, 0x61, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x2e, 0x0a, 0x13, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x66, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x36, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, - 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, - 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x22, 0x78, 0x0a, 0x04, - 0x43, 0x76, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x09, 0x43, 0x76, 0x73, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, - 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x72, - 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, - 0x64, 0x69, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x65, 0x64, 0x69, - 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x6e, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x75, 0x6e, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x22, 0xbe, 0x02, 0x0a, 0x05, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x71, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x71, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x73, - 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, - 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, - 0x75, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xbe, 0x02, 0x0a, 0x05, + 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, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x65, 0x0a, + 0x15, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc3, 0x01, 0x0a, 0x0f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x6f, 0x72, + 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x63, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x72, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x72, 0x6e, 0x12, 0x34, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x3a, + 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0xa0, 0x03, 0x0a, 0x0c, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, + 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, 0x12, 0x1e, 0x0a, + 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x66, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x36, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x22, 0x78, 0x0a, + 0x04, 0x43, 0x76, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x09, 0x43, 0x76, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x69, - 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, - 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x6b, - 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x75, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x75, 0x6e, - 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x3b, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, - 0x3b, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x9f, 0x01, 0x0a, - 0x11, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x01, 0x61, 0x12, 0x0c, 0x0a, 0x01, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x01, 0x62, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x01, 0x64, - 0x12, 0x0c, 0x0a, 0x01, 0x66, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x01, 0x66, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x6e, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x75, 0x6e, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, 0x07, - 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x17, 0x0a, 0x03, 0x4d, 0x72, 0x6e, 0x12, 0x10, - 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, 0x6e, - 0x22, 0x91, 0x01, 0x0a, 0x08, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x55, 0x0a, - 0x13, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x37, 0x5f, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x5f, 0x4d, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x11, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x37, 0x49, - 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x22, 0x3a, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, - 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4d, 0x72, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x90, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 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, 0x16, 0x0a, 0x06, 0x66, - 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x61, 0x6d, - 0x69, 0x6c, 0x79, 0x22, 0x1a, 0x0a, 0x04, 0x55, 0x52, 0x4c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, - 0x72, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x6c, 0x73, 0x22, - 0xa9, 0x01, 0x0a, 0x10, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x72, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x72, - 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x72, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x72, - 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, - 0x6d, 0x72, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x72, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x63, 0x74, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, + 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6d, + 0x65, 0x64, 0x69, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x65, 0x64, + 0x69, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x6e, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x75, 0x6e, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x22, 0xbe, 0x02, 0x0a, 0x05, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x71, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x71, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x29, 0x0a, 0x10, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x64, 0x61, 0x74, + 0x61, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0e, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xbe, 0x02, 0x0a, + 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, + 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, + 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x75, + 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x3b, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x66, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, + 0x12, 0x3b, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x9f, 0x01, + 0x0a, 0x11, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x01, 0x61, 0x12, 0x0c, 0x0a, 0x01, 0x62, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x01, 0x62, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x01, + 0x64, 0x12, 0x0c, 0x0a, 0x01, 0x66, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x01, 0x66, 0x12, + 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x6e, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x75, 0x6e, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, + 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x17, 0x0a, 0x03, 0x4d, 0x72, 0x6e, 0x12, + 0x10, 0x0a, 0x03, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x72, + 0x6e, 0x22, 0x3a, 0x0a, 0x08, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2e, 0x0a, + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, + 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, + 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x3a, 0x0a, + 0x07, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x4d, 0x72, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x12, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 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, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x22, 0x1a, 0x0a, 0x04, + 0x55, 0x52, 0x4c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x6c, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x10, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, + 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x72, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x72, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6d, 0x72, 0x6e, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x72, + 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa4, 0x02, 0x0a, 0x13, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, + 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x72, 0x6e, 0x12, 0x5c, 0x0a, 0x0d, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x75, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x44, 0x65, 0x6c, 0x74, 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa4, 0x02, 0x0a, 0x13, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, - 0x6c, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x72, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, - 0x72, 0x6e, 0x12, 0x5c, 0x0a, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x65, 0x6c, - 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, - 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x73, - 0x12, 0x30, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, - 0x72, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x1a, 0x5e, 0x0a, 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x74, - 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0xb1, 0x01, 0x0a, 0x0b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, - 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x72, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x72, - 0x6e, 0x12, 0x50, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x38, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x5e, 0x0a, 0x11, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x74, 0x61, - 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, 0x1a, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x73, 0x73, - 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, - 0x4c, 0x45, 0x54, 0x45, 0x10, 0x01, 0x22, 0x6a, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, - 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, - 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x4d, 0x72, 0x6e, 0x12, 0x3d, 0x0a, 0x0d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4d, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x22, 0x70, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, - 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x4d, 0x72, 0x6e, 0x12, 0x3d, 0x0a, 0x0d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, - 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, - 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x22, 0xf6, 0x02, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x4d, 0x72, 0x6e, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x06, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x0a, 0x63, 0x76, 0x73, 0x73, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x76, 0x73, 0x73, 0x52, 0x0a, 0x63, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, - 0x27, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x50, 0x72, 0x65, 0x70, - 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, - 0x4c, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x6c, 0x6c, 0x78, 0x2e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4c, 0x0a, - 0x0e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x12, - 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x72, 0x6e, 0x12, 0x1b, - 0x0a, 0x09, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x72, 0x6e, 0x22, 0x64, 0x0a, 0x14, 0x53, - 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6d, 0x72, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x72, 0x6e, - 0x12, 0x2f, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x04, 0x6c, 0x69, 0x73, - 0x74, 0x22, 0x93, 0x01, 0x0a, 0x20, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, - 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x72, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x4d, 0x72, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x53, 0x79, 0x6e, 0x63, - 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x4e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, - 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x1a, 0x6e, 0x0a, 0x0c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, - 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0xfa, 0x02, 0x0a, 0x12, 0x50, 0x75, 0x72, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x4d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x4d, 0x72, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x72, - 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4d, - 0x72, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x72, 0x67, 0x65, 0x5f, 0x61, 0x6c, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x70, 0x75, 0x72, 0x67, 0x65, 0x41, 0x6c, 0x6c, - 0x12, 0x3d, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x42, 0x79, 0x12, 0x29, - 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x72, - 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa1, - 0x01, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3c, 0x0a, 0x0a, 0x63, - 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x52, 0x0a, 0x63, - 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x17, 0x50, 0x75, 0x72, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, - 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, - 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x72, 0x6e, 0x73, 0x12, 0x4d, 0x0a, - 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb1, 0x01, 0x0a, 0x0b, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x72, 0x6e, 0x12, 0x50, 0x0a, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x63, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, 0x1a, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, + 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x01, 0x22, + 0x6a, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x72, 0x6e, 0x12, 0x3d, 0x0a, 0x0d, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x0c, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0x70, 0x0a, 0x12, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x72, 0x6e, 0x12, 0x3d, + 0x0a, 0x0d, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0xf6, 0x02, + 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x72, 0x6e, 0x12, 0x2f, + 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, + 0x3f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0x39, 0x0a, 0x0b, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x36, 0x0a, 0x0a, 0x63, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x14, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x76, 0x73, 0x73, 0x52, 0x0a, 0x63, 0x76, + 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x70, + 0x72, 0x65, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0e, 0x69, 0x73, 0x50, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, + 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, + 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x4c, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x6c, 0x6c, 0x78, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4c, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x4d, 0x72, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x4d, 0x72, 0x6e, 0x22, 0x64, 0x0a, 0x14, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, + 0x69, 0x7a, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6d, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x72, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x20, 0x53, + 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x41, 0x73, 0x73, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, + 0x21, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x6d, 0x72, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, + 0x72, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x72, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x72, 0x6e, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, + 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4e, 0x0a, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x6e, 0x0a, 0x0c, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x41, 0x73, 0x73, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfa, 0x02, 0x0a, 0x12, 0x50, + 0x75, 0x72, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x72, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x72, 0x6e, 0x12, 0x1d, 0x0a, + 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x72, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, + 0x70, 0x75, 0x72, 0x67, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x70, 0x75, 0x72, 0x67, 0x65, 0x41, 0x6c, 0x6c, 0x12, 0x3d, 0x0a, 0x0b, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x64, 0x61, + 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x64, 0x42, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x6f, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, - 0x52, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x48, 0x41, 0x50, 0x54, - 0x45, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, - 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x10, 0x03, 0x12, 0x0b, - 0x0a, 0x07, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x44, - 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x50, - 0x45, 0x52, 0x54, 0x49, 0x45, 0x53, 0x10, 0x06, 0x2a, 0x48, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x4f, 0x44, 0x49, - 0x46, 0x59, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x41, 0x43, 0x54, 0x49, 0x56, 0x41, - 0x54, 0x45, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x43, 0x54, 0x49, 0x56, 0x41, 0x54, 0x45, - 0x10, 0x03, 0x2a, 0x3c, 0x0a, 0x0c, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, - 0x2a, 0xb3, 0x01, 0x0a, 0x0b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, - 0x12, 0x0b, 0x0a, 0x07, 0x75, 0x6e, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x61, 0x50, 0x6c, 0x75, 0x73, 0x10, 0x01, 0x12, 0x05, 0x0a, 0x01, 0x61, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x61, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x62, - 0x50, 0x6c, 0x75, 0x73, 0x10, 0x04, 0x12, 0x05, 0x0a, 0x01, 0x62, 0x10, 0x05, 0x12, 0x0a, 0x0a, - 0x06, 0x62, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x63, 0x50, 0x6c, - 0x75, 0x73, 0x10, 0x07, 0x12, 0x05, 0x0a, 0x01, 0x63, 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x63, - 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x10, 0x09, 0x12, 0x09, 0x0a, 0x05, 0x64, 0x50, 0x6c, 0x75, 0x73, - 0x10, 0x0a, 0x12, 0x05, 0x0a, 0x01, 0x64, 0x10, 0x0b, 0x12, 0x0a, 0x0a, 0x06, 0x64, 0x4d, 0x69, - 0x6e, 0x75, 0x73, 0x10, 0x0c, 0x12, 0x0a, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, - 0x0d, 0x12, 0x09, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x0e, 0x12, 0x08, 0x0a, 0x04, - 0x73, 0x6b, 0x69, 0x70, 0x10, 0x0f, 0x2a, 0x2d, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, - 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, - 0x54, 0x48, 0x41, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, - 0x48, 0x41, 0x4e, 0x10, 0x01, 0x2a, 0x3e, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x49, 0x4c, 0x54, - 0x45, 0x52, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x52, 0x45, 0x41, - 0x54, 0x45, 0x44, 0x10, 0x01, 0x32, 0x8b, 0x06, 0x0a, 0x09, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x48, 0x75, 0x62, 0x12, 0x40, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa1, 0x01, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x65, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, + 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, + 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x21, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x17, + 0x50, 0x75, 0x72, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x5f, 0x6d, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x4d, 0x72, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 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, 0x3a, 0x02, 0x38, 0x01, + 0x2a, 0x6f, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, + 0x0d, 0x55, 0x4e, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x48, 0x41, 0x50, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a, + 0x06, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x56, 0x45, + 0x52, 0x52, 0x49, 0x44, 0x45, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x47, 0x4e, 0x4f, 0x52, + 0x45, 0x44, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, + 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x49, 0x45, 0x53, 0x10, + 0x06, 0x2a, 0x48, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x59, 0x10, 0x01, 0x12, 0x0e, 0x0a, + 0x0a, 0x44, 0x45, 0x41, 0x43, 0x54, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0c, 0x0a, + 0x08, 0x41, 0x43, 0x54, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x03, 0x2a, 0x3c, 0x0a, 0x0c, 0x52, + 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x4e, + 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, + 0x08, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, + 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x2a, 0xb3, 0x01, 0x0a, 0x0b, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0b, 0x0a, 0x07, 0x75, 0x6e, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x61, 0x50, 0x6c, 0x75, 0x73, 0x10, + 0x01, 0x12, 0x05, 0x0a, 0x01, 0x61, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x61, 0x4d, 0x69, 0x6e, + 0x75, 0x73, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x62, 0x50, 0x6c, 0x75, 0x73, 0x10, 0x04, 0x12, + 0x05, 0x0a, 0x01, 0x62, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x62, 0x4d, 0x69, 0x6e, 0x75, 0x73, + 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x63, 0x50, 0x6c, 0x75, 0x73, 0x10, 0x07, 0x12, 0x05, 0x0a, + 0x01, 0x63, 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x10, 0x09, + 0x12, 0x09, 0x0a, 0x05, 0x64, 0x50, 0x6c, 0x75, 0x73, 0x10, 0x0a, 0x12, 0x05, 0x0a, 0x01, 0x64, + 0x10, 0x0b, 0x12, 0x0a, 0x0a, 0x06, 0x64, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x10, 0x0c, 0x12, 0x0a, + 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x0d, 0x12, 0x09, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x10, 0x0e, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x10, 0x0f, 0x2a, + 0x2d, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x10, 0x0a, + 0x0c, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x00, 0x12, + 0x0d, 0x0a, 0x09, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x01, 0x2a, 0x3e, + 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x41, 0x53, 0x54, + 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x49, + 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x32, 0x8b, + 0x06, 0x0a, 0x09, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x75, 0x62, 0x12, 0x40, 0x0a, 0x09, + 0x53, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x45, + 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x09, - 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x63, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x72, 0x6e, - 0x1a, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x09, - 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x15, 0x2e, 0x63, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x72, 0x6e, - 0x1a, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0c, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x15, 0x2e, 0x63, + 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x72, 0x6e, 0x1a, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x12, 0x15, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x72, 0x6e, 0x1a, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x15, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x72, 0x6e, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x72, 0x6e, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x47, - 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x12, 0x15, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x72, 0x6e, 0x1a, 0x1a, 0x2e, 0x63, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x71, 0x75, - 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x19, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x63, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0f, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x16, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x52, 0x4c, 0x73, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0c, 0x47, - 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x15, 0x2e, 0x63, 0x6e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x15, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x72, 0x6e, 0x1a, 0x1b, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x22, - 0x00, 0x12, 0x43, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, - 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x15, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x72, 0x6e, 0x1a, 0x17, 0x2e, 0x63, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, - 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x19, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, + 0x72, 0x6e, 0x1a, 0x1a, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, 0x00, + 0x12, 0x3f, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x19, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, - 0x73, 0x22, 0x00, 0x32, 0xc4, 0x08, 0x0a, 0x0e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, - 0x12, 0x22, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, + 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, + 0x00, 0x12, 0x51, 0x0a, 0x0f, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x63, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x52, + 0x4c, 0x73, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x15, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x72, 0x6e, 0x1a, 0x1b, 0x2e, 0x63, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0f, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x15, 0x2e, + 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x72, 0x6e, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, - 0x49, 0x0a, 0x08, 0x55, 0x6e, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x22, 0x2e, 0x63, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x1a, - 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x08, 0x53, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x1a, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x73, 0x52, - 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4b, 0x0a, - 0x07, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x6c, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, - 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x24, 0x2e, + 0x4b, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x12, 0x19, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x00, 0x32, 0xc4, 0x08, 0x0a, + 0x0e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, + 0x47, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x22, 0x2e, 0x63, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x60, - 0x0a, 0x14, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x41, 0x6e, 0x64, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x08, 0x55, 0x6e, 0x61, 0x73, + 0x73, 0x69, 0x67, 0x6e, 0x12, 0x22, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x73, + 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x73, 0x12, + 0x1a, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, + 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6e, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, + 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x73, 0x73, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x00, - 0x12, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x15, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x72, 0x6e, 0x1a, 0x20, 0x2e, 0x63, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x41, 0x6e, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, + 0x24, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4a, 0x6f, + 0x62, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, + 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x15, + 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x72, 0x6e, 0x1a, 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, + 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0c, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x63, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x00, - 0x12, 0x4c, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x12, 0x21, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x49, - 0x0a, 0x09, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x2e, 0x63, 0x6e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x63, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x00, 0x12, + 0x48, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x12, 0x47, 0x65, 0x74, - 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, - 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x21, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x12, 0x20, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x00, - 0x12, 0x66, 0x0a, 0x11, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x41, - 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, - 0x6e, 0x69, 0x7a, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, - 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x41, 0x73, 0x73, 0x65, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0b, 0x50, 0x75, 0x72, 0x67, - 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, - 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, - 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x42, 0x20, 0x5a, 0x1e, 0x67, 0x6f, - 0x2e, 0x6d, 0x6f, 0x6e, 0x64, 0x6f, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x2f, 0x76, 0x39, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x11, 0x53, 0x79, 0x6e, + 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x26, + 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x41, 0x73, 0x73, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, + 0x6f, 0x6e, 0x69, 0x7a, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x60, 0x0a, 0x0b, 0x50, 0x75, 0x72, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, + 0x12, 0x24, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x00, 0x42, 0x20, 0x5a, 0x1e, 0x67, 0x6f, 0x2e, 0x6d, 0x6f, 0x6e, 0x64, 0x6f, 0x6f, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x76, 0x39, 0x2f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7131,7 +5914,7 @@ func file_cnspec_policy_proto_rawDescGZIP() []byte { } var file_cnspec_policy_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_cnspec_policy_proto_msgTypes = make([]protoimpl.MessageInfo, 94) +var file_cnspec_policy_proto_msgTypes = make([]protoimpl.MessageInfo, 76) var file_cnspec_policy_proto_goTypes = []interface{}{ (GroupType)(0), // 0: cnspec.policy.v1.GroupType (QueryAction)(0), // 1: cnspec.policy.v1.QueryAction @@ -7145,322 +5928,266 @@ var file_cnspec_policy_proto_goTypes = []interface{}{ (*PolicyRef)(nil), // 9: cnspec.policy.v1.PolicyRef (*Policy)(nil), // 10: cnspec.policy.v1.Policy (*Policies)(nil), // 11: cnspec.policy.v1.Policies - (*DeprecatedV7_PolicySpec)(nil), // 12: cnspec.policy.v1.DeprecatedV7_PolicySpec - (*DeprecatedV7_Policy)(nil), // 13: cnspec.policy.v1.DeprecatedV7_Policy - (*DeprecatedV7_ScoringSpec)(nil), // 14: cnspec.policy.v1.DeprecatedV7_ScoringSpec - (*DeprecatedV7_Bundle)(nil), // 15: cnspec.policy.v1.DeprecatedV7_Bundle - (*DeprecatedV7_Author)(nil), // 16: cnspec.policy.v1.DeprecatedV7_Author - (*QueryCounts)(nil), // 17: cnspec.policy.v1.QueryCounts - (*Bundle)(nil), // 18: cnspec.policy.v1.Bundle - (*PolicyGroupDocs)(nil), // 19: cnspec.policy.v1.PolicyGroupDocs - (*PolicyDocs)(nil), // 20: cnspec.policy.v1.PolicyDocs - (*DeprecatedV7_Mquery)(nil), // 21: cnspec.policy.v1.DeprecatedV7_Mquery - (*DeprecatedV7_SeverityValue)(nil), // 22: cnspec.policy.v1.DeprecatedV7_SeverityValue - (*DeprecatedV7_MqueryDocs)(nil), // 23: cnspec.policy.v1.DeprecatedV7_MqueryDocs - (*DeprecatedV7_MqueryRef)(nil), // 24: cnspec.policy.v1.DeprecatedV7_MqueryRef - (*Framework)(nil), // 25: cnspec.policy.v1.Framework - (*Frameworks)(nil), // 26: cnspec.policy.v1.Frameworks - (*FrameworkGroup)(nil), // 27: cnspec.policy.v1.FrameworkGroup - (*FrameworkRef)(nil), // 28: cnspec.policy.v1.FrameworkRef - (*Control)(nil), // 29: cnspec.policy.v1.Control - (*FrameworkMap)(nil), // 30: cnspec.policy.v1.FrameworkMap - (*ControlMap)(nil), // 31: cnspec.policy.v1.ControlMap - (*ControlDocs)(nil), // 32: cnspec.policy.v1.ControlDocs - (*ControlRef)(nil), // 33: cnspec.policy.v1.ControlRef - (*Asset)(nil), // 34: cnspec.policy.v1.Asset - (*ResolvedPolicy)(nil), // 35: cnspec.policy.v1.ResolvedPolicy - (*ExecutionJob)(nil), // 36: cnspec.policy.v1.ExecutionJob - (*ExecutionQuery)(nil), // 37: cnspec.policy.v1.ExecutionQuery - (*CollectorJob)(nil), // 38: cnspec.policy.v1.CollectorJob - (*StringArray)(nil), // 39: cnspec.policy.v1.StringArray - (*DataQueryInfo)(nil), // 40: cnspec.policy.v1.DataQueryInfo - (*ReportingJob)(nil), // 41: cnspec.policy.v1.ReportingJob - (*Report)(nil), // 42: cnspec.policy.v1.Report - (*Reports)(nil), // 43: cnspec.policy.v1.Reports - (*ReportCollection)(nil), // 44: cnspec.policy.v1.ReportCollection - (*FrameworkReport)(nil), // 45: cnspec.policy.v1.FrameworkReport - (*ControlScore)(nil), // 46: cnspec.policy.v1.ControlScore - (*Cvss)(nil), // 47: cnspec.policy.v1.Cvss - (*CvssStats)(nil), // 48: cnspec.policy.v1.CvssStats - (*Score)(nil), // 49: cnspec.policy.v1.Score - (*Stats)(nil), // 50: cnspec.policy.v1.Stats - (*ScoreDistribution)(nil), // 51: cnspec.policy.v1.ScoreDistribution - (*Empty)(nil), // 52: cnspec.policy.v1.Empty - (*Mrn)(nil), // 53: cnspec.policy.v1.Mrn - (*Mqueries)(nil), // 54: cnspec.policy.v1.Mqueries - (*ListReq)(nil), // 55: cnspec.policy.v1.ListReq - (*DefaultPoliciesReq)(nil), // 56: cnspec.policy.v1.DefaultPoliciesReq - (*URLs)(nil), // 57: cnspec.policy.v1.URLs - (*PolicyAssignment)(nil), // 58: cnspec.policy.v1.PolicyAssignment - (*PolicyMutationDelta)(nil), // 59: cnspec.policy.v1.PolicyMutationDelta - (*PolicyDelta)(nil), // 60: cnspec.policy.v1.PolicyDelta - (*ResolveReq)(nil), // 61: cnspec.policy.v1.ResolveReq - (*UpdateAssetJobsReq)(nil), // 62: cnspec.policy.v1.UpdateAssetJobsReq - (*StoreResultsReq)(nil), // 63: cnspec.policy.v1.StoreResultsReq - (*EntityScoreReq)(nil), // 64: cnspec.policy.v1.EntityScoreReq - (*SynchronizeAssetsReq)(nil), // 65: cnspec.policy.v1.SynchronizeAssetsReq - (*SynchronizeAssetsRespAssetDetail)(nil), // 66: cnspec.policy.v1.SynchronizeAssetsRespAssetDetail - (*SynchronizeAssetsResp)(nil), // 67: cnspec.policy.v1.SynchronizeAssetsResp - (*PurgeAssetsRequest)(nil), // 68: cnspec.policy.v1.PurgeAssetsRequest - (*DateFilter)(nil), // 69: cnspec.policy.v1.DateFilter - (*PurgeAssetsConfirmation)(nil), // 70: cnspec.policy.v1.PurgeAssetsConfirmation - nil, // 71: cnspec.policy.v1.Policy.AssetFiltersEntry - nil, // 72: cnspec.policy.v1.Policy.TagsEntry - nil, // 73: cnspec.policy.v1.DeprecatedV7_PolicySpec.PoliciesEntry - nil, // 74: cnspec.policy.v1.DeprecatedV7_PolicySpec.ScoringQueriesEntry - nil, // 75: cnspec.policy.v1.DeprecatedV7_PolicySpec.DataQueriesEntry - nil, // 76: cnspec.policy.v1.DeprecatedV7_Policy.AssetFiltersEntry - nil, // 77: cnspec.policy.v1.DeprecatedV7_Policy.TagsEntry - nil, // 78: cnspec.policy.v1.DeprecatedV7_Policy.PropsEntry - nil, // 79: cnspec.policy.v1.DeprecatedV7_Mquery.TagsEntry - nil, // 80: cnspec.policy.v1.Framework.TagsEntry - nil, // 81: cnspec.policy.v1.Control.TagsEntry - nil, // 82: cnspec.policy.v1.ExecutionJob.QueriesEntry - nil, // 83: cnspec.policy.v1.ExecutionQuery.PropertiesEntry - nil, // 84: cnspec.policy.v1.CollectorJob.ReportingJobsEntry - nil, // 85: cnspec.policy.v1.CollectorJob.ReportingQueriesEntry - nil, // 86: cnspec.policy.v1.CollectorJob.DatapointsEntry - nil, // 87: cnspec.policy.v1.ReportingJob.DeprecatedV7SpecEntry - nil, // 88: cnspec.policy.v1.ReportingJob.DatapointsEntry - nil, // 89: cnspec.policy.v1.ReportingJob.ChildJobsEntry - nil, // 90: cnspec.policy.v1.Report.ScoresEntry - nil, // 91: cnspec.policy.v1.Report.DataEntry - nil, // 92: cnspec.policy.v1.Report.CvssScoresEntry - nil, // 93: cnspec.policy.v1.ReportCollection.AssetsEntry - nil, // 94: cnspec.policy.v1.ReportCollection.ReportsEntry - nil, // 95: cnspec.policy.v1.ReportCollection.ErrorsEntry - nil, // 96: cnspec.policy.v1.ReportCollection.ResolvedPoliciesEntry - nil, // 97: cnspec.policy.v1.PolicyMutationDelta.PolicyDeltasEntry - nil, // 98: cnspec.policy.v1.StoreResultsReq.DataEntry - nil, // 99: cnspec.policy.v1.SynchronizeAssetsResp.DetailsEntry - nil, // 100: cnspec.policy.v1.PurgeAssetsRequest.LabelsEntry - nil, // 101: cnspec.policy.v1.PurgeAssetsConfirmation.ErrorsEntry - (*explorer.Mquery)(nil), // 102: cnquery.explorer.Mquery - (*explorer.Filters)(nil), // 103: cnquery.explorer.Filters - (*explorer.Author)(nil), // 104: cnquery.explorer.Author - (explorer.Action)(0), // 105: cnquery.explorer.Action - (*explorer.Impact)(nil), // 106: cnquery.explorer.Impact - (explorer.ScoringSystem)(0), // 107: cnquery.explorer.ScoringSystem - (*explorer.Property)(nil), // 108: cnquery.explorer.Property - (*explorer.ObjectRef)(nil), // 109: cnquery.explorer.ObjectRef - (*explorer.MqueryRef)(nil), // 110: cnquery.explorer.MqueryRef - (*inventory.Platform)(nil), // 111: cnquery.providers.v1.Platform - (*llx.CodeBundle)(nil), // 112: cnquery.llx.CodeBundle - (*inventory.Asset)(nil), // 113: cnquery.providers.v1.Asset - (*llx.Result)(nil), // 114: cnquery.llx.Result - (*explorer.PropsReq)(nil), // 115: cnquery.explorer.PropsReq - (*explorer.Empty)(nil), // 116: cnquery.explorer.Empty + (*QueryCounts)(nil), // 12: cnspec.policy.v1.QueryCounts + (*Bundle)(nil), // 13: cnspec.policy.v1.Bundle + (*PolicyGroupDocs)(nil), // 14: cnspec.policy.v1.PolicyGroupDocs + (*PolicyDocs)(nil), // 15: cnspec.policy.v1.PolicyDocs + (*Framework)(nil), // 16: cnspec.policy.v1.Framework + (*Frameworks)(nil), // 17: cnspec.policy.v1.Frameworks + (*FrameworkGroup)(nil), // 18: cnspec.policy.v1.FrameworkGroup + (*FrameworkRef)(nil), // 19: cnspec.policy.v1.FrameworkRef + (*Control)(nil), // 20: cnspec.policy.v1.Control + (*FrameworkMap)(nil), // 21: cnspec.policy.v1.FrameworkMap + (*ControlMap)(nil), // 22: cnspec.policy.v1.ControlMap + (*ControlDocs)(nil), // 23: cnspec.policy.v1.ControlDocs + (*ControlRef)(nil), // 24: cnspec.policy.v1.ControlRef + (*Asset)(nil), // 25: cnspec.policy.v1.Asset + (*ResolvedPolicy)(nil), // 26: cnspec.policy.v1.ResolvedPolicy + (*ExecutionJob)(nil), // 27: cnspec.policy.v1.ExecutionJob + (*ExecutionQuery)(nil), // 28: cnspec.policy.v1.ExecutionQuery + (*CollectorJob)(nil), // 29: cnspec.policy.v1.CollectorJob + (*StringArray)(nil), // 30: cnspec.policy.v1.StringArray + (*DataQueryInfo)(nil), // 31: cnspec.policy.v1.DataQueryInfo + (*ReportingJob)(nil), // 32: cnspec.policy.v1.ReportingJob + (*Report)(nil), // 33: cnspec.policy.v1.Report + (*Reports)(nil), // 34: cnspec.policy.v1.Reports + (*ReportCollection)(nil), // 35: cnspec.policy.v1.ReportCollection + (*FrameworkReport)(nil), // 36: cnspec.policy.v1.FrameworkReport + (*ControlScore)(nil), // 37: cnspec.policy.v1.ControlScore + (*Cvss)(nil), // 38: cnspec.policy.v1.Cvss + (*CvssStats)(nil), // 39: cnspec.policy.v1.CvssStats + (*Score)(nil), // 40: cnspec.policy.v1.Score + (*Stats)(nil), // 41: cnspec.policy.v1.Stats + (*ScoreDistribution)(nil), // 42: cnspec.policy.v1.ScoreDistribution + (*Empty)(nil), // 43: cnspec.policy.v1.Empty + (*Mrn)(nil), // 44: cnspec.policy.v1.Mrn + (*Mqueries)(nil), // 45: cnspec.policy.v1.Mqueries + (*ListReq)(nil), // 46: cnspec.policy.v1.ListReq + (*DefaultPoliciesReq)(nil), // 47: cnspec.policy.v1.DefaultPoliciesReq + (*URLs)(nil), // 48: cnspec.policy.v1.URLs + (*PolicyAssignment)(nil), // 49: cnspec.policy.v1.PolicyAssignment + (*PolicyMutationDelta)(nil), // 50: cnspec.policy.v1.PolicyMutationDelta + (*PolicyDelta)(nil), // 51: cnspec.policy.v1.PolicyDelta + (*ResolveReq)(nil), // 52: cnspec.policy.v1.ResolveReq + (*UpdateAssetJobsReq)(nil), // 53: cnspec.policy.v1.UpdateAssetJobsReq + (*StoreResultsReq)(nil), // 54: cnspec.policy.v1.StoreResultsReq + (*EntityScoreReq)(nil), // 55: cnspec.policy.v1.EntityScoreReq + (*SynchronizeAssetsReq)(nil), // 56: cnspec.policy.v1.SynchronizeAssetsReq + (*SynchronizeAssetsRespAssetDetail)(nil), // 57: cnspec.policy.v1.SynchronizeAssetsRespAssetDetail + (*SynchronizeAssetsResp)(nil), // 58: cnspec.policy.v1.SynchronizeAssetsResp + (*PurgeAssetsRequest)(nil), // 59: cnspec.policy.v1.PurgeAssetsRequest + (*DateFilter)(nil), // 60: cnspec.policy.v1.DateFilter + (*PurgeAssetsConfirmation)(nil), // 61: cnspec.policy.v1.PurgeAssetsConfirmation + nil, // 62: cnspec.policy.v1.Policy.TagsEntry + nil, // 63: cnspec.policy.v1.Framework.TagsEntry + nil, // 64: cnspec.policy.v1.Control.TagsEntry + nil, // 65: cnspec.policy.v1.ExecutionJob.QueriesEntry + nil, // 66: cnspec.policy.v1.ExecutionQuery.PropertiesEntry + nil, // 67: cnspec.policy.v1.CollectorJob.ReportingJobsEntry + nil, // 68: cnspec.policy.v1.CollectorJob.ReportingQueriesEntry + nil, // 69: cnspec.policy.v1.CollectorJob.DatapointsEntry + nil, // 70: cnspec.policy.v1.ReportingJob.DatapointsEntry + nil, // 71: cnspec.policy.v1.ReportingJob.ChildJobsEntry + nil, // 72: cnspec.policy.v1.Report.ScoresEntry + nil, // 73: cnspec.policy.v1.Report.DataEntry + nil, // 74: cnspec.policy.v1.Report.CvssScoresEntry + nil, // 75: cnspec.policy.v1.ReportCollection.AssetsEntry + nil, // 76: cnspec.policy.v1.ReportCollection.ReportsEntry + nil, // 77: cnspec.policy.v1.ReportCollection.ErrorsEntry + nil, // 78: cnspec.policy.v1.ReportCollection.ResolvedPoliciesEntry + nil, // 79: cnspec.policy.v1.PolicyMutationDelta.PolicyDeltasEntry + nil, // 80: cnspec.policy.v1.StoreResultsReq.DataEntry + nil, // 81: cnspec.policy.v1.SynchronizeAssetsResp.DetailsEntry + nil, // 82: cnspec.policy.v1.PurgeAssetsRequest.LabelsEntry + nil, // 83: cnspec.policy.v1.PurgeAssetsConfirmation.ErrorsEntry + (*explorer.Mquery)(nil), // 84: cnquery.explorer.Mquery + (*explorer.Filters)(nil), // 85: cnquery.explorer.Filters + (*explorer.Author)(nil), // 86: cnquery.explorer.Author + (explorer.Action)(0), // 87: cnquery.explorer.Action + (*explorer.Impact)(nil), // 88: cnquery.explorer.Impact + (explorer.ScoringSystem)(0), // 89: cnquery.explorer.ScoringSystem + (*explorer.Property)(nil), // 90: cnquery.explorer.Property + (*explorer.ObjectRef)(nil), // 91: cnquery.explorer.ObjectRef + (*explorer.MqueryRef)(nil), // 92: cnquery.explorer.MqueryRef + (*inventory.Platform)(nil), // 93: cnquery.providers.v1.Platform + (*llx.CodeBundle)(nil), // 94: cnquery.llx.CodeBundle + (*inventory.Asset)(nil), // 95: cnquery.providers.v1.Asset + (*llx.Result)(nil), // 96: cnquery.llx.Result + (*explorer.PropsReq)(nil), // 97: cnquery.explorer.PropsReq + (*explorer.Empty)(nil), // 98: cnquery.explorer.Empty } var file_cnspec_policy_proto_depIdxs = []int32{ 9, // 0: cnspec.policy.v1.PolicyGroup.policies:type_name -> cnspec.policy.v1.PolicyRef - 102, // 1: cnspec.policy.v1.PolicyGroup.checks:type_name -> cnquery.explorer.Mquery - 102, // 2: cnspec.policy.v1.PolicyGroup.queries:type_name -> cnquery.explorer.Mquery + 84, // 1: cnspec.policy.v1.PolicyGroup.checks:type_name -> cnquery.explorer.Mquery + 84, // 2: cnspec.policy.v1.PolicyGroup.queries:type_name -> cnquery.explorer.Mquery 0, // 3: cnspec.policy.v1.PolicyGroup.type:type_name -> cnspec.policy.v1.GroupType - 103, // 4: cnspec.policy.v1.PolicyGroup.filters:type_name -> cnquery.explorer.Filters - 19, // 5: cnspec.policy.v1.PolicyGroup.docs:type_name -> cnspec.policy.v1.PolicyGroupDocs - 104, // 6: cnspec.policy.v1.PolicyGroup.authors:type_name -> cnquery.explorer.Author - 105, // 7: cnspec.policy.v1.PolicyRef.action:type_name -> cnquery.explorer.Action - 106, // 8: cnspec.policy.v1.PolicyRef.impact:type_name -> cnquery.explorer.Impact - 12, // 9: cnspec.policy.v1.Policy.specs:type_name -> cnspec.policy.v1.DeprecatedV7_PolicySpec - 71, // 10: cnspec.policy.v1.Policy.asset_filters:type_name -> cnspec.policy.v1.Policy.AssetFiltersEntry - 8, // 11: cnspec.policy.v1.Policy.groups:type_name -> cnspec.policy.v1.PolicyGroup - 20, // 12: cnspec.policy.v1.Policy.docs:type_name -> cnspec.policy.v1.PolicyDocs - 107, // 13: cnspec.policy.v1.Policy.scoring_system:type_name -> cnquery.explorer.ScoringSystem - 104, // 14: cnspec.policy.v1.Policy.authors:type_name -> cnquery.explorer.Author - 72, // 15: cnspec.policy.v1.Policy.tags:type_name -> cnspec.policy.v1.Policy.TagsEntry - 108, // 16: cnspec.policy.v1.Policy.props:type_name -> cnquery.explorer.Property - 103, // 17: cnspec.policy.v1.Policy.computed_filters:type_name -> cnquery.explorer.Filters - 17, // 18: cnspec.policy.v1.Policy.query_counts:type_name -> cnspec.policy.v1.QueryCounts - 13, // 19: cnspec.policy.v1.Policies.deprecated_v7_items:type_name -> cnspec.policy.v1.DeprecatedV7_Policy - 10, // 20: cnspec.policy.v1.Policies.items:type_name -> cnspec.policy.v1.Policy - 73, // 21: cnspec.policy.v1.DeprecatedV7_PolicySpec.policies:type_name -> cnspec.policy.v1.DeprecatedV7_PolicySpec.PoliciesEntry - 74, // 22: cnspec.policy.v1.DeprecatedV7_PolicySpec.scoring_queries:type_name -> cnspec.policy.v1.DeprecatedV7_PolicySpec.ScoringQueriesEntry - 75, // 23: cnspec.policy.v1.DeprecatedV7_PolicySpec.data_queries:type_name -> cnspec.policy.v1.DeprecatedV7_PolicySpec.DataQueriesEntry - 21, // 24: cnspec.policy.v1.DeprecatedV7_PolicySpec.asset_filter:type_name -> cnspec.policy.v1.DeprecatedV7_Mquery - 19, // 25: cnspec.policy.v1.DeprecatedV7_PolicySpec.docs:type_name -> cnspec.policy.v1.PolicyGroupDocs - 12, // 26: cnspec.policy.v1.DeprecatedV7_Policy.specs:type_name -> cnspec.policy.v1.DeprecatedV7_PolicySpec - 76, // 27: cnspec.policy.v1.DeprecatedV7_Policy.asset_filters:type_name -> cnspec.policy.v1.DeprecatedV7_Policy.AssetFiltersEntry - 107, // 28: cnspec.policy.v1.DeprecatedV7_Policy.scoring_system:type_name -> cnquery.explorer.ScoringSystem - 16, // 29: cnspec.policy.v1.DeprecatedV7_Policy.authors:type_name -> cnspec.policy.v1.DeprecatedV7_Author - 77, // 30: cnspec.policy.v1.DeprecatedV7_Policy.tags:type_name -> cnspec.policy.v1.DeprecatedV7_Policy.TagsEntry - 78, // 31: cnspec.policy.v1.DeprecatedV7_Policy.props:type_name -> cnspec.policy.v1.DeprecatedV7_Policy.PropsEntry - 20, // 32: cnspec.policy.v1.DeprecatedV7_Policy.docs:type_name -> cnspec.policy.v1.PolicyDocs - 17, // 33: cnspec.policy.v1.DeprecatedV7_Policy.query_counts:type_name -> cnspec.policy.v1.QueryCounts - 107, // 34: cnspec.policy.v1.DeprecatedV7_ScoringSpec.scoring_system:type_name -> cnquery.explorer.ScoringSystem - 1, // 35: cnspec.policy.v1.DeprecatedV7_ScoringSpec.action:type_name -> cnspec.policy.v1.QueryAction - 22, // 36: cnspec.policy.v1.DeprecatedV7_ScoringSpec.severity:type_name -> cnspec.policy.v1.DeprecatedV7_SeverityValue - 21, // 37: cnspec.policy.v1.DeprecatedV7_Bundle.queries:type_name -> cnspec.policy.v1.DeprecatedV7_Mquery - 13, // 38: cnspec.policy.v1.DeprecatedV7_Bundle.policies:type_name -> cnspec.policy.v1.DeprecatedV7_Policy - 21, // 39: cnspec.policy.v1.DeprecatedV7_Bundle.props:type_name -> cnspec.policy.v1.DeprecatedV7_Mquery - 20, // 40: cnspec.policy.v1.DeprecatedV7_Bundle.docs:type_name -> cnspec.policy.v1.PolicyDocs - 10, // 41: cnspec.policy.v1.Bundle.policies:type_name -> cnspec.policy.v1.Policy - 108, // 42: cnspec.policy.v1.Bundle.props:type_name -> cnquery.explorer.Property - 102, // 43: cnspec.policy.v1.Bundle.queries:type_name -> cnquery.explorer.Mquery - 25, // 44: cnspec.policy.v1.Bundle.frameworks:type_name -> cnspec.policy.v1.Framework - 30, // 45: cnspec.policy.v1.Bundle.framework_maps:type_name -> cnspec.policy.v1.FrameworkMap - 20, // 46: cnspec.policy.v1.Bundle.docs:type_name -> cnspec.policy.v1.PolicyDocs - 13, // 47: cnspec.policy.v1.Bundle.deprecated_v7_policies:type_name -> cnspec.policy.v1.DeprecatedV7_Policy - 21, // 48: cnspec.policy.v1.Bundle.deprecated_v7_queries:type_name -> cnspec.policy.v1.DeprecatedV7_Mquery - 22, // 49: cnspec.policy.v1.DeprecatedV7_Mquery.severity:type_name -> cnspec.policy.v1.DeprecatedV7_SeverityValue - 23, // 50: cnspec.policy.v1.DeprecatedV7_Mquery.docs:type_name -> cnspec.policy.v1.DeprecatedV7_MqueryDocs - 24, // 51: cnspec.policy.v1.DeprecatedV7_Mquery.refs:type_name -> cnspec.policy.v1.DeprecatedV7_MqueryRef - 79, // 52: cnspec.policy.v1.DeprecatedV7_Mquery.tags:type_name -> cnspec.policy.v1.DeprecatedV7_Mquery.TagsEntry - 27, // 53: cnspec.policy.v1.Framework.groups:type_name -> cnspec.policy.v1.FrameworkGroup - 20, // 54: cnspec.policy.v1.Framework.docs:type_name -> cnspec.policy.v1.PolicyDocs - 104, // 55: cnspec.policy.v1.Framework.authors:type_name -> cnquery.explorer.Author - 80, // 56: cnspec.policy.v1.Framework.tags:type_name -> cnspec.policy.v1.Framework.TagsEntry - 28, // 57: cnspec.policy.v1.Framework.dependencies:type_name -> cnspec.policy.v1.FrameworkRef - 30, // 58: cnspec.policy.v1.Framework.framework_maps:type_name -> cnspec.policy.v1.FrameworkMap - 25, // 59: cnspec.policy.v1.Frameworks.items:type_name -> cnspec.policy.v1.Framework - 29, // 60: cnspec.policy.v1.FrameworkGroup.controls:type_name -> cnspec.policy.v1.Control - 0, // 61: cnspec.policy.v1.FrameworkGroup.type:type_name -> cnspec.policy.v1.GroupType - 19, // 62: cnspec.policy.v1.FrameworkGroup.docs:type_name -> cnspec.policy.v1.PolicyGroupDocs - 104, // 63: cnspec.policy.v1.FrameworkGroup.authors:type_name -> cnquery.explorer.Author - 104, // 64: cnspec.policy.v1.FrameworkGroup.reviewers:type_name -> cnquery.explorer.Author - 2, // 65: cnspec.policy.v1.FrameworkGroup.review_status:type_name -> cnspec.policy.v1.ReviewStatus - 105, // 66: cnspec.policy.v1.FrameworkRef.action:type_name -> cnquery.explorer.Action - 32, // 67: cnspec.policy.v1.Control.docs:type_name -> cnspec.policy.v1.ControlDocs - 81, // 68: cnspec.policy.v1.Control.tags:type_name -> cnspec.policy.v1.Control.TagsEntry - 105, // 69: cnspec.policy.v1.Control.action:type_name -> cnquery.explorer.Action - 109, // 70: cnspec.policy.v1.FrameworkMap.framework_dependencies:type_name -> cnquery.explorer.ObjectRef - 109, // 71: cnspec.policy.v1.FrameworkMap.policy_dependencies:type_name -> cnquery.explorer.ObjectRef - 109, // 72: cnspec.policy.v1.FrameworkMap.query_pack_dependencies:type_name -> cnquery.explorer.ObjectRef - 31, // 73: cnspec.policy.v1.FrameworkMap.controls:type_name -> cnspec.policy.v1.ControlMap - 109, // 74: cnspec.policy.v1.FrameworkMap.framework_owner:type_name -> cnquery.explorer.ObjectRef - 33, // 75: cnspec.policy.v1.ControlMap.checks:type_name -> cnspec.policy.v1.ControlRef - 33, // 76: cnspec.policy.v1.ControlMap.policies:type_name -> cnspec.policy.v1.ControlRef - 33, // 77: cnspec.policy.v1.ControlMap.controls:type_name -> cnspec.policy.v1.ControlRef - 33, // 78: cnspec.policy.v1.ControlMap.queries:type_name -> cnspec.policy.v1.ControlRef - 110, // 79: cnspec.policy.v1.ControlDocs.refs:type_name -> cnquery.explorer.MqueryRef - 105, // 80: cnspec.policy.v1.ControlRef.action:type_name -> cnquery.explorer.Action - 111, // 81: cnspec.policy.v1.Asset.platform:type_name -> cnquery.providers.v1.Platform - 21, // 82: cnspec.policy.v1.ResolvedPolicy.deprecated_v7_filters:type_name -> cnspec.policy.v1.DeprecatedV7_Mquery - 36, // 83: cnspec.policy.v1.ResolvedPolicy.execution_job:type_name -> cnspec.policy.v1.ExecutionJob - 38, // 84: cnspec.policy.v1.ResolvedPolicy.collector_job:type_name -> cnspec.policy.v1.CollectorJob - 102, // 85: cnspec.policy.v1.ResolvedPolicy.filters:type_name -> cnquery.explorer.Mquery - 82, // 86: cnspec.policy.v1.ExecutionJob.queries:type_name -> cnspec.policy.v1.ExecutionJob.QueriesEntry - 83, // 87: cnspec.policy.v1.ExecutionQuery.properties:type_name -> cnspec.policy.v1.ExecutionQuery.PropertiesEntry - 112, // 88: cnspec.policy.v1.ExecutionQuery.code:type_name -> cnquery.llx.CodeBundle - 84, // 89: cnspec.policy.v1.CollectorJob.reporting_jobs:type_name -> cnspec.policy.v1.CollectorJob.ReportingJobsEntry - 85, // 90: cnspec.policy.v1.CollectorJob.reporting_queries:type_name -> cnspec.policy.v1.CollectorJob.ReportingQueriesEntry - 86, // 91: cnspec.policy.v1.CollectorJob.datapoints:type_name -> cnspec.policy.v1.CollectorJob.DatapointsEntry - 87, // 92: cnspec.policy.v1.ReportingJob.deprecated_v7_spec:type_name -> cnspec.policy.v1.ReportingJob.DeprecatedV7SpecEntry - 107, // 93: cnspec.policy.v1.ReportingJob.scoring_system:type_name -> cnquery.explorer.ScoringSystem - 88, // 94: cnspec.policy.v1.ReportingJob.datapoints:type_name -> cnspec.policy.v1.ReportingJob.DatapointsEntry - 89, // 95: cnspec.policy.v1.ReportingJob.child_jobs:type_name -> cnspec.policy.v1.ReportingJob.ChildJobsEntry - 6, // 96: cnspec.policy.v1.ReportingJob.type:type_name -> cnspec.policy.v1.ReportingJob.Type - 49, // 97: cnspec.policy.v1.Report.score:type_name -> cnspec.policy.v1.Score - 90, // 98: cnspec.policy.v1.Report.scores:type_name -> cnspec.policy.v1.Report.ScoresEntry - 91, // 99: cnspec.policy.v1.Report.data:type_name -> cnspec.policy.v1.Report.DataEntry - 50, // 100: cnspec.policy.v1.Report.stats:type_name -> cnspec.policy.v1.Stats - 50, // 101: cnspec.policy.v1.Report.ignored_stats:type_name -> cnspec.policy.v1.Stats - 47, // 102: cnspec.policy.v1.Report.cvss_score:type_name -> cnspec.policy.v1.Cvss - 92, // 103: cnspec.policy.v1.Report.cvss_scores:type_name -> cnspec.policy.v1.Report.CvssScoresEntry - 48, // 104: cnspec.policy.v1.Report.cvss_stats:type_name -> cnspec.policy.v1.CvssStats - 42, // 105: cnspec.policy.v1.Reports.reports:type_name -> cnspec.policy.v1.Report - 93, // 106: cnspec.policy.v1.ReportCollection.assets:type_name -> cnspec.policy.v1.ReportCollection.AssetsEntry - 18, // 107: cnspec.policy.v1.ReportCollection.bundle:type_name -> cnspec.policy.v1.Bundle - 94, // 108: cnspec.policy.v1.ReportCollection.reports:type_name -> cnspec.policy.v1.ReportCollection.ReportsEntry - 95, // 109: cnspec.policy.v1.ReportCollection.errors:type_name -> cnspec.policy.v1.ReportCollection.ErrorsEntry - 96, // 110: cnspec.policy.v1.ReportCollection.resolved_policies:type_name -> cnspec.policy.v1.ReportCollection.ResolvedPoliciesEntry - 46, // 111: cnspec.policy.v1.FrameworkReport.score:type_name -> cnspec.policy.v1.ControlScore - 46, // 112: cnspec.policy.v1.FrameworkReport.controls:type_name -> cnspec.policy.v1.ControlScore - 46, // 113: cnspec.policy.v1.ControlScore.assets:type_name -> cnspec.policy.v1.ControlScore - 51, // 114: cnspec.policy.v1.ControlScore.scores:type_name -> cnspec.policy.v1.ScoreDistribution - 51, // 115: cnspec.policy.v1.Stats.failed:type_name -> cnspec.policy.v1.ScoreDistribution - 51, // 116: cnspec.policy.v1.Stats.passed:type_name -> cnspec.policy.v1.ScoreDistribution - 51, // 117: cnspec.policy.v1.Stats.errors:type_name -> cnspec.policy.v1.ScoreDistribution - 21, // 118: cnspec.policy.v1.Mqueries.deprecated_v7_items:type_name -> cnspec.policy.v1.DeprecatedV7_Mquery - 102, // 119: cnspec.policy.v1.Mqueries.items:type_name -> cnquery.explorer.Mquery - 105, // 120: cnspec.policy.v1.PolicyAssignment.action:type_name -> cnquery.explorer.Action - 97, // 121: cnspec.policy.v1.PolicyMutationDelta.policy_deltas:type_name -> cnspec.policy.v1.PolicyMutationDelta.PolicyDeltasEntry - 105, // 122: cnspec.policy.v1.PolicyMutationDelta.action:type_name -> cnquery.explorer.Action - 7, // 123: cnspec.policy.v1.PolicyDelta.action:type_name -> cnspec.policy.v1.PolicyDelta.PolicyAssignmentActionType - 102, // 124: cnspec.policy.v1.ResolveReq.asset_filters:type_name -> cnquery.explorer.Mquery - 102, // 125: cnspec.policy.v1.UpdateAssetJobsReq.asset_filters:type_name -> cnquery.explorer.Mquery - 49, // 126: cnspec.policy.v1.StoreResultsReq.scores:type_name -> cnspec.policy.v1.Score - 98, // 127: cnspec.policy.v1.StoreResultsReq.data:type_name -> cnspec.policy.v1.StoreResultsReq.DataEntry - 47, // 128: cnspec.policy.v1.StoreResultsReq.cvssScores:type_name -> cnspec.policy.v1.Cvss - 113, // 129: cnspec.policy.v1.SynchronizeAssetsReq.list:type_name -> cnquery.providers.v1.Asset - 99, // 130: cnspec.policy.v1.SynchronizeAssetsResp.details:type_name -> cnspec.policy.v1.SynchronizeAssetsResp.DetailsEntry - 69, // 131: cnspec.policy.v1.PurgeAssetsRequest.date_filter:type_name -> cnspec.policy.v1.DateFilter - 100, // 132: cnspec.policy.v1.PurgeAssetsRequest.labels:type_name -> cnspec.policy.v1.PurgeAssetsRequest.LabelsEntry - 4, // 133: cnspec.policy.v1.DateFilter.comparison:type_name -> cnspec.policy.v1.Comparison - 5, // 134: cnspec.policy.v1.DateFilter.field:type_name -> cnspec.policy.v1.DateFilterField - 101, // 135: cnspec.policy.v1.PurgeAssetsConfirmation.errors:type_name -> cnspec.policy.v1.PurgeAssetsConfirmation.ErrorsEntry - 21, // 136: cnspec.policy.v1.Policy.AssetFiltersEntry.value:type_name -> cnspec.policy.v1.DeprecatedV7_Mquery - 14, // 137: cnspec.policy.v1.DeprecatedV7_PolicySpec.PoliciesEntry.value:type_name -> cnspec.policy.v1.DeprecatedV7_ScoringSpec - 14, // 138: cnspec.policy.v1.DeprecatedV7_PolicySpec.ScoringQueriesEntry.value:type_name -> cnspec.policy.v1.DeprecatedV7_ScoringSpec - 1, // 139: cnspec.policy.v1.DeprecatedV7_PolicySpec.DataQueriesEntry.value:type_name -> cnspec.policy.v1.QueryAction - 21, // 140: cnspec.policy.v1.DeprecatedV7_Policy.AssetFiltersEntry.value:type_name -> cnspec.policy.v1.DeprecatedV7_Mquery - 37, // 141: cnspec.policy.v1.ExecutionJob.QueriesEntry.value:type_name -> cnspec.policy.v1.ExecutionQuery - 41, // 142: cnspec.policy.v1.CollectorJob.ReportingJobsEntry.value:type_name -> cnspec.policy.v1.ReportingJob - 39, // 143: cnspec.policy.v1.CollectorJob.ReportingQueriesEntry.value:type_name -> cnspec.policy.v1.StringArray - 40, // 144: cnspec.policy.v1.CollectorJob.DatapointsEntry.value:type_name -> cnspec.policy.v1.DataQueryInfo - 14, // 145: cnspec.policy.v1.ReportingJob.DeprecatedV7SpecEntry.value:type_name -> cnspec.policy.v1.DeprecatedV7_ScoringSpec - 106, // 146: cnspec.policy.v1.ReportingJob.ChildJobsEntry.value:type_name -> cnquery.explorer.Impact - 49, // 147: cnspec.policy.v1.Report.ScoresEntry.value:type_name -> cnspec.policy.v1.Score - 114, // 148: cnspec.policy.v1.Report.DataEntry.value:type_name -> cnquery.llx.Result - 47, // 149: cnspec.policy.v1.Report.CvssScoresEntry.value:type_name -> cnspec.policy.v1.Cvss - 113, // 150: cnspec.policy.v1.ReportCollection.AssetsEntry.value:type_name -> cnquery.providers.v1.Asset - 42, // 151: cnspec.policy.v1.ReportCollection.ReportsEntry.value:type_name -> cnspec.policy.v1.Report - 35, // 152: cnspec.policy.v1.ReportCollection.ResolvedPoliciesEntry.value:type_name -> cnspec.policy.v1.ResolvedPolicy - 60, // 153: cnspec.policy.v1.PolicyMutationDelta.PolicyDeltasEntry.value:type_name -> cnspec.policy.v1.PolicyDelta - 114, // 154: cnspec.policy.v1.StoreResultsReq.DataEntry.value:type_name -> cnquery.llx.Result - 66, // 155: cnspec.policy.v1.SynchronizeAssetsResp.DetailsEntry.value:type_name -> cnspec.policy.v1.SynchronizeAssetsRespAssetDetail - 18, // 156: cnspec.policy.v1.PolicyHub.SetBundle:input_type -> cnspec.policy.v1.Bundle - 18, // 157: cnspec.policy.v1.PolicyHub.ValidateBundle:input_type -> cnspec.policy.v1.Bundle - 53, // 158: cnspec.policy.v1.PolicyHub.GetBundle:input_type -> cnspec.policy.v1.Mrn - 53, // 159: cnspec.policy.v1.PolicyHub.GetPolicy:input_type -> cnspec.policy.v1.Mrn - 53, // 160: cnspec.policy.v1.PolicyHub.DeletePolicy:input_type -> cnspec.policy.v1.Mrn - 53, // 161: cnspec.policy.v1.PolicyHub.GetPolicyFilters:input_type -> cnspec.policy.v1.Mrn - 55, // 162: cnspec.policy.v1.PolicyHub.List:input_type -> cnspec.policy.v1.ListReq - 56, // 163: cnspec.policy.v1.PolicyHub.DefaultPolicies:input_type -> cnspec.policy.v1.DefaultPoliciesReq - 53, // 164: cnspec.policy.v1.PolicyHub.GetFramework:input_type -> cnspec.policy.v1.Mrn - 53, // 165: cnspec.policy.v1.PolicyHub.DeleteFramework:input_type -> cnspec.policy.v1.Mrn - 55, // 166: cnspec.policy.v1.PolicyHub.ListFrameworks:input_type -> cnspec.policy.v1.ListReq - 58, // 167: cnspec.policy.v1.PolicyResolver.Assign:input_type -> cnspec.policy.v1.PolicyAssignment - 58, // 168: cnspec.policy.v1.PolicyResolver.Unassign:input_type -> cnspec.policy.v1.PolicyAssignment - 115, // 169: cnspec.policy.v1.PolicyResolver.SetProps:input_type -> cnquery.explorer.PropsReq - 61, // 170: cnspec.policy.v1.PolicyResolver.Resolve:input_type -> cnspec.policy.v1.ResolveReq - 62, // 171: cnspec.policy.v1.PolicyResolver.UpdateAssetJobs:input_type -> cnspec.policy.v1.UpdateAssetJobsReq - 62, // 172: cnspec.policy.v1.PolicyResolver.ResolveAndUpdateJobs:input_type -> cnspec.policy.v1.UpdateAssetJobsReq - 53, // 173: cnspec.policy.v1.PolicyResolver.GetResolvedPolicy:input_type -> cnspec.policy.v1.Mrn - 63, // 174: cnspec.policy.v1.PolicyResolver.StoreResults:input_type -> cnspec.policy.v1.StoreResultsReq - 64, // 175: cnspec.policy.v1.PolicyResolver.GetReport:input_type -> cnspec.policy.v1.EntityScoreReq - 64, // 176: cnspec.policy.v1.PolicyResolver.GetFrameworkReport:input_type -> cnspec.policy.v1.EntityScoreReq - 64, // 177: cnspec.policy.v1.PolicyResolver.GetScore:input_type -> cnspec.policy.v1.EntityScoreReq - 65, // 178: cnspec.policy.v1.PolicyResolver.SynchronizeAssets:input_type -> cnspec.policy.v1.SynchronizeAssetsReq - 68, // 179: cnspec.policy.v1.PolicyResolver.PurgeAssets:input_type -> cnspec.policy.v1.PurgeAssetsRequest - 52, // 180: cnspec.policy.v1.PolicyHub.SetBundle:output_type -> cnspec.policy.v1.Empty - 52, // 181: cnspec.policy.v1.PolicyHub.ValidateBundle:output_type -> cnspec.policy.v1.Empty - 18, // 182: cnspec.policy.v1.PolicyHub.GetBundle:output_type -> cnspec.policy.v1.Bundle - 10, // 183: cnspec.policy.v1.PolicyHub.GetPolicy:output_type -> cnspec.policy.v1.Policy - 52, // 184: cnspec.policy.v1.PolicyHub.DeletePolicy:output_type -> cnspec.policy.v1.Empty - 54, // 185: cnspec.policy.v1.PolicyHub.GetPolicyFilters:output_type -> cnspec.policy.v1.Mqueries - 11, // 186: cnspec.policy.v1.PolicyHub.List:output_type -> cnspec.policy.v1.Policies - 57, // 187: cnspec.policy.v1.PolicyHub.DefaultPolicies:output_type -> cnspec.policy.v1.URLs - 25, // 188: cnspec.policy.v1.PolicyHub.GetFramework:output_type -> cnspec.policy.v1.Framework - 52, // 189: cnspec.policy.v1.PolicyHub.DeleteFramework:output_type -> cnspec.policy.v1.Empty - 26, // 190: cnspec.policy.v1.PolicyHub.ListFrameworks:output_type -> cnspec.policy.v1.Frameworks - 52, // 191: cnspec.policy.v1.PolicyResolver.Assign:output_type -> cnspec.policy.v1.Empty - 52, // 192: cnspec.policy.v1.PolicyResolver.Unassign:output_type -> cnspec.policy.v1.Empty - 116, // 193: cnspec.policy.v1.PolicyResolver.SetProps:output_type -> cnquery.explorer.Empty - 35, // 194: cnspec.policy.v1.PolicyResolver.Resolve:output_type -> cnspec.policy.v1.ResolvedPolicy - 52, // 195: cnspec.policy.v1.PolicyResolver.UpdateAssetJobs:output_type -> cnspec.policy.v1.Empty - 35, // 196: cnspec.policy.v1.PolicyResolver.ResolveAndUpdateJobs:output_type -> cnspec.policy.v1.ResolvedPolicy - 35, // 197: cnspec.policy.v1.PolicyResolver.GetResolvedPolicy:output_type -> cnspec.policy.v1.ResolvedPolicy - 52, // 198: cnspec.policy.v1.PolicyResolver.StoreResults:output_type -> cnspec.policy.v1.Empty - 42, // 199: cnspec.policy.v1.PolicyResolver.GetReport:output_type -> cnspec.policy.v1.Report - 45, // 200: cnspec.policy.v1.PolicyResolver.GetFrameworkReport:output_type -> cnspec.policy.v1.FrameworkReport - 42, // 201: cnspec.policy.v1.PolicyResolver.GetScore:output_type -> cnspec.policy.v1.Report - 67, // 202: cnspec.policy.v1.PolicyResolver.SynchronizeAssets:output_type -> cnspec.policy.v1.SynchronizeAssetsResp - 70, // 203: cnspec.policy.v1.PolicyResolver.PurgeAssets:output_type -> cnspec.policy.v1.PurgeAssetsConfirmation - 180, // [180:204] is the sub-list for method output_type - 156, // [156:180] is the sub-list for method input_type - 156, // [156:156] is the sub-list for extension type_name - 156, // [156:156] is the sub-list for extension extendee - 0, // [0:156] is the sub-list for field type_name + 85, // 4: cnspec.policy.v1.PolicyGroup.filters:type_name -> cnquery.explorer.Filters + 14, // 5: cnspec.policy.v1.PolicyGroup.docs:type_name -> cnspec.policy.v1.PolicyGroupDocs + 86, // 6: cnspec.policy.v1.PolicyGroup.authors:type_name -> cnquery.explorer.Author + 87, // 7: cnspec.policy.v1.PolicyRef.action:type_name -> cnquery.explorer.Action + 88, // 8: cnspec.policy.v1.PolicyRef.impact:type_name -> cnquery.explorer.Impact + 8, // 9: cnspec.policy.v1.Policy.groups:type_name -> cnspec.policy.v1.PolicyGroup + 15, // 10: cnspec.policy.v1.Policy.docs:type_name -> cnspec.policy.v1.PolicyDocs + 89, // 11: cnspec.policy.v1.Policy.scoring_system:type_name -> cnquery.explorer.ScoringSystem + 86, // 12: cnspec.policy.v1.Policy.authors:type_name -> cnquery.explorer.Author + 62, // 13: cnspec.policy.v1.Policy.tags:type_name -> cnspec.policy.v1.Policy.TagsEntry + 90, // 14: cnspec.policy.v1.Policy.props:type_name -> cnquery.explorer.Property + 85, // 15: cnspec.policy.v1.Policy.computed_filters:type_name -> cnquery.explorer.Filters + 12, // 16: cnspec.policy.v1.Policy.query_counts:type_name -> cnspec.policy.v1.QueryCounts + 10, // 17: cnspec.policy.v1.Policies.items:type_name -> cnspec.policy.v1.Policy + 10, // 18: cnspec.policy.v1.Bundle.policies:type_name -> cnspec.policy.v1.Policy + 90, // 19: cnspec.policy.v1.Bundle.props:type_name -> cnquery.explorer.Property + 84, // 20: cnspec.policy.v1.Bundle.queries:type_name -> cnquery.explorer.Mquery + 16, // 21: cnspec.policy.v1.Bundle.frameworks:type_name -> cnspec.policy.v1.Framework + 21, // 22: cnspec.policy.v1.Bundle.framework_maps:type_name -> cnspec.policy.v1.FrameworkMap + 15, // 23: cnspec.policy.v1.Bundle.docs:type_name -> cnspec.policy.v1.PolicyDocs + 18, // 24: cnspec.policy.v1.Framework.groups:type_name -> cnspec.policy.v1.FrameworkGroup + 15, // 25: cnspec.policy.v1.Framework.docs:type_name -> cnspec.policy.v1.PolicyDocs + 86, // 26: cnspec.policy.v1.Framework.authors:type_name -> cnquery.explorer.Author + 63, // 27: cnspec.policy.v1.Framework.tags:type_name -> cnspec.policy.v1.Framework.TagsEntry + 19, // 28: cnspec.policy.v1.Framework.dependencies:type_name -> cnspec.policy.v1.FrameworkRef + 21, // 29: cnspec.policy.v1.Framework.framework_maps:type_name -> cnspec.policy.v1.FrameworkMap + 16, // 30: cnspec.policy.v1.Frameworks.items:type_name -> cnspec.policy.v1.Framework + 20, // 31: cnspec.policy.v1.FrameworkGroup.controls:type_name -> cnspec.policy.v1.Control + 0, // 32: cnspec.policy.v1.FrameworkGroup.type:type_name -> cnspec.policy.v1.GroupType + 14, // 33: cnspec.policy.v1.FrameworkGroup.docs:type_name -> cnspec.policy.v1.PolicyGroupDocs + 86, // 34: cnspec.policy.v1.FrameworkGroup.authors:type_name -> cnquery.explorer.Author + 86, // 35: cnspec.policy.v1.FrameworkGroup.reviewers:type_name -> cnquery.explorer.Author + 2, // 36: cnspec.policy.v1.FrameworkGroup.review_status:type_name -> cnspec.policy.v1.ReviewStatus + 87, // 37: cnspec.policy.v1.FrameworkRef.action:type_name -> cnquery.explorer.Action + 23, // 38: cnspec.policy.v1.Control.docs:type_name -> cnspec.policy.v1.ControlDocs + 64, // 39: cnspec.policy.v1.Control.tags:type_name -> cnspec.policy.v1.Control.TagsEntry + 87, // 40: cnspec.policy.v1.Control.action:type_name -> cnquery.explorer.Action + 91, // 41: cnspec.policy.v1.FrameworkMap.framework_dependencies:type_name -> cnquery.explorer.ObjectRef + 91, // 42: cnspec.policy.v1.FrameworkMap.policy_dependencies:type_name -> cnquery.explorer.ObjectRef + 91, // 43: cnspec.policy.v1.FrameworkMap.query_pack_dependencies:type_name -> cnquery.explorer.ObjectRef + 22, // 44: cnspec.policy.v1.FrameworkMap.controls:type_name -> cnspec.policy.v1.ControlMap + 91, // 45: cnspec.policy.v1.FrameworkMap.framework_owner:type_name -> cnquery.explorer.ObjectRef + 24, // 46: cnspec.policy.v1.ControlMap.checks:type_name -> cnspec.policy.v1.ControlRef + 24, // 47: cnspec.policy.v1.ControlMap.policies:type_name -> cnspec.policy.v1.ControlRef + 24, // 48: cnspec.policy.v1.ControlMap.controls:type_name -> cnspec.policy.v1.ControlRef + 24, // 49: cnspec.policy.v1.ControlMap.queries:type_name -> cnspec.policy.v1.ControlRef + 92, // 50: cnspec.policy.v1.ControlDocs.refs:type_name -> cnquery.explorer.MqueryRef + 87, // 51: cnspec.policy.v1.ControlRef.action:type_name -> cnquery.explorer.Action + 93, // 52: cnspec.policy.v1.Asset.platform:type_name -> cnquery.providers.v1.Platform + 27, // 53: cnspec.policy.v1.ResolvedPolicy.execution_job:type_name -> cnspec.policy.v1.ExecutionJob + 29, // 54: cnspec.policy.v1.ResolvedPolicy.collector_job:type_name -> cnspec.policy.v1.CollectorJob + 84, // 55: cnspec.policy.v1.ResolvedPolicy.filters:type_name -> cnquery.explorer.Mquery + 65, // 56: cnspec.policy.v1.ExecutionJob.queries:type_name -> cnspec.policy.v1.ExecutionJob.QueriesEntry + 66, // 57: cnspec.policy.v1.ExecutionQuery.properties:type_name -> cnspec.policy.v1.ExecutionQuery.PropertiesEntry + 94, // 58: cnspec.policy.v1.ExecutionQuery.code:type_name -> cnquery.llx.CodeBundle + 67, // 59: cnspec.policy.v1.CollectorJob.reporting_jobs:type_name -> cnspec.policy.v1.CollectorJob.ReportingJobsEntry + 68, // 60: cnspec.policy.v1.CollectorJob.reporting_queries:type_name -> cnspec.policy.v1.CollectorJob.ReportingQueriesEntry + 69, // 61: cnspec.policy.v1.CollectorJob.datapoints:type_name -> cnspec.policy.v1.CollectorJob.DatapointsEntry + 89, // 62: cnspec.policy.v1.ReportingJob.scoring_system:type_name -> cnquery.explorer.ScoringSystem + 70, // 63: cnspec.policy.v1.ReportingJob.datapoints:type_name -> cnspec.policy.v1.ReportingJob.DatapointsEntry + 71, // 64: cnspec.policy.v1.ReportingJob.child_jobs:type_name -> cnspec.policy.v1.ReportingJob.ChildJobsEntry + 6, // 65: cnspec.policy.v1.ReportingJob.type:type_name -> cnspec.policy.v1.ReportingJob.Type + 40, // 66: cnspec.policy.v1.Report.score:type_name -> cnspec.policy.v1.Score + 72, // 67: cnspec.policy.v1.Report.scores:type_name -> cnspec.policy.v1.Report.ScoresEntry + 73, // 68: cnspec.policy.v1.Report.data:type_name -> cnspec.policy.v1.Report.DataEntry + 41, // 69: cnspec.policy.v1.Report.stats:type_name -> cnspec.policy.v1.Stats + 41, // 70: cnspec.policy.v1.Report.ignored_stats:type_name -> cnspec.policy.v1.Stats + 38, // 71: cnspec.policy.v1.Report.cvss_score:type_name -> cnspec.policy.v1.Cvss + 74, // 72: cnspec.policy.v1.Report.cvss_scores:type_name -> cnspec.policy.v1.Report.CvssScoresEntry + 39, // 73: cnspec.policy.v1.Report.cvss_stats:type_name -> cnspec.policy.v1.CvssStats + 33, // 74: cnspec.policy.v1.Reports.reports:type_name -> cnspec.policy.v1.Report + 75, // 75: cnspec.policy.v1.ReportCollection.assets:type_name -> cnspec.policy.v1.ReportCollection.AssetsEntry + 13, // 76: cnspec.policy.v1.ReportCollection.bundle:type_name -> cnspec.policy.v1.Bundle + 76, // 77: cnspec.policy.v1.ReportCollection.reports:type_name -> cnspec.policy.v1.ReportCollection.ReportsEntry + 77, // 78: cnspec.policy.v1.ReportCollection.errors:type_name -> cnspec.policy.v1.ReportCollection.ErrorsEntry + 78, // 79: cnspec.policy.v1.ReportCollection.resolved_policies:type_name -> cnspec.policy.v1.ReportCollection.ResolvedPoliciesEntry + 37, // 80: cnspec.policy.v1.FrameworkReport.score:type_name -> cnspec.policy.v1.ControlScore + 37, // 81: cnspec.policy.v1.FrameworkReport.controls:type_name -> cnspec.policy.v1.ControlScore + 37, // 82: cnspec.policy.v1.ControlScore.assets:type_name -> cnspec.policy.v1.ControlScore + 42, // 83: cnspec.policy.v1.ControlScore.scores:type_name -> cnspec.policy.v1.ScoreDistribution + 42, // 84: cnspec.policy.v1.Stats.failed:type_name -> cnspec.policy.v1.ScoreDistribution + 42, // 85: cnspec.policy.v1.Stats.passed:type_name -> cnspec.policy.v1.ScoreDistribution + 42, // 86: cnspec.policy.v1.Stats.errors:type_name -> cnspec.policy.v1.ScoreDistribution + 84, // 87: cnspec.policy.v1.Mqueries.items:type_name -> cnquery.explorer.Mquery + 87, // 88: cnspec.policy.v1.PolicyAssignment.action:type_name -> cnquery.explorer.Action + 79, // 89: cnspec.policy.v1.PolicyMutationDelta.policy_deltas:type_name -> cnspec.policy.v1.PolicyMutationDelta.PolicyDeltasEntry + 87, // 90: cnspec.policy.v1.PolicyMutationDelta.action:type_name -> cnquery.explorer.Action + 7, // 91: cnspec.policy.v1.PolicyDelta.action:type_name -> cnspec.policy.v1.PolicyDelta.PolicyAssignmentActionType + 84, // 92: cnspec.policy.v1.ResolveReq.asset_filters:type_name -> cnquery.explorer.Mquery + 84, // 93: cnspec.policy.v1.UpdateAssetJobsReq.asset_filters:type_name -> cnquery.explorer.Mquery + 40, // 94: cnspec.policy.v1.StoreResultsReq.scores:type_name -> cnspec.policy.v1.Score + 80, // 95: cnspec.policy.v1.StoreResultsReq.data:type_name -> cnspec.policy.v1.StoreResultsReq.DataEntry + 38, // 96: cnspec.policy.v1.StoreResultsReq.cvssScores:type_name -> cnspec.policy.v1.Cvss + 95, // 97: cnspec.policy.v1.SynchronizeAssetsReq.list:type_name -> cnquery.providers.v1.Asset + 81, // 98: cnspec.policy.v1.SynchronizeAssetsResp.details:type_name -> cnspec.policy.v1.SynchronizeAssetsResp.DetailsEntry + 60, // 99: cnspec.policy.v1.PurgeAssetsRequest.date_filter:type_name -> cnspec.policy.v1.DateFilter + 82, // 100: cnspec.policy.v1.PurgeAssetsRequest.labels:type_name -> cnspec.policy.v1.PurgeAssetsRequest.LabelsEntry + 4, // 101: cnspec.policy.v1.DateFilter.comparison:type_name -> cnspec.policy.v1.Comparison + 5, // 102: cnspec.policy.v1.DateFilter.field:type_name -> cnspec.policy.v1.DateFilterField + 83, // 103: cnspec.policy.v1.PurgeAssetsConfirmation.errors:type_name -> cnspec.policy.v1.PurgeAssetsConfirmation.ErrorsEntry + 28, // 104: cnspec.policy.v1.ExecutionJob.QueriesEntry.value:type_name -> cnspec.policy.v1.ExecutionQuery + 32, // 105: cnspec.policy.v1.CollectorJob.ReportingJobsEntry.value:type_name -> cnspec.policy.v1.ReportingJob + 30, // 106: cnspec.policy.v1.CollectorJob.ReportingQueriesEntry.value:type_name -> cnspec.policy.v1.StringArray + 31, // 107: cnspec.policy.v1.CollectorJob.DatapointsEntry.value:type_name -> cnspec.policy.v1.DataQueryInfo + 88, // 108: cnspec.policy.v1.ReportingJob.ChildJobsEntry.value:type_name -> cnquery.explorer.Impact + 40, // 109: cnspec.policy.v1.Report.ScoresEntry.value:type_name -> cnspec.policy.v1.Score + 96, // 110: cnspec.policy.v1.Report.DataEntry.value:type_name -> cnquery.llx.Result + 38, // 111: cnspec.policy.v1.Report.CvssScoresEntry.value:type_name -> cnspec.policy.v1.Cvss + 95, // 112: cnspec.policy.v1.ReportCollection.AssetsEntry.value:type_name -> cnquery.providers.v1.Asset + 33, // 113: cnspec.policy.v1.ReportCollection.ReportsEntry.value:type_name -> cnspec.policy.v1.Report + 26, // 114: cnspec.policy.v1.ReportCollection.ResolvedPoliciesEntry.value:type_name -> cnspec.policy.v1.ResolvedPolicy + 51, // 115: cnspec.policy.v1.PolicyMutationDelta.PolicyDeltasEntry.value:type_name -> cnspec.policy.v1.PolicyDelta + 96, // 116: cnspec.policy.v1.StoreResultsReq.DataEntry.value:type_name -> cnquery.llx.Result + 57, // 117: cnspec.policy.v1.SynchronizeAssetsResp.DetailsEntry.value:type_name -> cnspec.policy.v1.SynchronizeAssetsRespAssetDetail + 13, // 118: cnspec.policy.v1.PolicyHub.SetBundle:input_type -> cnspec.policy.v1.Bundle + 13, // 119: cnspec.policy.v1.PolicyHub.ValidateBundle:input_type -> cnspec.policy.v1.Bundle + 44, // 120: cnspec.policy.v1.PolicyHub.GetBundle:input_type -> cnspec.policy.v1.Mrn + 44, // 121: cnspec.policy.v1.PolicyHub.GetPolicy:input_type -> cnspec.policy.v1.Mrn + 44, // 122: cnspec.policy.v1.PolicyHub.DeletePolicy:input_type -> cnspec.policy.v1.Mrn + 44, // 123: cnspec.policy.v1.PolicyHub.GetPolicyFilters:input_type -> cnspec.policy.v1.Mrn + 46, // 124: cnspec.policy.v1.PolicyHub.List:input_type -> cnspec.policy.v1.ListReq + 47, // 125: cnspec.policy.v1.PolicyHub.DefaultPolicies:input_type -> cnspec.policy.v1.DefaultPoliciesReq + 44, // 126: cnspec.policy.v1.PolicyHub.GetFramework:input_type -> cnspec.policy.v1.Mrn + 44, // 127: cnspec.policy.v1.PolicyHub.DeleteFramework:input_type -> cnspec.policy.v1.Mrn + 46, // 128: cnspec.policy.v1.PolicyHub.ListFrameworks:input_type -> cnspec.policy.v1.ListReq + 49, // 129: cnspec.policy.v1.PolicyResolver.Assign:input_type -> cnspec.policy.v1.PolicyAssignment + 49, // 130: cnspec.policy.v1.PolicyResolver.Unassign:input_type -> cnspec.policy.v1.PolicyAssignment + 97, // 131: cnspec.policy.v1.PolicyResolver.SetProps:input_type -> cnquery.explorer.PropsReq + 52, // 132: cnspec.policy.v1.PolicyResolver.Resolve:input_type -> cnspec.policy.v1.ResolveReq + 53, // 133: cnspec.policy.v1.PolicyResolver.UpdateAssetJobs:input_type -> cnspec.policy.v1.UpdateAssetJobsReq + 53, // 134: cnspec.policy.v1.PolicyResolver.ResolveAndUpdateJobs:input_type -> cnspec.policy.v1.UpdateAssetJobsReq + 44, // 135: cnspec.policy.v1.PolicyResolver.GetResolvedPolicy:input_type -> cnspec.policy.v1.Mrn + 54, // 136: cnspec.policy.v1.PolicyResolver.StoreResults:input_type -> cnspec.policy.v1.StoreResultsReq + 55, // 137: cnspec.policy.v1.PolicyResolver.GetReport:input_type -> cnspec.policy.v1.EntityScoreReq + 55, // 138: cnspec.policy.v1.PolicyResolver.GetFrameworkReport:input_type -> cnspec.policy.v1.EntityScoreReq + 55, // 139: cnspec.policy.v1.PolicyResolver.GetScore:input_type -> cnspec.policy.v1.EntityScoreReq + 56, // 140: cnspec.policy.v1.PolicyResolver.SynchronizeAssets:input_type -> cnspec.policy.v1.SynchronizeAssetsReq + 59, // 141: cnspec.policy.v1.PolicyResolver.PurgeAssets:input_type -> cnspec.policy.v1.PurgeAssetsRequest + 43, // 142: cnspec.policy.v1.PolicyHub.SetBundle:output_type -> cnspec.policy.v1.Empty + 43, // 143: cnspec.policy.v1.PolicyHub.ValidateBundle:output_type -> cnspec.policy.v1.Empty + 13, // 144: cnspec.policy.v1.PolicyHub.GetBundle:output_type -> cnspec.policy.v1.Bundle + 10, // 145: cnspec.policy.v1.PolicyHub.GetPolicy:output_type -> cnspec.policy.v1.Policy + 43, // 146: cnspec.policy.v1.PolicyHub.DeletePolicy:output_type -> cnspec.policy.v1.Empty + 45, // 147: cnspec.policy.v1.PolicyHub.GetPolicyFilters:output_type -> cnspec.policy.v1.Mqueries + 11, // 148: cnspec.policy.v1.PolicyHub.List:output_type -> cnspec.policy.v1.Policies + 48, // 149: cnspec.policy.v1.PolicyHub.DefaultPolicies:output_type -> cnspec.policy.v1.URLs + 16, // 150: cnspec.policy.v1.PolicyHub.GetFramework:output_type -> cnspec.policy.v1.Framework + 43, // 151: cnspec.policy.v1.PolicyHub.DeleteFramework:output_type -> cnspec.policy.v1.Empty + 17, // 152: cnspec.policy.v1.PolicyHub.ListFrameworks:output_type -> cnspec.policy.v1.Frameworks + 43, // 153: cnspec.policy.v1.PolicyResolver.Assign:output_type -> cnspec.policy.v1.Empty + 43, // 154: cnspec.policy.v1.PolicyResolver.Unassign:output_type -> cnspec.policy.v1.Empty + 98, // 155: cnspec.policy.v1.PolicyResolver.SetProps:output_type -> cnquery.explorer.Empty + 26, // 156: cnspec.policy.v1.PolicyResolver.Resolve:output_type -> cnspec.policy.v1.ResolvedPolicy + 43, // 157: cnspec.policy.v1.PolicyResolver.UpdateAssetJobs:output_type -> cnspec.policy.v1.Empty + 26, // 158: cnspec.policy.v1.PolicyResolver.ResolveAndUpdateJobs:output_type -> cnspec.policy.v1.ResolvedPolicy + 26, // 159: cnspec.policy.v1.PolicyResolver.GetResolvedPolicy:output_type -> cnspec.policy.v1.ResolvedPolicy + 43, // 160: cnspec.policy.v1.PolicyResolver.StoreResults:output_type -> cnspec.policy.v1.Empty + 33, // 161: cnspec.policy.v1.PolicyResolver.GetReport:output_type -> cnspec.policy.v1.Report + 36, // 162: cnspec.policy.v1.PolicyResolver.GetFrameworkReport:output_type -> cnspec.policy.v1.FrameworkReport + 33, // 163: cnspec.policy.v1.PolicyResolver.GetScore:output_type -> cnspec.policy.v1.Report + 58, // 164: cnspec.policy.v1.PolicyResolver.SynchronizeAssets:output_type -> cnspec.policy.v1.SynchronizeAssetsResp + 61, // 165: cnspec.policy.v1.PolicyResolver.PurgeAssets:output_type -> cnspec.policy.v1.PurgeAssetsConfirmation + 142, // [142:166] is the sub-list for method output_type + 118, // [118:142] is the sub-list for method input_type + 118, // [118:118] is the sub-list for extension type_name + 118, // [118:118] is the sub-list for extension extendee + 0, // [0:118] is the sub-list for field type_name } func init() { file_cnspec_policy_proto_init() } @@ -7518,66 +6245,6 @@ func file_cnspec_policy_proto_init() { } } file_cnspec_policy_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeprecatedV7_PolicySpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cnspec_policy_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeprecatedV7_Policy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cnspec_policy_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeprecatedV7_ScoringSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cnspec_policy_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeprecatedV7_Bundle); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cnspec_policy_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeprecatedV7_Author); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cnspec_policy_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryCounts); i { case 0: return &v.state @@ -7589,7 +6256,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Bundle); i { case 0: return &v.state @@ -7601,7 +6268,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PolicyGroupDocs); i { case 0: return &v.state @@ -7613,7 +6280,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PolicyDocs); i { case 0: return &v.state @@ -7625,55 +6292,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeprecatedV7_Mquery); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cnspec_policy_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeprecatedV7_SeverityValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cnspec_policy_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeprecatedV7_MqueryDocs); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cnspec_policy_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeprecatedV7_MqueryRef); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cnspec_policy_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Framework); i { case 0: return &v.state @@ -7685,7 +6304,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Frameworks); i { case 0: return &v.state @@ -7697,7 +6316,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FrameworkGroup); i { case 0: return &v.state @@ -7709,7 +6328,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FrameworkRef); i { case 0: return &v.state @@ -7721,7 +6340,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Control); i { case 0: return &v.state @@ -7733,7 +6352,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FrameworkMap); i { case 0: return &v.state @@ -7745,7 +6364,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControlMap); i { case 0: return &v.state @@ -7757,7 +6376,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControlDocs); i { case 0: return &v.state @@ -7769,7 +6388,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControlRef); i { case 0: return &v.state @@ -7781,7 +6400,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Asset); i { case 0: return &v.state @@ -7793,7 +6412,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResolvedPolicy); i { case 0: return &v.state @@ -7805,7 +6424,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExecutionJob); i { case 0: return &v.state @@ -7817,7 +6436,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExecutionQuery); i { case 0: return &v.state @@ -7829,7 +6448,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CollectorJob); i { case 0: return &v.state @@ -7841,7 +6460,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StringArray); i { case 0: return &v.state @@ -7853,7 +6472,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataQueryInfo); i { case 0: return &v.state @@ -7865,7 +6484,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReportingJob); i { case 0: return &v.state @@ -7877,7 +6496,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Report); i { case 0: return &v.state @@ -7889,7 +6508,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Reports); i { case 0: return &v.state @@ -7901,7 +6520,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReportCollection); i { case 0: return &v.state @@ -7913,7 +6532,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FrameworkReport); i { case 0: return &v.state @@ -7925,7 +6544,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControlScore); i { case 0: return &v.state @@ -7937,7 +6556,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Cvss); i { case 0: return &v.state @@ -7949,7 +6568,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CvssStats); i { case 0: return &v.state @@ -7961,7 +6580,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Score); i { case 0: return &v.state @@ -7973,7 +6592,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Stats); i { case 0: return &v.state @@ -7985,7 +6604,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScoreDistribution); i { case 0: return &v.state @@ -7997,7 +6616,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Empty); i { case 0: return &v.state @@ -8009,7 +6628,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Mrn); i { case 0: return &v.state @@ -8021,7 +6640,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Mqueries); i { case 0: return &v.state @@ -8033,7 +6652,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReq); i { case 0: return &v.state @@ -8045,7 +6664,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DefaultPoliciesReq); i { case 0: return &v.state @@ -8057,7 +6676,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*URLs); i { case 0: return &v.state @@ -8069,7 +6688,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PolicyAssignment); i { case 0: return &v.state @@ -8081,7 +6700,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PolicyMutationDelta); i { case 0: return &v.state @@ -8093,7 +6712,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PolicyDelta); i { case 0: return &v.state @@ -8105,7 +6724,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResolveReq); i { case 0: return &v.state @@ -8117,7 +6736,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAssetJobsReq); i { case 0: return &v.state @@ -8129,7 +6748,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StoreResultsReq); i { case 0: return &v.state @@ -8141,7 +6760,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EntityScoreReq); i { case 0: return &v.state @@ -8153,7 +6772,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SynchronizeAssetsReq); i { case 0: return &v.state @@ -8165,7 +6784,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SynchronizeAssetsRespAssetDetail); i { case 0: return &v.state @@ -8177,7 +6796,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SynchronizeAssetsResp); i { case 0: return &v.state @@ -8189,7 +6808,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PurgeAssetsRequest); i { case 0: return &v.state @@ -8201,7 +6820,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DateFilter); i { case 0: return &v.state @@ -8213,7 +6832,7 @@ func file_cnspec_policy_proto_init() { return nil } } - file_cnspec_policy_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_cnspec_policy_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PurgeAssetsConfirmation); i { case 0: return &v.state @@ -8232,7 +6851,7 @@ func file_cnspec_policy_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cnspec_policy_proto_rawDesc, NumEnums: 8, - NumMessages: 94, + NumMessages: 76, NumExtensions: 0, NumServices: 2, }, diff --git a/policy/cnspec_policy.proto b/policy/cnspec_policy.proto index 255d4e05..d504a7b0 100644 --- a/policy/cnspec_policy.proto +++ b/policy/cnspec_policy.proto @@ -74,12 +74,6 @@ message PolicyRef { - Can limit to what it supports */ message Policy { - // FIXME: DEPRECATED, remove in v9.0 vv - // We carry these fields for old services still using the API with this proto. - repeated DeprecatedV7_PolicySpec specs = 6; - map asset_filters = 7; // key == checksum - // ^^ - string mrn = 1; // will be filled from UID on upload string uid = 36; // uid is only used initially, to generate the MRN string name = 2; @@ -117,100 +111,9 @@ message Policy { } message Policies { - repeated DeprecatedV7_Policy deprecated_v7_items = 1; repeated Policy items = 2; } -// FIXME: DEPRECATED, remove in v9.0 vv -// All of these have been replaced as of the policy overhaul -message DeprecatedV7_PolicySpec { - map policies = 1; - map scoring_queries = 2; - map data_queries = 3; - - // filter for the assets this applies to - DeprecatedV7_Mquery asset_filter = 20; - - // the timeline during which this scoring spec is active and reminders will be sent - int64 start_date = 21; - int64 end_date = 22; - int64 reminder_date = 23; - - // metadata - string title = 24; - PolicyGroupDocs docs = 25; - - int64 created = 32; - int64 modified = 33; -} - -message DeprecatedV7_Policy { - string mrn = 1; // will be filled from UID on upload - string name = 2; - string version = 3; - - // checksums are grouped into: - // local... meaning this policy, not policy dependencies - // graph... meaning this and all dependent policies - // content... meaning all the content in the policy, everything there is - // execution... meaning everything that changes the resolved policy - string local_content_checksum = 37; - string graph_content_checksum = 38; - string local_execution_checksum = 39; - string graph_execution_checksum = 40; - - repeated DeprecatedV7_PolicySpec specs = 6; - map asset_filters = 7; // key == checksum - - string owner_mrn = 8; - bool is_public = 9; - - cnquery.explorer.ScoringSystem scoring_system = 10; - - repeated DeprecatedV7_Author authors = 30; - int64 created = 32; - int64 modified = 33; - map tags = 34; - // mapping query ref => target; target may be empty if not overwriting - map props = 35; - // user-defined uid, which is used to generate the MRN - string uid = 36; - PolicyDocs docs = 41; - - QueryCounts query_counts = 42; -} - -message DeprecatedV7_ScoringSpec { - string id = 1; // id of the policy or query, can also be an mrn - // weight: 0 means the result has no weight and will be ignored - // if weight_is_percentage, this value must be in 0 - 100 range - uint32 weight = 2; - bool weight_is_percentage = 3; - - // only ever relevant when multiple scores bubble up into this spec - // the default is average if not specified - cnquery.explorer.ScoringSystem scoring_system = 4; - - QueryAction action = 6; - - DeprecatedV7_SeverityValue severity = 7; -} - -message DeprecatedV7_Bundle { - string owner_mrn = 1; - repeated DeprecatedV7_Mquery queries = 4; - repeated DeprecatedV7_Policy policies = 2; - repeated DeprecatedV7_Mquery props = 3; - PolicyDocs docs = 5; - -} - -message DeprecatedV7_Author { - string name = 1; - string email = 2; -} -// ^^ - enum QueryAction { UNSPECIFIED = 0; MODIFY = 1; @@ -232,16 +135,6 @@ message Bundle { repeated Framework frameworks = 8; repeated FrameworkMap framework_maps = 9; PolicyDocs docs = 5; - - // FIXME: DEPRECATED, remove in v9.0 vv - // This is replaced by queries using cnquery structures - repeated DeprecatedV7_Policy deprecated_v7_policies = 2; - // We left props largely unchanged, because it only used 2 fields from the - // Mquery message: uid and query (#5 and #1). Internally it used - // code_id, checksum and mrn (#2, #3, #4). These have been kept consistent - // between all protos and messages. - repeated DeprecatedV7_Mquery deprecated_v7_queries = 4; - // ^^ } message PolicyGroupDocs { @@ -253,40 +146,6 @@ message PolicyDocs { string desc = 1; } -// FIXME: DEPRECATED, remove in v9.0 vv -// This is moving entirely to cnquery's Mquery object. -message DeprecatedV7_Mquery { - string query = 1; - string code_id = 2; - string checksum = 3; - string mrn = 4; - // UID is only needed on Mquery upload, when the MRN is computed. - // It is not be persisted. - string uid = 5; - string type = 6; - DeprecatedV7_SeverityValue severity = 19; - string title = 20; - DeprecatedV7_MqueryDocs docs = 21; - repeated DeprecatedV7_MqueryRef refs = 22; - map tags = 34; -} - -message DeprecatedV7_SeverityValue { - int64 value = 1; -} - -message DeprecatedV7_MqueryDocs { - string desc = 1; - string audit = 2; - string remediation = 3; -} - -message DeprecatedV7_MqueryRef { - string title = 1; - string url = 2; -} -// ^^ - message Framework { string mrn = 1; // will be filled from UID on upload string uid = 36; // uid is only used initially to generate the MRN @@ -432,11 +291,6 @@ message Asset { for fast retrieval. */ message ResolvedPolicy { - // FIXME: DEPRECATED, remove in v9.0 vv - // Replaced by the new Mquery version - repeated DeprecatedV7_Mquery deprecated_v7_filters = 4; - // ^^ - ExecutionJob execution_job = 2; CollectorJob collector_job = 3; repeated cnquery.explorer.Mquery filters = 1; @@ -508,10 +362,6 @@ message DataQueryInfo { - spec has all the other results that need to be pulled and their scorings */ message ReportingJob { - // FIXME: DEPRECATED, remove in v9.0 vv - // This is replaced by the new spec, which now references cnquery - map deprecated_v7_spec = 4; - // ^^ // FIXME: DEPRECATED, remove in v10.0 vv // This is replaced by the new type field, which now carries more info bool deprecated_v8_is_data = 8; @@ -680,11 +530,6 @@ message Mrn { } message Mqueries { - // FIXME: DEPRECATED, remove in v9.0 vv - // just uses the old datatype and moved to the new one below - repeated DeprecatedV7_Mquery deprecated_v7_items = 1; - // ^ - repeated cnquery.explorer.Mquery items = 2; } diff --git a/policy/deprecated_v7.go b/policy/deprecated_v7.go deleted file mode 100644 index 08d950c6..00000000 --- a/policy/deprecated_v7.go +++ /dev/null @@ -1,981 +0,0 @@ -// Copyright (c) Mondoo, Inc. -// SPDX-License-Identifier: BUSL-1.1 - -package policy - -import ( - "regexp" - "strings" - - "github.com/rs/zerolog/log" - "go.mondoo.com/cnquery/v9/explorer" - "go.mondoo.com/cnquery/v9/mrn" - "go.mondoo.com/cnquery/v9/utils/sortx" -) - -// FIXME: DEPRECATED, remove in v9.0 (all of it) -// This file contains conversion and helper structures that were introduced -// with the PolicyV2 update in late v7.x. The can be safely removed (alongside -// the old proto structures) in v9. - -// DeprecatedV7Conversions will find any v7 pieces in the bundle and convert -// them to v8+ -func (p *Bundle) DeprecatedV7Conversions() { - p.deprecatedV7convertQueries() - p.deprecatedV7convertPolicies() -} - -// Find any v7 policies and convert them to v8+ -// Note: we don't want to duplicate policies; If it exists in v7 and in v8, -// then v7 policies are dropped. Checks for both UIDs and MRNs -func (p *Bundle) deprecatedV7convertPolicies() { - if len(p.DeprecatedV7Policies) == 0 { - return - } - - existing := map[string]struct{}{} - for i := range p.Policies { - cur := p.Policies[i] - if cur.Uid != "" { - existing[cur.Uid] = struct{}{} - } - if cur.Mrn != "" { - existing[cur.Mrn] = struct{}{} - } - } - - for i := range p.DeprecatedV7Policies { - cur := p.DeprecatedV7Policies[i] - if _, ok := existing[cur.Mrn]; ok { - continue - } - if _, ok := existing[cur.Uid]; ok { - continue - } - - p.Policies = append(p.Policies, cur.ToV8()) - } - - p.DeprecatedV7Policies = nil -} - -// Find any v7 queries and convert them to v8+ -// Note: we don't want to duplicate queries; If it exists in v7 and in v8, -// then v7 queries are dropped. Checks for both UIDs and MRNs and across all -// policies (which is why we run this before the policy conversion) -func (p *Bundle) deprecatedV7convertQueries() { - if len(p.DeprecatedV7Queries) == 0 { - return - } - - existing := map[string]struct{}{} - for i := range p.Queries { - cur := p.Queries[i] - if cur.Uid != "" { - existing[cur.Uid] = struct{}{} - } - if cur.Mrn != "" { - existing[cur.Mrn] = struct{}{} - } - } - - for i := range p.Policies { - pol := p.Policies[i] - for j := range pol.Groups { - group := pol.Groups[j] - for k := range group.Queries { - cur := group.Queries[k] - if cur.Uid != "" { - existing[cur.Uid] = struct{}{} - } - if cur.Mrn != "" { - existing[cur.Mrn] = struct{}{} - } - } - for k := range group.Checks { - cur := group.Checks[k] - if cur.Uid != "" { - existing[cur.Uid] = struct{}{} - } - if cur.Mrn != "" { - existing[cur.Mrn] = struct{}{} - } - } - } - } - - for i := range p.DeprecatedV7Queries { - cur := p.DeprecatedV7Queries[i] - if _, ok := existing[cur.Mrn]; ok { - continue - } - if _, ok := existing[cur.Uid]; ok { - continue - } - - p.Queries = append(p.Queries, cur.ToV8()) - } - - p.DeprecatedV7Queries = nil -} - -func (d *DeprecatedV7_Bundle) ToV8() *Bundle { - if d == nil { - return nil - } - - FixZeroValuesInPolicyBundle(d) - - res := Bundle{ - OwnerMrn: d.OwnerMrn, - Policies: make([]*Policy, len(d.Policies)), - Queries: make([]*explorer.Mquery, len(d.Queries)), - Props: deprecatedV7_Mqueries(d.Props).ToV8Props(), - Docs: d.Docs, - } - - for i := range d.Policies { - res.Policies[i] = d.Policies[i].ToV8() - } - - props := make(map[string]*explorer.Property, len(d.Props)) - for i := range res.Props { - prop := res.Props[i] - if prop.Uid != "" { - props[prop.Uid] = prop - } else if prop.Mrn != "" { - if x, err := mrn.NewMRN(prop.Mrn); err == nil { - props[x.Basename()] = prop - } else { - log.Error().Str("propMrn", prop.Mrn).Msg("trying to convert a v7 bundle prop with invalid mrn") - } - } else { - log.Error().Interface("prop", prop).Msg("trying to convert a v7 bundle prop with no uid/mrn") - } - } - - for i := range d.Queries { - cur := d.Queries[i].ToV8() - updateProps(cur, props) - res.Queries[i] = cur - } - - return &res -} - -var reMqlProperty = regexp.MustCompile("props\\.[a-zA-Z0-9]+") - -func updateProps(q *explorer.Mquery, lookup map[string]*explorer.Property) { - names := reMqlProperty.FindAllString(q.Mql, -1) - for i := range names { - name := names[i][6:] - if prop, ok := lookup[name]; ok { - q.Props = append(q.Props, prop) - } - } -} - -func (s *DeprecatedV7_SeverityValue) ToV8() *explorer.Impact { - if s == nil { - return nil - } - return &explorer.Impact{ - Value: &explorer.ImpactValue{Value: int32(s.Value)}, - Weight: 0, - Scoring: explorer.ScoringSystem_SCORING_UNSPECIFIED, - } -} - -type deprecatedV7_Mqueries []*DeprecatedV7_Mquery - -func (d deprecatedV7_Mqueries) ToV8Props() []*explorer.Property { - if len(d) == 0 { - return nil - } - - res := make([]*explorer.Property, len(d)) - for i := range d { - cur := d[i] - res[i] = cur.ToV8Prop() - } - return res -} - -type deprecatedV7_MqueryRefs []*DeprecatedV7_MqueryRef - -func (d deprecatedV7_MqueryRefs) ToV8() []*explorer.MqueryRef { - if len(d) == 0 { - return nil - } - - res := make([]*explorer.MqueryRef, len(d)) - for i := range d { - res[i] = d[i].ToV8() - } - return res -} - -func (d *DeprecatedV7_MqueryRef) ToV8() *explorer.MqueryRef { - if d == nil { - return nil - } - - return &explorer.MqueryRef{ - Title: d.Title, - Url: d.Url, - } -} - -func (d *DeprecatedV7_MqueryDocs) ToV8() *explorer.MqueryDocs { - if d == nil { - return nil - } - - return &explorer.MqueryDocs{ - Desc: d.Desc, - Audit: d.Audit, - Remediation: &explorer.Remediation{ - Items: []*explorer.TypedDoc{{ - Id: "default", - Desc: d.Remediation, - }}, - }, - } -} - -func (d *DeprecatedV7_Mquery) ToV8() *explorer.Mquery { - if d == nil { - return nil - } - - return &explorer.Mquery{ - Mql: d.Query, - CodeId: d.CodeId, - Checksum: d.Checksum, - Mrn: d.Mrn, - Uid: d.Uid, - Type: d.Type, - Impact: d.Severity.ToV8(), - Title: d.Title, - Docs: d.Docs.ToV8(), - Refs: deprecatedV7_MqueryRefs(d.Refs).ToV8(), - Tags: d.Tags, - } -} - -func (d *DeprecatedV7_Mquery) ToV8Prop() *explorer.Property { - if d == nil { - return nil - } - - return &explorer.Property{ - Mql: d.Query, - CodeId: d.CodeId, - Checksum: d.Checksum, - Mrn: d.Mrn, - Uid: d.Uid, - Type: d.Type, - Title: d.Title, - } -} - -type deprecatedV7_Authors []*DeprecatedV7_Author - -func (d deprecatedV7_Authors) ToV8() []*explorer.Author { - if len(d) == 0 { - return nil - } - - res := make([]*explorer.Author, len(d)) - for i := range d { - res[i] = d[i].ToV8() - } - return res -} - -func (d *DeprecatedV7_Author) ToV8() *explorer.Author { - if d == nil { - return nil - } - - return &explorer.Author{ - Name: d.Name, - Email: d.Email, - } -} - -type DeprecatedV7_Props map[string]string - -func (d DeprecatedV7_Props) ToV8() []*explorer.Property { - if len(d) == 0 { - return nil - } - - res := make([]*explorer.Property, len(d)) - i := 0 - for key := range d { - // In v7, propety keys may be UIDs or MRNs. This is only for props in policies - // so all we need is the reference (UID or MRN). - if strings.HasPrefix(key, "//") { - res[i] = &explorer.Property{Mrn: key} - } else { - res[i] = &explorer.Property{Uid: key} - } - i++ - } - return res -} - -type deprecatedV7_AssetFilters map[string]*DeprecatedV7_Mquery - -func (d deprecatedV7_AssetFilters) ToV8() *explorer.Filters { - if len(d) == 0 { - return nil - } - - res := explorer.Filters{ - Items: make(map[string]*explorer.Mquery, len(d)), - } - for k, v := range d { - res.Items[k] = v.ToV8() - } - return &res -} - -type deprecatedV7_PolicySpecs []*DeprecatedV7_PolicySpec - -func (d deprecatedV7_PolicySpecs) ToV8() []*PolicyGroup { - if d == nil { - return nil - } - - res := make([]*PolicyGroup, len(d)) - for i := range d { - res[i] = d[i].ToV8() - } - return res -} - -func Impact2ScoringSpec(impact *explorer.Impact) *DeprecatedV7_ScoringSpec { - if impact == nil { - return nil - } - - var severity *DeprecatedV7_SeverityValue - if impact.Value != nil { - severity = &DeprecatedV7_SeverityValue{Value: int64(impact.Value.Value)} - } - - v7Action := QueryAction_UNSPECIFIED - switch impact.Action { - case explorer.Action_ACTIVATE: - v7Action = QueryAction_ACTIVATE - case explorer.Action_DEACTIVATE: - v7Action = QueryAction_DEACTIVATE - case explorer.Action_MODIFY: - v7Action = QueryAction_MODIFY - } - - weight := uint32(impact.Weight) - scoring := impact.Scoring // numbers are identical except for one vv - if impact.Scoring == explorer.ScoringSystem_IGNORE_SCORE || impact.Action == explorer.Action_IGNORE { - weight = 0 - // We have to set a scoring system here, but really it doesn't matter. - // In v7 it was possible to have both a "weight=0" (i.e. ignored) and - // e.g. "scoring=2" (i.e. worst scoring) spec. However this never applies. - // The ScoringSpec whose weight is set is only done on collecting info, - // e.g. in child jobs of a reporting job, which doesn't care about scoring - // multiple results. And the ScoringSpec that has different calculator - // methods set comes from policies, which doesn't get to set its own weight - // to zero (i.e. ignore). - // With v8 we will introduce simulated policies, but that too is done on - // the collecting spec (e.g. the parent policy, not its child). - scoring = explorer.ScoringSystem_SCORING_UNSPECIFIED - // We are converting the action to a QueryAction. This is largely compatibly - // except for Action_IGNORE. Whenever an active ignore was set, we can - // translate it to ACTIVATE + weight=0 for v7. - v7Action = QueryAction_ACTIVATE - } - - return &DeprecatedV7_ScoringSpec{ - Weight: weight, - WeightIsPercentage: false, - ScoringSystem: scoring, - Action: v7Action, - Severity: severity, - } -} - -func (s *DeprecatedV7_ScoringSpec) ApplyToV8(ref *explorer.Mquery) { - // For convenience we allow calling it on nil and handle it here. - if s == nil { - return - } - if ref == nil { - log.Error().Msg("cannot apply v7 scoring spec to mquery, query is nil") - return - } - // If the action is unspecified, it means that the spec is effectively null. - // Since it's null, don't do anything with it. - if s.Action == QueryAction_UNSPECIFIED { - return - } - - ref.Action = explorer.Action(s.Action) - - // For deactivate we don't need anything else in the spec. Just turn it off and - // we are done. - if s.Action == QueryAction_DEACTIVATE { - return - } - - if ref.Impact == nil { - ref.Impact = &explorer.Impact{} - } - ref.Impact.Scoring = s.ScoringSystem - - // For all v7 specs, a weight of 0 means that we want to ignore the score. - // Weight was evaluated first, so we can safely assume that the intention - // is to ignore the score. Scoring is overwritten in this case, because - // it would not have been evaluated. Also see above Impact2ScoringSpec for - // more details on the behavior of ScoringSpec. - if s.Weight > 0 { - ref.Impact.Weight = int32(s.Weight) - } else { - ref.Impact.Scoring = explorer.ScoringSystem_IGNORE_SCORE - } -} - -func (d *DeprecatedV7_PolicySpec) ToV8() *PolicyGroup { - policies := make([]*PolicyRef, len(d.Policies)) - policyIDs := sortx.Keys(d.Policies) - for i := range policyIDs { - id := policyIDs[i] - spec := d.Policies[id] - ref := &PolicyRef{} - - if spec != nil { - ref.Action = explorer.Action(spec.Action) - } - - if strings.HasPrefix(id, "//") && mrn.IsValid(id) { - ref.Mrn = id - } else { - ref.Uid = id - } - - policies[i] = ref - } - - checks := make([]*explorer.Mquery, len(d.ScoringQueries)) - checkIDs := sortx.Keys(d.ScoringQueries) - for i := range checkIDs { - id := checkIDs[i] - spec := d.ScoringQueries[id] - ref := &explorer.Mquery{} - spec.ApplyToV8(ref) - - if strings.HasPrefix(id, "//") && mrn.IsValid(id) { - ref.Mrn = id - } else { - ref.Uid = id - } - - checks[i] = ref - } - - queries := make([]*explorer.Mquery, len(d.DataQueries)) - queryIDs := sortx.Keys(d.DataQueries) - for i := range queryIDs { - id := queryIDs[i] - action := d.DataQueries[id] - ref := &explorer.Mquery{} - - if action != QueryAction_UNSPECIFIED { - ref.Action = explorer.Action(action) - } - - if strings.HasPrefix(id, "//") && mrn.IsValid(id) { - ref.Mrn = id - } else { - ref.Uid = id - } - - queries[i] = ref - } - - var filters *explorer.Filters - if d.AssetFilter != nil { - filters = &explorer.Filters{ - Items: map[string]*explorer.Mquery{}, - } - - filter := d.AssetFilter.ToV8() - // the key is a placeholder that will be replaced once this is compiled - // for the first time - filters.Items["default"] = filter - } - - return &PolicyGroup{ - Policies: policies, - Checks: checks, - Queries: queries, - Filters: filters, - - StartDate: d.StartDate, - EndDate: d.EndDate, - ReminderDate: d.ReminderDate, - Title: d.Title, - Docs: d.Docs, - Created: d.Created, - Modified: d.Modified, - } -} - -func (d *DeprecatedV7_Policy) ToV8() *Policy { - if d == nil { - return nil - } - - return &Policy{ - Mrn: d.Mrn, - Uid: d.Uid, - Name: d.Name, - Version: d.Version, - OwnerMrn: d.OwnerMrn, - License: "unspecified", - Docs: d.Docs, - ScoringSystem: d.ScoringSystem, - Authors: deprecatedV7_Authors(d.Authors).ToV8(), - Created: d.Created, - Modified: d.Modified, - Tags: d.Tags, - // Props: We don't assign these from v7 policies. In v7, their only function - // was to make properties available to queries in the policy. We are instead - // scanning through the queries of v7 bundles and embedding properties - // directly into them. Because of this behavior, properties in policies - // don't fulfill any function (in v8 they are used for wiring/overwrites). - ComputedFilters: deprecatedV7_AssetFilters(d.AssetFilters).ToV8(), - QueryCounts: d.QueryCounts, - - Groups: deprecatedV7_PolicySpecs(d.Specs).ToV8(), - - LocalContentChecksum: d.LocalContentChecksum, - GraphContentChecksum: d.GraphContentChecksum, - LocalExecutionChecksum: d.LocalExecutionChecksum, - GraphExecutionChecksum: d.GraphExecutionChecksum, - } -} - -// DeprecatedV7_Add is a helper to add a policy and a bunch of queries to this bundle -func (bundle *PolicyBundleMap) DeprecatedV7_Add(policy *DeprecatedV7_Policy, queries map[string]*DeprecatedV7_Mquery) *PolicyBundleMap { - var id string - if policy.Mrn != "" { - id = policy.Mrn - } else { - id = policy.Uid - } - - bundle.Policies[id] = policy.ToV8() - for k, v := range queries { - bundle.Queries[k] = v.ToV8() - } - return bundle -} - -// Conveting back to V7 structures -// ------------------------------- - -func ToV7Severity(i *explorer.Impact) *DeprecatedV7_SeverityValue { - if i == nil || i.Value == nil { - return nil - } - - return &DeprecatedV7_SeverityValue{ - Value: int64(i.Value.Value), - } -} - -func ToV7Mquery(x *explorer.Mquery) *DeprecatedV7_Mquery { - if x == nil { - return nil - } - - return &DeprecatedV7_Mquery{ - Query: x.Mql, - CodeId: x.CodeId, - Checksum: x.Checksum, - Mrn: x.Mrn, - Uid: x.Uid, - Type: x.Type, - Severity: ToV7Severity(x.Impact), - Title: x.Title, - Docs: ToV7MqueryDocs(x.Docs), - Refs: ToV7MqueryRefs(x.Refs), - Tags: x.Tags, - } -} - -func ToV7Property(x *explorer.Property) *DeprecatedV7_Mquery { - if x == nil { - return nil - } - return &DeprecatedV7_Mquery{ - Query: x.Mql, - CodeId: x.CodeId, - Checksum: x.Checksum, - Mrn: x.Mrn, - Uid: x.Uid, - Type: x.Type, - Title: x.Title, - } -} - -func ToV7MqueryDocs(x *explorer.MqueryDocs) *DeprecatedV7_MqueryDocs { - if x == nil { - return nil - } - - return &DeprecatedV7_MqueryDocs{ - Desc: x.Desc, - Audit: x.Audit, - Remediation: ToV7Remediation(x.Remediation), - } -} - -func ToV7Remediation(x *explorer.Remediation) string { - if x == nil || len(x.Items) == 0 { - return "" - } - - return x.Items[0].Desc -} - -func ToV7MqueryRefs(x []*explorer.MqueryRef) []*DeprecatedV7_MqueryRef { - if x == nil { - return nil - } - - res := make([]*DeprecatedV7_MqueryRef, len(x)) - for i := range x { - res[i] = ToV7MqueryRef(x[i]) - } - return res -} - -func ToV7MqueryRef(x *explorer.MqueryRef) *DeprecatedV7_MqueryRef { - if x == nil { - return nil - } - - return &DeprecatedV7_MqueryRef{ - Title: x.Title, - Url: x.Url, - } -} - -func ToV7Filters(f *explorer.Filters) deprecatedV7_AssetFilters { - if f == nil { - return nil - } - - res := map[string]*DeprecatedV7_Mquery{} - for k, v := range f.Items { - res[k] = ToV7Mquery(v) - } - - return res -} - -func ToV7SpecFilter(f *explorer.Filters, policyMrn string) *DeprecatedV7_Mquery { - if f == nil || len(f.Items) == 0 { - return nil - } - - filters := []string{} - for _, v := range f.Items { - filters = append(filters, v.Mql) - } - - res := &DeprecatedV7_Mquery{ - Query: strings.Join(filters, " || "), - } - _, err := res.RefreshAsAssetFilter(policyMrn) - if err != nil { - log.Error().Str("policy", policyMrn).Err(err).Msg("failed to convert filter to v7 for spec in policy") - } - - return res -} - -func ToV7ScoringSpec(action explorer.Action, impact *explorer.Impact) *DeprecatedV7_ScoringSpec { - if action == explorer.Action_UNSPECIFIED { - return nil - } - - res := &DeprecatedV7_ScoringSpec{ - Action: QueryAction(action), - } - - if impact != nil && impact.Weight != 0 { - res.Weight = uint32(impact.Weight) - } - - if action == explorer.Action_IGNORE { - res.Weight = 0 - } - - return res -} - -func (x *PolicyGroup) ToV7(policyMrn string) *DeprecatedV7_PolicySpec { - if x == nil { - return nil - } - - res := &DeprecatedV7_PolicySpec{ - Policies: map[string]*DeprecatedV7_ScoringSpec{}, - ScoringQueries: map[string]*DeprecatedV7_ScoringSpec{}, - DataQueries: map[string]QueryAction{}, - } - - for i := range x.Policies { - p := x.Policies[i] - if p.Mrn == "" { - continue - } - res.Policies[p.Mrn] = ToV7ScoringSpec(p.Action, p.Impact) - } - for i := range x.Checks { - check := x.Checks[i] - if check.Mrn != "" { - res.ScoringQueries[check.Mrn] = ToV7ScoringSpec(check.Action, check.Impact) - } else if check.Uid != "" { - res.ScoringQueries[check.Uid] = ToV7ScoringSpec(check.Action, check.Impact) - } - } - for i := range x.Queries { - query := x.Queries[i] - if query.Mrn != "" { - res.DataQueries[query.Mrn] = QueryAction(query.Action) - } else if query.Uid != "" { - res.DataQueries[query.Uid] = QueryAction(query.Action) - } - - } - - res.AssetFilter = ToV7SpecFilter(x.Filters, policyMrn) - - return res -} - -func (x *Policy) FillV7() { - if x == nil { - return - } - - x.AssetFilters = ToV7Filters(x.ComputedFilters) - - x.Specs = make([]*DeprecatedV7_PolicySpec, len(x.Groups)) - for i := range x.Groups { - x.Specs[i] = x.Groups[i].ToV7(x.Mrn) - } -} - -func ToV7Authors(x []*explorer.Author) []*DeprecatedV7_Author { - res := make([]*DeprecatedV7_Author, len(x)) - for i := range x { - cur := x[i] - res[i] = &DeprecatedV7_Author{ - Name: cur.Name, - Email: cur.Email, - } - } - return res -} - -func (x *Policy) ToV7() *DeprecatedV7_Policy { - if x == nil { - return nil - } - - specs := make([]*DeprecatedV7_PolicySpec, len(x.Groups)) - for i := range x.Groups { - specs[i] = x.Groups[i].ToV7(x.Mrn) - } - - props := map[string]string{} - for i := range x.Props { - prop := x.Props[i] - props[prop.Mrn] = "" - } - - return &DeprecatedV7_Policy{ - Mrn: x.Mrn, - Name: x.Name, - Version: x.Version, - LocalContentChecksum: x.LocalContentChecksum, - GraphContentChecksum: x.GraphContentChecksum, - LocalExecutionChecksum: x.LocalExecutionChecksum, - GraphExecutionChecksum: x.GraphExecutionChecksum, - Specs: specs, - AssetFilters: ToV7Filters(x.ComputedFilters), - OwnerMrn: x.OwnerMrn, - IsPublic: false, - ScoringSystem: x.ScoringSystem, - Authors: ToV7Authors(x.Authors), - Created: x.Created, - Modified: x.Modified, - Tags: x.Tags, - Props: props, - Uid: x.Uid, - Docs: x.Docs, - QueryCounts: x.QueryCounts, - } -} - -func (x *Bundle) fillV7Props(query *explorer.Mquery, policy *DeprecatedV7_Policy, propsIdx map[string]struct{}) { - for p := range query.Props { - prop := query.Props[p] - - if prop.Mrn != "" { - policy.Props[prop.Mrn] = "" - if _, ok := propsIdx[prop.Mrn]; !ok { - propsIdx[prop.Mrn] = struct{}{} - x.Props = append(x.Props, prop) - } - - } else if prop.Uid != "" { - policy.Props[prop.Uid] = "" - if _, ok := propsIdx[prop.Uid]; !ok { - propsIdx[prop.Uid] = struct{}{} - x.Props = append(x.Props, prop) - } - } - } -} - -func (x *Bundle) FillV7() { - if x == nil { - return - } - - queries := map[string]*explorer.Mquery{} - propsIdx := map[string]struct{}{} - - // leftover shared props from v7 bundles - for i := range x.Props { - prop := x.Props[i] - propsIdx[prop.Mrn] = struct{}{} - } - - x.DeprecatedV7Queries = make([]*DeprecatedV7_Mquery, len(x.Queries)) - for i := range x.Queries { - query := x.Queries[i] - if query.Mrn != "" { - queries[query.Mrn] = query - } - if query.Uid != "" { - queries[query.Uid] = query - } - x.DeprecatedV7Queries[i] = ToV7Mquery(query) - } - - x.DeprecatedV7Policies = make([]*DeprecatedV7_Policy, len(x.Policies)) - for i := range x.Policies { - policy := x.Policies[i].ToV7() - x.DeprecatedV7Policies[i] = policy - - // v7 had properties attached to their policies. This is not necessary - // in v8, but we do need to convert back. - for j := range policy.Specs { - spec := policy.Specs[j] - - for id := range spec.ScoringQueries { - if query, ok := queries[id]; ok { - x.fillV7Props(query, policy, propsIdx) - } - } - - for id := range spec.DataQueries { - if query, ok := queries[id]; ok { - x.fillV7Props(query, policy, propsIdx) - } - } - } - } -} - -func (x *Bundle) ToV7Bundle() *DeprecatedV7_Bundle { - if x == nil { - return nil - } - - v7bundle := &DeprecatedV7_Bundle{} - - // add backwards-compatibility structs v7 clients as double format which works in v7 and v8 - properties := map[string]*explorer.Property{} - for i := range x.Queries { - q := x.Queries[i] - for j := range q.Props { - prop := q.Props[j] - - m, err := mrn.NewMRN(prop.Mrn) - if err == nil { - uid, err := m.ResourceID("queries") - if err == nil { - properties[uid] = prop - } - } - } - } - - for k := range properties { - v7bundle.Props = append(v7bundle.Props, ToV7Property(properties[k])) - } - - v7bundle.Policies = make([]*DeprecatedV7_Policy, len(x.Policies)) - for i := range x.Policies { - p := x.Policies[i].ToV7() - for k := range properties { - p.Props[k] = "" - } - v7bundle.Policies[i] = p - } - - v7bundle.Queries = make([]*DeprecatedV7_Mquery, len(x.Queries)) - for i := range x.Queries { - v7bundle.Queries[i] = ToV7Mquery(x.Queries[i]) - } - - return v7bundle -} - -// fixme - this is a hack to deal with the fact that zero valued ScoringSpecs are getting deserialized -// instead of nil pointers for ScoringSpecs. -// This is a quick fix for https://gitlab.com/mondoolabs/mondoo/-/issues/455 -// so that we can get a fix out while figuring out wtf is up with our null pointer serialization -// open issue for deserialization: https://gitlab.com/mondoolabs/mondoo/-/issues/508 -func FixZeroValuesInPolicyBundle(bundle *DeprecatedV7_Bundle) { - for _, policy := range bundle.Policies { - for _, spec := range policy.Specs { - if spec.Policies != nil { - for k, v := range spec.Policies { - // v.Action is only 0 for zero value structs - if v != nil && v.Action == 0 { - spec.Policies[k] = nil - } - } - } - - if spec.ScoringQueries != nil { - for k, v := range spec.ScoringQueries { - // v.Action is only 0 for zero value structs - if v != nil && v.Action == 0 { - spec.ScoringQueries[k] = nil - } - } - } - } - } -} diff --git a/policy/deprecated_v7.mql.yaml b/policy/deprecated_v7.mql.yaml deleted file mode 100644 index 0b4b234d..00000000 --- a/policy/deprecated_v7.mql.yaml +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright (c) Mondoo, Inc. -# SPDX-License-Identifier: BUSL-1.1 - -# This section lists all the policies that are part of this bundle. -# In our case, we only have 1 policy: example1 -policies: - - uid: example1 - name: Example policy 1 - version: "1.0.0" - # If your policies has queries that have a "severity", you should set - # the scoring system to "highest impact" (like in this case). It makes - # sure that the lowest score (i.e. highest impact failure) is used as - # the overall score for the report. - scoring_system: highest impact - authors: - - name: Mondoo - email: hello@mondoo.com - # Specs are a way to specify all the queries (and other policies) - # that we want to apply. Specs are grouped together and can be filtered. - # This allows you to only apply a group of queries if the condition is met. - props: - homeProp: "" - specs: - - scoring_queries: - # These are queries that will be scored and contribute to the - # final score of this policy. - sshd-01: - sshd-02: - sshd-03: - data_queries: - # These are queries which only collect data. They don't say - # what you should or shouldn't do, they only provide insights. - sshd-d-1: - home-info: - asset_filter: - # Here we specify that the queries in this spec are only applied - # when the asset satisfies this condition: - query: asset.family.contains(_ == 'unix') - -props: - - uid: homeProp - title: Some home property - query: | - return "/home" - -# These are all the queries that are part of this bundle. They are used -# by the policies specified above. -queries: - # Every query can be identified by its UID - # The title helps in printing it. - - uid: sshd-01 - title: Set the port to 22 - query: sshd.config.params["Port"] == 22 - # Severities are used for scoring. 100 = critical. 0 = info. - severity: 30 - - uid: sshd-02 - title: Configure the address family - query: sshd.config.params["AddressFamily"] == /inet|inet6|any/ - severity: 40 - - uid: sshd-03 - title: Enable strict mode - query: sshd.config.params["StrictModes"] == "yes" - severity: 70 - - uid: sshd-d-1 - title: Gather SSH config params - query: sshd.config.params - - uid: home-info - title: Home information - query: file(props.homeProp) { * } diff --git a/policy/deprecated_v7_test.go b/policy/deprecated_v7_test.go deleted file mode 100644 index 0325740b..00000000 --- a/policy/deprecated_v7_test.go +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) Mondoo, Inc. -// SPDX-License-Identifier: BUSL-1.1 - -package policy - -import ( - "testing" - - "github.com/stretchr/testify/require" - "go.mondoo.com/cnquery/v9/explorer" -) - -func TestV7Fill(t *testing.T) { - b, err := bundleFromSingleFile("./deprecated_v7.mql.yaml") - require.NoError(t, err) - require.NotNil(t, b) - - b.FillV7() - require.Equal(t, []*DeprecatedV7_Policy{ - { - Name: "Example policy 1", - Version: "1.0.0", - Uid: "example1", - ScoringSystem: explorer.ScoringSystem_WORST, - Authors: []*DeprecatedV7_Author{{Name: "Mondoo", Email: "hello@mondoo.com"}}, - Props: map[string]string{ - "homeProp": "", - }, - Specs: []*DeprecatedV7_PolicySpec{{ - Policies: map[string]*DeprecatedV7_ScoringSpec{}, - ScoringQueries: map[string]*DeprecatedV7_ScoringSpec{ - "sshd-01": nil, - "sshd-02": nil, - "sshd-03": nil, - }, - DataQueries: map[string]QueryAction{ - "sshd-d-1": QueryAction_UNSPECIFIED, - "home-info": QueryAction_UNSPECIFIED, - }, - AssetFilter: &DeprecatedV7_Mquery{ - Query: "asset.family.contains(_ == 'unix')", - CodeId: "M/J+yy3Inwo=", - Checksum: "snTEELSBE7I=", - Type: "\x04", - Title: "asset.family.contains(_ == 'unix')", - }, - }}, - }, - }, b.DeprecatedV7Policies) -} diff --git a/policy/mquery.go b/policy/mquery.go index 15e7ea48..5ff5b0d1 100644 --- a/policy/mquery.go +++ b/policy/mquery.go @@ -4,163 +4,14 @@ package policy import ( - "sort" - "strings" - "github.com/pkg/errors" - "github.com/rs/zerolog/log" - "go.mondoo.com/cnquery/v9" "go.mondoo.com/cnquery/v9/checksums" "go.mondoo.com/cnquery/v9/explorer" "go.mondoo.com/cnquery/v9/llx" - "go.mondoo.com/cnquery/v9/mqlc" "go.mondoo.com/cnquery/v9/mrn" - "go.mondoo.com/cnquery/v9/providers" - "go.mondoo.com/cnquery/v9/types" - "go.mondoo.com/cnquery/v9/utils/sortx" + "sort" ) -// Compile a given query and return the bundle. Both v1 and v2 versions are compiled. -// Both versions will be given the same code id. -func (m *DeprecatedV7_Mquery) Compile(props map[string]*llx.Primitive) (*llx.CodeBundle, error) { - if m.Query == "" { - return nil, errors.New("query is not implemented '" + m.Mrn + "'") - } - - runtime := providers.DefaultRuntime() - v2Code, err := mqlc.Compile(m.Query, props, mqlc.NewConfig(runtime.Schema(), cnquery.DefaultFeatures)) - if err != nil { - return nil, err - } - - return v2Code, nil -} - -// RefreshAsAssetFilter filters treats this query as an asset filter and sets its Mrn, Title, and Checksum -func (m *DeprecatedV7_Mquery) RefreshAsAssetFilter(mrn string) (*llx.CodeBundle, error) { - bundle, err := m.refreshChecksumAndType(nil) - if err != nil { - return bundle, err - } - - if mrn != "" { - m.Mrn = mrn + "/assetfilter/" + m.CodeId - } - m.Title = m.Query - return bundle, nil -} - -// RefreshChecksumAndType by compiling the query and updating the Checksum field -func (m *DeprecatedV7_Mquery) RefreshChecksumAndType(props map[string]*llx.Primitive) (*llx.CodeBundle, error) { - return m.refreshChecksumAndType(props) -} - -func (m *DeprecatedV7_Mquery) refreshChecksumAndType(props map[string]*llx.Primitive) (*llx.CodeBundle, error) { - bundle, err := m.Compile(props) - if err != nil { - return bundle, errors.New("failed to compile query '" + m.Query + "': " + err.Error()) - } - - if bundle.GetCodeV2().GetId() == "" { - return bundle, errors.New("failed to compile query: received empty result values") - } - - // We think its ok to always use the new code id - m.CodeId = bundle.CodeV2.Id - - // the compile step also dedents the code - m.Query = bundle.Source - - // TODO: record multiple entrypoints and types - // TODO(jaym): is it possible that the 2 could produce different types - if entrypoints := bundle.CodeV2.Entrypoints(); len(entrypoints) == 1 { - ep := entrypoints[0] - chunk := bundle.CodeV2.Chunk(ep) - typ := chunk.Type() - m.Type = string(typ) - } else { - m.Type = string(types.Any) - } - - c := checksums.New. - Add(m.Query). - Add(m.CodeId). - Add(m.Mrn). - Add(m.Type). - Add(m.Title).Add("v2") - - if m.Docs != nil { - c = c. - Add(m.Docs.Desc). - Add(m.Docs.Audit). - Add(m.Docs.Remediation) - } - - for i := range m.Refs { - c = c. - Add(m.Refs[i].Title). - Add(m.Refs[i].Url) - } - - keys := sortx.Keys(m.Tags) - for _, k := range keys { - c = c. - Add(k). - Add(m.Tags[k]) - } - - if m.Severity != nil { - c = c.AddUint(uint64(m.Severity.Value)) - } - - m.Checksum = c.String() - - return bundle, nil -} - -// Sanitize ensure the content is in good shape and removes leading and trailing whitespace -func (m *DeprecatedV7_Mquery) Sanitize() { - if m == nil { - return - } - - if m.Docs != nil { - m.Docs.Desc = strings.TrimSpace(m.Docs.Desc) - m.Docs.Audit = strings.TrimSpace(m.Docs.Audit) - m.Docs.Remediation = strings.TrimSpace(m.Docs.Remediation) - } - - for i := range m.Refs { - r := m.Refs[i] - r.Title = strings.TrimSpace(r.Title) - r.Url = strings.TrimSpace(r.Url) - } - - if m.Tags != nil { - sanitizedTags := map[string]string{} - for k, v := range m.Tags { - sk := strings.TrimSpace(k) - sv := strings.TrimSpace(v) - sanitizedTags[sk] = sv - } - m.Tags = sanitizedTags - } -} - -// RefreshMRN computes a MRN from the UID or validates the existing MRN. -// Both of these need to fit the ownerMRN. It also removes the UID. -func (m *DeprecatedV7_Mquery) RefreshMRN(ownerMRN string) error { - nu, err := RefreshMRN(ownerMRN, m.Mrn, MRN_RESOURCE_QUERY, m.Uid) - if err != nil { - log.Debug().Err(err).Str("owner", ownerMRN).Str("uid", m.Uid).Msg("failed to refresh mrn") - return errors.Wrap(err, "failed to refresh mrn for query "+m.Title) - } - - m.Mrn = nu - m.Uid = "" - return nil -} - func RefreshMRN(ownerMRN string, existingMRN string, resource string, uid string) (string, error) { // NOTE: asset policy bundles may not have an owner set, therefore we skip if the query already has an mrn if existingMRN != "" { diff --git a/policy/mquery_test.go b/policy/mquery_test.go index 1fec616d..a8823545 100644 --- a/policy/mquery_test.go +++ b/policy/mquery_test.go @@ -4,25 +4,29 @@ package policy import ( + "go.mondoo.com/cnquery/v9/explorer" + "go.mondoo.com/cnquery/v9/providers-sdk/v1/testutils" "testing" "github.com/stretchr/testify/assert" ) func TestMquery_Whitespaces(t *testing.T) { - mq := DeprecatedV7_Mquery{ - Query: " mondoo { version \n} \t\n ", + coreSchema := testutils.MustLoadSchema(testutils.SchemaProvider{Provider: "core"}) + + mq := &explorer.Mquery{ + Mql: " mondoo { version \n} \t\n ", } - mqexpect := DeprecatedV7_Mquery{ - Query: "mondoo { version \n}", + mqexpect := &explorer.Mquery{ + Mql: "mondoo { version \n}", } - bundle, err := mq.RefreshChecksumAndType(nil) + bundle, err := mq.RefreshChecksumAndType(nil, nil, coreSchema) assert.NoError(t, err) assert.NotNil(t, bundle) - bundle, err = mqexpect.RefreshChecksumAndType(nil) + bundle, err = mqexpect.RefreshChecksumAndType(nil, nil, coreSchema) assert.NoError(t, err) assert.NotNil(t, bundle) @@ -30,18 +34,19 @@ func TestMquery_Whitespaces(t *testing.T) { } func TestMquery_CodeIDs(t *testing.T) { - mqAssetFilter := DeprecatedV7_Mquery{ - Query: "mondoo { version \n}", + coreSchema := testutils.MustLoadSchema(testutils.SchemaProvider{Provider: "core"}) + mqAssetFilter := &explorer.Mquery{ + Mql: "mondoo { version \n}", } - mqReg := DeprecatedV7_Mquery{ - Query: "mondoo { version \n}", + mqReg := &explorer.Mquery{ + Mql: "mondoo { version \n}", } - _, err := mqAssetFilter.RefreshAsAssetFilter("//some.mrn") + _, err := mqAssetFilter.RefreshAsFilter("//some.mrn", coreSchema) assert.NoError(t, err) - _, err = mqReg.RefreshChecksumAndType(nil) + _, err = mqReg.RefreshChecksumAndType(nil, nil, coreSchema) assert.NoError(t, err) assert.Equal(t, mqReg.CodeId, mqAssetFilter.CodeId) diff --git a/policy/policy.go b/policy/policy.go index e1771a84..6ca4ff79 100644 --- a/policy/policy.go +++ b/policy/policy.go @@ -18,41 +18,10 @@ import ( "go.mondoo.com/cnquery/v9/mrn" "go.mondoo.com/cnquery/v9/types" "google.golang.org/protobuf/proto" - "gopkg.in/yaml.v3" ) //go:generate protoc --proto_path=../:../cnquery:. --go_out=. --go_opt=paths=source_relative --rangerrpc_out=. cnspec_policy.proto -// FIXME: DEPRECATED, remove in v9.0 vv -func (sv *DeprecatedV7_SeverityValue) UnmarshalJSON(data []byte) error { - var sev int64 - - if err := json.Unmarshal(data, &sev); err == nil { - sv.Value = sev - } else { - v := &struct { - Value int64 `json:"value"` - }{} - if err := json.Unmarshal(data, &v); err != nil { - return err - } - sv.Value = v.Value - } - - if sv.Value < 0 || sv.Value > 100 { - return errors.New("severity must be between 0 and 100") - } - - return nil -} - -func (sv *DeprecatedV7_SeverityValue) UnmarshalYAML(node *yaml.Node) error { - // prevent recursive calls into UnmarshalYAML with a placeholder type - return node.Decode(&sv.Value) -} - -// ^^ - type dataQueryInfo struct { Type types.Type `json:"type,omitempty"` Notify []string `json:"notify,omitempty"` @@ -583,16 +552,6 @@ func (p *Policy) updateAllChecksums(ctx context.Context, return nil } -func checksumAddSpec(checksum checksums.Fast, spec *DeprecatedV7_ScoringSpec) checksums.Fast { - checksum = checksum.AddUint((uint64(spec.Action) << 32) | (uint64(spec.ScoringSystem))) - var weightIsPrecentage uint64 - if spec.WeightIsPercentage { - weightIsPrecentage = 0x1 << 32 - } - checksum = checksum.AddUint(weightIsPrecentage | uint64(spec.Weight)) - return checksum.Add(spec.Id) -} - func (p *Policy) InvalidateGraphChecksums() { p.GraphContentChecksum = "" p.GraphExecutionChecksum = "" diff --git a/policy/policy_test.go b/policy/policy_test.go index 10a49ae1..62704258 100644 --- a/policy/policy_test.go +++ b/policy/policy_test.go @@ -83,7 +83,6 @@ func TestPolicyGroupCategory(t *testing.T) { func TestPolicyChecksums(t *testing.T) { files := []string{ "../examples/example.mql.yaml", - "./deprecated_v7.mql.yaml", } for _, file := range files { @@ -129,11 +128,7 @@ func TestPolicyChecksums(t *testing.T) { p.Version = "1.2.3" }, "group date changed": func(p *policy.Policy) { - if p.Groups == nil { - p.Specs[0].Created = 12345 - } else { - p.Groups[0].Created = 12345 - } + p.Groups[0].Created = 12345 }, } @@ -173,19 +168,11 @@ func TestPolicyChecksums(t *testing.T) { executionTests := map[string]func(){ "query spec set": func() { - if p.Groups == nil { - p.Specs[0].ScoringQueries = map[string]*policy.DeprecatedV7_ScoringSpec{ - "//local.cnspec.io/run/local-execution/queries/sshd-01": { - ScoringSystem: explorer.ScoringSystem_WORST, - }, - } - } else { - p.Groups[0].Checks[1] = &explorer.Mquery{ - Mrn: "//local.cnspec.io/run/local-execution/queries/sshd-01", - Impact: &explorer.Impact{ - Scoring: explorer.ScoringSystem_WORST, - }, - } + p.Groups[0].Checks[1] = &explorer.Mquery{ + Mrn: "//local.cnspec.io/run/local-execution/queries/sshd-01", + Impact: &explorer.Impact{ + Scoring: explorer.ScoringSystem_WORST, + }, } }, "query changed": func() { diff --git a/policy/testdata/policybundle-deps.mql.yaml b/policy/testdata/policybundle-deps.mql.yaml index f00b4361..70f36b47 100644 --- a/policy/testdata/policybundle-deps.mql.yaml +++ b/policy/testdata/policybundle-deps.mql.yaml @@ -1,57 +1,40 @@ owner_mrn: //captain.api.mondoo.app/spaces/adoring-moore-542492 policies: -- mrn: //assets.api.mondoo.app/spaces/adoring-moore-542492/assets/1dKBiOi5lkI2ov48plcowIy8WEl - version: 1.0.0 - asset_filters: - platform.name == "debian": - query: platform.name == "debian" - specs: - - policies: - //captain.api.mondoo.app/spaces/adoring-moore-542492: null -- mrn: //captain.api.mondoo.app/spaces/adoring-moore-542492 - owner_mrn: //captain.api.mondoo.app/spaces/adoring-moore-542492 - version: 1.0.0 - asset_filters: - platform.name == "debian": - query: platform.name == "debian" - specs: - - policies: - //policy.api.mondoo.app/policies/debian-10-level-1-server: null - scoring_queries: - //policy.api.mondoo.app/queries/1.6.1-xd-nx-support-enabled: - action: 2 - id: //policy.api.mondoo.app/queries/1.6.1-xd-nx-support-enabled -- mrn: //policy.api.mondoo.app/policies/debian-10-level-1-server - owner_mrn: //policy.api.mondoo.app - name: Debian Linux 10 Benchmark Level 1 - Server Profile - version: 1.0.0 - is_public: true - asset_filters: - platform.name == "debian": - query: platform.name == "debian" - specs: - - asset_filter: - query: platform.name == "debian" - scoring_queries: - //policy.api.mondoo.app/queries/1.1.1.1-mounting-freevxfs-filesystems-disabled: - id: //policy.api.mondoo.app/queries/1.1.1.1-mounting-freevxfs-filesystems-disabled - //policy.api.mondoo.app/queries/1.1.1.2-mounting-jffs2-filesystems-disabled: - id: //policy.api.mondoo.app/queries/1.1.1.2-mounting-jffs2-filesystems-disabled - //policy.api.mondoo.app/queries/1.1.1.3-mounting-hfs-filesystems-disabled: - id: //policy.api.mondoo.app/queries/1.1.1.3-mounting-hfs-filesystems-disabled + - mrn: //assets.api.mondoo.app/spaces/adoring-moore-542492/assets/1dKBiOi5lkI2ov48plcowIy8WEl + version: 1.0.0 + license: unspecified + groups: + - policies: + - mrn: //captain.api.mondoo.app/spaces/adoring-moore-542492 + - owner_mrn: //captain.api.mondoo.app/spaces/adoring-moore-542492 + mrn: //captain.api.mondoo.app/spaces/adoring-moore-542492 + version: 1.0.0 + license: unspecified + groups: + - policies: + - mrn: //policy.api.mondoo.app/policies/debian-10-level-1-server + checks: + - mrn: //policy.api.mondoo.app/queries/1.6.1-xd-nx-support-enabled + action: 2 + - computed_filters: platform.name == "debian" + owner_mrn: //policy.api.mondoo.app + mrn: //policy.api.mondoo.app/policies/debian-10-level-1-server + name: Debian Linux 10 Benchmark Level 1 - Server Profile + version: 1.0.0 + license: unspecified + groups: + - filters: platform.name == "debian" + checks: + - mrn: //policy.api.mondoo.app/queries/1.1.1.1-mounting-freevxfs-filesystems-disabled + - mrn: //policy.api.mondoo.app/queries/1.1.1.2-mounting-jffs2-filesystems-disabled + - mrn: //policy.api.mondoo.app/queries/1.1.1.3-mounting-hfs-filesystems-disabled queries: -- checksum: fBXqmapUNqQ= - mrn: //policy.api.mondoo.app/queries/1.1.1.1-mounting-freevxfs-filesystems-disabled - query: kernel.module("freevxfs").loaded == false - title: Ensure mounting of freevxfs filesystems is disabled - type: "\x04" -- checksum: GMagrYUwv1Q= - mrn: //policy.api.mondoo.app/queries/1.1.1.2-mounting-jffs2-filesystems-disabled - query: kernel.module("jffs2").loaded == false - title: Ensure mounting of jffs2 filesystems is disabled - type: "\x04" -- checksum: hW3ShMH1Gg8= - mrn: //policy.api.mondoo.app/queries/1.1.1.3-mounting-hfs-filesystems-disabled - query: kernel.module("hfs").loaded == false - title: Ensure mounting of hfs filesystems is disabled - type: "\x04" + - mrn: //policy.api.mondoo.app/queries/1.1.1.1-mounting-freevxfs-filesystems-disabled + title: Ensure mounting of freevxfs filesystems is disabled + mql: kernel.module("freevxfs").loaded == false + - mrn: //policy.api.mondoo.app/queries/1.1.1.2-mounting-jffs2-filesystems-disabled + title: Ensure mounting of jffs2 filesystems is disabled + mql: kernel.module("jffs2").loaded == false + - mrn: //policy.api.mondoo.app/queries/1.1.1.3-mounting-hfs-filesystems-disabled + title: Ensure mounting of hfs filesystems is disabled + mql: kernel.module("hfs").loaded == false