// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.35.1
// 	protoc        (unknown)
// source: rpcpb/rpc.proto

package rpcpb

import (
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type PingRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PingRequest) Reset() {
	*x = PingRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PingRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PingRequest) ProtoMessage() {}

func (x *PingRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[0]
	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 PingRequest.ProtoReflect.Descriptor instead.
func (*PingRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{0}
}

type PingResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pid int32 `protobuf:"varint,1,opt,name=pid,proto3" json:"pid,omitempty"`
}

func (x *PingResponse) Reset() {
	*x = PingResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PingResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PingResponse) ProtoMessage() {}

func (x *PingResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_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 PingResponse.ProtoReflect.Descriptor instead.
func (*PingResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{1}
}

func (x *PingResponse) GetPid() int32 {
	if x != nil {
		return x.Pid
	}
	return 0
}

type SubnetParticipants struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NodeNames []string `protobuf:"bytes,1,rep,name=node_names,json=nodeNames,proto3" json:"node_names,omitempty"`
}

func (x *SubnetParticipants) Reset() {
	*x = SubnetParticipants{}
	mi := &file_rpcpb_rpc_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SubnetParticipants) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubnetParticipants) ProtoMessage() {}

func (x *SubnetParticipants) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[2]
	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 SubnetParticipants.ProtoReflect.Descriptor instead.
func (*SubnetParticipants) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{2}
}

func (x *SubnetParticipants) GetNodeNames() []string {
	if x != nil {
		return x.NodeNames
	}
	return nil
}

type ClusterInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NodeNames   []string             `protobuf:"bytes,1,rep,name=node_names,json=nodeNames,proto3" json:"node_names,omitempty"`
	NodeInfos   map[string]*NodeInfo `protobuf:"bytes,2,rep,name=node_infos,json=nodeInfos,proto3" json:"node_infos,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Pid         int32                `protobuf:"varint,3,opt,name=pid,proto3" json:"pid,omitempty"`
	RootDataDir string               `protobuf:"bytes,4,opt,name=root_data_dir,json=rootDataDir,proto3" json:"root_data_dir,omitempty"`
	Healthy     bool                 `protobuf:"varint,5,opt,name=healthy,proto3" json:"healthy,omitempty"`
	// Maps from the node ID to its attached peer infos.
	AttachedPeerInfos map[string]*ListOfAttachedPeerInfo `protobuf:"bytes,6,rep,name=attached_peer_infos,json=attachedPeerInfos,proto3" json:"attached_peer_infos,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Set to "true" once custom blockchains are ready.
	CustomChainsHealthy bool `protobuf:"varint,7,opt,name=custom_chains_healthy,json=customChainsHealthy,proto3" json:"custom_chains_healthy,omitempty"`
	// The map of blockchain IDs in "ids.ID" format to its blockchain information.
	CustomChains map[string]*CustomChainInfo `protobuf:"bytes,8,rep,name=custom_chains,json=customChains,proto3" json:"custom_chains,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Subnets      map[string]*SubnetInfo      `protobuf:"bytes,9,rep,name=subnets,proto3" json:"subnets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	NetworkId    uint32                      `protobuf:"varint,10,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"`
	LogRootDir   string                      `protobuf:"bytes,11,opt,name=log_root_dir,json=logRootDir,proto3" json:"log_root_dir,omitempty"`
}

func (x *ClusterInfo) Reset() {
	*x = ClusterInfo{}
	mi := &file_rpcpb_rpc_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ClusterInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ClusterInfo) ProtoMessage() {}

func (x *ClusterInfo) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[3]
	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 ClusterInfo.ProtoReflect.Descriptor instead.
func (*ClusterInfo) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{3}
}

func (x *ClusterInfo) GetNodeNames() []string {
	if x != nil {
		return x.NodeNames
	}
	return nil
}

func (x *ClusterInfo) GetNodeInfos() map[string]*NodeInfo {
	if x != nil {
		return x.NodeInfos
	}
	return nil
}

func (x *ClusterInfo) GetPid() int32 {
	if x != nil {
		return x.Pid
	}
	return 0
}

func (x *ClusterInfo) GetRootDataDir() string {
	if x != nil {
		return x.RootDataDir
	}
	return ""
}

func (x *ClusterInfo) GetHealthy() bool {
	if x != nil {
		return x.Healthy
	}
	return false
}

func (x *ClusterInfo) GetAttachedPeerInfos() map[string]*ListOfAttachedPeerInfo {
	if x != nil {
		return x.AttachedPeerInfos
	}
	return nil
}

func (x *ClusterInfo) GetCustomChainsHealthy() bool {
	if x != nil {
		return x.CustomChainsHealthy
	}
	return false
}

func (x *ClusterInfo) GetCustomChains() map[string]*CustomChainInfo {
	if x != nil {
		return x.CustomChains
	}
	return nil
}

func (x *ClusterInfo) GetSubnets() map[string]*SubnetInfo {
	if x != nil {
		return x.Subnets
	}
	return nil
}

func (x *ClusterInfo) GetNetworkId() uint32 {
	if x != nil {
		return x.NetworkId
	}
	return 0
}

func (x *ClusterInfo) GetLogRootDir() string {
	if x != nil {
		return x.LogRootDir
	}
	return ""
}

type SubnetInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If Subnet is an Elastic Subnet
	IsElastic bool `protobuf:"varint,1,opt,name=is_elastic,json=isElastic,proto3" json:"is_elastic,omitempty"`
	// TXID for the elastic subnet transform
	ElasticSubnetId string `protobuf:"bytes,2,opt,name=elastic_subnet_id,json=elasticSubnetId,proto3" json:"elastic_subnet_id,omitempty"`
	// node validators of subnet
	SubnetParticipants *SubnetParticipants `protobuf:"bytes,3,opt,name=subnet_participants,json=subnetParticipants,proto3" json:"subnet_participants,omitempty"`
}

func (x *SubnetInfo) Reset() {
	*x = SubnetInfo{}
	mi := &file_rpcpb_rpc_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SubnetInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubnetInfo) ProtoMessage() {}

func (x *SubnetInfo) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[4]
	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 SubnetInfo.ProtoReflect.Descriptor instead.
func (*SubnetInfo) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{4}
}

func (x *SubnetInfo) GetIsElastic() bool {
	if x != nil {
		return x.IsElastic
	}
	return false
}

func (x *SubnetInfo) GetElasticSubnetId() string {
	if x != nil {
		return x.ElasticSubnetId
	}
	return ""
}

func (x *SubnetInfo) GetSubnetParticipants() *SubnetParticipants {
	if x != nil {
		return x.SubnetParticipants
	}
	return nil
}

type CustomChainInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Blockchain name given to the create blockchain TX
	// Currently used to keep a record of the VM name,
	// which is not saved anywhere and can't be recovered from VM ID
	ChainName string `protobuf:"bytes,1,opt,name=chain_name,json=chainName,proto3" json:"chain_name,omitempty"`
	// VM ID in "ids.ID" format.
	VmId string `protobuf:"bytes,2,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"`
	// Create subnet transaction ID -- subnet ID.
	// The subnet ID must be whitelisted by the avalanche node.
	SubnetId string `protobuf:"bytes,3,opt,name=subnet_id,json=subnetId,proto3" json:"subnet_id,omitempty"`
	// Create blockchain transaction ID -- blockchain ID>
	// The blockchain ID is used for RPC endpoints.
	ChainId string `protobuf:"bytes,4,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
}

func (x *CustomChainInfo) Reset() {
	*x = CustomChainInfo{}
	mi := &file_rpcpb_rpc_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CustomChainInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CustomChainInfo) ProtoMessage() {}

func (x *CustomChainInfo) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[5]
	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 CustomChainInfo.ProtoReflect.Descriptor instead.
func (*CustomChainInfo) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{5}
}

func (x *CustomChainInfo) GetChainName() string {
	if x != nil {
		return x.ChainName
	}
	return ""
}

func (x *CustomChainInfo) GetVmId() string {
	if x != nil {
		return x.VmId
	}
	return ""
}

func (x *CustomChainInfo) GetSubnetId() string {
	if x != nil {
		return x.SubnetId
	}
	return ""
}

func (x *CustomChainInfo) GetChainId() string {
	if x != nil {
		return x.ChainId
	}
	return ""
}

type NodeInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name               string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	ExecPath           string `protobuf:"bytes,2,opt,name=exec_path,json=execPath,proto3" json:"exec_path,omitempty"`
	Uri                string `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"`
	Id                 string `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"`
	LogDir             string `protobuf:"bytes,5,opt,name=log_dir,json=logDir,proto3" json:"log_dir,omitempty"`
	DbDir              string `protobuf:"bytes,6,opt,name=db_dir,json=dbDir,proto3" json:"db_dir,omitempty"`
	PluginDir          string `protobuf:"bytes,7,opt,name=plugin_dir,json=pluginDir,proto3" json:"plugin_dir,omitempty"`
	WhitelistedSubnets string `protobuf:"bytes,8,opt,name=whitelisted_subnets,json=whitelistedSubnets,proto3" json:"whitelisted_subnets,omitempty"`
	Config             []byte `protobuf:"bytes,9,opt,name=config,proto3" json:"config,omitempty"`
	Paused             bool   `protobuf:"varint,10,opt,name=paused,proto3" json:"paused,omitempty"`
}

func (x *NodeInfo) Reset() {
	*x = NodeInfo{}
	mi := &file_rpcpb_rpc_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NodeInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NodeInfo) ProtoMessage() {}

func (x *NodeInfo) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[6]
	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 NodeInfo.ProtoReflect.Descriptor instead.
func (*NodeInfo) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{6}
}

func (x *NodeInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *NodeInfo) GetExecPath() string {
	if x != nil {
		return x.ExecPath
	}
	return ""
}

func (x *NodeInfo) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

func (x *NodeInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *NodeInfo) GetLogDir() string {
	if x != nil {
		return x.LogDir
	}
	return ""
}

func (x *NodeInfo) GetDbDir() string {
	if x != nil {
		return x.DbDir
	}
	return ""
}

func (x *NodeInfo) GetPluginDir() string {
	if x != nil {
		return x.PluginDir
	}
	return ""
}

func (x *NodeInfo) GetWhitelistedSubnets() string {
	if x != nil {
		return x.WhitelistedSubnets
	}
	return ""
}

func (x *NodeInfo) GetConfig() []byte {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *NodeInfo) GetPaused() bool {
	if x != nil {
		return x.Paused
	}
	return false
}

type AttachedPeerInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *AttachedPeerInfo) Reset() {
	*x = AttachedPeerInfo{}
	mi := &file_rpcpb_rpc_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AttachedPeerInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AttachedPeerInfo) ProtoMessage() {}

func (x *AttachedPeerInfo) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[7]
	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 AttachedPeerInfo.ProtoReflect.Descriptor instead.
func (*AttachedPeerInfo) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{7}
}

func (x *AttachedPeerInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type ListOfAttachedPeerInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Peers []*AttachedPeerInfo `protobuf:"bytes,1,rep,name=peers,proto3" json:"peers,omitempty"`
}

func (x *ListOfAttachedPeerInfo) Reset() {
	*x = ListOfAttachedPeerInfo{}
	mi := &file_rpcpb_rpc_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListOfAttachedPeerInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListOfAttachedPeerInfo) ProtoMessage() {}

func (x *ListOfAttachedPeerInfo) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[8]
	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 ListOfAttachedPeerInfo.ProtoReflect.Descriptor instead.
func (*ListOfAttachedPeerInfo) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{8}
}

func (x *ListOfAttachedPeerInfo) GetPeers() []*AttachedPeerInfo {
	if x != nil {
		return x.Peers
	}
	return nil
}

type StartRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ExecPath           string  `protobuf:"bytes,1,opt,name=exec_path,json=execPath,proto3" json:"exec_path,omitempty"`
	NumNodes           *uint32 `protobuf:"varint,2,opt,name=num_nodes,json=numNodes,proto3,oneof" json:"num_nodes,omitempty"`
	WhitelistedSubnets *string `protobuf:"bytes,3,opt,name=whitelisted_subnets,json=whitelistedSubnets,proto3,oneof" json:"whitelisted_subnets,omitempty"`
	GlobalNodeConfig   *string `protobuf:"bytes,4,opt,name=global_node_config,json=globalNodeConfig,proto3,oneof" json:"global_node_config,omitempty"`
	// Used for both database and log files.
	RootDataDir *string `protobuf:"bytes,5,opt,name=root_data_dir,json=rootDataDir,proto3,oneof" json:"root_data_dir,omitempty"`
	// Plugin dir from which to load all custom VM executables.
	PluginDir string `protobuf:"bytes,6,opt,name=plugin_dir,json=pluginDir,proto3" json:"plugin_dir,omitempty"`
	// The list of:
	// - custom chain's VM name
	// - genesis file path
	// - (optional) subnet id to use.
	// - chain config file path
	// - network upgrade file path
	//
	// subnet id must be always nil when using StartRequest, as the network is empty and has no preloaded
	// subnet ids available.
	//
	// The matching file with the name in "ids.ID" format must exist.
	// e.g., ids.ToID(hashing.ComputeHash256("subnetevm")).String()
	// e.g., subnet-cli create VMID subnetevm
	//
	// If this field is set to none (by default), the node/network-runner
	// does not install the custom chain and does not create the subnet,
	// even if the VM binary exists on the local plugins directory.
	BlockchainSpecs   []*BlockchainSpec `protobuf:"bytes,7,rep,name=blockchain_specs,json=blockchainSpecs,proto3" json:"blockchain_specs,omitempty"`
	CustomNodeConfigs map[string]string `protobuf:"bytes,8,rep,name=custom_node_configs,json=customNodeConfigs,proto3" json:"custom_node_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Map of chain name to config file contents.
	// If specified, will create a file "chainname/config.json" with
	// the contents provided here.
	ChainConfigs map[string]string `protobuf:"bytes,9,rep,name=chain_configs,json=chainConfigs,proto3" json:"chain_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Map of chain name to upgrade file contents.
	// If specified, will create a file "chainname/upgrade.json" with
	// the contents provided here.
	UpgradeConfigs map[string]string `protobuf:"bytes,10,rep,name=upgrade_configs,json=upgradeConfigs,proto3" json:"upgrade_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// reassign default/custom ports if they are already taken
	ReassignPortsIfUsed *bool `protobuf:"varint,11,opt,name=reassign_ports_if_used,json=reassignPortsIfUsed,proto3,oneof" json:"reassign_ports_if_used,omitempty"`
	// use dynamic ports instead of default ones
	DynamicPorts *bool `protobuf:"varint,12,opt,name=dynamic_ports,json=dynamicPorts,proto3,oneof" json:"dynamic_ports,omitempty"`
	// Map of subnet id to subnet config file contents.
	// If specified, will create a file "subnetid.json" under subnets config dir with
	// the contents provided here.
	SubnetConfigs map[string]string `protobuf:"bytes,13,rep,name=subnet_configs,json=subnetConfigs,proto3" json:"subnet_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Network id to assign to the network, instead of default one
	NetworkId uint32 `protobuf:"varint,14,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"`
	// Used for log files.
	LogRootDir *string `protobuf:"bytes,15,opt,name=log_root_dir,json=logRootDir,proto3,oneof" json:"log_root_dir,omitempty"`
	// wallet private key
	WalletPrivateKey string `protobuf:"bytes,16,opt,name=wallet_private_key,json=walletPrivateKey,proto3" json:"wallet_private_key,omitempty"`
	// genesis path
	GenesisPath string `protobuf:"bytes,17,opt,name=genesis_path,json=genesisPath,proto3" json:"genesis_path,omitempty"`
	// bootstrap data
	BootstrapNodeIds     []string `protobuf:"bytes,18,rep,name=bootstrap_node_ids,json=bootstrapNodeIds,proto3" json:"bootstrap_node_ids,omitempty"`
	BootstrapIpPortPairs []string `protobuf:"bytes,19,rep,name=bootstrap_ip_port_pairs,json=bootstrapIpPortPairs,proto3" json:"bootstrap_ip_port_pairs,omitempty"`
	// upgrade path
	UpgradePath string `protobuf:"bytes,20,opt,name=upgrade_path,json=upgradePath,proto3" json:"upgrade_path,omitempty"`
	// return 0.0.0.0 as node IP if node has
	// public HTTPHost settings
	ZeroIp bool `protobuf:"varint,21,opt,name=zero_ip,json=zeroIp,proto3" json:"zero_ip,omitempty"`
	// always create new staking data
	FreshStakingIds bool `protobuf:"varint,22,opt,name=fresh_staking_ids,json=freshStakingIds,proto3" json:"fresh_staking_ids,omitempty"`
}

