//
//Сервис предоставляет возможность управлять шаблонами приборов телеметрии

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.30.0
// 	protoc        v4.23.1
// source: keyapis/telemetry_control/v1/keyapis_telemetry_control_template_v1.proto

package keyapis_telemetry_control_v1

import (
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
	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 TemplateDevicePaging_OrderByType int32

const (
	// Значение не указано
	TemplateDevicePaging_ORDER_BY_TYPE_UNKNOWN TemplateDevicePaging_OrderByType = 0
	// По идентификатору
	TemplateDevicePaging_ID TemplateDevicePaging_OrderByType = 1
	// По типу энергоресурса
	TemplateDevicePaging_METRIC_TYPE TemplateDevicePaging_OrderByType = 2
	// По модели счетчика
	TemplateDevicePaging_MODEL TemplateDevicePaging_OrderByType = 3
)

// Enum value maps for TemplateDevicePaging_OrderByType.
var (
	TemplateDevicePaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "ID",
		2: "METRIC_TYPE",
		3: "MODEL",
	}
	TemplateDevicePaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"ID":                    1,
		"METRIC_TYPE":           2,
		"MODEL":                 3,
	}
)

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

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

func (TemplateDevicePaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[0].Descriptor()
}

func (TemplateDevicePaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[0]
}

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

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

// Справочник типов направлений сортировки
type TemplateDevicePaging_DirectionType int32

const (
	// Значение не указано
	TemplateDevicePaging_DIRECTION_TYPE_UNKNOWN TemplateDevicePaging_DirectionType = 0
	// От большего к меньшему
	TemplateDevicePaging_DESC TemplateDevicePaging_DirectionType = 1
	// От меньшего к большему
	TemplateDevicePaging_ASC TemplateDevicePaging_DirectionType = 2
)

// Enum value maps for TemplateDevicePaging_DirectionType.
var (
	TemplateDevicePaging_DirectionType_name = map[int32]string{
		0: "DIRECTION_TYPE_UNKNOWN",
		1: "DESC",
		2: "ASC",
	}
	TemplateDevicePaging_DirectionType_value = map[string]int32{
		"DIRECTION_TYPE_UNKNOWN": 0,
		"DESC":                   1,
		"ASC":                    2,
	}
)

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

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

func (TemplateDevicePaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[1].Descriptor()
}

func (TemplateDevicePaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[1]
}

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

// Deprecated: Use TemplateDevicePaging_DirectionType.Descriptor instead.
func (TemplateDevicePaging_DirectionType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{7, 1}
}

// Справочние типов энергоресурсов
type TemplateDevice_MetricType int32

const (
	// Значение не указано
	TemplateDevice_METRIC_TYPE_UNKNOWN TemplateDevice_MetricType = 0
	// Горячая вода
	TemplateDevice_HOT_WATER TemplateDevice_MetricType = 1
	// Холодная вода
	TemplateDevice_COLD_WATER TemplateDevice_MetricType = 2
	// Теплоэнергия
	TemplateDevice_HEAT TemplateDevice_MetricType = 3
	// Газ
	TemplateDevice_GAS TemplateDevice_MetricType = 4
	// Электроэнергия
	TemplateDevice_ELECTRICITY TemplateDevice_MetricType = 5
)

// Enum value maps for TemplateDevice_MetricType.
var (
	TemplateDevice_MetricType_name = map[int32]string{
		0: "METRIC_TYPE_UNKNOWN",
		1: "HOT_WATER",
		2: "COLD_WATER",
		3: "HEAT",
		4: "GAS",
		5: "ELECTRICITY",
	}
	TemplateDevice_MetricType_value = map[string]int32{
		"METRIC_TYPE_UNKNOWN": 0,
		"HOT_WATER":           1,
		"COLD_WATER":          2,
		"HEAT":                3,
		"GAS":                 4,
		"ELECTRICITY":         5,
	}
)

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

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

func (TemplateDevice_MetricType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[2].Descriptor()
}

func (TemplateDevice_MetricType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[2]
}

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

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

// Тип тарифного плана
type TemplateDevice_PlanType int32

const (
	// Значение не указано
	TemplateDevice_PLAN_TYPE_UNKNOWN TemplateDevice_PlanType = 0
	// Однотарифный
	TemplateDevice_SINGLE TemplateDevice_PlanType = 1
	// Двухтарифный
	TemplateDevice_DOUBLE TemplateDevice_PlanType = 2
	// Трёхтарифный
	TemplateDevice_TRIPLE TemplateDevice_PlanType = 3
)

// Enum value maps for TemplateDevice_PlanType.
var (
	TemplateDevice_PlanType_name = map[int32]string{
		0: "PLAN_TYPE_UNKNOWN",
		1: "SINGLE",
		2: "DOUBLE",
		3: "TRIPLE",
	}
	TemplateDevice_PlanType_value = map[string]int32{
		"PLAN_TYPE_UNKNOWN": 0,
		"SINGLE":            1,
		"DOUBLE":            2,
		"TRIPLE":            3,
	}
)

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

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

func (TemplateDevice_PlanType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[3].Descriptor()
}

func (TemplateDevice_PlanType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[3]
}

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

// Deprecated: Use TemplateDevice_PlanType.Descriptor instead.
func (TemplateDevice_PlanType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{12, 1}
}

// Справочник типов значений сортировки
type TemplateIndicatorPaging_OrderByType int32

const (
	// Значение не указано
	TemplateIndicatorPaging_ORDER_BY_TYPE_UNKNOWN TemplateIndicatorPaging_OrderByType = 0
	// По идентификатору
	TemplateIndicatorPaging_ID TemplateIndicatorPaging_OrderByType = 1
	// По типу измерений
	TemplateIndicatorPaging_SIGN_TYPE TemplateIndicatorPaging_OrderByType = 2
	// По типу архивности показаний
	TemplateIndicatorPaging_ARCHIVE_TYPE TemplateIndicatorPaging_OrderByType = 3
)

// Enum value maps for TemplateIndicatorPaging_OrderByType.
var (
	TemplateIndicatorPaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "ID",
		2: "SIGN_TYPE",
		3: "ARCHIVE_TYPE",
	}
	TemplateIndicatorPaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"ID":                    1,
		"SIGN_TYPE":             2,
		"ARCHIVE_TYPE":          3,
	}
)

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

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

func (TemplateIndicatorPaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[4].Descriptor()
}

func (TemplateIndicatorPaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[4]
}

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

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

// Справочник типов направлений сортировки
type TemplateIndicatorPaging_DirectionType int32

const (
	// Значение не указано
	TemplateIndicatorPaging_DIRECTION_TYPE_UNKNOWN TemplateIndicatorPaging_DirectionType = 0
	// От большего к меньшему
	TemplateIndicatorPaging_DESC TemplateIndicatorPaging_DirectionType = 1
	// От меньшего к большему
	TemplateIndicatorPaging_ASC TemplateIndicatorPaging_DirectionType = 2
)

// Enum value maps for TemplateIndicatorPaging_DirectionType.
var (
	TemplateIndicatorPaging_DirectionType_name = map[int32]string{
		0: "DIRECTION_TYPE_UNKNOWN",
		1: "DESC",
		2: "ASC",
	}
	TemplateIndicatorPaging_DirectionType_value = map[string]int32{
		"DIRECTION_TYPE_UNKNOWN": 0,
		"DESC":                   1,
		"ASC":                    2,
	}
)

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

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

func (TemplateIndicatorPaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[5].Descriptor()
}

func (TemplateIndicatorPaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[5]
}

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

// Deprecated: Use TemplateIndicatorPaging_DirectionType.Descriptor instead.
func (TemplateIndicatorPaging_DirectionType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{16, 1}
}

// Посредники получения показаний
type TemplateIndicator_VendorType int32

const (
	// Значение не указано
	TemplateIndicator_VENDOR_TYPE_UNKNOWN TemplateIndicator_VendorType = 0
	// Энвайро
	TemplateIndicator_ENVIRO TemplateIndicator_VendorType = 1
	// Лартех
	TemplateIndicator_LARTECH TemplateIndicator_VendorType = 2
	// РТК
	TemplateIndicator_RTK TemplateIndicator_VendorType = 3
)

// Enum value maps for TemplateIndicator_VendorType.
var (
	TemplateIndicator_VendorType_name = map[int32]string{
		0: "VENDOR_TYPE_UNKNOWN",
		1: "ENVIRO",
		2: "LARTECH",
		3: "RTK",
	}
	TemplateIndicator_VendorType_value = map[string]int32{
		"VENDOR_TYPE_UNKNOWN": 0,
		"ENVIRO":              1,
		"LARTECH":             2,
		"RTK":                 3,
	}
)

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

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

func (TemplateIndicator_VendorType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[6].Descriptor()
}

func (TemplateIndicator_VendorType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[6]
}

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

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

// Справочник типов единиц измерений
type TemplateIndicator_UnitType int32

const (
	// Значение не указано
	TemplateIndicator_UNIT_TYPE_UNKNOWN TemplateIndicator_UnitType = 0
	// Процент
	TemplateIndicator_PERCENT TemplateIndicator_UnitType = 1
	// Градус по Цельсию
	TemplateIndicator_C TemplateIndicator_UnitType = 2
	// Ватт
	TemplateIndicator_WT TemplateIndicator_UnitType = 3
	// Гигакалория
	TemplateIndicator_GKAL TemplateIndicator_UnitType = 4
	// Количество
	TemplateIndicator_VALUE TemplateIndicator_UnitType = 5
	// Киловaтт-час
	TemplateIndicator_KWH TemplateIndicator_UnitType = 6
	// Килограмм на квадратный сантиметр
	TemplateIndicator_KG_CM2 TemplateIndicator_UnitType = 7
	// Килограмм-сила на квадратный сантиметр
	TemplateIndicator_KGF_CM2 TemplateIndicator_UnitType = 8
	// Кубический метр
	TemplateIndicator_M3 TemplateIndicator_UnitType = 9
	// Кубический метр в час
	TemplateIndicator_M3_H TemplateIndicator_UnitType = 10
	// Мегапаскаль
	TemplateIndicator_MPA TemplateIndicator_UnitType = 11
	// Миллисекунда
	TemplateIndicator_MS TemplateIndicator_UnitType = 12
	// Флаг состояния
	TemplateIndicator_BOOLEAN TemplateIndicator_UnitType = 13
	// Тонна
	TemplateIndicator_T TemplateIndicator_UnitType = 14
	// Тонна в час
	TemplateIndicator_T_H TemplateIndicator_UnitType = 15
	// Час
	TemplateIndicator_H TemplateIndicator_UnitType = 16
	// Безразмерная величина
	TemplateIndicator_NON_MEASURABLE TemplateIndicator_UnitType = 17
	// Импульс
	TemplateIndicator_IMP TemplateIndicator_UnitType = 18
	// Джоуль
	TemplateIndicator_J TemplateIndicator_UnitType = 19
	// Килоджоуль
	TemplateIndicator_KJ TemplateIndicator_UnitType = 20
	// Гигаджоуль
	TemplateIndicator_GJ TemplateIndicator_UnitType = 21
	// Ватт-час
	TemplateIndicator_WTH TemplateIndicator_UnitType = 22
	// Киловатт
	TemplateIndicator_KWT TemplateIndicator_UnitType = 23
	// Минута
	TemplateIndicator_MIN TemplateIndicator_UnitType = 24
	// Секунда
	TemplateIndicator_S TemplateIndicator_UnitType = 25
)

// Enum value maps for TemplateIndicator_UnitType.
var (
	TemplateIndicator_UnitType_name = map[int32]string{
		0:  "UNIT_TYPE_UNKNOWN",
		1:  "PERCENT",
		2:  "C",
		3:  "WT",
		4:  "GKAL",
		5:  "VALUE",
		6:  "KWH",
		7:  "KG_CM2",
		8:  "KGF_CM2",
		9:  "M3",
		10: "M3_H",
		11: "MPA",
		12: "MS",
		13: "BOOLEAN",
		14: "T",
		15: "T_H",
		16: "H",
		17: "NON_MEASURABLE",
		18: "IMP",
		19: "J",
		20: "KJ",
		21: "GJ",
		22: "WTH",
		23: "KWT",
		24: "MIN",
		25: "S",
	}
	TemplateIndicator_UnitType_value = map[string]int32{
		"UNIT_TYPE_UNKNOWN": 0,
		"PERCENT":           1,
		"C":                 2,
		"WT":                3,
		"GKAL":              4,
		"VALUE":             5,
		"KWH":               6,
		"KG_CM2":            7,
		"KGF_CM2":           8,
		"M3":                9,
		"M3_H":              10,
		"MPA":               11,
		"MS":                12,
		"BOOLEAN":           13,
		"T":                 14,
		"T_H":               15,
		"H":                 16,
		"NON_MEASURABLE":    17,
		"IMP":               18,
		"J":                 19,
		"KJ":                20,
		"GJ":                21,
		"WTH":               22,
		"KWT":               23,
		"MIN":               24,
		"S":                 25,
	}
)

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

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

func (TemplateIndicator_UnitType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[7].Descriptor()
}

func (TemplateIndicator_UnitType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[7]
}

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

// Deprecated: Use TemplateIndicator_UnitType.Descriptor instead.
func (TemplateIndicator_UnitType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{25, 1}
}

// Справочник типов измерений
type TemplateIndicator_SignType int32

const (
	// Значение не указано
	TemplateIndicator_SIGN_TYPE_UNKNOWN TemplateIndicator_SignType = 0
	// Абсолютный показатель
	TemplateIndicator_ABSOLUTE_DS TemplateIndicator_SignType = 1
	// Абсолютный расход ресурса
	TemplateIndicator_ABSOLUTE_RC TemplateIndicator_SignType = 2
	// Интервальный показатель состояния
	TemplateIndicator_INTERVAL_DS TemplateIndicator_SignType = 3
	// Интервальный расход ресурса
	TemplateIndicator_INTERVAL_RC TemplateIndicator_SignType = 4
	// Текущее состояние
	TemplateIndicator_CURRENT_DS TemplateIndicator_SignType = 5
	// Текущее состояние ресурса
	TemplateIndicator_CURRENT_RS TemplateIndicator_SignType = 6
	// Объём
	TemplateIndicator_VOLUME TemplateIndicator_SignType = 7
	// Параметр конфигурации
	TemplateIndicator_PARAMETER TemplateIndicator_SignType = 8
	// Флаг состояния
	TemplateIndicator_FLAG TemplateIndicator_SignType = 9
)

