// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.35.2
// 	protoc        v6.31.1
// source: viz.proto

package viz

import (
	duration "github.com/golang/protobuf/ptypes/duration"
	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 CheckStatus int32

const (
	CheckStatus_OK    CheckStatus = 0
	CheckStatus_FAIL  CheckStatus = 1
	CheckStatus_ERROR CheckStatus = 2
)

// Enum value maps for CheckStatus.
var (
	CheckStatus_name = map[int32]string{
		0: "OK",
		1: "FAIL",
		2: "ERROR",
	}
	CheckStatus_value = map[string]int32{
		"OK":    0,
		"FAIL":  1,
		"ERROR": 2,
	}
)

func (x CheckStatus) Enum() *CheckStatus {
	p := new(CheckStatus)
	*p = x
	return p
}

func (x CheckStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CheckStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_viz_proto_enumTypes[0].Descriptor()
}

func (CheckStatus) Type() protoreflect.EnumType {
	return &file_viz_proto_enumTypes[0]
}

func (x CheckStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use CheckStatus.Descriptor instead.
func (CheckStatus) EnumDescriptor() ([]byte, []int) {
	return file_viz_proto_rawDescGZIP(), []int{0}
}

type HttpMethod_Registered int32

const (
	HttpMethod_GET     HttpMethod_Registered = 0
	HttpMethod_POST    HttpMethod_Registered = 1
	HttpMethod_PUT     HttpMethod_Registered = 2
	HttpMethod_DELETE  HttpMethod_Registered = 3
	HttpMethod_PATCH   HttpMethod_Registered = 4
	HttpMethod_OPTIONS HttpMethod_Registered = 5
	HttpMethod_CONNECT HttpMethod_Registered = 6
	HttpMethod_HEAD    HttpMethod_Registered = 7
	HttpMethod_TRACE   HttpMethod_Registered = 8
)

// Enum value maps for HttpMethod_Registered.
var (
	HttpMethod_Registered_name = map[int32]string{
		0: "GET",
		1: "POST",
		2: "PUT",
		3: "DELETE",
		4: "PATCH",
		5: "OPTIONS",
		6: "CONNECT",
		7: "HEAD",
		8: "TRACE",
	}
	HttpMethod_Registered_value = map[string]int32{
		"GET":     0,
		"POST":    1,
		"PUT":     2,
		"DELETE":  3,
		"PATCH":   4,
		"OPTIONS": 5,
		"CONNECT": 6,
		"HEAD":    7,
		"TRACE":   8,
	}
)

func (x HttpMethod_Registered) Enum() *HttpMethod_Registered {
	p := new(HttpMethod_Registered)
	*p = x
	return p
}

func (x HttpMethod_Registered) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (HttpMethod_Registered) Descriptor() protoreflect.EnumDescriptor {
	return file_viz_proto_enumTypes[1].Descriptor()
}

func (HttpMethod_Registered) Type() protoreflect.EnumType {
	return &file_viz_proto_enumTypes[1]
}

func (x HttpMethod_Registered) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use HttpMethod_Registered.Descriptor instead.
func (HttpMethod_Registered) EnumDescriptor() ([]byte, []int) {
	return file_viz_proto_rawDescGZIP(), []int{10, 0}
}

type Scheme_Registered int32

const (
	Scheme_HTTP  Scheme_Registered = 0
	Scheme_HTTPS Scheme_Registered = 1
)

// Enum value maps for Scheme_Registered.
var (
	Scheme_Registered_name = map[int32]string{
		0: "HTTP",
		1: "HTTPS",
	}
	Scheme_Registered_value = map[string]int32{
		"HTTP":  0,
		"HTTPS": 1,
	}
)

func (x Scheme_Registered) Enum() *Scheme_Registered {
	p := new(Scheme_Registered)
	*p = x
	return p
}

func (x Scheme_Registered) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Scheme_Registered) Descriptor() protoreflect.EnumDescriptor {
	return file_viz_proto_enumTypes[2].Descriptor()
}

func (Scheme_Registered) Type() protoreflect.EnumType {
	return &file_viz_proto_enumTypes[2]
}

func (x Scheme_Registered) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Scheme_Registered.Descriptor instead.
func (Scheme_Registered) EnumDescriptor() ([]byte, []int) {
	return file_viz_proto_rawDescGZIP(), []int{11, 0}
}

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

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

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

func (*Empty) ProtoMessage() {}

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

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

	SubsystemName         string      `protobuf:"bytes,1,opt,name=SubsystemName,proto3" json:"SubsystemName,omitempty"`
	CheckDescription      string      `protobuf:"bytes,2,opt,name=CheckDescription,proto3" json:"CheckDescription,omitempty"`
	Status                CheckStatus `protobuf:"varint,3,opt,name=Status,proto3,enum=linkerd2.viz.CheckStatus" json:"Status,omitempty"`
	FriendlyMessageToUser string      `protobuf:"bytes,4,opt,name=FriendlyMessageToUser,proto3" json:"FriendlyMessageToUser,omitempty"`
}

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

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

func (*CheckResult) ProtoMessage() {}

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

func (x *CheckResult) GetSubsystemName() string {
	if x != nil {
		return x.SubsystemName
	}
	return ""
}

func (x *CheckResult) GetCheckDescription() string {
	if x != nil {
		return x.CheckDescription
	}
	return ""
}

func (x *CheckResult) GetStatus() CheckStatus {
	if x != nil {
		return x.Status
	}
	return CheckStatus_OK
}

func (x *CheckResult) GetFriendlyMessageToUser() string {
	if x != nil {
		return x.FriendlyMessageToUser
	}
	return ""
}

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

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

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

func (*SelfCheckRequest) ProtoMessage() {}

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

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

	Results []*CheckResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
}

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

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

func (*SelfCheckResponse) ProtoMessage() {}

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

func (x *SelfCheckResponse) GetResults() []*CheckResult {
	if x != nil {
		return x.Results
	}
	return nil
}

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

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

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

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

func (*ListServicesRequest) ProtoMessage() {}

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

func (x *ListServicesRequest) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

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

	Services []*Service `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty"`
}

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

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

func (*ListServicesResponse) ProtoMessage() {}

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

func (x *ListServicesResponse) GetServices() []*Service {
	if x != nil {
		return x.Services
	}
	return nil
}

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

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

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

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

func (*Service) ProtoMessage() {}

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

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

func (x *Service) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

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

	Selector *ResourceSelection `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"`
}

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

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

func (*ListPodsRequest) ProtoMessage() {}

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

func (x *ListPodsRequest) GetSelector() *ResourceSelection {
	if x != nil {
		return x.Selector
	}
	return nil
}

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

	Pods []*Pod `protobuf:"bytes,1,rep,name=pods,proto3" json:"pods,omitempty"`
}

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

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

func (*ListPodsResponse) ProtoMessage() {}

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

func (x *ListPodsResponse) GetPods() []*Pod {
	if x != nil {
		return x.Pods
	}
	return nil
}

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

	Name  string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	PodIP string `protobuf:"bytes,2,opt,name=podIP,proto3" json:"podIP,omitempty"`
	// Types that are assignable to Owner:
	//
	//	*Pod_Deployment
	//	*Pod_ReplicaSet
	//	*Pod_ReplicationController
	//	*Pod_StatefulSet
	//	*Pod_DaemonSet
	//	*Pod_Job
	Owner               isPod_Owner        `protobuf_oneof:"owner"`
	Status              string             `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"`
	Added               bool               `protobuf:"varint,5,opt,name=added,proto3" json:"added,omitempty"` // true if this pod has a proxy sidecar (data plane)
	SinceLastReport     *duration.Duration `protobuf:"bytes,6,opt,name=sinceLastReport,proto3" json:"sinceLastReport,omitempty"`
	ControllerNamespace string             `protobuf:"bytes,7,opt,name=controllerNamespace,proto3" json:"controllerNamespace,omitempty"` // namespace of controller this pod reports to
	ControlPlane        bool               `protobuf:"varint,8,opt,name=controlPlane,proto3" json:"controlPlane,omitempty"`              // true if this pod is part of the control plane
	Uptime              *duration.Duration `protobuf:"bytes,9,opt,name=uptime,proto3" json:"uptime,omitempty"`                           // uptime of this pod
	ProxyReady          bool               `protobuf:"varint,15,opt,name=proxyReady,proto3" json:"proxyReady,omitempty"`                 // true if this pod has proxy container and that one is in ready state
	ProxyVersion        string             `protobuf:"bytes,16,opt,name=proxyVersion,proto3" json:"proxyVersion,omitempty"`              // version of the proxy if present
	ResourceVersion     string             `protobuf:"bytes,17,opt,name=resourceVersion,proto3" json:"resourceVersion,omitempty"`        // resource version in the Kubernetes API
}

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

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

func (*Pod) ProtoMessage() {}

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

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

func (x *Pod) GetPodIP() string {
	if x != nil {
		return x.PodIP
	}
	return ""
}

func (m *Pod) GetOwner() isPod_Owner {
	if m != nil {
		return m.Owner
	}
	return nil
}

func (x *Pod) GetDeployment() string {
	if x, ok := x.GetOwner().(*Pod_Deployment); ok {
		return x.Deployment
	}
	return ""
}

func (x *Pod) GetReplicaSet() string {
	if x, ok := x.GetOwner().(*Pod_ReplicaSet); ok {
		return x.ReplicaSet
	}
	return ""
}

func (x *Pod) GetReplicationController() string {
	if x, ok := x.GetOwner().(*Pod_ReplicationController); ok {
		return x.ReplicationController
	}
	return ""
}

func (x *Pod) GetStatefulSet() string {
	if x, ok := x.GetOwner().(*Pod_StatefulSet); ok {
		return x.StatefulSet
	}
	return ""
}

func (x *Pod) GetDaemonSet() string {
	if x, ok := x.GetOwner().(*Pod_DaemonSet); ok {
		return x.DaemonSet
	}
	return ""
}

func (x *Pod) GetJob() string {
	if x, ok := x.GetOwner().(*Pod_Job); ok {
		return x.Job
	}
	return ""
}

func (x *Pod) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *Pod) GetAdded() bool {
	if x != nil {
		return x.Added
	}
	return false
}

func (x *Pod) GetSinceLastReport() *duration.Duration {
	if x != nil {
		return x.SinceLastReport
	}
	return nil
}