func (x *StartRequest) Reset() {
	*x = StartRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StartRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StartRequest) ProtoMessage() {}

func (x *StartRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[9]
	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 StartRequest.ProtoReflect.Descriptor instead.
func (*StartRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{9}
}

func (x *StartRequest) GetExecPath() string {
	if x != nil {
		return x.ExecPath
	}
	return ""
}

func (x *StartRequest) GetNumNodes() uint32 {
	if x != nil && x.NumNodes != nil {
		return *x.NumNodes
	}
	return 0
}

func (x *StartRequest) GetWhitelistedSubnets() string {
	if x != nil && x.WhitelistedSubnets != nil {
		return *x.WhitelistedSubnets
	}
	return ""
}

func (x *StartRequest) GetGlobalNodeConfig() string {
	if x != nil && x.GlobalNodeConfig != nil {
		return *x.GlobalNodeConfig
	}
	return ""
}

func (x *StartRequest) GetRootDataDir() string {
	if x != nil && x.RootDataDir != nil {
		return *x.RootDataDir
	}
	return ""
}

func (x *StartRequest) GetPluginDir() string {
	if x != nil {
		return x.PluginDir
	}
	return ""
}

func (x *StartRequest) GetBlockchainSpecs() []*BlockchainSpec {
	if x != nil {
		return x.BlockchainSpecs
	}
	return nil
}

func (x *StartRequest) GetCustomNodeConfigs() map[string]string {
	if x != nil {
		return x.CustomNodeConfigs
	}
	return nil
}

func (x *StartRequest) GetChainConfigs() map[string]string {
	if x != nil {
		return x.ChainConfigs
	}
	return nil
}

func (x *StartRequest) GetUpgradeConfigs() map[string]string {
	if x != nil {
		return x.UpgradeConfigs
	}
	return nil
}

func (x *StartRequest) GetReassignPortsIfUsed() bool {
	if x != nil && x.ReassignPortsIfUsed != nil {
		return *x.ReassignPortsIfUsed
	}
	return false
}

func (x *StartRequest) GetDynamicPorts() bool {
	if x != nil && x.DynamicPorts != nil {
		return *x.DynamicPorts
	}
	return false
}

func (x *StartRequest) GetSubnetConfigs() map[string]string {
	if x != nil {
		return x.SubnetConfigs
	}
	return nil
}

func (x *StartRequest) GetNetworkId() uint32 {
	if x != nil {
		return x.NetworkId
	}
	return 0
}

func (x *StartRequest) GetLogRootDir() string {
	if x != nil && x.LogRootDir != nil {
		return *x.LogRootDir
	}
	return ""
}

func (x *StartRequest) GetWalletPrivateKey() string {
	if x != nil {
		return x.WalletPrivateKey
	}
	return ""
}

func (x *StartRequest) GetGenesisPath() string {
	if x != nil {
		return x.GenesisPath
	}
	return ""
}

func (x *StartRequest) GetBootstrapNodeIds() []string {
	if x != nil {
		return x.BootstrapNodeIds
	}
	return nil
}

func (x *StartRequest) GetBootstrapIpPortPairs() []string {
	if x != nil {
		return x.BootstrapIpPortPairs
	}
	return nil
}

func (x *StartRequest) GetUpgradePath() string {
	if x != nil {
		return x.UpgradePath
	}
	return ""
}

func (x *StartRequest) GetZeroIp() bool {
	if x != nil {
		return x.ZeroIp
	}
	return false
}

func (x *StartRequest) GetFreshStakingIds() bool {
	if x != nil {
		return x.FreshStakingIds
	}
	return false
}

type RPCVersionRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *RPCVersionRequest) Reset() {
	*x = RPCVersionRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RPCVersionRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RPCVersionRequest) ProtoMessage() {}

func (x *RPCVersionRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[10]
	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 RPCVersionRequest.ProtoReflect.Descriptor instead.
func (*RPCVersionRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{10}
}

type RPCVersionResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
}

func (x *RPCVersionResponse) Reset() {
	*x = RPCVersionResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RPCVersionResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RPCVersionResponse) ProtoMessage() {}

func (x *RPCVersionResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[11]
	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 RPCVersionResponse.ProtoReflect.Descriptor instead.
func (*RPCVersionResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{11}
}

func (x *RPCVersionResponse) GetVersion() uint32 {
	if x != nil {
		return x.Version
	}
	return 0
}

type StartResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
	ChainIds    []string     `protobuf:"bytes,2,rep,name=chain_ids,json=chainIds,proto3" json:"chain_ids,omitempty"`
}

func (x *StartResponse) Reset() {
	*x = StartResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StartResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StartResponse) ProtoMessage() {}

func (x *StartResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[12]
	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 StartResponse.ProtoReflect.Descriptor instead.
func (*StartResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{12}
}

func (x *StartResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

func (x *StartResponse) GetChainIds() []string {
	if x != nil {
		return x.ChainIds
	}
	return nil
}

type SubnetSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// if empty, assumes all nodes should be participants
	Participants []string `protobuf:"bytes,1,rep,name=participants,proto3" json:"participants,omitempty"`
	// either file path or file contents
	SubnetConfig string `protobuf:"bytes,2,opt,name=subnet_config,json=subnetConfig,proto3" json:"subnet_config,omitempty"`
}

func (x *SubnetSpec) Reset() {
	*x = SubnetSpec{}
	mi := &file_rpcpb_rpc_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SubnetSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubnetSpec) ProtoMessage() {}

func (x *SubnetSpec) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[13]
	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 SubnetSpec.ProtoReflect.Descriptor instead.
func (*SubnetSpec) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{13}
}

func (x *SubnetSpec) GetParticipants() []string {
	if x != nil {
		return x.Participants
	}
	return nil
}

func (x *SubnetSpec) GetSubnetConfig() string {
	if x != nil {
		return x.SubnetConfig
	}
	return ""
}

type ElasticSubnetSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SubnetId                 string `protobuf:"bytes,1,opt,name=subnet_id,json=subnetId,proto3" json:"subnet_id,omitempty"`
	AssetName                string `protobuf:"bytes,2,opt,name=asset_name,json=assetName,proto3" json:"asset_name,omitempty"`
	AssetSymbol              string `protobuf:"bytes,3,opt,name=asset_symbol,json=assetSymbol,proto3" json:"asset_symbol,omitempty"`
	InitialSupply            uint64 `protobuf:"varint,4,opt,name=initial_supply,json=initialSupply,proto3" json:"initial_supply,omitempty"`
	MaxSupply                uint64 `protobuf:"varint,5,opt,name=max_supply,json=maxSupply,proto3" json:"max_supply,omitempty"`
	MinConsumptionRate       uint64 `protobuf:"varint,6,opt,name=min_consumption_rate,json=minConsumptionRate,proto3" json:"min_consumption_rate,omitempty"`
	MaxConsumptionRate       uint64 `protobuf:"varint,7,opt,name=max_consumption_rate,json=maxConsumptionRate,proto3" json:"max_consumption_rate,omitempty"`
	MinValidatorStake        uint64 `protobuf:"varint,8,opt,name=min_validator_stake,json=minValidatorStake,proto3" json:"min_validator_stake,omitempty"`
	MaxValidatorStake        uint64 `protobuf:"varint,9,opt,name=max_validator_stake,json=maxValidatorStake,proto3" json:"max_validator_stake,omitempty"`
	MinStakeDuration         uint64 `protobuf:"varint,10,opt,name=min_stake_duration,json=minStakeDuration,proto3" json:"min_stake_duration,omitempty"`
	MaxStakeDuration         uint64 `protobuf:"varint,11,opt,name=max_stake_duration,json=maxStakeDuration,proto3" json:"max_stake_duration,omitempty"`
	MinDelegationFee         uint32 `protobuf:"varint,12,opt,name=min_delegation_fee,json=minDelegationFee,proto3" json:"min_delegation_fee,omitempty"`
	MinDelegatorStake        uint64 `protobuf:"varint,13,opt,name=min_delegator_stake,json=minDelegatorStake,proto3" json:"min_delegator_stake,omitempty"`
	MaxValidatorWeightFactor uint32 `protobuf:"varint,14,opt,name=max_validator_weight_factor,json=maxValidatorWeightFactor,proto3" json:"max_validator_weight_factor,omitempty"`
	UptimeRequirement        uint32 `protobuf:"varint,15,opt,name=uptime_requirement,json=uptimeRequirement,proto3" json:"uptime_requirement,omitempty"`
}

func (x *ElasticSubnetSpec) Reset() {
	*x = ElasticSubnetSpec{}
	mi := &file_rpcpb_rpc_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ElasticSubnetSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ElasticSubnetSpec) ProtoMessage() {}

func (x *ElasticSubnetSpec) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[14]
	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 ElasticSubnetSpec.ProtoReflect.Descriptor instead.
func (*ElasticSubnetSpec) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{14}
}

func (x *ElasticSubnetSpec) GetSubnetId() string {
	if x != nil {
		return x.SubnetId
	}
	return ""
}

func (x *ElasticSubnetSpec) GetAssetName() string {
	if x != nil {
		return x.AssetName
	}
	return ""
}

func (x *ElasticSubnetSpec) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

func (x *ElasticSubnetSpec) GetInitialSupply() uint64 {
	if x != nil {
		return x.InitialSupply
	}
	return 0
}

func (x *ElasticSubnetSpec) GetMaxSupply() uint64 {
	if x != nil {
		return x.MaxSupply
	}
	return 0
}

func (x *ElasticSubnetSpec) GetMinConsumptionRate() uint64 {
	if x != nil {
		return x.MinConsumptionRate
	}
	return 0
}

func (x *ElasticSubnetSpec) GetMaxConsumptionRate() uint64 {
	if x != nil {
		return x.MaxConsumptionRate
	}
	return 0
}

func (x *ElasticSubnetSpec) GetMinValidatorStake() uint64 {
	if x != nil {
		return x.MinValidatorStake
	}
	return 0
}

func (x *ElasticSubnetSpec) GetMaxValidatorStake() uint64 {
	if x != nil {
		return x.MaxValidatorStake
	}
	return 0
}

func (x *ElasticSubnetSpec) GetMinStakeDuration() uint64 {
	if x != nil {
		return x.MinStakeDuration
	}
	return 0
}

func (x *ElasticSubnetSpec) GetMaxStakeDuration() uint64 {
	if x != nil {
		return x.MaxStakeDuration
	}
	return 0
}

func (x *ElasticSubnetSpec) GetMinDelegationFee() uint32 {
	if x != nil {
		return x.MinDelegationFee
	}
	return 0
}

func (x *ElasticSubnetSpec) GetMinDelegatorStake() uint64 {
	if x != nil {
		return x.MinDelegatorStake
	}
	return 0
}

func (x *ElasticSubnetSpec) GetMaxValidatorWeightFactor() uint32 {
	if x != nil {
		return x.MaxValidatorWeightFactor
	}
	return 0
}

func (x *ElasticSubnetSpec) GetUptimeRequirement() uint32 {
	if x != nil {
		return x.UptimeRequirement
	}
	return 0
}

type TransformElasticSubnetsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ElasticSubnetSpec []*ElasticSubnetSpec `protobuf:"bytes,1,rep,name=elastic_subnet_spec,json=elasticSubnetSpec,proto3" json:"elastic_subnet_spec,omitempty"`
}

func (x *TransformElasticSubnetsRequest) Reset() {
	*x = TransformElasticSubnetsRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TransformElasticSubnetsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TransformElasticSubnetsRequest) ProtoMessage() {}

func (x *TransformElasticSubnetsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[15]
	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 TransformElasticSubnetsRequest.ProtoReflect.Descriptor instead.
func (*TransformElasticSubnetsRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{15}
}

func (x *TransformElasticSubnetsRequest) GetElasticSubnetSpec() []*ElasticSubnetSpec {
	if x != nil {
		return x.ElasticSubnetSpec
	}
	return nil
}

type TransformElasticSubnetsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
	TxIds       []string     `protobuf:"bytes,2,rep,name=tx_ids,json=txIds,proto3" json:"tx_ids,omitempty"`
	AssetIds    []string     `protobuf:"bytes,3,rep,name=asset_ids,json=assetIds,proto3" json:"asset_ids,omitempty"`
}

func (x *TransformElasticSubnetsResponse) Reset() {
	*x = TransformElasticSubnetsResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TransformElasticSubnetsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TransformElasticSubnetsResponse) ProtoMessage() {}

func (x *TransformElasticSubnetsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[16]
	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 TransformElasticSubnetsResponse.ProtoReflect.Descriptor instead.
func (*TransformElasticSubnetsResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{16}
}

func (x *TransformElasticSubnetsResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

func (x *TransformElasticSubnetsResponse) GetTxIds() []string {
	if x != nil {
		return x.TxIds
	}
	return nil
}

func (x *TransformElasticSubnetsResponse) GetAssetIds() []string {
	if x != nil {
		return x.AssetIds
	}
	return nil
}

type PermissionlessStakerSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SubnetId          string `protobuf:"bytes,1,opt,name=subnet_id,json=subnetId,proto3" json:"subnet_id,omitempty"`
	NodeName          string `protobuf:"bytes,2,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
	StakedTokenAmount uint64 `protobuf:"varint,3,opt,name=staked_token_amount,json=stakedTokenAmount,proto3" json:"staked_token_amount,omitempty"`
	AssetId           string `protobuf:"bytes,4,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"`
	StartTime         string `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	StakeDuration     uint64 `protobuf:"varint,6,opt,name=stake_duration,json=stakeDuration,proto3" json:"stake_duration,omitempty"`
}

func (x *PermissionlessStakerSpec) Reset() {
	*x = PermissionlessStakerSpec{}
	mi := &file_rpcpb_rpc_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PermissionlessStakerSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PermissionlessStakerSpec) ProtoMessage() {}

func (x *PermissionlessStakerSpec) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[17]
	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 PermissionlessStakerSpec.ProtoReflect.Descriptor instead.
func (*PermissionlessStakerSpec) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{17}
}

func (x *PermissionlessStakerSpec) GetSubnetId() string {
	if x != nil {
		return x.SubnetId
	}
	return ""
}

func (x *PermissionlessStakerSpec) GetNodeName() string {
	if x != nil {
		return x.NodeName
	}
	return ""
}

func (x *PermissionlessStakerSpec) GetStakedTokenAmount() uint64 {
	if x != nil {
		return x.StakedTokenAmount
	}
	return 0
}

func (x *PermissionlessStakerSpec) GetAssetId() string {
	if x != nil {
		return x.AssetId
	}
	return ""
}

func (x *PermissionlessStakerSpec) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *PermissionlessStakerSpec) GetStakeDuration() uint64 {
	if x != nil {
		return x.StakeDuration
	}
	return 0
}

type AddPermissionlessValidatorRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ValidatorSpec []*PermissionlessStakerSpec `protobuf:"bytes,1,rep,name=validator_spec,json=validatorSpec,proto3" json:"validator_spec,omitempty"`
}

