diff --git a/providers-sdk/v1/inventory/asset_url.go b/providers-sdk/v1/inventory/asset_url.go new file mode 100644 index 0000000000..1c94b0c1d4 --- /dev/null +++ b/providers-sdk/v1/inventory/asset_url.go @@ -0,0 +1,366 @@ +// Copyright (c) Mondoo, Inc. +// SPDX-License-Identifier: BUSL-1.1 + +package inventory + +import ( + "errors" + "regexp" + "sort" + "strings" +) + +// # AssetUrl +// +// Assets are generally structured in a giant graph. However, we often find +// it difficult to reason with arbitrary graphs. As humans, we tend to +// group assets into hierarchical tree structures, that make it easy for us +// to put them into a box and reason about them. +// +// For example: A techology-centric view of the world would group a VM +// in a cloud environment like this: +// /aws/accountX/ec2/instances/linux/debian/8.0 +// +// Every entry in this path structure follows a strict schema. Thus "aws" above +// is the chosen path value for the key "technology". As you can see, some +// keys lead to predefined (limited) values (technology can be aws, azure, os, +// k8s, etc), while other keys can have (almost) arbitrary values (eg account). +// +// Providers create this schema and may extend this schema. Providers cannot +// create conflicting entries in this schema. +// +// Assets can belong to multiple URLs at the same time, which allows us to +// look at it from different perspectives. +// +// URLs enable fast lookup, but do not restrict in terms of the search. +// This support looking at e.g. linux instances on all kinds of environments +// and runtimes. + +// AssetUrlSchema defines the structure for an AssetUrl. +type AssetUrlSchema struct { + root *AssetUrlBranch + + // Possible keys that exist at any layer in this structure + keys map[string][]*AssetUrlBranch +} + +type KV struct { + Key string + Value string +} + +type AssetUrlChain []KV + +func NewAssetUrlChain(segments []string) ([]KV, error) { + res := make([]KV, len(segments)) + for i, segment := range segments { + if len(segment) > ASSETURL_MAX_KEY_CHARS+ASSETURL_MAX_VALUE_CHARS { + return nil, errors.New("asset url path segment is too long") + } + KVs := strings.Split(segment, "=") + if len(KVs) != 2 { + return nil, errors.New("asset url path segment must be formatted as key=value") + } + res[i].Key = KVs[0] + res[i].Value = KVs[1] + } + return res, nil +} + +const ( + ASSETURL_MAX_DEPTH = 100 + ASSETURL_MAX_KEY_CHARS = 100 + ASSETURL_MAX_VALUE_CHARS = 200 +) + +var ( + assetUrlKeyRegex = regexp.MustCompile("^[a-z0-9_-]+$") + assetUrlValueRegex = regexp.MustCompile("^[A-Za-z0-9_ .-]+$") +) + +func validateKey(key string) error { + if len(key) > ASSETURL_MAX_KEY_CHARS { + return errors.New("asset url branch key is too long: " + key[0:100] + "...") + } + if key == "" { + return errors.New("asset url branch key cannot be empty") + } + if !assetUrlKeyRegex.MatchString(key) { + return errors.New("asset url branch key '" + key + "' must only contain valid characters: " + assetUrlKeyRegex.String()) + } + return nil +} + +func validateValue(value string) error { + if len(value) > ASSETURL_MAX_VALUE_CHARS { + return errors.New("asset url branch value is too long: " + value[0:100] + "...") + } + if value == "" { + return errors.New("asset url branch value cannot be empty") + } + if value == "*" { + return nil + } + if !assetUrlValueRegex.MatchString(value) { + return errors.New("asset url branch value '" + value + "' must only contain valid characters: " + assetUrlKeyRegex.String()) + } + return nil +} + +func newAssetUrlSchema(rootKey string) (*AssetUrlSchema, error) { + if err := validateKey(rootKey); err != nil { + return nil, err + } + + return &AssetUrlSchema{ + root: &AssetUrlBranch{ + Key: rootKey, + Values: map[string]*AssetUrlBranch{}, + Depth: 1, + }, + }, nil +} + +func (a *AssetUrlSchema) Add(branch *AssetUrlBranch) error { + if branch == nil { + return errors.New("cannot attach empty asset url branch") + } + if len(branch.Path) == 0 { + return errors.New("don't know where to attach asset url branch") + } + + urlChain, err := NewAssetUrlChain(branch.Path) + if err != nil { + return err + } + + found, lastKey, err := a.root.FindPath(urlChain) + if err != nil { + return errors.New("failed to add: " + err.Error()) + } + + if found == nil { + return errors.New("failed to attach asset url branch to any existing subtree for: " + strings.Join(branch.Path, "/")) + } + + if err = branch.validate(); err != nil { + return errors.New("failed to add url branch: " + err.Error()) + } + + branch.setDepth(found.Depth + 1) + found.Values[lastKey] = branch + return nil +} + +func (a *AssetUrlBranch) setDepth(i uint32) { + a.Depth = i + next := i + 1 + for _, v := range a.Values { + if v != nil { + v.setDepth(next) + } + } +} + +func (a *AssetUrlBranch) validate() error { + branches := []*AssetUrlBranch{a} + i := 0 + for i < len(branches) { + branch := branches[i] + i++ + + if len(branch.Reference) != 0 { + if len(branch.Key) != 0 { + return errors.New("asset url segment with reference cannot have a key set") + } + if len(branch.Values) != 0 { + return errors.New("asset url segment with reference cannot have values set") + } + continue + } + + if err := validateKey(branch.Key); err != nil { + return err + } + + for value, next := range branch.Values { + if err := validateValue(value); err != nil { + return err + } + if next != nil { + branches = append(branches, next) + } + } + } + + return nil +} + +func (a *AssetUrlBranch) FindPath(path AssetUrlChain) (*AssetUrlBranch, string, error) { + if len(path) > ASSETURL_MAX_DEPTH { + return nil, "", errors.New("asset url branch path is too long") + } + + curBranch := a + for segmentIdx, segment := range path { + key := segment.Key + if key != curBranch.Key { + return nil, "", errors.New("asset url path key is invalid (expected '" + curBranch.Key + "', got '" + key + "')") + } + + value := segment.Value + if err := validateValue(value); err != nil { + return nil, "", err + } + + // ending condition on the last element + if segmentIdx == len(path)-1 { + return curBranch, value, nil + } + + if curBranch.Values == nil { + return nil, "", errors.New("asset url search ended prematurely, no more keys in this chain") + } + + branch, ok := curBranch.Values[value] + if !ok { + return nil, "", errors.New("cannot find asset url branch for '" + key + "=" + value + "'") + } + if branch == nil { + return nil, "", errors.New("ran into premature end for asset url branch '" + key + "=" + value + "'") + } + curBranch = branch + } + + return curBranch, "", nil +} + +func (a *AssetUrlSchema) cloneBranch(branch *AssetUrlBranch, depth uint32, isDereferenced bool) (*AssetUrlBranch, error) { + if depth > 1000 { + return nil, errors.New("maximum depth reached for asset url during clone (look for circular branch references)") + } + + if len(branch.Reference) != 0 { + if isDereferenced { + return nil, errors.New("dereferenced an asset url branch with more references (reference to = '" + strings.Join(branch.Reference, "/") + "')") + } + + urlChain, err := NewAssetUrlChain(branch.Reference) + if err != nil { + return nil, err + } + + found, lastKey, err := a.root.FindPath(urlChain) + if err != nil { + return nil, errors.New("failed to add asset url reference: " + err.Error()) + } + + branch = found.Values[lastKey] + return a.cloneBranch(branch, depth, true) + } + + res := &AssetUrlBranch{ + Key: branch.Key, + Title: branch.Title, + Values: make(map[string]*AssetUrlBranch, len(branch.Values)), + Depth: depth, + } + + for k, v := range branch.Values { + if v == nil { + res.Values[k] = nil + continue + } + + b, err := a.cloneBranch(v, depth+1, false) + if err != nil { + return nil, err + } + b.ParentValue = k + b.Parent = res + res.Values[k] = b + } + + return res, nil +} + +func (a *AssetUrlSchema) RefreshCache() error { + a.keys = map[string][]*AssetUrlBranch{} + + branches := []*AssetUrlBranch{a.root} + i := 0 + for i < len(branches) { + branch := branches[i] + i++ + + if len(branch.Reference) != 0 { + res, err := a.cloneBranch(branch, branch.Depth, false) + if err != nil { + return err + } + + branch.Key = res.Key + branch.Title = res.Title + branch.Values = res.Values + } + + a.keys[branch.Key] = append(a.keys[branch.Key], branch) + + for k, next := range branch.Values { + if next != nil { + next.Parent = branch + next.ParentValue = k + branches = append(branches, next) + } + } + } + + return nil +} + +func (a *AssetUrlSchema) BuildQueries(kvs []KV) []AssetUrlChain { + var nodes []*AssetUrlBranch + var values []string + for i := range kvs { + kv := kvs[i] + nuNodes := a.keys[kv.Key] + nodes = append(nodes, nuNodes...) + for i := 0; i < len(nuNodes); i++ { + values = append(values, kv.Value) + } + } + + sort.SliceStable(nodes, func(i, j int) bool { + return nodes[i].Depth < nodes[j].Depth + }) + + var res []AssetUrlChain + for len(nodes) != 0 { + lastIdx := len(nodes) - 1 + cur := nodes[lastIdx] + curKey := values[lastIdx] + nodes = nodes[:lastIdx] + values = values[:lastIdx] + + res = append(res, buildParentQuery(cur, curKey)) + } + return res +} + +func buildParentQuery(leaf *AssetUrlBranch, value string) AssetUrlChain { + res := make([]KV, leaf.Depth) + + cur := leaf + curValue := value + for cur != nil { + res[cur.Depth-1] = KV{ + Key: cur.Key, + Value: curValue, + } + + curValue = cur.ParentValue + cur = cur.Parent + } + + return res +} diff --git a/providers-sdk/v1/inventory/asset_url_test.go b/providers-sdk/v1/inventory/asset_url_test.go new file mode 100644 index 0000000000..d5531049a0 --- /dev/null +++ b/providers-sdk/v1/inventory/asset_url_test.go @@ -0,0 +1,96 @@ +// Copyright (c) Mondoo, Inc. +// SPDX-License-Identifier: BUSL-1.1 + +package inventory + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.mondoo.com/cnquery/v10/utils/sortx" +) + +func genTestSchema(t *testing.T) *AssetUrlSchema { + root, err := newAssetUrlSchema("technology") + require.NoError(t, err) + + err = root.Add(&AssetUrlBranch{ + Path: []string{"technology=aws"}, + Key: "account", + Values: map[string]*AssetUrlBranch{ + "*": { + Key: "service", + Values: map[string]*AssetUrlBranch{ + "ec2": { + Reference: []string{"technology=os"}, + }, + }, + }, + }, + }) + require.NoError(t, err) + + err = root.Add(&AssetUrlBranch{ + Path: []string{"technology=os"}, + Key: "family", + Values: map[string]*AssetUrlBranch{ + "windows": { + Key: "platform", + Values: map[string]*AssetUrlBranch{ + "windows server": nil, + }, + }, + }, + }) + require.NoError(t, err) + + err = root.Add(&AssetUrlBranch{ + Path: []string{"technology=os", "family=windows", "platform=windows server"}, + Key: "version", + Values: map[string]*AssetUrlBranch{ + "2019": nil, + "2022": nil, + }, + }) + require.NoError(t, err) + + return root +} + +func TestAddSubtree(t *testing.T) { + root := genTestSchema(t) + + t.Run("refresh cache and access keys", func(t *testing.T) { + err := root.RefreshCache() + require.NoError(t, err) + + keys := sortx.Keys(root.keys) + assert.Equal(t, []string{ + "account", "family", "platform", "service", "technology", "version", + }, keys) + }) + + t.Run("build a query with referenced tree positions", func(t *testing.T) { + err := root.RefreshCache() + require.NoError(t, err) + + queries := root.BuildQueries([]KV{ + {Key: "platform", Value: "windows server"}, + }) + assert.Equal(t, []AssetUrlChain{ + { + KV{"technology", "aws"}, + KV{"account", "*"}, + KV{"service", "ec2"}, + KV{"family", "windows"}, + KV{"platform", "windows server"}, + }, + { + KV{"technology", "os"}, + KV{"family", "windows"}, + KV{"platform", "windows server"}, + }, + }, queries) + }) +} diff --git a/providers-sdk/v1/inventory/inventory.pb.go b/providers-sdk/v1/inventory/inventory.pb.go index 2660de40f4..68b860c418 100644 --- a/providers-sdk/v1/inventory/inventory.pb.go +++ b/providers-sdk/v1/inventory/inventory.pb.go @@ -4,7 +4,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.32.0 -// protoc v4.25.3 +// protoc v4.25.2 // source: inventory.proto package inventory @@ -627,6 +627,128 @@ func (x *Asset) GetFqdn() string { return "" } +// AssetUrlBranch defines the hierarchy into which an asset can be placed. It makes +// it easier to find and group assets. Typically this is a subset of all possible +// asset relationships used to generate an opinionated view on an asset. +// +// AssetUrlBranches are part of the overall AssetUrlSchema, to which they are +// attached. +type AssetUrlBranch struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The path to which this tree is getting attached. Only necessary for the + // top-most branches, not necessary for branches inside the values field. + Path []string `protobuf:"bytes,1,rep,name=path,proto3" json:"path,omitempty"` + // key of this tree. Every tree must have one key only at its root. + // Must be [a-z0-9_-]+ up to 100 characters + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + // values of this tree. Other trees can attach themselves into this without + // overwriting existing values. Must be [A-Za-z0-9_-]+ up to 200 characters + // The special value '*' is used to designate arbitrary values. + Values map[string]*AssetUrlBranch `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // title for pretty-printing this branch + Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` + // reference to other subtree that will be used at this position. Allows + // providers to re-use url parts from other definitions. For example: + // attaching the /technology=os subtree to cloud VMs + Reference []string `protobuf:"bytes,5,rep,name=reference,proto3" json:"reference,omitempty"` + // internal only: depth of the subtree + Depth uint32 `protobuf:"varint,20,opt,name=depth,proto3" json:"depth,omitempty"` + // internal only: parent relationships + Parent *AssetUrlBranch `protobuf:"bytes,21,opt,name=parent,proto3" json:"parent,omitempty"` + ParentValue string `protobuf:"bytes,22,opt,name=parentValue,proto3" json:"parentValue,omitempty"` +} + +func (x *AssetUrlBranch) Reset() { + *x = AssetUrlBranch{} + if protoimpl.UnsafeEnabled { + mi := &file_inventory_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AssetUrlBranch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AssetUrlBranch) ProtoMessage() {} + +func (x *AssetUrlBranch) ProtoReflect() protoreflect.Message { + mi := &file_inventory_proto_msgTypes[1] + 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 AssetUrlBranch.ProtoReflect.Descriptor instead. +func (*AssetUrlBranch) Descriptor() ([]byte, []int) { + return file_inventory_proto_rawDescGZIP(), []int{1} +} + +func (x *AssetUrlBranch) GetPath() []string { + if x != nil { + return x.Path + } + return nil +} + +func (x *AssetUrlBranch) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *AssetUrlBranch) GetValues() map[string]*AssetUrlBranch { + if x != nil { + return x.Values + } + return nil +} + +func (x *AssetUrlBranch) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *AssetUrlBranch) GetReference() []string { + if x != nil { + return x.Reference + } + return nil +} + +func (x *AssetUrlBranch) GetDepth() uint32 { + if x != nil { + return x.Depth + } + return 0 +} + +func (x *AssetUrlBranch) GetParent() *AssetUrlBranch { + if x != nil { + return x.Parent + } + return nil +} + +func (x *AssetUrlBranch) GetParentValue() string { + if x != nil { + return x.ParentValue + } + return "" +} + type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -662,14 +784,14 @@ type Config struct { PlatformId string `protobuf:"bytes,26,opt,name=platform_id,json=platformId,proto3" json:"platform_id,omitempty"` Capabilities []string `protobuf:"bytes,29,rep,name=capabilities,proto3" json:"capabilities,omitempty"` // Determines whether to delay discovery during the connection phase. - // Discovery will only happen if this is false + // Discovery will only happen if Connect is called and this is false DelayDiscovery bool `protobuf:"varint,31,opt,name=delay_discovery,json=delayDiscovery,proto3" json:"delay_discovery,omitempty"` } func (x *Config) Reset() { *x = Config{} if protoimpl.UnsafeEnabled { - mi := &file_inventory_proto_msgTypes[1] + mi := &file_inventory_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -682,7 +804,7 @@ func (x *Config) String() string { func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { - mi := &file_inventory_proto_msgTypes[1] + mi := &file_inventory_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -695,7 +817,7 @@ func (x *Config) ProtoReflect() protoreflect.Message { // Deprecated: Use Config.ProtoReflect.Descriptor instead. func (*Config) Descriptor() ([]byte, []int) { - return file_inventory_proto_rawDescGZIP(), []int{1} + return file_inventory_proto_rawDescGZIP(), []int{2} } func (x *Config) GetBackend() ProviderType { @@ -838,7 +960,7 @@ type Sudo struct { func (x *Sudo) Reset() { *x = Sudo{} if protoimpl.UnsafeEnabled { - mi := &file_inventory_proto_msgTypes[2] + mi := &file_inventory_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -851,7 +973,7 @@ func (x *Sudo) String() string { func (*Sudo) ProtoMessage() {} func (x *Sudo) ProtoReflect() protoreflect.Message { - mi := &file_inventory_proto_msgTypes[2] + mi := &file_inventory_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -864,7 +986,7 @@ func (x *Sudo) ProtoReflect() protoreflect.Message { // Deprecated: Use Sudo.ProtoReflect.Descriptor instead. func (*Sudo) Descriptor() ([]byte, []int) { - return file_inventory_proto_rawDescGZIP(), []int{2} + return file_inventory_proto_rawDescGZIP(), []int{3} } func (x *Sudo) GetActive() bool { @@ -907,7 +1029,7 @@ type Discovery struct { func (x *Discovery) Reset() { *x = Discovery{} if protoimpl.UnsafeEnabled { - mi := &file_inventory_proto_msgTypes[3] + mi := &file_inventory_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -920,7 +1042,7 @@ func (x *Discovery) String() string { func (*Discovery) ProtoMessage() {} func (x *Discovery) ProtoReflect() protoreflect.Message { - mi := &file_inventory_proto_msgTypes[3] + mi := &file_inventory_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -933,7 +1055,7 @@ func (x *Discovery) ProtoReflect() protoreflect.Message { // Deprecated: Use Discovery.ProtoReflect.Descriptor instead. func (*Discovery) Descriptor() ([]byte, []int) { - return file_inventory_proto_rawDescGZIP(), []int{3} + return file_inventory_proto_rawDescGZIP(), []int{4} } func (x *Discovery) GetTargets() []string { @@ -972,7 +1094,7 @@ type Platform struct { func (x *Platform) Reset() { *x = Platform{} if protoimpl.UnsafeEnabled { - mi := &file_inventory_proto_msgTypes[4] + mi := &file_inventory_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -985,7 +1107,7 @@ func (x *Platform) String() string { func (*Platform) ProtoMessage() {} func (x *Platform) ProtoReflect() protoreflect.Message { - mi := &file_inventory_proto_msgTypes[4] + mi := &file_inventory_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -998,7 +1120,7 @@ func (x *Platform) ProtoReflect() protoreflect.Message { // Deprecated: Use Platform.ProtoReflect.Descriptor instead. func (*Platform) Descriptor() ([]byte, []int) { - return file_inventory_proto_rawDescGZIP(), []int{4} + return file_inventory_proto_rawDescGZIP(), []int{5} } func (x *Platform) GetName() string { @@ -1099,7 +1221,7 @@ type TypeMeta struct { func (x *TypeMeta) Reset() { *x = TypeMeta{} if protoimpl.UnsafeEnabled { - mi := &file_inventory_proto_msgTypes[5] + mi := &file_inventory_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1112,7 +1234,7 @@ func (x *TypeMeta) String() string { func (*TypeMeta) ProtoMessage() {} func (x *TypeMeta) ProtoReflect() protoreflect.Message { - mi := &file_inventory_proto_msgTypes[5] + mi := &file_inventory_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1125,7 +1247,7 @@ func (x *TypeMeta) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeMeta.ProtoReflect.Descriptor instead. func (*TypeMeta) Descriptor() ([]byte, []int) { - return file_inventory_proto_rawDescGZIP(), []int{5} + return file_inventory_proto_rawDescGZIP(), []int{6} } func (x *TypeMeta) GetKind() string { @@ -1195,7 +1317,7 @@ type ObjectMeta struct { func (x *ObjectMeta) Reset() { *x = ObjectMeta{} if protoimpl.UnsafeEnabled { - mi := &file_inventory_proto_msgTypes[6] + mi := &file_inventory_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1208,7 +1330,7 @@ func (x *ObjectMeta) String() string { func (*ObjectMeta) ProtoMessage() {} func (x *ObjectMeta) ProtoReflect() protoreflect.Message { - mi := &file_inventory_proto_msgTypes[6] + mi := &file_inventory_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1221,7 +1343,7 @@ func (x *ObjectMeta) ProtoReflect() protoreflect.Message { // Deprecated: Use ObjectMeta.ProtoReflect.Descriptor instead. func (*ObjectMeta) Descriptor() ([]byte, []int) { - return file_inventory_proto_rawDescGZIP(), []int{6} + return file_inventory_proto_rawDescGZIP(), []int{7} } func (x *ObjectMeta) GetName() string { @@ -1285,7 +1407,7 @@ type Time struct { func (x *Time) Reset() { *x = Time{} if protoimpl.UnsafeEnabled { - mi := &file_inventory_proto_msgTypes[7] + mi := &file_inventory_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1298,7 +1420,7 @@ func (x *Time) String() string { func (*Time) ProtoMessage() {} func (x *Time) ProtoReflect() protoreflect.Message { - mi := &file_inventory_proto_msgTypes[7] + mi := &file_inventory_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1311,7 +1433,7 @@ func (x *Time) ProtoReflect() protoreflect.Message { // Deprecated: Use Time.ProtoReflect.Descriptor instead. func (*Time) Descriptor() ([]byte, []int) { - return file_inventory_proto_rawDescGZIP(), []int{7} + return file_inventory_proto_rawDescGZIP(), []int{8} } func (x *Time) GetSeconds() int64 { @@ -1355,7 +1477,7 @@ type OwnerReference struct { func (x *OwnerReference) Reset() { *x = OwnerReference{} if protoimpl.UnsafeEnabled { - mi := &file_inventory_proto_msgTypes[8] + mi := &file_inventory_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1368,7 +1490,7 @@ func (x *OwnerReference) String() string { func (*OwnerReference) ProtoMessage() {} func (x *OwnerReference) ProtoReflect() protoreflect.Message { - mi := &file_inventory_proto_msgTypes[8] + mi := &file_inventory_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1381,7 +1503,7 @@ func (x *OwnerReference) ProtoReflect() protoreflect.Message { // Deprecated: Use OwnerReference.ProtoReflect.Descriptor instead. func (*OwnerReference) Descriptor() ([]byte, []int) { - return file_inventory_proto_rawDescGZIP(), []int{8} + return file_inventory_proto_rawDescGZIP(), []int{9} } func (x *OwnerReference) GetApiVersion() string { @@ -1431,7 +1553,7 @@ type Inventory struct { func (x *Inventory) Reset() { *x = Inventory{} if protoimpl.UnsafeEnabled { - mi := &file_inventory_proto_msgTypes[9] + mi := &file_inventory_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1444,7 +1566,7 @@ func (x *Inventory) String() string { func (*Inventory) ProtoMessage() {} func (x *Inventory) ProtoReflect() protoreflect.Message { - mi := &file_inventory_proto_msgTypes[9] + mi := &file_inventory_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1457,7 +1579,7 @@ func (x *Inventory) ProtoReflect() protoreflect.Message { // Deprecated: Use Inventory.ProtoReflect.Descriptor instead. func (*Inventory) Descriptor() ([]byte, []int) { - return file_inventory_proto_rawDescGZIP(), []int{9} + return file_inventory_proto_rawDescGZIP(), []int{10} } func (x *Inventory) GetMetadata() *ObjectMeta { @@ -1497,7 +1619,7 @@ type InventorySpec struct { func (x *InventorySpec) Reset() { *x = InventorySpec{} if protoimpl.UnsafeEnabled { - mi := &file_inventory_proto_msgTypes[10] + mi := &file_inventory_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1510,7 +1632,7 @@ func (x *InventorySpec) String() string { func (*InventorySpec) ProtoMessage() {} func (x *InventorySpec) ProtoReflect() protoreflect.Message { - mi := &file_inventory_proto_msgTypes[10] + mi := &file_inventory_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1523,7 +1645,7 @@ func (x *InventorySpec) ProtoReflect() protoreflect.Message { // Deprecated: Use InventorySpec.ProtoReflect.Descriptor instead. func (*InventorySpec) Descriptor() ([]byte, []int) { - return file_inventory_proto_rawDescGZIP(), []int{10} + return file_inventory_proto_rawDescGZIP(), []int{11} } func (x *InventorySpec) GetAssets() []*Asset { @@ -1570,7 +1692,7 @@ type InventoryStatus struct { func (x *InventoryStatus) Reset() { *x = InventoryStatus{} if protoimpl.UnsafeEnabled { - mi := &file_inventory_proto_msgTypes[11] + mi := &file_inventory_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1583,7 +1705,7 @@ func (x *InventoryStatus) String() string { func (*InventoryStatus) ProtoMessage() {} func (x *InventoryStatus) ProtoReflect() protoreflect.Message { - mi := &file_inventory_proto_msgTypes[11] + mi := &file_inventory_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1596,7 +1718,7 @@ func (x *InventoryStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use InventoryStatus.ProtoReflect.Descriptor instead. func (*InventoryStatus) Descriptor() ([]byte, []int) { - return file_inventory_proto_rawDescGZIP(), []int{11} + return file_inventory_proto_rawDescGZIP(), []int{12} } var File_inventory_proto protoreflect.FileDescriptor @@ -1668,259 +1790,284 @@ var file_inventory_proto_rawDesc = []byte{ 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, 0x4a, - 0x04, 0x08, 0x1e, 0x10, 0x1f, 0x22, 0xa1, 0x06, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x3c, 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x22, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x3b, - 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x63, - 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x38, - 0x5f, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, - 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x42, 0x0a, - 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 0x2e, 0x0a, - 0x04, 0x73, 0x75, 0x64, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6e, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x52, 0x04, 0x73, 0x75, 0x64, 0x6f, 0x12, 0x16, 0x0a, - 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x43, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, - 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x08, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x69, 0x64, - 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, - 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0e, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x1a, - 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x4a, 0x04, 0x08, 0x06, 0x10, - 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, - 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x14, 0x10, 0x15, 0x22, 0x68, 0x0a, 0x04, 0x53, 0x75, 0x64, - 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, - 0x65, 0x6c, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6e, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x1a, 0x39, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 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, 0x94, 0x03, 0x0a, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, - 0x6e, 0x64, 0x12, 0x55, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x76, 0x38, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, + 0x04, 0x08, 0x1e, 0x10, 0x1f, 0x22, 0x8b, 0x03, 0x0a, 0x0e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x55, + 0x72, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x48, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x56, 0x38, 0x5f, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x10, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x56, 0x38, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x16, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2a, 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, 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, 0x3e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x12, - 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, - 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x22, 0xa4, 0x03, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, - 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, - 0x0a, 0x0f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, - 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x6f, - 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x39, - 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x55, 0x72, 0x6c, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x64, 0x65, 0x70, + 0x74, 0x68, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x15, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 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, 0x55, + 0x72, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x1a, 0x5f, 0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, 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, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 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, 0x55, + 0x72, 0x6c, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xa1, 0x06, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, + 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x22, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x3b, 0x0a, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x63, 0x6e, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x38, 0x5f, 0x4b, + 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1e, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x73, + 0x75, 0x64, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6e, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x52, 0x04, 0x73, 0x75, 0x64, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x12, 0x43, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x17, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6e, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x08, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x1a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, + 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x18, 0x1d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, + 0x65, 0x6c, 0x61, 0x79, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x1a, 0x3a, 0x0a, + 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, + 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, + 0x0b, 0x4a, 0x04, 0x08, 0x14, 0x10, 0x15, 0x22, 0x68, 0x0a, 0x04, 0x53, 0x75, 0x64, 0x6f, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x68, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x65, 0x6c, + 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, + 0x18, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6e, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x39, + 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 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, 0x36, 0x0a, 0x04, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, - 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6e, 0x61, 0x6e, 0x6f, - 0x73, 0x22, 0x6a, 0x0a, 0x0e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0xc1, 0x01, - 0x0a, 0x09, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x37, 0x0a, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0xd3, 0x03, 0x0a, 0x0d, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x33, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 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, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x56, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x94, 0x03, 0x0a, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, + 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, + 0x12, 0x55, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, + 0x38, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x63, + 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x38, + 0x5f, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x10, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x56, 0x38, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x42, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2a, 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, 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, 0x3e, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, + 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, + 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0xa4, 0x03, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x44, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, + 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x0f, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, + 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x77, 0x6e, + 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 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, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x36, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6e, + 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x22, + 0x6a, 0x0a, 0x0e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0xc1, 0x01, 0x0a, 0x09, + 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6e, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x37, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, + 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0xd3, 0x03, 0x0a, 0x0d, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x33, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 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, 0x06, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x56, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x6e, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, + 0x0a, 0x05, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x70, - 0x65, 0x63, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x75, 0x6c, 0x74, - 0x12, 0x29, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x68, 0x0a, 0x14, 0x75, - 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6d, 0x6f, 0x6e, 0x64, - 0x6f, 0x6f, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x75, 0x70, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x13, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x1a, 0x60, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 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, 0x36, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6e, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x11, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0xec, 0x01, 0x0a, 0x05, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x12, - 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, - 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, - 0x50, 0x45, 0x44, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, - 0x48, 0x55, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, - 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x42, 0x4f, 0x4f, 0x54, 0x10, - 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, - 0x45, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, - 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x0b, 0x2a, 0x3a, 0x0a, 0x0d, 0x41, 0x73, 0x73, - 0x65, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, - 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x49, 0x4e, 0x56, 0x45, 0x4e, 0x54, 0x4f, 0x52, 0x59, - 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, - 0x49, 0x43, 0x44, 0x10, 0x01, 0x2a, 0x85, 0x04, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, - 0x4f, 0x53, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x45, - 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, - 0x17, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x43, - 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x53, - 0x48, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x57, 0x49, 0x4e, 0x52, 0x4d, 0x10, 0x04, 0x12, 0x17, - 0x0a, 0x13, 0x41, 0x57, 0x53, 0x5f, 0x53, 0x53, 0x4d, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x43, 0x4f, - 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x41, - 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x10, 0x06, 0x12, - 0x07, 0x0a, 0x03, 0x54, 0x41, 0x52, 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x4f, 0x43, 0x4b, - 0x10, 0x08, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x53, 0x50, 0x48, 0x45, 0x52, 0x45, 0x10, 0x09, 0x12, - 0x0d, 0x0a, 0x09, 0x41, 0x52, 0x49, 0x53, 0x54, 0x41, 0x45, 0x4f, 0x53, 0x10, 0x0a, 0x12, 0x07, - 0x0a, 0x03, 0x41, 0x57, 0x53, 0x10, 0x0c, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x43, 0x50, 0x10, 0x0d, - 0x12, 0x09, 0x0a, 0x05, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x0e, 0x12, 0x09, 0x0a, 0x05, 0x4d, - 0x53, 0x33, 0x36, 0x35, 0x10, 0x0f, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x50, 0x4d, 0x49, 0x10, 0x10, - 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x53, 0x50, 0x48, 0x45, 0x52, 0x45, 0x5f, 0x56, 0x4d, 0x10, 0x11, - 0x12, 0x06, 0x0a, 0x02, 0x46, 0x53, 0x10, 0x12, 0x12, 0x07, 0x0a, 0x03, 0x4b, 0x38, 0x53, 0x10, - 0x13, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x51, 0x55, 0x49, 0x4e, 0x49, 0x58, 0x5f, 0x4d, 0x45, 0x54, - 0x41, 0x4c, 0x10, 0x14, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x15, - 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x10, 0x16, 0x12, 0x0b, 0x0a, 0x07, - 0x56, 0x41, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x10, 0x17, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x57, 0x53, - 0x5f, 0x45, 0x43, 0x32, 0x5f, 0x45, 0x42, 0x53, 0x10, 0x18, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x49, - 0x54, 0x4c, 0x41, 0x42, 0x10, 0x19, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x45, 0x52, 0x52, 0x41, 0x46, - 0x4f, 0x52, 0x4d, 0x10, 0x1a, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x4f, 0x53, 0x54, 0x10, 0x1b, 0x12, - 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x1c, 0x12, 0x08, 0x0a, 0x04, - 0x4f, 0x4b, 0x54, 0x41, 0x10, 0x1d, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, - 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x1e, 0x12, 0x09, 0x0a, 0x05, - 0x53, 0x4c, 0x41, 0x43, 0x4b, 0x10, 0x1f, 0x12, 0x07, 0x0a, 0x03, 0x56, 0x43, 0x44, 0x10, 0x20, - 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x43, 0x49, 0x10, 0x21, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x50, 0x43, - 0x55, 0x41, 0x10, 0x22, 0x12, 0x21, 0x0a, 0x1d, 0x47, 0x43, 0x50, 0x5f, 0x43, 0x4f, 0x4d, 0x50, - 0x55, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x4e, 0x41, - 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x23, 0x22, 0x04, 0x08, 0x0b, 0x10, 0x0b, 0x2a, 0xcb, 0x02, - 0x0a, 0x11, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x38, 0x5f, 0x4b, - 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x0c, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x49, - 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x4d, - 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, - 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, - 0x0d, 0x0a, 0x09, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, 0x10, - 0x0a, 0x0c, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x10, 0x04, - 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, - 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x49, - 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x06, 0x12, 0x10, - 0x0a, 0x0c, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x10, 0x07, - 0x12, 0x0c, 0x0a, 0x08, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x50, 0x49, 0x10, 0x08, 0x12, 0x13, - 0x0a, 0x0f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x42, 0x41, 0x52, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, - 0x4c, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x45, 0x54, 0x57, - 0x4f, 0x52, 0x4b, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x38, - 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x4b, 0x49, - 0x4e, 0x44, 0x5f, 0x41, 0x57, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x0c, 0x12, - 0x13, 0x0a, 0x0f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x47, 0x43, 0x50, 0x5f, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x10, 0x0d, 0x12, 0x15, 0x0a, 0x11, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x5a, 0x55, - 0x52, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x0e, 0x42, 0x36, 0x5a, 0x34, 0x67, - 0x6f, 0x2e, 0x6d, 0x6f, 0x6e, 0x64, 0x6f, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6e, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x30, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x29, + 0x0a, 0x10, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x68, 0x0a, 0x14, 0x75, 0x70, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6d, 0x6f, 0x6e, 0x64, 0x6f, 0x6f, + 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x13, + 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x1a, 0x60, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 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, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6e, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x11, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0xec, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x04, + 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, + 0x44, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x48, 0x55, + 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, 0x10, 0x0a, + 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x42, 0x4f, 0x4f, 0x54, 0x10, 0x08, 0x12, + 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, + 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x49, + 0x4e, 0x45, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, + 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x0b, 0x2a, 0x3a, 0x0a, 0x0d, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, 0x54, 0x45, + 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x49, 0x4e, 0x56, 0x45, 0x4e, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x00, + 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x49, 0x43, + 0x44, 0x10, 0x01, 0x2a, 0x85, 0x04, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x4f, 0x53, + 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x47, + 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, + 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x53, 0x48, 0x10, + 0x03, 0x12, 0x09, 0x0a, 0x05, 0x57, 0x49, 0x4e, 0x52, 0x4d, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, + 0x41, 0x57, 0x53, 0x5f, 0x53, 0x53, 0x4d, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, + 0x41, 0x4e, 0x44, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, + 0x45, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x10, 0x06, 0x12, 0x07, 0x0a, + 0x03, 0x54, 0x41, 0x52, 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x4f, 0x43, 0x4b, 0x10, 0x08, + 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x53, 0x50, 0x48, 0x45, 0x52, 0x45, 0x10, 0x09, 0x12, 0x0d, 0x0a, + 0x09, 0x41, 0x52, 0x49, 0x53, 0x54, 0x41, 0x45, 0x4f, 0x53, 0x10, 0x0a, 0x12, 0x07, 0x0a, 0x03, + 0x41, 0x57, 0x53, 0x10, 0x0c, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x43, 0x50, 0x10, 0x0d, 0x12, 0x09, + 0x0a, 0x05, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x0e, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x53, 0x33, + 0x36, 0x35, 0x10, 0x0f, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x50, 0x4d, 0x49, 0x10, 0x10, 0x12, 0x0e, + 0x0a, 0x0a, 0x56, 0x53, 0x50, 0x48, 0x45, 0x52, 0x45, 0x5f, 0x56, 0x4d, 0x10, 0x11, 0x12, 0x06, + 0x0a, 0x02, 0x46, 0x53, 0x10, 0x12, 0x12, 0x07, 0x0a, 0x03, 0x4b, 0x38, 0x53, 0x10, 0x13, 0x12, + 0x11, 0x0a, 0x0d, 0x45, 0x51, 0x55, 0x49, 0x4e, 0x49, 0x58, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x4c, + 0x10, 0x14, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x15, 0x12, 0x0a, + 0x0a, 0x06, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x10, 0x16, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x41, + 0x47, 0x52, 0x41, 0x4e, 0x54, 0x10, 0x17, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x57, 0x53, 0x5f, 0x45, + 0x43, 0x32, 0x5f, 0x45, 0x42, 0x53, 0x10, 0x18, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x49, 0x54, 0x4c, + 0x41, 0x42, 0x10, 0x19, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x45, 0x52, 0x52, 0x41, 0x46, 0x4f, 0x52, + 0x4d, 0x10, 0x1a, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x4f, 0x53, 0x54, 0x10, 0x1b, 0x12, 0x0b, 0x0a, + 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x1c, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x4b, + 0x54, 0x41, 0x10, 0x1d, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x5f, 0x57, + 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x1e, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4c, + 0x41, 0x43, 0x4b, 0x10, 0x1f, 0x12, 0x07, 0x0a, 0x03, 0x56, 0x43, 0x44, 0x10, 0x20, 0x12, 0x07, + 0x0a, 0x03, 0x4f, 0x43, 0x49, 0x10, 0x21, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x50, 0x43, 0x55, 0x41, + 0x10, 0x22, 0x12, 0x21, 0x0a, 0x1d, 0x47, 0x43, 0x50, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x55, 0x54, + 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, + 0x48, 0x4f, 0x54, 0x10, 0x23, 0x22, 0x04, 0x08, 0x0b, 0x10, 0x0b, 0x2a, 0xcb, 0x02, 0x0a, 0x11, + 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 0x38, 0x5f, 0x4b, 0x69, 0x6e, + 0x64, 0x12, 0x10, 0x0a, 0x0c, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, + 0x4e, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x49, 0x52, 0x54, + 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, + 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, + 0x09, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, + 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x18, + 0x0a, 0x14, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x4d, + 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x49, 0x4e, 0x44, + 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, + 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x10, 0x07, 0x12, 0x0c, + 0x0a, 0x08, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x50, 0x49, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, + 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x42, 0x41, 0x52, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x4c, 0x10, + 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, + 0x4b, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x38, 0x53, 0x5f, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x4b, 0x49, 0x4e, 0x44, + 0x5f, 0x41, 0x57, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x0c, 0x12, 0x13, 0x0a, + 0x0f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x47, 0x43, 0x50, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x10, 0x0d, 0x12, 0x15, 0x0a, 0x11, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, + 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x0e, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x6f, 0x2e, + 0x6d, 0x6f, 0x6e, 0x64, 0x6f, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6e, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2f, 0x76, 0x31, 0x30, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, + 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1936,71 +2083,76 @@ func file_inventory_proto_rawDescGZIP() []byte { } var file_inventory_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_inventory_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_inventory_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_inventory_proto_goTypes = []interface{}{ (State)(0), // 0: cnquery.providers.v1.State (AssetCategory)(0), // 1: cnquery.providers.v1.AssetCategory (ProviderType)(0), // 2: cnquery.providers.v1.ProviderType (DeprecatedV8_Kind)(0), // 3: cnquery.providers.v1.DeprecatedV8_Kind (*Asset)(nil), // 4: cnquery.providers.v1.Asset - (*Config)(nil), // 5: cnquery.providers.v1.Config - (*Sudo)(nil), // 6: cnquery.providers.v1.Sudo - (*Discovery)(nil), // 7: cnquery.providers.v1.Discovery - (*Platform)(nil), // 8: cnquery.providers.v1.Platform - (*TypeMeta)(nil), // 9: cnquery.providers.v1.TypeMeta - (*ObjectMeta)(nil), // 10: cnquery.providers.v1.ObjectMeta - (*Time)(nil), // 11: cnquery.providers.v1.Time - (*OwnerReference)(nil), // 12: cnquery.providers.v1.OwnerReference - (*Inventory)(nil), // 13: cnquery.providers.v1.Inventory - (*InventorySpec)(nil), // 14: cnquery.providers.v1.InventorySpec - (*InventoryStatus)(nil), // 15: cnquery.providers.v1.InventoryStatus - nil, // 16: cnquery.providers.v1.Asset.LabelsEntry - nil, // 17: cnquery.providers.v1.Asset.AnnotationsEntry - nil, // 18: cnquery.providers.v1.Asset.OptionsEntry - nil, // 19: cnquery.providers.v1.Config.OptionsEntry - nil, // 20: cnquery.providers.v1.Discovery.FilterEntry - nil, // 21: cnquery.providers.v1.Platform.LabelsEntry - nil, // 22: cnquery.providers.v1.ObjectMeta.LabelsEntry - nil, // 23: cnquery.providers.v1.ObjectMeta.AnnotationsEntry - nil, // 24: cnquery.providers.v1.InventorySpec.CredentialsEntry - (*vault.Credential)(nil), // 25: cnquery.providers.v1.Credential - (*vault.VaultConfiguration)(nil), // 26: cnquery.providers.v1.VaultConfiguration - (*upstream.ServiceAccountCredentials)(nil), // 27: mondoo.cnquery.upstream.v1.ServiceAccountCredentials + (*AssetUrlBranch)(nil), // 5: cnquery.providers.v1.AssetUrlBranch + (*Config)(nil), // 6: cnquery.providers.v1.Config + (*Sudo)(nil), // 7: cnquery.providers.v1.Sudo + (*Discovery)(nil), // 8: cnquery.providers.v1.Discovery + (*Platform)(nil), // 9: cnquery.providers.v1.Platform + (*TypeMeta)(nil), // 10: cnquery.providers.v1.TypeMeta + (*ObjectMeta)(nil), // 11: cnquery.providers.v1.ObjectMeta + (*Time)(nil), // 12: cnquery.providers.v1.Time + (*OwnerReference)(nil), // 13: cnquery.providers.v1.OwnerReference + (*Inventory)(nil), // 14: cnquery.providers.v1.Inventory + (*InventorySpec)(nil), // 15: cnquery.providers.v1.InventorySpec + (*InventoryStatus)(nil), // 16: cnquery.providers.v1.InventoryStatus + nil, // 17: cnquery.providers.v1.Asset.LabelsEntry + nil, // 18: cnquery.providers.v1.Asset.AnnotationsEntry + nil, // 19: cnquery.providers.v1.Asset.OptionsEntry + nil, // 20: cnquery.providers.v1.AssetUrlBranch.ValuesEntry + nil, // 21: cnquery.providers.v1.Config.OptionsEntry + nil, // 22: cnquery.providers.v1.Discovery.FilterEntry + nil, // 23: cnquery.providers.v1.Platform.LabelsEntry + nil, // 24: cnquery.providers.v1.ObjectMeta.LabelsEntry + nil, // 25: cnquery.providers.v1.ObjectMeta.AnnotationsEntry + nil, // 26: cnquery.providers.v1.InventorySpec.CredentialsEntry + (*vault.Credential)(nil), // 27: cnquery.providers.v1.Credential + (*vault.VaultConfiguration)(nil), // 28: cnquery.providers.v1.VaultConfiguration + (*upstream.ServiceAccountCredentials)(nil), // 29: mondoo.cnquery.upstream.v1.ServiceAccountCredentials } var file_inventory_proto_depIdxs = []int32{ 0, // 0: cnquery.providers.v1.Asset.state:type_name -> cnquery.providers.v1.State - 8, // 1: cnquery.providers.v1.Asset.platform:type_name -> cnquery.providers.v1.Platform - 5, // 2: cnquery.providers.v1.Asset.connections:type_name -> cnquery.providers.v1.Config - 16, // 3: cnquery.providers.v1.Asset.labels:type_name -> cnquery.providers.v1.Asset.LabelsEntry - 17, // 4: cnquery.providers.v1.Asset.annotations:type_name -> cnquery.providers.v1.Asset.AnnotationsEntry - 18, // 5: cnquery.providers.v1.Asset.options:type_name -> cnquery.providers.v1.Asset.OptionsEntry + 9, // 1: cnquery.providers.v1.Asset.platform:type_name -> cnquery.providers.v1.Platform + 6, // 2: cnquery.providers.v1.Asset.connections:type_name -> cnquery.providers.v1.Config + 17, // 3: cnquery.providers.v1.Asset.labels:type_name -> cnquery.providers.v1.Asset.LabelsEntry + 18, // 4: cnquery.providers.v1.Asset.annotations:type_name -> cnquery.providers.v1.Asset.AnnotationsEntry + 19, // 5: cnquery.providers.v1.Asset.options:type_name -> cnquery.providers.v1.Asset.OptionsEntry 1, // 6: cnquery.providers.v1.Asset.category:type_name -> cnquery.providers.v1.AssetCategory 4, // 7: cnquery.providers.v1.Asset.related_assets:type_name -> cnquery.providers.v1.Asset - 2, // 8: cnquery.providers.v1.Config.backend:type_name -> cnquery.providers.v1.ProviderType - 3, // 9: cnquery.providers.v1.Config.kind:type_name -> cnquery.providers.v1.DeprecatedV8_Kind - 25, // 10: cnquery.providers.v1.Config.credentials:type_name -> cnquery.providers.v1.Credential - 6, // 11: cnquery.providers.v1.Config.sudo:type_name -> cnquery.providers.v1.Sudo - 19, // 12: cnquery.providers.v1.Config.options:type_name -> cnquery.providers.v1.Config.OptionsEntry - 7, // 13: cnquery.providers.v1.Config.discover:type_name -> cnquery.providers.v1.Discovery - 20, // 14: cnquery.providers.v1.Discovery.filter:type_name -> cnquery.providers.v1.Discovery.FilterEntry - 3, // 15: cnquery.providers.v1.Platform.deprecated_v8_kind:type_name -> cnquery.providers.v1.DeprecatedV8_Kind - 21, // 16: cnquery.providers.v1.Platform.labels:type_name -> cnquery.providers.v1.Platform.LabelsEntry - 22, // 17: cnquery.providers.v1.ObjectMeta.labels:type_name -> cnquery.providers.v1.ObjectMeta.LabelsEntry - 23, // 18: cnquery.providers.v1.ObjectMeta.annotations:type_name -> cnquery.providers.v1.ObjectMeta.AnnotationsEntry - 12, // 19: cnquery.providers.v1.ObjectMeta.ownerReferences:type_name -> cnquery.providers.v1.OwnerReference - 10, // 20: cnquery.providers.v1.Inventory.metadata:type_name -> cnquery.providers.v1.ObjectMeta - 14, // 21: cnquery.providers.v1.Inventory.spec:type_name -> cnquery.providers.v1.InventorySpec - 15, // 22: cnquery.providers.v1.Inventory.status:type_name -> cnquery.providers.v1.InventoryStatus - 4, // 23: cnquery.providers.v1.InventorySpec.assets:type_name -> cnquery.providers.v1.Asset - 24, // 24: cnquery.providers.v1.InventorySpec.credentials:type_name -> cnquery.providers.v1.InventorySpec.CredentialsEntry - 26, // 25: cnquery.providers.v1.InventorySpec.vault:type_name -> cnquery.providers.v1.VaultConfiguration - 27, // 26: cnquery.providers.v1.InventorySpec.upstream_credentials:type_name -> mondoo.cnquery.upstream.v1.ServiceAccountCredentials - 25, // 27: cnquery.providers.v1.InventorySpec.CredentialsEntry.value:type_name -> cnquery.providers.v1.Credential - 28, // [28:28] is the sub-list for method output_type - 28, // [28:28] is the sub-list for method input_type - 28, // [28:28] is the sub-list for extension type_name - 28, // [28:28] is the sub-list for extension extendee - 0, // [0:28] is the sub-list for field type_name + 20, // 8: cnquery.providers.v1.AssetUrlBranch.values:type_name -> cnquery.providers.v1.AssetUrlBranch.ValuesEntry + 5, // 9: cnquery.providers.v1.AssetUrlBranch.parent:type_name -> cnquery.providers.v1.AssetUrlBranch + 2, // 10: cnquery.providers.v1.Config.backend:type_name -> cnquery.providers.v1.ProviderType + 3, // 11: cnquery.providers.v1.Config.kind:type_name -> cnquery.providers.v1.DeprecatedV8_Kind + 27, // 12: cnquery.providers.v1.Config.credentials:type_name -> cnquery.providers.v1.Credential + 7, // 13: cnquery.providers.v1.Config.sudo:type_name -> cnquery.providers.v1.Sudo + 21, // 14: cnquery.providers.v1.Config.options:type_name -> cnquery.providers.v1.Config.OptionsEntry + 8, // 15: cnquery.providers.v1.Config.discover:type_name -> cnquery.providers.v1.Discovery + 22, // 16: cnquery.providers.v1.Discovery.filter:type_name -> cnquery.providers.v1.Discovery.FilterEntry + 3, // 17: cnquery.providers.v1.Platform.deprecated_v8_kind:type_name -> cnquery.providers.v1.DeprecatedV8_Kind + 23, // 18: cnquery.providers.v1.Platform.labels:type_name -> cnquery.providers.v1.Platform.LabelsEntry + 24, // 19: cnquery.providers.v1.ObjectMeta.labels:type_name -> cnquery.providers.v1.ObjectMeta.LabelsEntry + 25, // 20: cnquery.providers.v1.ObjectMeta.annotations:type_name -> cnquery.providers.v1.ObjectMeta.AnnotationsEntry + 13, // 21: cnquery.providers.v1.ObjectMeta.ownerReferences:type_name -> cnquery.providers.v1.OwnerReference + 11, // 22: cnquery.providers.v1.Inventory.metadata:type_name -> cnquery.providers.v1.ObjectMeta + 15, // 23: cnquery.providers.v1.Inventory.spec:type_name -> cnquery.providers.v1.InventorySpec + 16, // 24: cnquery.providers.v1.Inventory.status:type_name -> cnquery.providers.v1.InventoryStatus + 4, // 25: cnquery.providers.v1.InventorySpec.assets:type_name -> cnquery.providers.v1.Asset + 26, // 26: cnquery.providers.v1.InventorySpec.credentials:type_name -> cnquery.providers.v1.InventorySpec.CredentialsEntry + 28, // 27: cnquery.providers.v1.InventorySpec.vault:type_name -> cnquery.providers.v1.VaultConfiguration + 29, // 28: cnquery.providers.v1.InventorySpec.upstream_credentials:type_name -> mondoo.cnquery.upstream.v1.ServiceAccountCredentials + 5, // 29: cnquery.providers.v1.AssetUrlBranch.ValuesEntry.value:type_name -> cnquery.providers.v1.AssetUrlBranch + 27, // 30: cnquery.providers.v1.InventorySpec.CredentialsEntry.value:type_name -> cnquery.providers.v1.Credential + 31, // [31:31] is the sub-list for method output_type + 31, // [31:31] is the sub-list for method input_type + 31, // [31:31] is the sub-list for extension type_name + 31, // [31:31] is the sub-list for extension extendee + 0, // [0:31] is the sub-list for field type_name } func init() { file_inventory_proto_init() } @@ -2022,7 +2174,7 @@ func file_inventory_proto_init() { } } file_inventory_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Config); i { + switch v := v.(*AssetUrlBranch); i { case 0: return &v.state case 1: @@ -2034,7 +2186,7 @@ func file_inventory_proto_init() { } } file_inventory_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Sudo); i { + switch v := v.(*Config); i { case 0: return &v.state case 1: @@ -2046,7 +2198,7 @@ func file_inventory_proto_init() { } } file_inventory_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Discovery); i { + switch v := v.(*Sudo); i { case 0: return &v.state case 1: @@ -2058,7 +2210,7 @@ func file_inventory_proto_init() { } } file_inventory_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Platform); i { + switch v := v.(*Discovery); i { case 0: return &v.state case 1: @@ -2070,7 +2222,7 @@ func file_inventory_proto_init() { } } file_inventory_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TypeMeta); i { + switch v := v.(*Platform); i { case 0: return &v.state case 1: @@ -2082,7 +2234,7 @@ func file_inventory_proto_init() { } } file_inventory_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObjectMeta); i { + switch v := v.(*TypeMeta); i { case 0: return &v.state case 1: @@ -2094,7 +2246,7 @@ func file_inventory_proto_init() { } } file_inventory_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Time); i { + switch v := v.(*ObjectMeta); i { case 0: return &v.state case 1: @@ -2106,7 +2258,7 @@ func file_inventory_proto_init() { } } file_inventory_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OwnerReference); i { + switch v := v.(*Time); i { case 0: return &v.state case 1: @@ -2118,7 +2270,7 @@ func file_inventory_proto_init() { } } file_inventory_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Inventory); i { + switch v := v.(*OwnerReference); i { case 0: return &v.state case 1: @@ -2130,7 +2282,7 @@ func file_inventory_proto_init() { } } file_inventory_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InventorySpec); i { + switch v := v.(*Inventory); i { case 0: return &v.state case 1: @@ -2142,6 +2294,18 @@ func file_inventory_proto_init() { } } file_inventory_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InventorySpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventory_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InventoryStatus); i { case 0: return &v.state @@ -2160,7 +2324,7 @@ func file_inventory_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_inventory_proto_rawDesc, NumEnums: 4, - NumMessages: 21, + NumMessages: 23, NumExtensions: 0, NumServices: 0, }, diff --git a/providers-sdk/v1/inventory/inventory.proto b/providers-sdk/v1/inventory/inventory.proto index 6a79d7244f..6fafbedda1 100644 --- a/providers-sdk/v1/inventory/inventory.proto +++ b/providers-sdk/v1/inventory/inventory.proto @@ -84,6 +84,36 @@ message Asset { string fqdn = 37; } +// AssetUrlBranch defines the hierarchy into which an asset can be placed. It makes +// it easier to find and group assets. Typically this is a subset of all possible +// asset relationships used to generate an opinionated view on an asset. +// +// AssetUrlBranches are part of the overall AssetUrlSchema, to which they are +// attached. +message AssetUrlBranch { + // The path to which this tree is getting attached. Only necessary for the + // top-most branches, not necessary for branches inside the values field. + repeated string path = 1; + // key of this tree. Every tree must have one key only at its root. + // Must be [a-z0-9_-]+ up to 100 characters + string key = 2; + // values of this tree. Other trees can attach themselves into this without + // overwriting existing values. Must be [A-Za-z0-9_-]+ up to 200 characters + // The special value '*' is used to designate arbitrary values. + map values = 3; + // title for pretty-printing this branch + string title = 4; + // reference to other subtree that will be used at this position. Allows + // providers to re-use url parts from other definitions. For example: + // attaching the /technology=os subtree to cloud VMs + repeated string reference = 5; + // internal only: depth of the subtree + uint32 depth = 20; + // internal only: parent relationships + AssetUrlBranch parent = 21; + string parentValue = 22; +} + // FIXME: DEPRECATED, remove in v10.0 (or later) vv enum ProviderType { // protolint:disable:next ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH diff --git a/providers-sdk/v1/resources/resources.pb.go b/providers-sdk/v1/resources/resources.pb.go index 608e7729e5..a9434103e3 100644 --- a/providers-sdk/v1/resources/resources.pb.go +++ b/providers-sdk/v1/resources/resources.pb.go @@ -252,7 +252,12 @@ type ResourceInfo struct { MinMondooVersion string `protobuf:"bytes,25,opt,name=min_mondoo_version,json=minMondooVersion,proto3" json:"min_mondoo_version,omitempty"` Defaults string `protobuf:"bytes,26,opt,name=defaults,proto3" json:"defaults,omitempty"` Provider string `protobuf:"bytes,27,opt,name=provider,proto3" json:"provider,omitempty"` - Others []*ResourceInfo `protobuf:"bytes,29,rep,name=others,proto3" json:"others,omitempty"` + // This field contains references to other providers with the same + // resource/field. + // Note: Please do not use this field, it is only temporary and will be + // removed in the future once binding resources are mandatory for all + // executions. + Others []*ResourceInfo `protobuf:"bytes,29,rep,name=others,proto3" json:"others,omitempty"` } func (x *ResourceInfo) Reset() { @@ -394,7 +399,12 @@ type Field struct { IsImplicitResource bool `protobuf:"varint,24,opt,name=is_implicit_resource,json=isImplicitResource,proto3" json:"is_implicit_resource,omitempty"` IsEmbedded bool `protobuf:"varint,25,opt,name=is_embedded,json=isEmbedded,proto3" json:"is_embedded,omitempty"` Provider string `protobuf:"bytes,27,opt,name=provider,proto3" json:"provider,omitempty"` - Others []*Field `protobuf:"bytes,29,rep,name=others,proto3" json:"others,omitempty"` + // This field contains references to other providers with the same + // resource/field. + // Note: Please do not use this field, it is only temporary and will be + // removed in the future once binding resources are mandatory for all + // executions. + Others []*Field `protobuf:"bytes,29,rep,name=others,proto3" json:"others,omitempty"` } func (x *Field) Reset() {