func (x *Pod) GetControllerNamespace() string {
	if x != nil {
		return x.ControllerNamespace
	}
	return ""
}

func (x *Pod) GetControlPlane() bool {
	if x != nil {
		return x.ControlPlane
	}
	return false
}

func (x *Pod) GetUptime() *duration.Duration {
	if x != nil {
		return x.Uptime
	}
	return nil
}

func (x *Pod) GetProxyReady() bool {
	if x != nil {
		return x.ProxyReady
	}
	return false
}

func (x *Pod) GetProxyVersion() string {
	if x != nil {
		return x.ProxyVersion
	}
	return ""
}

func (x *Pod) GetResourceVersion() string {
	if x != nil {
		return x.ResourceVersion
	}
	return ""
}

type isPod_Owner interface {
	isPod_Owner()
}

type Pod_Deployment struct {
	Deployment string `protobuf:"bytes,3,opt,name=deployment,proto3,oneof"`
}

type Pod_ReplicaSet struct {
	ReplicaSet string `protobuf:"bytes,10,opt,name=replica_set,json=replicaSet,proto3,oneof"`
}

type Pod_ReplicationController struct {
	ReplicationController string `protobuf:"bytes,11,opt,name=replication_controller,json=replicationController,proto3,oneof"`
}

type Pod_StatefulSet struct {
	StatefulSet string `protobuf:"bytes,12,opt,name=stateful_set,json=statefulSet,proto3,oneof"`
}

type Pod_DaemonSet struct {
	DaemonSet string `protobuf:"bytes,13,opt,name=daemon_set,json=daemonSet,proto3,oneof"`
}

type Pod_Job struct {
	Job string `protobuf:"bytes,14,opt,name=job,proto3,oneof"`
}

func (*Pod_Deployment) isPod_Owner() {}

func (*Pod_ReplicaSet) isPod_Owner() {}

func (*Pod_ReplicationController) isPod_Owner() {}

func (*Pod_StatefulSet) isPod_Owner() {}

func (*Pod_DaemonSet) isPod_Owner() {}

func (*Pod_Job) isPod_Owner() {}

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

	// Types that are assignable to Type:
	//
	//	*HttpMethod_Registered_
	//	*HttpMethod_Unregistered
	Type isHttpMethod_Type `protobuf_oneof:"type"`
}

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

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

func (*HttpMethod) ProtoMessage() {}

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

func (m *HttpMethod) GetType() isHttpMethod_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *HttpMethod) GetRegistered() HttpMethod_Registered {
	if x, ok := x.GetType().(*HttpMethod_Registered_); ok {
		return x.Registered
	}
	return HttpMethod_GET
}

func (x *HttpMethod) GetUnregistered() string {
	if x, ok := x.GetType().(*HttpMethod_Unregistered); ok {
		return x.Unregistered
	}
	return ""
}

type isHttpMethod_Type interface {
	isHttpMethod_Type()
}

type HttpMethod_Registered_ struct {
	Registered HttpMethod_Registered `protobuf:"varint,1,opt,name=registered,proto3,enum=linkerd2.viz.HttpMethod_Registered,oneof"`
}

type HttpMethod_Unregistered struct {
	Unregistered string `protobuf:"bytes,2,opt,name=unregistered,proto3,oneof"`
}

func (*HttpMethod_Registered_) isHttpMethod_Type() {}

func (*HttpMethod_Unregistered) isHttpMethod_Type() {}

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

	// Types that are assignable to Type:
	//
	//	*Scheme_Registered_
	//	*Scheme_Unregistered
	Type isScheme_Type `protobuf_oneof:"type"`
}

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

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

func (*Scheme) ProtoMessage() {}

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

func (m *Scheme) GetType() isScheme_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *Scheme) GetRegistered() Scheme_Registered {
	if x, ok := x.GetType().(*Scheme_Registered_); ok {
		return x.Registered
	}
	return Scheme_HTTP
}

func (x *Scheme) GetUnregistered() string {
	if x, ok := x.GetType().(*Scheme_Unregistered); ok {
		return x.Unregistered
	}
	return ""
}

type isScheme_Type interface {
	isScheme_Type()
}

type Scheme_Registered_ struct {
	Registered Scheme_Registered `protobuf:"varint,1,opt,name=registered,proto3,enum=linkerd2.viz.Scheme_Registered,oneof"`
}

type Scheme_Unregistered struct {
	Unregistered string `protobuf:"bytes,2,opt,name=unregistered,proto3,oneof"`
}

func (*Scheme_Registered_) isScheme_Type() {}

func (*Scheme_Unregistered) isScheme_Type() {}

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

	Headers []*Headers_Header `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty"`
}

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

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

func (*Headers) ProtoMessage() {}

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

func (x *Headers) GetHeaders() []*Headers_Header {
	if x != nil {
		return x.Headers
	}
	return nil
}

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

	// Types that are assignable to End:
	//
	//	*Eos_GrpcStatusCode
	//	*Eos_ResetErrorCode
	End isEos_End `protobuf_oneof:"end"`
}

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

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

func (*Eos) ProtoMessage() {}

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

func (m *Eos) GetEnd() isEos_End {
	if m != nil {
		return m.End
	}
	return nil
}

func (x *Eos) GetGrpcStatusCode() uint32 {
	if x, ok := x.GetEnd().(*Eos_GrpcStatusCode); ok {
		return x.GrpcStatusCode
	}
	return 0
}

func (x *Eos) GetResetErrorCode() uint32 {
	if x, ok := x.GetEnd().(*Eos_ResetErrorCode); ok {
		return x.ResetErrorCode
	}
	return 0
}

type isEos_End interface {
	isEos_End()
}

type Eos_GrpcStatusCode struct {
	GrpcStatusCode uint32 `protobuf:"varint,1,opt,name=grpc_status_code,json=grpcStatusCode,proto3,oneof"`
}

type Eos_ResetErrorCode struct {
	ResetErrorCode uint32 `protobuf:"varint,2,opt,name=reset_error_code,json=resetErrorCode,proto3,oneof"`
}

func (*Eos_GrpcStatusCode) isEos_End() {}

func (*Eos_ResetErrorCode) isEos_End() {}

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

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

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

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

func (*ApiError) ProtoMessage() {}

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

func (x *ApiError) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

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

	Errors []*PodErrors_PodError `protobuf:"bytes,1,rep,name=errors,proto3" json:"errors,omitempty"`
}

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

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

func (*PodErrors) ProtoMessage() {}

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

func (x *PodErrors) GetErrors() []*PodErrors_PodError {
	if x != nil {
		return x.Errors
	}
	return nil
}

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

	// The namespace the resource is in.
	//
	// If empty, indicates all namespaces should be considered.
	Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
	// The type of resource.
	//
	// This can be:
	// - "all" -- includes all Kubernetes resource types only
	// - "authority" -- a special resource type derived from request `:authority` values
	// - Otherwise, the resource type may be any Kubernetes resource (e.g. "namespace", "deployment").
	Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
	// An optional resource name.
	Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
}

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

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

func (*Resource) ProtoMessage() {}

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

func (x *Resource) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *Resource) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

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

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

	// Identifies a Kubernetes resource.
	Resource *Resource `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"`
	// A string-formatted Kubernetes label selector as passed to `kubectl get
	// --selector`.
	//
	// XXX in the future this may be superseded by a data structure that more
	// richly describes a parsed label selector.
	LabelSelector string `protobuf:"bytes,2,opt,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty"`
}

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

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

func (*ResourceSelection) ProtoMessage() {}

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

func (x *ResourceSelection) GetResource() *Resource {
	if x != nil {
		return x.Resource
	}
	return nil
}

func (x *ResourceSelection) GetLabelSelector() string {
	if x != nil {
		return x.LabelSelector
	}
	return ""
}

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

	Resource *Resource `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"`
	Error    string    `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
}

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

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

func (*ResourceError) ProtoMessage() {}

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

func (x *ResourceError) GetResource() *Resource {
	if x != nil {
		return x.Resource
	}
	return nil
}

func (x *ResourceError) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

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

	Selector   *ResourceSelection `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"`
	TimeWindow string             `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"`
	// Types that are assignable to Outbound:
	//
	//	*StatSummaryRequest_None
	//	*StatSummaryRequest_ToResource
	//	*StatSummaryRequest_FromResource
	Outbound  isStatSummaryRequest_Outbound `protobuf_oneof:"outbound"`
	SkipStats bool                          `protobuf:"varint,6,opt,name=skip_stats,json=skipStats,proto3" json:"skip_stats,omitempty"` // true if we want to skip stats from Prometheus
	TcpStats  bool                          `protobuf:"varint,7,opt,name=tcp_stats,json=tcpStats,proto3" json:"tcp_stats,omitempty"`
}

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

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

func (*StatSummaryRequest) ProtoMessage() {}

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

func (x *StatSummaryRequest) GetSelector() *ResourceSelection {
	if x != nil {
		return x.Selector
	}
	return nil
}

func (x *StatSummaryRequest) GetTimeWindow() string {
	if x != nil {
		return x.TimeWindow
	}
	return ""
}

func (m *StatSummaryRequest) GetOutbound() isStatSummaryRequest_Outbound {
	if m != nil {
		return m.Outbound
	}
	return nil
}

func (x *StatSummaryRequest) GetNone() *Empty {
	if x, ok := x.GetOutbound().(*StatSummaryRequest_None); ok {
		return x.None
	}
	return nil
}

func (x *StatSummaryRequest) GetToResource() *Resource {
	if x, ok := x.GetOutbound().(*StatSummaryRequest_ToResource); ok {
		return x.ToResource
	}
	return nil
}

func (x *StatSummaryRequest) GetFromResource() *Resource {
	if x, ok := x.GetOutbound().(*StatSummaryRequest_FromResource); ok {
		return x.FromResource
	}
	return nil
}

func (x *StatSummaryRequest) GetSkipStats() bool {
	if x != nil {
		return x.SkipStats
	}
	return false
}

func (x *StatSummaryRequest) GetTcpStats() bool {
	if x != nil {
		return x.TcpStats
	}
	return false
}

type isStatSummaryRequest_Outbound interface {
	isStatSummaryRequest_Outbound()
}

type StatSummaryRequest_None struct {
	None *Empty `protobuf:"bytes,3,opt,name=none,proto3,oneof"`
}