func (x *AddPermissionlessValidatorRequest) Reset() {
	*x = AddPermissionlessValidatorRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddPermissionlessValidatorRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddPermissionlessValidatorRequest) ProtoMessage() {}

func (x *AddPermissionlessValidatorRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[18]
	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 AddPermissionlessValidatorRequest.ProtoReflect.Descriptor instead.
func (*AddPermissionlessValidatorRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{18}
}

func (x *AddPermissionlessValidatorRequest) GetValidatorSpec() []*PermissionlessStakerSpec {
	if x != nil {
		return x.ValidatorSpec
	}
	return nil
}

type AddPermissionlessValidatorResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *AddPermissionlessValidatorResponse) Reset() {
	*x = AddPermissionlessValidatorResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddPermissionlessValidatorResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddPermissionlessValidatorResponse) ProtoMessage() {}

func (x *AddPermissionlessValidatorResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[19]
	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 AddPermissionlessValidatorResponse.ProtoReflect.Descriptor instead.
func (*AddPermissionlessValidatorResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{19}
}

func (x *AddPermissionlessValidatorResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type AddPermissionlessDelegatorRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ValidatorSpec []*PermissionlessStakerSpec `protobuf:"bytes,1,rep,name=validator_spec,json=validatorSpec,proto3" json:"validator_spec,omitempty"`
}

func (x *AddPermissionlessDelegatorRequest) Reset() {
	*x = AddPermissionlessDelegatorRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddPermissionlessDelegatorRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddPermissionlessDelegatorRequest) ProtoMessage() {}

func (x *AddPermissionlessDelegatorRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[20]
	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 AddPermissionlessDelegatorRequest.ProtoReflect.Descriptor instead.
func (*AddPermissionlessDelegatorRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{20}
}

func (x *AddPermissionlessDelegatorRequest) GetValidatorSpec() []*PermissionlessStakerSpec {
	if x != nil {
		return x.ValidatorSpec
	}
	return nil
}

type AddPermissionlessDelegatorResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *AddPermissionlessDelegatorResponse) Reset() {
	*x = AddPermissionlessDelegatorResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddPermissionlessDelegatorResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddPermissionlessDelegatorResponse) ProtoMessage() {}

func (x *AddPermissionlessDelegatorResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[21]
	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 AddPermissionlessDelegatorResponse.ProtoReflect.Descriptor instead.
func (*AddPermissionlessDelegatorResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{21}
}

func (x *AddPermissionlessDelegatorResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type RemoveSubnetValidatorSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SubnetId  string   `protobuf:"bytes,1,opt,name=subnet_id,json=subnetId,proto3" json:"subnet_id,omitempty"`
	NodeNames []string `protobuf:"bytes,2,rep,name=node_names,json=nodeNames,proto3" json:"node_names,omitempty"`
}

func (x *RemoveSubnetValidatorSpec) Reset() {
	*x = RemoveSubnetValidatorSpec{}
	mi := &file_rpcpb_rpc_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveSubnetValidatorSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveSubnetValidatorSpec) ProtoMessage() {}

func (x *RemoveSubnetValidatorSpec) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[22]
	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 RemoveSubnetValidatorSpec.ProtoReflect.Descriptor instead.
func (*RemoveSubnetValidatorSpec) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{22}
}

func (x *RemoveSubnetValidatorSpec) GetSubnetId() string {
	if x != nil {
		return x.SubnetId
	}
	return ""
}

func (x *RemoveSubnetValidatorSpec) GetNodeNames() []string {
	if x != nil {
		return x.NodeNames
	}
	return nil
}

type RemoveSubnetValidatorRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ValidatorSpec []*RemoveSubnetValidatorSpec `protobuf:"bytes,1,rep,name=validator_spec,json=validatorSpec,proto3" json:"validator_spec,omitempty"`
}

func (x *RemoveSubnetValidatorRequest) Reset() {
	*x = RemoveSubnetValidatorRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveSubnetValidatorRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveSubnetValidatorRequest) ProtoMessage() {}

func (x *RemoveSubnetValidatorRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[23]
	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 RemoveSubnetValidatorRequest.ProtoReflect.Descriptor instead.
func (*RemoveSubnetValidatorRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{23}
}

func (x *RemoveSubnetValidatorRequest) GetValidatorSpec() []*RemoveSubnetValidatorSpec {
	if x != nil {
		return x.ValidatorSpec
	}
	return nil
}

type RemoveSubnetValidatorResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *RemoveSubnetValidatorResponse) Reset() {
	*x = RemoveSubnetValidatorResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveSubnetValidatorResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveSubnetValidatorResponse) ProtoMessage() {}

func (x *RemoveSubnetValidatorResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[24]
	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 RemoveSubnetValidatorResponse.ProtoReflect.Descriptor instead.
func (*RemoveSubnetValidatorResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{24}
}

func (x *RemoveSubnetValidatorResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type SubnetValidatorsSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SubnetId  string   `protobuf:"bytes,1,opt,name=subnet_id,json=subnetId,proto3" json:"subnet_id,omitempty"`
	NodeNames []string `protobuf:"bytes,2,rep,name=node_names,json=nodeNames,proto3" json:"node_names,omitempty"`
}

func (x *SubnetValidatorsSpec) Reset() {
	*x = SubnetValidatorsSpec{}
	mi := &file_rpcpb_rpc_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SubnetValidatorsSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubnetValidatorsSpec) ProtoMessage() {}

func (x *SubnetValidatorsSpec) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[25]
	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 SubnetValidatorsSpec.ProtoReflect.Descriptor instead.
func (*SubnetValidatorsSpec) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{25}
}

func (x *SubnetValidatorsSpec) GetSubnetId() string {
	if x != nil {
		return x.SubnetId
	}
	return ""
}

func (x *SubnetValidatorsSpec) GetNodeNames() []string {
	if x != nil {
		return x.NodeNames
	}
	return nil
}

type AddSubnetValidatorsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ValidatorsSpec []*SubnetValidatorsSpec `protobuf:"bytes,1,rep,name=validators_spec,json=validatorsSpec,proto3" json:"validators_spec,omitempty"`
}

func (x *AddSubnetValidatorsRequest) Reset() {
	*x = AddSubnetValidatorsRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddSubnetValidatorsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddSubnetValidatorsRequest) ProtoMessage() {}

func (x *AddSubnetValidatorsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[26]
	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 AddSubnetValidatorsRequest.ProtoReflect.Descriptor instead.
func (*AddSubnetValidatorsRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{26}
}

func (x *AddSubnetValidatorsRequest) GetValidatorsSpec() []*SubnetValidatorsSpec {
	if x != nil {
		return x.ValidatorsSpec
	}
	return nil
}

type AddSubnetValidatorsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *AddSubnetValidatorsResponse) Reset() {
	*x = AddSubnetValidatorsResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddSubnetValidatorsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddSubnetValidatorsResponse) ProtoMessage() {}

func (x *AddSubnetValidatorsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[27]
	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 AddSubnetValidatorsResponse.ProtoReflect.Descriptor instead.
func (*AddSubnetValidatorsResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{27}
}

func (x *AddSubnetValidatorsResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type BlockchainSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	VmName string `protobuf:"bytes,1,opt,name=vm_name,json=vmName,proto3" json:"vm_name,omitempty"`
	// either file path or file contents
	Genesis string `protobuf:"bytes,2,opt,name=genesis,proto3" json:"genesis,omitempty"`
	// either a subnet_id is given for a previously created subnet,
	// or a subnet specification is given for a new subnet generation
	SubnetId   *string     `protobuf:"bytes,3,opt,name=subnet_id,json=subnetId,proto3,oneof" json:"subnet_id,omitempty"`
	SubnetSpec *SubnetSpec `protobuf:"bytes,4,opt,name=subnet_spec,json=subnetSpec,proto3,oneof" json:"subnet_spec,omitempty"`
	// General chain config, either file path or file contents
	ChainConfig string `protobuf:"bytes,5,opt,name=chain_config,json=chainConfig,proto3" json:"chain_config,omitempty"`
	// either file path or file contents
	NetworkUpgrade  string `protobuf:"bytes,6,opt,name=network_upgrade,json=networkUpgrade,proto3" json:"network_upgrade,omitempty"`
	BlockchainAlias string `protobuf:"bytes,7,opt,name=blockchain_alias,json=blockchainAlias,proto3" json:"blockchain_alias,omitempty"`
	// Per node chain config, either file path or file contents
	PerNodeChainConfig string `protobuf:"bytes,8,opt,name=per_node_chain_config,json=perNodeChainConfig,proto3" json:"per_node_chain_config,omitempty"`
}

func (x *BlockchainSpec) Reset() {
	*x = BlockchainSpec{}
	mi := &file_rpcpb_rpc_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BlockchainSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BlockchainSpec) ProtoMessage() {}

func (x *BlockchainSpec) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[28]
	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 BlockchainSpec.ProtoReflect.Descriptor instead.
func (*BlockchainSpec) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{28}
}

func (x *BlockchainSpec) GetVmName() string {
	if x != nil {
		return x.VmName
	}
	return ""
}

func (x *BlockchainSpec) GetGenesis() string {
	if x != nil {
		return x.Genesis
	}
	return ""
}

func (x *BlockchainSpec) GetSubnetId() string {
	if x != nil && x.SubnetId != nil {
		return *x.SubnetId
	}
	return ""
}

func (x *BlockchainSpec) GetSubnetSpec() *SubnetSpec {
	if x != nil {
		return x.SubnetSpec
	}
	return nil
}

func (x *BlockchainSpec) GetChainConfig() string {
	if x != nil {
		return x.ChainConfig
	}
	return ""
}

func (x *BlockchainSpec) GetNetworkUpgrade() string {
	if x != nil {
		return x.NetworkUpgrade
	}
	return ""
}

func (x *BlockchainSpec) GetBlockchainAlias() string {
	if x != nil {
		return x.BlockchainAlias
	}
	return ""
}

func (x *BlockchainSpec) GetPerNodeChainConfig() string {
	if x != nil {
		return x.PerNodeChainConfig
	}
	return ""
}

type CreateBlockchainsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The list of:
	// - custom chain's VM name
	// - genesis file path
	// - (optional) subnet id to use.
	// - chain config file path
	// - network upgrade file path
	// - subnet config file path
	// - chain config file path for specific nodes
	//
	// The matching file with the name in "ids.ID" format must exist.
	// e.g., ids.ToID(hashing.ComputeHash256("subnetevm")).String()
	// e.g., subnet-cli create VMID subnetevm
	//
	// If this field is set to none (by default), the node/network-runner
	// will return error
	BlockchainSpecs []*BlockchainSpec `protobuf:"bytes,1,rep,name=blockchain_specs,json=blockchainSpecs,proto3" json:"blockchain_specs,omitempty"`
}

func (x *CreateBlockchainsRequest) Reset() {
	*x = CreateBlockchainsRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateBlockchainsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateBlockchainsRequest) ProtoMessage() {}

func (x *CreateBlockchainsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[29]
	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 CreateBlockchainsRequest.ProtoReflect.Descriptor instead.
func (*CreateBlockchainsRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{29}
}

func (x *CreateBlockchainsRequest) GetBlockchainSpecs() []*BlockchainSpec {
	if x != nil {
		return x.BlockchainSpecs
	}
	return nil
}

type CreateBlockchainsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
	ChainIds    []string     `protobuf:"bytes,2,rep,name=chain_ids,json=chainIds,proto3" json:"chain_ids,omitempty"`
}

func (x *CreateBlockchainsResponse) Reset() {
	*x = CreateBlockchainsResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateBlockchainsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateBlockchainsResponse) ProtoMessage() {}