// Enum value maps for TemplateIndicator_SignType.
var (
	TemplateIndicator_SignType_name = map[int32]string{
		0: "SIGN_TYPE_UNKNOWN",
		1: "ABSOLUTE_DS",
		2: "ABSOLUTE_RC",
		3: "INTERVAL_DS",
		4: "INTERVAL_RC",
		5: "CURRENT_DS",
		6: "CURRENT_RS",
		7: "VOLUME",
		8: "PARAMETER",
		9: "FLAG",
	}
	TemplateIndicator_SignType_value = map[string]int32{
		"SIGN_TYPE_UNKNOWN": 0,
		"ABSOLUTE_DS":       1,
		"ABSOLUTE_RC":       2,
		"INTERVAL_DS":       3,
		"INTERVAL_RC":       4,
		"CURRENT_DS":        5,
		"CURRENT_RS":        6,
		"VOLUME":            7,
		"PARAMETER":         8,
		"FLAG":              9,
	}
)

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

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

func (TemplateIndicator_SignType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[8].Descriptor()
}

func (TemplateIndicator_SignType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[8]
}

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

// Deprecated: Use TemplateIndicator_SignType.Descriptor instead.
func (TemplateIndicator_SignType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{25, 2}
}

// Справочник типа архивности показаний.
// Используется для указания за какой период произошло измерение.
// По умолчанию CURRENT
type TemplateIndicator_ArchiveType int32

const (
	// Значение не указано
	TemplateIndicator_ARCHIVE_TYPE_UNKNOWN TemplateIndicator_ArchiveType = 0
	// Текущие показания
	TemplateIndicator_CURRENT TemplateIndicator_ArchiveType = 1
	// За 30 мин
	TemplateIndicator_HALFHOUR TemplateIndicator_ArchiveType = 2
	// За час
	TemplateIndicator_HOUR TemplateIndicator_ArchiveType = 3
	// За суток
	TemplateIndicator_DAY TemplateIndicator_ArchiveType = 4
	// За месяц
	TemplateIndicator_MONTH TemplateIndicator_ArchiveType = 5
	// За год
	TemplateIndicator_YEAR TemplateIndicator_ArchiveType = 6
)

// Enum value maps for TemplateIndicator_ArchiveType.
var (
	TemplateIndicator_ArchiveType_name = map[int32]string{
		0: "ARCHIVE_TYPE_UNKNOWN",
		1: "CURRENT",
		2: "HALFHOUR",
		3: "HOUR",
		4: "DAY",
		5: "MONTH",
		6: "YEAR",
	}
	TemplateIndicator_ArchiveType_value = map[string]int32{
		"ARCHIVE_TYPE_UNKNOWN": 0,
		"CURRENT":              1,
		"HALFHOUR":             2,
		"HOUR":                 3,
		"DAY":                  4,
		"MONTH":                5,
		"YEAR":                 6,
	}
)

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

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

func (TemplateIndicator_ArchiveType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[9].Descriptor()
}

func (TemplateIndicator_ArchiveType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes[9]
}

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

// Deprecated: Use TemplateIndicator_ArchiveType.Descriptor instead.
func (TemplateIndicator_ArchiveType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{25, 3}
}

// Запрос сохранения шаблона ПУ
type PostTemplateDeviceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Шаблон ПУ
	Data *TemplateDevice `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *PostTemplateDeviceRequest) Reset() {
	*x = PostTemplateDeviceRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostTemplateDeviceRequest) ProtoMessage() {}

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

// Deprecated: Use PostTemplateDeviceRequest.ProtoReflect.Descriptor instead.
func (*PostTemplateDeviceRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{0}
}

func (x *PostTemplateDeviceRequest) GetData() *TemplateDevice {
	if x != nil {
		return x.Data
	}
	return nil
}

// Ответ на запрос сохранения шаблона ПУ
type PostTemplateDeviceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*PostTemplateDeviceResponse_Data
	//	*PostTemplateDeviceResponse_Error_
	Type isPostTemplateDeviceResponse_Type `protobuf_oneof:"type"`
}

func (x *PostTemplateDeviceResponse) Reset() {
	*x = PostTemplateDeviceResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostTemplateDeviceResponse) ProtoMessage() {}

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

// Deprecated: Use PostTemplateDeviceResponse.ProtoReflect.Descriptor instead.
func (*PostTemplateDeviceResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{1}
}

func (m *PostTemplateDeviceResponse) GetType() isPostTemplateDeviceResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostTemplateDeviceResponse) GetData() *TemplateDevice {
	if x, ok := x.GetType().(*PostTemplateDeviceResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *PostTemplateDeviceResponse) GetError() *PostTemplateDeviceResponse_Error {
	if x, ok := x.GetType().(*PostTemplateDeviceResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostTemplateDeviceResponse_Type interface {
	isPostTemplateDeviceResponse_Type()
}

type PostTemplateDeviceResponse_Data struct {
	// Шаблон ПУ
	Data *TemplateDevice `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

type PostTemplateDeviceResponse_Error_ struct {
	// Ошибка
	Error *PostTemplateDeviceResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*PostTemplateDeviceResponse_Data) isPostTemplateDeviceResponse_Type() {}

func (*PostTemplateDeviceResponse_Error_) isPostTemplateDeviceResponse_Type() {}

// Запрос удаления шаблона ПУ
type DeleteTemplateDeviceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *DeleteTemplateDeviceRequest) Reset() {
	*x = DeleteTemplateDeviceRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeleteTemplateDeviceRequest) ProtoMessage() {}

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

// Deprecated: Use DeleteTemplateDeviceRequest.ProtoReflect.Descriptor instead.
func (*DeleteTemplateDeviceRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{2}
}

func (x *DeleteTemplateDeviceRequest) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

// Ответ на запрос удаления шаблона ПУ
type DeleteTemplateDeviceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *DeleteTemplateDeviceResponse) Reset() {
	*x = DeleteTemplateDeviceResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeleteTemplateDeviceResponse) ProtoMessage() {}

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

// Deprecated: Use DeleteTemplateDeviceResponse.ProtoReflect.Descriptor instead.
func (*DeleteTemplateDeviceResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{3}
}

// Запрос получения шаблона ПУ
type GetTemplateDeviceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор шаблона ПУ
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *GetTemplateDeviceRequest) Reset() {
	*x = GetTemplateDeviceRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateDeviceRequest) ProtoMessage() {}

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

// Deprecated: Use GetTemplateDeviceRequest.ProtoReflect.Descriptor instead.
func (*GetTemplateDeviceRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{4}
}

func (x *GetTemplateDeviceRequest) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

// Ответ на запрос получения шаблона ПУ
type GetTemplateDeviceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetTemplateDeviceResponse_Data
	Type isGetTemplateDeviceResponse_Type `protobuf_oneof:"type"`
}

func (x *GetTemplateDeviceResponse) Reset() {
	*x = GetTemplateDeviceResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateDeviceResponse) ProtoMessage() {}

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

// Deprecated: Use GetTemplateDeviceResponse.ProtoReflect.Descriptor instead.
func (*GetTemplateDeviceResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{5}
}

func (m *GetTemplateDeviceResponse) GetType() isGetTemplateDeviceResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetTemplateDeviceResponse) GetData() *TemplateDevice {
	if x, ok := x.GetType().(*GetTemplateDeviceResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetTemplateDeviceResponse_Type interface {
	isGetTemplateDeviceResponse_Type()
}

type GetTemplateDeviceResponse_Data struct {
	// Шаблон ПУ
	Data *TemplateDevice `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetTemplateDeviceResponse_Data) isGetTemplateDeviceResponse_Type() {}

// Запрос получения списка шаблонов ПУ
type GetTemplateDeviceListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр
	Filter *TemplateDeviceFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetTemplateDeviceListRequest_Paging
	Pagination isGetTemplateDeviceListRequest_Pagination `protobuf_oneof:"pagination"`
}

func (x *GetTemplateDeviceListRequest) Reset() {
	*x = GetTemplateDeviceListRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateDeviceListRequest) ProtoMessage() {}

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

// Deprecated: Use GetTemplateDeviceListRequest.ProtoReflect.Descriptor instead.
func (*GetTemplateDeviceListRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{6}
}

func (x *GetTemplateDeviceListRequest) GetFilter() *TemplateDeviceFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetTemplateDeviceListRequest) GetPagination() isGetTemplateDeviceListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetTemplateDeviceListRequest) GetPaging() *TemplateDevicePaging {
	if x, ok := x.GetPagination().(*GetTemplateDeviceListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetTemplateDeviceListRequest_Pagination interface {
	isGetTemplateDeviceListRequest_Pagination()
}

type GetTemplateDeviceListRequest_Paging struct {
	// Пагинация
	Paging *TemplateDevicePaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetTemplateDeviceListRequest_Paging) isGetTemplateDeviceListRequest_Pagination() {}

// Пагинация
type TemplateDevicePaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// По умолчанию: ID
	OrderByType TemplateDevicePaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.telemetry_control.v1.TemplateDevicePaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// По умолчанию: DESC
	DirectionType TemplateDevicePaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.telemetry_control.v1.TemplateDevicePaging_DirectionType" json:"direction_type,omitempty"`
	// Количество.
	// Минимальное значение: 1.
	// Максимальное значение: 100.
	// По умолчанию: 20.
	// Если значение 0 (не передано) то выставляем значение по умолчанию
	Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Сдвиг.
	// По умолчанию: 0
	Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
}

func (x *TemplateDevicePaging) Reset() {
	*x = TemplateDevicePaging{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateDevicePaging) ProtoMessage() {}

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

// Deprecated: Use TemplateDevicePaging.ProtoReflect.Descriptor instead.
func (*TemplateDevicePaging) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{7}
}

func (x *TemplateDevicePaging) GetOrderByType() TemplateDevicePaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return TemplateDevicePaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *TemplateDevicePaging) GetDirectionType() TemplateDevicePaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return TemplateDevicePaging_DIRECTION_TYPE_UNKNOWN
}

func (x *TemplateDevicePaging) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *TemplateDevicePaging) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

// Фильтр для запроса шаблонов приборов учета.
// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
// При передаче нескольких разных параметров фильтра они работают в выборке через И
type TemplateDeviceFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По типу энергоресурса
	MetricTypes []TemplateDevice_MetricType `protobuf:"varint,1,rep,packed,name=metric_types,json=metricTypes,proto3,enum=keyapis.telemetry_control.v1.TemplateDevice_MetricType" json:"metric_types,omitempty"`
	// По ID модели счетчика
	ModelIds []int32 `protobuf:"varint,2,rep,packed,name=model_ids,json=modelIds,proto3" json:"model_ids,omitempty"`
	// По типу тарифного плана. Для ПУ электроэнергии
	PlanTypes []TemplateDevice_PlanType `protobuf:"varint,3,rep,packed,name=plan_types,json=planTypes,proto3,enum=keyapis.telemetry_control.v1.TemplateDevice_PlanType" json:"plan_types,omitempty"`
	// По посреднику получения показаний
	IndicatorVendorTypes []TemplateIndicator_VendorType `protobuf:"varint,4,rep,packed,name=indicator_vendor_types,json=indicatorVendorTypes,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicator_VendorType" json:"indicator_vendor_types,omitempty"`
}

func (x *TemplateDeviceFilter) Reset() {
	*x = TemplateDeviceFilter{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateDeviceFilter) ProtoMessage() {}

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

// Deprecated: Use TemplateDeviceFilter.ProtoReflect.Descriptor instead.
func (*TemplateDeviceFilter) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{8}
}

func (x *TemplateDeviceFilter) GetMetricTypes() []TemplateDevice_MetricType {
	if x != nil {
		return x.MetricTypes
	}
	return nil
}

func (x *TemplateDeviceFilter) GetModelIds() []int32 {
	if x != nil {
		return x.ModelIds
	}
	return nil
}

func (x *TemplateDeviceFilter) GetPlanTypes() []TemplateDevice_PlanType {
	if x != nil {
		return x.PlanTypes
	}
	return nil
}

func (x *TemplateDeviceFilter) GetIndicatorVendorTypes() []TemplateIndicator_VendorType {
	if x != nil {
		return x.IndicatorVendorTypes
	}
	return nil
}

// Ответ на запрос получения списка шаблонов приборов учета
type GetTemplateDeviceListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetTemplateDeviceListResponse_Data
	//	*GetTemplateDeviceListResponse_Error_
	Type isGetTemplateDeviceListResponse_Type `protobuf_oneof:"type"`
}

func (x *GetTemplateDeviceListResponse) Reset() {
	*x = GetTemplateDeviceListResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateDeviceListResponse) ProtoMessage() {}

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

// Deprecated: Use GetTemplateDeviceListResponse.ProtoReflect.Descriptor instead.
func (*GetTemplateDeviceListResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{9}
}