type StatSummaryRequest_ToResource struct {
	ToResource *Resource `protobuf:"bytes,4,opt,name=to_resource,json=toResource,proto3,oneof"`
}

type StatSummaryRequest_FromResource struct {
	FromResource *Resource `protobuf:"bytes,5,opt,name=from_resource,json=fromResource,proto3,oneof"`
}

func (*StatSummaryRequest_None) isStatSummaryRequest_Outbound() {}

func (*StatSummaryRequest_ToResource) isStatSummaryRequest_Outbound() {}

func (*StatSummaryRequest_FromResource) isStatSummaryRequest_Outbound() {}

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

	// Types that are assignable to Response:
	//
	//	*StatSummaryResponse_Ok_
	//	*StatSummaryResponse_Error
	Response isStatSummaryResponse_Response `protobuf_oneof:"response"`
}

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

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

func (*StatSummaryResponse) ProtoMessage() {}

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

func (m *StatSummaryResponse) GetResponse() isStatSummaryResponse_Response {
	if m != nil {
		return m.Response
	}
	return nil
}

func (x *StatSummaryResponse) GetOk() *StatSummaryResponse_Ok {
	if x, ok := x.GetResponse().(*StatSummaryResponse_Ok_); ok {
		return x.Ok
	}
	return nil
}

func (x *StatSummaryResponse) GetError() *ResourceError {
	if x, ok := x.GetResponse().(*StatSummaryResponse_Error); ok {
		return x.Error
	}
	return nil
}

type isStatSummaryResponse_Response interface {
	isStatSummaryResponse_Response()
}

type StatSummaryResponse_Ok_ struct {
	Ok *StatSummaryResponse_Ok `protobuf:"bytes,1,opt,name=ok,proto3,oneof"`
}

type StatSummaryResponse_Error struct {
	Error *ResourceError `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*StatSummaryResponse_Ok_) isStatSummaryResponse_Response() {}

func (*StatSummaryResponse_Error) isStatSummaryResponse_Response() {}

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

	Resource   *Resource `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"`
	TimeWindow string    `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"`
}

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

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

func (*AuthzRequest) ProtoMessage() {}

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

func (x *AuthzRequest) GetResource() *Resource {
	if x != nil {
		return x.Resource
	}
	return nil
}

func (x *AuthzRequest) GetTimeWindow() string {
	if x != nil {
		return x.TimeWindow
	}
	return ""
}

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

	// Types that are assignable to Response:
	//
	//	*AuthzResponse_Ok_
	//	*AuthzResponse_Error
	Response isAuthzResponse_Response `protobuf_oneof:"response"`
}

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

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

func (*AuthzResponse) ProtoMessage() {}

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

func (m *AuthzResponse) GetResponse() isAuthzResponse_Response {
	if m != nil {
		return m.Response
	}
	return nil
}

func (x *AuthzResponse) GetOk() *AuthzResponse_Ok {
	if x, ok := x.GetResponse().(*AuthzResponse_Ok_); ok {
		return x.Ok
	}
	return nil
}

func (x *AuthzResponse) GetError() *ResourceError {
	if x, ok := x.GetResponse().(*AuthzResponse_Error); ok {
		return x.Error
	}
	return nil
}

type isAuthzResponse_Response interface {
	isAuthzResponse_Response()
}

type AuthzResponse_Ok_ struct {
	Ok *AuthzResponse_Ok `protobuf:"bytes,1,opt,name=ok,proto3,oneof"`
}

type AuthzResponse_Error struct {
	Error *ResourceError `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*AuthzResponse_Ok_) isAuthzResponse_Response() {}

func (*AuthzResponse_Error) isAuthzResponse_Response() {}

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

	SuccessCount       uint64 `protobuf:"varint,1,opt,name=success_count,json=successCount,proto3" json:"success_count,omitempty"`
	FailureCount       uint64 `protobuf:"varint,2,opt,name=failure_count,json=failureCount,proto3" json:"failure_count,omitempty"`
	LatencyMsP50       uint64 `protobuf:"varint,3,opt,name=latency_ms_p50,json=latencyMsP50,proto3" json:"latency_ms_p50,omitempty"`
	LatencyMsP95       uint64 `protobuf:"varint,4,opt,name=latency_ms_p95,json=latencyMsP95,proto3" json:"latency_ms_p95,omitempty"`
	LatencyMsP99       uint64 `protobuf:"varint,5,opt,name=latency_ms_p99,json=latencyMsP99,proto3" json:"latency_ms_p99,omitempty"`
	ActualSuccessCount uint64 `protobuf:"varint,6,opt,name=actual_success_count,json=actualSuccessCount,proto3" json:"actual_success_count,omitempty"`
	ActualFailureCount uint64 `protobuf:"varint,7,opt,name=actual_failure_count,json=actualFailureCount,proto3" json:"actual_failure_count,omitempty"`
}

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

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

func (*BasicStats) ProtoMessage() {}

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

func (x *BasicStats) GetSuccessCount() uint64 {
	if x != nil {
		return x.SuccessCount
	}
	return 0
}

func (x *BasicStats) GetFailureCount() uint64 {
	if x != nil {
		return x.FailureCount
	}
	return 0
}

func (x *BasicStats) GetLatencyMsP50() uint64 {
	if x != nil {
		return x.LatencyMsP50
	}
	return 0
}

func (x *BasicStats) GetLatencyMsP95() uint64 {
	if x != nil {
		return x.LatencyMsP95
	}
	return 0
}

func (x *BasicStats) GetLatencyMsP99() uint64 {
	if x != nil {
		return x.LatencyMsP99
	}
	return 0
}

func (x *BasicStats) GetActualSuccessCount() uint64 {
	if x != nil {
		return x.ActualSuccessCount
	}
	return 0
}

func (x *BasicStats) GetActualFailureCount() uint64 {
	if x != nil {
		return x.ActualFailureCount
	}
	return 0
}

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

	// number of currently open connections
	OpenConnections uint64 `protobuf:"varint,1,opt,name=open_connections,json=openConnections,proto3" json:"open_connections,omitempty"`
	// total count of bytes read from peers
	ReadBytesTotal uint64 `protobuf:"varint,2,opt,name=read_bytes_total,json=readBytesTotal,proto3" json:"read_bytes_total,omitempty"`
	// total count of bytes written to peers
	WriteBytesTotal uint64 `protobuf:"varint,3,opt,name=write_bytes_total,json=writeBytesTotal,proto3" json:"write_bytes_total,omitempty"`
}

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

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

func (*TcpStats) ProtoMessage() {}

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

func (x *TcpStats) GetOpenConnections() uint64 {
	if x != nil {
		return x.OpenConnections
	}
	return 0
}

func (x *TcpStats) GetReadBytesTotal() uint64 {
	if x != nil {
		return x.ReadBytesTotal
	}
	return 0
}

func (x *TcpStats) GetWriteBytesTotal() uint64 {
	if x != nil {
		return x.WriteBytesTotal
	}
	return 0
}

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

	Apex   string `protobuf:"bytes,2,opt,name=apex,proto3" json:"apex,omitempty"`
	Leaf   string `protobuf:"bytes,3,opt,name=leaf,proto3" json:"leaf,omitempty"`
	Weight string `protobuf:"bytes,4,opt,name=weight,proto3" json:"weight,omitempty"`
}

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

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

func (*TrafficSplitStats) ProtoMessage() {}

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

func (x *TrafficSplitStats) GetApex() string {
	if x != nil {
		return x.Apex
	}
	return ""
}

func (x *TrafficSplitStats) GetLeaf() string {
	if x != nil {
		return x.Leaf
	}
	return ""
}

func (x *TrafficSplitStats) GetWeight() string {
	if x != nil {
		return x.Weight
	}
	return ""
}

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

	AllowedCount uint64    `protobuf:"varint,1,opt,name=allowed_count,json=allowedCount,proto3" json:"allowed_count,omitempty"`
	DeniedCount  uint64    `protobuf:"varint,2,opt,name=denied_count,json=deniedCount,proto3" json:"denied_count,omitempty"`
	Srv          *Resource `protobuf:"bytes,3,opt,name=srv,proto3" json:"srv,omitempty"`
	Route        *Resource `protobuf:"bytes,4,opt,name=route,proto3" json:"route,omitempty"`
	Authz        *Resource `protobuf:"bytes,5,opt,name=authz,proto3" json:"authz,omitempty"`
}

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

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

func (*ServerStats) ProtoMessage() {}

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

func (x *ServerStats) GetAllowedCount() uint64 {
	if x != nil {
		return x.AllowedCount
	}
	return 0
}

func (x *ServerStats) GetDeniedCount() uint64 {
	if x != nil {
		return x.DeniedCount
	}
	return 0
}

func (x *ServerStats) GetSrv() *Resource {
	if x != nil {
		return x.Srv
	}
	return nil
}

func (x *ServerStats) GetRoute() *Resource {
	if x != nil {
		return x.Route
	}
	return nil
}

func (x *ServerStats) GetAuthz() *Resource {
	if x != nil {
		return x.Authz
	}
	return nil
}

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

	// Types that are assignable to Table:
	//
	//	*StatTable_PodGroup_
	Table isStatTable_Table `protobuf_oneof:"table"`
}

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

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

func (*StatTable) ProtoMessage() {}

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

func (m *StatTable) GetTable() isStatTable_Table {
	if m != nil {
		return m.Table
	}
	return nil
}

func (x *StatTable) GetPodGroup() *StatTable_PodGroup {
	if x, ok := x.GetTable().(*StatTable_PodGroup_); ok {
		return x.PodGroup
	}
	return nil
}

type isStatTable_Table interface {
	isStatTable_Table()
}

type StatTable_PodGroup_ struct {
	PodGroup *StatTable_PodGroup `protobuf:"bytes,1,opt,name=pod_group,json=podGroup,proto3,oneof"`
}

func (*StatTable_PodGroup_) isStatTable_Table() {}

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

	Selector *ResourceSelection `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"`
}

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

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

func (*EdgesRequest) ProtoMessage() {}

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

func (x *EdgesRequest) GetSelector() *ResourceSelection {
	if x != nil {
		return x.Selector
	}
	return nil
}

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

	// Types that are assignable to Response:
	//
	//	*EdgesResponse_Ok_
	//	*EdgesResponse_Error
	Response isEdgesResponse_Response `protobuf_oneof:"response"`
}

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

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

