From 28342fd4152c4857d98b3db82cd5dedea7f06a2f Mon Sep 17 00:00:00 2001 From: Ram Muthiah Date: Fri, 29 May 2026 03:03:03 +0100 Subject: [PATCH] feat(cvd): Add netsim_args to cvd load config and plumb to launcher - Update load_config.proto to include netsim_args in EnvironmentSpecification and EnvironmentOptions. - Update launch_cvd_parser.cpp to generate --netsim_args flag from the proto. - Regenerate Go proto code. - Add unit test to flags_parser_test.cc. TAG=agy CONV=1de71887-825c-459d-a0c4-0168b1189286 --- .../cvd/cli/parser/flags_parser_test.cc | 27 + .../cvd/cli/parser/golang/load_config.pb.go | 954 ++++++++++-------- .../cvd/cli/parser/launch_cvd_parser.cpp | 4 + .../commands/cvd/cli/parser/load_config.proto | 2 + 4 files changed, 544 insertions(+), 443 deletions(-) diff --git a/base/cvd/cuttlefish/host/commands/cvd/cli/parser/flags_parser_test.cc b/base/cvd/cuttlefish/host/commands/cvd/cli/parser/flags_parser_test.cc index 894dff6f2b9..0aee154d10c 100644 --- a/base/cvd/cuttlefish/host/commands/cvd/cli/parser/flags_parser_test.cc +++ b/base/cvd/cuttlefish/host/commands/cvd/cli/parser/flags_parser_test.cc @@ -175,6 +175,33 @@ TEST(BootFlagsParserTest, ParseNetSimFlagEnabled) { << "netsim_uwb flag is missing or wrongly formatted"; } +TEST(BootFlagsParserTest, ParseNetSimArgs) { + const char* test_string = R""""( +{ + "netsim_args": "--wifi-instance=1 --bt-instance=2", + "instances" : + [ + { + "vm": { + "crosvm":{ + } + } + } + ] +} + )""""; + + Json::Value json_configs; + std::string json_text(test_string); + + EXPECT_TRUE(ParseJsonString(json_text, json_configs)) + << "Invalid Json string"; + auto serialized_data = LaunchCvdParserTester(json_configs); + EXPECT_TRUE(serialized_data.ok()) << serialized_data.error().Trace(); + EXPECT_TRUE(FindConfig(*serialized_data, "--netsim_args=--wifi-instance=1 --bt-instance=2")) + << "netsim_args flag is missing or wrongly formatted"; +} + TEST(CvdLoadFlagsTest, CredentialSourceSetter) { LoadFlags load_flags; diff --git a/base/cvd/cuttlefish/host/commands/cvd/cli/parser/golang/load_config.pb.go b/base/cvd/cuttlefish/host/commands/cvd/cli/parser/golang/load_config.pb.go index 27880f9ad7a..167ffa396a3 100644 --- a/base/cvd/cuttlefish/host/commands/cvd/cli/parser/golang/load_config.pb.go +++ b/base/cvd/cuttlefish/host/commands/cvd/cli/parser/golang/load_config.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.3 -// protoc v6.31.1 +// protoc-gen-go v1.36.10 +// protoc v6.33.0 // source: cuttlefish/host/commands/cvd/cli/parser/load_config.proto package golang @@ -11,6 +11,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -20,6 +21,55 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type UserPageSize int32 + +const ( + UserPageSize_USER_PAGE_SIZE_UNSPECIFIED UserPageSize = 0 + UserPageSize_USER_PAGE_SIZE_16KB UserPageSize = 1 + UserPageSize_USER_PAGE_SIZE_64KB UserPageSize = 2 +) + +// Enum value maps for UserPageSize. +var ( + UserPageSize_name = map[int32]string{ + 0: "USER_PAGE_SIZE_UNSPECIFIED", + 1: "USER_PAGE_SIZE_16KB", + 2: "USER_PAGE_SIZE_64KB", + } + UserPageSize_value = map[string]int32{ + "USER_PAGE_SIZE_UNSPECIFIED": 0, + "USER_PAGE_SIZE_16KB": 1, + "USER_PAGE_SIZE_64KB": 2, + } +) + +func (x UserPageSize) Enum() *UserPageSize { + p := new(UserPageSize) + *p = x + return p +} + +func (x UserPageSize) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (UserPageSize) Descriptor() protoreflect.EnumDescriptor { + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_enumTypes[0].Descriptor() +} + +func (UserPageSize) Type() protoreflect.EnumType { + return &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_enumTypes[0] +} + +func (x UserPageSize) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UserPageSize.Descriptor instead. +func (UserPageSize) EnumDescriptor() ([]byte, []int) { + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{0} +} + type EnvironmentSpecification struct { state protoimpl.MessageState `protogen:"open.v1"` Instances []*Instance `protobuf:"bytes,1,rep,name=instances,proto3" json:"instances,omitempty"` @@ -28,6 +78,7 @@ type EnvironmentSpecification struct { Common *Common `protobuf:"bytes,4,opt,name=common,proto3,oneof" json:"common,omitempty"` NetsimBt *bool `protobuf:"varint,5,opt,name=netsim_bt,json=netsimBt,proto3,oneof" json:"netsim_bt,omitempty"` NetsimUwb *bool `protobuf:"varint,6,opt,name=netsim_uwb,json=netsimUwb,proto3,oneof" json:"netsim_uwb,omitempty"` + NetsimArgs *string `protobuf:"bytes,7,opt,name=netsim_args,json=netsimArgs,proto3,oneof" json:"netsim_args,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -104,6 +155,97 @@ func (x *EnvironmentSpecification) GetNetsimUwb() bool { return false } +func (x *EnvironmentSpecification) GetNetsimArgs() string { + if x != nil && x.NetsimArgs != nil { + return *x.NetsimArgs + } + return "" +} + +type EnvironmentOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fetch *Fetch `protobuf:"bytes,1,opt,name=fetch,proto3,oneof" json:"fetch,omitempty"` + Metrics *Metrics `protobuf:"bytes,2,opt,name=metrics,proto3,oneof" json:"metrics,omitempty"` + Common *Common `protobuf:"bytes,3,opt,name=common,proto3,oneof" json:"common,omitempty"` + NetsimBt *bool `protobuf:"varint,4,opt,name=netsim_bt,json=netsimBt,proto3,oneof" json:"netsim_bt,omitempty"` + NetsimUwb *bool `protobuf:"varint,5,opt,name=netsim_uwb,json=netsimUwb,proto3,oneof" json:"netsim_uwb,omitempty"` + NetsimArgs *string `protobuf:"bytes,6,opt,name=netsim_args,json=netsimArgs,proto3,oneof" json:"netsim_args,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EnvironmentOptions) Reset() { + *x = EnvironmentOptions{} + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EnvironmentOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnvironmentOptions) ProtoMessage() {} + +func (x *EnvironmentOptions) ProtoReflect() protoreflect.Message { + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnvironmentOptions.ProtoReflect.Descriptor instead. +func (*EnvironmentOptions) Descriptor() ([]byte, []int) { + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{1} +} + +func (x *EnvironmentOptions) GetFetch() *Fetch { + if x != nil { + return x.Fetch + } + return nil +} + +func (x *EnvironmentOptions) GetMetrics() *Metrics { + if x != nil { + return x.Metrics + } + return nil +} + +func (x *EnvironmentOptions) GetCommon() *Common { + if x != nil { + return x.Common + } + return nil +} + +func (x *EnvironmentOptions) GetNetsimBt() bool { + if x != nil && x.NetsimBt != nil { + return *x.NetsimBt + } + return false +} + +func (x *EnvironmentOptions) GetNetsimUwb() bool { + if x != nil && x.NetsimUwb != nil { + return *x.NetsimUwb + } + return false +} + +func (x *EnvironmentOptions) GetNetsimArgs() string { + if x != nil && x.NetsimArgs != nil { + return *x.NetsimArgs + } + return "" +} + type Common struct { state protoimpl.MessageState `protogen:"open.v1"` GroupName *string `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3,oneof" json:"group_name,omitempty"` @@ -114,7 +256,7 @@ type Common struct { func (x *Common) Reset() { *x = Common{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[1] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -126,7 +268,7 @@ func (x *Common) String() string { func (*Common) ProtoMessage() {} func (x *Common) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[1] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -139,7 +281,7 @@ func (x *Common) ProtoReflect() protoreflect.Message { // Deprecated: Use Common.ProtoReflect.Descriptor instead. func (*Common) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{1} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{2} } func (x *Common) GetGroupName() string { @@ -170,7 +312,7 @@ type Fetch struct { func (x *Fetch) Reset() { *x = Fetch{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[2] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -182,7 +324,7 @@ func (x *Fetch) String() string { func (*Fetch) ProtoMessage() {} func (x *Fetch) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[2] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -195,7 +337,7 @@ func (x *Fetch) ProtoReflect() protoreflect.Message { // Deprecated: Use Fetch.ProtoReflect.Descriptor instead. func (*Fetch) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{2} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{3} } func (x *Fetch) GetApiKey() string { @@ -257,7 +399,7 @@ type Instance struct { func (x *Instance) Reset() { *x = Instance{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[3] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -269,7 +411,7 @@ func (x *Instance) String() string { func (*Instance) ProtoMessage() {} func (x *Instance) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[3] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -282,7 +424,7 @@ func (x *Instance) ProtoReflect() protoreflect.Message { // Deprecated: Use Instance.ProtoReflect.Descriptor instead. func (*Instance) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{3} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{4} } func (x *Instance) GetName() string { @@ -355,13 +497,14 @@ type Boot struct { ExtraBootconfigArgs *string `protobuf:"bytes,3,opt,name=extra_bootconfig_args,json=extraBootconfigArgs,proto3,oneof" json:"extra_bootconfig_args,omitempty"` Build *string `protobuf:"bytes,4,opt,name=build,proto3,oneof" json:"build,omitempty"` Bootloader *Build `protobuf:"bytes,5,opt,name=bootloader,proto3,oneof" json:"bootloader,omitempty"` + AndroidEfiLoader *Build `protobuf:"bytes,6,opt,name=android_efi_loader,json=androidEfiLoader,proto3,oneof" json:"android_efi_loader,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Boot) Reset() { *x = Boot{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[4] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -373,7 +516,7 @@ func (x *Boot) String() string { func (*Boot) ProtoMessage() {} func (x *Boot) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[4] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -386,7 +529,7 @@ func (x *Boot) ProtoReflect() protoreflect.Message { // Deprecated: Use Boot.ProtoReflect.Descriptor instead. func (*Boot) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{4} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{5} } func (x *Boot) GetKernel() *Build { @@ -424,6 +567,13 @@ func (x *Boot) GetBootloader() *Build { return nil } +func (x *Boot) GetAndroidEfiLoader() *Build { + if x != nil { + return x.AndroidEfiLoader + } + return nil +} + type Build struct { state protoimpl.MessageState `protogen:"open.v1"` Build *string `protobuf:"bytes,1,opt,name=build,proto3,oneof" json:"build,omitempty"` @@ -433,7 +583,7 @@ type Build struct { func (x *Build) Reset() { *x = Build{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[5] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -445,7 +595,7 @@ func (x *Build) String() string { func (*Build) ProtoMessage() {} func (x *Build) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[5] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -458,7 +608,7 @@ func (x *Build) ProtoReflect() protoreflect.Message { // Deprecated: Use Build.ProtoReflect.Descriptor instead. func (*Build) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{5} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{6} } func (x *Build) GetBuild() string { @@ -477,7 +627,7 @@ type Connectivity struct { func (x *Connectivity) Reset() { *x = Connectivity{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[6] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -489,7 +639,7 @@ func (x *Connectivity) String() string { func (*Connectivity) ProtoMessage() {} func (x *Connectivity) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[6] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -502,7 +652,7 @@ func (x *Connectivity) ProtoReflect() protoreflect.Message { // Deprecated: Use Connectivity.ProtoReflect.Descriptor instead. func (*Connectivity) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{6} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{7} } func (x *Connectivity) GetVsock() *Vsock { @@ -521,7 +671,7 @@ type Vsock struct { func (x *Vsock) Reset() { *x = Vsock{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[7] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -533,7 +683,7 @@ func (x *Vsock) String() string { func (*Vsock) ProtoMessage() {} func (x *Vsock) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[7] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -546,7 +696,7 @@ func (x *Vsock) ProtoReflect() protoreflect.Message { // Deprecated: Use Vsock.ProtoReflect.Descriptor instead. func (*Vsock) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{7} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{8} } func (x *Vsock) GetGuestGroup() string { @@ -567,7 +717,7 @@ type Graphics struct { func (x *Graphics) Reset() { *x = Graphics{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[8] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -579,7 +729,7 @@ func (x *Graphics) String() string { func (*Graphics) ProtoMessage() {} func (x *Graphics) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[8] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -592,7 +742,7 @@ func (x *Graphics) ProtoReflect() protoreflect.Message { // Deprecated: Use Graphics.ProtoReflect.Descriptor instead. func (*Graphics) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{8} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{9} } func (x *Graphics) GetDisplays() []*Display { @@ -629,7 +779,7 @@ type Display struct { func (x *Display) Reset() { *x = Display{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[9] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -641,7 +791,7 @@ func (x *Display) String() string { func (*Display) ProtoMessage() {} func (x *Display) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[9] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -654,7 +804,7 @@ func (x *Display) ProtoReflect() protoreflect.Message { // Deprecated: Use Display.ProtoReflect.Descriptor instead. func (*Display) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{9} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{10} } func (x *Display) GetWidth() uint32 { @@ -706,7 +856,7 @@ type Disk struct { func (x *Disk) Reset() { *x = Disk{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[10] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -718,7 +868,7 @@ func (x *Disk) String() string { func (*Disk) ProtoMessage() {} func (x *Disk) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[10] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -731,7 +881,7 @@ func (x *Disk) ProtoReflect() protoreflect.Message { // Deprecated: Use Disk.ProtoReflect.Descriptor instead. func (*Disk) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{10} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{11} } func (x *Disk) GetDefaultBuild() string { @@ -785,7 +935,7 @@ type Super struct { func (x *Super) Reset() { *x = Super{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[11] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -797,7 +947,7 @@ func (x *Super) String() string { func (*Super) ProtoMessage() {} func (x *Super) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[11] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -810,7 +960,7 @@ func (x *Super) ProtoReflect() protoreflect.Message { // Deprecated: Use Super.ProtoReflect.Descriptor instead. func (*Super) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{11} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{12} } func (x *Super) GetSystem() string { @@ -831,7 +981,7 @@ type Security struct { func (x *Security) Reset() { *x = Security{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[12] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -843,7 +993,7 @@ func (x *Security) String() string { func (*Security) ProtoMessage() {} func (x *Security) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[12] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -856,7 +1006,7 @@ func (x *Security) ProtoReflect() protoreflect.Message { // Deprecated: Use Security.ProtoReflect.Descriptor instead. func (*Security) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{12} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{13} } func (x *Security) GetSerialNumber() string { @@ -889,7 +1039,7 @@ type Streaming struct { func (x *Streaming) Reset() { *x = Streaming{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[13] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -901,7 +1051,7 @@ func (x *Streaming) String() string { func (*Streaming) ProtoMessage() {} func (x *Streaming) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[13] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -914,7 +1064,7 @@ func (x *Streaming) ProtoReflect() protoreflect.Message { // Deprecated: Use Streaming.ProtoReflect.Descriptor instead. func (*Streaming) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{13} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{14} } func (x *Streaming) GetDeviceId() string { @@ -938,13 +1088,14 @@ type Vm struct { // *Vm_Qemu Vmm isVm_Vmm `protobuf_oneof:"vmm"` CustomActions []*CustomAction `protobuf:"bytes,9,rep,name=custom_actions,json=customActions,proto3" json:"custom_actions,omitempty"` + PageSize *UserPageSize `protobuf:"varint,10,opt,name=page_size,json=pageSize,proto3,enum=cuttlefish.cvd.config.UserPageSize,oneof" json:"page_size,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Vm) Reset() { *x = Vm{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[14] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -956,7 +1107,7 @@ func (x *Vm) String() string { func (*Vm) ProtoMessage() {} func (x *Vm) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[14] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -969,7 +1120,7 @@ func (x *Vm) ProtoReflect() protoreflect.Message { // Deprecated: Use Vm.ProtoReflect.Descriptor instead. func (*Vm) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{14} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{15} } func (x *Vm) GetCpus() uint32 { @@ -1048,6 +1199,13 @@ func (x *Vm) GetCustomActions() []*CustomAction { return nil } +func (x *Vm) GetPageSize() UserPageSize { + if x != nil && x.PageSize != nil { + return *x.PageSize + } + return UserPageSize_USER_PAGE_SIZE_UNSPECIFIED +} + type isVm_Vmm interface { isVm_Vmm() } @@ -1081,7 +1239,7 @@ type Crosvm struct { func (x *Crosvm) Reset() { *x = Crosvm{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[15] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1093,7 +1251,7 @@ func (x *Crosvm) String() string { func (*Crosvm) ProtoMessage() {} func (x *Crosvm) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[15] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1106,7 +1264,7 @@ func (x *Crosvm) ProtoReflect() protoreflect.Message { // Deprecated: Use Crosvm.ProtoReflect.Descriptor instead. func (*Crosvm) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{15} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{16} } func (x *Crosvm) GetEnableSandbox() bool { @@ -1138,7 +1296,7 @@ type Gem5 struct { func (x *Gem5) Reset() { *x = Gem5{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[16] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1150,7 +1308,7 @@ func (x *Gem5) String() string { func (*Gem5) ProtoMessage() {} func (x *Gem5) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[16] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1163,7 +1321,7 @@ func (x *Gem5) ProtoReflect() protoreflect.Message { // Deprecated: Use Gem5.ProtoReflect.Descriptor instead. func (*Gem5) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{16} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{17} } type Qemu struct { @@ -1174,7 +1332,7 @@ type Qemu struct { func (x *Qemu) Reset() { *x = Qemu{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[17] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1186,7 +1344,7 @@ func (x *Qemu) String() string { func (*Qemu) ProtoMessage() {} func (x *Qemu) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[17] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1199,7 +1357,7 @@ func (x *Qemu) ProtoReflect() protoreflect.Message { // Deprecated: Use Qemu.ProtoReflect.Descriptor instead. func (*Qemu) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{17} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{18} } type CustomAction struct { @@ -1215,7 +1373,7 @@ type CustomAction struct { func (x *CustomAction) Reset() { *x = CustomAction{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[18] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1227,7 +1385,7 @@ func (x *CustomAction) String() string { func (*CustomAction) ProtoMessage() {} func (x *CustomAction) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[18] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1240,7 +1398,7 @@ func (x *CustomAction) ProtoReflect() protoreflect.Message { // Deprecated: Use CustomAction.ProtoReflect.Descriptor instead. func (*CustomAction) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{18} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{19} } func (x *CustomAction) GetShellCommand() string { @@ -1289,7 +1447,7 @@ type Button struct { func (x *Button) Reset() { *x = Button{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[19] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1301,7 +1459,7 @@ func (x *Button) String() string { func (*Button) ProtoMessage() {} func (x *Button) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[19] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1314,7 +1472,7 @@ func (x *Button) ProtoReflect() protoreflect.Message { // Deprecated: Use Button.ProtoReflect.Descriptor instead. func (*Button) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{19} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{20} } func (x *Button) GetCommand() string { @@ -1348,7 +1506,7 @@ type DeviceState struct { func (x *DeviceState) Reset() { *x = DeviceState{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[20] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1360,7 +1518,7 @@ func (x *DeviceState) String() string { func (*DeviceState) ProtoMessage() {} func (x *DeviceState) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[20] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1373,7 +1531,7 @@ func (x *DeviceState) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceState.ProtoReflect.Descriptor instead. func (*DeviceState) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{20} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{21} } func (x *DeviceState) GetLidSwitchOpen() bool { @@ -1399,7 +1557,7 @@ type Metrics struct { func (x *Metrics) Reset() { *x = Metrics{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[21] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1411,7 +1569,7 @@ func (x *Metrics) String() string { func (*Metrics) ProtoMessage() {} func (x *Metrics) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[21] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1424,7 +1582,7 @@ func (x *Metrics) ProtoReflect() protoreflect.Message { // Deprecated: Use Metrics.ProtoReflect.Descriptor instead. func (*Metrics) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{21} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{22} } func (x *Metrics) GetEnable() bool { @@ -1444,7 +1602,7 @@ type DisplayOverlay struct { func (x *DisplayOverlay) Reset() { *x = DisplayOverlay{} - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[22] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1456,7 +1614,7 @@ func (x *DisplayOverlay) String() string { func (*DisplayOverlay) ProtoMessage() {} func (x *DisplayOverlay) ProtoReflect() protoreflect.Message { - mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[22] + mi := &file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1469,7 +1627,7 @@ func (x *DisplayOverlay) ProtoReflect() protoreflect.Message { // Deprecated: Use DisplayOverlay.ProtoReflect.Descriptor instead. func (*DisplayOverlay) Descriptor() ([]byte, []int) { - return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{22} + return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP(), []int{23} } func (x *DisplayOverlay) GetVmIndex() int32 { @@ -1488,388 +1646,297 @@ func (x *DisplayOverlay) GetDisplayIndex() int32 { var File_cuttlefish_host_commands_cvd_cli_parser_load_config_proto protoreflect.FileDescriptor -var file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDesc = []byte{ - 0x0a, 0x39, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2f, 0x68, 0x6f, 0x73, - 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x63, 0x76, 0x64, 0x2f, 0x63, - 0x6c, 0x69, 0x2f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x63, 0x75, 0x74, - 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x22, 0x91, 0x03, 0x0a, 0x18, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x3d, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, - 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x37, - 0x0a, 0x05, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x66, - 0x65, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, - 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x48, 0x01, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, - 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x65, 0x74, 0x73, 0x69, 0x6d, 0x5f, 0x62, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x08, 0x6e, 0x65, 0x74, 0x73, 0x69, 0x6d, 0x42, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x73, 0x69, 0x6d, 0x5f, 0x75, - 0x77, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x73, - 0x69, 0x6d, 0x55, 0x77, 0x62, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x65, 0x74, - 0x63, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x65, - 0x74, 0x73, 0x69, 0x6d, 0x5f, 0x62, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x65, 0x74, 0x73, - 0x69, 0x6d, 0x5f, 0x75, 0x77, 0x62, 0x22, 0x74, 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x12, 0x22, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x68, 0x6f, - 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x22, 0x9f, 0x03, 0x0a, - 0x05, 0x46, 0x65, 0x74, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, - 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x01, 0x52, 0x10, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x19, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x72, - 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x11, 0x77, 0x61, 0x69, - 0x74, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x16, 0x6b, 0x65, 0x65, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x65, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x25, 0x0a, 0x0c, 0x61, 0x70, 0x69, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x42, 0x61, 0x73, - 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x1c, 0x0a, - 0x1a, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, - 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x70, 0x69, - 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xec, - 0x04, 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x02, 0x76, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x6d, 0x48, 0x01, 0x52, 0x02, 0x76, - 0x6d, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, - 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x6f, 0x74, 0x48, - 0x02, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x74, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, - 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x03, 0x52, - 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x04, - 0x64, 0x69, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x75, 0x74, - 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x48, 0x04, 0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x88, - 0x01, 0x01, 0x12, 0x40, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, - 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x72, 0x61, - 0x70, 0x68, 0x69, 0x63, 0x73, 0x48, 0x05, 0x52, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x09, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, - 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x48, 0x06, 0x52, 0x09, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x48, 0x07, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0f, 0x69, 0x6d, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x08, 0x52, 0x07, 0x40, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x76, 0x6d, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x69, 0x74, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6d, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xe7, 0x02, - 0x0a, 0x04, 0x42, 0x6f, 0x6f, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, - 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, - 0x75, 0x69, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x06, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x88, 0x01, - 0x01, 0x12, 0x36, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x6f, 0x6f, 0x74, - 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x01, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x6f, 0x6f, 0x74, 0x61, 0x6e, 0x69, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x61, 0x72, - 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x13, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x42, 0x6f, 0x6f, 0x74, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x72, 0x67, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x03, 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, - 0x0a, 0x62, 0x6f, 0x6f, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, - 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x48, - 0x04, 0x52, 0x0a, 0x62, 0x6f, 0x6f, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x61, 0x6e, 0x69, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x62, - 0x6f, 0x6f, 0x74, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x62, 0x6f, 0x6f, - 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x05, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x12, 0x19, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x62, 0x75, 0x69, 0x6c, 0x64, 0x22, 0x51, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x73, 0x6f, 0x63, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, - 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x73, 0x6f, - 0x63, 0x6b, 0x48, 0x00, 0x52, 0x05, 0x76, 0x73, 0x6f, 0x63, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x76, 0x73, 0x6f, 0x63, 0x6b, 0x22, 0x3d, 0x0a, 0x05, 0x56, 0x73, 0x6f, 0x63, - 0x6b, 0x12, 0x24, 0x0a, 0x0b, 0x67, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x75, 0x65, 0x73, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x67, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xaf, 0x01, 0x0a, 0x08, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x69, 0x63, 0x73, 0x12, 0x3a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, - 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x08, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x73, - 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x63, 0x72, 0x65, 0x65, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x67, 0x70, - 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, - 0x67, 0x70, 0x75, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x07, 0x44, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x19, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, - 0x03, 0x64, 0x70, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x03, 0x64, 0x70, - 0x69, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x72, 0x74, 0x7a, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x03, 0x52, 0x10, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 0x48, - 0x65, 0x72, 0x74, 0x7a, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x6c, - 0x61, 0x79, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x75, 0x74, 0x74, - 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, - 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x77, - 0x69, 0x64, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x64, 0x70, 0x69, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x66, 0x72, - 0x65, 0x73, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x72, 0x74, 0x7a, 0x22, 0xb5, - 0x03, 0x0a, 0x04, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x41, 0x0a, 0x0f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x75, 0x74, - 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x53, 0x75, 0x70, 0x65, 0x72, 0x48, 0x01, 0x52, 0x05, 0x73, 0x75, 0x70, 0x65, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x69, 0x6d, 0x67, 0x5f, 0x7a, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, - 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x67, 0x5a, 0x69, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x19, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x7a, 0x69, 0x70, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x5a, 0x69, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x04, 0x52, 0x10, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x4d, 0x62, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6f, 0x74, 0x61, 0x74, 0x6f, - 0x6f, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x08, 0x6f, 0x74, 0x61, - 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, - 0x75, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x6d, 0x67, 0x5f, - 0x7a, 0x69, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x7a, 0x69, - 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x62, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x74, - 0x61, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x22, 0x2f, 0x0a, 0x05, 0x53, 0x75, 0x70, 0x65, 0x72, 0x12, - 0x1b, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x22, 0xe3, 0x01, 0x0a, 0x08, 0x53, 0x65, 0x63, 0x75, - 0x72, 0x69, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x73, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2f, - 0x0a, 0x11, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x73, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0f, 0x75, 0x73, 0x65, - 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, - 0x39, 0x0a, 0x16, 0x67, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, - 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x02, 0x52, 0x14, 0x67, 0x75, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x53, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x69, - 0x61, 0x6c, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x67, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x66, - 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x22, 0x3b, 0x0a, - 0x09, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x09, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x22, 0xe2, 0x03, 0x0a, 0x02, 0x56, - 0x6d, 0x12, 0x17, 0x0a, 0x04, 0x63, 0x70, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x04, 0x63, 0x70, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x65, - 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x62, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, - 0x75, 0x73, 0x65, 0x5f, 0x73, 0x64, 0x63, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x03, 0x52, 0x09, 0x75, 0x73, 0x65, 0x53, 0x64, 0x63, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x65, 0x74, 0x75, 0x70, 0x77, 0x69, 0x7a, 0x61, 0x72, 0x64, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0f, 0x73, 0x65, - 0x74, 0x75, 0x70, 0x77, 0x69, 0x7a, 0x61, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x17, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, - 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x72, 0x6f, - 0x73, 0x76, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x75, 0x74, 0x74, - 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x76, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x72, 0x6f, 0x73, - 0x76, 0x6d, 0x12, 0x31, 0x0a, 0x04, 0x67, 0x65, 0x6d, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x65, 0x6d, 0x35, 0x48, 0x00, 0x52, - 0x04, 0x67, 0x65, 0x6d, 0x35, 0x12, 0x31, 0x0a, 0x04, 0x71, 0x65, 0x6d, 0x75, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, - 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x51, 0x65, 0x6d, 0x75, - 0x48, 0x00, 0x52, 0x04, 0x71, 0x65, 0x6d, 0x75, 0x12, 0x4a, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x76, 0x6d, 0x6d, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x63, 0x70, 0x75, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, - 0x6d, 0x62, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x64, 0x63, 0x61, 0x72, - 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x77, 0x69, 0x7a, 0x61, 0x72, - 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x22, - 0xc7, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x6f, 0x73, 0x76, 0x6d, 0x12, 0x2a, 0x0a, 0x0e, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x6e, 0x64, - 0x62, 0x6f, 0x78, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, - 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x11, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x64, - 0x69, 0x61, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x76, - 0x34, 0x6c, 0x32, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x09, 0x76, 0x34, 0x6c, 0x32, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x88, 0x01, 0x01, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x61, 0x6e, 0x64, 0x62, - 0x6f, 0x78, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x6d, 0x65, - 0x64, 0x69, 0x61, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x76, - 0x34, 0x6c, 0x32, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x06, 0x0a, 0x04, 0x47, 0x65, 0x6d, - 0x35, 0x22, 0x06, 0x0a, 0x04, 0x51, 0x65, 0x6d, 0x75, 0x22, 0xbb, 0x02, 0x0a, 0x0c, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x68, - 0x65, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, - 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x75, 0x74, - 0x74, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x02, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, - 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x07, 0x62, - 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2e, 0x63, 0x76, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x42, - 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x06, 0x42, 0x75, 0x74, 0x74, - 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, - 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, - 0x69, 0x74, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, 0x69, 0x64, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x6c, - 0x69, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x2f, 0x0a, 0x11, 0x68, 0x69, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0f, 0x68, 0x69, - 0x6e, 0x67, 0x65, 0x41, 0x6e, 0x67, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6c, 0x69, 0x64, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, - 0x6f, 0x70, 0x65, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x68, 0x69, 0x6e, 0x67, 0x65, 0x5f, 0x61, - 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x31, 0x0a, 0x07, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x50, 0x0a, - 0x0e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x12, - 0x19, 0x0a, 0x08, 0x76, 0x6d, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x76, 0x6d, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, - 0x5f, 0x5a, 0x5d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x63, 0x75, 0x74, - 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x63, 0x76, 0x64, - 0x2f, 0x63, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x69, 0x73, 0x68, 0x2f, 0x68, 0x6f, 0x73, 0x74, - 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x63, 0x76, 0x64, 0x2f, 0x63, 0x6c, - 0x69, 0x2f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +const file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDesc = "" + + "\n" + + "9cuttlefish/host/commands/cvd/cli/parser/load_config.proto\x12\x15cuttlefish.cvd.config\"\xc7\x03\n" + + "\x18EnvironmentSpecification\x12=\n" + + "\tinstances\x18\x01 \x03(\v2\x1f.cuttlefish.cvd.config.InstanceR\tinstances\x127\n" + + "\x05fetch\x18\x02 \x01(\v2\x1c.cuttlefish.cvd.config.FetchH\x00R\x05fetch\x88\x01\x01\x12=\n" + + "\ametrics\x18\x03 \x01(\v2\x1e.cuttlefish.cvd.config.MetricsH\x01R\ametrics\x88\x01\x01\x12:\n" + + "\x06common\x18\x04 \x01(\v2\x1d.cuttlefish.cvd.config.CommonH\x02R\x06common\x88\x01\x01\x12 \n" + + "\tnetsim_bt\x18\x05 \x01(\bH\x03R\bnetsimBt\x88\x01\x01\x12\"\n" + + "\n" + + "netsim_uwb\x18\x06 \x01(\bH\x04R\tnetsimUwb\x88\x01\x01\x12$\n" + + "\vnetsim_args\x18\a \x01(\tH\x05R\n" + + "netsimArgs\x88\x01\x01B\b\n" + + "\x06_fetchB\n" + + "\n" + + "\b_metricsB\t\n" + + "\a_commonB\f\n" + + "\n" + + "_netsim_btB\r\n" + + "\v_netsim_uwbB\x0e\n" + + "\f_netsim_args\"\x82\x03\n" + + "\x12EnvironmentOptions\x127\n" + + "\x05fetch\x18\x01 \x01(\v2\x1c.cuttlefish.cvd.config.FetchH\x00R\x05fetch\x88\x01\x01\x12=\n" + + "\ametrics\x18\x02 \x01(\v2\x1e.cuttlefish.cvd.config.MetricsH\x01R\ametrics\x88\x01\x01\x12:\n" + + "\x06common\x18\x03 \x01(\v2\x1d.cuttlefish.cvd.config.CommonH\x02R\x06common\x88\x01\x01\x12 \n" + + "\tnetsim_bt\x18\x04 \x01(\bH\x03R\bnetsimBt\x88\x01\x01\x12\"\n" + + "\n" + + "netsim_uwb\x18\x05 \x01(\bH\x04R\tnetsimUwb\x88\x01\x01\x12$\n" + + "\vnetsim_args\x18\x06 \x01(\tH\x05R\n" + + "netsimArgs\x88\x01\x01B\b\n" + + "\x06_fetchB\n" + + "\n" + + "\b_metricsB\t\n" + + "\a_commonB\f\n" + + "\n" + + "_netsim_btB\r\n" + + "\v_netsim_uwbB\x0e\n" + + "\f_netsim_args\"t\n" + + "\x06Common\x12\"\n" + + "\n" + + "group_name\x18\x01 \x01(\tH\x00R\tgroupName\x88\x01\x01\x12&\n" + + "\fhost_package\x18\x02 \x01(\tH\x01R\vhostPackage\x88\x01\x01B\r\n" + + "\v_group_nameB\x0f\n" + + "\r_host_package\"\x9f\x03\n" + + "\x05Fetch\x12\x1c\n" + + "\aapi_key\x18\x01 \x01(\tH\x00R\x06apiKey\x88\x01\x01\x120\n" + + "\x11credential_source\x18\x02 \x01(\tH\x01R\x10credentialSource\x88\x01\x01\x129\n" + + "\x19wait_retry_period_seconds\x18\x03 \x01(\rH\x02R\x11wait_retry_period\x88\x01\x01\x12=\n" + + "\x18keep_downloaded_archives\x18\x05 \x01(\bH\x03R\x16keepDownloadedArchives\x88\x01\x01\x12%\n" + + "\fapi_base_url\x18\x06 \x01(\tH\x04R\n" + + "apiBaseUrl\x88\x01\x01\x12\"\n" + + "\n" + + "project_id\x18\a \x01(\tH\x05R\tprojectId\x88\x01\x01B\n" + + "\n" + + "\b_api_keyB\x14\n" + + "\x12_credential_sourceB\x1c\n" + + "\x1a_wait_retry_period_secondsB\x1b\n" + + "\x19_keep_downloaded_archivesB\x0f\n" + + "\r_api_base_urlB\r\n" + + "\v_project_idJ\x04\b\x04\x10\x05\"\xec\x04\n" + + "\bInstance\x12\x17\n" + + "\x04name\x18\x01 \x01(\tH\x00R\x04name\x88\x01\x01\x12.\n" + + "\x02vm\x18\x02 \x01(\v2\x19.cuttlefish.cvd.config.VmH\x01R\x02vm\x88\x01\x01\x124\n" + + "\x04boot\x18\x03 \x01(\v2\x1b.cuttlefish.cvd.config.BootH\x02R\x04boot\x88\x01\x01\x12@\n" + + "\bsecurity\x18\x04 \x01(\v2\x1f.cuttlefish.cvd.config.SecurityH\x03R\bsecurity\x88\x01\x01\x124\n" + + "\x04disk\x18\x05 \x01(\v2\x1b.cuttlefish.cvd.config.DiskH\x04R\x04disk\x88\x01\x01\x12@\n" + + "\bgraphics\x18\x06 \x01(\v2\x1f.cuttlefish.cvd.config.GraphicsH\x05R\bgraphics\x88\x01\x01\x12C\n" + + "\tstreaming\x18\a \x01(\v2 .cuttlefish.cvd.config.StreamingH\x06R\tstreaming\x88\x01\x01\x12L\n" + + "\fconnectivity\x18\b \x01(\v2#.cuttlefish.cvd.config.ConnectivityH\aR\fconnectivity\x88\x01\x01\x12%\n" + + "\x0fimport_template\x18\t \x01(\tH\bR\a@import\x88\x01\x01B\a\n" + + "\x05_nameB\x05\n" + + "\x03_vmB\a\n" + + "\x05_bootB\v\n" + + "\t_securityB\a\n" + + "\x05_diskB\v\n" + + "\t_graphicsB\f\n" + + "\n" + + "_streamingB\x0f\n" + + "\r_connectivityB\x12\n" + + "\x10_import_template\"\xcf\x03\n" + + "\x04Boot\x129\n" + + "\x06kernel\x18\x01 \x01(\v2\x1c.cuttlefish.cvd.config.BuildH\x00R\x06kernel\x88\x01\x01\x126\n" + + "\x14enable_bootanimation\x18\x02 \x01(\bH\x01R\x13enableBootanimation\x88\x01\x01\x127\n" + + "\x15extra_bootconfig_args\x18\x03 \x01(\tH\x02R\x13extraBootconfigArgs\x88\x01\x01\x12\x19\n" + + "\x05build\x18\x04 \x01(\tH\x03R\x05build\x88\x01\x01\x12A\n" + + "\n" + + "bootloader\x18\x05 \x01(\v2\x1c.cuttlefish.cvd.config.BuildH\x04R\n" + + "bootloader\x88\x01\x01\x12O\n" + + "\x12android_efi_loader\x18\x06 \x01(\v2\x1c.cuttlefish.cvd.config.BuildH\x05R\x10androidEfiLoader\x88\x01\x01B\t\n" + + "\a_kernelB\x17\n" + + "\x15_enable_bootanimationB\x18\n" + + "\x16_extra_bootconfig_argsB\b\n" + + "\x06_buildB\r\n" + + "\v_bootloaderB\x15\n" + + "\x13_android_efi_loader\",\n" + + "\x05Build\x12\x19\n" + + "\x05build\x18\x01 \x01(\tH\x00R\x05build\x88\x01\x01B\b\n" + + "\x06_build\"Q\n" + + "\fConnectivity\x127\n" + + "\x05vsock\x18\x01 \x01(\v2\x1c.cuttlefish.cvd.config.VsockH\x00R\x05vsock\x88\x01\x01B\b\n" + + "\x06_vsock\"=\n" + + "\x05Vsock\x12$\n" + + "\vguest_group\x18\x01 \x01(\tH\x00R\n" + + "guestGroup\x88\x01\x01B\x0e\n" + + "\f_guest_group\"\xaf\x01\n" + + "\bGraphics\x12:\n" + + "\bdisplays\x18\x01 \x03(\v2\x1e.cuttlefish.cvd.config.DisplayR\bdisplays\x12(\n" + + "\rrecord_screen\x18\x02 \x01(\bH\x00R\frecordScreen\x88\x01\x01\x12\x1e\n" + + "\bgpu_mode\x18\x03 \x01(\tH\x01R\agpuMode\x88\x01\x01B\x10\n" + + "\x0e_record_screenB\v\n" + + "\t_gpu_mode\"\x82\x02\n" + + "\aDisplay\x12\x19\n" + + "\x05width\x18\x01 \x01(\rH\x00R\x05width\x88\x01\x01\x12\x1b\n" + + "\x06height\x18\x02 \x01(\rH\x01R\x06height\x88\x01\x01\x12\x15\n" + + "\x03dpi\x18\x03 \x01(\rH\x02R\x03dpi\x88\x01\x01\x121\n" + + "\x12refresh_rate_hertz\x18\x04 \x01(\rH\x03R\x10refreshRateHertz\x88\x01\x01\x12A\n" + + "\boverlays\x18\x05 \x03(\v2%.cuttlefish.cvd.config.DisplayOverlayR\boverlaysB\b\n" + + "\x06_widthB\t\n" + + "\a_heightB\x06\n" + + "\x04_dpiB\x15\n" + + "\x13_refresh_rate_hertz\"\xb5\x03\n" + + "\x04Disk\x12(\n" + + "\rdefault_build\x18\x01 \x01(\tH\x00R\fdefaultBuild\x88\x01\x01\x12A\n" + + "\x0fsuper_partition\x18\x02 \x01(\v2\x1c.cuttlefish.cvd.config.SuperH\x01R\x05super\x88\x01\x01\x12-\n" + + "\x10download_img_zip\x18\x03 \x01(\bH\x02R\x0edownloadImgZip\x88\x01\x01\x12>\n" + + "\x19download_target_files_zip\x18\x04 \x01(\bH\x03R\x16downloadTargetFilesZip\x88\x01\x01\x122\n" + + "\x13blank_data_image_mb\x18\x05 \x01(\rH\x04R\x10blankDataImageMb\x88\x01\x01\x12\x1f\n" + + "\botatools\x18\x06 \x01(\tH\x05R\botatools\x88\x01\x01B\x10\n" + + "\x0e_default_buildB\x12\n" + + "\x10_super_partitionB\x13\n" + + "\x11_download_img_zipB\x1c\n" + + "\x1a_download_target_files_zipB\x16\n" + + "\x14_blank_data_image_mbB\v\n" + + "\t_otatools\"/\n" + + "\x05Super\x12\x1b\n" + + "\x06system\x18\x01 \x01(\tH\x00R\x06system\x88\x01\x01B\t\n" + + "\a_system\"\xe3\x01\n" + + "\bSecurity\x12(\n" + + "\rserial_number\x18\x01 \x01(\tH\x00R\fserialNumber\x88\x01\x01\x12/\n" + + "\x11use_random_serial\x18\x02 \x01(\bH\x01R\x0fuseRandomSerial\x88\x01\x01\x129\n" + + "\x16guest_enforce_security\x18\x03 \x01(\bH\x02R\x14guestEnforceSecurity\x88\x01\x01B\x10\n" + + "\x0e_serial_numberB\x14\n" + + "\x12_use_random_serialB\x19\n" + + "\x17_guest_enforce_security\";\n" + + "\tStreaming\x12 \n" + + "\tdevice_id\x18\x01 \x01(\tH\x00R\bdeviceId\x88\x01\x01B\f\n" + + "\n" + + "_device_id\"\xb7\x04\n" + + "\x02Vm\x12\x17\n" + + "\x04cpus\x18\x01 \x01(\rH\x01R\x04cpus\x88\x01\x01\x12 \n" + + "\tmemory_mb\x18\x02 \x01(\rH\x02R\bmemoryMb\x88\x01\x01\x12\"\n" + + "\n" + + "use_sdcard\x18\x03 \x01(\bH\x03R\tuseSdcard\x88\x01\x01\x12.\n" + + "\x10setupwizard_mode\x18\x04 \x01(\tH\x04R\x0fsetupwizardMode\x88\x01\x01\x12\x17\n" + + "\x04uuid\x18\x05 \x01(\tH\x05R\x04uuid\x88\x01\x01\x127\n" + + "\x06crosvm\x18\x06 \x01(\v2\x1d.cuttlefish.cvd.config.CrosvmH\x00R\x06crosvm\x121\n" + + "\x04gem5\x18\a \x01(\v2\x1b.cuttlefish.cvd.config.Gem5H\x00R\x04gem5\x121\n" + + "\x04qemu\x18\b \x01(\v2\x1b.cuttlefish.cvd.config.QemuH\x00R\x04qemu\x12J\n" + + "\x0ecustom_actions\x18\t \x03(\v2#.cuttlefish.cvd.config.CustomActionR\rcustomActions\x12E\n" + + "\tpage_size\x18\n" + + " \x01(\x0e2#.cuttlefish.cvd.config.UserPageSizeH\x06R\bpageSize\x88\x01\x01B\x05\n" + + "\x03vmmB\a\n" + + "\x05_cpusB\f\n" + + "\n" + + "_memory_mbB\r\n" + + "\v_use_sdcardB\x13\n" + + "\x11_setupwizard_modeB\a\n" + + "\x05_uuidB\f\n" + + "\n" + + "_page_size\"\xc7\x01\n" + + "\x06Crosvm\x12*\n" + + "\x0eenable_sandbox\x18\x01 \x01(\bH\x00R\renableSandbox\x88\x01\x01\x123\n" + + "\x13simple_media_device\x18\x02 \x01(\bH\x01R\x11simpleMediaDevice\x88\x01\x01\x12\"\n" + + "\n" + + "v4l2_proxy\x18\x03 \x01(\tH\x02R\tv4l2Proxy\x88\x01\x01B\x11\n" + + "\x0f_enable_sandboxB\x16\n" + + "\x14_simple_media_deviceB\r\n" + + "\v_v4l2_proxy\"\x06\n" + + "\x04Gem5\"\x06\n" + + "\x04Qemu\"\xbb\x02\n" + + "\fCustomAction\x12(\n" + + "\rshell_command\x18\x01 \x01(\tH\x00R\fshellCommand\x88\x01\x01\x12:\n" + + "\x06button\x18\x02 \x01(\v2\x1d.cuttlefish.cvd.config.ButtonH\x01R\x06button\x88\x01\x01\x12\x1b\n" + + "\x06server\x18\x03 \x01(\tH\x02R\x06server\x88\x01\x01\x127\n" + + "\abuttons\x18\x04 \x03(\v2\x1d.cuttlefish.cvd.config.ButtonR\abuttons\x12G\n" + + "\rdevice_states\x18\x05 \x03(\v2\".cuttlefish.cvd.config.DeviceStateR\fdeviceStatesB\x10\n" + + "\x0e_shell_commandB\t\n" + + "\a_buttonB\t\n" + + "\a_server\"\x88\x01\n" + + "\x06Button\x12\x1d\n" + + "\acommand\x18\x01 \x01(\tH\x00R\acommand\x88\x01\x01\x12\x19\n" + + "\x05title\x18\x02 \x01(\tH\x01R\x05title\x88\x01\x01\x12 \n" + + "\ticon_name\x18\x03 \x01(\tH\x02R\biconName\x88\x01\x01B\n" + + "\n" + + "\b_commandB\b\n" + + "\x06_titleB\f\n" + + "\n" + + "_icon_name\"\x95\x01\n" + + "\vDeviceState\x12+\n" + + "\x0flid_switch_open\x18\x01 \x01(\bH\x00R\rlidSwitchOpen\x88\x01\x01\x12/\n" + + "\x11hinge_angle_value\x18\x02 \x01(\x05H\x01R\x0fhingeAngleValue\x88\x01\x01B\x12\n" + + "\x10_lid_switch_openB\x14\n" + + "\x12_hinge_angle_value\"1\n" + + "\aMetrics\x12\x1b\n" + + "\x06enable\x18\x01 \x01(\bH\x00R\x06enable\x88\x01\x01B\t\n" + + "\a_enable\"P\n" + + "\x0eDisplayOverlay\x12\x19\n" + + "\bvm_index\x18\x01 \x01(\x05R\avmIndex\x12#\n" + + "\rdisplay_index\x18\x02 \x01(\x05R\fdisplayIndex*`\n" + + "\fUserPageSize\x12\x1e\n" + + "\x1aUSER_PAGE_SIZE_UNSPECIFIED\x10\x00\x12\x17\n" + + "\x13USER_PAGE_SIZE_16KB\x10\x01\x12\x17\n" + + "\x13USER_PAGE_SIZE_64KB\x10\x02B\xba\x01\n" + + "Ncom.google.android_cuttlefish.base.cvd.cuttlefish.host.commands.cvd.cli.parserB\tCvdConfigZ]github.com/google/android_cuttlefish/base/cvd/cuttlefish/host/commands/cvd/cli/parser/golang/b\x06proto3" var ( file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescOnce sync.Once - file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescData = file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDesc + file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescData []byte ) func file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescGZIP() []byte { file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescOnce.Do(func() { - file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescData) + file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDesc), len(file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDesc))) }) return file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDescData } -var file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_goTypes = []any{ - (*EnvironmentSpecification)(nil), // 0: cuttlefish.cvd.config.EnvironmentSpecification - (*Common)(nil), // 1: cuttlefish.cvd.config.Common - (*Fetch)(nil), // 2: cuttlefish.cvd.config.Fetch - (*Instance)(nil), // 3: cuttlefish.cvd.config.Instance - (*Boot)(nil), // 4: cuttlefish.cvd.config.Boot - (*Build)(nil), // 5: cuttlefish.cvd.config.Build - (*Connectivity)(nil), // 6: cuttlefish.cvd.config.Connectivity - (*Vsock)(nil), // 7: cuttlefish.cvd.config.Vsock - (*Graphics)(nil), // 8: cuttlefish.cvd.config.Graphics - (*Display)(nil), // 9: cuttlefish.cvd.config.Display - (*Disk)(nil), // 10: cuttlefish.cvd.config.Disk - (*Super)(nil), // 11: cuttlefish.cvd.config.Super - (*Security)(nil), // 12: cuttlefish.cvd.config.Security - (*Streaming)(nil), // 13: cuttlefish.cvd.config.Streaming - (*Vm)(nil), // 14: cuttlefish.cvd.config.Vm - (*Crosvm)(nil), // 15: cuttlefish.cvd.config.Crosvm - (*Gem5)(nil), // 16: cuttlefish.cvd.config.Gem5 - (*Qemu)(nil), // 17: cuttlefish.cvd.config.Qemu - (*CustomAction)(nil), // 18: cuttlefish.cvd.config.CustomAction - (*Button)(nil), // 19: cuttlefish.cvd.config.Button - (*DeviceState)(nil), // 20: cuttlefish.cvd.config.DeviceState - (*Metrics)(nil), // 21: cuttlefish.cvd.config.Metrics - (*DisplayOverlay)(nil), // 22: cuttlefish.cvd.config.DisplayOverlay + (UserPageSize)(0), // 0: cuttlefish.cvd.config.UserPageSize + (*EnvironmentSpecification)(nil), // 1: cuttlefish.cvd.config.EnvironmentSpecification + (*EnvironmentOptions)(nil), // 2: cuttlefish.cvd.config.EnvironmentOptions + (*Common)(nil), // 3: cuttlefish.cvd.config.Common + (*Fetch)(nil), // 4: cuttlefish.cvd.config.Fetch + (*Instance)(nil), // 5: cuttlefish.cvd.config.Instance + (*Boot)(nil), // 6: cuttlefish.cvd.config.Boot + (*Build)(nil), // 7: cuttlefish.cvd.config.Build + (*Connectivity)(nil), // 8: cuttlefish.cvd.config.Connectivity + (*Vsock)(nil), // 9: cuttlefish.cvd.config.Vsock + (*Graphics)(nil), // 10: cuttlefish.cvd.config.Graphics + (*Display)(nil), // 11: cuttlefish.cvd.config.Display + (*Disk)(nil), // 12: cuttlefish.cvd.config.Disk + (*Super)(nil), // 13: cuttlefish.cvd.config.Super + (*Security)(nil), // 14: cuttlefish.cvd.config.Security + (*Streaming)(nil), // 15: cuttlefish.cvd.config.Streaming + (*Vm)(nil), // 16: cuttlefish.cvd.config.Vm + (*Crosvm)(nil), // 17: cuttlefish.cvd.config.Crosvm + (*Gem5)(nil), // 18: cuttlefish.cvd.config.Gem5 + (*Qemu)(nil), // 19: cuttlefish.cvd.config.Qemu + (*CustomAction)(nil), // 20: cuttlefish.cvd.config.CustomAction + (*Button)(nil), // 21: cuttlefish.cvd.config.Button + (*DeviceState)(nil), // 22: cuttlefish.cvd.config.DeviceState + (*Metrics)(nil), // 23: cuttlefish.cvd.config.Metrics + (*DisplayOverlay)(nil), // 24: cuttlefish.cvd.config.DisplayOverlay } var file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_depIdxs = []int32{ - 3, // 0: cuttlefish.cvd.config.EnvironmentSpecification.instances:type_name -> cuttlefish.cvd.config.Instance - 2, // 1: cuttlefish.cvd.config.EnvironmentSpecification.fetch:type_name -> cuttlefish.cvd.config.Fetch - 21, // 2: cuttlefish.cvd.config.EnvironmentSpecification.metrics:type_name -> cuttlefish.cvd.config.Metrics - 1, // 3: cuttlefish.cvd.config.EnvironmentSpecification.common:type_name -> cuttlefish.cvd.config.Common - 14, // 4: cuttlefish.cvd.config.Instance.vm:type_name -> cuttlefish.cvd.config.Vm - 4, // 5: cuttlefish.cvd.config.Instance.boot:type_name -> cuttlefish.cvd.config.Boot - 12, // 6: cuttlefish.cvd.config.Instance.security:type_name -> cuttlefish.cvd.config.Security - 10, // 7: cuttlefish.cvd.config.Instance.disk:type_name -> cuttlefish.cvd.config.Disk - 8, // 8: cuttlefish.cvd.config.Instance.graphics:type_name -> cuttlefish.cvd.config.Graphics - 13, // 9: cuttlefish.cvd.config.Instance.streaming:type_name -> cuttlefish.cvd.config.Streaming - 6, // 10: cuttlefish.cvd.config.Instance.connectivity:type_name -> cuttlefish.cvd.config.Connectivity - 5, // 11: cuttlefish.cvd.config.Boot.kernel:type_name -> cuttlefish.cvd.config.Build - 5, // 12: cuttlefish.cvd.config.Boot.bootloader:type_name -> cuttlefish.cvd.config.Build - 7, // 13: cuttlefish.cvd.config.Connectivity.vsock:type_name -> cuttlefish.cvd.config.Vsock - 9, // 14: cuttlefish.cvd.config.Graphics.displays:type_name -> cuttlefish.cvd.config.Display - 22, // 15: cuttlefish.cvd.config.Display.overlays:type_name -> cuttlefish.cvd.config.DisplayOverlay - 11, // 16: cuttlefish.cvd.config.Disk.super_partition:type_name -> cuttlefish.cvd.config.Super - 15, // 17: cuttlefish.cvd.config.Vm.crosvm:type_name -> cuttlefish.cvd.config.Crosvm - 16, // 18: cuttlefish.cvd.config.Vm.gem5:type_name -> cuttlefish.cvd.config.Gem5 - 17, // 19: cuttlefish.cvd.config.Vm.qemu:type_name -> cuttlefish.cvd.config.Qemu - 18, // 20: cuttlefish.cvd.config.Vm.custom_actions:type_name -> cuttlefish.cvd.config.CustomAction - 19, // 21: cuttlefish.cvd.config.CustomAction.button:type_name -> cuttlefish.cvd.config.Button - 19, // 22: cuttlefish.cvd.config.CustomAction.buttons:type_name -> cuttlefish.cvd.config.Button - 20, // 23: cuttlefish.cvd.config.CustomAction.device_states:type_name -> cuttlefish.cvd.config.DeviceState - 24, // [24:24] is the sub-list for method output_type - 24, // [24:24] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name + 5, // 0: cuttlefish.cvd.config.EnvironmentSpecification.instances:type_name -> cuttlefish.cvd.config.Instance + 4, // 1: cuttlefish.cvd.config.EnvironmentSpecification.fetch:type_name -> cuttlefish.cvd.config.Fetch + 23, // 2: cuttlefish.cvd.config.EnvironmentSpecification.metrics:type_name -> cuttlefish.cvd.config.Metrics + 3, // 3: cuttlefish.cvd.config.EnvironmentSpecification.common:type_name -> cuttlefish.cvd.config.Common + 4, // 4: cuttlefish.cvd.config.EnvironmentOptions.fetch:type_name -> cuttlefish.cvd.config.Fetch + 23, // 5: cuttlefish.cvd.config.EnvironmentOptions.metrics:type_name -> cuttlefish.cvd.config.Metrics + 3, // 6: cuttlefish.cvd.config.EnvironmentOptions.common:type_name -> cuttlefish.cvd.config.Common + 16, // 7: cuttlefish.cvd.config.Instance.vm:type_name -> cuttlefish.cvd.config.Vm + 6, // 8: cuttlefish.cvd.config.Instance.boot:type_name -> cuttlefish.cvd.config.Boot + 14, // 9: cuttlefish.cvd.config.Instance.security:type_name -> cuttlefish.cvd.config.Security + 12, // 10: cuttlefish.cvd.config.Instance.disk:type_name -> cuttlefish.cvd.config.Disk + 10, // 11: cuttlefish.cvd.config.Instance.graphics:type_name -> cuttlefish.cvd.config.Graphics + 15, // 12: cuttlefish.cvd.config.Instance.streaming:type_name -> cuttlefish.cvd.config.Streaming + 8, // 13: cuttlefish.cvd.config.Instance.connectivity:type_name -> cuttlefish.cvd.config.Connectivity + 7, // 14: cuttlefish.cvd.config.Boot.kernel:type_name -> cuttlefish.cvd.config.Build + 7, // 15: cuttlefish.cvd.config.Boot.bootloader:type_name -> cuttlefish.cvd.config.Build + 7, // 16: cuttlefish.cvd.config.Boot.android_efi_loader:type_name -> cuttlefish.cvd.config.Build + 9, // 17: cuttlefish.cvd.config.Connectivity.vsock:type_name -> cuttlefish.cvd.config.Vsock + 11, // 18: cuttlefish.cvd.config.Graphics.displays:type_name -> cuttlefish.cvd.config.Display + 24, // 19: cuttlefish.cvd.config.Display.overlays:type_name -> cuttlefish.cvd.config.DisplayOverlay + 13, // 20: cuttlefish.cvd.config.Disk.super_partition:type_name -> cuttlefish.cvd.config.Super + 17, // 21: cuttlefish.cvd.config.Vm.crosvm:type_name -> cuttlefish.cvd.config.Crosvm + 18, // 22: cuttlefish.cvd.config.Vm.gem5:type_name -> cuttlefish.cvd.config.Gem5 + 19, // 23: cuttlefish.cvd.config.Vm.qemu:type_name -> cuttlefish.cvd.config.Qemu + 20, // 24: cuttlefish.cvd.config.Vm.custom_actions:type_name -> cuttlefish.cvd.config.CustomAction + 0, // 25: cuttlefish.cvd.config.Vm.page_size:type_name -> cuttlefish.cvd.config.UserPageSize + 21, // 26: cuttlefish.cvd.config.CustomAction.button:type_name -> cuttlefish.cvd.config.Button + 21, // 27: cuttlefish.cvd.config.CustomAction.buttons:type_name -> cuttlefish.cvd.config.Button + 22, // 28: cuttlefish.cvd.config.CustomAction.device_states:type_name -> cuttlefish.cvd.config.DeviceState + 29, // [29:29] is the sub-list for method output_type + 29, // [29:29] is the sub-list for method input_type + 29, // [29:29] is the sub-list for extension type_name + 29, // [29:29] is the sub-list for extension extendee + 0, // [0:29] is the sub-list for field type_name } func init() { file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_init() } @@ -1891,32 +1958,33 @@ func file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_init() { file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[11].OneofWrappers = []any{} file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[12].OneofWrappers = []any{} file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[13].OneofWrappers = []any{} - file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[14].OneofWrappers = []any{ + file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[14].OneofWrappers = []any{} + file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[15].OneofWrappers = []any{ (*Vm_Crosvm)(nil), (*Vm_Gem5)(nil), (*Vm_Qemu)(nil), } - file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[15].OneofWrappers = []any{} - file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[18].OneofWrappers = []any{} + file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[16].OneofWrappers = []any{} file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[19].OneofWrappers = []any{} file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[20].OneofWrappers = []any{} file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[21].OneofWrappers = []any{} + file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes[22].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 23, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDesc), len(file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDesc)), + NumEnums: 1, + NumMessages: 24, NumExtensions: 0, NumServices: 0, }, GoTypes: file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_goTypes, DependencyIndexes: file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_depIdxs, + EnumInfos: file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_enumTypes, MessageInfos: file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_msgTypes, }.Build() File_cuttlefish_host_commands_cvd_cli_parser_load_config_proto = out.File - file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_rawDesc = nil file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_goTypes = nil file_cuttlefish_host_commands_cvd_cli_parser_load_config_proto_depIdxs = nil } diff --git a/base/cvd/cuttlefish/host/commands/cvd/cli/parser/launch_cvd_parser.cpp b/base/cvd/cuttlefish/host/commands/cvd/cli/parser/launch_cvd_parser.cpp index 1aa73a762ca..40dc5bb464f 100644 --- a/base/cvd/cuttlefish/host/commands/cvd/cli/parser/launch_cvd_parser.cpp +++ b/base/cvd/cuttlefish/host/commands/cvd/cli/parser/launch_cvd_parser.cpp @@ -66,6 +66,10 @@ Result> GenerateCfFlags( flags.emplace_back(GenerateFlag("netsim_uwb", launch.netsim_uwb())); } + if (launch.has_netsim_args()) { + flags.emplace_back(GenerateFlag("netsim_args", launch.netsim_args())); + } + flags = MergeResults(std::move(flags), GenerateMetricsFlags(launch)); flags = MergeResults(std::move(flags), CF_EXPECT(GenerateInstancesFlags(launch))); auto flag_op = GenerateUndefOkFlag(flags); diff --git a/base/cvd/cuttlefish/host/commands/cvd/cli/parser/load_config.proto b/base/cvd/cuttlefish/host/commands/cvd/cli/parser/load_config.proto index b58cf207798..10bd652864e 100644 --- a/base/cvd/cuttlefish/host/commands/cvd/cli/parser/load_config.proto +++ b/base/cvd/cuttlefish/host/commands/cvd/cli/parser/load_config.proto @@ -45,6 +45,7 @@ message EnvironmentSpecification { optional Common common = 4; optional bool netsim_bt = 5; optional bool netsim_uwb = 6; + optional string netsim_args = 7; } // TODO: chadreynolds - when we can make breaking changes and update, use this @@ -55,6 +56,7 @@ message EnvironmentOptions { optional Common common = 3; optional bool netsim_bt = 4; optional bool netsim_uwb = 5; + optional string netsim_args = 6; } message Common {