func (m *GetTemplateDeviceListResponse) GetType() isGetTemplateDeviceListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetTemplateDeviceListResponse) GetData() *TemplateDevice {
	if x, ok := x.GetType().(*GetTemplateDeviceListResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetTemplateDeviceListResponse) GetError() *GetTemplateDeviceListResponse_Error {
	if x, ok := x.GetType().(*GetTemplateDeviceListResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetTemplateDeviceListResponse_Type interface {
	isGetTemplateDeviceListResponse_Type()
}

type GetTemplateDeviceListResponse_Data struct {
	// Шаблон ПУ
	Data *TemplateDevice `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

type GetTemplateDeviceListResponse_Error_ struct {
	// Ошибка
	Error *GetTemplateDeviceListResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*GetTemplateDeviceListResponse_Data) isGetTemplateDeviceListResponse_Type() {}

func (*GetTemplateDeviceListResponse_Error_) isGetTemplateDeviceListResponse_Type() {}

// Запрос получения количества шаблонов приборов учета
type GetTemplateDeviceCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр по шаблонам приборов учета
	Filter *TemplateDeviceFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

func (x *GetTemplateDeviceCountRequest) Reset() {
	*x = GetTemplateDeviceCountRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateDeviceCountRequest) ProtoMessage() {}

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

// Deprecated: Use GetTemplateDeviceCountRequest.ProtoReflect.Descriptor instead.
func (*GetTemplateDeviceCountRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{10}
}

func (x *GetTemplateDeviceCountRequest) GetFilter() *TemplateDeviceFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// Ответ на запрос получения количества шаблонов приборов учета
type GetTemplateDeviceCountResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetTemplateDeviceCountResponse_Data
	//	*GetTemplateDeviceCountResponse_Error_
	Type isGetTemplateDeviceCountResponse_Type `protobuf_oneof:"type"`
}

func (x *GetTemplateDeviceCountResponse) Reset() {
	*x = GetTemplateDeviceCountResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateDeviceCountResponse) ProtoMessage() {}

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

// Deprecated: Use GetTemplateDeviceCountResponse.ProtoReflect.Descriptor instead.
func (*GetTemplateDeviceCountResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{11}
}

func (m *GetTemplateDeviceCountResponse) GetType() isGetTemplateDeviceCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetTemplateDeviceCountResponse) GetData() int32 {
	if x, ok := x.GetType().(*GetTemplateDeviceCountResponse_Data); ok {
		return x.Data
	}
	return 0
}

func (x *GetTemplateDeviceCountResponse) GetError() *GetTemplateDeviceCountResponse_Error {
	if x, ok := x.GetType().(*GetTemplateDeviceCountResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetTemplateDeviceCountResponse_Type interface {
	isGetTemplateDeviceCountResponse_Type()
}

type GetTemplateDeviceCountResponse_Data struct {
	// Всего шаблонов приборов учета
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

type GetTemplateDeviceCountResponse_Error_ struct {
	// Ошибка
	Error *GetTemplateDeviceCountResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*GetTemplateDeviceCountResponse_Data) isGetTemplateDeviceCountResponse_Type() {}

func (*GetTemplateDeviceCountResponse_Error_) isGetTemplateDeviceCountResponse_Type() {}

// Шаблон ПУ
type TemplateDevice struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	// Дата создания
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Дата последнего изменения.
	// Заполняется и обновляется сервером.
	// Заполняется при создании и изменении
	ChangedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=changed_at,json=changedAt,proto3" json:"changed_at,omitempty"`
	// Тип энергоресурса
	MetricType TemplateDevice_MetricType `protobuf:"varint,4,opt,name=metric_type,json=metricType,proto3,enum=keyapis.telemetry_control.v1.TemplateDevice_MetricType" json:"metric_type,omitempty"`
	// ID Модели счетчика
	ModelId int32 `protobuf:"varint,5,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
	// Шаблоны индикаторов
	IndicatorTemplateIds []int32 `protobuf:"varint,6,rep,packed,name=indicator_template_ids,json=indicatorTemplateIds,proto3" json:"indicator_template_ids,omitempty"`
	// Тип тарифного плана.
	// Для ПУ электроэнергии
	PlanType TemplateDevice_PlanType `protobuf:"varint,7,opt,name=plan_type,json=planType,proto3,enum=keyapis.telemetry_control.v1.TemplateDevice_PlanType" json:"plan_type,omitempty"`
	// Посредник получения показаний
	IndicatorVendorType TemplateIndicator_VendorType `protobuf:"varint,8,opt,name=indicator_vendor_type,json=indicatorVendorType,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicator_VendorType" json:"indicator_vendor_type,omitempty"`
}

func (x *TemplateDevice) Reset() {
	*x = TemplateDevice{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateDevice) ProtoMessage() {}

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

// Deprecated: Use TemplateDevice.ProtoReflect.Descriptor instead.
func (*TemplateDevice) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{12}
}

func (x *TemplateDevice) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *TemplateDevice) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *TemplateDevice) GetChangedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ChangedAt
	}
	return nil
}

func (x *TemplateDevice) GetMetricType() TemplateDevice_MetricType {
	if x != nil {
		return x.MetricType
	}
	return TemplateDevice_METRIC_TYPE_UNKNOWN
}

func (x *TemplateDevice) GetModelId() int32 {
	if x != nil {
		return x.ModelId
	}
	return 0
}

func (x *TemplateDevice) GetIndicatorTemplateIds() []int32 {
	if x != nil {
		return x.IndicatorTemplateIds
	}
	return nil
}

func (x *TemplateDevice) GetPlanType() TemplateDevice_PlanType {
	if x != nil {
		return x.PlanType
	}
	return TemplateDevice_PLAN_TYPE_UNKNOWN
}

func (x *TemplateDevice) GetIndicatorVendorType() TemplateIndicator_VendorType {
	if x != nil {
		return x.IndicatorVendorType
	}
	return TemplateIndicator_VENDOR_TYPE_UNKNOWN
}

// Запрос получения шаблона шаблона индикатора
type GetTemplateIndicatorRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор шаблона индикатора
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *GetTemplateIndicatorRequest) Reset() {
	*x = GetTemplateIndicatorRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateIndicatorRequest) ProtoMessage() {}

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

// Deprecated: Use GetTemplateIndicatorRequest.ProtoReflect.Descriptor instead.
func (*GetTemplateIndicatorRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{13}
}

func (x *GetTemplateIndicatorRequest) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

// Ответ на запрос получения шаблона индикатора
type GetTemplateIndicatorResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetTemplateIndicatorResponse_Data
	Type isGetTemplateIndicatorResponse_Type `protobuf_oneof:"type"`
}

func (x *GetTemplateIndicatorResponse) Reset() {
	*x = GetTemplateIndicatorResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateIndicatorResponse) ProtoMessage() {}

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

// Deprecated: Use GetTemplateIndicatorResponse.ProtoReflect.Descriptor instead.
func (*GetTemplateIndicatorResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{14}
}

func (m *GetTemplateIndicatorResponse) GetType() isGetTemplateIndicatorResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetTemplateIndicatorResponse) GetData() *TemplateIndicator {
	if x, ok := x.GetType().(*GetTemplateIndicatorResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetTemplateIndicatorResponse_Type interface {
	isGetTemplateIndicatorResponse_Type()
}

type GetTemplateIndicatorResponse_Data struct {
	// Шаблон ндикатора
	Data *TemplateIndicator `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetTemplateIndicatorResponse_Data) isGetTemplateIndicatorResponse_Type() {}

// Запрос получения списка шаблонов индикаторов
type GetTemplateIndicatorListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр
	Filter *TemplateIndicatorFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetTemplateIndicatorListRequest_Paging
	Pagination isGetTemplateIndicatorListRequest_Pagination `protobuf_oneof:"pagination"`
}

func (x *GetTemplateIndicatorListRequest) Reset() {
	*x = GetTemplateIndicatorListRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateIndicatorListRequest) ProtoMessage() {}

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

// Deprecated: Use GetTemplateIndicatorListRequest.ProtoReflect.Descriptor instead.
func (*GetTemplateIndicatorListRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{15}
}

func (x *GetTemplateIndicatorListRequest) GetFilter() *TemplateIndicatorFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetTemplateIndicatorListRequest) GetPagination() isGetTemplateIndicatorListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetTemplateIndicatorListRequest) GetPaging() *TemplateIndicatorPaging {
	if x, ok := x.GetPagination().(*GetTemplateIndicatorListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetTemplateIndicatorListRequest_Pagination interface {
	isGetTemplateIndicatorListRequest_Pagination()
}

type GetTemplateIndicatorListRequest_Paging struct {
	// Пагинация
	Paging *TemplateIndicatorPaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetTemplateIndicatorListRequest_Paging) isGetTemplateIndicatorListRequest_Pagination() {}

// Пагинация
type TemplateIndicatorPaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// По умолчанию: ID
	OrderByType TemplateIndicatorPaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicatorPaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// По умолчанию: DESC
	DirectionType TemplateIndicatorPaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicatorPaging_DirectionType" json:"direction_type,omitempty"`
	// Количество.
	// Минимальное значение: 1.
	// Максимальное значение: 100.
	// По умолчанию: 20.
	// Если значение 0 (не передано) то выставляем значение по умолчанию
	Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Сдвиг.
	// По умолчанию: 0
	Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
}

func (x *TemplateIndicatorPaging) Reset() {
	*x = TemplateIndicatorPaging{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateIndicatorPaging) ProtoMessage() {}

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

// Deprecated: Use TemplateIndicatorPaging.ProtoReflect.Descriptor instead.
func (*TemplateIndicatorPaging) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{16}
}

func (x *TemplateIndicatorPaging) GetOrderByType() TemplateIndicatorPaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return TemplateIndicatorPaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *TemplateIndicatorPaging) GetDirectionType() TemplateIndicatorPaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return TemplateIndicatorPaging_DIRECTION_TYPE_UNKNOWN
}

func (x *TemplateIndicatorPaging) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *TemplateIndicatorPaging) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

// Фильтр для запроса шаблонов индикаторов.
// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
// При передаче нескольких разных параметров фильтра они работают в выборке через И
type TemplateIndicatorFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По типу измерений
	SignTypes []TemplateIndicator_SignType `protobuf:"varint,1,rep,packed,name=sign_types,json=signTypes,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicator_SignType" json:"sign_types,omitempty"`
	// По типу архивности показаний
	ArchiveTypes []TemplateIndicator_ArchiveType `protobuf:"varint,2,rep,packed,name=archive_types,json=archiveTypes,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicator_ArchiveType" json:"archive_types,omitempty"`
	// По флагу видимости индикатора для клиента ФЛ
	IsIndividual *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=is_individual,json=isIndividual,proto3" json:"is_individual,omitempty"`
	// По шаблонному названию индикатора.
	// Поиск производится по подстроке
	Title *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	// По посреднику получения показаний
	IndicatorVendorTypes []TemplateIndicator_VendorType `protobuf:"varint,5,rep,packed,name=indicator_vendor_types,json=indicatorVendorTypes,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicator_VendorType" json:"indicator_vendor_types,omitempty"`
}

func (x *TemplateIndicatorFilter) Reset() {
	*x = TemplateIndicatorFilter{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateIndicatorFilter) ProtoMessage() {}

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

// Deprecated: Use TemplateIndicatorFilter.ProtoReflect.Descriptor instead.
func (*TemplateIndicatorFilter) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{17}
}

func (x *TemplateIndicatorFilter) GetSignTypes() []TemplateIndicator_SignType {
	if x != nil {
		return x.SignTypes
	}
	return nil
}

func (x *TemplateIndicatorFilter) GetArchiveTypes() []TemplateIndicator_ArchiveType {
	if x != nil {
		return x.ArchiveTypes
	}
	return nil
}

func (x *TemplateIndicatorFilter) GetIsIndividual() *wrapperspb.BoolValue {
	if x != nil {
		return x.IsIndividual
	}
	return nil
}

func (x *TemplateIndicatorFilter) GetTitle() *wrapperspb.StringValue {
	if x != nil {
		return x.Title
	}
	return nil
}

func (x *TemplateIndicatorFilter) GetIndicatorVendorTypes() []TemplateIndicator_VendorType {
	if x != nil {
		return x.IndicatorVendorTypes
	}
	return nil
}

// Ответ на запрос получения списка шаблонов индикаторов
type GetTemplateIndicatorListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetTemplateIndicatorListResponse_Data
	//	*GetTemplateIndicatorListResponse_Error_
	Type isGetTemplateIndicatorListResponse_Type `protobuf_oneof:"type"`
}

func (x *GetTemplateIndicatorListResponse) Reset() {
	*x = GetTemplateIndicatorListResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateIndicatorListResponse) ProtoMessage() {}

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

// Deprecated: Use GetTemplateIndicatorListResponse.ProtoReflect.Descriptor instead.
func (*GetTemplateIndicatorListResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{18}
}