func (*EdgesResponse) ProtoMessage() {}

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

func (m *EdgesResponse) GetResponse() isEdgesResponse_Response {
	if m != nil {
		return m.Response
	}
	return nil
}

func (x *EdgesResponse) GetOk() *EdgesResponse_Ok {
	if x, ok := x.GetResponse().(*EdgesResponse_Ok_); ok {
		return x.Ok
	}
	return nil
}

func (x *EdgesResponse) GetError() *ResourceError {
	if x, ok := x.GetResponse().(*EdgesResponse_Error); ok {
		return x.Error
	}
	return nil
}

type isEdgesResponse_Response interface {
	isEdgesResponse_Response()
}

type EdgesResponse_Ok_ struct {
	Ok *EdgesResponse_Ok `protobuf:"bytes,1,opt,name=ok,proto3,oneof"`
}

type EdgesResponse_Error struct {
	Error *ResourceError `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*EdgesResponse_Ok_) isEdgesResponse_Response() {}

func (*EdgesResponse_Error) isEdgesResponse_Response() {}

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

	Src           *Resource `protobuf:"bytes,1,opt,name=src,proto3" json:"src,omitempty"`
	Dst           *Resource `protobuf:"bytes,2,opt,name=dst,proto3" json:"dst,omitempty"`
	ClientId      string    `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	ServerId      string    `protobuf:"bytes,4,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
	NoIdentityMsg string    `protobuf:"bytes,5,opt,name=no_identity_msg,json=noIdentityMsg,proto3" json:"no_identity_msg,omitempty"`
}

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

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

func (*Edge) ProtoMessage() {}

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

func (x *Edge) GetSrc() *Resource {
	if x != nil {
		return x.Src
	}
	return nil
}

func (x *Edge) GetDst() *Resource {
	if x != nil {
		return x.Dst
	}
	return nil
}

func (x *Edge) GetClientId() string {
	if x != nil {
		return x.ClientId
	}
	return ""
}

func (x *Edge) GetServerId() string {
	if x != nil {
		return x.ServerId
	}
	return ""
}

func (x *Edge) GetNoIdentityMsg() string {
	if x != nil {
		return x.NoIdentityMsg
	}
	return ""
}

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

	Selector   *ResourceSelection `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"`
	TimeWindow string             `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"`
	// Types that are assignable to Outbound:
	//
	//	*TopRoutesRequest_None
	//	*TopRoutesRequest_ToResource
	Outbound isTopRoutesRequest_Outbound `protobuf_oneof:"outbound"`
}

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

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

func (*TopRoutesRequest) ProtoMessage() {}

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

func (x *TopRoutesRequest) GetSelector() *ResourceSelection {
	if x != nil {
		return x.Selector
	}
	return nil
}

func (x *TopRoutesRequest) GetTimeWindow() string {
	if x != nil {
		return x.TimeWindow
	}
	return ""
}

func (m *TopRoutesRequest) GetOutbound() isTopRoutesRequest_Outbound {
	if m != nil {
		return m.Outbound
	}
	return nil
}

func (x *TopRoutesRequest) GetNone() *Empty {
	if x, ok := x.GetOutbound().(*TopRoutesRequest_None); ok {
		return x.None
	}
	return nil
}

func (x *TopRoutesRequest) GetToResource() *Resource {
	if x, ok := x.GetOutbound().(*TopRoutesRequest_ToResource); ok {
		return x.ToResource
	}
	return nil
}

type isTopRoutesRequest_Outbound interface {
	isTopRoutesRequest_Outbound()
}

type TopRoutesRequest_None struct {
	None *Empty `protobuf:"bytes,3,opt,name=none,proto3,oneof"`
}

type TopRoutesRequest_ToResource struct {
	ToResource *Resource `protobuf:"bytes,7,opt,name=to_resource,json=toResource,proto3,oneof"`
}

func (*TopRoutesRequest_None) isTopRoutesRequest_Outbound() {}

func (*TopRoutesRequest_ToResource) isTopRoutesRequest_Outbound() {}

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

	// Types that are assignable to Response:
	//
	//	*TopRoutesResponse_Error
	//	*TopRoutesResponse_Ok_
	Response isTopRoutesResponse_Response `protobuf_oneof:"response"`
}

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

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

func (*TopRoutesResponse) ProtoMessage() {}

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

func (m *TopRoutesResponse) GetResponse() isTopRoutesResponse_Response {
	if m != nil {
		return m.Response
	}
	return nil
}

func (x *TopRoutesResponse) GetError() *ResourceError {
	if x, ok := x.GetResponse().(*TopRoutesResponse_Error); ok {
		return x.Error
	}
	return nil
}

func (x *TopRoutesResponse) GetOk() *TopRoutesResponse_Ok {
	if x, ok := x.GetResponse().(*TopRoutesResponse_Ok_); ok {
		return x.Ok
	}
	return nil
}

type isTopRoutesResponse_Response interface {
	isTopRoutesResponse_Response()
}

type TopRoutesResponse_Error struct {
	Error *ResourceError `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

type TopRoutesResponse_Ok_ struct {
	Ok *TopRoutesResponse_Ok `protobuf:"bytes,3,opt,name=ok,proto3,oneof"`
}

func (*TopRoutesResponse_Error) isTopRoutesResponse_Response() {}

func (*TopRoutesResponse_Ok_) isTopRoutesResponse_Response() {}

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

	Rows     []*RouteTable_Row `protobuf:"bytes,1,rep,name=rows,proto3" json:"rows,omitempty"`
	Resource string            `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"`
}

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

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

func (*RouteTable) ProtoMessage() {}

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

func (x *RouteTable) GetRows() []*RouteTable_Row {
	if x != nil {
		return x.Rows
	}
	return nil
}

func (x *RouteTable) GetResource() string {
	if x != nil {
		return x.Resource
	}
	return ""
}

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

	Rows []*GatewaysTable_Row `protobuf:"bytes,1,rep,name=rows,proto3" json:"rows,omitempty"`
}

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

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

func (*GatewaysTable) ProtoMessage() {}

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

func (x *GatewaysTable) GetRows() []*GatewaysTable_Row {
	if x != nil {
		return x.Rows
	}
	return nil
}

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

	RemoteClusterName string `protobuf:"bytes,1,opt,name=remote_cluster_name,json=remoteClusterName,proto3" json:"remote_cluster_name,omitempty"`
	GatewayNamespace  string `protobuf:"bytes,2,opt,name=gateway_namespace,json=gatewayNamespace,proto3" json:"gateway_namespace,omitempty"`
	TimeWindow        string `protobuf:"bytes,3,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"`
}

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

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

func (*GatewaysRequest) ProtoMessage() {}

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

func (x *GatewaysRequest) GetRemoteClusterName() string {
	if x != nil {
		return x.RemoteClusterName
	}
	return ""
}

func (x *GatewaysRequest) GetGatewayNamespace() string {
	if x != nil {
		return x.GatewayNamespace
	}
	return ""
}

func (x *GatewaysRequest) GetTimeWindow() string {
	if x != nil {
		return x.TimeWindow
	}
	return ""
}

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

	// Types that are assignable to Response:
	//
	//	*GatewaysResponse_Ok_
	//	*GatewaysResponse_Error
	Response isGatewaysResponse_Response `protobuf_oneof:"response"`
}

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

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

func (*GatewaysResponse) ProtoMessage() {}

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

func (m *GatewaysResponse) GetResponse() isGatewaysResponse_Response {
	if m != nil {
		return m.Response
	}
	return nil
}

func (x *GatewaysResponse) GetOk() *GatewaysResponse_Ok {
	if x, ok := x.GetResponse().(*GatewaysResponse_Ok_); ok {
		return x.Ok
	}
	return nil
}

func (x *GatewaysResponse) GetError() *ResourceError {
	if x, ok := x.GetResponse().(*GatewaysResponse_Error); ok {
		return x.Error
	}
	return nil
}

type isGatewaysResponse_Response interface {
	isGatewaysResponse_Response()
}

type GatewaysResponse_Ok_ struct {
	Ok *GatewaysResponse_Ok `protobuf:"bytes,1,opt,name=ok,proto3,oneof"`
}

type GatewaysResponse_Error struct {
	Error *ResourceError `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*GatewaysResponse_Ok_) isGatewaysResponse_Response() {}

func (*GatewaysResponse_Error) isGatewaysResponse_Response() {}

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

	// The name of a header in a request.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The value of a header in a request. If the value consists entirely of
	// UTF-8 encodings, `value` will be set; otherwise a binary value is
	// assumed and `value_bin` will be set.
	//
	// Types that are assignable to Value:
	//
	//	*Headers_Header_ValueStr
	//	*Headers_Header_ValueBin
	Value isHeaders_Header_Value `protobuf_oneof:"value"`
}

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

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

func (*Headers_Header) ProtoMessage() {}

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

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

func (m *Headers_Header) GetValue() isHeaders_Header_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *Headers_Header) GetValueStr() string {
	if x, ok := x.GetValue().(*Headers_Header_ValueStr); ok {
		return x.ValueStr
	}
	return ""
}

func (x *Headers_Header) GetValueBin() []byte {
	if x, ok := x.GetValue().(*Headers_Header_ValueBin); ok {
		return x.ValueBin
	}
	return nil
}

type isHeaders_Header_Value interface {
	isHeaders_Header_Value()
}

type Headers_Header_ValueStr struct {
	ValueStr string `protobuf:"bytes,2,opt,name=value_str,json=valueStr,proto3,oneof"`
}

type Headers_Header_ValueBin struct {
	ValueBin []byte `protobuf:"bytes,3,opt,name=value_bin,json=valueBin,proto3,oneof"`
}

func (*Headers_Header_ValueStr) isHeaders_Header_Value() {}

func (*Headers_Header_ValueBin) isHeaders_Header_Value() {}

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

	// Types that are assignable to Error:
	//
	//	*PodErrors_PodError_Container
	Error isPodErrors_PodError_Error `protobuf_oneof:"error"`
}

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

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

func (*PodErrors_PodError) ProtoMessage() {}

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

func (m *PodErrors_PodError) GetError() isPodErrors_PodError_Error {
	if m != nil {
		return m.Error
	}
	return nil
}

func (x *PodErrors_PodError) GetContainer() *PodErrors_PodError_ContainerError {
	if x, ok := x.GetError().(*PodErrors_PodError_Container); ok {
		return x.Container
	}
	return nil
}

type isPodErrors_PodError_Error interface {
	isPodErrors_PodError_Error()
}

type PodErrors_PodError_Container struct {
	Container *PodErrors_PodError_ContainerError `protobuf:"bytes,1,opt,name=container,proto3,oneof"`
}

func (*PodErrors_PodError_Container) isPodErrors_PodError_Error() {}

// To report init-container and container failures
type PodErrors_PodError_ContainerError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Message   string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
	Container string `protobuf:"bytes,2,opt,name=container,proto3" json:"container,omitempty"`
	Image     string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"`
	Reason    string `protobuf:"bytes,4,opt,name=reason,proto3" json:"reason,omitempty"`
}

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

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