func (x *CreateBlockchainsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[30]
	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 CreateBlockchainsResponse.ProtoReflect.Descriptor instead.
func (*CreateBlockchainsResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{30}
}

func (x *CreateBlockchainsResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

func (x *CreateBlockchainsResponse) GetChainIds() []string {
	if x != nil {
		return x.ChainIds
	}
	return nil
}

type CreateSubnetsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SubnetSpecs []*SubnetSpec `protobuf:"bytes,1,rep,name=subnet_specs,json=subnetSpecs,proto3" json:"subnet_specs,omitempty"`
}

func (x *CreateSubnetsRequest) Reset() {
	*x = CreateSubnetsRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateSubnetsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateSubnetsRequest) ProtoMessage() {}

func (x *CreateSubnetsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[31]
	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 CreateSubnetsRequest.ProtoReflect.Descriptor instead.
func (*CreateSubnetsRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{31}
}

func (x *CreateSubnetsRequest) GetSubnetSpecs() []*SubnetSpec {
	if x != nil {
		return x.SubnetSpecs
	}
	return nil
}

type CreateSubnetsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
	SubnetIds   []string     `protobuf:"bytes,2,rep,name=subnet_ids,json=subnetIds,proto3" json:"subnet_ids,omitempty"`
}

func (x *CreateSubnetsResponse) Reset() {
	*x = CreateSubnetsResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateSubnetsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateSubnetsResponse) ProtoMessage() {}

func (x *CreateSubnetsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[32]
	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 CreateSubnetsResponse.ProtoReflect.Descriptor instead.
func (*CreateSubnetsResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{32}
}

func (x *CreateSubnetsResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

func (x *CreateSubnetsResponse) GetSubnetIds() []string {
	if x != nil {
		return x.SubnetIds
	}
	return nil
}

type HealthRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *HealthRequest) Reset() {
	*x = HealthRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HealthRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HealthRequest) ProtoMessage() {}

func (x *HealthRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[33]
	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 HealthRequest.ProtoReflect.Descriptor instead.
func (*HealthRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{33}
}

type HealthResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *HealthResponse) Reset() {
	*x = HealthResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HealthResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HealthResponse) ProtoMessage() {}

func (x *HealthResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[34]
	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 HealthResponse.ProtoReflect.Descriptor instead.
func (*HealthResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{34}
}

func (x *HealthResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type UpdateStatusRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *UpdateStatusRequest) Reset() {
	*x = UpdateStatusRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateStatusRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateStatusRequest) ProtoMessage() {}

func (x *UpdateStatusRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[35]
	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 UpdateStatusRequest.ProtoReflect.Descriptor instead.
func (*UpdateStatusRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{35}
}

type UpdateStatusResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *UpdateStatusResponse) Reset() {
	*x = UpdateStatusResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateStatusResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateStatusResponse) ProtoMessage() {}

func (x *UpdateStatusResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[36]
	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 UpdateStatusResponse.ProtoReflect.Descriptor instead.
func (*UpdateStatusResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{36}
}

func (x *UpdateStatusResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type URIsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *URIsRequest) Reset() {
	*x = URIsRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *URIsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*URIsRequest) ProtoMessage() {}

func (x *URIsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[37]
	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 URIsRequest.ProtoReflect.Descriptor instead.
func (*URIsRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{37}
}

type URIsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Uris []string `protobuf:"bytes,1,rep,name=uris,proto3" json:"uris,omitempty"`
}

func (x *URIsResponse) Reset() {
	*x = URIsResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *URIsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*URIsResponse) ProtoMessage() {}

func (x *URIsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[38]
	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 URIsResponse.ProtoReflect.Descriptor instead.
func (*URIsResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{38}
}

func (x *URIsResponse) GetUris() []string {
	if x != nil {
		return x.Uris
	}
	return nil
}

type WaitForHealthyRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *WaitForHealthyRequest) Reset() {
	*x = WaitForHealthyRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WaitForHealthyRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WaitForHealthyRequest) ProtoMessage() {}

func (x *WaitForHealthyRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[39]
	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 WaitForHealthyRequest.ProtoReflect.Descriptor instead.
func (*WaitForHealthyRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{39}
}

type WaitForHealthyResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *WaitForHealthyResponse) Reset() {
	*x = WaitForHealthyResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WaitForHealthyResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WaitForHealthyResponse) ProtoMessage() {}

func (x *WaitForHealthyResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[40]
	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 WaitForHealthyResponse.ProtoReflect.Descriptor instead.
func (*WaitForHealthyResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{40}
}

func (x *WaitForHealthyResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type StatusRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *StatusRequest) Reset() {
	*x = StatusRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StatusRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StatusRequest) ProtoMessage() {}

func (x *StatusRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[41]
	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 StatusRequest.ProtoReflect.Descriptor instead.
func (*StatusRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{41}
}

type StatusResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *StatusResponse) Reset() {
	*x = StatusResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StatusResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StatusResponse) ProtoMessage() {}

func (x *StatusResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[42]
	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 StatusResponse.ProtoReflect.Descriptor instead.
func (*StatusResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{42}
}

func (x *StatusResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type StreamStatusRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PushInterval int64 `protobuf:"varint,1,opt,name=push_interval,json=pushInterval,proto3" json:"push_interval,omitempty"`
}

func (x *StreamStatusRequest) Reset() {
	*x = StreamStatusRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StreamStatusRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StreamStatusRequest) ProtoMessage() {}

func (x *StreamStatusRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[43]
	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 StreamStatusRequest.ProtoReflect.Descriptor instead.
func (*StreamStatusRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{43}
}

func (x *StreamStatusRequest) GetPushInterval() int64 {
	if x != nil {
		return x.PushInterval
	}
	return 0
}

type StreamStatusResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *StreamStatusResponse) Reset() {
	*x = StreamStatusResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StreamStatusResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StreamStatusResponse) ProtoMessage() {}

func (x *StreamStatusResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[44]
	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 StreamStatusResponse.ProtoReflect.Descriptor instead.
func (*StreamStatusResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{44}
}

func (x *StreamStatusResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type RestartNodeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Must be a valid node name.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Optional fields are set to the previous values if empty.
	ExecPath           *string `protobuf:"bytes,2,opt,name=exec_path,json=execPath,proto3,oneof" json:"exec_path,omitempty"`
	WhitelistedSubnets *string `protobuf:"bytes,3,opt,name=whitelisted_subnets,json=whitelistedSubnets,proto3,oneof" json:"whitelisted_subnets,omitempty"`
	// Map of chain name to config file contents.
	// If specified, will create a file "chainname/config.json" with
	// the contents provided here.
	ChainConfigs map[string]string `protobuf:"bytes,4,rep,name=chain_configs,json=chainConfigs,proto3" json:"chain_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Map of chain name to config file contents.
	// If specified, will create a file "chainname/upgrade.json" with
	// the contents provided here.
	UpgradeConfigs map[string]string `protobuf:"bytes,5,rep,name=upgrade_configs,json=upgradeConfigs,proto3" json:"upgrade_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Map of subnet id to subnet config file contents.
	// If specified, will create a file "subnetid.json" under subnets config dir with
	// the contents provided here.
	SubnetConfigs map[string]string `protobuf:"bytes,6,rep,name=subnet_configs,json=subnetConfigs,proto3" json:"subnet_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Plugin dir from which to load all custom VM executables.
	PluginDir string `protobuf:"bytes,7,opt,name=plugin_dir,json=pluginDir,proto3" json:"plugin_dir,omitempty"`
}

func (x *RestartNodeRequest) Reset() {
	*x = RestartNodeRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RestartNodeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RestartNodeRequest) ProtoMessage() {}

func (x *RestartNodeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[45]
	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 RestartNodeRequest.ProtoReflect.Descriptor instead.
func (*RestartNodeRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{45}
}

func (x *RestartNodeRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *RestartNodeRequest) GetExecPath() string {
	if x != nil && x.ExecPath != nil {
		return *x.ExecPath
	}
	return ""
}

func (x *RestartNodeRequest) GetWhitelistedSubnets() string {
	if x != nil && x.WhitelistedSubnets != nil {
		return *x.WhitelistedSubnets
	}
	return ""
}

func (x *RestartNodeRequest) GetChainConfigs() map[string]string {
	if x != nil {
		return x.ChainConfigs
	}
	return nil
}

func (x *RestartNodeRequest) GetUpgradeConfigs() map[string]string {
	if x != nil {
		return x.UpgradeConfigs
	}
	return nil
}

func (x *RestartNodeRequest) GetSubnetConfigs() map[string]string {
	if x != nil {
		return x.SubnetConfigs
	}
	return nil
}

func (x *RestartNodeRequest) GetPluginDir() string {
	if x != nil {
		return x.PluginDir
	}
	return ""
}

type RestartNodeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *RestartNodeResponse) Reset() {
	*x = RestartNodeResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RestartNodeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RestartNodeResponse) ProtoMessage() {}

func (x *RestartNodeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[46]
	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 RestartNodeResponse.ProtoReflect.Descriptor instead.
func (*RestartNodeResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{46}
}

func (x *RestartNodeResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type RemoveNodeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *RemoveNodeRequest) Reset() {
	*x = RemoveNodeRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveNodeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveNodeRequest) ProtoMessage() {}

func (x *RemoveNodeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[47]
	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 RemoveNodeRequest.ProtoReflect.Descriptor instead.
func (*RemoveNodeRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{47}
}

func (x *RemoveNodeRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

type RemoveNodeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *RemoveNodeResponse) Reset() {
	*x = RemoveNodeResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveNodeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveNodeResponse) ProtoMessage() {}

func (x *RemoveNodeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[48]
	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 RemoveNodeResponse.ProtoReflect.Descriptor instead.
func (*RemoveNodeResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{48}
}

func (x *RemoveNodeResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type PauseNodeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *PauseNodeRequest) Reset() {
	*x = PauseNodeRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PauseNodeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PauseNodeRequest) ProtoMessage() {}

func (x *PauseNodeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[49]
	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 PauseNodeRequest.ProtoReflect.Descriptor instead.
func (*PauseNodeRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{49}
}

func (x *PauseNodeRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

type PauseNodeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *PauseNodeResponse) Reset() {
	*x = PauseNodeResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PauseNodeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PauseNodeResponse) ProtoMessage() {}

func (x *PauseNodeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[50]
	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 PauseNodeResponse.ProtoReflect.Descriptor instead.
func (*PauseNodeResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{50}
}

func (x *PauseNodeResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type ResumeNodeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}

func (x *ResumeNodeRequest) Reset() {
	*x = ResumeNodeRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ResumeNodeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ResumeNodeRequest) ProtoMessage() {}

func (x *ResumeNodeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[51]
	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 ResumeNodeRequest.ProtoReflect.Descriptor instead.
func (*ResumeNodeRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{51}
}

func (x *ResumeNodeRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

type ResumeNodeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *ResumeNodeResponse) Reset() {
	*x = ResumeNodeResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ResumeNodeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ResumeNodeResponse) ProtoMessage() {}

func (x *ResumeNodeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[52]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ResumeNodeResponse.ProtoReflect.Descriptor instead.
func (*ResumeNodeResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{52}
}

func (x *ResumeNodeResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type AddNodeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name       string  `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	ExecPath   string  `protobuf:"bytes,2,opt,name=exec_path,json=execPath,proto3" json:"exec_path,omitempty"`
	NodeConfig *string `protobuf:"bytes,3,opt,name=node_config,json=nodeConfig,proto3,oneof" json:"node_config,omitempty"`
	// Map of chain name to config file contents.
	// If specified, will create a file "chainname/config.json" with
	// the contents provided here.
	ChainConfigs map[string]string `protobuf:"bytes,4,rep,name=chain_configs,json=chainConfigs,proto3" json:"chain_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Map of chain name to config file contents.
	// If specified, will create a file "chainname/upgrade.json" with
	// the contents provided here.
	UpgradeConfigs map[string]string `protobuf:"bytes,5,rep,name=upgrade_configs,json=upgradeConfigs,proto3" json:"upgrade_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Map of subnet id to subnet config file contents.
	// If specified, will create a file "subnetid.json" under subnets config dir with
	// the contents provided here.
	SubnetConfigs map[string]string `protobuf:"bytes,6,rep,name=subnet_configs,json=subnetConfigs,proto3" json:"subnet_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Plugin dir from which to load all custom VM executables.
	PluginDir string `protobuf:"bytes,7,opt,name=plugin_dir,json=pluginDir,proto3" json:"plugin_dir,omitempty"`
}

func (x *AddNodeRequest) Reset() {
	*x = AddNodeRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddNodeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddNodeRequest) ProtoMessage() {}

func (x *AddNodeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[53]
	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 AddNodeRequest.ProtoReflect.Descriptor instead.
func (*AddNodeRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{53}
}

func (x *AddNodeRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *AddNodeRequest) GetExecPath() string {
	if x != nil {
		return x.ExecPath
	}
	return ""
}

func (x *AddNodeRequest) GetNodeConfig() string {
	if x != nil && x.NodeConfig != nil {
		return *x.NodeConfig
	}
	return ""
}

func (x *AddNodeRequest) GetChainConfigs() map[string]string {
	if x != nil {
		return x.ChainConfigs
	}
	return nil
}

func (x *AddNodeRequest) GetUpgradeConfigs() map[string]string {
	if x != nil {
		return x.UpgradeConfigs
	}
	return nil
}

func (x *AddNodeRequest) GetSubnetConfigs() map[string]string {
	if x != nil {
		return x.SubnetConfigs
	}
	return nil
}

func (x *AddNodeRequest) GetPluginDir() string {
	if x != nil {
		return x.PluginDir
	}
	return ""
}

type AddNodeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *AddNodeResponse) Reset() {
	*x = AddNodeResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[54]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddNodeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddNodeResponse) ProtoMessage() {}

func (x *AddNodeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[54]
	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 AddNodeResponse.ProtoReflect.Descriptor instead.
func (*AddNodeResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{54}
}

func (x *AddNodeResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type StopRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *StopRequest) Reset() {
	*x = StopRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[55]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StopRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StopRequest) ProtoMessage() {}

func (x *StopRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[55]
	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 StopRequest.ProtoReflect.Descriptor instead.
func (*StopRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{55}
}

type StopResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *StopResponse) Reset() {
	*x = StopResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[56]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StopResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StopResponse) ProtoMessage() {}

func (x *StopResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[56]
	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 StopResponse.ProtoReflect.Descriptor instead.
func (*StopResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{56}
}

func (x *StopResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type AttachPeerRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NodeName string `protobuf:"bytes,1,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
}

func (x *AttachPeerRequest) Reset() {
	*x = AttachPeerRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AttachPeerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AttachPeerRequest) ProtoMessage() {}

func (x *AttachPeerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[57]
	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 AttachPeerRequest.ProtoReflect.Descriptor instead.
func (*AttachPeerRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{57}
}

func (x *AttachPeerRequest) GetNodeName() string {
	if x != nil {
		return x.NodeName
	}
	return ""
}

type AttachPeerResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo      *ClusterInfo      `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
	AttachedPeerInfo *AttachedPeerInfo `protobuf:"bytes,2,opt,name=attached_peer_info,json=attachedPeerInfo,proto3" json:"attached_peer_info,omitempty"`
}

func (x *AttachPeerResponse) Reset() {
	*x = AttachPeerResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AttachPeerResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AttachPeerResponse) ProtoMessage() {}

func (x *AttachPeerResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[58]
	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 AttachPeerResponse.ProtoReflect.Descriptor instead.
func (*AttachPeerResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{58}
}

func (x *AttachPeerResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

func (x *AttachPeerResponse) GetAttachedPeerInfo() *AttachedPeerInfo {
	if x != nil {
		return x.AttachedPeerInfo
	}
	return nil
}

type SendOutboundMessageRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NodeName string `protobuf:"bytes,1,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
	PeerId   string `protobuf:"bytes,2,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"`
	Op       uint32 `protobuf:"varint,3,opt,name=op,proto3" json:"op,omitempty"`
	Bytes    []byte `protobuf:"bytes,4,opt,name=bytes,proto3" json:"bytes,omitempty"`
}

func (x *SendOutboundMessageRequest) Reset() {
	*x = SendOutboundMessageRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SendOutboundMessageRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SendOutboundMessageRequest) ProtoMessage() {}

func (x *SendOutboundMessageRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[59]
	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 SendOutboundMessageRequest.ProtoReflect.Descriptor instead.
func (*SendOutboundMessageRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{59}
}

func (x *SendOutboundMessageRequest) GetNodeName() string {
	if x != nil {
		return x.NodeName
	}
	return ""
}

func (x *SendOutboundMessageRequest) GetPeerId() string {
	if x != nil {
		return x.PeerId
	}
	return ""
}

func (x *SendOutboundMessageRequest) GetOp() uint32 {
	if x != nil {
		return x.Op
	}
	return 0
}

func (x *SendOutboundMessageRequest) GetBytes() []byte {
	if x != nil {
		return x.Bytes
	}
	return nil
}

type SendOutboundMessageResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Sent bool `protobuf:"varint,1,opt,name=sent,proto3" json:"sent,omitempty"`
}

func (x *SendOutboundMessageResponse) Reset() {
	*x = SendOutboundMessageResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SendOutboundMessageResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SendOutboundMessageResponse) ProtoMessage() {}

func (x *SendOutboundMessageResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[60]
	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 SendOutboundMessageResponse.ProtoReflect.Descriptor instead.
func (*SendOutboundMessageResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{60}
}

func (x *SendOutboundMessageResponse) GetSent() bool {
	if x != nil {
		return x.Sent
	}
	return false
}

type SaveSnapshotRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SnapshotName string `protobuf:"bytes,1,opt,name=snapshot_name,json=snapshotName,proto3" json:"snapshot_name,omitempty"`
	Force        bool   `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"`
	SnapshotPath string `protobuf:"bytes,3,opt,name=snapshot_path,json=snapshotPath,proto3" json:"snapshot_path,omitempty"`
}

func (x *SaveSnapshotRequest) Reset() {
	*x = SaveSnapshotRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SaveSnapshotRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SaveSnapshotRequest) ProtoMessage() {}

func (x *SaveSnapshotRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[61]
	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 SaveSnapshotRequest.ProtoReflect.Descriptor instead.
func (*SaveSnapshotRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{61}
}

func (x *SaveSnapshotRequest) GetSnapshotName() string {
	if x != nil {
		return x.SnapshotName
	}
	return ""
}

func (x *SaveSnapshotRequest) GetForce() bool {
	if x != nil {
		return x.Force
	}
	return false
}

func (x *SaveSnapshotRequest) GetSnapshotPath() string {
	if x != nil {
		return x.SnapshotPath
	}
	return ""
}

type SaveSnapshotResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SnapshotPath string `protobuf:"bytes,1,opt,name=snapshot_path,json=snapshotPath,proto3" json:"snapshot_path,omitempty"`
}

func (x *SaveSnapshotResponse) Reset() {
	*x = SaveSnapshotResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SaveSnapshotResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SaveSnapshotResponse) ProtoMessage() {}

func (x *SaveSnapshotResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[62]
	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 SaveSnapshotResponse.ProtoReflect.Descriptor instead.
func (*SaveSnapshotResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{62}
}

func (x *SaveSnapshotResponse) GetSnapshotPath() string {
	if x != nil {
		return x.SnapshotPath
	}
	return ""
}

type LoadSnapshotRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SnapshotName        string            `protobuf:"bytes,1,opt,name=snapshot_name,json=snapshotName,proto3" json:"snapshot_name,omitempty"`
	ExecPath            *string           `protobuf:"bytes,2,opt,name=exec_path,json=execPath,proto3,oneof" json:"exec_path,omitempty"`
	PluginDir           string            `protobuf:"bytes,3,opt,name=plugin_dir,json=pluginDir,proto3" json:"plugin_dir,omitempty"`
	RootDataDir         *string           `protobuf:"bytes,4,opt,name=root_data_dir,json=rootDataDir,proto3,oneof" json:"root_data_dir,omitempty"`
	ChainConfigs        map[string]string `protobuf:"bytes,5,rep,name=chain_configs,json=chainConfigs,proto3" json:"chain_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	UpgradeConfigs      map[string]string `protobuf:"bytes,6,rep,name=upgrade_configs,json=upgradeConfigs,proto3" json:"upgrade_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	GlobalNodeConfig    *string           `protobuf:"bytes,7,opt,name=global_node_config,json=globalNodeConfig,proto3,oneof" json:"global_node_config,omitempty"`
	ReassignPortsIfUsed *bool             `protobuf:"varint,8,opt,name=reassign_ports_if_used,json=reassignPortsIfUsed,proto3,oneof" json:"reassign_ports_if_used,omitempty"`
	SubnetConfigs       map[string]string `protobuf:"bytes,9,rep,name=subnet_configs,json=subnetConfigs,proto3" json:"subnet_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	InPlace             bool              `protobuf:"varint,10,opt,name=in_place,json=inPlace,proto3" json:"in_place,omitempty"`
	LogRootDir          *string           `protobuf:"bytes,11,opt,name=log_root_dir,json=logRootDir,proto3,oneof" json:"log_root_dir,omitempty"`
	// wallet private key
	WalletPrivateKey string `protobuf:"bytes,12,opt,name=wallet_private_key,json=walletPrivateKey,proto3" json:"wallet_private_key,omitempty"`
	// bootstrap data
	BootstrapNodeIds     []string `protobuf:"bytes,13,rep,name=bootstrap_node_ids,json=bootstrapNodeIds,proto3" json:"bootstrap_node_ids,omitempty"`
	BootstrapIpPortPairs []string `protobuf:"bytes,14,rep,name=bootstrap_ip_port_pairs,json=bootstrapIpPortPairs,proto3" json:"bootstrap_ip_port_pairs,omitempty"`
	// to force an arbitrary path
	SnapshotPath string `protobuf:"bytes,15,opt,name=snapshot_path,json=snapshotPath,proto3" json:"snapshot_path,omitempty"`
	// return 0.0.0.0 as node IP if node has
	// public HTTPHost settings
	ZeroIp bool `protobuf:"varint,16,opt,name=zero_ip,json=zeroIp,proto3" json:"zero_ip,omitempty"`
}

func (x *LoadSnapshotRequest) Reset() {
	*x = LoadSnapshotRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LoadSnapshotRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LoadSnapshotRequest) ProtoMessage() {}

func (x *LoadSnapshotRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[63]
	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 LoadSnapshotRequest.ProtoReflect.Descriptor instead.
func (*LoadSnapshotRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{63}
}

func (x *LoadSnapshotRequest) GetSnapshotName() string {
	if x != nil {
		return x.SnapshotName
	}
	return ""
}

func (x *LoadSnapshotRequest) GetExecPath() string {
	if x != nil && x.ExecPath != nil {
		return *x.ExecPath
	}
	return ""
}

func (x *LoadSnapshotRequest) GetPluginDir() string {
	if x != nil {
		return x.PluginDir
	}
	return ""
}

func (x *LoadSnapshotRequest) GetRootDataDir() string {
	if x != nil && x.RootDataDir != nil {
		return *x.RootDataDir
	}
	return ""
}

func (x *LoadSnapshotRequest) GetChainConfigs() map[string]string {
	if x != nil {
		return x.ChainConfigs
	}
	return nil
}

func (x *LoadSnapshotRequest) GetUpgradeConfigs() map[string]string {
	if x != nil {
		return x.UpgradeConfigs
	}
	return nil
}

func (x *LoadSnapshotRequest) GetGlobalNodeConfig() string {
	if x != nil && x.GlobalNodeConfig != nil {
		return *x.GlobalNodeConfig
	}
	return ""
}

func (x *LoadSnapshotRequest) GetReassignPortsIfUsed() bool {
	if x != nil && x.ReassignPortsIfUsed != nil {
		return *x.ReassignPortsIfUsed
	}
	return false
}

func (x *LoadSnapshotRequest) GetSubnetConfigs() map[string]string {
	if x != nil {
		return x.SubnetConfigs
	}
	return nil
}

func (x *LoadSnapshotRequest) GetInPlace() bool {
	if x != nil {
		return x.InPlace
	}
	return false
}

func (x *LoadSnapshotRequest) GetLogRootDir() string {
	if x != nil && x.LogRootDir != nil {
		return *x.LogRootDir
	}
	return ""
}

func (x *LoadSnapshotRequest) GetWalletPrivateKey() string {
	if x != nil {
		return x.WalletPrivateKey
	}
	return ""
}

func (x *LoadSnapshotRequest) GetBootstrapNodeIds() []string {
	if x != nil {
		return x.BootstrapNodeIds
	}
	return nil
}

func (x *LoadSnapshotRequest) GetBootstrapIpPortPairs() []string {
	if x != nil {
		return x.BootstrapIpPortPairs
	}
	return nil
}

func (x *LoadSnapshotRequest) GetSnapshotPath() string {
	if x != nil {
		return x.SnapshotPath
	}
	return ""
}

func (x *LoadSnapshotRequest) GetZeroIp() bool {
	if x != nil {
		return x.ZeroIp
	}
	return false
}

type LoadSnapshotResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterInfo *ClusterInfo `protobuf:"bytes,1,opt,name=cluster_info,json=clusterInfo,proto3" json:"cluster_info,omitempty"`
}

func (x *LoadSnapshotResponse) Reset() {
	*x = LoadSnapshotResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LoadSnapshotResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LoadSnapshotResponse) ProtoMessage() {}

func (x *LoadSnapshotResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[64]
	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 LoadSnapshotResponse.ProtoReflect.Descriptor instead.
func (*LoadSnapshotResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{64}
}

func (x *LoadSnapshotResponse) GetClusterInfo() *ClusterInfo {
	if x != nil {
		return x.ClusterInfo
	}
	return nil
}

type RemoveSnapshotRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SnapshotName string `protobuf:"bytes,1,opt,name=snapshot_name,json=snapshotName,proto3" json:"snapshot_name,omitempty"`
	SnapshotPath string `protobuf:"bytes,2,opt,name=snapshot_path,json=snapshotPath,proto3" json:"snapshot_path,omitempty"`
}

func (x *RemoveSnapshotRequest) Reset() {
	*x = RemoveSnapshotRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveSnapshotRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveSnapshotRequest) ProtoMessage() {}

func (x *RemoveSnapshotRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[65]
	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 RemoveSnapshotRequest.ProtoReflect.Descriptor instead.
func (*RemoveSnapshotRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{65}
}

func (x *RemoveSnapshotRequest) GetSnapshotName() string {
	if x != nil {
		return x.SnapshotName
	}
	return ""
}

func (x *RemoveSnapshotRequest) GetSnapshotPath() string {
	if x != nil {
		return x.SnapshotPath
	}
	return ""
}

type RemoveSnapshotResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *RemoveSnapshotResponse) Reset() {
	*x = RemoveSnapshotResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[66]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveSnapshotResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveSnapshotResponse) ProtoMessage() {}

func (x *RemoveSnapshotResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[66]
	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 RemoveSnapshotResponse.ProtoReflect.Descriptor instead.
func (*RemoveSnapshotResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{66}
}

type GetSnapshotNamesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *GetSnapshotNamesRequest) Reset() {
	*x = GetSnapshotNamesRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[67]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetSnapshotNamesRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetSnapshotNamesRequest) ProtoMessage() {}

func (x *GetSnapshotNamesRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[67]
	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 GetSnapshotNamesRequest.ProtoReflect.Descriptor instead.
func (*GetSnapshotNamesRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{67}
}

type GetSnapshotNamesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SnapshotNames []string `protobuf:"bytes,1,rep,name=snapshot_names,json=snapshotNames,proto3" json:"snapshot_names,omitempty"`
}

func (x *GetSnapshotNamesResponse) Reset() {
	*x = GetSnapshotNamesResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[68]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetSnapshotNamesResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetSnapshotNamesResponse) ProtoMessage() {}

func (x *GetSnapshotNamesResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[68]
	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 GetSnapshotNamesResponse.ProtoReflect.Descriptor instead.
func (*GetSnapshotNamesResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{68}
}

func (x *GetSnapshotNamesResponse) GetSnapshotNames() []string {
	if x != nil {
		return x.SnapshotNames
	}
	return nil
}

type ListSubnetsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ListSubnetsRequest) Reset() {
	*x = ListSubnetsRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[69]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListSubnetsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListSubnetsRequest) ProtoMessage() {}

func (x *ListSubnetsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[69]
	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 ListSubnetsRequest.ProtoReflect.Descriptor instead.
func (*ListSubnetsRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{69}
}

type ListSubnetsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SubnetIds []string `protobuf:"bytes,1,rep,name=subnet_ids,json=subnetIds,proto3" json:"subnet_ids,omitempty"`
}

func (x *ListSubnetsResponse) Reset() {
	*x = ListSubnetsResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[70]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListSubnetsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListSubnetsResponse) ProtoMessage() {}

func (x *ListSubnetsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[70]
	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 ListSubnetsResponse.ProtoReflect.Descriptor instead.
func (*ListSubnetsResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{70}
}

func (x *ListSubnetsResponse) GetSubnetIds() []string {
	if x != nil {
		return x.SubnetIds
	}
	return nil
}

type ListBlockchainsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ListBlockchainsRequest) Reset() {
	*x = ListBlockchainsRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[71]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListBlockchainsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListBlockchainsRequest) ProtoMessage() {}

func (x *ListBlockchainsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[71]
	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 ListBlockchainsRequest.ProtoReflect.Descriptor instead.
func (*ListBlockchainsRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{71}
}

type ListBlockchainsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Blockchains []*CustomChainInfo `protobuf:"bytes,1,rep,name=blockchains,proto3" json:"blockchains,omitempty"`
}

func (x *ListBlockchainsResponse) Reset() {
	*x = ListBlockchainsResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[72]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListBlockchainsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListBlockchainsResponse) ProtoMessage() {}

func (x *ListBlockchainsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[72]
	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 ListBlockchainsResponse.ProtoReflect.Descriptor instead.
func (*ListBlockchainsResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{72}
}

func (x *ListBlockchainsResponse) GetBlockchains() []*CustomChainInfo {
	if x != nil {
		return x.Blockchains
	}
	return nil
}

type ListRpcsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ListRpcsRequest) Reset() {
	*x = ListRpcsRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[73]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListRpcsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListRpcsRequest) ProtoMessage() {}

func (x *ListRpcsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[73]
	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 ListRpcsRequest.ProtoReflect.Descriptor instead.
func (*ListRpcsRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{73}
}

type NodeRpc struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NodeName string `protobuf:"bytes,1,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
	Rpc      string `protobuf:"bytes,2,opt,name=rpc,proto3" json:"rpc,omitempty"`
}

func (x *NodeRpc) Reset() {
	*x = NodeRpc{}
	mi := &file_rpcpb_rpc_proto_msgTypes[74]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NodeRpc) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NodeRpc) ProtoMessage() {}

func (x *NodeRpc) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[74]
	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 NodeRpc.ProtoReflect.Descriptor instead.
func (*NodeRpc) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{74}
}

func (x *NodeRpc) GetNodeName() string {
	if x != nil {
		return x.NodeName
	}
	return ""
}

func (x *NodeRpc) GetRpc() string {
	if x != nil {
		return x.Rpc
	}
	return ""
}

type BlockchainRpcs struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BlockchainId string     `protobuf:"bytes,1,opt,name=blockchain_id,json=blockchainId,proto3" json:"blockchain_id,omitempty"`
	Rpcs         []*NodeRpc `protobuf:"bytes,2,rep,name=rpcs,proto3" json:"rpcs,omitempty"`
}

func (x *BlockchainRpcs) Reset() {
	*x = BlockchainRpcs{}
	mi := &file_rpcpb_rpc_proto_msgTypes[75]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *BlockchainRpcs) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BlockchainRpcs) ProtoMessage() {}

func (x *BlockchainRpcs) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[75]
	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 BlockchainRpcs.ProtoReflect.Descriptor instead.
func (*BlockchainRpcs) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{75}
}

func (x *BlockchainRpcs) GetBlockchainId() string {
	if x != nil {
		return x.BlockchainId
	}
	return ""
}

func (x *BlockchainRpcs) GetRpcs() []*NodeRpc {
	if x != nil {
		return x.Rpcs
	}
	return nil
}

type ListRpcsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BlockchainsRpcs []*BlockchainRpcs `protobuf:"bytes,1,rep,name=blockchains_rpcs,json=blockchainsRpcs,proto3" json:"blockchains_rpcs,omitempty"`
}

func (x *ListRpcsResponse) Reset() {
	*x = ListRpcsResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[76]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListRpcsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListRpcsResponse) ProtoMessage() {}

func (x *ListRpcsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[76]
	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 ListRpcsResponse.ProtoReflect.Descriptor instead.
func (*ListRpcsResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{76}
}

func (x *ListRpcsResponse) GetBlockchainsRpcs() []*BlockchainRpcs {
	if x != nil {
		return x.BlockchainsRpcs
	}
	return nil
}

type VMIDRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	VmName string `protobuf:"bytes,1,opt,name=vm_name,json=vmName,proto3" json:"vm_name,omitempty"`
}

func (x *VMIDRequest) Reset() {
	*x = VMIDRequest{}
	mi := &file_rpcpb_rpc_proto_msgTypes[77]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *VMIDRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*VMIDRequest) ProtoMessage() {}

func (x *VMIDRequest) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[77]
	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 VMIDRequest.ProtoReflect.Descriptor instead.
func (*VMIDRequest) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{77}
}