func (m *GetTemplateIndicatorListResponse) GetType() isGetTemplateIndicatorListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetTemplateIndicatorListResponse) GetData() *TemplateIndicator {
	if x, ok := x.GetType().(*GetTemplateIndicatorListResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetTemplateIndicatorListResponse) GetError() *GetTemplateIndicatorListResponse_Error {
	if x, ok := x.GetType().(*GetTemplateIndicatorListResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetTemplateIndicatorListResponse_Type interface {
	isGetTemplateIndicatorListResponse_Type()
}

type GetTemplateIndicatorListResponse_Data struct {
	// Шаблон индикатора
	Data *TemplateIndicator `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

type GetTemplateIndicatorListResponse_Error_ struct {
	// Ошибка
	Error *GetTemplateIndicatorListResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*GetTemplateIndicatorListResponse_Data) isGetTemplateIndicatorListResponse_Type() {}

func (*GetTemplateIndicatorListResponse_Error_) isGetTemplateIndicatorListResponse_Type() {}

// Запрос получения количества шаблонов индикаторов
type GetTemplateIndicatorCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр по шаблонам индикаторов
	Filter *TemplateIndicatorFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

func (x *GetTemplateIndicatorCountRequest) Reset() {
	*x = GetTemplateIndicatorCountRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateIndicatorCountRequest) ProtoMessage() {}

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

// Deprecated: Use GetTemplateIndicatorCountRequest.ProtoReflect.Descriptor instead.
func (*GetTemplateIndicatorCountRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{19}
}

func (x *GetTemplateIndicatorCountRequest) GetFilter() *TemplateIndicatorFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// Ответ на запрос получения количества шаблонов индикаторов
type GetTemplateIndicatorCountResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetTemplateIndicatorCountResponse_Data
	//	*GetTemplateIndicatorCountResponse_Error_
	Type isGetTemplateIndicatorCountResponse_Type `protobuf_oneof:"type"`
}

func (x *GetTemplateIndicatorCountResponse) Reset() {
	*x = GetTemplateIndicatorCountResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateIndicatorCountResponse) ProtoMessage() {}

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

// Deprecated: Use GetTemplateIndicatorCountResponse.ProtoReflect.Descriptor instead.
func (*GetTemplateIndicatorCountResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{20}
}

func (m *GetTemplateIndicatorCountResponse) GetType() isGetTemplateIndicatorCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetTemplateIndicatorCountResponse) GetData() int32 {
	if x, ok := x.GetType().(*GetTemplateIndicatorCountResponse_Data); ok {
		return x.Data
	}
	return 0
}

func (x *GetTemplateIndicatorCountResponse) GetError() *GetTemplateIndicatorCountResponse_Error {
	if x, ok := x.GetType().(*GetTemplateIndicatorCountResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetTemplateIndicatorCountResponse_Type interface {
	isGetTemplateIndicatorCountResponse_Type()
}

type GetTemplateIndicatorCountResponse_Data struct {
	// Всего шаблонов индикаторов
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

type GetTemplateIndicatorCountResponse_Error_ struct {
	// Ошибка
	Error *GetTemplateIndicatorCountResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*GetTemplateIndicatorCountResponse_Data) isGetTemplateIndicatorCountResponse_Type() {}

func (*GetTemplateIndicatorCountResponse_Error_) isGetTemplateIndicatorCountResponse_Type() {}

// Запрос сохранения шаблона индикатора
type PostTemplateIndicatorRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Шаблон индикатора
	Data *TemplateIndicator `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *PostTemplateIndicatorRequest) Reset() {
	*x = PostTemplateIndicatorRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostTemplateIndicatorRequest) ProtoMessage() {}

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

// Deprecated: Use PostTemplateIndicatorRequest.ProtoReflect.Descriptor instead.
func (*PostTemplateIndicatorRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{21}
}

func (x *PostTemplateIndicatorRequest) GetData() *TemplateIndicator {
	if x != nil {
		return x.Data
	}
	return nil
}

// Ответ на запрос сохранения шаблона индикатора
type PostTemplateIndicatorResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*PostTemplateIndicatorResponse_Data
	//	*PostTemplateIndicatorResponse_Error_
	Type isPostTemplateIndicatorResponse_Type `protobuf_oneof:"type"`
}

func (x *PostTemplateIndicatorResponse) Reset() {
	*x = PostTemplateIndicatorResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostTemplateIndicatorResponse) ProtoMessage() {}

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

// Deprecated: Use PostTemplateIndicatorResponse.ProtoReflect.Descriptor instead.
func (*PostTemplateIndicatorResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{22}
}

func (m *PostTemplateIndicatorResponse) GetType() isPostTemplateIndicatorResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostTemplateIndicatorResponse) GetData() *TemplateIndicator {
	if x, ok := x.GetType().(*PostTemplateIndicatorResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *PostTemplateIndicatorResponse) GetError() *PostTemplateIndicatorResponse_Error {
	if x, ok := x.GetType().(*PostTemplateIndicatorResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostTemplateIndicatorResponse_Type interface {
	isPostTemplateIndicatorResponse_Type()
}

type PostTemplateIndicatorResponse_Data struct {
	// Шаблон индикатора
	Data *TemplateIndicator `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

type PostTemplateIndicatorResponse_Error_ struct {
	// Ошибка
	Error *PostTemplateIndicatorResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*PostTemplateIndicatorResponse_Data) isPostTemplateIndicatorResponse_Type() {}

func (*PostTemplateIndicatorResponse_Error_) isPostTemplateIndicatorResponse_Type() {}

// Запрос удаления шаблона индикатора
type DeleteTemplateIndicatorRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *DeleteTemplateIndicatorRequest) Reset() {
	*x = DeleteTemplateIndicatorRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeleteTemplateIndicatorRequest) ProtoMessage() {}

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

// Deprecated: Use DeleteTemplateIndicatorRequest.ProtoReflect.Descriptor instead.
func (*DeleteTemplateIndicatorRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{23}
}

func (x *DeleteTemplateIndicatorRequest) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

// Ответ на запрос удаления шаблона индикатора
type DeleteTemplateIndicatorResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *DeleteTemplateIndicatorResponse) Reset() {
	*x = DeleteTemplateIndicatorResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeleteTemplateIndicatorResponse) ProtoMessage() {}

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

// Deprecated: Use DeleteTemplateIndicatorResponse.ProtoReflect.Descriptor instead.
func (*DeleteTemplateIndicatorResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{24}
}

// Шаблон индикатора
type TemplateIndicator struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	// Дата создания
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Дата последнего изменения.
	// Заполняется и обновляется сервером.
	// Заполняется при создании и изменении
	ChangedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=changed_at,json=changedAt,proto3" json:"changed_at,omitempty"`
	// Шаблонное название индикатора
	Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	// Тип единицы измерения, в которой интерпретировано, получаемое измерение
	UnitType TemplateIndicator_UnitType `protobuf:"varint,5,opt,name=unit_type,json=unitType,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicator_UnitType" json:"unit_type,omitempty"`
	// Тип измерения
	SignType TemplateIndicator_SignType `protobuf:"varint,6,opt,name=sign_type,json=signType,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicator_SignType" json:"sign_type,omitempty"`
	// Тип архивности показаний
	ArchiveType TemplateIndicator_ArchiveType `protobuf:"varint,7,opt,name=archive_type,json=archiveType,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicator_ArchiveType" json:"archive_type,omitempty"`
	// Тип единицы измерения для отображения измерения.
	// При UNIT_TYPE_UNKNOWN отображаемые единицы совпадают с единицами источников значений, преобразования единиц не происходит.
	// Применяется после коэффициента
	PresentationUnitType TemplateIndicator_UnitType `protobuf:"varint,8,opt,name=presentation_unit_type,json=presentationUnitType,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicator_UnitType" json:"presentation_unit_type,omitempty"`
	// Код для совместимости с поставщиком метрик
	CompatibilityCode *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=compatibility_code,json=compatibilityCode,proto3" json:"compatibility_code,omitempty"`
	// Флаг видимости индикатора для клиента ФЛ
	IsIndividual bool `protobuf:"varint,10,opt,name=is_individual,json=isIndividual,proto3" json:"is_individual,omitempty"`
	// Коэффициент, на который умножается отображаемое значение.
	// Применяется перед преобразованием единиц измерений к presentation_unit_type и после применения поправки
	Coefficient *wrapperspb.FloatValue `protobuf:"bytes,11,opt,name=coefficient,proto3" json:"coefficient,omitempty"`
	// Величина поправки к отображаемому значению.
	// Применяется перед применением коэффициента
	Shift *wrapperspb.FloatValue `protobuf:"bytes,12,opt,name=shift,proto3" json:"shift,omitempty"`
	// Количество возвращаемых десятичных знаков при округлении итогового значения.
	// При пустом параметре округления не происходит.
	// Применяется после преобразования единиц измерения
	RoundDecimalDigits *wrapperspb.Int32Value `protobuf:"bytes,13,opt,name=round_decimal_digits,json=roundDecimalDigits,proto3" json:"round_decimal_digits,omitempty"`
	// Ожидаемая частота поступления показаний в днях
	MetricExpectedFreq int32 `protobuf:"varint,14,opt,name=metric_expected_freq,json=metricExpectedFreq,proto3" json:"metric_expected_freq,omitempty"`
	// Посредник получения показаний
	IndicatorVendorType TemplateIndicator_VendorType `protobuf:"varint,15,opt,name=indicator_vendor_type,json=indicatorVendorType,proto3,enum=keyapis.telemetry_control.v1.TemplateIndicator_VendorType" json:"indicator_vendor_type,omitempty"`
}

func (x *TemplateIndicator) Reset() {
	*x = TemplateIndicator{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateIndicator) ProtoMessage() {}

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

// Deprecated: Use TemplateIndicator.ProtoReflect.Descriptor instead.
func (*TemplateIndicator) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{25}
}

func (x *TemplateIndicator) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *TemplateIndicator) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *TemplateIndicator) GetChangedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ChangedAt
	}
	return nil
}

func (x *TemplateIndicator) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *TemplateIndicator) GetUnitType() TemplateIndicator_UnitType {
	if x != nil {
		return x.UnitType
	}
	return TemplateIndicator_UNIT_TYPE_UNKNOWN
}

func (x *TemplateIndicator) GetSignType() TemplateIndicator_SignType {
	if x != nil {
		return x.SignType
	}
	return TemplateIndicator_SIGN_TYPE_UNKNOWN
}

func (x *TemplateIndicator) GetArchiveType() TemplateIndicator_ArchiveType {
	if x != nil {
		return x.ArchiveType
	}
	return TemplateIndicator_ARCHIVE_TYPE_UNKNOWN
}

func (x *TemplateIndicator) GetPresentationUnitType() TemplateIndicator_UnitType {
	if x != nil {
		return x.PresentationUnitType
	}
	return TemplateIndicator_UNIT_TYPE_UNKNOWN
}

func (x *TemplateIndicator) GetCompatibilityCode() *wrapperspb.StringValue {
	if x != nil {
		return x.CompatibilityCode
	}
	return nil
}

func (x *TemplateIndicator) GetIsIndividual() bool {
	if x != nil {
		return x.IsIndividual
	}
	return false
}

func (x *TemplateIndicator) GetCoefficient() *wrapperspb.FloatValue {
	if x != nil {
		return x.Coefficient
	}
	return nil
}

func (x *TemplateIndicator) GetShift() *wrapperspb.FloatValue {
	if x != nil {
		return x.Shift
	}
	return nil
}

func (x *TemplateIndicator) GetRoundDecimalDigits() *wrapperspb.Int32Value {
	if x != nil {
		return x.RoundDecimalDigits
	}
	return nil
}

func (x *TemplateIndicator) GetMetricExpectedFreq() int32 {
	if x != nil {
		return x.MetricExpectedFreq
	}
	return 0
}

func (x *TemplateIndicator) GetIndicatorVendorType() TemplateIndicator_VendorType {
	if x != nil {
		return x.IndicatorVendorType
	}
	return TemplateIndicator_VENDOR_TYPE_UNKNOWN
}

// Ошибка запроса сохранения шаблона ПУ
type PostTemplateDeviceResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*PostTemplateDeviceResponse_Error_Validation
	Reason isPostTemplateDeviceResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *PostTemplateDeviceResponse_Error) Reset() {
	*x = PostTemplateDeviceResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostTemplateDeviceResponse_Error) ProtoMessage() {}

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

// Deprecated: Use PostTemplateDeviceResponse_Error.ProtoReflect.Descriptor instead.
func (*PostTemplateDeviceResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{1, 0}
}

func (m *PostTemplateDeviceResponse_Error) GetReason() isPostTemplateDeviceResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PostTemplateDeviceResponse_Error) GetValidation() *TemplateDevice_ValidationError {
	if x, ok := x.GetReason().(*PostTemplateDeviceResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isPostTemplateDeviceResponse_Error_Reason interface {
	isPostTemplateDeviceResponse_Error_Reason()
}

type PostTemplateDeviceResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *TemplateDevice_ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*PostTemplateDeviceResponse_Error_Validation) isPostTemplateDeviceResponse_Error_Reason() {}

// Ошибка валидации постраничной пагинации по шаблонам ПУ.
// Эти проверки выполняются до обращения в базу данных
type TemplateDevicePaging_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*TemplateDevicePaging_ValidationError_Limit
	//	*TemplateDevicePaging_ValidationError_Offset
	Reason isTemplateDevicePaging_ValidationError_Reason `protobuf_oneof:"reason"`
}

func (x *TemplateDevicePaging_ValidationError) Reset() {
	*x = TemplateDevicePaging_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateDevicePaging_ValidationError) ProtoMessage() {}

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

// Deprecated: Use TemplateDevicePaging_ValidationError.ProtoReflect.Descriptor instead.
func (*TemplateDevicePaging_ValidationError) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{7, 0}
}

func (m *TemplateDevicePaging_ValidationError) GetReason() isTemplateDevicePaging_ValidationError_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *TemplateDevicePaging_ValidationError) GetLimit() *TemplateDevicePaging_ValidationError_LimitInvalid {
	if x, ok := x.GetReason().(*TemplateDevicePaging_ValidationError_Limit); ok {
		return x.Limit
	}
	return nil
}

func (x *TemplateDevicePaging_ValidationError) GetOffset() *TemplateDevicePaging_ValidationError_OffsetInvalid {
	if x, ok := x.GetReason().(*TemplateDevicePaging_ValidationError_Offset); ok {
		return x.Offset
	}
	return nil
}

type isTemplateDevicePaging_ValidationError_Reason interface {
	isTemplateDevicePaging_ValidationError_Reason()
}

type TemplateDevicePaging_ValidationError_Limit struct {
	// Количество передано некорректно
	Limit *TemplateDevicePaging_ValidationError_LimitInvalid `protobuf:"bytes,1,opt,name=limit,proto3,oneof"`
}

type TemplateDevicePaging_ValidationError_Offset struct {
	// Сдвиг передан некорректно
	Offset *TemplateDevicePaging_ValidationError_OffsetInvalid `protobuf:"bytes,2,opt,name=offset,proto3,oneof"`
}

func (*TemplateDevicePaging_ValidationError_Limit) isTemplateDevicePaging_ValidationError_Reason() {}

func (*TemplateDevicePaging_ValidationError_Offset) isTemplateDevicePaging_ValidationError_Reason() {}

// Причины:
// - Значение количества < 0 или > 100
type TemplateDevicePaging_ValidationError_LimitInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *TemplateDevicePaging_ValidationError_LimitInvalid) Reset() {
	*x = TemplateDevicePaging_ValidationError_LimitInvalid{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateDevicePaging_ValidationError_LimitInvalid) ProtoMessage() {}

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

// Deprecated: Use TemplateDevicePaging_ValidationError_LimitInvalid.ProtoReflect.Descriptor instead.
func (*TemplateDevicePaging_ValidationError_LimitInvalid) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{7, 0, 0}
}

// Причины:
// - Значение сдвига < 0
type TemplateDevicePaging_ValidationError_OffsetInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *TemplateDevicePaging_ValidationError_OffsetInvalid) Reset() {
	*x = TemplateDevicePaging_ValidationError_OffsetInvalid{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateDevicePaging_ValidationError_OffsetInvalid) ProtoMessage() {}

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

// Deprecated: Use TemplateDevicePaging_ValidationError_OffsetInvalid.ProtoReflect.Descriptor instead.
func (*TemplateDevicePaging_ValidationError_OffsetInvalid) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{7, 0, 1}
}