func (*PodErrors_PodError_ContainerError) ProtoMessage() {}

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

func (x *PodErrors_PodError_ContainerError) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *PodErrors_PodError_ContainerError) GetContainer() string {
	if x != nil {
		return x.Container
	}
	return ""
}

func (x *PodErrors_PodError_ContainerError) GetImage() string {
	if x != nil {
		return x.Image
	}
	return ""
}

func (x *PodErrors_PodError_ContainerError) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

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

	StatTables []*StatTable `protobuf:"bytes,1,rep,name=stat_tables,json=statTables,proto3" json:"stat_tables,omitempty"`
}

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

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

func (*StatSummaryResponse_Ok) ProtoMessage() {}

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

func (x *StatSummaryResponse_Ok) GetStatTables() []*StatTable {
	if x != nil {
		return x.StatTables
	}
	return nil
}

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

	StatTable *StatTable `protobuf:"bytes,1,opt,name=stat_table,json=statTable,proto3" json:"stat_table,omitempty"`
}

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

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

func (*AuthzResponse_Ok) ProtoMessage() {}

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

func (x *AuthzResponse_Ok) GetStatTable() *StatTable {
	if x != nil {
		return x.StatTable
	}
	return nil
}

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

	Rows []*StatTable_PodGroup_Row `protobuf:"bytes,1,rep,name=rows,proto3" json:"rows,omitempty"`
}

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

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

func (*StatTable_PodGroup) ProtoMessage() {}

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

func (x *StatTable_PodGroup) GetRows() []*StatTable_PodGroup_Row {
	if x != nil {
		return x.Rows
	}
	return nil
}

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

	Resource   *Resource `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"`
	TimeWindow string    `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"`
	// pod status on Kubernetes
	Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"`
	// number of pending or running pods in this resource that have linkerd injected
	MeshedPodCount uint64 `protobuf:"varint,3,opt,name=meshed_pod_count,json=meshedPodCount,proto3" json:"meshed_pod_count,omitempty"`
	// number of pending or running pods in this resource
	RunningPodCount uint64 `protobuf:"varint,4,opt,name=running_pod_count,json=runningPodCount,proto3" json:"running_pod_count,omitempty"`
	// number of pods in this resource that have Phase PodFailed
	FailedPodCount uint64             `protobuf:"varint,6,opt,name=failed_pod_count,json=failedPodCount,proto3" json:"failed_pod_count,omitempty"`
	Stats          *BasicStats        `protobuf:"bytes,5,opt,name=stats,proto3" json:"stats,omitempty"`
	TcpStats       *TcpStats          `protobuf:"bytes,8,opt,name=tcp_stats,json=tcpStats,proto3" json:"tcp_stats,omitempty"`
	TsStats        *TrafficSplitStats `protobuf:"bytes,10,opt,name=ts_stats,json=tsStats,proto3" json:"ts_stats,omitempty"`
	SrvStats       *ServerStats       `protobuf:"bytes,11,opt,name=srv_stats,json=srvStats,proto3" json:"srv_stats,omitempty"`
	// Stores a set of errors for each pod name. If a pod has no errors, it may be omitted.
	ErrorsByPod map[string]*PodErrors `protobuf:"bytes,7,rep,name=errors_by_pod,json=errorsByPod,proto3" json:"errors_by_pod,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*StatTable_PodGroup_Row) ProtoMessage() {}

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

func (x *StatTable_PodGroup_Row) GetResource() *Resource {
	if x != nil {
		return x.Resource
	}
	return nil
}

func (x *StatTable_PodGroup_Row) GetTimeWindow() string {
	if x != nil {
		return x.TimeWindow
	}
	return ""
}

func (x *StatTable_PodGroup_Row) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *StatTable_PodGroup_Row) GetMeshedPodCount() uint64 {
	if x != nil {
		return x.MeshedPodCount
	}
	return 0
}

func (x *StatTable_PodGroup_Row) GetRunningPodCount() uint64 {
	if x != nil {
		return x.RunningPodCount
	}
	return 0
}

func (x *StatTable_PodGroup_Row) GetFailedPodCount() uint64 {
	if x != nil {
		return x.FailedPodCount
	}
	return 0
}

func (x *StatTable_PodGroup_Row) GetStats() *BasicStats {
	if x != nil {
		return x.Stats
	}
	return nil
}

func (x *StatTable_PodGroup_Row) GetTcpStats() *TcpStats {
	if x != nil {
		return x.TcpStats
	}
	return nil
}

func (x *StatTable_PodGroup_Row) GetTsStats() *TrafficSplitStats {
	if x != nil {
		return x.TsStats
	}
	return nil
}

func (x *StatTable_PodGroup_Row) GetSrvStats() *ServerStats {
	if x != nil {
		return x.SrvStats
	}
	return nil
}

func (x *StatTable_PodGroup_Row) GetErrorsByPod() map[string]*PodErrors {
	if x != nil {
		return x.ErrorsByPod
	}
	return nil
}

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

	Edges []*Edge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"`
}

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

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

func (*EdgesResponse_Ok) ProtoMessage() {}

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

func (x *EdgesResponse_Ok) GetEdges() []*Edge {
	if x != nil {
		return x.Edges
	}
	return nil
}

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

	Routes []*RouteTable `protobuf:"bytes,1,rep,name=routes,proto3" json:"routes,omitempty"`
}

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

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

func (*TopRoutesResponse_Ok) ProtoMessage() {}

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

func (x *TopRoutesResponse_Ok) GetRoutes() []*RouteTable {
	if x != nil {
		return x.Routes
	}
	return nil
}

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

	Route      string      `protobuf:"bytes,1,opt,name=route,proto3" json:"route,omitempty"`
	TimeWindow string      `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"`
	Authority  string      `protobuf:"bytes,6,opt,name=authority,proto3" json:"authority,omitempty"`
	Stats      *BasicStats `protobuf:"bytes,5,opt,name=stats,proto3" json:"stats,omitempty"`
}

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

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

func (*RouteTable_Row) ProtoMessage() {}

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

func (x *RouteTable_Row) GetRoute() string {
	if x != nil {
		return x.Route
	}
	return ""
}

func (x *RouteTable_Row) GetTimeWindow() string {
	if x != nil {
		return x.TimeWindow
	}
	return ""
}

func (x *RouteTable_Row) GetAuthority() string {
	if x != nil {
		return x.Authority
	}
	return ""
}