func (x *VMIDRequest) GetVmName() string {
	if x != nil {
		return x.VmName
	}
	return ""
}

type VMIDResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	VmId string `protobuf:"bytes,1,opt,name=vm_id,json=vmId,proto3" json:"vm_id,omitempty"`
}

func (x *VMIDResponse) Reset() {
	*x = VMIDResponse{}
	mi := &file_rpcpb_rpc_proto_msgTypes[78]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *VMIDResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*VMIDResponse) ProtoMessage() {}

func (x *VMIDResponse) ProtoReflect() protoreflect.Message {
	mi := &file_rpcpb_rpc_proto_msgTypes[78]
	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 VMIDResponse.ProtoReflect.Descriptor instead.
func (*VMIDResponse) Descriptor() ([]byte, []int) {
	return file_rpcpb_rpc_proto_rawDescGZIP(), []int{78}
}

func (x *VMIDResponse) GetVmId() string {
	if x != nil {
		return x.VmId
	}
	return ""
}

var File_rpcpb_rpc_proto protoreflect.FileDescriptor

var file_rpcpb_rpc_proto_rawDesc = []byte{
	0x0a, 0x0f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2f, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x12, 0x05, 0x72, 0x70, 0x63, 0x70, 0x62, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x20, 0x0a, 0x0c, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x33, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6e, 0x65,
	0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x0a,
	0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xf0, 0x06, 0x0a,
	0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a,
	0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x0a, 0x6e,
	0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
	0x6e, 0x66, 0x6f, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x10, 0x0a,
	0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12,
	0x22, 0x0a, 0x0d, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x69, 0x72,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61,
	0x44, 0x69, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x59, 0x0a,
	0x13, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69,
	0x6e, 0x66, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41,
	0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50,
	0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x73, 0x74,
	0x6f, 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68,
	0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43,
	0x68, 0x61, 0x69, 0x6e, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x49, 0x0a, 0x0d,
	0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x08, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x68,
	0x61, 0x69, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f,
	0x6d, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x65,
	0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62,
	0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x75, 0x62,
	0x6e, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x65,
	0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64,
	0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49,
	0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x69,
	0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x52, 0x6f, 0x6f, 0x74,
	0x44, 0x69, 0x72, 0x1a, 0x4d, 0x0a, 0x0e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 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, 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4e,
	0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
	0x38, 0x01, 0x1a, 0x63, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x65,
	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
	0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x66, 0x41, 0x74, 0x74, 0x61,
	0x63, 0x68, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x57, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f,
	0x6d, 0x43, 0x68, 0x61, 0x69, 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, 0x2c,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
	0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x69,
	0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x1a, 0x4d, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
	0x65, 0x79, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74,
	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
	0xa3, 0x01, 0x0a, 0x0a, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d,
	0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x65, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x45, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x12, 0x2a, 0x0a,
	0x11, 0x65, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f,
	0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6c, 0x61, 0x73, 0x74, 0x69,
	0x63, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x13, 0x73, 0x75, 0x62,
	0x6e, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53,
	0x75, 0x62, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
	0x73, 0x52, 0x12, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
	0x70, 0x61, 0x6e, 0x74, 0x73, 0x22, 0x7d, 0x0a, 0x0f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43,
	0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68,
	0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
	0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61,
	0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61,
	0x69, 0x6e, 0x49, 0x64, 0x22, 0x8d, 0x02, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66,
	0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61,
	0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x50, 0x61,
	0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x75, 0x72, 0x69, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6c, 0x6f, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x44, 0x69, 0x72, 0x12, 0x15, 0x0a,
	0x06, 0x64, 0x62, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64,
	0x62, 0x44, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x64,
	0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x44, 0x69, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74,
	0x65, 0x64, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x12, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62,
	0x6e, 0x65, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06,
	0x70, 0x61, 0x75, 0x73, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61,
	0x75, 0x73, 0x65, 0x64, 0x22, 0x22, 0x0a, 0x10, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64,
	0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x47, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74,
	0x4f, 0x66, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x2d, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
	0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72,
	0x73, 0x22, 0xea, 0x0b, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12,
	0x20, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0d, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x88, 0x01,
	0x01, 0x12, 0x34, 0x0a, 0x13, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64,
	0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
	0x52, 0x12, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62,
	0x6e, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x67, 0x6c, 0x6f, 0x62, 0x61,
	0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x10, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x4e, 0x6f, 0x64,
	0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x72, 0x6f,
	0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x09, 0x48, 0x03, 0x52, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, 0x72,
	0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x64, 0x69,
	0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44,
	0x69, 0x72, 0x12, 0x40, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e,
	0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72,
	0x70, 0x63, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53,
	0x70, 0x65, 0x63, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53,
	0x70, 0x65, 0x63, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6e,
	0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4e, 0x6f, 0x64,
	0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63,
	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73,
	0x12, 0x4a, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e,
	0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x61,
	0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c,
	0x63, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x50, 0x0a, 0x0f,
	0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18,
	0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x74,
	0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61,
	0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e,
	0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x38,
	0x0a, 0x16, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73,
	0x5f, 0x69, 0x66, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04,
	0x52, 0x13, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x49,
	0x66, 0x55, 0x73, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x79, 0x6e, 0x61,
	0x6d, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x48,
	0x05, 0x52, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88,
	0x01, 0x01, 0x12, 0x4d, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
	0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18,
	0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64,
	0x12, 0x25, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x69, 0x72,
	0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x52, 0x6f, 0x6f,
	0x74, 0x44, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x12, 0x77, 0x61, 0x6c, 0x6c, 0x65,
	0x74, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x10, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61,
	0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73,
	0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x65, 0x6e,
	0x65, 0x73, 0x69, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x6f, 0x6f, 0x74,
	0x73, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x12,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x4e,
	0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74,
	0x72, 0x61, 0x70, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x69, 0x72,
	0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72,
	0x61, 0x70, 0x49, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x21, 0x0a,
	0x0c, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x14, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x61, 0x74, 0x68,
	0x12, 0x17, 0x0a, 0x07, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x06, 0x7a, 0x65, 0x72, 0x6f, 0x49, 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x66, 0x72, 0x65,
	0x73, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x16,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x6b, 0x69,
	0x6e, 0x67, 0x49, 0x64, 0x73, 0x1a, 0x44, 0x0a, 0x16, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4e,
	0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x43,
	0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13,
	0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
	0x40, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x42,
	0x16, 0x0a, 0x14, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f,
	0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x67, 0x6c, 0x6f, 0x62,
	0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x10,
	0x0a, 0x0e, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x69, 0x72,
	0x42, 0x19, 0x0a, 0x17, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x70, 0x6f,
	0x72, 0x74, 0x73, 0x5f, 0x69, 0x66, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f,
	0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x0f, 0x0a,
	0x0d, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x22, 0x13,
	0x0a, 0x11, 0x52, 0x50, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x22, 0x2e, 0x0a, 0x12, 0x52, 0x50, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
	0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b,
	0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x63,
	0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
	0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x73, 0x22, 0x55, 0x0a, 0x0a, 0x53, 0x75, 0x62, 0x6e,
	0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63,
	0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61,
	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75,
	0x62, 0x6e, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22,
	0xa4, 0x05, 0x0a, 0x11, 0x45, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6e, 0x65,
	0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74,
	0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x62, 0x6f,
	0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79,
	0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f,
	0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x69, 0x6e,
	0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6d,
	0x61, 0x78, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x09, 0x6d, 0x61, 0x78, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x69,
	0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61,
	0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6e,
	0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x14,
	0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
	0x72, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x43,
	0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2e,
	0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f,
	0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6d, 0x69, 0x6e,
	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x2e,
	0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f,
	0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6d, 0x61, 0x78,
	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x2c,
	0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x53,
	0x74, 0x61, 0x6b, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12,
	0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x61,
	0x6b, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x69,
	0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x65,
	0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x67,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f,
	0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18,
	0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61,
	0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x3d, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, 0x6d,
	0x61, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x57, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2d, 0x0a, 0x12, 0x75, 0x70, 0x74, 0x69, 0x6d,
	0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x11, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69,
	0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x6a, 0x0a, 0x1e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66,
	0x6f, 0x72, 0x6d, 0x45, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x13, 0x65, 0x6c, 0x61, 0x73,
	0x74, 0x69, 0x63, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x45, 0x6c,
	0x61, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52,
	0x11, 0x65, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53, 0x70,
	0x65, 0x63, 0x22, 0x8c, 0x01, 0x0a, 0x1f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d,
	0x45, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72,
	0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x15, 0x0a,
	0x06, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74,
	0x78, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64,
	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64,
	0x73, 0x22, 0xe5, 0x01, 0x0a, 0x18, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
	0x6c, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1b,
	0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e,
	0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x6b,
	0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d,
	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69,
	0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x6b,
	0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x21, 0x41, 0x64, 0x64,
	0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46,
	0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x50,
	0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61,
	0x6b, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x22, 0x5b, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x50, 0x65, 0x72,
	0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x56, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c,
	0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74,
	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
	0x6e, 0x66, 0x6f, 0x22, 0x6b, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f,
	0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x70, 0x65,
	0x63, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63,
	0x22, 0x5b, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x6c, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72,
	0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x57, 0x0a,
	0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x56, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75,
	0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73,
	0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
	0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64,
	0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
	0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x6f, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
	0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x75, 0x62,
	0x6e, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63,
	0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x22,
	0x56, 0x0a, 0x1d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x56,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x52, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x6e, 0x65,
	0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12,
	0x1b, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
	0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x62, 0x0a, 0x1a, 0x41,
	0x64, 0x64, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0f, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x75, 0x62, 0x6e, 0x65,
	0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x70, 0x65, 0x63, 0x52,
	0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x53, 0x70, 0x65, 0x63, 0x22,
	0x54, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35,
	0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe6, 0x02, 0x0a, 0x0e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63,
	0x68, 0x61, 0x69, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x76, 0x6d, 0x5f, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6d, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x73,
	0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
	0x52, 0x08, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a,
	0x0b, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x75, 0x62, 0x6e, 0x65,
	0x74, 0x53, 0x70, 0x65, 0x63, 0x48, 0x01, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53,
	0x70, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68,
	0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x65, 0x74,
	0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x70, 0x67, 0x72, 0x61,
	0x64, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e,
	0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x6c,
	0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x31, 0x0a,
	0x15, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x65,
	0x72, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0e,
	0x0a, 0x0c, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x22, 0x5c,
	0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61,
	0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x10, 0x62, 0x6c,
	0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x62, 0x6c, 0x6f,
	0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x73, 0x22, 0x6f, 0x0a, 0x19,
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e,
	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x1b, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x73, 0x22, 0x4c, 0x0a,
	0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f,
	0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x70,
	0x63, 0x70, 0x62, 0x2e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b,
	0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, 0x22, 0x6d, 0x0a, 0x15, 0x43,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
	0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b,
	0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x73,
	0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x09, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x0f, 0x0a, 0x0d, 0x48, 0x65,
	0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x0e, 0x48,
	0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a,
	0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x49, 0x6e, 0x66, 0x6f, 0x22, 0x15, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4d, 0x0a, 0x14, 0x55,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69,
	0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70,
	0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x0d, 0x0a, 0x0b, 0x55, 0x52,
	0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x22, 0x0a, 0x0c, 0x55, 0x52, 0x49,
	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x69,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x69, 0x73, 0x22, 0x17, 0x0a,
	0x15, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4f, 0x0a, 0x16, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f,
	0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x0f, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66,
	0x6f, 0x22, 0x3a, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x75, 0x73, 0x68,
	0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0c, 0x70, 0x75, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x4d, 0x0a,
	0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70,
	0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x8a, 0x05, 0x0a,
	0x12, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x78, 0x65, 0x63, 0x5f,
	0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x65, 0x78,
	0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x77, 0x68, 0x69,
	0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x12, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c,
	0x69, 0x73, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12,
	0x50, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73,
	0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x52,
	0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x73, 0x12, 0x56, 0x0a, 0x0f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x75, 0x70, 0x67, 0x72, 0x61,
	0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x53, 0x0a, 0x0e, 0x73, 0x75, 0x62,
	0x6e, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x75, 0x62,
	0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x0d, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x1d,
	0x0a, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x69, 0x72, 0x1a, 0x3f, 0x0a,
	0x11, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41,
	0x0a, 0x13, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x1a, 0x40, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
	0x02, 0x38, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74,
	0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65,
	0x64, 0x5f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x22, 0x4c, 0x0a, 0x13, 0x52, 0x65, 0x73,
	0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x27, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76,
	0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x22, 0x4b, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72,
	0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x26, 0x0a,
	0x10, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4a, 0x0a, 0x11, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4e, 0x6f,
	0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66,
	0x6f, 0x22, 0x27, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4b, 0x0a, 0x12, 0x52, 0x65,
	0x73, 0x75, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xcf, 0x04, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x4e,
	0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b,
	0x0a, 0x09, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0b, 0x6e,
	0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x48, 0x00, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01,
	0x01, 0x12, 0x4c, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62,
	0x2e, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
	0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12,
	0x52, 0x0a, 0x0f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62,
	0x2e, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
	0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x0e, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x63, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x70,
	0x63, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x64,
	0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x44, 0x69, 0x72, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6e, 0x65,
	0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x6f,
	0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x48, 0x0a, 0x0f, 0x41, 0x64, 0x64,
	0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c,
	0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74,
	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
	0x6e, 0x66, 0x6f, 0x22, 0x0d, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x22, 0x45, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e,
	0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62,
	0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x30, 0x0a, 0x11, 0x41, 0x74, 0x74,
	0x61, 0x63, 0x68, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b,
	0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x12,
	0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e,
	0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62,
	0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x45, 0x0a, 0x12, 0x61, 0x74, 0x74,
	0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x74,
	0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10,
	0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
	0x22, 0x78, 0x0a, 0x1a, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b,
	0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x70,
	0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65,
	0x65, 0x72, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x02, 0x6f, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x1b, 0x53, 0x65,
	0x6e, 0x64, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x6e,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x65, 0x6e, 0x74, 0x22, 0x75, 0x0a,
	0x13, 0x53, 0x61, 0x76, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6e, 0x61,
	0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72,
	0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12,
	0x23, 0x0a, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
	0x50, 0x61, 0x74, 0x68, 0x22, 0x3b, 0x0a, 0x14, 0x53, 0x61, 0x76, 0x65, 0x53, 0x6e, 0x61, 0x70,
	0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d,
	0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x61, 0x74,
	0x68, 0x22, 0xcf, 0x08, 0x0a, 0x13, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
	0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6e, 0x61,
	0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20,
	0x0a, 0x09, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x48, 0x00, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01,
	0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x69, 0x72, 0x12,
	0x27, 0x0a, 0x0d, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x69, 0x72,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x44, 0x61,
	0x74, 0x61, 0x44, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x2c, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x6e, 0x61, 0x70,
	0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x69,
	0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63,
	0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x57, 0x0a, 0x0f, 0x75,
	0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x06,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x61,
	0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x6e,
	0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x48, 0x02, 0x52, 0x10, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x72, 0x65, 0x61, 0x73, 0x73,
	0x69, 0x67, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x69, 0x66, 0x5f, 0x75, 0x73, 0x65,
	0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x13, 0x72, 0x65, 0x61, 0x73, 0x73,
	0x69, 0x67, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x49, 0x66, 0x55, 0x73, 0x65, 0x64, 0x88, 0x01,
	0x01, 0x12, 0x54, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x70, 0x63, 0x70,
	0x62, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x70, 0x6c,
	0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x6e, 0x50, 0x6c, 0x61,
	0x63, 0x65, 0x12, 0x25, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64,
	0x69, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x52,
	0x6f, 0x6f, 0x74, 0x44, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x12, 0x77, 0x61, 0x6c,
	0x6c, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18,
	0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x72, 0x69,
	0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x6f, 0x6f, 0x74, 0x73,
	0x74, 0x72, 0x61, 0x70, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0d, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x10, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x4e, 0x6f,
	0x64, 0x65, 0x49, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72,
	0x61, 0x70, 0x5f, 0x69, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x73,
	0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61,
	0x70, 0x49, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d,
	0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0f, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x61, 0x74,
	0x68, 0x12, 0x17, 0x0a, 0x07, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x70, 0x18, 0x10, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x06, 0x7a, 0x65, 0x72, 0x6f, 0x49, 0x70, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x68,
	0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x55,
	0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40,
	0x0a, 0x12, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x10,
	0x0a, 0x0e, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x69, 0x72,
	0x42, 0x15, 0x0a, 0x13, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x72, 0x65, 0x61, 0x73,
	0x73, 0x69, 0x67, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x69, 0x66, 0x5f, 0x75, 0x73,
	0x65, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f,
	0x64, 0x69, 0x72, 0x22, 0x4d, 0x0a, 0x14, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73,
	0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e,
	0x66, 0x6f, 0x22, 0x61, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x6e, 0x61, 0x70,
	0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73,
	0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65,
	0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x70, 0x61, 0x74,
	0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
	0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53,
	0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x19, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61,
	0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x41, 0x0a, 0x18, 0x47, 0x65,
	0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68,
	0x6f, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d,
	0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x14, 0x0a,
	0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x22, 0x34, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65,
	0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x75,
	0x62, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09,
	0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x18, 0x0a, 0x16, 0x4c, 0x69, 0x73,
	0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
	0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38,
	0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x75, 0x73, 0x74,
	0x6f, 0x6d, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x62, 0x6c, 0x6f,
	0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74,
	0x52, 0x70, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x38, 0x0a, 0x07, 0x4e,
	0x6f, 0x64, 0x65, 0x52, 0x70, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x72, 0x70, 0x63, 0x22, 0x59, 0x0a, 0x0e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68,
	0x61, 0x69, 0x6e, 0x52, 0x70, 0x63, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x04,
	0x72, 0x70, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x70, 0x63, 0x52, 0x04, 0x72, 0x70, 0x63, 0x73,
	0x22, 0x54, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x70, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61,
	0x69, 0x6e, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15,
	0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x52, 0x70, 0x63, 0x73, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x73, 0x52, 0x70, 0x63, 0x73, 0x22, 0x26, 0x0a, 0x0b, 0x56, 0x4d, 0x49, 0x44, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x76, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x23,
	0x0a, 0x0c, 0x56, 0x4d, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x13,
	0x0a, 0x05, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x76,
	0x6d, 0x49, 0x64, 0x32, 0x53, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69,
	0x63, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13,
	0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x22, 0x08,
	0x2f, 0x76, 0x31, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x32, 0xa3, 0x1b, 0x0a, 0x0e, 0x43, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x64, 0x0a, 0x0a, 0x52,
	0x50, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x70,
	0x62, 0x2e, 0x52, 0x50, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x56,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x12, 0x50, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x13, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a,
	0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x73, 0x74,
	0x61, 0x72, 0x74, 0x12, 0x80, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c,
	0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x70,
	0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61,
	0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68,
	0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3,
	0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x17, 0x54, 0x72, 0x61, 0x6e, 0x73,
	0x66, 0x6f, 0x72, 0x6d, 0x45, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6e, 0x65,
	0x74, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73,
	0x66, 0x6f, 0x72, 0x6d, 0x45, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6e, 0x65,
	0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x70, 0x63, 0x70,
	0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x6c, 0x61, 0x73, 0x74,
	0x69, 0x63, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, 0x2a, 0x22, 0x23, 0x2f, 0x76,
	0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66,
	0x6f, 0x72, 0x6d, 0x65, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74,
	0x73, 0x12, 0xa4, 0x01, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72,
	0x12, 0x28, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61,
	0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
	0x6c, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a,
	0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x64,
	0x64, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x64,
	0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x12, 0xa4, 0x01, 0x0a, 0x1a, 0x41, 0x64, 0x64,
	0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e,
	0x41, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73,
	0x73, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x29, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x72,
	0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x56, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3,
	0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x64, 0x64, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12,
	0x88, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x56, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e,
	0x41, 0x64, 0x64, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x01, 0x2a, 0x22, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x64, 0x64, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x15, 0x52,
	0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x12, 0x23, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d,
	0x6f, 0x76, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x70, 0x63, 0x70,
	0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, 0x76, 0x31, 0x2f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x73, 0x75,
	0x62, 0x6e, 0x65, 0x74, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x70, 0x0a,
	0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x1b,
	0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62,
	0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x72, 0x70,
	0x63, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74,
	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12,
	0x54, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70,
	0x62, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x15, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01,
	0x2a, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x68,
	0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x6c, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x55, 0x70,
	0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1b, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x04, 0x55, 0x52, 0x49, 0x73, 0x12, 0x12, 0x2e, 0x72, 0x70,
	0x63, 0x70, 0x62, 0x2e, 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x13, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22,
	0x10, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x75, 0x72, 0x69,
	0x73, 0x12, 0x74, 0x0a, 0x0e, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x48, 0x65, 0x61, 0x6c,
	0x74, 0x68, 0x79, 0x12, 0x1c, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x57, 0x61, 0x69, 0x74,
	0x46, 0x6f, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1d, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f,
	0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x76, 0x31,
	0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x77, 0x61, 0x69, 0x74, 0x66, 0x6f, 0x72,
	0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x54, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x12, 0x14, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x6e, 0x0a,
	0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x2e,
	0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x72, 0x70, 0x63, 0x70,
	0x62, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01,
	0x2a, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x73,
	0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x30, 0x01, 0x12, 0x64, 0x0a,
	0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x70,
	0x63, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x52, 0x65,
	0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31,
	0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x6e,
	0x6f, 0x64, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x15,
	0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x64,
	0x64, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x64, 0x64, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x68, 0x0a,
	0x0b, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x2e, 0x72,
	0x70, 0x63, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e,
	0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17,
	0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x72, 0x65, 0x73, 0x74,
	0x61, 0x72, 0x74, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x50, 0x61, 0x75, 0x73, 0x65,
	0x4e, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x75,
	0x73, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e,
	0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a,
	0x01, 0x2a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f,
	0x70, 0x61, 0x75, 0x73, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x64, 0x0a, 0x0a, 0x52, 0x65, 0x73,
	0x75, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e,
	0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65,
	0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3,
	0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x12,
	0x4c, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e,
	0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x72, 0x70,
	0x63, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x76, 0x31,
	0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x64, 0x0a,
	0x0a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x50, 0x65, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x72, 0x70,
	0x63, 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x41, 0x74,
	0x74, 0x61, 0x63, 0x68, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31,
	0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x70,
	0x65, 0x65, 0x72, 0x12, 0x88, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x62,
	0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x72, 0x70,
	0x63, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
	0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x75, 0x74, 0x62, 0x6f,
	0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x01, 0x2a, 0x22, 0x1f, 0x2f,
	0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x6e, 0x64, 0x6f,
	0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6c,
	0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1a,
	0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73,
	0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a,
	0x01, 0x2a, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f,
	0x73, 0x61, 0x76, 0x65, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x6c, 0x0a, 0x0c,
	0x4c, 0x6f, 0x61, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1a, 0x2e, 0x72,
	0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62,
	0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a,
	0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x6c, 0x6f,
	0x61, 0x64, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x74, 0x0a, 0x0e, 0x52, 0x65,
	0x6d, 0x6f, 0x76, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1c, 0x2e, 0x72,
	0x70, 0x63, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73,
	0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
	0x12, 0x7c, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e,
	0x61, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74,
	0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74,
	0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a,
	0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x67, 0x65,
	0x74, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x68,
	0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x19, 0x2e,
	0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62,
	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22,
	0x17, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x6c, 0x69, 0x73,
	0x74, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73, 0x12, 0x78, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74,
	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x1d, 0x2e, 0x72, 0x70,
	0x63, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61,
	0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x72, 0x70, 0x63,
	0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x73, 0x12, 0x5c, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x70, 0x63, 0x73, 0x12, 0x16,
	0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x70, 0x63, 0x73, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62, 0x2e, 0x4c,
	0x69, 0x73, 0x74, 0x52, 0x70, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x72, 0x70, 0x63, 0x73,
	0x12, 0x4c, 0x0a, 0x04, 0x56, 0x4d, 0x49, 0x44, 0x12, 0x12, 0x2e, 0x72, 0x70, 0x63, 0x70, 0x62,
	0x2e, 0x56, 0x4d, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x72,
	0x70, 0x63, 0x70, 0x62, 0x2e, 0x56, 0x4d, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x76,
	0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x76, 0x6d, 0x69, 0x64, 0x42, 0x34,
	0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x76, 0x61,
	0x2d, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x61, 0x76, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x2d,
	0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x72, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x3b, 0x72,
	0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_rpcpb_rpc_proto_rawDescOnce sync.Once
	file_rpcpb_rpc_proto_rawDescData = file_rpcpb_rpc_proto_rawDesc
)

func file_rpcpb_rpc_proto_rawDescGZIP() []byte {
	file_rpcpb_rpc_proto_rawDescOnce.Do(func() {
		file_rpcpb_rpc_proto_rawDescData = protoimpl.X.CompressGZIP(file_rpcpb_rpc_proto_rawDescData)
	})
	return file_rpcpb_rpc_proto_rawDescData
}

var file_rpcpb_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 96)
var file_rpcpb_rpc_proto_goTypes = []any{
	(*PingRequest)(nil),                        // 0: rpcpb.PingRequest
	(*PingResponse)(nil),                       // 1: rpcpb.PingResponse
	(*SubnetParticipants)(nil),                 // 2: rpcpb.SubnetParticipants
	(*ClusterInfo)(nil),                        // 3: rpcpb.ClusterInfo
	(*SubnetInfo)(nil),                         // 4: rpcpb.SubnetInfo
	(*CustomChainInfo)(nil),                    // 5: rpcpb.CustomChainInfo
	(*NodeInfo)(nil),                           // 6: rpcpb.NodeInfo
	(*AttachedPeerInfo)(nil),                   // 7: rpcpb.AttachedPeerInfo
	(*ListOfAttachedPeerInfo)(nil),             // 8: rpcpb.ListOfAttachedPeerInfo
	(*StartRequest)(nil),                       // 9: rpcpb.StartRequest
	(*RPCVersionRequest)(nil),                  // 10: rpcpb.RPCVersionRequest
	(*RPCVersionResponse)(nil),                 // 11: rpcpb.RPCVersionResponse
	(*StartResponse)(nil),                      // 12: rpcpb.StartResponse
	(*SubnetSpec)(nil),                         // 13: rpcpb.SubnetSpec
	(*ElasticSubnetSpec)(nil),                  // 14: rpcpb.ElasticSubnetSpec
	(*TransformElasticSubnetsRequest)(nil),     // 15: rpcpb.TransformElasticSubnetsRequest
	(*TransformElasticSubnetsResponse)(nil),    // 16: rpcpb.TransformElasticSubnetsResponse
	(*PermissionlessStakerSpec)(nil),           // 17: rpcpb.PermissionlessStakerSpec
	(*AddPermissionlessValidatorRequest)(nil),  // 18: rpcpb.AddPermissionlessValidatorRequest
	(*AddPermissionlessValidatorResponse)(nil), // 19: rpcpb.AddPermissionlessValidatorResponse
	(*AddPermissionlessDelegatorRequest)(nil),  // 20: rpcpb.AddPermissionlessDelegatorRequest
	(*AddPermissionlessDelegatorResponse)(nil), // 21: rpcpb.AddPermissionlessDelegatorResponse
	(*RemoveSubnetValidatorSpec)(nil),          // 22: rpcpb.RemoveSubnetValidatorSpec
	(*RemoveSubnetValidatorRequest)(nil),       // 23: rpcpb.RemoveSubnetValidatorRequest
	(*RemoveSubnetValidatorResponse)(nil),      // 24: rpcpb.RemoveSubnetValidatorResponse
	(*SubnetValidatorsSpec)(nil),               // 25: rpcpb.SubnetValidatorsSpec
	(*AddSubnetValidatorsRequest)(nil),         // 26: rpcpb.AddSubnetValidatorsRequest
	(*AddSubnetValidatorsResponse)(nil),        // 27: rpcpb.AddSubnetValidatorsResponse
	(*BlockchainSpec)(nil),                     // 28: rpcpb.BlockchainSpec
	(*CreateBlockchainsRequest)(nil),           // 29: rpcpb.CreateBlockchainsRequest
	(*CreateBlockchainsResponse)(nil),          // 30: rpcpb.CreateBlockchainsResponse
	(*CreateSubnetsRequest)(nil),               // 31: rpcpb.CreateSubnetsRequest
	(*CreateSubnetsResponse)(nil),              // 32: rpcpb.CreateSubnetsResponse
	(*HealthRequest)(nil),                      // 33: rpcpb.HealthRequest
	(*HealthResponse)(nil),                     // 34: rpcpb.HealthResponse
	(*UpdateStatusRequest)(nil),                // 35: rpcpb.UpdateStatusRequest
	(*UpdateStatusResponse)(nil),               // 36: rpcpb.UpdateStatusResponse
	(*URIsRequest)(nil),                        // 37: rpcpb.URIsRequest
	(*URIsResponse)(nil),                       // 38: rpcpb.URIsResponse
	(*WaitForHealthyRequest)(nil),              // 39: rpcpb.WaitForHealthyRequest
	(*WaitForHealthyResponse)(nil),             // 40: rpcpb.WaitForHealthyResponse
	(*StatusRequest)(nil),                      // 41: rpcpb.StatusRequest
	(*StatusResponse)(nil),                     // 42: rpcpb.StatusResponse
	(*StreamStatusRequest)(nil),                // 43: rpcpb.StreamStatusRequest
	(*StreamStatusResponse)(nil),               // 44: rpcpb.StreamStatusResponse
	(*RestartNodeRequest)(nil),                 // 45: rpcpb.RestartNodeRequest
	(*RestartNodeResponse)(nil),                // 46: rpcpb.RestartNodeResponse
	(*RemoveNodeRequest)(nil),                  // 47: rpcpb.RemoveNodeRequest
	(*RemoveNodeResponse)(nil),                 // 48: rpcpb.RemoveNodeResponse
	(*PauseNodeRequest)(nil),                   // 49: rpcpb.PauseNodeRequest
	(*PauseNodeResponse)(nil),                  // 50: rpcpb.PauseNodeResponse
	(*ResumeNodeRequest)(nil),                  // 51: rpcpb.ResumeNodeRequest
	(*ResumeNodeResponse)(nil),                 // 52: rpcpb.ResumeNodeResponse
	(*AddNodeRequest)(nil),                     // 53: rpcpb.AddNodeRequest
	(*AddNodeResponse)(nil),                    // 54: rpcpb.AddNodeResponse
	(*StopRequest)(nil),                        // 55: rpcpb.StopRequest
	(*StopResponse)(nil),                       // 56: rpcpb.StopResponse
	(*AttachPeerRequest)(nil),                  // 57: rpcpb.AttachPeerRequest
	(*AttachPeerResponse)(nil),                 // 58: rpcpb.AttachPeerResponse
	(*SendOutboundMessageRequest)(nil),         // 59: rpcpb.SendOutboundMessageRequest
	(*SendOutboundMessageResponse)(nil),        // 60: rpcpb.SendOutboundMessageResponse
	(*SaveSnapshotRequest)(nil),                // 61: rpcpb.SaveSnapshotRequest
	(*SaveSnapshotResponse)(nil),               // 62: rpcpb.SaveSnapshotResponse
	(*LoadSnapshotRequest)(nil),                // 63: rpcpb.LoadSnapshotRequest
	(*LoadSnapshotResponse)(nil),               // 64: rpcpb.LoadSnapshotResponse
	(*RemoveSnapshotRequest)(nil),              // 65: rpcpb.RemoveSnapshotRequest
	(*RemoveSnapshotResponse)(nil),             // 66: rpcpb.RemoveSnapshotResponse
	(*GetSnapshotNamesRequest)(nil),            // 67: rpcpb.GetSnapshotNamesRequest
	(*GetSnapshotNamesResponse)(nil),           // 68: rpcpb.GetSnapshotNamesResponse
	(*ListSubnetsRequest)(nil),                 // 69: rpcpb.ListSubnetsRequest
	(*ListSubnetsResponse)(nil),                // 70: rpcpb.ListSubnetsResponse
	(*ListBlockchainsRequest)(nil),             // 71: rpcpb.ListBlockchainsRequest
	(*ListBlockchainsResponse)(nil),            // 72: rpcpb.ListBlockchainsResponse
	(*ListRpcsRequest)(nil),                    // 73: rpcpb.ListRpcsRequest
	(*NodeRpc)(nil),                            // 74: rpcpb.NodeRpc
	(*BlockchainRpcs)(nil),                     // 75: rpcpb.BlockchainRpcs
	(*ListRpcsResponse)(nil),                   // 76: rpcpb.ListRpcsResponse
	(*VMIDRequest)(nil),                        // 77: rpcpb.VMIDRequest
	(*VMIDResponse)(nil),                       // 78: rpcpb.VMIDResponse
	nil,                                        // 79: rpcpb.ClusterInfo.NodeInfosEntry
	nil,                                        // 80: rpcpb.ClusterInfo.AttachedPeerInfosEntry
	nil,                                        // 81: rpcpb.ClusterInfo.CustomChainsEntry
	nil,                                        // 82: rpcpb.ClusterInfo.SubnetsEntry
	nil,                                        // 83: rpcpb.StartRequest.CustomNodeConfigsEntry
	nil,                                        // 84: rpcpb.StartRequest.ChainConfigsEntry
	nil,                                        // 85: rpcpb.StartRequest.UpgradeConfigsEntry
	nil,                                        // 86: rpcpb.StartRequest.SubnetConfigsEntry
	nil,                                        // 87: rpcpb.RestartNodeRequest.ChainConfigsEntry
	nil,                                        // 88: rpcpb.RestartNodeRequest.UpgradeConfigsEntry
	nil,                                        // 89: rpcpb.RestartNodeRequest.SubnetConfigsEntry
	nil,                                        // 90: rpcpb.AddNodeRequest.ChainConfigsEntry
	nil,                                        // 91: rpcpb.AddNodeRequest.UpgradeConfigsEntry
	nil,                                        // 92: rpcpb.AddNodeRequest.SubnetConfigsEntry
	nil,                                        // 93: rpcpb.LoadSnapshotRequest.ChainConfigsEntry
	nil,                                        // 94: rpcpb.LoadSnapshotRequest.UpgradeConfigsEntry
	nil,                                        // 95: rpcpb.LoadSnapshotRequest.SubnetConfigsEntry
}
var file_rpcpb_rpc_proto_depIdxs = []int32{
	79, // 0: rpcpb.ClusterInfo.node_infos:type_name -> rpcpb.ClusterInfo.NodeInfosEntry
	80, // 1: rpcpb.ClusterInfo.attached_peer_infos:type_name -> rpcpb.ClusterInfo.AttachedPeerInfosEntry
	81, // 2: rpcpb.ClusterInfo.custom_chains:type_name -> rpcpb.ClusterInfo.CustomChainsEntry
	82, // 3: rpcpb.ClusterInfo.subnets:type_name -> rpcpb.ClusterInfo.SubnetsEntry
	2,  // 4: rpcpb.SubnetInfo.subnet_participants:type_name -> rpcpb.SubnetParticipants
	7,  // 5: rpcpb.ListOfAttachedPeerInfo.peers:type_name -> rpcpb.AttachedPeerInfo
	28, // 6: rpcpb.StartRequest.blockchain_specs:type_name -> rpcpb.BlockchainSpec
	83, // 7: rpcpb.StartRequest.custom_node_configs:type_name -> rpcpb.StartRequest.CustomNodeConfigsEntry
	84, // 8: rpcpb.StartRequest.chain_configs:type_name -> rpcpb.StartRequest.ChainConfigsEntry
	85, // 9: rpcpb.StartRequest.upgrade_configs:type_name -> rpcpb.StartRequest.UpgradeConfigsEntry
	86, // 10: rpcpb.StartRequest.subnet_configs:type_name -> rpcpb.StartRequest.SubnetConfigsEntry
	3,  // 11: rpcpb.StartResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	14, // 12: rpcpb.TransformElasticSubnetsRequest.elastic_subnet_spec:type_name -> rpcpb.ElasticSubnetSpec
	3,  // 13: rpcpb.TransformElasticSubnetsResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	17, // 14: rpcpb.AddPermissionlessValidatorRequest.validator_spec:type_name -> rpcpb.PermissionlessStakerSpec
	3,  // 15: rpcpb.AddPermissionlessValidatorResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	17, // 16: rpcpb.AddPermissionlessDelegatorRequest.validator_spec:type_name -> rpcpb.PermissionlessStakerSpec
	3,  // 17: rpcpb.AddPermissionlessDelegatorResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	22, // 18: rpcpb.RemoveSubnetValidatorRequest.validator_spec:type_name -> rpcpb.RemoveSubnetValidatorSpec
	3,  // 19: rpcpb.RemoveSubnetValidatorResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	25, // 20: rpcpb.AddSubnetValidatorsRequest.validators_spec:type_name -> rpcpb.SubnetValidatorsSpec
	3,  // 21: rpcpb.AddSubnetValidatorsResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	13, // 22: rpcpb.BlockchainSpec.subnet_spec:type_name -> rpcpb.SubnetSpec
	28, // 23: rpcpb.CreateBlockchainsRequest.blockchain_specs:type_name -> rpcpb.BlockchainSpec
	3,  // 24: rpcpb.CreateBlockchainsResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	13, // 25: rpcpb.CreateSubnetsRequest.subnet_specs:type_name -> rpcpb.SubnetSpec
	3,  // 26: rpcpb.CreateSubnetsResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	3,  // 27: rpcpb.HealthResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	3,  // 28: rpcpb.UpdateStatusResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	3,  // 29: rpcpb.WaitForHealthyResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	3,  // 30: rpcpb.StatusResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	3,  // 31: rpcpb.StreamStatusResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	87, // 32: rpcpb.RestartNodeRequest.chain_configs:type_name -> rpcpb.RestartNodeRequest.ChainConfigsEntry
	88, // 33: rpcpb.RestartNodeRequest.upgrade_configs:type_name -> rpcpb.RestartNodeRequest.UpgradeConfigsEntry
	89, // 34: rpcpb.RestartNodeRequest.subnet_configs:type_name -> rpcpb.RestartNodeRequest.SubnetConfigsEntry
	3,  // 35: rpcpb.RestartNodeResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	3,  // 36: rpcpb.RemoveNodeResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	3,  // 37: rpcpb.PauseNodeResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	3,  // 38: rpcpb.ResumeNodeResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	90, // 39: rpcpb.AddNodeRequest.chain_configs:type_name -> rpcpb.AddNodeRequest.ChainConfigsEntry
	91, // 40: rpcpb.AddNodeRequest.upgrade_configs:type_name -> rpcpb.AddNodeRequest.UpgradeConfigsEntry
	92, // 41: rpcpb.AddNodeRequest.subnet_configs:type_name -> rpcpb.AddNodeRequest.SubnetConfigsEntry
	3,  // 42: rpcpb.AddNodeResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	3,  // 43: rpcpb.StopResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	3,  // 44: rpcpb.AttachPeerResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	7,  // 45: rpcpb.AttachPeerResponse.attached_peer_info:type_name -> rpcpb.AttachedPeerInfo
	93, // 46: rpcpb.LoadSnapshotRequest.chain_configs:type_name -> rpcpb.LoadSnapshotRequest.ChainConfigsEntry
	94, // 47: rpcpb.LoadSnapshotRequest.upgrade_configs:type_name -> rpcpb.LoadSnapshotRequest.UpgradeConfigsEntry
	95, // 48: rpcpb.LoadSnapshotRequest.subnet_configs:type_name -> rpcpb.LoadSnapshotRequest.SubnetConfigsEntry
	3,  // 49: rpcpb.LoadSnapshotResponse.cluster_info:type_name -> rpcpb.ClusterInfo
	5,  // 50: rpcpb.ListBlockchainsResponse.blockchains:type_name -> rpcpb.CustomChainInfo
	74, // 51: rpcpb.BlockchainRpcs.rpcs:type_name -> rpcpb.NodeRpc
	75, // 52: rpcpb.ListRpcsResponse.blockchains_rpcs:type_name -> rpcpb.BlockchainRpcs
	6,  // 53: rpcpb.ClusterInfo.NodeInfosEntry.value:type_name -> rpcpb.NodeInfo
	8,  // 54: rpcpb.ClusterInfo.AttachedPeerInfosEntry.value:type_name -> rpcpb.ListOfAttachedPeerInfo
	5,  // 55: rpcpb.ClusterInfo.CustomChainsEntry.value:type_name -> rpcpb.CustomChainInfo
	4,  // 56: rpcpb.ClusterInfo.SubnetsEntry.value:type_name -> rpcpb.SubnetInfo
	0,  // 57: rpcpb.PingService.Ping:input_type -> rpcpb.PingRequest
	10, // 58: rpcpb.ControlService.RPCVersion:input_type -> rpcpb.RPCVersionRequest
	9,  // 59: rpcpb.ControlService.Start:input_type -> rpcpb.StartRequest
	29, // 60: rpcpb.ControlService.CreateBlockchains:input_type -> rpcpb.CreateBlockchainsRequest
	15, // 61: rpcpb.ControlService.TransformElasticSubnets:input_type -> rpcpb.TransformElasticSubnetsRequest
	20, // 62: rpcpb.ControlService.AddPermissionlessDelegator:input_type -> rpcpb.AddPermissionlessDelegatorRequest
	18, // 63: rpcpb.ControlService.AddPermissionlessValidator:input_type -> rpcpb.AddPermissionlessValidatorRequest
	26, // 64: rpcpb.ControlService.AddSubnetValidators:input_type -> rpcpb.AddSubnetValidatorsRequest
	23, // 65: rpcpb.ControlService.RemoveSubnetValidator:input_type -> rpcpb.RemoveSubnetValidatorRequest
	31, // 66: rpcpb.ControlService.CreateSubnets:input_type -> rpcpb.CreateSubnetsRequest
	33, // 67: rpcpb.ControlService.Health:input_type -> rpcpb.HealthRequest
	35, // 68: rpcpb.ControlService.UpdateStatus:input_type -> rpcpb.UpdateStatusRequest
	37, // 69: rpcpb.ControlService.URIs:input_type -> rpcpb.URIsRequest
	39, // 70: rpcpb.ControlService.WaitForHealthy:input_type -> rpcpb.WaitForHealthyRequest
	41, // 71: rpcpb.ControlService.Status:input_type -> rpcpb.StatusRequest
	43, // 72: rpcpb.ControlService.StreamStatus:input_type -> rpcpb.StreamStatusRequest
	47, // 73: rpcpb.ControlService.RemoveNode:input_type -> rpcpb.RemoveNodeRequest
	53, // 74: rpcpb.ControlService.AddNode:input_type -> rpcpb.AddNodeRequest
	45, // 75: rpcpb.ControlService.RestartNode:input_type -> rpcpb.RestartNodeRequest
	49, // 76: rpcpb.ControlService.PauseNode:input_type -> rpcpb.PauseNodeRequest
	51, // 77: rpcpb.ControlService.ResumeNode:input_type -> rpcpb.ResumeNodeRequest
	55, // 78: rpcpb.ControlService.Stop:input_type -> rpcpb.StopRequest
	57, // 79: rpcpb.ControlService.AttachPeer:input_type -> rpcpb.AttachPeerRequest
	59, // 80: rpcpb.ControlService.SendOutboundMessage:input_type -> rpcpb.SendOutboundMessageRequest
	61, // 81: rpcpb.ControlService.SaveSnapshot:input_type -> rpcpb.SaveSnapshotRequest
	63, // 82: rpcpb.ControlService.LoadSnapshot:input_type -> rpcpb.LoadSnapshotRequest
	65, // 83: rpcpb.ControlService.RemoveSnapshot:input_type -> rpcpb.RemoveSnapshotRequest
	67, // 84: rpcpb.ControlService.GetSnapshotNames:input_type -> rpcpb.GetSnapshotNamesRequest
	69, // 85: rpcpb.ControlService.ListSubnets:input_type -> rpcpb.ListSubnetsRequest
	71, // 86: rpcpb.ControlService.ListBlockchains:input_type -> rpcpb.ListBlockchainsRequest
	73, // 87: rpcpb.ControlService.ListRpcs:input_type -> rpcpb.ListRpcsRequest
	77, // 88: rpcpb.ControlService.VMID:input_type -> rpcpb.VMIDRequest
	1,  // 89: rpcpb.PingService.Ping:output_type -> rpcpb.PingResponse
	11, // 90: rpcpb.ControlService.RPCVersion:output_type -> rpcpb.RPCVersionResponse
	12, // 91: rpcpb.ControlService.Start:output_type -> rpcpb.StartResponse
	30, // 92: rpcpb.ControlService.CreateBlockchains:output_type -> rpcpb.CreateBlockchainsResponse
	16, // 93: rpcpb.ControlService.TransformElasticSubnets:output_type -> rpcpb.TransformElasticSubnetsResponse
	21, // 94: rpcpb.ControlService.AddPermissionlessDelegator:output_type -> rpcpb.AddPermissionlessDelegatorResponse
	19, // 95: rpcpb.ControlService.AddPermissionlessValidator:output_type -> rpcpb.AddPermissionlessValidatorResponse
	27, // 96: rpcpb.ControlService.AddSubnetValidators:output_type -> rpcpb.AddSubnetValidatorsResponse
	24, // 97: rpcpb.ControlService.RemoveSubnetValidator:output_type -> rpcpb.RemoveSubnetValidatorResponse
	32, // 98: rpcpb.ControlService.CreateSubnets:output_type -> rpcpb.CreateSubnetsResponse
	34, // 99: rpcpb.ControlService.Health:output_type -> rpcpb.HealthResponse
	36, // 100: rpcpb.ControlService.UpdateStatus:output_type -> rpcpb.UpdateStatusResponse
	38, // 101: rpcpb.ControlService.URIs:output_type -> rpcpb.URIsResponse
	40, // 102: rpcpb.ControlService.WaitForHealthy:output_type -> rpcpb.WaitForHealthyResponse
	42, // 103: rpcpb.ControlService.Status:output_type -> rpcpb.StatusResponse
	44, // 104: rpcpb.ControlService.StreamStatus:output_type -> rpcpb.StreamStatusResponse
	48, // 105: rpcpb.ControlService.RemoveNode:output_type -> rpcpb.RemoveNodeResponse
	54, // 106: rpcpb.ControlService.AddNode:output_type -> rpcpb.AddNodeResponse
	46, // 107: rpcpb.ControlService.RestartNode:output_type -> rpcpb.RestartNodeResponse
	50, // 108: rpcpb.ControlService.PauseNode:output_type -> rpcpb.PauseNodeResponse
	52, // 109: rpcpb.ControlService.ResumeNode:output_type -> rpcpb.ResumeNodeResponse
	56, // 110: rpcpb.ControlService.Stop:output_type -> rpcpb.StopResponse
	58, // 111: rpcpb.ControlService.AttachPeer:output_type -> rpcpb.AttachPeerResponse
	60, // 112: rpcpb.ControlService.SendOutboundMessage:output_type -> rpcpb.SendOutboundMessageResponse
	62, // 113: rpcpb.ControlService.SaveSnapshot:output_type -> rpcpb.SaveSnapshotResponse
	64, // 114: rpcpb.ControlService.LoadSnapshot:output_type -> rpcpb.LoadSnapshotResponse
	66, // 115: rpcpb.ControlService.RemoveSnapshot:output_type -> rpcpb.RemoveSnapshotResponse
	68, // 116: rpcpb.ControlService.GetSnapshotNames:output_type -> rpcpb.GetSnapshotNamesResponse
	70, // 117: rpcpb.ControlService.ListSubnets:output_type -> rpcpb.ListSubnetsResponse
	72, // 118: rpcpb.ControlService.ListBlockchains:output_type -> rpcpb.ListBlockchainsResponse
	76, // 119: rpcpb.ControlService.ListRpcs:output_type -> rpcpb.ListRpcsResponse
	78, // 120: rpcpb.ControlService.VMID:output_type -> rpcpb.VMIDResponse
	89, // [89:121] is the sub-list for method output_type
	57, // [57:89] is the sub-list for method input_type
	57, // [57:57] is the sub-list for extension type_name
	57, // [57:57] is the sub-list for extension extendee
	0,  // [0:57] is the sub-list for field type_name
}

func init() { file_rpcpb_rpc_proto_init() }
func file_rpcpb_rpc_proto_init() {
	if File_rpcpb_rpc_proto != nil {
		return
	}
	file_rpcpb_rpc_proto_msgTypes[9].OneofWrappers = []any{}
	file_rpcpb_rpc_proto_msgTypes[28].OneofWrappers = []any{}
	file_rpcpb_rpc_proto_msgTypes[45].OneofWrappers = []any{}
	file_rpcpb_rpc_proto_msgTypes[53].OneofWrappers = []any{}
	file_rpcpb_rpc_proto_msgTypes[63].OneofWrappers = []any{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_rpcpb_rpc_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   96,
			NumExtensions: 0,
			NumServices:   2,
		},
		GoTypes:           file_rpcpb_rpc_proto_goTypes,
		DependencyIndexes: file_rpcpb_rpc_proto_depIdxs,
		MessageInfos:      file_rpcpb_rpc_proto_msgTypes,
	}.Build()
	File_rpcpb_rpc_proto = out.File
	file_rpcpb_rpc_proto_rawDesc = nil
	file_rpcpb_rpc_proto_goTypes = nil
	file_rpcpb_rpc_proto_depIdxs = nil
}