// Ошибки валидации.
// Эти проверки выполняются до обращения в базу данных
type TemplateDeviceFilter_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Путь к полю в формате наименования protobuf
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Валидационное сообщение
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *TemplateDeviceFilter_ValidationError) Reset() {
	*x = TemplateDeviceFilter_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateDeviceFilter_ValidationError) ProtoMessage() {}

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

// Deprecated: Use TemplateDeviceFilter_ValidationError.ProtoReflect.Descriptor instead.
func (*TemplateDeviceFilter_ValidationError) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{8, 0}
}

func (x *TemplateDeviceFilter_ValidationError) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

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

// Ошибка запроса получения списка шаблонов приборов учета
type GetTemplateDeviceListResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*GetTemplateDeviceListResponse_Error_TemplateDeviceFilterValidation
	//	*GetTemplateDeviceListResponse_Error_TemplateDevicePagingValidation
	Reason isGetTemplateDeviceListResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *GetTemplateDeviceListResponse_Error) Reset() {
	*x = GetTemplateDeviceListResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateDeviceListResponse_Error) ProtoMessage() {}

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

// Deprecated: Use GetTemplateDeviceListResponse_Error.ProtoReflect.Descriptor instead.
func (*GetTemplateDeviceListResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{9, 0}
}

func (m *GetTemplateDeviceListResponse_Error) GetReason() isGetTemplateDeviceListResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetTemplateDeviceListResponse_Error) GetTemplateDeviceFilterValidation() *TemplateDeviceFilter_ValidationError {
	if x, ok := x.GetReason().(*GetTemplateDeviceListResponse_Error_TemplateDeviceFilterValidation); ok {
		return x.TemplateDeviceFilterValidation
	}
	return nil
}

func (x *GetTemplateDeviceListResponse_Error) GetTemplateDevicePagingValidation() *TemplateDevicePaging_ValidationError {
	if x, ok := x.GetReason().(*GetTemplateDeviceListResponse_Error_TemplateDevicePagingValidation); ok {
		return x.TemplateDevicePagingValidation
	}
	return nil
}

type isGetTemplateDeviceListResponse_Error_Reason interface {
	isGetTemplateDeviceListResponse_Error_Reason()
}

type GetTemplateDeviceListResponse_Error_TemplateDeviceFilterValidation struct {
	// Ошибка фильтрации
	TemplateDeviceFilterValidation *TemplateDeviceFilter_ValidationError `protobuf:"bytes,1,opt,name=template_device_filter_validation,json=templateDeviceFilterValidation,proto3,oneof"`
}

type GetTemplateDeviceListResponse_Error_TemplateDevicePagingValidation struct {
	// Ошибка пагинации  по страницам
	TemplateDevicePagingValidation *TemplateDevicePaging_ValidationError `protobuf:"bytes,2,opt,name=template_device_paging_validation,json=templateDevicePagingValidation,proto3,oneof"`
}

func (*GetTemplateDeviceListResponse_Error_TemplateDeviceFilterValidation) isGetTemplateDeviceListResponse_Error_Reason() {
}

func (*GetTemplateDeviceListResponse_Error_TemplateDevicePagingValidation) isGetTemplateDeviceListResponse_Error_Reason() {
}

// Ошибка запроса получения количества шаблонов приборов учета
type GetTemplateDeviceCountResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*GetTemplateDeviceCountResponse_Error_TemplateDeviceFilterValidation
	Reason isGetTemplateDeviceCountResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *GetTemplateDeviceCountResponse_Error) Reset() {
	*x = GetTemplateDeviceCountResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateDeviceCountResponse_Error) ProtoMessage() {}

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

// Deprecated: Use GetTemplateDeviceCountResponse_Error.ProtoReflect.Descriptor instead.
func (*GetTemplateDeviceCountResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{11, 0}
}

func (m *GetTemplateDeviceCountResponse_Error) GetReason() isGetTemplateDeviceCountResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetTemplateDeviceCountResponse_Error) GetTemplateDeviceFilterValidation() *TemplateDeviceFilter_ValidationError {
	if x, ok := x.GetReason().(*GetTemplateDeviceCountResponse_Error_TemplateDeviceFilterValidation); ok {
		return x.TemplateDeviceFilterValidation
	}
	return nil
}

type isGetTemplateDeviceCountResponse_Error_Reason interface {
	isGetTemplateDeviceCountResponse_Error_Reason()
}

type GetTemplateDeviceCountResponse_Error_TemplateDeviceFilterValidation struct {
	// Ошибка фильтрации
	TemplateDeviceFilterValidation *TemplateDeviceFilter_ValidationError `protobuf:"bytes,1,opt,name=template_device_filter_validation,json=templateDeviceFilterValidation,proto3,oneof"`
}

func (*GetTemplateDeviceCountResponse_Error_TemplateDeviceFilterValidation) isGetTemplateDeviceCountResponse_Error_Reason() {
}

// Ошибки валидации.
// Эти проверки выполняются до обращения в базу данных
type TemplateDevice_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Путь к полю в формате наименования protobuf
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Валидационное сообщение
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *TemplateDevice_ValidationError) Reset() {
	*x = TemplateDevice_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateDevice_ValidationError) ProtoMessage() {}

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

// Deprecated: Use TemplateDevice_ValidationError.ProtoReflect.Descriptor instead.
func (*TemplateDevice_ValidationError) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{12, 0}
}

func (x *TemplateDevice_ValidationError) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

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

// Ошибка валидации постраничной пагинации по шаблонам индикатора.
// Эти проверки выполняются до обращения в базу данных
type TemplateIndicatorPaging_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*TemplateIndicatorPaging_ValidationError_Limit
	//	*TemplateIndicatorPaging_ValidationError_Offset
	Reason isTemplateIndicatorPaging_ValidationError_Reason `protobuf_oneof:"reason"`
}

func (x *TemplateIndicatorPaging_ValidationError) Reset() {
	*x = TemplateIndicatorPaging_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateIndicatorPaging_ValidationError) ProtoMessage() {}

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

// Deprecated: Use TemplateIndicatorPaging_ValidationError.ProtoReflect.Descriptor instead.
func (*TemplateIndicatorPaging_ValidationError) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{16, 0}
}

func (m *TemplateIndicatorPaging_ValidationError) GetReason() isTemplateIndicatorPaging_ValidationError_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *TemplateIndicatorPaging_ValidationError) GetLimit() *TemplateIndicatorPaging_ValidationError_LimitInvalid {
	if x, ok := x.GetReason().(*TemplateIndicatorPaging_ValidationError_Limit); ok {
		return x.Limit
	}
	return nil
}

func (x *TemplateIndicatorPaging_ValidationError) GetOffset() *TemplateIndicatorPaging_ValidationError_OffsetInvalid {
	if x, ok := x.GetReason().(*TemplateIndicatorPaging_ValidationError_Offset); ok {
		return x.Offset
	}
	return nil
}

type isTemplateIndicatorPaging_ValidationError_Reason interface {
	isTemplateIndicatorPaging_ValidationError_Reason()
}

type TemplateIndicatorPaging_ValidationError_Limit struct {
	// Количество передано некорректно
	Limit *TemplateIndicatorPaging_ValidationError_LimitInvalid `protobuf:"bytes,1,opt,name=limit,proto3,oneof"`
}

type TemplateIndicatorPaging_ValidationError_Offset struct {
	// Сдвиг передан некорректно
	Offset *TemplateIndicatorPaging_ValidationError_OffsetInvalid `protobuf:"bytes,2,opt,name=offset,proto3,oneof"`
}

func (*TemplateIndicatorPaging_ValidationError_Limit) isTemplateIndicatorPaging_ValidationError_Reason() {
}

func (*TemplateIndicatorPaging_ValidationError_Offset) isTemplateIndicatorPaging_ValidationError_Reason() {
}

// Причины:
// - Значение количества < 0 или > 100
type TemplateIndicatorPaging_ValidationError_LimitInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *TemplateIndicatorPaging_ValidationError_LimitInvalid) Reset() {
	*x = TemplateIndicatorPaging_ValidationError_LimitInvalid{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateIndicatorPaging_ValidationError_LimitInvalid) ProtoMessage() {}

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

// Deprecated: Use TemplateIndicatorPaging_ValidationError_LimitInvalid.ProtoReflect.Descriptor instead.
func (*TemplateIndicatorPaging_ValidationError_LimitInvalid) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{16, 0, 0}
}

// Причины:
// - Значение сдвига < 0
type TemplateIndicatorPaging_ValidationError_OffsetInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *TemplateIndicatorPaging_ValidationError_OffsetInvalid) Reset() {
	*x = TemplateIndicatorPaging_ValidationError_OffsetInvalid{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateIndicatorPaging_ValidationError_OffsetInvalid) ProtoMessage() {}

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

// Deprecated: Use TemplateIndicatorPaging_ValidationError_OffsetInvalid.ProtoReflect.Descriptor instead.
func (*TemplateIndicatorPaging_ValidationError_OffsetInvalid) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{16, 0, 1}
}

// Ошибки валидации.
// Эти проверки выполняются до обращения в базу данных
type TemplateIndicatorFilter_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Путь к полю в формате наименования protobuf
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Валидационное сообщение
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *TemplateIndicatorFilter_ValidationError) Reset() {
	*x = TemplateIndicatorFilter_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateIndicatorFilter_ValidationError) ProtoMessage() {}

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

// Deprecated: Use TemplateIndicatorFilter_ValidationError.ProtoReflect.Descriptor instead.
func (*TemplateIndicatorFilter_ValidationError) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{17, 0}
}

func (x *TemplateIndicatorFilter_ValidationError) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

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

// Ошибка запроса получения списка шаблонов индикаторов
type GetTemplateIndicatorListResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*GetTemplateIndicatorListResponse_Error_TemplateIndicatorFilterValidation
	//	*GetTemplateIndicatorListResponse_Error_TemplateIndicatorPagingValidation
	Reason isGetTemplateIndicatorListResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *GetTemplateIndicatorListResponse_Error) Reset() {
	*x = GetTemplateIndicatorListResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateIndicatorListResponse_Error) ProtoMessage() {}

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

// Deprecated: Use GetTemplateIndicatorListResponse_Error.ProtoReflect.Descriptor instead.
func (*GetTemplateIndicatorListResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{18, 0}
}

func (m *GetTemplateIndicatorListResponse_Error) GetReason() isGetTemplateIndicatorListResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetTemplateIndicatorListResponse_Error) GetTemplateIndicatorFilterValidation() *TemplateIndicatorFilter_ValidationError {
	if x, ok := x.GetReason().(*GetTemplateIndicatorListResponse_Error_TemplateIndicatorFilterValidation); ok {
		return x.TemplateIndicatorFilterValidation
	}
	return nil
}

func (x *GetTemplateIndicatorListResponse_Error) GetTemplateIndicatorPagingValidation() *TemplateIndicatorPaging_ValidationError {
	if x, ok := x.GetReason().(*GetTemplateIndicatorListResponse_Error_TemplateIndicatorPagingValidation); ok {
		return x.TemplateIndicatorPagingValidation
	}
	return nil
}

type isGetTemplateIndicatorListResponse_Error_Reason interface {
	isGetTemplateIndicatorListResponse_Error_Reason()
}

type GetTemplateIndicatorListResponse_Error_TemplateIndicatorFilterValidation struct {
	// Ошибка фильтрации
	TemplateIndicatorFilterValidation *TemplateIndicatorFilter_ValidationError `protobuf:"bytes,1,opt,name=template_indicator_filter_validation,json=templateIndicatorFilterValidation,proto3,oneof"`
}

type GetTemplateIndicatorListResponse_Error_TemplateIndicatorPagingValidation struct {
	// Ошибка пагинации  по страницам
	TemplateIndicatorPagingValidation *TemplateIndicatorPaging_ValidationError `protobuf:"bytes,2,opt,name=template_indicator_paging_validation,json=templateIndicatorPagingValidation,proto3,oneof"`
}

func (*GetTemplateIndicatorListResponse_Error_TemplateIndicatorFilterValidation) isGetTemplateIndicatorListResponse_Error_Reason() {
}

func (*GetTemplateIndicatorListResponse_Error_TemplateIndicatorPagingValidation) isGetTemplateIndicatorListResponse_Error_Reason() {
}

// Ошибка запроса получения количества шаблонов индикаторов
type GetTemplateIndicatorCountResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*GetTemplateIndicatorCountResponse_Error_TemplateIndicatorFilterValidation
	Reason isGetTemplateIndicatorCountResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *GetTemplateIndicatorCountResponse_Error) Reset() {
	*x = GetTemplateIndicatorCountResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetTemplateIndicatorCountResponse_Error) ProtoMessage() {}

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

// Deprecated: Use GetTemplateIndicatorCountResponse_Error.ProtoReflect.Descriptor instead.
func (*GetTemplateIndicatorCountResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{20, 0}
}

func (m *GetTemplateIndicatorCountResponse_Error) GetReason() isGetTemplateIndicatorCountResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetTemplateIndicatorCountResponse_Error) GetTemplateIndicatorFilterValidation() *TemplateIndicatorFilter_ValidationError {
	if x, ok := x.GetReason().(*GetTemplateIndicatorCountResponse_Error_TemplateIndicatorFilterValidation); ok {
		return x.TemplateIndicatorFilterValidation
	}
	return nil
}

type isGetTemplateIndicatorCountResponse_Error_Reason interface {
	isGetTemplateIndicatorCountResponse_Error_Reason()
}

type GetTemplateIndicatorCountResponse_Error_TemplateIndicatorFilterValidation struct {
	// Ошибка фильтрации
	TemplateIndicatorFilterValidation *TemplateIndicatorFilter_ValidationError `protobuf:"bytes,1,opt,name=template_indicator_filter_validation,json=templateIndicatorFilterValidation,proto3,oneof"`
}

func (*GetTemplateIndicatorCountResponse_Error_TemplateIndicatorFilterValidation) isGetTemplateIndicatorCountResponse_Error_Reason() {
}