func (x *RouteTable_Row) GetStats() *BasicStats {
	if x != nil {
		return x.Stats
	}
	return nil
}

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

	Namespace      string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
	Name           string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	ClusterName    string `protobuf:"bytes,3,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
	PairedServices uint64 `protobuf:"varint,4,opt,name=paired_services,json=pairedServices,proto3" json:"paired_services,omitempty"`
	Alive          bool   `protobuf:"varint,5,opt,name=alive,proto3" json:"alive,omitempty"`
	LatencyMsP50   uint64 `protobuf:"varint,6,opt,name=latency_ms_p50,json=latencyMsP50,proto3" json:"latency_ms_p50,omitempty"`
	LatencyMsP95   uint64 `protobuf:"varint,7,opt,name=latency_ms_p95,json=latencyMsP95,proto3" json:"latency_ms_p95,omitempty"`
	LatencyMsP99   uint64 `protobuf:"varint,8,opt,name=latency_ms_p99,json=latencyMsP99,proto3" json:"latency_ms_p99,omitempty"`
}

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

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

func (*GatewaysTable_Row) ProtoMessage() {}

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

func (x *GatewaysTable_Row) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

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

func (x *GatewaysTable_Row) GetClusterName() string {
	if x != nil {
		return x.ClusterName
	}
	return ""
}

func (x *GatewaysTable_Row) GetPairedServices() uint64 {
	if x != nil {
		return x.PairedServices
	}
	return 0
}

func (x *GatewaysTable_Row) GetAlive() bool {
	if x != nil {
		return x.Alive
	}
	return false
}

func (x *GatewaysTable_Row) GetLatencyMsP50() uint64 {
	if x != nil {
		return x.LatencyMsP50
	}
	return 0
}

func (x *GatewaysTable_Row) GetLatencyMsP95() uint64 {
	if x != nil {
		return x.LatencyMsP95
	}
	return 0
}

func (x *GatewaysTable_Row) GetLatencyMsP99() uint64 {
	if x != nil {
		return x.LatencyMsP99
	}
	return 0
}

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

	GatewaysTable *GatewaysTable `protobuf:"bytes,1,opt,name=gateways_table,json=gatewaysTable,proto3" json:"gateways_table,omitempty"`
}

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

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

func (*GatewaysResponse_Ok) ProtoMessage() {}

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

func (x *GatewaysResponse_Ok) GetGatewaysTable() *GatewaysTable {
	if x != nil {
		return x.GatewaysTable
	}
	return nil
}

var File_viz_proto protoreflect.FileDescriptor

var file_viz_proto_rawDesc = []byte{
	0x0a, 0x09, 0x76, 0x69, 0x7a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x6c, 0x69, 0x6e,
	0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70,
	0x74, 0x79, 0x22, 0xc8, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x75, 0x62, 0x73, 0x79,
	0x73, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x63,
	0x6b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e,
	0x76, 0x69, 0x7a, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
	0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x46, 0x72, 0x69, 0x65, 0x6e,
	0x64, 0x6c, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x6c, 0x79,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x22, 0x12, 0x0a,
	0x10, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x22, 0x48, 0x0a, 0x11, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72,
	0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x33, 0x0a, 0x13, 0x4c,
	0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
	0x22, 0x49, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76,
	0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x6e,
	0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
	0x65, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x3b, 0x0a, 0x07, 0x53,
	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61,
	0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e,
	0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4e, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74,
	0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x73,
	0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
	0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08,
	0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x39, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74,
	0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04,
	0x70, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6c, 0x69, 0x6e,
	0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x50, 0x6f, 0x64, 0x52, 0x04, 0x70,
	0x6f, 0x64, 0x73, 0x22, 0xfa, 0x04, 0x0a, 0x03, 0x50, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x14, 0x0a, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x50, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x70, 0x6f, 0x64, 0x49, 0x50, 0x12, 0x20, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d,
	0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x70,
	0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x69,
	0x63, 0x61, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a,
	0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x16, 0x72, 0x65,
	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x6c, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x15, 0x72, 0x65,
	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x6c, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f,
	0x73, 0x65, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61,
	0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x64, 0x61, 0x65, 0x6d,
	0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09,
	0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x6a, 0x6f, 0x62,
	0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x12, 0x16, 0x0a,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x43, 0x0a, 0x0f, 0x73,
	0x69, 0x6e, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x0f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
	0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4e, 0x61,
	0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61,
	0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f,
	0x78, 0x79, 0x52, 0x65, 0x61, 0x64, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70,
	0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f,
	0x78, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a,
	0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72,
	0x22, 0xf1, 0x01, 0x0a, 0x0a, 0x48, 0x74, 0x74, 0x70, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12,
	0x45, 0x0a, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76,
	0x69, 0x7a, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x2e, 0x52, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69,
	0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0c, 0x75, 0x6e, 0x72, 0x65, 0x67, 0x69,
	0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c,
	0x75, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x22, 0x6e, 0x0a, 0x0a,
	0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45,
	0x54, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x53, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a,
	0x03, 0x50, 0x55, 0x54, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45,
	0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x41, 0x54, 0x43, 0x48, 0x10, 0x04, 0x12, 0x0b, 0x0a,
	0x07, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f,
	0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x45, 0x41, 0x44, 0x10,
	0x07, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, 0x08, 0x42, 0x06, 0x0a, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12,
	0x41, 0x0a, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76,
	0x69, 0x7a, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
	0x65, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
	0x65, 0x64, 0x12, 0x24, 0x0a, 0x0c, 0x75, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
	0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x72, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x22, 0x21, 0x0a, 0x0a, 0x52, 0x65, 0x67, 0x69,
	0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00,
	0x12, 0x09, 0x0a, 0x05, 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12,
	0x36, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e,
	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07,
	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x63, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65,
	0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73,
	0x74, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x53, 0x74, 0x72, 0x12, 0x1d, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x69,
	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x42, 0x69, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x64, 0x0a, 0x03,
	0x45, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52,
	0x0e, 0x67, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12,
	0x2a, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63,
	0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x73,
	0x65, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x65,
	0x6e, 0x64, 0x22, 0x20, 0x0a, 0x08, 0x41, 0x70, 0x69, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x14,
	0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65,
	0x72, 0x72, 0x6f, 0x72, 0x22, 0xa4, 0x02, 0x0a, 0x09, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69,
	0x7a, 0x2e, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2e, 0x50, 0x6f, 0x64, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0xdc, 0x01, 0x0a,
	0x08, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4f, 0x0a, 0x09, 0x63, 0x6f, 0x6e,
	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c,
	0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x50, 0x6f, 0x64, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x73, 0x2e, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43,
	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52,
	0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x1a, 0x76, 0x0a, 0x0e, 0x43, 0x6f,
	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
	0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61,
	0x69, 0x6e, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65,
	0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73,
	0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x50, 0x0a, 0x08, 0x52,
	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
	0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x6e, 0x0a,
	0x11, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e,
	0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f,
	0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
	0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x59, 0x0a,
	0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x32,
	0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e,
	0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xdf, 0x02, 0x0a, 0x12, 0x53, 0x74, 0x61,
	0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x3b, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a,
	0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b,
	0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x29, 0x0a,
	0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69,
	0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
	0x48, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x72,
	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
	0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e,
	0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x6b, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74,
	0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x63, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x63, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x0a,
	0x0a, 0x08, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0xce, 0x01, 0x0a, 0x13, 0x53,
	0x74, 0x61, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x36, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
	0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x53, 0x74,
	0x61, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x2e, 0x4f, 0x6b, 0x48, 0x00, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x72,
	0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b,
	0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a,
	0x3e, 0x0a, 0x02, 0x4f, 0x6b, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x74, 0x61,
	0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x69, 0x6e,
	0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61,
	0x62, 0x6c, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x42,
	0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x0a, 0x0c, 0x41,
	0x75, 0x74, 0x68, 0x7a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x72,
	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
	0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12,
	0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77,
	0x22, 0xc0, 0x01, 0x0a, 0x0d, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x30, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
	0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x41, 0x75,
	0x74, 0x68, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x6b, 0x48, 0x00,
	0x52, 0x02, 0x6f, 0x6b, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76,
	0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x3c, 0x0a, 0x02, 0x4f, 0x6b, 0x12,
	0x36, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76,
	0x69, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x73, 0x74,
	0x61, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x0a, 0x42, 0x61, 0x73, 0x69, 0x63, 0x53, 0x74, 0x61,
	0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65,
	0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75,
	0x72, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c,
	0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e,
	0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x5f, 0x70, 0x35, 0x30, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50,
	0x35, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73,
	0x5f, 0x70, 0x39, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65,
	0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50, 0x39, 0x35, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65,
	0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50, 0x39, 0x39, 0x12, 0x30,
	0x0a, 0x14, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x61, 0x63,
	0x74, 0x75, 0x61, 0x6c, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x30, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75,
	0x72, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12,
	0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x22, 0x8b, 0x01, 0x0a, 0x08, 0x54, 0x63, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
	0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x43,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65,
	0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x54,
	0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79,
	0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c,
	0x22, 0x53, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x70, 0x6c, 0x69, 0x74,
	0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x70, 0x65, 0x78, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x70, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x65, 0x61,
	0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x12, 0x16, 0x0a,
	0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xdb, 0x01, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
	0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x61, 0x6c,
	0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65,
	0x6e, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x0b, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a,
	0x03, 0x73, 0x72, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e,
	0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x52, 0x03, 0x73, 0x72, 0x76, 0x12, 0x2c, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64,
	0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x05,
	0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e,
	0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x05, 0x61, 0x75,
	0x74, 0x68, 0x7a, 0x22, 0x9e, 0x06, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x62, 0x6c,
	0x65, 0x12, 0x3f, 0x0a, 0x09, 0x70, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e,
	0x76, 0x69, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x6f,
	0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x64, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x1a, 0xc6, 0x05, 0x0a, 0x08, 0x50, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
	0x38, 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
	0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x53, 0x74, 0x61,
	0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e,
	0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x1a, 0xff, 0x04, 0x0a, 0x03, 0x52, 0x6f,
	0x77, 0x12, 0x32, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76,
	0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x69,
	0x6e, 0x64, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65,
	0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28,
	0x0a, 0x10, 0x6d, 0x65, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x68, 0x65, 0x64,
	0x50, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x75, 0x6e, 0x6e,
	0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x0f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x64, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x70,
	0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e,
	0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e,
	0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
	0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x42, 0x61, 0x73,
	0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x33,
	0x0a, 0x09, 0x74, 0x63, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a,
	0x2e, 0x54, 0x63, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x08, 0x74, 0x63, 0x70, 0x53, 0x74,
	0x61, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x08, 0x74, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32,
	0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x70, 0x6c, 0x69,
	0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x07, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
	0x36, 0x0a, 0x09, 0x73, 0x72, 0x76, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69,
	0x7a, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x08, 0x73,
	0x72, 0x76, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x59, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72,
	0x73, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35,
	0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x53, 0x74,
	0x61, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70,
	0x2e, 0x52, 0x6f, 0x77, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x64,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x42, 0x79, 0x50,
	0x6f, 0x64, 0x1a, 0x57, 0x0a, 0x10, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x42, 0x79, 0x50, 0x6f,
	0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72,
	0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x74,
	0x61, 0x62, 0x6c, 0x65, 0x22, 0x4b, 0x0a, 0x0c, 0x45, 0x64, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64,
	0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65,
	0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
	0x72, 0x22, 0xb2, 0x01, 0x0a, 0x0d, 0x45, 0x64, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x45,
	0x64, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x6b, 0x48,
	0x00, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e,
	0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x2e, 0x0a, 0x02, 0x4f, 0x6b,
	0x12, 0x28, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x12, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x45,
	0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x04, 0x45, 0x64, 0x67, 0x65, 0x12,
	0x28, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c,
	0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x52, 0x03, 0x73, 0x72, 0x63, 0x12, 0x28, 0x0a, 0x03, 0x64, 0x73, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64,
	0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x03,
	0x64, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64,
	0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a,
	0x0f, 0x6e, 0x6f, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x73, 0x67,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
	0x74, 0x79, 0x4d, 0x73, 0x67, 0x22, 0xe2, 0x01, 0x0a, 0x10, 0x54, 0x6f, 0x70, 0x52, 0x6f, 0x75,
	0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65,
	0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c,
	0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73,
	0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f,
	0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69,
	0x6d, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x29, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64,
	0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x04, 0x6e,
	0x6f, 0x6e, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65,
	0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x48, 0x00, 0x52, 0x0a, 0x74, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0a,
	0x0a, 0x08, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x11, 0x54,
	0x6f, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x33, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52,
	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05,
	0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x34, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a,
	0x2e, 0x54, 0x6f, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x2e, 0x4f, 0x6b, 0x48, 0x00, 0x52, 0x02, 0x6f, 0x6b, 0x1a, 0x36, 0x0a, 0x02, 0x4f,
	0x6b, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a,
	0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75,
	0x74, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0xe7, 0x01, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x30,
	0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c,
	0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x6f, 0x75, 0x74,
	0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73,
	0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x8a, 0x01, 0x0a,
	0x03, 0x52, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69,
	0x6d, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0a, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x61,
	0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x73, 0x74, 0x61,
	0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65,
	0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x53, 0x74, 0x61,
	0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0xd2, 0x02, 0x0a, 0x0d, 0x47, 0x61,
	0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x72,
	0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b,
	0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
	0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73,
	0x1a, 0x8b, 0x02, 0x0a, 0x03, 0x52, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
	0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a,
	0x0f, 0x70, 0x61, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x61, 0x69, 0x72, 0x65, 0x64, 0x53, 0x65,
	0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x24, 0x0a, 0x0e,
	0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x5f, 0x70, 0x35, 0x30, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50,
	0x35, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73,
	0x5f, 0x70, 0x39, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65,
	0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50, 0x39, 0x35, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65,
	0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50, 0x39, 0x39, 0x22, 0x8f,
	0x01, 0x0a, 0x0f, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6e, 0x61,
	0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67,
	0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
	0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77,
	0x22, 0xd2, 0x01, 0x0a, 0x10, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a,
	0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x2e, 0x4f, 0x6b, 0x48, 0x00, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x72,
	0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b,
	0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a,
	0x48, 0x0a, 0x02, 0x4f, 0x6b, 0x12, 0x42, 0x0a, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
	0x73, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
	0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x47, 0x61, 0x74,
	0x65, 0x77, 0x61, 0x79, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0d, 0x67, 0x61, 0x74, 0x65,
	0x77, 0x61, 0x79, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x2a, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
	0x46, 0x41, 0x49, 0x4c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
	0x02, 0x32, 0xf6, 0x04, 0x0a, 0x03, 0x41, 0x70, 0x69, 0x12, 0x54, 0x0a, 0x0b, 0x53, 0x74, 0x61,
	0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x20, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65,
	0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x53, 0x75, 0x6d, 0x6d,
	0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x69, 0x6e,
	0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x53, 0x75,
	0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
	0x42, 0x0a, 0x05, 0x45, 0x64, 0x67, 0x65, 0x73, 0x12, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65,
	0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e,
	0x76, 0x69, 0x7a, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x08, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12,
	0x1d, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x47,
	0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e,
	0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x47, 0x61,
	0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
	0x12, 0x4e, 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x2e,
	0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x54, 0x6f, 0x70,
	0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e,
	0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x54, 0x6f, 0x70,
	0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
	0x12, 0x4b, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x1d, 0x2e, 0x6c,
	0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74,
	0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6c, 0x69,
	0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50,
	0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a,
	0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x21, 0x2e,
	0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x4c, 0x69, 0x73,
	0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e,
	0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x09, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x68,
	0x65, 0x63, 0x6b, 0x12, 0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76,
	0x69, 0x7a, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76,
	0x69, 0x7a, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x05, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x12,
	0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x41,
	0x75, 0x74, 0x68, 0x7a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6c, 0x69,
	0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x76, 0x69, 0x7a, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x7a,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x69,
	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64,
	0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2f, 0x76, 0x69, 0x7a, 0x2f, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x76, 0x69,
	0x7a, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_viz_proto_rawDescOnce sync.Once
	file_viz_proto_rawDescData = file_viz_proto_rawDesc
)

func file_viz_proto_rawDescGZIP() []byte {
	file_viz_proto_rawDescOnce.Do(func() {
		file_viz_proto_rawDescData = protoimpl.X.CompressGZIP(file_viz_proto_rawDescData)
	})
	return file_viz_proto_rawDescData
}

var file_viz_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_viz_proto_msgTypes = make([]protoimpl.MessageInfo, 50)
var file_viz_proto_goTypes = []any{
	(CheckStatus)(0),                          // 0: linkerd2.viz.CheckStatus
	(HttpMethod_Registered)(0),                // 1: linkerd2.viz.HttpMethod.Registered
	(Scheme_Registered)(0),                    // 2: linkerd2.viz.Scheme.Registered
	(*Empty)(nil),                             // 3: linkerd2.viz.Empty
	(*CheckResult)(nil),                       // 4: linkerd2.viz.CheckResult
	(*SelfCheckRequest)(nil),                  // 5: linkerd2.viz.SelfCheckRequest
	(*SelfCheckResponse)(nil),                 // 6: linkerd2.viz.SelfCheckResponse
	(*ListServicesRequest)(nil),               // 7: linkerd2.viz.ListServicesRequest
	(*ListServicesResponse)(nil),              // 8: linkerd2.viz.ListServicesResponse
	(*Service)(nil),                           // 9: linkerd2.viz.Service
	(*ListPodsRequest)(nil),                   // 10: linkerd2.viz.ListPodsRequest
	(*ListPodsResponse)(nil),                  // 11: linkerd2.viz.ListPodsResponse
	(*Pod)(nil),                               // 12: linkerd2.viz.Pod
	(*HttpMethod)(nil),                        // 13: linkerd2.viz.HttpMethod
	(*Scheme)(nil),                            // 14: linkerd2.viz.Scheme
	(*Headers)(nil),                           // 15: linkerd2.viz.Headers
	(*Eos)(nil),                               // 16: linkerd2.viz.Eos
	(*ApiError)(nil),                          // 17: linkerd2.viz.ApiError
	(*PodErrors)(nil),                         // 18: linkerd2.viz.PodErrors
	(*Resource)(nil),                          // 19: linkerd2.viz.Resource
	(*ResourceSelection)(nil),                 // 20: linkerd2.viz.ResourceSelection
	(*ResourceError)(nil),                     // 21: linkerd2.viz.ResourceError
	(*StatSummaryRequest)(nil),                // 22: linkerd2.viz.StatSummaryRequest
	(*StatSummaryResponse)(nil),               // 23: linkerd2.viz.StatSummaryResponse
	(*AuthzRequest)(nil),                      // 24: linkerd2.viz.AuthzRequest
	(*AuthzResponse)(nil),                     // 25: linkerd2.viz.AuthzResponse
	(*BasicStats)(nil),                        // 26: linkerd2.viz.BasicStats
	(*TcpStats)(nil),                          // 27: linkerd2.viz.TcpStats
	(*TrafficSplitStats)(nil),                 // 28: linkerd2.viz.TrafficSplitStats
	(*ServerStats)(nil),                       // 29: linkerd2.viz.ServerStats
	(*StatTable)(nil),                         // 30: linkerd2.viz.StatTable
	(*EdgesRequest)(nil),                      // 31: linkerd2.viz.EdgesRequest
	(*EdgesResponse)(nil),                     // 32: linkerd2.viz.EdgesResponse
	(*Edge)(nil),                              // 33: linkerd2.viz.Edge
	(*TopRoutesRequest)(nil),                  // 34: linkerd2.viz.TopRoutesRequest
	(*TopRoutesResponse)(nil),                 // 35: linkerd2.viz.TopRoutesResponse
	(*RouteTable)(nil),                        // 36: linkerd2.viz.RouteTable
	(*GatewaysTable)(nil),                     // 37: linkerd2.viz.GatewaysTable
	(*GatewaysRequest)(nil),                   // 38: linkerd2.viz.GatewaysRequest
	(*GatewaysResponse)(nil),                  // 39: linkerd2.viz.GatewaysResponse
	(*Headers_Header)(nil),                    // 40: linkerd2.viz.Headers.Header
	(*PodErrors_PodError)(nil),                // 41: linkerd2.viz.PodErrors.PodError
	(*PodErrors_PodError_ContainerError)(nil), // 42: linkerd2.viz.PodErrors.PodError.ContainerError
	(*StatSummaryResponse_Ok)(nil),            // 43: linkerd2.viz.StatSummaryResponse.Ok
	(*AuthzResponse_Ok)(nil),                  // 44: linkerd2.viz.AuthzResponse.Ok
	(*StatTable_PodGroup)(nil),                // 45: linkerd2.viz.StatTable.PodGroup
	(*StatTable_PodGroup_Row)(nil),            // 46: linkerd2.viz.StatTable.PodGroup.Row
	nil,                                       // 47: linkerd2.viz.StatTable.PodGroup.Row.ErrorsByPodEntry
	(*EdgesResponse_Ok)(nil),                  // 48: linkerd2.viz.EdgesResponse.Ok
	(*TopRoutesResponse_Ok)(nil),              // 49: linkerd2.viz.TopRoutesResponse.Ok
	(*RouteTable_Row)(nil),                    // 50: linkerd2.viz.RouteTable.Row
	(*GatewaysTable_Row)(nil),                 // 51: linkerd2.viz.GatewaysTable.Row
	(*GatewaysResponse_Ok)(nil),               // 52: linkerd2.viz.GatewaysResponse.Ok
	(*duration.Duration)(nil),                 // 53: google.protobuf.Duration
}
var file_viz_proto_depIdxs = []int32{
	0,  // 0: linkerd2.viz.CheckResult.Status:type_name -> linkerd2.viz.CheckStatus
	4,  // 1: linkerd2.viz.SelfCheckResponse.results:type_name -> linkerd2.viz.CheckResult
	9,  // 2: linkerd2.viz.ListServicesResponse.services:type_name -> linkerd2.viz.Service
	20, // 3: linkerd2.viz.ListPodsRequest.selector:type_name -> linkerd2.viz.ResourceSelection
	12, // 4: linkerd2.viz.ListPodsResponse.pods:type_name -> linkerd2.viz.Pod
	53, // 5: linkerd2.viz.Pod.sinceLastReport:type_name -> google.protobuf.Duration
	53, // 6: linkerd2.viz.Pod.uptime:type_name -> google.protobuf.Duration
	1,  // 7: linkerd2.viz.HttpMethod.registered:type_name -> linkerd2.viz.HttpMethod.Registered
	2,  // 8: linkerd2.viz.Scheme.registered:type_name -> linkerd2.viz.Scheme.Registered
	40, // 9: linkerd2.viz.Headers.headers:type_name -> linkerd2.viz.Headers.Header
	41, // 10: linkerd2.viz.PodErrors.errors:type_name -> linkerd2.viz.PodErrors.PodError
	19, // 11: linkerd2.viz.ResourceSelection.resource:type_name -> linkerd2.viz.Resource
	19, // 12: linkerd2.viz.ResourceError.resource:type_name -> linkerd2.viz.Resource
	20, // 13: linkerd2.viz.StatSummaryRequest.selector:type_name -> linkerd2.viz.ResourceSelection
	3,  // 14: linkerd2.viz.StatSummaryRequest.none:type_name -> linkerd2.viz.Empty
	19, // 15: linkerd2.viz.StatSummaryRequest.to_resource:type_name -> linkerd2.viz.Resource
	19, // 16: linkerd2.viz.StatSummaryRequest.from_resource:type_name -> linkerd2.viz.Resource
	43, // 17: linkerd2.viz.StatSummaryResponse.ok:type_name -> linkerd2.viz.StatSummaryResponse.Ok
	21, // 18: linkerd2.viz.StatSummaryResponse.error:type_name -> linkerd2.viz.ResourceError
	19, // 19: linkerd2.viz.AuthzRequest.resource:type_name -> linkerd2.viz.Resource
	44, // 20: linkerd2.viz.AuthzResponse.ok:type_name -> linkerd2.viz.AuthzResponse.Ok
	21, // 21: linkerd2.viz.AuthzResponse.error:type_name -> linkerd2.viz.ResourceError
	19, // 22: linkerd2.viz.ServerStats.srv:type_name -> linkerd2.viz.Resource
	19, // 23: linkerd2.viz.ServerStats.route:type_name -> linkerd2.viz.Resource
	19, // 24: linkerd2.viz.ServerStats.authz:type_name -> linkerd2.viz.Resource
	45, // 25: linkerd2.viz.StatTable.pod_group:type_name -> linkerd2.viz.StatTable.PodGroup
	20, // 26: linkerd2.viz.EdgesRequest.selector:type_name -> linkerd2.viz.ResourceSelection
	48, // 27: linkerd2.viz.EdgesResponse.ok:type_name -> linkerd2.viz.EdgesResponse.Ok
	21, // 28: linkerd2.viz.EdgesResponse.error:type_name -> linkerd2.viz.ResourceError
	19, // 29: linkerd2.viz.Edge.src:type_name -> linkerd2.viz.Resource
	19, // 30: linkerd2.viz.Edge.dst:type_name -> linkerd2.viz.Resource
	20, // 31: linkerd2.viz.TopRoutesRequest.selector:type_name -> linkerd2.viz.ResourceSelection
	3,  // 32: linkerd2.viz.TopRoutesRequest.none:type_name -> linkerd2.viz.Empty
	19, // 33: linkerd2.viz.TopRoutesRequest.to_resource:type_name -> linkerd2.viz.Resource
	21, // 34: linkerd2.viz.TopRoutesResponse.error:type_name -> linkerd2.viz.ResourceError
	49, // 35: linkerd2.viz.TopRoutesResponse.ok:type_name -> linkerd2.viz.TopRoutesResponse.Ok
	50, // 36: linkerd2.viz.RouteTable.rows:type_name -> linkerd2.viz.RouteTable.Row
	51, // 37: linkerd2.viz.GatewaysTable.rows:type_name -> linkerd2.viz.GatewaysTable.Row
	52, // 38: linkerd2.viz.GatewaysResponse.ok:type_name -> linkerd2.viz.GatewaysResponse.Ok
	21, // 39: linkerd2.viz.GatewaysResponse.error:type_name -> linkerd2.viz.ResourceError
	42, // 40: linkerd2.viz.PodErrors.PodError.container:type_name -> linkerd2.viz.PodErrors.PodError.ContainerError
	30, // 41: linkerd2.viz.StatSummaryResponse.Ok.stat_tables:type_name -> linkerd2.viz.StatTable
	30, // 42: linkerd2.viz.AuthzResponse.Ok.stat_table:type_name -> linkerd2.viz.StatTable
	46, // 43: linkerd2.viz.StatTable.PodGroup.rows:type_name -> linkerd2.viz.StatTable.PodGroup.Row
	19, // 44: linkerd2.viz.StatTable.PodGroup.Row.resource:type_name -> linkerd2.viz.Resource
	26, // 45: linkerd2.viz.StatTable.PodGroup.Row.stats:type_name -> linkerd2.viz.BasicStats
	27, // 46: linkerd2.viz.StatTable.PodGroup.Row.tcp_stats:type_name -> linkerd2.viz.TcpStats
	28, // 47: linkerd2.viz.StatTable.PodGroup.Row.ts_stats:type_name -> linkerd2.viz.TrafficSplitStats
	29, // 48: linkerd2.viz.StatTable.PodGroup.Row.srv_stats:type_name -> linkerd2.viz.ServerStats
	47, // 49: linkerd2.viz.StatTable.PodGroup.Row.errors_by_pod:type_name -> linkerd2.viz.StatTable.PodGroup.Row.ErrorsByPodEntry
	18, // 50: linkerd2.viz.StatTable.PodGroup.Row.ErrorsByPodEntry.value:type_name -> linkerd2.viz.PodErrors
	33, // 51: linkerd2.viz.EdgesResponse.Ok.edges:type_name -> linkerd2.viz.Edge
	36, // 52: linkerd2.viz.TopRoutesResponse.Ok.routes:type_name -> linkerd2.viz.RouteTable
	26, // 53: linkerd2.viz.RouteTable.Row.stats:type_name -> linkerd2.viz.BasicStats
	37, // 54: linkerd2.viz.GatewaysResponse.Ok.gateways_table:type_name -> linkerd2.viz.GatewaysTable
	22, // 55: linkerd2.viz.Api.StatSummary:input_type -> linkerd2.viz.StatSummaryRequest
	31, // 56: linkerd2.viz.Api.Edges:input_type -> linkerd2.viz.EdgesRequest
	38, // 57: linkerd2.viz.Api.Gateways:input_type -> linkerd2.viz.GatewaysRequest
	34, // 58: linkerd2.viz.Api.TopRoutes:input_type -> linkerd2.viz.TopRoutesRequest
	10, // 59: linkerd2.viz.Api.ListPods:input_type -> linkerd2.viz.ListPodsRequest
	7,  // 60: linkerd2.viz.Api.ListServices:input_type -> linkerd2.viz.ListServicesRequest
	5,  // 61: linkerd2.viz.Api.SelfCheck:input_type -> linkerd2.viz.SelfCheckRequest
	24, // 62: linkerd2.viz.Api.Authz:input_type -> linkerd2.viz.AuthzRequest
	23, // 63: linkerd2.viz.Api.StatSummary:output_type -> linkerd2.viz.StatSummaryResponse
	32, // 64: linkerd2.viz.Api.Edges:output_type -> linkerd2.viz.EdgesResponse
	39, // 65: linkerd2.viz.Api.Gateways:output_type -> linkerd2.viz.GatewaysResponse
	35, // 66: linkerd2.viz.Api.TopRoutes:output_type -> linkerd2.viz.TopRoutesResponse
	11, // 67: linkerd2.viz.Api.ListPods:output_type -> linkerd2.viz.ListPodsResponse
	8,  // 68: linkerd2.viz.Api.ListServices:output_type -> linkerd2.viz.ListServicesResponse
	6,  // 69: linkerd2.viz.Api.SelfCheck:output_type -> linkerd2.viz.SelfCheckResponse
	25, // 70: linkerd2.viz.Api.Authz:output_type -> linkerd2.viz.AuthzResponse
	63, // [63:71] is the sub-list for method output_type
	55, // [55:63] is the sub-list for method input_type
	55, // [55:55] is the sub-list for extension type_name
	55, // [55:55] is the sub-list for extension extendee
	0,  // [0:55] is the sub-list for field type_name
}

func init() { file_viz_proto_init() }
func file_viz_proto_init() {
	if File_viz_proto != nil {
		return
	}
	file_viz_proto_msgTypes[9].OneofWrappers = []any{
		(*Pod_Deployment)(nil),
		(*Pod_ReplicaSet)(nil),
		(*Pod_ReplicationController)(nil),
		(*Pod_StatefulSet)(nil),
		(*Pod_DaemonSet)(nil),
		(*Pod_Job)(nil),
	}
	file_viz_proto_msgTypes[10].OneofWrappers = []any{
		(*HttpMethod_Registered_)(nil),
		(*HttpMethod_Unregistered)(nil),
	}
	file_viz_proto_msgTypes[11].OneofWrappers = []any{
		(*Scheme_Registered_)(nil),
		(*Scheme_Unregistered)(nil),
	}
	file_viz_proto_msgTypes[13].OneofWrappers = []any{
		(*Eos_GrpcStatusCode)(nil),
		(*Eos_ResetErrorCode)(nil),
	}
	file_viz_proto_msgTypes[19].OneofWrappers = []any{
		(*StatSummaryRequest_None)(nil),
		(*StatSummaryRequest_ToResource)(nil),
		(*StatSummaryRequest_FromResource)(nil),
	}
	file_viz_proto_msgTypes[20].OneofWrappers = []any{
		(*StatSummaryResponse_Ok_)(nil),
		(*StatSummaryResponse_Error)(nil),
	}
	file_viz_proto_msgTypes[22].OneofWrappers = []any{
		(*AuthzResponse_Ok_)(nil),
		(*AuthzResponse_Error)(nil),
	}
	file_viz_proto_msgTypes[27].OneofWrappers = []any{
		(*StatTable_PodGroup_)(nil),
	}
	file_viz_proto_msgTypes[29].OneofWrappers = []any{
		(*EdgesResponse_Ok_)(nil),
		(*EdgesResponse_Error)(nil),
	}
	file_viz_proto_msgTypes[31].OneofWrappers = []any{
		(*TopRoutesRequest_None)(nil),
		(*TopRoutesRequest_ToResource)(nil),
	}
	file_viz_proto_msgTypes[32].OneofWrappers = []any{
		(*TopRoutesResponse_Error)(nil),
		(*TopRoutesResponse_Ok_)(nil),
	}
	file_viz_proto_msgTypes[36].OneofWrappers = []any{
		(*GatewaysResponse_Ok_)(nil),
		(*GatewaysResponse_Error)(nil),
	}
	file_viz_proto_msgTypes[37].OneofWrappers = []any{
		(*Headers_Header_ValueStr)(nil),
		(*Headers_Header_ValueBin)(nil),
	}
	file_viz_proto_msgTypes[38].OneofWrappers = []any{
		(*PodErrors_PodError_Container)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_viz_proto_rawDesc,
			NumEnums:      3,
			NumMessages:   50,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_viz_proto_goTypes,
		DependencyIndexes: file_viz_proto_depIdxs,
		EnumInfos:         file_viz_proto_enumTypes,
		MessageInfos:      file_viz_proto_msgTypes,
	}.Build()
	File_viz_proto = out.File
	file_viz_proto_rawDesc = nil
	file_viz_proto_goTypes = nil
	file_viz_proto_depIdxs = nil
}