// Ошибка запроса сохранения шаблона индикатора
type PostTemplateIndicatorResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*PostTemplateIndicatorResponse_Error_Validation
	Reason isPostTemplateIndicatorResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *PostTemplateIndicatorResponse_Error) Reset() {
	*x = PostTemplateIndicatorResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostTemplateIndicatorResponse_Error) ProtoMessage() {}

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

// Deprecated: Use PostTemplateIndicatorResponse_Error.ProtoReflect.Descriptor instead.
func (*PostTemplateIndicatorResponse_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{22, 0}
}

func (m *PostTemplateIndicatorResponse_Error) GetReason() isPostTemplateIndicatorResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PostTemplateIndicatorResponse_Error) GetValidation() *TemplateIndicator_ValidationError {
	if x, ok := x.GetReason().(*PostTemplateIndicatorResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isPostTemplateIndicatorResponse_Error_Reason interface {
	isPostTemplateIndicatorResponse_Error_Reason()
}

type PostTemplateIndicatorResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *TemplateIndicator_ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*PostTemplateIndicatorResponse_Error_Validation) isPostTemplateIndicatorResponse_Error_Reason() {
}

// Ошибки валидации.
// Эти проверки выполняются до обращения в базу данных
type TemplateIndicator_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Путь к полю в формате наименования protobuf
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Валидационное сообщение
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *TemplateIndicator_ValidationError) Reset() {
	*x = TemplateIndicator_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TemplateIndicator_ValidationError) ProtoMessage() {}

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

// Deprecated: Use TemplateIndicator_ValidationError.ProtoReflect.Descriptor instead.
func (*TemplateIndicator_ValidationError) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP(), []int{25, 0}
}

func (x *TemplateIndicator_ValidationError) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

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

var File_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto protoreflect.FileDescriptor

var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDesc = []byte{
	0x0a, 0x48, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x76, 0x31, 0x2f, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x5f, 0x76, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f,
	0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72,
	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
	0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x62, 0x0a, 0x19, 0x50, 0x6f, 0x73, 0x74,
	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb3, 0x02, 0x0a,
	0x1a, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12,
	0x56, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f,
	0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00,
	0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x71, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x12, 0x5e, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72,
	0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x22, 0x32, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70,
	0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d,
	0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03,
	0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0x67, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x22, 0xc6, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x4a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4c, 0x0a,
	0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d,
	0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x70,
	0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb3, 0x05, 0x0a, 0x14, 0x54, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69,
	0x6e, 0x67, 0x12, 0x62, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x72,
	0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72,
	0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x67, 0x0a, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69,
	0x6e, 0x67, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
	0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
	0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, 0x91, 0x02,
	0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x12, 0x67, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x4f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x6a, 0x0a, 0x06, 0x6f, 0x66,
	0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
	0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4f,
	0x66, 0x66, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x00, 0x52, 0x06,
	0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, 0x0e, 0x0a, 0x0c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49,
	0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x1a, 0x0f, 0x0a, 0x0d, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74,
	0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
	0x6e, 0x22, 0x4c, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x19, 0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x54, 0x59, 0x50,
	0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x49,
	0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x59,
	0x50, 0x45, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x10, 0x03, 0x22,
	0x3e, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59,
	0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
	0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x02, 0x22,
	0xa2, 0x03, 0x0a, 0x14, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x37,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54,
	0x79, 0x70, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64,
	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64,
	0x73, 0x12, 0x54, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18,
	0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x70, 0x6c,
	0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x70, 0x0a, 0x16, 0x69, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x14, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65,
	0x6e, 0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x49, 0x0a, 0x0f, 0x56, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x04,
	0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x22, 0xfe, 0x03, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70,
	0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x59, 0x0a, 0x05, 0x65, 0x72,
	0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70,
	0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05,
	0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0xb5, 0x02, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12,
	0x8f, 0x01, 0x0a, 0x21, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c,
	0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e,
	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48,
	0x00, 0x52, 0x1e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x8f, 0x01, 0x0a, 0x21, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d,
	0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x1e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x6b, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70,
	0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x22, 0xc0, 0x02, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
	0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5a, 0x0a, 0x05, 0x65,
	0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d,
	0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00,
	0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0xa3, 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x12, 0x8f, 0x01, 0x0a, 0x21, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d,
	0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x1e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x90, 0x06, 0x0a, 0x0e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
	0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e,
	0x67, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63,
	0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x41, 0x74, 0x12, 0x5d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d,
	0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
	0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
	0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f,
	0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03,
	0x28, 0x05, 0x52, 0x14, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x6d,
	0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x52, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x6e,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c,
	0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x6e, 0x0a, 0x15,
	0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c,
	0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x65, 0x6e,
	0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x13, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
	0x6f, 0x72, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x49, 0x0a, 0x0f,
	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12,
	0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x68, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f,
	0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d,
	0x0a, 0x09, 0x48, 0x4f, 0x54, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a,
	0x0a, 0x43, 0x4f, 0x4c, 0x44, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x08, 0x0a,
	0x04, 0x48, 0x45, 0x41, 0x54, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x41, 0x53, 0x10, 0x04,
	0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x52, 0x49, 0x43, 0x49, 0x54, 0x59, 0x10,
	0x05, 0x22, 0x45, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a,
	0x11, 0x50, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
	0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x01,
	0x12, 0x0a, 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06,
	0x54, 0x52, 0x49, 0x50, 0x4c, 0x45, 0x10, 0x03, 0x22, 0x32, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54,
	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6d, 0x0a, 0x1c,
	0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
	0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x1f,
	0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x4d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x35, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54,
	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4f,
	0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x50,
	0x61, 0x67, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42,
	0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc7, 0x05,
	0x0a, 0x17, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x65, 0x0a, 0x0d, 0x6f, 0x72, 0x64,
	0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x41, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x6a, 0x0a, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
	0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e,
	0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x64,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05,
	0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d,
	0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, 0x97, 0x02, 0x0a, 0x0f, 0x56,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x6a,
	0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x52, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d,
	0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x6d, 0x0a, 0x06, 0x6f, 0x66,
	0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
	0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x2e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x48,
	0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, 0x0e, 0x0a, 0x0c, 0x4c, 0x69, 0x6d,
	0x69, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x1a, 0x0f, 0x0a, 0x0d, 0x4f, 0x66, 0x66,
	0x73, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65,
	0x61, 0x73, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f,
	0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x06,
	0x0a, 0x02, 0x49, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x54,
	0x59, 0x50, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45,
	0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x22, 0x3e, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x52, 0x45,
	0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
	0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x12, 0x07,
	0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x02, 0x22, 0x86, 0x04, 0x0a, 0x17, 0x54, 0x65, 0x6d, 0x70,
	0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x46, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x12, 0x57, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70,
	0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x0d,
	0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65,
	0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3f,
	0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x52, 0x0c, 0x69, 0x73, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x12,
	0x32, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x74, 0x69,
	0x74, 0x6c, 0x65, 0x12, 0x70, 0x0a, 0x16, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
	0x5f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20,
	0x03, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52,
	0x14, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72,
	0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x49, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74,
	0x68, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x22, 0x99, 0x04, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
	0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x05,
	0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4c,
	0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0xc7, 0x02, 0x0a, 0x05, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x12, 0x98, 0x01, 0x0a, 0x24, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x21, 0x74, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x46,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x98, 0x01, 0x0a, 0x24, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x50,
	0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x21, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67,
	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65,
	0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x71, 0x0a, 0x20,
	0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x4d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x35, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22,
	0xcf, 0x02, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5d, 0x0a, 0x05, 0x65,
	0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d,
	0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0xac, 0x01, 0x0a, 0x05, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x12, 0x98, 0x01, 0x0a, 0x24, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x21, 0x74, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x46,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42,
	0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x22, 0x68, 0x0a, 0x1c, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x48, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x2f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54,
	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xbf, 0x02, 0x0a, 0x1d,
	0x50, 0x6f, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c,
	0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x12, 0x59, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a,
	0x74, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x61, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70,
	0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52,
	0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72,
	0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x35, 0x0a,
	0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x02, 0x69, 0x64, 0x22, 0x21, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdc, 0x0d, 0x0a, 0x11, 0x54, 0x65, 0x6d, 0x70,
	0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a,
	0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a,
	0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0,
	0x41, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3e, 0x0a,
	0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0,
	0x41, 0x03, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a,
	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x75, 0x6e, 0x69, 0x74,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c,
	0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x55, 0x6e, 0x69,
	0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x75, 0x6e, 0x69, 0x74,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70,
	0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x5e, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x0b, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x6e, 0x0a, 0x16, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x5f, 0x75, 0x6e, 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x14, 0x70, 0x72, 0x65, 0x73,
	0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x4b, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74,
	0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53,
	0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70,
	0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a,
	0x0d, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75,
	0x61, 0x6c, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e,
	0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e,
	0x74, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x68, 0x69, 0x66, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x73,
	0x68, 0x69, 0x66, 0x74, 0x12, 0x4d, 0x0a, 0x14, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x64, 0x65,
	0x63, 0x69, 0x6d, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x67, 0x69, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
	0x12, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x44, 0x69, 0x67,
	0x69, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x65, 0x78,
	0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x18, 0x0e, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65,
	0x64, 0x46, 0x72, 0x65, 0x71, 0x12, 0x6e, 0x0a, 0x15, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
	0x6f, 0x72, 0x5f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65,
	0x52, 0x13, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x6e, 0x64, 0x6f,
	0x72, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x49, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74,
	0x68, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x22, 0x47, 0x0a, 0x0a, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17,
	0x0a, 0x13, 0x56, 0x45, 0x4e, 0x44, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
	0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x56, 0x49, 0x52,
	0x4f, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x41, 0x52, 0x54, 0x45, 0x43, 0x48, 0x10, 0x02,
	0x12, 0x07, 0x0a, 0x03, 0x52, 0x54, 0x4b, 0x10, 0x03, 0x22, 0x91, 0x02, 0x0a, 0x08, 0x55, 0x6e,
	0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x54,
	0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a,
	0x07, 0x50, 0x45, 0x52, 0x43, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x05, 0x0a, 0x01, 0x43, 0x10,
	0x02, 0x12, 0x06, 0x0a, 0x02, 0x57, 0x54, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x4b, 0x41,
	0x4c, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x05, 0x12, 0x07,
	0x0a, 0x03, 0x4b, 0x57, 0x48, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x47, 0x5f, 0x43, 0x4d,
	0x32, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x4b, 0x47, 0x46, 0x5f, 0x43, 0x4d, 0x32, 0x10, 0x08,
	0x12, 0x06, 0x0a, 0x02, 0x4d, 0x33, 0x10, 0x09, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x33, 0x5f, 0x48,
	0x10, 0x0a, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x50, 0x41, 0x10, 0x0b, 0x12, 0x06, 0x0a, 0x02, 0x4d,
	0x53, 0x10, 0x0c, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x0d,
	0x12, 0x05, 0x0a, 0x01, 0x54, 0x10, 0x0e, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x5f, 0x48, 0x10, 0x0f,
	0x12, 0x05, 0x0a, 0x01, 0x48, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, 0x4e, 0x5f, 0x4d,
	0x45, 0x41, 0x53, 0x55, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x11, 0x12, 0x07, 0x0a, 0x03, 0x49,
	0x4d, 0x50, 0x10, 0x12, 0x12, 0x05, 0x0a, 0x01, 0x4a, 0x10, 0x13, 0x12, 0x06, 0x0a, 0x02, 0x4b,
	0x4a, 0x10, 0x14, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x4a, 0x10, 0x15, 0x12, 0x07, 0x0a, 0x03, 0x57,
	0x54, 0x48, 0x10, 0x16, 0x12, 0x07, 0x0a, 0x03, 0x4b, 0x57, 0x54, 0x10, 0x17, 0x12, 0x07, 0x0a,
	0x03, 0x4d, 0x49, 0x4e, 0x10, 0x18, 0x12, 0x05, 0x0a, 0x01, 0x53, 0x10, 0x19, 0x22, 0xaa, 0x01,
	0x0a, 0x08, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49,
	0x47, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
	0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x42, 0x53, 0x4f, 0x4c, 0x55, 0x54, 0x45, 0x5f, 0x44, 0x53,
	0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x42, 0x53, 0x4f, 0x4c, 0x55, 0x54, 0x45, 0x5f, 0x52,
	0x43, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f,
	0x44, 0x53, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c,
	0x5f, 0x52, 0x43, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54,
	0x5f, 0x44, 0x53, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54,
	0x5f, 0x52, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10,
	0x07, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, 0x08,
	0x12, 0x08, 0x0a, 0x04, 0x46, 0x4c, 0x41, 0x47, 0x10, 0x09, 0x22, 0x6a, 0x0a, 0x0b, 0x41, 0x72,
	0x63, 0x68, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x52, 0x43,
	0x48, 0x49, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
	0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x10, 0x01,
	0x12, 0x0c, 0x0a, 0x08, 0x48, 0x41, 0x4c, 0x46, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x02, 0x12, 0x08,
	0x0a, 0x04, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x41, 0x59, 0x10,
	0x04, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04,
	0x59, 0x45, 0x41, 0x52, 0x10, 0x06, 0x32, 0x93, 0x10, 0x0a, 0x0f, 0x54, 0x65, 0x6d, 0x70, 0x6c,
	0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xbc, 0x01, 0x0a, 0x11, 0x47,
	0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x12, 0x36, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c,
	0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xca, 0x01, 0x0a, 0x15, 0x47, 0x65,
	0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c,
	0x69, 0x73, 0x74, 0x12, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3,
	0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
	0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f,
	0x6c, 0x69, 0x73, 0x74, 0x30, 0x01, 0x12, 0xcc, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x12, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
	0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3,
	0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
	0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xbd, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x65,
	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74,
	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc5, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x39,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54,
	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x2a, 0x2e, 0x2f,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xc8, 0x01,
	0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31,
	0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74,
	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
	0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
	0x2f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x30,
	0x01, 0x12, 0xd8, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x3e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x3f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xc9, 0x01, 0x0a,
	0x15, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
	0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x01, 0x2a, 0x22, 0x2c, 0x2f, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x69,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0xd1, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x12, 0x3c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
	0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
	0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0xe2, 0x01, 0x0a,
	0x1f, 0x72, 0x75, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x42, 0x1e, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x56, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f,
	0x48, 0x03, 0x50, 0x00, 0x5a, 0x1d, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x5f, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x5f, 0x76, 0x31, 0xd8, 0x01, 0x01, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x19, 0x4b, 0x45, 0x59, 0x41,
	0x50, 0x49, 0x53, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x43, 0x4f, 0x4e, 0x54,
	0x52, 0x4f, 0x4c, 0x56, 0x31, 0xaa, 0x02, 0x1b, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x56, 0x31, 0xca, 0x02, 0x1b, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x5c, 0x54, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5c, 0x56,
	0x31, 0xea, 0x02, 0x1d, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x3a, 0x3a, 0x54, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x3a, 0x3a, 0x56,
	0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescOnce sync.Once
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescData = file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDesc
)

func file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescGZIP() []byte {
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescOnce.Do(func() {
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescData = protoimpl.X.CompressGZIP(file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescData)
	})
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDescData
}

var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes = make([]protoimpl.MessageInfo, 42)
var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_goTypes = []interface{}{
	(TemplateDevicePaging_OrderByType)(0),                         // 0: keyapis.telemetry_control.v1.TemplateDevicePaging.OrderByType
	(TemplateDevicePaging_DirectionType)(0),                       // 1: keyapis.telemetry_control.v1.TemplateDevicePaging.DirectionType
	(TemplateDevice_MetricType)(0),                                // 2: keyapis.telemetry_control.v1.TemplateDevice.MetricType
	(TemplateDevice_PlanType)(0),                                  // 3: keyapis.telemetry_control.v1.TemplateDevice.PlanType
	(TemplateIndicatorPaging_OrderByType)(0),                      // 4: keyapis.telemetry_control.v1.TemplateIndicatorPaging.OrderByType
	(TemplateIndicatorPaging_DirectionType)(0),                    // 5: keyapis.telemetry_control.v1.TemplateIndicatorPaging.DirectionType
	(TemplateIndicator_VendorType)(0),                             // 6: keyapis.telemetry_control.v1.TemplateIndicator.VendorType
	(TemplateIndicator_UnitType)(0),                               // 7: keyapis.telemetry_control.v1.TemplateIndicator.UnitType
	(TemplateIndicator_SignType)(0),                               // 8: keyapis.telemetry_control.v1.TemplateIndicator.SignType
	(TemplateIndicator_ArchiveType)(0),                            // 9: keyapis.telemetry_control.v1.TemplateIndicator.ArchiveType
	(*PostTemplateDeviceRequest)(nil),                             // 10: keyapis.telemetry_control.v1.PostTemplateDeviceRequest
	(*PostTemplateDeviceResponse)(nil),                            // 11: keyapis.telemetry_control.v1.PostTemplateDeviceResponse
	(*DeleteTemplateDeviceRequest)(nil),                           // 12: keyapis.telemetry_control.v1.DeleteTemplateDeviceRequest
	(*DeleteTemplateDeviceResponse)(nil),                          // 13: keyapis.telemetry_control.v1.DeleteTemplateDeviceResponse
	(*GetTemplateDeviceRequest)(nil),                              // 14: keyapis.telemetry_control.v1.GetTemplateDeviceRequest
	(*GetTemplateDeviceResponse)(nil),                             // 15: keyapis.telemetry_control.v1.GetTemplateDeviceResponse
	(*GetTemplateDeviceListRequest)(nil),                          // 16: keyapis.telemetry_control.v1.GetTemplateDeviceListRequest
	(*TemplateDevicePaging)(nil),                                  // 17: keyapis.telemetry_control.v1.TemplateDevicePaging
	(*TemplateDeviceFilter)(nil),                                  // 18: keyapis.telemetry_control.v1.TemplateDeviceFilter
	(*GetTemplateDeviceListResponse)(nil),                         // 19: keyapis.telemetry_control.v1.GetTemplateDeviceListResponse
	(*GetTemplateDeviceCountRequest)(nil),                         // 20: keyapis.telemetry_control.v1.GetTemplateDeviceCountRequest
	(*GetTemplateDeviceCountResponse)(nil),                        // 21: keyapis.telemetry_control.v1.GetTemplateDeviceCountResponse
	(*TemplateDevice)(nil),                                        // 22: keyapis.telemetry_control.v1.TemplateDevice
	(*GetTemplateIndicatorRequest)(nil),                           // 23: keyapis.telemetry_control.v1.GetTemplateIndicatorRequest
	(*GetTemplateIndicatorResponse)(nil),                          // 24: keyapis.telemetry_control.v1.GetTemplateIndicatorResponse
	(*GetTemplateIndicatorListRequest)(nil),                       // 25: keyapis.telemetry_control.v1.GetTemplateIndicatorListRequest
	(*TemplateIndicatorPaging)(nil),                               // 26: keyapis.telemetry_control.v1.TemplateIndicatorPaging
	(*TemplateIndicatorFilter)(nil),                               // 27: keyapis.telemetry_control.v1.TemplateIndicatorFilter
	(*GetTemplateIndicatorListResponse)(nil),                      // 28: keyapis.telemetry_control.v1.GetTemplateIndicatorListResponse
	(*GetTemplateIndicatorCountRequest)(nil),                      // 29: keyapis.telemetry_control.v1.GetTemplateIndicatorCountRequest
	(*GetTemplateIndicatorCountResponse)(nil),                     // 30: keyapis.telemetry_control.v1.GetTemplateIndicatorCountResponse
	(*PostTemplateIndicatorRequest)(nil),                          // 31: keyapis.telemetry_control.v1.PostTemplateIndicatorRequest
	(*PostTemplateIndicatorResponse)(nil),                         // 32: keyapis.telemetry_control.v1.PostTemplateIndicatorResponse
	(*DeleteTemplateIndicatorRequest)(nil),                        // 33: keyapis.telemetry_control.v1.DeleteTemplateIndicatorRequest
	(*DeleteTemplateIndicatorResponse)(nil),                       // 34: keyapis.telemetry_control.v1.DeleteTemplateIndicatorResponse
	(*TemplateIndicator)(nil),                                     // 35: keyapis.telemetry_control.v1.TemplateIndicator
	(*PostTemplateDeviceResponse_Error)(nil),                      // 36: keyapis.telemetry_control.v1.PostTemplateDeviceResponse.Error
	(*TemplateDevicePaging_ValidationError)(nil),                  // 37: keyapis.telemetry_control.v1.TemplateDevicePaging.ValidationError
	(*TemplateDevicePaging_ValidationError_LimitInvalid)(nil),     // 38: keyapis.telemetry_control.v1.TemplateDevicePaging.ValidationError.LimitInvalid
	(*TemplateDevicePaging_ValidationError_OffsetInvalid)(nil),    // 39: keyapis.telemetry_control.v1.TemplateDevicePaging.ValidationError.OffsetInvalid
	(*TemplateDeviceFilter_ValidationError)(nil),                  // 40: keyapis.telemetry_control.v1.TemplateDeviceFilter.ValidationError
	(*GetTemplateDeviceListResponse_Error)(nil),                   // 41: keyapis.telemetry_control.v1.GetTemplateDeviceListResponse.Error
	(*GetTemplateDeviceCountResponse_Error)(nil),                  // 42: keyapis.telemetry_control.v1.GetTemplateDeviceCountResponse.Error
	(*TemplateDevice_ValidationError)(nil),                        // 43: keyapis.telemetry_control.v1.TemplateDevice.ValidationError
	(*TemplateIndicatorPaging_ValidationError)(nil),               // 44: keyapis.telemetry_control.v1.TemplateIndicatorPaging.ValidationError
	(*TemplateIndicatorPaging_ValidationError_LimitInvalid)(nil),  // 45: keyapis.telemetry_control.v1.TemplateIndicatorPaging.ValidationError.LimitInvalid
	(*TemplateIndicatorPaging_ValidationError_OffsetInvalid)(nil), // 46: keyapis.telemetry_control.v1.TemplateIndicatorPaging.ValidationError.OffsetInvalid
	(*TemplateIndicatorFilter_ValidationError)(nil),               // 47: keyapis.telemetry_control.v1.TemplateIndicatorFilter.ValidationError
	(*GetTemplateIndicatorListResponse_Error)(nil),                // 48: keyapis.telemetry_control.v1.GetTemplateIndicatorListResponse.Error
	(*GetTemplateIndicatorCountResponse_Error)(nil),               // 49: keyapis.telemetry_control.v1.GetTemplateIndicatorCountResponse.Error
	(*PostTemplateIndicatorResponse_Error)(nil),                   // 50: keyapis.telemetry_control.v1.PostTemplateIndicatorResponse.Error
	(*TemplateIndicator_ValidationError)(nil),                     // 51: keyapis.telemetry_control.v1.TemplateIndicator.ValidationError
	(*timestamppb.Timestamp)(nil),                                 // 52: google.protobuf.Timestamp
	(*wrapperspb.BoolValue)(nil),                                  // 53: google.protobuf.BoolValue
	(*wrapperspb.StringValue)(nil),                                // 54: google.protobuf.StringValue
	(*wrapperspb.FloatValue)(nil),                                 // 55: google.protobuf.FloatValue
	(*wrapperspb.Int32Value)(nil),                                 // 56: google.protobuf.Int32Value
}
var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_depIdxs = []int32{
	22, // 0: keyapis.telemetry_control.v1.PostTemplateDeviceRequest.data:type_name -> keyapis.telemetry_control.v1.TemplateDevice
	22, // 1: keyapis.telemetry_control.v1.PostTemplateDeviceResponse.data:type_name -> keyapis.telemetry_control.v1.TemplateDevice
	36, // 2: keyapis.telemetry_control.v1.PostTemplateDeviceResponse.error:type_name -> keyapis.telemetry_control.v1.PostTemplateDeviceResponse.Error
	22, // 3: keyapis.telemetry_control.v1.GetTemplateDeviceResponse.data:type_name -> keyapis.telemetry_control.v1.TemplateDevice
	18, // 4: keyapis.telemetry_control.v1.GetTemplateDeviceListRequest.filter:type_name -> keyapis.telemetry_control.v1.TemplateDeviceFilter
	17, // 5: keyapis.telemetry_control.v1.GetTemplateDeviceListRequest.paging:type_name -> keyapis.telemetry_control.v1.TemplateDevicePaging
	0,  // 6: keyapis.telemetry_control.v1.TemplateDevicePaging.order_by_type:type_name -> keyapis.telemetry_control.v1.TemplateDevicePaging.OrderByType
	1,  // 7: keyapis.telemetry_control.v1.TemplateDevicePaging.direction_type:type_name -> keyapis.telemetry_control.v1.TemplateDevicePaging.DirectionType
	2,  // 8: keyapis.telemetry_control.v1.TemplateDeviceFilter.metric_types:type_name -> keyapis.telemetry_control.v1.TemplateDevice.MetricType
	3,  // 9: keyapis.telemetry_control.v1.TemplateDeviceFilter.plan_types:type_name -> keyapis.telemetry_control.v1.TemplateDevice.PlanType
	6,  // 10: keyapis.telemetry_control.v1.TemplateDeviceFilter.indicator_vendor_types:type_name -> keyapis.telemetry_control.v1.TemplateIndicator.VendorType
	22, // 11: keyapis.telemetry_control.v1.GetTemplateDeviceListResponse.data:type_name -> keyapis.telemetry_control.v1.TemplateDevice
	41, // 12: keyapis.telemetry_control.v1.GetTemplateDeviceListResponse.error:type_name -> keyapis.telemetry_control.v1.GetTemplateDeviceListResponse.Error
	18, // 13: keyapis.telemetry_control.v1.GetTemplateDeviceCountRequest.filter:type_name -> keyapis.telemetry_control.v1.TemplateDeviceFilter
	42, // 14: keyapis.telemetry_control.v1.GetTemplateDeviceCountResponse.error:type_name -> keyapis.telemetry_control.v1.GetTemplateDeviceCountResponse.Error
	52, // 15: keyapis.telemetry_control.v1.TemplateDevice.created_at:type_name -> google.protobuf.Timestamp
	52, // 16: keyapis.telemetry_control.v1.TemplateDevice.changed_at:type_name -> google.protobuf.Timestamp
	2,  // 17: keyapis.telemetry_control.v1.TemplateDevice.metric_type:type_name -> keyapis.telemetry_control.v1.TemplateDevice.MetricType
	3,  // 18: keyapis.telemetry_control.v1.TemplateDevice.plan_type:type_name -> keyapis.telemetry_control.v1.TemplateDevice.PlanType
	6,  // 19: keyapis.telemetry_control.v1.TemplateDevice.indicator_vendor_type:type_name -> keyapis.telemetry_control.v1.TemplateIndicator.VendorType
	35, // 20: keyapis.telemetry_control.v1.GetTemplateIndicatorResponse.data:type_name -> keyapis.telemetry_control.v1.TemplateIndicator
	27, // 21: keyapis.telemetry_control.v1.GetTemplateIndicatorListRequest.filter:type_name -> keyapis.telemetry_control.v1.TemplateIndicatorFilter
	26, // 22: keyapis.telemetry_control.v1.GetTemplateIndicatorListRequest.paging:type_name -> keyapis.telemetry_control.v1.TemplateIndicatorPaging
	4,  // 23: keyapis.telemetry_control.v1.TemplateIndicatorPaging.order_by_type:type_name -> keyapis.telemetry_control.v1.TemplateIndicatorPaging.OrderByType
	5,  // 24: keyapis.telemetry_control.v1.TemplateIndicatorPaging.direction_type:type_name -> keyapis.telemetry_control.v1.TemplateIndicatorPaging.DirectionType
	8,  // 25: keyapis.telemetry_control.v1.TemplateIndicatorFilter.sign_types:type_name -> keyapis.telemetry_control.v1.TemplateIndicator.SignType
	9,  // 26: keyapis.telemetry_control.v1.TemplateIndicatorFilter.archive_types:type_name -> keyapis.telemetry_control.v1.TemplateIndicator.ArchiveType
	53, // 27: keyapis.telemetry_control.v1.TemplateIndicatorFilter.is_individual:type_name -> google.protobuf.BoolValue
	54, // 28: keyapis.telemetry_control.v1.TemplateIndicatorFilter.title:type_name -> google.protobuf.StringValue
	6,  // 29: keyapis.telemetry_control.v1.TemplateIndicatorFilter.indicator_vendor_types:type_name -> keyapis.telemetry_control.v1.TemplateIndicator.VendorType
	35, // 30: keyapis.telemetry_control.v1.GetTemplateIndicatorListResponse.data:type_name -> keyapis.telemetry_control.v1.TemplateIndicator
	48, // 31: keyapis.telemetry_control.v1.GetTemplateIndicatorListResponse.error:type_name -> keyapis.telemetry_control.v1.GetTemplateIndicatorListResponse.Error
	27, // 32: keyapis.telemetry_control.v1.GetTemplateIndicatorCountRequest.filter:type_name -> keyapis.telemetry_control.v1.TemplateIndicatorFilter
	49, // 33: keyapis.telemetry_control.v1.GetTemplateIndicatorCountResponse.error:type_name -> keyapis.telemetry_control.v1.GetTemplateIndicatorCountResponse.Error
	35, // 34: keyapis.telemetry_control.v1.PostTemplateIndicatorRequest.data:type_name -> keyapis.telemetry_control.v1.TemplateIndicator
	35, // 35: keyapis.telemetry_control.v1.PostTemplateIndicatorResponse.data:type_name -> keyapis.telemetry_control.v1.TemplateIndicator
	50, // 36: keyapis.telemetry_control.v1.PostTemplateIndicatorResponse.error:type_name -> keyapis.telemetry_control.v1.PostTemplateIndicatorResponse.Error
	52, // 37: keyapis.telemetry_control.v1.TemplateIndicator.created_at:type_name -> google.protobuf.Timestamp
	52, // 38: keyapis.telemetry_control.v1.TemplateIndicator.changed_at:type_name -> google.protobuf.Timestamp
	7,  // 39: keyapis.telemetry_control.v1.TemplateIndicator.unit_type:type_name -> keyapis.telemetry_control.v1.TemplateIndicator.UnitType
	8,  // 40: keyapis.telemetry_control.v1.TemplateIndicator.sign_type:type_name -> keyapis.telemetry_control.v1.TemplateIndicator.SignType
	9,  // 41: keyapis.telemetry_control.v1.TemplateIndicator.archive_type:type_name -> keyapis.telemetry_control.v1.TemplateIndicator.ArchiveType
	7,  // 42: keyapis.telemetry_control.v1.TemplateIndicator.presentation_unit_type:type_name -> keyapis.telemetry_control.v1.TemplateIndicator.UnitType
	54, // 43: keyapis.telemetry_control.v1.TemplateIndicator.compatibility_code:type_name -> google.protobuf.StringValue
	55, // 44: keyapis.telemetry_control.v1.TemplateIndicator.coefficient:type_name -> google.protobuf.FloatValue
	55, // 45: keyapis.telemetry_control.v1.TemplateIndicator.shift:type_name -> google.protobuf.FloatValue
	56, // 46: keyapis.telemetry_control.v1.TemplateIndicator.round_decimal_digits:type_name -> google.protobuf.Int32Value
	6,  // 47: keyapis.telemetry_control.v1.TemplateIndicator.indicator_vendor_type:type_name -> keyapis.telemetry_control.v1.TemplateIndicator.VendorType
	43, // 48: keyapis.telemetry_control.v1.PostTemplateDeviceResponse.Error.validation:type_name -> keyapis.telemetry_control.v1.TemplateDevice.ValidationError
	38, // 49: keyapis.telemetry_control.v1.TemplateDevicePaging.ValidationError.limit:type_name -> keyapis.telemetry_control.v1.TemplateDevicePaging.ValidationError.LimitInvalid
	39, // 50: keyapis.telemetry_control.v1.TemplateDevicePaging.ValidationError.offset:type_name -> keyapis.telemetry_control.v1.TemplateDevicePaging.ValidationError.OffsetInvalid
	40, // 51: keyapis.telemetry_control.v1.GetTemplateDeviceListResponse.Error.template_device_filter_validation:type_name -> keyapis.telemetry_control.v1.TemplateDeviceFilter.ValidationError
	37, // 52: keyapis.telemetry_control.v1.GetTemplateDeviceListResponse.Error.template_device_paging_validation:type_name -> keyapis.telemetry_control.v1.TemplateDevicePaging.ValidationError
	40, // 53: keyapis.telemetry_control.v1.GetTemplateDeviceCountResponse.Error.template_device_filter_validation:type_name -> keyapis.telemetry_control.v1.TemplateDeviceFilter.ValidationError
	45, // 54: keyapis.telemetry_control.v1.TemplateIndicatorPaging.ValidationError.limit:type_name -> keyapis.telemetry_control.v1.TemplateIndicatorPaging.ValidationError.LimitInvalid
	46, // 55: keyapis.telemetry_control.v1.TemplateIndicatorPaging.ValidationError.offset:type_name -> keyapis.telemetry_control.v1.TemplateIndicatorPaging.ValidationError.OffsetInvalid
	47, // 56: keyapis.telemetry_control.v1.GetTemplateIndicatorListResponse.Error.template_indicator_filter_validation:type_name -> keyapis.telemetry_control.v1.TemplateIndicatorFilter.ValidationError
	44, // 57: keyapis.telemetry_control.v1.GetTemplateIndicatorListResponse.Error.template_indicator_paging_validation:type_name -> keyapis.telemetry_control.v1.TemplateIndicatorPaging.ValidationError
	47, // 58: keyapis.telemetry_control.v1.GetTemplateIndicatorCountResponse.Error.template_indicator_filter_validation:type_name -> keyapis.telemetry_control.v1.TemplateIndicatorFilter.ValidationError
	51, // 59: keyapis.telemetry_control.v1.PostTemplateIndicatorResponse.Error.validation:type_name -> keyapis.telemetry_control.v1.TemplateIndicator.ValidationError
	14, // 60: keyapis.telemetry_control.v1.TemplateService.GetTemplateDevice:input_type -> keyapis.telemetry_control.v1.GetTemplateDeviceRequest
	16, // 61: keyapis.telemetry_control.v1.TemplateService.GetTemplateDeviceList:input_type -> keyapis.telemetry_control.v1.GetTemplateDeviceListRequest
	20, // 62: keyapis.telemetry_control.v1.TemplateService.GetTemplateDeviceCount:input_type -> keyapis.telemetry_control.v1.GetTemplateDeviceCountRequest
	10, // 63: keyapis.telemetry_control.v1.TemplateService.PostTemplateDevice:input_type -> keyapis.telemetry_control.v1.PostTemplateDeviceRequest
	12, // 64: keyapis.telemetry_control.v1.TemplateService.DeleteTemplateDevice:input_type -> keyapis.telemetry_control.v1.DeleteTemplateDeviceRequest
	23, // 65: keyapis.telemetry_control.v1.TemplateService.GetTemplateIndicator:input_type -> keyapis.telemetry_control.v1.GetTemplateIndicatorRequest
	25, // 66: keyapis.telemetry_control.v1.TemplateService.GetTemplateIndicatorList:input_type -> keyapis.telemetry_control.v1.GetTemplateIndicatorListRequest
	29, // 67: keyapis.telemetry_control.v1.TemplateService.GetTemplateIndicatorCount:input_type -> keyapis.telemetry_control.v1.GetTemplateIndicatorCountRequest
	31, // 68: keyapis.telemetry_control.v1.TemplateService.PostTemplateIndicator:input_type -> keyapis.telemetry_control.v1.PostTemplateIndicatorRequest
	33, // 69: keyapis.telemetry_control.v1.TemplateService.DeleteTemplateIndicator:input_type -> keyapis.telemetry_control.v1.DeleteTemplateIndicatorRequest
	15, // 70: keyapis.telemetry_control.v1.TemplateService.GetTemplateDevice:output_type -> keyapis.telemetry_control.v1.GetTemplateDeviceResponse
	19, // 71: keyapis.telemetry_control.v1.TemplateService.GetTemplateDeviceList:output_type -> keyapis.telemetry_control.v1.GetTemplateDeviceListResponse
	21, // 72: keyapis.telemetry_control.v1.TemplateService.GetTemplateDeviceCount:output_type -> keyapis.telemetry_control.v1.GetTemplateDeviceCountResponse
	11, // 73: keyapis.telemetry_control.v1.TemplateService.PostTemplateDevice:output_type -> keyapis.telemetry_control.v1.PostTemplateDeviceResponse
	13, // 74: keyapis.telemetry_control.v1.TemplateService.DeleteTemplateDevice:output_type -> keyapis.telemetry_control.v1.DeleteTemplateDeviceResponse
	24, // 75: keyapis.telemetry_control.v1.TemplateService.GetTemplateIndicator:output_type -> keyapis.telemetry_control.v1.GetTemplateIndicatorResponse
	28, // 76: keyapis.telemetry_control.v1.TemplateService.GetTemplateIndicatorList:output_type -> keyapis.telemetry_control.v1.GetTemplateIndicatorListResponse
	30, // 77: keyapis.telemetry_control.v1.TemplateService.GetTemplateIndicatorCount:output_type -> keyapis.telemetry_control.v1.GetTemplateIndicatorCountResponse
	32, // 78: keyapis.telemetry_control.v1.TemplateService.PostTemplateIndicator:output_type -> keyapis.telemetry_control.v1.PostTemplateIndicatorResponse
	34, // 79: keyapis.telemetry_control.v1.TemplateService.DeleteTemplateIndicator:output_type -> keyapis.telemetry_control.v1.DeleteTemplateIndicatorResponse
	70, // [70:80] is the sub-list for method output_type
	60, // [60:70] is the sub-list for method input_type
	60, // [60:60] is the sub-list for extension type_name
	60, // [60:60] is the sub-list for extension extendee
	0,  // [0:60] is the sub-list for field type_name
}

func init() { file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_init() }
func file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_init() {
	if File_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostTemplateDeviceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostTemplateDeviceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteTemplateDeviceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteTemplateDeviceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateDeviceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateDeviceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateDeviceListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateDevicePaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateDeviceFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateDeviceListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateDeviceCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateDeviceCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateDevice); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateIndicatorRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateIndicatorResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateIndicatorListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateIndicatorPaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateIndicatorFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateIndicatorListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateIndicatorCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateIndicatorCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostTemplateIndicatorRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostTemplateIndicatorResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteTemplateIndicatorRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteTemplateIndicatorResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateIndicator); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostTemplateDeviceResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateDevicePaging_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateDevicePaging_ValidationError_LimitInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateDevicePaging_ValidationError_OffsetInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateDeviceFilter_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateDeviceListResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateDeviceCountResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateDevice_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateIndicatorPaging_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateIndicatorPaging_ValidationError_LimitInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateIndicatorPaging_ValidationError_OffsetInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateIndicatorFilter_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateIndicatorListResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetTemplateIndicatorCountResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostTemplateIndicatorResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TemplateIndicator_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[1].OneofWrappers = []interface{}{
		(*PostTemplateDeviceResponse_Data)(nil),
		(*PostTemplateDeviceResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[5].OneofWrappers = []interface{}{
		(*GetTemplateDeviceResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[6].OneofWrappers = []interface{}{
		(*GetTemplateDeviceListRequest_Paging)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[9].OneofWrappers = []interface{}{
		(*GetTemplateDeviceListResponse_Data)(nil),
		(*GetTemplateDeviceListResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[11].OneofWrappers = []interface{}{
		(*GetTemplateDeviceCountResponse_Data)(nil),
		(*GetTemplateDeviceCountResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[14].OneofWrappers = []interface{}{
		(*GetTemplateIndicatorResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[15].OneofWrappers = []interface{}{
		(*GetTemplateIndicatorListRequest_Paging)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[18].OneofWrappers = []interface{}{
		(*GetTemplateIndicatorListResponse_Data)(nil),
		(*GetTemplateIndicatorListResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[20].OneofWrappers = []interface{}{
		(*GetTemplateIndicatorCountResponse_Data)(nil),
		(*GetTemplateIndicatorCountResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[22].OneofWrappers = []interface{}{
		(*PostTemplateIndicatorResponse_Data)(nil),
		(*PostTemplateIndicatorResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[26].OneofWrappers = []interface{}{
		(*PostTemplateDeviceResponse_Error_Validation)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[27].OneofWrappers = []interface{}{
		(*TemplateDevicePaging_ValidationError_Limit)(nil),
		(*TemplateDevicePaging_ValidationError_Offset)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[31].OneofWrappers = []interface{}{
		(*GetTemplateDeviceListResponse_Error_TemplateDeviceFilterValidation)(nil),
		(*GetTemplateDeviceListResponse_Error_TemplateDevicePagingValidation)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[32].OneofWrappers = []interface{}{
		(*GetTemplateDeviceCountResponse_Error_TemplateDeviceFilterValidation)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[34].OneofWrappers = []interface{}{
		(*TemplateIndicatorPaging_ValidationError_Limit)(nil),
		(*TemplateIndicatorPaging_ValidationError_Offset)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[38].OneofWrappers = []interface{}{
		(*GetTemplateIndicatorListResponse_Error_TemplateIndicatorFilterValidation)(nil),
		(*GetTemplateIndicatorListResponse_Error_TemplateIndicatorPagingValidation)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[39].OneofWrappers = []interface{}{
		(*GetTemplateIndicatorCountResponse_Error_TemplateIndicatorFilterValidation)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes[40].OneofWrappers = []interface{}{
		(*PostTemplateIndicatorResponse_Error_Validation)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDesc,
			NumEnums:      10,
			NumMessages:   42,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_goTypes,
		DependencyIndexes: file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_depIdxs,
		EnumInfos:         file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_enumTypes,
		MessageInfos:      file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_msgTypes,
	}.Build()
	File_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto = out.File
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_rawDesc = nil
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_goTypes = nil
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_template_v1_proto_depIdxs = nil
}
