blob: 4efca78e55d1c1f6d69e63c7c430881fa7e65fc8 [file] [log] [blame]
// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.12.1
// source: infra/libs/skylab/inventory/device.proto
package inventory
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Servo Firmware Channel describes the firmware expected to have on servos.
// Next Tag : 4
type ServoFwChannel int32
const (
// Servo firmware from Stable channel.
ServoFwChannel_SERVO_FW_STABLE ServoFwChannel = 0
// The previous Servo firmware from Stable channel.
ServoFwChannel_SERVO_FW_PREV ServoFwChannel = 1
// Servo firmware from Dev channel.
ServoFwChannel_SERVO_FW_DEV ServoFwChannel = 2
// Servo firmware from Alpha channel.
ServoFwChannel_SERVO_FW_ALPHA ServoFwChannel = 3
)
// Enum value maps for ServoFwChannel.
var (
ServoFwChannel_name = map[int32]string{
0: "SERVO_FW_STABLE",
1: "SERVO_FW_PREV",
2: "SERVO_FW_DEV",
3: "SERVO_FW_ALPHA",
}
ServoFwChannel_value = map[string]int32{
"SERVO_FW_STABLE": 0,
"SERVO_FW_PREV": 1,
"SERVO_FW_DEV": 2,
"SERVO_FW_ALPHA": 3,
}
)
func (x ServoFwChannel) Enum() *ServoFwChannel {
p := new(ServoFwChannel)
*p = x
return p
}
func (x ServoFwChannel) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ServoFwChannel) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[0].Descriptor()
}
func (ServoFwChannel) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[0]
}
func (x ServoFwChannel) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *ServoFwChannel) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = ServoFwChannel(num)
return nil
}
// Deprecated: Use ServoFwChannel.Descriptor instead.
func (ServoFwChannel) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{0}
}
// copy of enum from dut_state.proto
// Next Tag: 22
type PeripheralState int32
const (
// Please keep for all unknown states.
PeripheralState_UNKNOWN PeripheralState = 0
// Device and software on it is working as expected.
PeripheralState_WORKING PeripheralState = 1
// Configuration for device is not provided.
PeripheralState_MISSING_CONFIG PeripheralState = 5
// Configuration contains incorrect information.
PeripheralState_WRONG_CONFIG PeripheralState = 4
// Device is not connected/plugged.
PeripheralState_NOT_CONNECTED PeripheralState = 2
// Device is not reachable over ssh.
PeripheralState_NO_SSH PeripheralState = 6
// Device is broken or not working as expected. the state used if no specified state for the issue.
PeripheralState_BROKEN PeripheralState = 3
// Device cannot be repaired or required manual attention to fix/replace it.
PeripheralState_NEED_REPLACEMENT PeripheralState = 7
// Servo specific states.
// cr50 console missing or unresponsive.
PeripheralState_CR50_CONSOLE_MISSING PeripheralState = 13
// Servod daemon cannot start on servo-host because cr50 testlab not enabled.
PeripheralState_CCD_TESTLAB_ISSUE PeripheralState = 8
// Servod daemon cannot start on servo-host.
PeripheralState_SERVOD_ISSUE PeripheralState = 9
// device lid is not open.
PeripheralState_LID_OPEN_FAILED PeripheralState = 10
// the ribbon cable between servo and DUT is broken or not connected.
PeripheralState_BAD_RIBBON_CABLE PeripheralState = 11
// the EC on the DUT has issue.
PeripheralState_EC_BROKEN PeripheralState = 12
// Servo is not connected to the DUT.
PeripheralState_DUT_NOT_CONNECTED PeripheralState = 14
// Some component in servo-topology missed or not detected.
PeripheralState_TOPOLOGY_ISSUE PeripheralState = 15
// SBU voltage issues effect CR50 detection.
PeripheralState_SBU_LOW_VOLTAGE PeripheralState = 16
// CR50 SBU voltage detected but device was not enumerated.
PeripheralState_CR50_NOT_ENUMERATED PeripheralState = 17
// Servo serial mismatch, when servo not detected and another serial detected on previous used port.
PeripheralState_SERVO_SERIAL_MISMATCH PeripheralState = 18
// Issue to connect to servod by XMLRPC proxy.
PeripheralState_SERVOD_PROXY_ISSUE PeripheralState = 19
// Issue related to servo-host. Timeout to start servod or issue with detecting devices.
PeripheralState_SERVO_HOST_ISSUE PeripheralState = 20
// Issue related to servo_updater.
PeripheralState_SERVO_UPDATER_ISSUE PeripheralState = 21
)
// Enum value maps for PeripheralState.
var (
PeripheralState_name = map[int32]string{
0: "UNKNOWN",
1: "WORKING",
5: "MISSING_CONFIG",
4: "WRONG_CONFIG",
2: "NOT_CONNECTED",
6: "NO_SSH",
3: "BROKEN",
7: "NEED_REPLACEMENT",
13: "CR50_CONSOLE_MISSING",
8: "CCD_TESTLAB_ISSUE",
9: "SERVOD_ISSUE",
10: "LID_OPEN_FAILED",
11: "BAD_RIBBON_CABLE",
12: "EC_BROKEN",
14: "DUT_NOT_CONNECTED",
15: "TOPOLOGY_ISSUE",
16: "SBU_LOW_VOLTAGE",
17: "CR50_NOT_ENUMERATED",
18: "SERVO_SERIAL_MISMATCH",
19: "SERVOD_PROXY_ISSUE",
20: "SERVO_HOST_ISSUE",
21: "SERVO_UPDATER_ISSUE",
}
PeripheralState_value = map[string]int32{
"UNKNOWN": 0,
"WORKING": 1,
"MISSING_CONFIG": 5,
"WRONG_CONFIG": 4,
"NOT_CONNECTED": 2,
"NO_SSH": 6,
"BROKEN": 3,
"NEED_REPLACEMENT": 7,
"CR50_CONSOLE_MISSING": 13,
"CCD_TESTLAB_ISSUE": 8,
"SERVOD_ISSUE": 9,
"LID_OPEN_FAILED": 10,
"BAD_RIBBON_CABLE": 11,
"EC_BROKEN": 12,
"DUT_NOT_CONNECTED": 14,
"TOPOLOGY_ISSUE": 15,
"SBU_LOW_VOLTAGE": 16,
"CR50_NOT_ENUMERATED": 17,
"SERVO_SERIAL_MISMATCH": 18,
"SERVOD_PROXY_ISSUE": 19,
"SERVO_HOST_ISSUE": 20,
"SERVO_UPDATER_ISSUE": 21,
}
)
func (x PeripheralState) Enum() *PeripheralState {
p := new(PeripheralState)
*p = x
return p
}
func (x PeripheralState) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (PeripheralState) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[1].Descriptor()
}
func (PeripheralState) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[1]
}
func (x PeripheralState) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *PeripheralState) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = PeripheralState(num)
return nil
}
// Deprecated: Use PeripheralState.Descriptor instead.
func (PeripheralState) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{1}
}
// copy of enum from dut_state.proto
// The states are using for DUT storage and USB-drive on servo.
// Next Tag: 5
type HardwareState int32
const (
// keep for all unknown state by default.
HardwareState_HARDWARE_UNKNOWN HardwareState = 0
// Hardware is in good shape and pass all verifiers.
HardwareState_HARDWARE_NORMAL HardwareState = 1
// Hardware is still good but some not critical verifiers did not pass or provided border values.
// (used for DUT storage when usage reached 98%)
HardwareState_HARDWARE_ACCEPTABLE HardwareState = 2
// Hardware is broken or bad (did not pass verifiers).
HardwareState_HARDWARE_NEED_REPLACEMENT HardwareState = 3
// Hardware is not detected to run verifiers.
// (used for USB-drive when it expected but not detected on the device)
HardwareState_HARDWARE_NOT_DETECTED HardwareState = 4
)
// Enum value maps for HardwareState.
var (
HardwareState_name = map[int32]string{
0: "HARDWARE_UNKNOWN",
1: "HARDWARE_NORMAL",
2: "HARDWARE_ACCEPTABLE",
3: "HARDWARE_NEED_REPLACEMENT",
4: "HARDWARE_NOT_DETECTED",
}
HardwareState_value = map[string]int32{
"HARDWARE_UNKNOWN": 0,
"HARDWARE_NORMAL": 1,
"HARDWARE_ACCEPTABLE": 2,
"HARDWARE_NEED_REPLACEMENT": 3,
"HARDWARE_NOT_DETECTED": 4,
}
)
func (x HardwareState) Enum() *HardwareState {
p := new(HardwareState)
*p = x
return p
}
func (x HardwareState) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (HardwareState) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[2].Descriptor()
}
func (HardwareState) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[2]
}
func (x HardwareState) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *HardwareState) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = HardwareState(num)
return nil
}
// Deprecated: Use HardwareState.Descriptor instead.
func (HardwareState) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{2}
}
// Next Tag: 3
type LicenseType int32
const (
LicenseType_LICENSE_TYPE_UNSPECIFIED LicenseType = 0
// Microsoft Windows 10 Professional Desktop Operating System.
// Contact the Chrome OS Parallels team for license specifics.
LicenseType_LICENSE_TYPE_WINDOWS_10_PRO LicenseType = 1
// Microsoft Office Standard.
// Contact the Chrome OS Parallels team for license specifics.
LicenseType_LICENSE_TYPE_MS_OFFICE_STANDARD LicenseType = 2
)
// Enum value maps for LicenseType.
var (
LicenseType_name = map[int32]string{
0: "LICENSE_TYPE_UNSPECIFIED",
1: "LICENSE_TYPE_WINDOWS_10_PRO",
2: "LICENSE_TYPE_MS_OFFICE_STANDARD",
}
LicenseType_value = map[string]int32{
"LICENSE_TYPE_UNSPECIFIED": 0,
"LICENSE_TYPE_WINDOWS_10_PRO": 1,
"LICENSE_TYPE_MS_OFFICE_STANDARD": 2,
}
)
func (x LicenseType) Enum() *LicenseType {
p := new(LicenseType)
*p = x
return p
}
func (x LicenseType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (LicenseType) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[3].Descriptor()
}
func (LicenseType) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[3]
}
func (x LicenseType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *LicenseType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = LicenseType(num)
return nil
}
// Deprecated: Use LicenseType.Descriptor instead.
func (LicenseType) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{3}
}
// Similar to device phases, but for the cr50 module onboard.
//
// NEXT TAG: 3
type SchedulableLabels_CR50_Phase int32
const (
SchedulableLabels_CR50_PHASE_INVALID SchedulableLabels_CR50_Phase = 0
SchedulableLabels_CR50_PHASE_PREPVT SchedulableLabels_CR50_Phase = 1
SchedulableLabels_CR50_PHASE_PVT SchedulableLabels_CR50_Phase = 2
)
// Enum value maps for SchedulableLabels_CR50_Phase.
var (
SchedulableLabels_CR50_Phase_name = map[int32]string{
0: "CR50_PHASE_INVALID",
1: "CR50_PHASE_PREPVT",
2: "CR50_PHASE_PVT",
}
SchedulableLabels_CR50_Phase_value = map[string]int32{
"CR50_PHASE_INVALID": 0,
"CR50_PHASE_PREPVT": 1,
"CR50_PHASE_PVT": 2,
}
)
func (x SchedulableLabels_CR50_Phase) Enum() *SchedulableLabels_CR50_Phase {
p := new(SchedulableLabels_CR50_Phase)
*p = x
return p
}
func (x SchedulableLabels_CR50_Phase) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SchedulableLabels_CR50_Phase) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[4].Descriptor()
}
func (SchedulableLabels_CR50_Phase) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[4]
}
func (x SchedulableLabels_CR50_Phase) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SchedulableLabels_CR50_Phase) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SchedulableLabels_CR50_Phase(num)
return nil
}
// Deprecated: Use SchedulableLabels_CR50_Phase.Descriptor instead.
func (SchedulableLabels_CR50_Phase) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{10, 0}
}
// critical_pools are pool labels that the builders are dependent on, and that
// the cros-infra team is responsible for managing explicitly. All other pool
// labels used for adhoc labeling of DUTs go into self_serve_pools.
//
// NEXT TAG: 9
type SchedulableLabels_DUTPool int32
const (
SchedulableLabels_DUT_POOL_INVALID SchedulableLabels_DUTPool = 0
SchedulableLabels_DUT_POOL_CQ SchedulableLabels_DUTPool = 1
SchedulableLabels_DUT_POOL_BVT SchedulableLabels_DUTPool = 2
SchedulableLabels_DUT_POOL_SUITES SchedulableLabels_DUTPool = 3
SchedulableLabels_DUT_POOL_CTS SchedulableLabels_DUTPool = 4
SchedulableLabels_DUT_POOL_CTS_PERBUILD SchedulableLabels_DUTPool = 5
SchedulableLabels_DUT_POOL_CONTINUOUS SchedulableLabels_DUTPool = 6
SchedulableLabels_DUT_POOL_ARC_PRESUBMIT SchedulableLabels_DUTPool = 7
SchedulableLabels_DUT_POOL_QUOTA SchedulableLabels_DUTPool = 8
)
// Enum value maps for SchedulableLabels_DUTPool.
var (
SchedulableLabels_DUTPool_name = map[int32]string{
0: "DUT_POOL_INVALID",
1: "DUT_POOL_CQ",
2: "DUT_POOL_BVT",
3: "DUT_POOL_SUITES",
4: "DUT_POOL_CTS",
5: "DUT_POOL_CTS_PERBUILD",
6: "DUT_POOL_CONTINUOUS",
7: "DUT_POOL_ARC_PRESUBMIT",
8: "DUT_POOL_QUOTA",
}
SchedulableLabels_DUTPool_value = map[string]int32{
"DUT_POOL_INVALID": 0,
"DUT_POOL_CQ": 1,
"DUT_POOL_BVT": 2,
"DUT_POOL_SUITES": 3,
"DUT_POOL_CTS": 4,
"DUT_POOL_CTS_PERBUILD": 5,
"DUT_POOL_CONTINUOUS": 6,
"DUT_POOL_ARC_PRESUBMIT": 7,
"DUT_POOL_QUOTA": 8,
}
)
func (x SchedulableLabels_DUTPool) Enum() *SchedulableLabels_DUTPool {
p := new(SchedulableLabels_DUTPool)
*p = x
return p
}
func (x SchedulableLabels_DUTPool) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SchedulableLabels_DUTPool) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[5].Descriptor()
}
func (SchedulableLabels_DUTPool) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[5]
}
func (x SchedulableLabels_DUTPool) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SchedulableLabels_DUTPool) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SchedulableLabels_DUTPool(num)
return nil
}
// Deprecated: Use SchedulableLabels_DUTPool.Descriptor instead.
func (SchedulableLabels_DUTPool) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{10, 1}
}
// NEXT TAG: 3
type SchedulableLabels_CTSABI int32
const (
SchedulableLabels_CTS_ABI_INVALID SchedulableLabels_CTSABI = 0
SchedulableLabels_CTS_ABI_ARM SchedulableLabels_CTSABI = 1
SchedulableLabels_CTS_ABI_X86 SchedulableLabels_CTSABI = 2
)
// Enum value maps for SchedulableLabels_CTSABI.
var (
SchedulableLabels_CTSABI_name = map[int32]string{
0: "CTS_ABI_INVALID",
1: "CTS_ABI_ARM",
2: "CTS_ABI_X86",
}
SchedulableLabels_CTSABI_value = map[string]int32{
"CTS_ABI_INVALID": 0,
"CTS_ABI_ARM": 1,
"CTS_ABI_X86": 2,
}
)
func (x SchedulableLabels_CTSABI) Enum() *SchedulableLabels_CTSABI {
p := new(SchedulableLabels_CTSABI)
*p = x
return p
}
func (x SchedulableLabels_CTSABI) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SchedulableLabels_CTSABI) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[6].Descriptor()
}
func (SchedulableLabels_CTSABI) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[6]
}
func (x SchedulableLabels_CTSABI) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SchedulableLabels_CTSABI) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SchedulableLabels_CTSABI(num)
return nil
}
// Deprecated: Use SchedulableLabels_CTSABI.Descriptor instead.
func (SchedulableLabels_CTSABI) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{10, 2}
}
// NEXT TAG: 3
type SchedulableLabels_CTSCPU int32
const (
SchedulableLabels_CTS_CPU_INVALID SchedulableLabels_CTSCPU = 0
SchedulableLabels_CTS_CPU_ARM SchedulableLabels_CTSCPU = 1
SchedulableLabels_CTS_CPU_X86 SchedulableLabels_CTSCPU = 2
)
// Enum value maps for SchedulableLabels_CTSCPU.
var (
SchedulableLabels_CTSCPU_name = map[int32]string{
0: "CTS_CPU_INVALID",
1: "CTS_CPU_ARM",
2: "CTS_CPU_X86",
}
SchedulableLabels_CTSCPU_value = map[string]int32{
"CTS_CPU_INVALID": 0,
"CTS_CPU_ARM": 1,
"CTS_CPU_X86": 2,
}
)
func (x SchedulableLabels_CTSCPU) Enum() *SchedulableLabels_CTSCPU {
p := new(SchedulableLabels_CTSCPU)
*p = x
return p
}
func (x SchedulableLabels_CTSCPU) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SchedulableLabels_CTSCPU) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[7].Descriptor()
}
func (SchedulableLabels_CTSCPU) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[7]
}
func (x SchedulableLabels_CTSCPU) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SchedulableLabels_CTSCPU) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SchedulableLabels_CTSCPU(num)
return nil
}
// Deprecated: Use SchedulableLabels_CTSCPU.Descriptor instead.
func (SchedulableLabels_CTSCPU) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{10, 3}
}
// NEXT TAG: 2
type SchedulableLabels_ECType int32
const (
SchedulableLabels_EC_TYPE_INVALID SchedulableLabels_ECType = 0
SchedulableLabels_EC_TYPE_CHROME_OS SchedulableLabels_ECType = 1
)
// Enum value maps for SchedulableLabels_ECType.
var (
SchedulableLabels_ECType_name = map[int32]string{
0: "EC_TYPE_INVALID",
1: "EC_TYPE_CHROME_OS",
}
SchedulableLabels_ECType_value = map[string]int32{
"EC_TYPE_INVALID": 0,
"EC_TYPE_CHROME_OS": 1,
}
)
func (x SchedulableLabels_ECType) Enum() *SchedulableLabels_ECType {
p := new(SchedulableLabels_ECType)
*p = x
return p
}
func (x SchedulableLabels_ECType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SchedulableLabels_ECType) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[8].Descriptor()
}
func (SchedulableLabels_ECType) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[8]
}
func (x SchedulableLabels_ECType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SchedulableLabels_ECType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SchedulableLabels_ECType(num)
return nil
}
// Deprecated: Use SchedulableLabels_ECType.Descriptor instead.
func (SchedulableLabels_ECType) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{10, 4}
}
// NEXT TAG: 6
type SchedulableLabels_OSType int32
const (
SchedulableLabels_OS_TYPE_INVALID SchedulableLabels_OSType = 0
SchedulableLabels_OS_TYPE_ANDROID SchedulableLabels_OSType = 1
SchedulableLabels_OS_TYPE_CROS SchedulableLabels_OSType = 2
SchedulableLabels_OS_TYPE_JETSTREAM SchedulableLabels_OSType = 3
SchedulableLabels_OS_TYPE_MOBLAB SchedulableLabels_OSType = 4
SchedulableLabels_OS_TYPE_LABSTATION SchedulableLabels_OSType = 5
)
// Enum value maps for SchedulableLabels_OSType.
var (
SchedulableLabels_OSType_name = map[int32]string{
0: "OS_TYPE_INVALID",
1: "OS_TYPE_ANDROID",
2: "OS_TYPE_CROS",
3: "OS_TYPE_JETSTREAM",
4: "OS_TYPE_MOBLAB",
5: "OS_TYPE_LABSTATION",
}
SchedulableLabels_OSType_value = map[string]int32{
"OS_TYPE_INVALID": 0,
"OS_TYPE_ANDROID": 1,
"OS_TYPE_CROS": 2,
"OS_TYPE_JETSTREAM": 3,
"OS_TYPE_MOBLAB": 4,
"OS_TYPE_LABSTATION": 5,
}
)
func (x SchedulableLabels_OSType) Enum() *SchedulableLabels_OSType {
p := new(SchedulableLabels_OSType)
*p = x
return p
}
func (x SchedulableLabels_OSType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SchedulableLabels_OSType) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[9].Descriptor()
}
func (SchedulableLabels_OSType) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[9]
}
func (x SchedulableLabels_OSType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SchedulableLabels_OSType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SchedulableLabels_OSType(num)
return nil
}
// Deprecated: Use SchedulableLabels_OSType.Descriptor instead.
func (SchedulableLabels_OSType) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{10, 5}
}
// Devices go through the phases EVT -> DVT -> PVT during early development.
// Post launch devices are in the MP phase.
// Certain phases end up having to be repeated as hardware evolves. Leave some
// scope for iteration within phases.
//
// NEXT TAG: 9
type SchedulableLabels_Phase int32
const (
SchedulableLabels_PHASE_INVALID SchedulableLabels_Phase = 0
SchedulableLabels_PHASE_EVT SchedulableLabels_Phase = 1
SchedulableLabels_PHASE_EVT2 SchedulableLabels_Phase = 2
SchedulableLabels_PHASE_DVT SchedulableLabels_Phase = 3
SchedulableLabels_PHASE_DVT2 SchedulableLabels_Phase = 4
SchedulableLabels_PHASE_PVT SchedulableLabels_Phase = 5
SchedulableLabels_PHASE_PVT2 SchedulableLabels_Phase = 6
SchedulableLabels_PHASE_PVT3 SchedulableLabels_Phase = 7
SchedulableLabels_PHASE_MP SchedulableLabels_Phase = 8
)
// Enum value maps for SchedulableLabels_Phase.
var (
SchedulableLabels_Phase_name = map[int32]string{
0: "PHASE_INVALID",
1: "PHASE_EVT",
2: "PHASE_EVT2",
3: "PHASE_DVT",
4: "PHASE_DVT2",
5: "PHASE_PVT",
6: "PHASE_PVT2",
7: "PHASE_PVT3",
8: "PHASE_MP",
}
SchedulableLabels_Phase_value = map[string]int32{
"PHASE_INVALID": 0,
"PHASE_EVT": 1,
"PHASE_EVT2": 2,
"PHASE_DVT": 3,
"PHASE_DVT2": 4,
"PHASE_PVT": 5,
"PHASE_PVT2": 6,
"PHASE_PVT3": 7,
"PHASE_MP": 8,
}
)
func (x SchedulableLabels_Phase) Enum() *SchedulableLabels_Phase {
p := new(SchedulableLabels_Phase)
*p = x
return p
}
func (x SchedulableLabels_Phase) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SchedulableLabels_Phase) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[10].Descriptor()
}
func (SchedulableLabels_Phase) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[10]
}
func (x SchedulableLabels_Phase) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *SchedulableLabels_Phase) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = SchedulableLabels_Phase(num)
return nil
}
// Deprecated: Use SchedulableLabels_Phase.Descriptor instead.
func (SchedulableLabels_Phase) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{10, 6}
}
// NEXT TAG: 8
type HardwareCapabilities_Carrier int32
const (
HardwareCapabilities_CARRIER_INVALID HardwareCapabilities_Carrier = 0
HardwareCapabilities_CARRIER_ATT HardwareCapabilities_Carrier = 1
HardwareCapabilities_CARRIER_TMOBILE HardwareCapabilities_Carrier = 2
HardwareCapabilities_CARRIER_VERIZON HardwareCapabilities_Carrier = 3
HardwareCapabilities_CARRIER_SPRINT HardwareCapabilities_Carrier = 4
HardwareCapabilities_CARRIER_TESTESIM HardwareCapabilities_Carrier = 5
HardwareCapabilities_CARRIER_ESIM HardwareCapabilities_Carrier = 6
HardwareCapabilities_CARRIER_MULTISIM HardwareCapabilities_Carrier = 7
)
// Enum value maps for HardwareCapabilities_Carrier.
var (
HardwareCapabilities_Carrier_name = map[int32]string{
0: "CARRIER_INVALID",
1: "CARRIER_ATT",
2: "CARRIER_TMOBILE",
3: "CARRIER_VERIZON",
4: "CARRIER_SPRINT",
5: "CARRIER_TESTESIM",
6: "CARRIER_ESIM",
7: "CARRIER_MULTISIM",
}
HardwareCapabilities_Carrier_value = map[string]int32{
"CARRIER_INVALID": 0,
"CARRIER_ATT": 1,
"CARRIER_TMOBILE": 2,
"CARRIER_VERIZON": 3,
"CARRIER_SPRINT": 4,
"CARRIER_TESTESIM": 5,
"CARRIER_ESIM": 6,
"CARRIER_MULTISIM": 7,
}
)
func (x HardwareCapabilities_Carrier) Enum() *HardwareCapabilities_Carrier {
p := new(HardwareCapabilities_Carrier)
*p = x
return p
}
func (x HardwareCapabilities_Carrier) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (HardwareCapabilities_Carrier) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[11].Descriptor()
}
func (HardwareCapabilities_Carrier) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[11]
}
func (x HardwareCapabilities_Carrier) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *HardwareCapabilities_Carrier) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = HardwareCapabilities_Carrier(num)
return nil
}
// Deprecated: Use HardwareCapabilities_Carrier.Descriptor instead.
func (HardwareCapabilities_Carrier) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{11, 0}
}
// NEXT TAG: 13
type HardwareCapabilities_VideoAcceleration int32
const (
HardwareCapabilities_VIDEO_ACCELERATION_INVALID HardwareCapabilities_VideoAcceleration = 0
HardwareCapabilities_VIDEO_ACCELERATION_H264 HardwareCapabilities_VideoAcceleration = 1
HardwareCapabilities_VIDEO_ACCELERATION_ENC_H264 HardwareCapabilities_VideoAcceleration = 2
HardwareCapabilities_VIDEO_ACCELERATION_VP8 HardwareCapabilities_VideoAcceleration = 3
HardwareCapabilities_VIDEO_ACCELERATION_ENC_VP8 HardwareCapabilities_VideoAcceleration = 4
HardwareCapabilities_VIDEO_ACCELERATION_VP9 HardwareCapabilities_VideoAcceleration = 5
HardwareCapabilities_VIDEO_ACCELERATION_ENC_VP9 HardwareCapabilities_VideoAcceleration = 6
HardwareCapabilities_VIDEO_ACCELERATION_VP9_2 HardwareCapabilities_VideoAcceleration = 7
HardwareCapabilities_VIDEO_ACCELERATION_ENC_VP9_2 HardwareCapabilities_VideoAcceleration = 8
HardwareCapabilities_VIDEO_ACCELERATION_H265 HardwareCapabilities_VideoAcceleration = 9
HardwareCapabilities_VIDEO_ACCELERATION_ENC_H265 HardwareCapabilities_VideoAcceleration = 10
HardwareCapabilities_VIDEO_ACCELERATION_MJPG HardwareCapabilities_VideoAcceleration = 11
HardwareCapabilities_VIDEO_ACCELERATION_ENC_MJPG HardwareCapabilities_VideoAcceleration = 12
)
// Enum value maps for HardwareCapabilities_VideoAcceleration.
var (
HardwareCapabilities_VideoAcceleration_name = map[int32]string{
0: "VIDEO_ACCELERATION_INVALID",
1: "VIDEO_ACCELERATION_H264",
2: "VIDEO_ACCELERATION_ENC_H264",
3: "VIDEO_ACCELERATION_VP8",
4: "VIDEO_ACCELERATION_ENC_VP8",
5: "VIDEO_ACCELERATION_VP9",
6: "VIDEO_ACCELERATION_ENC_VP9",
7: "VIDEO_ACCELERATION_VP9_2",
8: "VIDEO_ACCELERATION_ENC_VP9_2",
9: "VIDEO_ACCELERATION_H265",
10: "VIDEO_ACCELERATION_ENC_H265",
11: "VIDEO_ACCELERATION_MJPG",
12: "VIDEO_ACCELERATION_ENC_MJPG",
}
HardwareCapabilities_VideoAcceleration_value = map[string]int32{
"VIDEO_ACCELERATION_INVALID": 0,
"VIDEO_ACCELERATION_H264": 1,
"VIDEO_ACCELERATION_ENC_H264": 2,
"VIDEO_ACCELERATION_VP8": 3,
"VIDEO_ACCELERATION_ENC_VP8": 4,
"VIDEO_ACCELERATION_VP9": 5,
"VIDEO_ACCELERATION_ENC_VP9": 6,
"VIDEO_ACCELERATION_VP9_2": 7,
"VIDEO_ACCELERATION_ENC_VP9_2": 8,
"VIDEO_ACCELERATION_H265": 9,
"VIDEO_ACCELERATION_ENC_H265": 10,
"VIDEO_ACCELERATION_MJPG": 11,
"VIDEO_ACCELERATION_ENC_MJPG": 12,
}
)
func (x HardwareCapabilities_VideoAcceleration) Enum() *HardwareCapabilities_VideoAcceleration {
p := new(HardwareCapabilities_VideoAcceleration)
*p = x
return p
}
func (x HardwareCapabilities_VideoAcceleration) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (HardwareCapabilities_VideoAcceleration) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[12].Descriptor()
}
func (HardwareCapabilities_VideoAcceleration) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[12]
}
func (x HardwareCapabilities_VideoAcceleration) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *HardwareCapabilities_VideoAcceleration) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = HardwareCapabilities_VideoAcceleration(num)
return nil
}
// Deprecated: Use HardwareCapabilities_VideoAcceleration.Descriptor instead.
func (HardwareCapabilities_VideoAcceleration) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{11, 1}
}
// NEXT TAG: 9
type Peripherals_ChameleonType int32
const (
Peripherals_CHAMELEON_TYPE_INVALID Peripherals_ChameleonType = 0
Peripherals_CHAMELEON_TYPE_DP Peripherals_ChameleonType = 2
Peripherals_CHAMELEON_TYPE_DP_HDMI Peripherals_ChameleonType = 3
Peripherals_CHAMELEON_TYPE_VGA Peripherals_ChameleonType = 4
Peripherals_CHAMELEON_TYPE_HDMI Peripherals_ChameleonType = 5
)
// Enum value maps for Peripherals_ChameleonType.
var (
Peripherals_ChameleonType_name = map[int32]string{
0: "CHAMELEON_TYPE_INVALID",
2: "CHAMELEON_TYPE_DP",
3: "CHAMELEON_TYPE_DP_HDMI",
4: "CHAMELEON_TYPE_VGA",
5: "CHAMELEON_TYPE_HDMI",
}
Peripherals_ChameleonType_value = map[string]int32{
"CHAMELEON_TYPE_INVALID": 0,
"CHAMELEON_TYPE_DP": 2,
"CHAMELEON_TYPE_DP_HDMI": 3,
"CHAMELEON_TYPE_VGA": 4,
"CHAMELEON_TYPE_HDMI": 5,
}
)
func (x Peripherals_ChameleonType) Enum() *Peripherals_ChameleonType {
p := new(Peripherals_ChameleonType)
*p = x
return p
}
func (x Peripherals_ChameleonType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Peripherals_ChameleonType) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[13].Descriptor()
}
func (Peripherals_ChameleonType) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[13]
}
func (x Peripherals_ChameleonType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Peripherals_ChameleonType) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Peripherals_ChameleonType(num)
return nil
}
// Deprecated: Use Peripherals_ChameleonType.Descriptor instead.
func (Peripherals_ChameleonType) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{12, 0}
}
// Facing of DUT's camera to be tested whose FOV should cover chart tablet's
// screen in camerabox setup.
// NEXT TAG: 3
type Peripherals_CameraboxFacing int32
const (
Peripherals_CAMERABOX_FACING_UNKNOWN Peripherals_CameraboxFacing = 0
Peripherals_CAMERABOX_FACING_BACK Peripherals_CameraboxFacing = 1
Peripherals_CAMERABOX_FACING_FRONT Peripherals_CameraboxFacing = 2
)
// Enum value maps for Peripherals_CameraboxFacing.
var (
Peripherals_CameraboxFacing_name = map[int32]string{
0: "CAMERABOX_FACING_UNKNOWN",
1: "CAMERABOX_FACING_BACK",
2: "CAMERABOX_FACING_FRONT",
}
Peripherals_CameraboxFacing_value = map[string]int32{
"CAMERABOX_FACING_UNKNOWN": 0,
"CAMERABOX_FACING_BACK": 1,
"CAMERABOX_FACING_FRONT": 2,
}
)
func (x Peripherals_CameraboxFacing) Enum() *Peripherals_CameraboxFacing {
p := new(Peripherals_CameraboxFacing)
*p = x
return p
}
func (x Peripherals_CameraboxFacing) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Peripherals_CameraboxFacing) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[14].Descriptor()
}
func (Peripherals_CameraboxFacing) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[14]
}
func (x Peripherals_CameraboxFacing) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Peripherals_CameraboxFacing) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Peripherals_CameraboxFacing(num)
return nil
}
// Deprecated: Use Peripherals_CameraboxFacing.Descriptor instead.
func (Peripherals_CameraboxFacing) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{12, 1}
}
// External light source in the camerabox, LED or NOLED.
// NEXT TAG: 3
type Peripherals_CameraboxLight int32
const (
Peripherals_CAMERABOX_LIGHT_UNKNOWN Peripherals_CameraboxLight = 0
Peripherals_CAMERABOX_LIGHT_LED Peripherals_CameraboxLight = 1
Peripherals_CAMERABOX_LIGHT_NOLED Peripherals_CameraboxLight = 2
)
// Enum value maps for Peripherals_CameraboxLight.
var (
Peripherals_CameraboxLight_name = map[int32]string{
0: "CAMERABOX_LIGHT_UNKNOWN",
1: "CAMERABOX_LIGHT_LED",
2: "CAMERABOX_LIGHT_NOLED",
}
Peripherals_CameraboxLight_value = map[string]int32{
"CAMERABOX_LIGHT_UNKNOWN": 0,
"CAMERABOX_LIGHT_LED": 1,
"CAMERABOX_LIGHT_NOLED": 2,
}
)
func (x Peripherals_CameraboxLight) Enum() *Peripherals_CameraboxLight {
p := new(Peripherals_CameraboxLight)
*p = x
return p
}
func (x Peripherals_CameraboxLight) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Peripherals_CameraboxLight) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[15].Descriptor()
}
func (Peripherals_CameraboxLight) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[15]
}
func (x Peripherals_CameraboxLight) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *Peripherals_CameraboxLight) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = Peripherals_CameraboxLight(num)
return nil
}
// Deprecated: Use Peripherals_CameraboxLight.Descriptor instead.
func (Peripherals_CameraboxLight) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{12, 2}
}
// Related to sparse CTS testing. See b/70309087
// NEXT TAG: 4
type TestCoverageHints_CTSSparse int32
const (
TestCoverageHints_CTS_SPARSE_INVALID TestCoverageHints_CTSSparse = 0
TestCoverageHints_CTS_SPARSE_2 TestCoverageHints_CTSSparse = 1
TestCoverageHints_CTS_SPARSE_3 TestCoverageHints_CTSSparse = 2
TestCoverageHints_CTS_SPARSE_5 TestCoverageHints_CTSSparse = 3
)
// Enum value maps for TestCoverageHints_CTSSparse.
var (
TestCoverageHints_CTSSparse_name = map[int32]string{
0: "CTS_SPARSE_INVALID",
1: "CTS_SPARSE_2",
2: "CTS_SPARSE_3",
3: "CTS_SPARSE_5",
}
TestCoverageHints_CTSSparse_value = map[string]int32{
"CTS_SPARSE_INVALID": 0,
"CTS_SPARSE_2": 1,
"CTS_SPARSE_3": 2,
"CTS_SPARSE_5": 3,
}
)
func (x TestCoverageHints_CTSSparse) Enum() *TestCoverageHints_CTSSparse {
p := new(TestCoverageHints_CTSSparse)
*p = x
return p
}
func (x TestCoverageHints_CTSSparse) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TestCoverageHints_CTSSparse) Descriptor() protoreflect.EnumDescriptor {
return file_infra_libs_skylab_inventory_device_proto_enumTypes[16].Descriptor()
}
func (TestCoverageHints_CTSSparse) Type() protoreflect.EnumType {
return &file_infra_libs_skylab_inventory_device_proto_enumTypes[16]
}
func (x TestCoverageHints_CTSSparse) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Do not use.
func (x *TestCoverageHints_CTSSparse) UnmarshalJSON(b []byte) error {
num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
if err != nil {
return err
}
*x = TestCoverageHints_CTSSparse(num)
return nil
}
// Deprecated: Use TestCoverageHints_CTSSparse.Descriptor instead.
func (TestCoverageHints_CTSSparse) EnumDescriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{15, 0}
}
// NEXT TAG: 4
type Device struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Each of these must contain a 'CommonDeviceSpecs common' field.
// We will use this informal composition based sharing rather than proto
// extensions because extensions are unwieldy, and we really want composition
// not inhertence.
//
// Types that are assignable to Device:
// *Device_Dut
// *Device_ServoHost
// *Device_Chameleon
Device isDevice_Device `protobuf_oneof:"device"`
}
func (x *Device) Reset() {
*x = Device{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Device) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Device) ProtoMessage() {}
func (x *Device) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 Device.ProtoReflect.Descriptor instead.
func (*Device) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{0}
}
func (m *Device) GetDevice() isDevice_Device {
if m != nil {
return m.Device
}
return nil
}
func (x *Device) GetDut() *DeviceUnderTest {
if x, ok := x.GetDevice().(*Device_Dut); ok {
return x.Dut
}
return nil
}
func (x *Device) GetServoHost() *ServoHostDevice {
if x, ok := x.GetDevice().(*Device_ServoHost); ok {
return x.ServoHost
}
return nil
}
func (x *Device) GetChameleon() *ChameleonDevice {
if x, ok := x.GetDevice().(*Device_Chameleon); ok {
return x.Chameleon
}
return nil
}
type isDevice_Device interface {
isDevice_Device()
}
type Device_Dut struct {
Dut *DeviceUnderTest `protobuf:"bytes,1,opt,name=dut,oneof"`
}
type Device_ServoHost struct {
ServoHost *ServoHostDevice `protobuf:"bytes,2,opt,name=servo_host,json=servoHost,oneof"`
}
type Device_Chameleon struct {
Chameleon *ChameleonDevice `protobuf:"bytes,3,opt,name=chameleon,oneof"`
}
func (*Device_Dut) isDevice_Device() {}
func (*Device_ServoHost) isDevice_Device() {}
func (*Device_Chameleon) isDevice_Device() {}
// NEXT TAG: 2
type DeviceUnderTest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Common *CommonDeviceSpecs `protobuf:"bytes,1,req,name=common" json:"common,omitempty"`
RemovalReason *RemovalReason `protobuf:"bytes,2,opt,name=removal_reason,json=removalReason" json:"removal_reason,omitempty"`
}
func (x *DeviceUnderTest) Reset() {
*x = DeviceUnderTest{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeviceUnderTest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeviceUnderTest) ProtoMessage() {}
func (x *DeviceUnderTest) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 DeviceUnderTest.ProtoReflect.Descriptor instead.
func (*DeviceUnderTest) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{1}
}
func (x *DeviceUnderTest) GetCommon() *CommonDeviceSpecs {
if x != nil {
return x.Common
}
return nil
}
func (x *DeviceUnderTest) GetRemovalReason() *RemovalReason {
if x != nil {
return x.RemovalReason
}
return nil
}
// NEXT TAG: 2
type ServoHostDevice struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Common *CommonDeviceSpecs `protobuf:"bytes,1,req,name=common" json:"common,omitempty"`
Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
}
func (x *ServoHostDevice) Reset() {
*x = ServoHostDevice{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ServoHostDevice) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServoHostDevice) ProtoMessage() {}
func (x *ServoHostDevice) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 ServoHostDevice.ProtoReflect.Descriptor instead.
func (*ServoHostDevice) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{2}
}
func (x *ServoHostDevice) GetCommon() *CommonDeviceSpecs {
if x != nil {
return x.Common
}
return nil
}
func (x *ServoHostDevice) GetVersion() string {
if x != nil && x.Version != nil {
return *x.Version
}
return ""
}
// NEXT TAG: 2
type ChameleonDevice struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Common *CommonDeviceSpecs `protobuf:"bytes,1,req,name=common" json:"common,omitempty"`
}
func (x *ChameleonDevice) Reset() {
*x = ChameleonDevice{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ChameleonDevice) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ChameleonDevice) ProtoMessage() {}
func (x *ChameleonDevice) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 ChameleonDevice.ProtoReflect.Descriptor instead.
func (*ChameleonDevice) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{3}
}
func (x *ChameleonDevice) GetCommon() *CommonDeviceSpecs {
if x != nil {
return x.Common
}
return nil
}
//
// Keep sorted by field name.
//
// NEXT TAG: 12
type CommonDeviceSpecs struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// These are opaque keyvals for skylab services. Devices may arbitrarily
// define any attributes they want.
Attributes []*KeyValue `protobuf:"bytes,9,rep,name=attributes" json:"attributes,omitempty"`
// A device may be locked for multiple reasons by multiple people. All locks
// need to be removed for the device to go back into circulation.
DeviceLocks []*DeviceLock `protobuf:"bytes,6,rep,name=device_locks,json=deviceLocks" json:"device_locks,omitempty"`
Environment *Environment `protobuf:"varint,10,opt,name=environment,enum=chrome.chromeos_infra.skylab.proto.inventory.Environment" json:"environment,omitempty"`
Hostname *string `protobuf:"bytes,2,req,name=hostname" json:"hostname,omitempty"`
// An invariant property corresponding to the hardware deployed for this
// device.
Hwid *string `protobuf:"bytes,3,opt,name=hwid" json:"hwid,omitempty"`
Id *string `protobuf:"bytes,1,req,name=id" json:"id,omitempty"`
// The scheduling system uses these to target jobs at the right kinds of
// devices.
Labels *SchedulableLabels `protobuf:"bytes,8,opt,name=labels" json:"labels,omitempty"`
Location *Location `protobuf:"bytes,5,opt,name=location" json:"location,omitempty"`
// Deprecated: This is needed for the master AFE in the autotest infra to
// forward RPCs to the relevant shard for a device.
// Not to be used in skylab.
//
// Deprecated: Do not use.
OwnerShard *Shard `protobuf:"bytes,7,opt,name=owner_shard,json=ownerShard" json:"owner_shard,omitempty"`
// An invariant about the distros inventory tag associated with the device.
// For ChromeOS devices, this can be read off of vboot.
SerialNumber *string `protobuf:"bytes,4,opt,name=serial_number,json=serialNumber" json:"serial_number,omitempty"`
// Similar to a useless machine, if set to true, automatic inventory
// updates should set this back to false. This can be used to test
// that automated updates are firing correctly.
UselessSwitch *bool `protobuf:"varint,11,opt,name=useless_switch,json=uselessSwitch" json:"useless_switch,omitempty"`
}
func (x *CommonDeviceSpecs) Reset() {
*x = CommonDeviceSpecs{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CommonDeviceSpecs) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CommonDeviceSpecs) ProtoMessage() {}
func (x *CommonDeviceSpecs) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 CommonDeviceSpecs.ProtoReflect.Descriptor instead.
func (*CommonDeviceSpecs) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{4}
}
func (x *CommonDeviceSpecs) GetAttributes() []*KeyValue {
if x != nil {
return x.Attributes
}
return nil
}
func (x *CommonDeviceSpecs) GetDeviceLocks() []*DeviceLock {
if x != nil {
return x.DeviceLocks
}
return nil
}
func (x *CommonDeviceSpecs) GetEnvironment() Environment {
if x != nil && x.Environment != nil {
return *x.Environment
}
return Environment_ENVIRONMENT_INVALID
}
func (x *CommonDeviceSpecs) GetHostname() string {
if x != nil && x.Hostname != nil {
return *x.Hostname
}
return ""
}
func (x *CommonDeviceSpecs) GetHwid() string {
if x != nil && x.Hwid != nil {
return *x.Hwid
}
return ""
}
func (x *CommonDeviceSpecs) GetId() string {
if x != nil && x.Id != nil {
return *x.Id
}
return ""
}
func (x *CommonDeviceSpecs) GetLabels() *SchedulableLabels {
if x != nil {
return x.Labels
}
return nil
}
func (x *CommonDeviceSpecs) GetLocation() *Location {
if x != nil {
return x.Location
}
return nil
}
// Deprecated: Do not use.
func (x *CommonDeviceSpecs) GetOwnerShard() *Shard {
if x != nil {
return x.OwnerShard
}
return nil
}
func (x *CommonDeviceSpecs) GetSerialNumber() string {
if x != nil && x.SerialNumber != nil {
return *x.SerialNumber
}
return ""
}
func (x *CommonDeviceSpecs) GetUselessSwitch() bool {
if x != nil && x.UselessSwitch != nil {
return *x.UselessSwitch
}
return false
}
// RemovalReason describes the reason for a DUT being removed from running
// tasks. See also go/skylab-dut-removal-reason NEXT TAG: 4
type RemovalReason struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// bug is a link to a bug in crbug.com or other bug tracker. Required.
Bug *string `protobuf:"bytes,1,opt,name=bug" json:"bug,omitempty"`
// comment should be a short comment to provide quick context for
// the removal reason. This should not be used as a replacement for
// keeping the bug up to date with context.
Comment *string `protobuf:"bytes,2,opt,name=comment" json:"comment,omitempty"`
// expire_time indicates when the reason for removal should be
// revisited so that DUTs don't get forgotten. Required.
ExpireTime *Timestamp `protobuf:"bytes,3,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"`
}
func (x *RemovalReason) Reset() {
*x = RemovalReason{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RemovalReason) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RemovalReason) ProtoMessage() {}
func (x *RemovalReason) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 RemovalReason.ProtoReflect.Descriptor instead.
func (*RemovalReason) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{5}
}
func (x *RemovalReason) GetBug() string {
if x != nil && x.Bug != nil {
return *x.Bug
}
return ""
}
func (x *RemovalReason) GetComment() string {
if x != nil && x.Comment != nil {
return *x.Comment
}
return ""
}
func (x *RemovalReason) GetExpireTime() *Timestamp {
if x != nil {
return x.ExpireTime
}
return nil
}
// NEXT TAG: 5
type Location struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Lab *PhysicalLab `protobuf:"bytes,1,req,name=lab" json:"lab,omitempty"`
Row *int32 `protobuf:"varint,2,req,name=row" json:"row,omitempty"`
Rack *int32 `protobuf:"varint,3,req,name=rack" json:"rack,omitempty"`
Host *int32 `protobuf:"varint,4,req,name=host" json:"host,omitempty"`
}
func (x *Location) Reset() {
*x = Location{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Location) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Location) ProtoMessage() {}
func (x *Location) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 Location.ProtoReflect.Descriptor instead.
func (*Location) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{6}
}
func (x *Location) GetLab() *PhysicalLab {
if x != nil {
return x.Lab
}
return nil
}
func (x *Location) GetRow() int32 {
if x != nil && x.Row != nil {
return *x.Row
}
return 0
}
func (x *Location) GetRack() int32 {
if x != nil && x.Rack != nil {
return *x.Rack
}
return 0
}
func (x *Location) GetHost() int32 {
if x != nil && x.Host != nil {
return *x.Host
}
return 0
}
// NEXT TAG: 2
type PhysicalLab struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
}
func (x *PhysicalLab) Reset() {
*x = PhysicalLab{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PhysicalLab) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PhysicalLab) ProtoMessage() {}
func (x *PhysicalLab) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 PhysicalLab.ProtoReflect.Descriptor instead.
func (*PhysicalLab) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{7}
}
func (x *PhysicalLab) GetName() string {
if x != nil && x.Name != nil {
return *x.Name
}
return ""
}
// A DeviceLock is a generic way of pulling any lab device out of commission
// temporarily. This allows us to quickly take out a device without deleting it
// from inventory. The exact effect of locking a device varies by the type of
// device and services involved.
// NEXT TAG: 6
type DeviceLock struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Deprecated: Do not use.
Lock *bool `protobuf:"varint,1,req,name=lock" json:"lock,omitempty"`
// This field is informational only. Do not assume this as a real user
// identity in any auth domain.
LockedBy *string `protobuf:"bytes,2,req,name=locked_by,json=lockedBy" json:"locked_by,omitempty"`
LockReason *string `protobuf:"bytes,3,req,name=lock_reason,json=lockReason" json:"lock_reason,omitempty"`
BeginTime *Timestamp `protobuf:"bytes,4,req,name=begin_time,json=beginTime" json:"begin_time,omitempty"`
ExpireTime *Timestamp `protobuf:"bytes,5,req,name=expire_time,json=expireTime" json:"expire_time,omitempty"`
// Deprecated: Do not use.
LockId *int32 `protobuf:"varint,6,req,name=lock_id,json=lockId" json:"lock_id,omitempty"`
Id *string `protobuf:"bytes,7,req,name=id" json:"id,omitempty"`
}
func (x *DeviceLock) Reset() {
*x = DeviceLock{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeviceLock) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeviceLock) ProtoMessage() {}
func (x *DeviceLock) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 DeviceLock.ProtoReflect.Descriptor instead.
func (*DeviceLock) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{8}
}
// Deprecated: Do not use.
func (x *DeviceLock) GetLock() bool {
if x != nil && x.Lock != nil {
return *x.Lock
}
return false
}
func (x *DeviceLock) GetLockedBy() string {
if x != nil && x.LockedBy != nil {
return *x.LockedBy
}
return ""
}
func (x *DeviceLock) GetLockReason() string {
if x != nil && x.LockReason != nil {
return *x.LockReason
}
return ""
}
func (x *DeviceLock) GetBeginTime() *Timestamp {
if x != nil {
return x.BeginTime
}
return nil
}
func (x *DeviceLock) GetExpireTime() *Timestamp {
if x != nil {
return x.ExpireTime
}
return nil
}
// Deprecated: Do not use.
func (x *DeviceLock) GetLockId() int32 {
if x != nil && x.LockId != nil {
return *x.LockId
}
return 0
}
func (x *DeviceLock) GetId() string {
if x != nil && x.Id != nil {
return *x.Id
}
return ""
}
// NEXT TAG: 2
type Shard struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Hostname *string `protobuf:"bytes,1,req,name=hostname" json:"hostname,omitempty"`
}
func (x *Shard) Reset() {
*x = Shard{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Shard) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Shard) ProtoMessage() {}
func (x *Shard) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 Shard.ProtoReflect.Descriptor instead.
func (*Shard) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{9}
}
func (x *Shard) GetHostname() string {
if x != nil && x.Hostname != nil {
return *x.Hostname
}
return ""
}
// These labels are used for scheduling decisions in skylab. They should be
// semantically known to the inventory service to allow filtering based on them.
// (i.e., no "extra_labels" field down here)
//
// Keep sorted by field name.
//
// NEXT TAG: 35
type SchedulableLabels struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Whether this device supports ARC execution environment.
Arc *bool `protobuf:"varint,20,opt,name=arc" json:"arc,omitempty"`
// TODO(pprabhu) This should be an enum shared with stable_versions.proto
// But there are 171 of them...
Board *string `protobuf:"bytes,2,opt,name=board" json:"board,omitempty"`
// This matches the brand id in chromiumos/infra/proto/src/device/brand_id.proto
Brand *string `protobuf:"bytes,26,opt,name=brand" json:"brand,omitempty"`
Capabilities *HardwareCapabilities `protobuf:"bytes,5,opt,name=capabilities" json:"capabilities,omitempty"`
Cr50Phase *SchedulableLabels_CR50_Phase `protobuf:"varint,22,opt,name=cr50_phase,json=cr50Phase,enum=chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels_CR50_Phase" json:"cr50_phase,omitempty"`
// Example: cr50-ro-keyid:prod
// Example: cr50-ro-keyid:0xaa66150f
Cr50RoKeyid *string `protobuf:"bytes,28,opt,name=cr50_ro_keyid,json=cr50RoKeyid" json:"cr50_ro_keyid,omitempty"`
// Example: cr50-ro-version:0.0.10
Cr50RoVersion *string `protobuf:"bytes,29,opt,name=cr50_ro_version,json=cr50RoVersion" json:"cr50_ro_version,omitempty"`
// Example: cr50-rw-keyid:prod
// Example: cr50-rw-keyid:0xde88588d
Cr50RwKeyid *string `protobuf:"bytes,30,opt,name=cr50_rw_keyid,json=cr50RwKeyid" json:"cr50_rw_keyid,omitempty"`
// Example:cr50-rw-version:0.3.20
Cr50RwVersion *string `protobuf:"bytes,31,opt,name=cr50_rw_version,json=cr50RwVersion" json:"cr50_rw_version,omitempty"`
CriticalPools []SchedulableLabels_DUTPool `protobuf:"varint,3,rep,name=critical_pools,json=criticalPools,enum=chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels_DUTPool" json:"critical_pools,omitempty"`
CtsAbi []SchedulableLabels_CTSABI `protobuf:"varint,14,rep,name=cts_abi,json=ctsAbi,enum=chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels_CTSABI" json:"cts_abi,omitempty"`
CtsCpu []SchedulableLabels_CTSCPU `protobuf:"varint,21,rep,name=cts_cpu,json=ctsCpu,enum=chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels_CTSCPU" json:"cts_cpu,omitempty"`
EcType *SchedulableLabels_ECType `protobuf:"varint,10,opt,name=ec_type,json=ecType,enum=chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels_ECType" json:"ec_type,omitempty"`
HwidComponent []string `protobuf:"bytes,33,rep,name=hwid_component,json=hwidComponent" json:"hwid_component,omitempty"`
// crbug.com/994200: this matches to label "sku" in autotest.
HwidSku *string `protobuf:"bytes,27,opt,name=hwid_sku,json=hwidSku" json:"hwid_sku,omitempty"`
// The set of software licenses assigned to the device.
Licenses []*License `protobuf:"bytes,34,rep,name=licenses" json:"licenses,omitempty"`
Model *string `protobuf:"bytes,13,opt,name=model" json:"model,omitempty"`
Sku *string `protobuf:"bytes,25,opt,name=sku" json:"sku,omitempty"`
OsType *SchedulableLabels_OSType `protobuf:"varint,15,opt,name=os_type,json=osType,enum=chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels_OSType" json:"os_type,omitempty"`
Peripherals *Peripherals `protobuf:"bytes,19,opt,name=peripherals" json:"peripherals,omitempty"`
Phase *SchedulableLabels_Phase `protobuf:"varint,16,opt,name=phase,enum=chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels_Phase" json:"phase,omitempty"`
// TODO(pprabhu) This should be an enum shared with stable_versions.proto
// But there are 171 of them...
Platform *string `protobuf:"bytes,1,opt,name=platform" json:"platform,omitempty"`
ReferenceDesign *string `protobuf:"bytes,24,opt,name=reference_design,json=referenceDesign" json:"reference_design,omitempty"`
SelfServePools []string `protobuf:"bytes,4,rep,name=self_serve_pools,json=selfServePools" json:"self_serve_pools,omitempty"`
TestCoverageHints *TestCoverageHints `protobuf:"bytes,18,opt,name=test_coverage_hints,json=testCoverageHints" json:"test_coverage_hints,omitempty"`
// useless_switch does nothing. Like a useless machine, if set to
// true, automatic label updates should set this back to false.
// This can be used to test that automated updates are firing
// correctly.
UselessSwitch *bool `protobuf:"varint,23,opt,name=useless_switch,json=uselessSwitch" json:"useless_switch,omitempty"`
Variant []string `protobuf:"bytes,17,rep,name=variant" json:"variant,omitempty"`
// Come from manufacturing config: crbug.com/1046971
WifiChip *string `protobuf:"bytes,32,opt,name=wifi_chip,json=wifiChip" json:"wifi_chip,omitempty"`
}
func (x *SchedulableLabels) Reset() {
*x = SchedulableLabels{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SchedulableLabels) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SchedulableLabels) ProtoMessage() {}
func (x *SchedulableLabels) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 SchedulableLabels.ProtoReflect.Descriptor instead.
func (*SchedulableLabels) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{10}
}
func (x *SchedulableLabels) GetArc() bool {
if x != nil && x.Arc != nil {
return *x.Arc
}
return false
}
func (x *SchedulableLabels) GetBoard() string {
if x != nil && x.Board != nil {
return *x.Board
}
return ""
}
func (x *SchedulableLabels) GetBrand() string {
if x != nil && x.Brand != nil {
return *x.Brand
}
return ""
}
func (x *SchedulableLabels) GetCapabilities() *HardwareCapabilities {
if x != nil {
return x.Capabilities
}
return nil
}
func (x *SchedulableLabels) GetCr50Phase() SchedulableLabels_CR50_Phase {
if x != nil && x.Cr50Phase != nil {
return *x.Cr50Phase
}
return SchedulableLabels_CR50_PHASE_INVALID
}
func (x *SchedulableLabels) GetCr50RoKeyid() string {
if x != nil && x.Cr50RoKeyid != nil {
return *x.Cr50RoKeyid
}
return ""
}
func (x *SchedulableLabels) GetCr50RoVersion() string {
if x != nil && x.Cr50RoVersion != nil {
return *x.Cr50RoVersion
}
return ""
}
func (x *SchedulableLabels) GetCr50RwKeyid() string {
if x != nil && x.Cr50RwKeyid != nil {
return *x.Cr50RwKeyid
}
return ""
}
func (x *SchedulableLabels) GetCr50RwVersion() string {
if x != nil && x.Cr50RwVersion != nil {
return *x.Cr50RwVersion
}
return ""
}
func (x *SchedulableLabels) GetCriticalPools() []SchedulableLabels_DUTPool {
if x != nil {
return x.CriticalPools
}
return nil
}
func (x *SchedulableLabels) GetCtsAbi() []SchedulableLabels_CTSABI {
if x != nil {
return x.CtsAbi
}
return nil
}
func (x *SchedulableLabels) GetCtsCpu() []SchedulableLabels_CTSCPU {
if x != nil {
return x.CtsCpu
}
return nil
}
func (x *SchedulableLabels) GetEcType() SchedulableLabels_ECType {
if x != nil && x.EcType != nil {
return *x.EcType
}
return SchedulableLabels_EC_TYPE_INVALID
}
func (x *SchedulableLabels) GetHwidComponent() []string {
if x != nil {
return x.HwidComponent
}
return nil
}
func (x *SchedulableLabels) GetHwidSku() string {
if x != nil && x.HwidSku != nil {
return *x.HwidSku
}
return ""
}
func (x *SchedulableLabels) GetLicenses() []*License {
if x != nil {
return x.Licenses
}
return nil
}
func (x *SchedulableLabels) GetModel() string {
if x != nil && x.Model != nil {
return *x.Model
}
return ""
}
func (x *SchedulableLabels) GetSku() string {
if x != nil && x.Sku != nil {
return *x.Sku
}
return ""
}
func (x *SchedulableLabels) GetOsType() SchedulableLabels_OSType {
if x != nil && x.OsType != nil {
return *x.OsType
}
return SchedulableLabels_OS_TYPE_INVALID
}
func (x *SchedulableLabels) GetPeripherals() *Peripherals {
if x != nil {
return x.Peripherals
}
return nil
}
func (x *SchedulableLabels) GetPhase() SchedulableLabels_Phase {
if x != nil && x.Phase != nil {
return *x.Phase
}
return SchedulableLabels_PHASE_INVALID
}
func (x *SchedulableLabels) GetPlatform() string {
if x != nil && x.Platform != nil {
return *x.Platform
}
return ""
}
func (x *SchedulableLabels) GetReferenceDesign() string {
if x != nil && x.ReferenceDesign != nil {
return *x.ReferenceDesign
}
return ""
}
func (x *SchedulableLabels) GetSelfServePools() []string {
if x != nil {
return x.SelfServePools
}
return nil
}
func (x *SchedulableLabels) GetTestCoverageHints() *TestCoverageHints {
if x != nil {
return x.TestCoverageHints
}
return nil
}
func (x *SchedulableLabels) GetUselessSwitch() bool {
if x != nil && x.UselessSwitch != nil {
return *x.UselessSwitch
}
return false
}
func (x *SchedulableLabels) GetVariant() []string {
if x != nil {
return x.Variant
}
return nil
}
func (x *SchedulableLabels) GetWifiChip() string {
if x != nil && x.WifiChip != nil {
return *x.WifiChip
}
return ""
}
// Keep sorted by field name.
//
// NEXT TAG: 20
type HardwareCapabilities struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Atrus *bool `protobuf:"varint,17,opt,name=atrus" json:"atrus,omitempty"`
Bluetooth *bool `protobuf:"varint,7,opt,name=bluetooth" json:"bluetooth,omitempty"`
Carrier *HardwareCapabilities_Carrier `protobuf:"varint,16,opt,name=carrier,enum=chrome.chromeos_infra.skylab.proto.inventory.HardwareCapabilities_Carrier" json:"carrier,omitempty"`
Detachablebase *bool `protobuf:"varint,12,opt,name=detachablebase" json:"detachablebase,omitempty"`
// Indicating if the device has fingerprint sensor.
Fingerprint *bool `protobuf:"varint,19,opt,name=fingerprint" json:"fingerprint,omitempty"`
Flashrom *bool `protobuf:"varint,14,opt,name=flashrom" json:"flashrom,omitempty"`
GpuFamily *string `protobuf:"bytes,3,opt,name=gpu_family,json=gpuFamily" json:"gpu_family,omitempty"`
Graphics *string `protobuf:"bytes,4,opt,name=graphics" json:"graphics,omitempty"`
Hotwording *bool `protobuf:"varint,15,opt,name=hotwording" json:"hotwording,omitempty"`
InternalDisplay *bool `protobuf:"varint,8,opt,name=internal_display,json=internalDisplay" json:"internal_display,omitempty"`
Lucidsleep *bool `protobuf:"varint,13,opt,name=lucidsleep" json:"lucidsleep,omitempty"`
Modem *string `protobuf:"bytes,1,opt,name=modem" json:"modem,omitempty"`
Power *string `protobuf:"bytes,6,opt,name=power" json:"power,omitempty"`
Storage *string `protobuf:"bytes,5,opt,name=storage" json:"storage,omitempty"`
Telephony *string `protobuf:"bytes,2,opt,name=telephony" json:"telephony,omitempty"`
Webcam *bool `protobuf:"varint,9,opt,name=webcam" json:"webcam,omitempty"`
Touchpad *bool `protobuf:"varint,10,opt,name=touchpad" json:"touchpad,omitempty"`
Touchscreen *bool `protobuf:"varint,18,opt,name=touchscreen" json:"touchscreen,omitempty"`
VideoAcceleration []HardwareCapabilities_VideoAcceleration `protobuf:"varint,11,rep,name=video_acceleration,json=videoAcceleration,enum=chrome.chromeos_infra.skylab.proto.inventory.HardwareCapabilities_VideoAcceleration" json:"video_acceleration,omitempty"`
}
func (x *HardwareCapabilities) Reset() {
*x = HardwareCapabilities{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *HardwareCapabilities) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*HardwareCapabilities) ProtoMessage() {}
func (x *HardwareCapabilities) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 HardwareCapabilities.ProtoReflect.Descriptor instead.
func (*HardwareCapabilities) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{11}
}
func (x *HardwareCapabilities) GetAtrus() bool {
if x != nil && x.Atrus != nil {
return *x.Atrus
}
return false
}
func (x *HardwareCapabilities) GetBluetooth() bool {
if x != nil && x.Bluetooth != nil {
return *x.Bluetooth
}
return false
}
func (x *HardwareCapabilities) GetCarrier() HardwareCapabilities_Carrier {
if x != nil && x.Carrier != nil {
return *x.Carrier
}
return HardwareCapabilities_CARRIER_INVALID
}
func (x *HardwareCapabilities) GetDetachablebase() bool {
if x != nil && x.Detachablebase != nil {
return *x.Detachablebase
}
return false
}
func (x *HardwareCapabilities) GetFingerprint() bool {
if x != nil && x.Fingerprint != nil {
return *x.Fingerprint
}
return false
}
func (x *HardwareCapabilities) GetFlashrom() bool {
if x != nil && x.Flashrom != nil {
return *x.Flashrom
}
return false
}
func (x *HardwareCapabilities) GetGpuFamily() string {
if x != nil && x.GpuFamily != nil {
return *x.GpuFamily
}
return ""
}
func (x *HardwareCapabilities) GetGraphics() string {
if x != nil && x.Graphics != nil {
return *x.Graphics
}
return ""
}
func (x *HardwareCapabilities) GetHotwording() bool {
if x != nil && x.Hotwording != nil {
return *x.Hotwording
}
return false
}
func (x *HardwareCapabilities) GetInternalDisplay() bool {
if x != nil && x.InternalDisplay != nil {
return *x.InternalDisplay
}
return false
}
func (x *HardwareCapabilities) GetLucidsleep() bool {
if x != nil && x.Lucidsleep != nil {
return *x.Lucidsleep
}
return false
}
func (x *HardwareCapabilities) GetModem() string {
if x != nil && x.Modem != nil {
return *x.Modem
}
return ""
}
func (x *HardwareCapabilities) GetPower() string {
if x != nil && x.Power != nil {
return *x.Power
}
return ""
}
func (x *HardwareCapabilities) GetStorage() string {
if x != nil && x.Storage != nil {
return *x.Storage
}
return ""
}
func (x *HardwareCapabilities) GetTelephony() string {
if x != nil && x.Telephony != nil {
return *x.Telephony
}
return ""
}
func (x *HardwareCapabilities) GetWebcam() bool {
if x != nil && x.Webcam != nil {
return *x.Webcam
}
return false
}
func (x *HardwareCapabilities) GetTouchpad() bool {
if x != nil && x.Touchpad != nil {
return *x.Touchpad
}
return false
}
func (x *HardwareCapabilities) GetTouchscreen() bool {
if x != nil && x.Touchscreen != nil {
return *x.Touchscreen
}
return false
}
func (x *HardwareCapabilities) GetVideoAcceleration() []HardwareCapabilities_VideoAcceleration {
if x != nil {
return x.VideoAcceleration
}
return nil
}
// Peripherals list peripherals connected to the device in the lab.
//
// These peripherals are not addressable as devices themselves. For peripherals
// that have complex connections with devices, create a separate device and
// connections with other devices.
//
// Keep sorted by field names.
//
// NEXT TAG: 30
type Peripherals struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
AudioBoard *bool `protobuf:"varint,6,opt,name=audio_board,json=audioBoard" json:"audio_board,omitempty"`
// The DUT is housed in an audio box to record / replay audio for audio
// testing.
AudioBox *bool `protobuf:"varint,7,opt,name=audio_box,json=audioBox" json:"audio_box,omitempty"`
// Is the DUT connected with a static 3.5mm audio cable.
AudioCable *bool `protobuf:"varint,23,opt,name=audio_cable,json=audioCable" json:"audio_cable,omitempty"`
AudioLoopbackDongle *bool `protobuf:"varint,1,opt,name=audio_loopback_dongle,json=audioLoopbackDongle" json:"audio_loopback_dongle,omitempty"`
// Is this device connected to a chameleon (GVC head).
Chameleon *bool `protobuf:"varint,5,opt,name=chameleon" json:"chameleon,omitempty"`
ChameleonType []Peripherals_ChameleonType `protobuf:"varint,10,rep,name=chameleon_type,json=chameleonType,enum=chrome.chromeos_infra.skylab.proto.inventory.Peripherals_ChameleonType" json:"chameleon_type,omitempty"`
// Whether DUT WiFi antenna is connected conductively or OTA.
Conductive *bool `protobuf:"varint,11,opt,name=conductive" json:"conductive,omitempty"`
Huddly *bool `protobuf:"varint,9,opt,name=huddly" json:"huddly,omitempty"`
Mimo *bool `protobuf:"varint,8,opt,name=mimo" json:"mimo,omitempty"`
// Whether a DUT has a special camera (Logitech PTZ Pro 2) connected to it.
Ptzpro2 *bool `protobuf:"varint,12,opt,name=ptzpro2" json:"ptzpro2,omitempty"`
Servo *bool `protobuf:"varint,2,opt,name=servo" json:"servo,omitempty"`
ServoState *PeripheralState `protobuf:"varint,15,opt,name=servo_state,json=servoState,enum=chrome.chromeos_infra.skylab.proto.inventory.PeripheralState" json:"servo_state,omitempty"`
ServoType *string `protobuf:"bytes,17,opt,name=servo_type,json=servoType" json:"servo_type,omitempty"`
ServoTopology *ServoTopology `protobuf:"bytes,24,opt,name=servo_topology,json=servoTopology" json:"servo_topology,omitempty"`
ServoFwChannel *ServoFwChannel `protobuf:"varint,27,opt,name=servo_fw_channel,json=servoFwChannel,enum=chrome.chromeos_infra.skylab.proto.inventory.ServoFwChannel" json:"servo_fw_channel,omitempty"`
SmartUsbhub *bool `protobuf:"varint,21,opt,name=smart_usbhub,json=smartUsbhub" json:"smart_usbhub,omitempty"`
Stylus *bool `protobuf:"varint,3,opt,name=stylus" json:"stylus,omitempty"`
Camerabox *bool `protobuf:"varint,13,opt,name=camerabox" json:"camerabox,omitempty"`
// Is this device inside a hermetic wifi cell.
Wificell *bool `protobuf:"varint,4,opt,name=wificell" json:"wificell,omitempty"`
// Indicate if the device is in a pre-setup environment with 802.11ax routers.
// crbug.com/1044786
Router_802_11Ax *bool `protobuf:"varint,14,opt,name=router_802_11ax,json=router80211ax" json:"router_802_11ax,omitempty"`
// Indicate how many working btpeers for this device: crbug.com/1052511
WorkingBluetoothBtpeer *int32 `protobuf:"varint,16,opt,name=working_bluetooth_btpeer,json=workingBluetoothBtpeer" json:"working_bluetooth_btpeer,omitempty"`
CameraboxFacing *Peripherals_CameraboxFacing `protobuf:"varint,18,opt,name=camerabox_facing,json=cameraboxFacing,enum=chrome.chromeos_infra.skylab.proto.inventory.Peripherals_CameraboxFacing" json:"camerabox_facing,omitempty"`
CameraboxLight *Peripherals_CameraboxLight `protobuf:"varint,22,opt,name=camerabox_light,json=cameraboxLight,enum=chrome.chromeos_infra.skylab.proto.inventory.Peripherals_CameraboxLight" json:"camerabox_light,omitempty"`
StorageState *HardwareState `protobuf:"varint,19,opt,name=storage_state,json=storageState,enum=chrome.chromeos_infra.skylab.proto.inventory.HardwareState" json:"storage_state,omitempty"`
ServoUsbState *HardwareState `protobuf:"varint,20,opt,name=servo_usb_state,json=servoUsbState,enum=chrome.chromeos_infra.skylab.proto.inventory.HardwareState" json:"servo_usb_state,omitempty"`
BatteryState *HardwareState `protobuf:"varint,26,opt,name=battery_state,json=batteryState,enum=chrome.chromeos_infra.skylab.proto.inventory.HardwareState" json:"battery_state,omitempty"`
WifiState *HardwareState `protobuf:"varint,28,opt,name=wifi_state,json=wifiState,enum=chrome.chromeos_infra.skylab.proto.inventory.HardwareState" json:"wifi_state,omitempty"`
BluetoothState *HardwareState `protobuf:"varint,29,opt,name=bluetooth_state,json=bluetoothState,enum=chrome.chromeos_infra.skylab.proto.inventory.HardwareState" json:"bluetooth_state,omitempty"`
RpmState *PeripheralState `protobuf:"varint,25,opt,name=rpm_state,json=rpmState,enum=chrome.chromeos_infra.skylab.proto.inventory.PeripheralState" json:"rpm_state,omitempty"`
}
func (x *Peripherals) Reset() {
*x = Peripherals{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Peripherals) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Peripherals) ProtoMessage() {}
func (x *Peripherals) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 Peripherals.ProtoReflect.Descriptor instead.
func (*Peripherals) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{12}
}
func (x *Peripherals) GetAudioBoard() bool {
if x != nil && x.AudioBoard != nil {
return *x.AudioBoard
}
return false
}
func (x *Peripherals) GetAudioBox() bool {
if x != nil && x.AudioBox != nil {
return *x.AudioBox
}
return false
}
func (x *Peripherals) GetAudioCable() bool {
if x != nil && x.AudioCable != nil {
return *x.AudioCable
}
return false
}
func (x *Peripherals) GetAudioLoopbackDongle() bool {
if x != nil && x.AudioLoopbackDongle != nil {
return *x.AudioLoopbackDongle
}
return false
}
func (x *Peripherals) GetChameleon() bool {
if x != nil && x.Chameleon != nil {
return *x.Chameleon
}
return false
}
func (x *Peripherals) GetChameleonType() []Peripherals_ChameleonType {
if x != nil {
return x.ChameleonType
}
return nil
}
func (x *Peripherals) GetConductive() bool {
if x != nil && x.Conductive != nil {
return *x.Conductive
}
return false
}
func (x *Peripherals) GetHuddly() bool {
if x != nil && x.Huddly != nil {
return *x.Huddly
}
return false
}
func (x *Peripherals) GetMimo() bool {
if x != nil && x.Mimo != nil {
return *x.Mimo
}
return false
}
func (x *Peripherals) GetPtzpro2() bool {
if x != nil && x.Ptzpro2 != nil {
return *x.Ptzpro2
}
return false
}
func (x *Peripherals) GetServo() bool {
if x != nil && x.Servo != nil {
return *x.Servo
}
return false
}
func (x *Peripherals) GetServoState() PeripheralState {
if x != nil && x.ServoState != nil {
return *x.ServoState
}
return PeripheralState_UNKNOWN
}
func (x *Peripherals) GetServoType() string {
if x != nil && x.ServoType != nil {
return *x.ServoType
}
return ""
}
func (x *Peripherals) GetServoTopology() *ServoTopology {
if x != nil {
return x.ServoTopology
}
return nil
}
func (x *Peripherals) GetServoFwChannel() ServoFwChannel {
if x != nil && x.ServoFwChannel != nil {
return *x.ServoFwChannel
}
return ServoFwChannel_SERVO_FW_STABLE
}
func (x *Peripherals) GetSmartUsbhub() bool {
if x != nil && x.SmartUsbhub != nil {
return *x.SmartUsbhub
}
return false
}
func (x *Peripherals) GetStylus() bool {
if x != nil && x.Stylus != nil {
return *x.Stylus
}
return false
}
func (x *Peripherals) GetCamerabox() bool {
if x != nil && x.Camerabox != nil {
return *x.Camerabox
}
return false
}
func (x *Peripherals) GetWificell() bool {
if x != nil && x.Wificell != nil {
return *x.Wificell
}
return false
}
func (x *Peripherals) GetRouter_802_11Ax() bool {
if x != nil && x.Router_802_11Ax != nil {
return *x.Router_802_11Ax
}
return false
}
func (x *Peripherals) GetWorkingBluetoothBtpeer() int32 {
if x != nil && x.WorkingBluetoothBtpeer != nil {
return *x.WorkingBluetoothBtpeer
}
return 0
}
func (x *Peripherals) GetCameraboxFacing() Peripherals_CameraboxFacing {
if x != nil && x.CameraboxFacing != nil {
return *x.CameraboxFacing
}
return Peripherals_CAMERABOX_FACING_UNKNOWN
}
func (x *Peripherals) GetCameraboxLight() Peripherals_CameraboxLight {
if x != nil && x.CameraboxLight != nil {
return *x.CameraboxLight
}
return Peripherals_CAMERABOX_LIGHT_UNKNOWN
}
func (x *Peripherals) GetStorageState() HardwareState {
if x != nil && x.StorageState != nil {
return *x.StorageState
}
return HardwareState_HARDWARE_UNKNOWN
}
func (x *Peripherals) GetServoUsbState() HardwareState {
if x != nil && x.ServoUsbState != nil {
return *x.ServoUsbState
}
return HardwareState_HARDWARE_UNKNOWN
}
func (x *Peripherals) GetBatteryState() HardwareState {
if x != nil && x.BatteryState != nil {
return *x.BatteryState
}
return HardwareState_HARDWARE_UNKNOWN
}
func (x *Peripherals) GetWifiState() HardwareState {
if x != nil && x.WifiState != nil {
return *x.WifiState
}
return HardwareState_HARDWARE_UNKNOWN
}
func (x *Peripherals) GetBluetoothState() HardwareState {
if x != nil && x.BluetoothState != nil {
return *x.BluetoothState
}
return HardwareState_HARDWARE_UNKNOWN
}
func (x *Peripherals) GetRpmState() PeripheralState {
if x != nil && x.RpmState != nil {
return *x.RpmState
}
return PeripheralState_UNKNOWN
}
// Copy from servo.proto
// Servo Topology describe connected servo devices on DUT set-up to provide Servo functionality.
// Next Tag : 3
type ServoTopology struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Main *ServoTopologyItem `protobuf:"bytes,1,opt,name=main" json:"main,omitempty"`
Children []*ServoTopologyItem `protobuf:"bytes,2,rep,name=children" json:"children,omitempty"`
}
func (x *ServoTopology) Reset() {
*x = ServoTopology{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ServoTopology) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServoTopology) ProtoMessage() {}
func (x *ServoTopology) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 ServoTopology.ProtoReflect.Descriptor instead.
func (*ServoTopology) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{13}
}
func (x *ServoTopology) GetMain() *ServoTopologyItem {
if x != nil {
return x.Main
}
return nil
}
func (x *ServoTopology) GetChildren() []*ServoTopologyItem {
if x != nil {
return x.Children
}
return nil
}
// Servo Topology Item describe details of one servo device on DUT set-up.
// Next Tag : 5
type ServoTopologyItem struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// type provides the type of servo device. Keeping as String to avoid issue with introduce new type.
Type *string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"`
// sysfs_product providess the product name of the device recorded in File System.
SysfsProduct *string `protobuf:"bytes,2,opt,name=sysfs_product,json=sysfsProduct" json:"sysfs_product,omitempty"`
// serial providess the serilal number of the device.
Serial *string `protobuf:"bytes,3,opt,name=serial" json:"serial,omitempty"`
// usb_hub_port providess the port connection to the device.
// e.g. '1-6.2.2' where
// '1-6' - port on the labstation
// '2' - port on smart-hub connected to the labstation
// '2' - port on servo hub (part of servo_v4 or servo_v4.1) connected to the smart-hub
// The same path will look '1-6.2' if connected servo_v4 directly to the labstation.
UsbHubPort *string `protobuf:"bytes,4,opt,name=usb_hub_port,json=usbHubPort" json:"usb_hub_port,omitempty"`
}
func (x *ServoTopologyItem) Reset() {
*x = ServoTopologyItem{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ServoTopologyItem) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServoTopologyItem) ProtoMessage() {}
func (x *ServoTopologyItem) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 ServoTopologyItem.ProtoReflect.Descriptor instead.
func (*ServoTopologyItem) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{14}
}
func (x *ServoTopologyItem) GetType() string {
if x != nil && x.Type != nil {
return *x.Type
}
return ""
}
func (x *ServoTopologyItem) GetSysfsProduct() string {
if x != nil && x.SysfsProduct != nil {
return *x.SysfsProduct
}
return ""
}
func (x *ServoTopologyItem) GetSerial() string {
if x != nil && x.Serial != nil {
return *x.Serial
}
return ""
}
func (x *ServoTopologyItem) GetUsbHubPort() string {
if x != nil && x.UsbHubPort != nil {
return *x.UsbHubPort
}
return ""
}
// These labels are used by the CI system to provide test coverage hints to
// Skylab.
//
// TODO(pprabhu) Most of these should instead be self-servo pools.
// Migrate the test requests to use pools and then deprecate these fields in
// favor of pools.
//
// Keep sorted by field name.
//
// NEXT TAG: 14
type TestCoverageHints struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ChaosDut *bool `protobuf:"varint,7,opt,name=chaos_dut,json=chaosDut" json:"chaos_dut,omitempty"`
ChaosNightly *bool `protobuf:"varint,13,opt,name=chaos_nightly,json=chaosNightly" json:"chaos_nightly,omitempty"`
Chromesign *bool `protobuf:"varint,11,opt,name=chromesign" json:"chromesign,omitempty"`
CtsSparse []TestCoverageHints_CTSSparse `protobuf:"varint,1,rep,name=cts_sparse,json=ctsSparse,enum=chrome.chromeos_infra.skylab.proto.inventory.TestCoverageHints_CTSSparse" json:"cts_sparse,omitempty"`
// Whether the DUT has the hangout app installed.
// This is a software feature of the DUT that is not provisioned as part of
// the test setup, hence the DUT must be labelled explicitly as supporting
// this feature. Should probably be a SoftwareFeature for the DUT.
HangoutApp *bool `protobuf:"varint,9,opt,name=hangout_app,json=hangoutApp" json:"hangout_app,omitempty"`
// Whether the DUT has the meet app installed.
// This is a software feature of the DUT that is not provisioned as part of
// the test setup, hence the DUT must be labelled explicitly as supporting
// this feature. Should probably be a SoftwareFeature for the DUT.
MeetApp *bool `protobuf:"varint,10,opt,name=meet_app,json=meetApp" json:"meet_app,omitempty"`
RecoveryTest *bool `protobuf:"varint,8,opt,name=recovery_test,json=recoveryTest" json:"recovery_test,omitempty"`
TestAudiojack *bool `protobuf:"varint,3,opt,name=test_audiojack,json=testAudiojack" json:"test_audiojack,omitempty"`
TestHdmiaudio *bool `protobuf:"varint,2,opt,name=test_hdmiaudio,json=testHdmiaudio" json:"test_hdmiaudio,omitempty"`
TestUsbaudio *bool `protobuf:"varint,4,opt,name=test_usbaudio,json=testUsbaudio" json:"test_usbaudio,omitempty"`
TestUsbprinting *bool `protobuf:"varint,5,opt,name=test_usbprinting,json=testUsbprinting" json:"test_usbprinting,omitempty"`
UsbDetect *bool `protobuf:"varint,6,opt,name=usb_detect,json=usbDetect" json:"usb_detect,omitempty"`
UseLid *bool `protobuf:"varint,12,opt,name=use_lid,json=useLid" json:"use_lid,omitempty"`
}
func (x *TestCoverageHints) Reset() {
*x = TestCoverageHints{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TestCoverageHints) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TestCoverageHints) ProtoMessage() {}
func (x *TestCoverageHints) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 TestCoverageHints.ProtoReflect.Descriptor instead.
func (*TestCoverageHints) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{15}
}
func (x *TestCoverageHints) GetChaosDut() bool {
if x != nil && x.ChaosDut != nil {
return *x.ChaosDut
}
return false
}
func (x *TestCoverageHints) GetChaosNightly() bool {
if x != nil && x.ChaosNightly != nil {
return *x.ChaosNightly
}
return false
}
func (x *TestCoverageHints) GetChromesign() bool {
if x != nil && x.Chromesign != nil {
return *x.Chromesign
}
return false
}
func (x *TestCoverageHints) GetCtsSparse() []TestCoverageHints_CTSSparse {
if x != nil {
return x.CtsSparse
}
return nil
}
func (x *TestCoverageHints) GetHangoutApp() bool {
if x != nil && x.HangoutApp != nil {
return *x.HangoutApp
}
return false
}
func (x *TestCoverageHints) GetMeetApp() bool {
if x != nil && x.MeetApp != nil {
return *x.MeetApp
}
return false
}
func (x *TestCoverageHints) GetRecoveryTest() bool {
if x != nil && x.RecoveryTest != nil {
return *x.RecoveryTest
}
return false
}
func (x *TestCoverageHints) GetTestAudiojack() bool {
if x != nil && x.TestAudiojack != nil {
return *x.TestAudiojack
}
return false
}
func (x *TestCoverageHints) GetTestHdmiaudio() bool {
if x != nil && x.TestHdmiaudio != nil {
return *x.TestHdmiaudio
}
return false
}
func (x *TestCoverageHints) GetTestUsbaudio() bool {
if x != nil && x.TestUsbaudio != nil {
return *x.TestUsbaudio
}
return false
}
func (x *TestCoverageHints) GetTestUsbprinting() bool {
if x != nil && x.TestUsbprinting != nil {
return *x.TestUsbprinting
}
return false
}
func (x *TestCoverageHints) GetUsbDetect() bool {
if x != nil && x.UsbDetect != nil {
return *x.UsbDetect
}
return false
}
func (x *TestCoverageHints) GetUseLid() bool {
if x != nil && x.UseLid != nil {
return *x.UseLid
}
return false
}
// NEXT TAG: 3
type KeyValue struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Key *string `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
}
func (x *KeyValue) Reset() {
*x = KeyValue{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *KeyValue) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*KeyValue) ProtoMessage() {}
func (x *KeyValue) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 KeyValue.ProtoReflect.Descriptor instead.
func (*KeyValue) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{16}
}
func (x *KeyValue) GetKey() string {
if x != nil && x.Key != nil {
return *x.Key
}
return ""
}
func (x *KeyValue) GetValue() string {
if x != nil && x.Value != nil {
return *x.Value
}
return ""
}
// Represents a Software License assigned to a device.
// Next Tag: 2
type License struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The type of licenses (e.g. Windows)
Type *LicenseType `protobuf:"varint,1,opt,name=type,enum=chrome.chromeos_infra.skylab.proto.inventory.LicenseType" json:"type,omitempty"`
// An optional string to uniquely identify the license that was assigned,
// for tracking purposes.
Identifier *string `protobuf:"bytes,2,opt,name=identifier" json:"identifier,omitempty"`
}
func (x *License) Reset() {
*x = License{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_libs_skylab_inventory_device_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *License) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*License) ProtoMessage() {}
func (x *License) ProtoReflect() protoreflect.Message {
mi := &file_infra_libs_skylab_inventory_device_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 License.ProtoReflect.Descriptor instead.
func (*License) Descriptor() ([]byte, []int) {
return file_infra_libs_skylab_inventory_device_proto_rawDescGZIP(), []int{17}
}
func (x *License) GetType() LicenseType {
if x != nil && x.Type != nil {
return *x.Type
}
return LicenseType_LICENSE_TYPE_UNSPECIFIED
}
func (x *License) GetIdentifier() string {
if x != nil && x.Identifier != nil {
return *x.Identifier
}
return ""
}
var File_infra_libs_skylab_inventory_device_proto protoreflect.FileDescriptor
var file_infra_libs_skylab_inventory_device_proto_rawDesc = []byte{
0x0a, 0x28, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f, 0x73, 0x6b, 0x79,
0x6c, 0x61, 0x62, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2c, 0x63, 0x68, 0x72, 0x6f,
0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72,
0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x1a, 0x28, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2f,
0x6c, 0x69, 0x62, 0x73, 0x2f, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2f, 0x69, 0x6e, 0x76, 0x65,
0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0xa4, 0x02, 0x0a, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a,
0x03, 0x64, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x63, 0x68, 0x72,
0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66,
0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x55, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x03, 0x64, 0x75, 0x74,
0x12, 0x5e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79,
0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74,
0x6f, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x6f, 0x48, 0x6f, 0x73, 0x74,
0x12, 0x5d, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6d, 0x65, 0x6c, 0x65, 0x6f, 0x6e, 0x18, 0x03, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72,
0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c,
0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f,
0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6d, 0x65, 0x6c, 0x65, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6d, 0x65, 0x6c, 0x65, 0x6f, 0x6e, 0x42,
0x08, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xce, 0x01, 0x0a, 0x0f, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, 0x57, 0x0a,
0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x3f, 0x2e,
0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f,
0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6d,
0x6d, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x52, 0x06,
0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61,
0x6c, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b,
0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73,
0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65,
0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x6d,
0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x84, 0x01, 0x0a, 0x0f, 0x53,
0x65, 0x72, 0x76, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x57,
0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x3f,
0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73,
0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x6f,
0x6d, 0x6d, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x52,
0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
0x6e, 0x22, 0x6a, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x6d, 0x65, 0x6c, 0x65, 0x6f, 0x6e, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x12, 0x57, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01,
0x20, 0x02, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79,
0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74,
0x6f, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x53, 0x70, 0x65, 0x63, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0xb8, 0x05,
0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70,
0x65, 0x63, 0x73, 0x12, 0x56, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e,
0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76,
0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x0c, 0x64,
0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79,
0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x0b, 0x64, 0x65, 0x76,
0x69, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x5b, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69,
0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e,
0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f,
0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x45, 0x6e, 0x76,
0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f,
0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x77, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x68, 0x77, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28,
0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x57, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18,
0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63,
0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b,
0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e,
0x74, 0x6f, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65,
0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x52,
0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x36, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e,
0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72,
0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e,
0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76,
0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x42, 0x02, 0x18, 0x01,
0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x0d,
0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65,
0x72, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x77, 0x69,
0x74, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x6c, 0x65,
0x73, 0x73, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x95, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x6d,
0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75,
0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x75, 0x67, 0x12, 0x18, 0x0a, 0x07,
0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65,
0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e,
0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x22, 0x91, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a,
0x03, 0x6c, 0x61, 0x62, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x72,
0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66,
0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63,
0x61, 0x6c, 0x4c, 0x61, 0x62, 0x52, 0x03, 0x6c, 0x61, 0x62, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f,
0x77, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04,
0x72, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x02, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x63, 0x6b,
0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x02, 0x28, 0x05, 0x52, 0x04,
0x68, 0x6f, 0x73, 0x74, 0x22, 0x21, 0x0a, 0x0b, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c,
0x4c, 0x61, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28,
0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc1, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x04, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01,
0x20, 0x02, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1b,
0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x02, 0x20, 0x02, 0x28,
0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c,
0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09,
0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x0a,
0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x02, 0x28, 0x0b,
0x32, 0x37, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e,
0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x62, 0x65, 0x67, 0x69, 0x6e,
0x54, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74,
0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x72, 0x6f,
0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72,
0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b,
0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x02, 0x28, 0x05, 0x42,
0x02, 0x18, 0x01, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x64, 0x18, 0x07, 0x20, 0x02, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x23, 0x0a, 0x05, 0x53,
0x68, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65,
0x22, 0xe2, 0x12, 0x0a, 0x11, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65,
0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x63, 0x18, 0x14, 0x20,
0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x72, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x61, 0x72,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x14,
0x0a, 0x05, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62,
0x72, 0x61, 0x6e, 0x64, 0x12, 0x66, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69,
0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x72,
0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66,
0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61,
0x72, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0c,
0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x69, 0x0a, 0x0a,
0x63, 0x72, 0x35, 0x30, 0x5f, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x4a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e,
0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c,
0x73, 0x2e, 0x43, 0x52, 0x35, 0x30, 0x5f, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x09, 0x63, 0x72,
0x35, 0x30, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x35, 0x30, 0x5f,
0x72, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x69, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
0x63, 0x72, 0x35, 0x30, 0x52, 0x6f, 0x4b, 0x65, 0x79, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x63,
0x72, 0x35, 0x30, 0x5f, 0x72, 0x6f, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1d,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x72, 0x35, 0x30, 0x52, 0x6f, 0x56, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x72, 0x35, 0x30, 0x5f, 0x72, 0x77, 0x5f, 0x6b,
0x65, 0x79, 0x69, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x72, 0x35, 0x30,
0x52, 0x77, 0x4b, 0x65, 0x79, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x72, 0x35, 0x30, 0x5f,
0x72, 0x77, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0d, 0x63, 0x72, 0x35, 0x30, 0x52, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
0x6e, 0x0a, 0x0e, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6f, 0x6c,
0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x47, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e,
0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76,
0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62,
0x6c, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2e, 0x44, 0x55, 0x54, 0x50, 0x6f, 0x6f, 0x6c,
0x52, 0x0d, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12,
0x5f, 0x0a, 0x07, 0x63, 0x74, 0x73, 0x5f, 0x61, 0x62, 0x69, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0e,
0x32, 0x46, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e,
0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c,
0x73, 0x2e, 0x43, 0x54, 0x53, 0x41, 0x42, 0x49, 0x52, 0x06, 0x63, 0x74, 0x73, 0x41, 0x62, 0x69,
0x12, 0x5f, 0x0a, 0x07, 0x63, 0x74, 0x73, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x15, 0x20, 0x03, 0x28,
0x0e, 0x32, 0x46, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79,
0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x61, 0x62, 0x65,
0x6c, 0x73, 0x2e, 0x43, 0x54, 0x53, 0x43, 0x50, 0x55, 0x52, 0x06, 0x63, 0x74, 0x73, 0x43, 0x70,
0x75, 0x12, 0x5f, 0x0a, 0x07, 0x65, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x46, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f,
0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61,
0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72,
0x79, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x61, 0x62,
0x65, 0x6c, 0x73, 0x2e, 0x45, 0x43, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x65, 0x63, 0x54, 0x79,
0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x77, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
0x6e, 0x65, 0x6e, 0x74, 0x18, 0x21, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x68, 0x77, 0x69, 0x64,
0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x77, 0x69,
0x64, 0x5f, 0x73, 0x6b, 0x75, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x77, 0x69,
0x64, 0x53, 0x6b, 0x75, 0x12, 0x51, 0x0a, 0x08, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73,
0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e,
0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73,
0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65,
0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x6c,
0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x10, 0x0a,
0x03, 0x73, 0x6b, 0x75, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x6b, 0x75, 0x12,
0x5f, 0x0a, 0x07, 0x6f, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x46, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e,
0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c,
0x73, 0x2e, 0x4f, 0x53, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65,
0x12, 0x5b, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x69, 0x70, 0x68, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18,
0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63,
0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b,
0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e,
0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x65, 0x72, 0x69, 0x70, 0x68, 0x65, 0x72, 0x61, 0x6c, 0x73,
0x52, 0x0b, 0x70, 0x65, 0x72, 0x69, 0x70, 0x68, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x5b, 0x0a,
0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x45, 0x2e, 0x63,
0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69,
0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x68, 0x65,
0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x68,
0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
0x6e, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x73, 0x69, 0x67,
0x6e, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f,
0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x6c,
0x66, 0x53, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x6f, 0x0a, 0x13, 0x74,
0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x68, 0x69, 0x6e,
0x74, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61,
0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e,
0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x76, 0x65,
0x72, 0x61, 0x67, 0x65, 0x48, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x11, 0x74, 0x65, 0x73, 0x74, 0x43,
0x6f, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x48, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e,
0x75, 0x73, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x17,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x77, 0x69,
0x74, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x11,
0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x1b, 0x0a,
0x09, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x63, 0x68, 0x69, 0x70, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x77, 0x69, 0x66, 0x69, 0x43, 0x68, 0x69, 0x70, 0x22, 0x4f, 0x0a, 0x0a, 0x43, 0x52,
0x35, 0x30, 0x5f, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x52, 0x35, 0x30,
0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00,
0x12, 0x15, 0x0a, 0x11, 0x43, 0x52, 0x35, 0x30, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50,
0x52, 0x45, 0x50, 0x56, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x52, 0x35, 0x30, 0x5f,
0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x56, 0x54, 0x10, 0x02, 0x22, 0xcd, 0x01, 0x0a, 0x07,
0x44, 0x55, 0x54, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x55, 0x54, 0x5f, 0x50,
0x4f, 0x4f, 0x4c, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a,
0x0b, 0x44, 0x55, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x43, 0x51, 0x10, 0x01, 0x12, 0x10,
0x0a, 0x0c, 0x44, 0x55, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x42, 0x56, 0x54, 0x10, 0x02,
0x12, 0x13, 0x0a, 0x0f, 0x44, 0x55, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x55, 0x49,
0x54, 0x45, 0x53, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x5f, 0x50, 0x4f, 0x4f,
0x4c, 0x5f, 0x43, 0x54, 0x53, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x55, 0x54, 0x5f, 0x50,
0x4f, 0x4f, 0x4c, 0x5f, 0x43, 0x54, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x42, 0x55, 0x49, 0x4c, 0x44,
0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x55, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x43,
0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x44,
0x55, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x52, 0x43, 0x5f, 0x50, 0x52, 0x45, 0x53,
0x55, 0x42, 0x4d, 0x49, 0x54, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x55, 0x54, 0x5f, 0x50,
0x4f, 0x4f, 0x4c, 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0x08, 0x22, 0x3f, 0x0a, 0x06, 0x43,
0x54, 0x53, 0x41, 0x42, 0x49, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x54, 0x53, 0x5f, 0x41, 0x42, 0x49,
0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x54,
0x53, 0x5f, 0x41, 0x42, 0x49, 0x5f, 0x41, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x43,
0x54, 0x53, 0x5f, 0x41, 0x42, 0x49, 0x5f, 0x58, 0x38, 0x36, 0x10, 0x02, 0x22, 0x3f, 0x0a, 0x06,
0x43, 0x54, 0x53, 0x43, 0x50, 0x55, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x54, 0x53, 0x5f, 0x43, 0x50,
0x55, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43,
0x54, 0x53, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x41, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b,
0x43, 0x54, 0x53, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x58, 0x38, 0x36, 0x10, 0x02, 0x22, 0x34, 0x0a,
0x06, 0x45, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x43, 0x5f, 0x54, 0x59,
0x50, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11,
0x45, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x5f, 0x4f,
0x53, 0x10, 0x01, 0x22, 0x87, 0x01, 0x0a, 0x06, 0x4f, 0x53, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13,
0x0a, 0x0f, 0x4f, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49,
0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41,
0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x53, 0x5f, 0x54,
0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x53,
0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4a, 0x45, 0x54, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x10,
0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x42,
0x4c, 0x41, 0x42, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45,
0x5f, 0x4c, 0x41, 0x42, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x22, 0x95, 0x01,
0x0a, 0x05, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45,
0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x48,
0x41, 0x53, 0x45, 0x5f, 0x45, 0x56, 0x54, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x48, 0x41,
0x53, 0x45, 0x5f, 0x45, 0x56, 0x54, 0x32, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x48, 0x41,
0x53, 0x45, 0x5f, 0x44, 0x56, 0x54, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x48, 0x41, 0x53,
0x45, 0x5f, 0x44, 0x56, 0x54, 0x32, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x48, 0x41, 0x53,
0x45, 0x5f, 0x50, 0x56, 0x54, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x48, 0x41, 0x53, 0x45,
0x5f, 0x50, 0x56, 0x54, 0x32, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x48, 0x41, 0x53, 0x45,
0x5f, 0x50, 0x56, 0x54, 0x33, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x48, 0x41, 0x53, 0x45,
0x5f, 0x4d, 0x50, 0x10, 0x08, 0x22, 0xd2, 0x0a, 0x0a, 0x14, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61,
0x72, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x14,
0x0a, 0x05, 0x61, 0x74, 0x72, 0x75, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61,
0x74, 0x72, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74,
0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f,
0x74, 0x68, 0x12, 0x64, 0x0a, 0x07, 0x63, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x18, 0x10, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x4a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72,
0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c,
0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f,
0x72, 0x79, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62,
0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x52,
0x07, 0x63, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65, 0x74, 0x61,
0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x62, 0x61, 0x73, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08,
0x52, 0x0e, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x62, 0x61, 0x73, 0x65,
0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18,
0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69,
0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x72, 0x6f, 0x6d, 0x18, 0x0e,
0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x72, 0x6f, 0x6d, 0x12, 0x1d,
0x0a, 0x0a, 0x67, 0x70, 0x75, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x09, 0x67, 0x70, 0x75, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x1a, 0x0a,
0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x6f, 0x74,
0x77, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68,
0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x74,
0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x08, 0x20,
0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x69, 0x73,
0x70, 0x6c, 0x61, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x75, 0x63, 0x69, 0x64, 0x73, 0x6c, 0x65,
0x65, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6c, 0x75, 0x63, 0x69, 0x64, 0x73,
0x6c, 0x65, 0x65, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f,
0x77, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72,
0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65,
0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74,
0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x62, 0x63,
0x61, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x77, 0x65, 0x62, 0x63, 0x61, 0x6d,
0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x70, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01,
0x28, 0x08, 0x52, 0x08, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x70, 0x61, 0x64, 0x12, 0x20, 0x0a, 0x0b,
0x74, 0x6f, 0x75, 0x63, 0x68, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28,
0x08, 0x52, 0x0b, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x83,
0x01, 0x0a, 0x12, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x54, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e,
0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77,
0x61, 0x72, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e,
0x56, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x11, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x22, 0xab, 0x01, 0x0a, 0x07, 0x43, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72,
0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x52, 0x52, 0x49, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41,
0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x41, 0x52, 0x52, 0x49, 0x45, 0x52,
0x5f, 0x41, 0x54, 0x54, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x52, 0x52, 0x49, 0x45,
0x52, 0x5f, 0x54, 0x4d, 0x4f, 0x42, 0x49, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x43,
0x41, 0x52, 0x52, 0x49, 0x45, 0x52, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x10, 0x03,
0x12, 0x12, 0x0a, 0x0e, 0x43, 0x41, 0x52, 0x52, 0x49, 0x45, 0x52, 0x5f, 0x53, 0x50, 0x52, 0x49,
0x4e, 0x54, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x41, 0x52, 0x52, 0x49, 0x45, 0x52, 0x5f,
0x54, 0x45, 0x53, 0x54, 0x45, 0x53, 0x49, 0x4d, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x41,
0x52, 0x52, 0x49, 0x45, 0x52, 0x5f, 0x45, 0x53, 0x49, 0x4d, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10,
0x43, 0x41, 0x52, 0x52, 0x49, 0x45, 0x52, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x53, 0x49, 0x4d,
0x10, 0x07, 0x22, 0xa5, 0x03, 0x0a, 0x11, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x63, 0x63, 0x65,
0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x56, 0x49, 0x44, 0x45,
0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49,
0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x49, 0x44, 0x45,
0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x48,
0x32, 0x36, 0x34, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x41,
0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x43, 0x5f,
0x48, 0x32, 0x36, 0x34, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f,
0x41, 0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x50, 0x38,
0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45,
0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x43, 0x5f, 0x56, 0x50, 0x38,
0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45,
0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x50, 0x39, 0x10, 0x05, 0x12, 0x1e,
0x0a, 0x1a, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x41,
0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x43, 0x5f, 0x56, 0x50, 0x39, 0x10, 0x06, 0x12, 0x1c,
0x0a, 0x18, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x41,
0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x50, 0x39, 0x5f, 0x32, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c,
0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49,
0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x43, 0x5f, 0x56, 0x50, 0x39, 0x5f, 0x32, 0x10, 0x08, 0x12, 0x1b,
0x0a, 0x17, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x41,
0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x48, 0x32, 0x36, 0x35, 0x10, 0x09, 0x12, 0x1f, 0x0a, 0x1b, 0x56,
0x49, 0x44, 0x45, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f,
0x4e, 0x5f, 0x45, 0x4e, 0x43, 0x5f, 0x48, 0x32, 0x36, 0x35, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17,
0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49,
0x4f, 0x4e, 0x5f, 0x4d, 0x4a, 0x50, 0x47, 0x10, 0x0b, 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x49, 0x44,
0x45, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
0x45, 0x4e, 0x43, 0x5f, 0x4d, 0x4a, 0x50, 0x47, 0x10, 0x0c, 0x22, 0xe5, 0x10, 0x0a, 0x0b, 0x50,
0x65, 0x72, 0x69, 0x70, 0x68, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75,
0x64, 0x69, 0x6f, 0x5f, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0a, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61,
0x75, 0x64, 0x69, 0x6f, 0x5f, 0x62, 0x6f, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
0x61, 0x75, 0x64, 0x69, 0x6f, 0x42, 0x6f, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69,
0x6f, 0x5f, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61,
0x75, 0x64, 0x69, 0x6f, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x75, 0x64,
0x69, 0x6f, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x6f, 0x6e, 0x67,
0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x4c,
0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x44, 0x6f, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x1c, 0x0a,
0x09, 0x63, 0x68, 0x61, 0x6d, 0x65, 0x6c, 0x65, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
0x52, 0x09, 0x63, 0x68, 0x61, 0x6d, 0x65, 0x6c, 0x65, 0x6f, 0x6e, 0x12, 0x6e, 0x0a, 0x0e, 0x63,
0x68, 0x61, 0x6d, 0x65, 0x6c, 0x65, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20,
0x03, 0x28, 0x0e, 0x32, 0x47, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72,
0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c,
0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f,
0x72, 0x79, 0x2e, 0x50, 0x65, 0x72, 0x69, 0x70, 0x68, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x2e, 0x43,
0x68, 0x61, 0x6d, 0x65, 0x6c, 0x65, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x63, 0x68,
0x61, 0x6d, 0x65, 0x6c, 0x65, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63,
0x6f, 0x6e, 0x64, 0x75, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x75, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68,
0x75, 0x64, 0x64, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x75, 0x64,
0x64, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x69, 0x6d, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28,
0x08, 0x52, 0x04, 0x6d, 0x69, 0x6d, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x74, 0x7a, 0x70, 0x72,
0x6f, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x74, 0x7a, 0x70, 0x72, 0x6f,
0x32, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x65, 0x72, 0x76, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
0x52, 0x05, 0x73, 0x65, 0x72, 0x76, 0x6f, 0x12, 0x5e, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x6f,
0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x63,
0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69,
0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x65, 0x72, 0x69,
0x70, 0x68, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x73, 0x65, 0x72,
0x76, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x6f,
0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72,
0x76, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x62, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x6f, 0x5f,
0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b,
0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73,
0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x53, 0x65,
0x72, 0x76, 0x6f, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x0d, 0x73, 0x65, 0x72,
0x76, 0x6f, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x66, 0x0a, 0x10, 0x73, 0x65,
0x72, 0x76, 0x6f, 0x5f, 0x66, 0x77, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x1b,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79,
0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74,
0x6f, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x6f, 0x46, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e,
0x65, 0x6c, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x6f, 0x46, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e,
0x65, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x62, 0x68,
0x75, 0x62, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x55,
0x73, 0x62, 0x68, 0x75, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x79, 0x6c, 0x75, 0x73, 0x18,
0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x79, 0x6c, 0x75, 0x73, 0x12, 0x1c, 0x0a,
0x09, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x62, 0x6f, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08,
0x52, 0x09, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x62, 0x6f, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x77,
0x69, 0x66, 0x69, 0x63, 0x65, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x77,
0x69, 0x66, 0x69, 0x63, 0x65, 0x6c, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65,
0x72, 0x5f, 0x38, 0x30, 0x32, 0x5f, 0x31, 0x31, 0x61, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08,
0x52, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x38, 0x30, 0x32, 0x31, 0x31, 0x61, 0x78, 0x12,
0x38, 0x0a, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x6c, 0x75, 0x65, 0x74,
0x6f, 0x6f, 0x74, 0x68, 0x5f, 0x62, 0x74, 0x70, 0x65, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28,
0x05, 0x52, 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x75, 0x65, 0x74, 0x6f,
0x6f, 0x74, 0x68, 0x42, 0x74, 0x70, 0x65, 0x65, 0x72, 0x12, 0x74, 0x0a, 0x10, 0x63, 0x61, 0x6d,
0x65, 0x72, 0x61, 0x62, 0x6f, 0x78, 0x5f, 0x66, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x18, 0x12, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x49, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72,
0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c,
0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f,
0x72, 0x79, 0x2e, 0x50, 0x65, 0x72, 0x69, 0x70, 0x68, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x2e, 0x43,
0x61, 0x6d, 0x65, 0x72, 0x61, 0x62, 0x6f, 0x78, 0x46, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x0f,
0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x62, 0x6f, 0x78, 0x46, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12,
0x71, 0x0a, 0x0f, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x62, 0x6f, 0x78, 0x5f, 0x6c, 0x69, 0x67,
0x68, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x48, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61,
0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e,
0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x65, 0x72, 0x69, 0x70, 0x68, 0x65, 0x72,
0x61, 0x6c, 0x73, 0x2e, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x62, 0x6f, 0x78, 0x4c, 0x69, 0x67,
0x68, 0x74, 0x52, 0x0e, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x62, 0x6f, 0x78, 0x4c, 0x69, 0x67,
0x68, 0x74, 0x12, 0x60, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74,
0x61, 0x74, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x63, 0x68, 0x72, 0x6f,
0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72,
0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72,
0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53,
0x74, 0x61, 0x74, 0x65, 0x12, 0x63, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x6f, 0x5f, 0x75, 0x73,
0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e,
0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f,
0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x48, 0x61, 0x72,
0x64, 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76,
0x6f, 0x55, 0x73, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x60, 0x0a, 0x0d, 0x62, 0x61, 0x74,
0x74, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x3b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e,
0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62,
0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x5a, 0x0a, 0x0a, 0x77,
0x69, 0x66, 0x69, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x3b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f,
0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x48,
0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x77, 0x69,
0x66, 0x69, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x64, 0x0a, 0x0f, 0x62, 0x6c, 0x75, 0x65, 0x74,
0x6f, 0x6f, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x3b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e,
0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x62,
0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x5a, 0x0a,
0x09, 0x72, 0x70, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x3d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e,
0x50, 0x65, 0x72, 0x69, 0x70, 0x68, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52,
0x08, 0x72, 0x70, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x0d, 0x43, 0x68,
0x61, 0x6d, 0x65, 0x6c, 0x65, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x43,
0x48, 0x41, 0x4d, 0x45, 0x4c, 0x45, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e,
0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x48, 0x41, 0x4d, 0x45,
0x4c, 0x45, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x50, 0x10, 0x02, 0x12, 0x1a,
0x0a, 0x16, 0x43, 0x48, 0x41, 0x4d, 0x45, 0x4c, 0x45, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45,
0x5f, 0x44, 0x50, 0x5f, 0x48, 0x44, 0x4d, 0x49, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x48,
0x41, 0x4d, 0x45, 0x4c, 0x45, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x47, 0x41,
0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x41, 0x4d, 0x45, 0x4c, 0x45, 0x4f, 0x4e, 0x5f,
0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x44, 0x4d, 0x49, 0x10, 0x05, 0x22, 0x04, 0x08, 0x01, 0x10,
0x01, 0x22, 0x04, 0x08, 0x06, 0x10, 0x08, 0x22, 0x66, 0x0a, 0x0f, 0x43, 0x61, 0x6d, 0x65, 0x72,
0x61, 0x62, 0x6f, 0x78, 0x46, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x41,
0x4d, 0x45, 0x52, 0x41, 0x42, 0x4f, 0x58, 0x5f, 0x46, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x55,
0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4d, 0x45,
0x52, 0x41, 0x42, 0x4f, 0x58, 0x5f, 0x46, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x41, 0x43,
0x4b, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, 0x4d, 0x45, 0x52, 0x41, 0x42, 0x4f, 0x58,
0x5f, 0x46, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x52, 0x4f, 0x4e, 0x54, 0x10, 0x02, 0x22,
0x61, 0x0a, 0x0e, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x62, 0x6f, 0x78, 0x4c, 0x69, 0x67, 0x68,
0x74, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x41, 0x4d, 0x45, 0x52, 0x41, 0x42, 0x4f, 0x58, 0x5f, 0x4c,
0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x17,
0x0a, 0x13, 0x43, 0x41, 0x4d, 0x45, 0x52, 0x41, 0x42, 0x4f, 0x58, 0x5f, 0x4c, 0x49, 0x47, 0x48,
0x54, 0x5f, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x4d, 0x45, 0x52,
0x41, 0x42, 0x4f, 0x58, 0x5f, 0x4c, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4e, 0x4f, 0x4c, 0x45, 0x44,
0x10, 0x02, 0x22, 0xc1, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x6f, 0x54, 0x6f, 0x70, 0x6f,
0x6c, 0x6f, 0x67, 0x79, 0x12, 0x53, 0x0a, 0x04, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f,
0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61,
0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72,
0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x6f, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x49,
0x74, 0x65, 0x6d, 0x52, 0x04, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x5b, 0x0a, 0x08, 0x63, 0x68, 0x69,
0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e,
0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x6f,
0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x63, 0x68,
0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x86, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x6f,
0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04,
0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
0x12, 0x23, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x66, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x66, 0x73, 0x50, 0x72,
0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x20, 0x0a,
0x0c, 0x75, 0x73, 0x62, 0x5f, 0x68, 0x75, 0x62, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x73, 0x62, 0x48, 0x75, 0x62, 0x50, 0x6f, 0x72, 0x74, 0x22,
0xf1, 0x04, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65,
0x48, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6f, 0x73, 0x5f, 0x64,
0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x68, 0x61, 0x6f, 0x73, 0x44,
0x75, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6f, 0x73, 0x5f, 0x6e, 0x69, 0x67, 0x68,
0x74, 0x6c, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6f, 0x73,
0x4e, 0x69, 0x67, 0x68, 0x74, 0x6c, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x72, 0x6f, 0x6d,
0x65, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x68, 0x72,
0x6f, 0x6d, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x68, 0x0a, 0x0a, 0x63, 0x74, 0x73, 0x5f, 0x73,
0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x49, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x5f, 0x69, 0x6e,
0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43,
0x6f, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x48, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x43, 0x54, 0x53,
0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x52, 0x09, 0x63, 0x74, 0x73, 0x53, 0x70, 0x61, 0x72, 0x73,
0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x70, 0x70,
0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x6e, 0x67, 0x6f, 0x75, 0x74, 0x41,
0x70, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x65, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x65, 0x65, 0x74, 0x41, 0x70, 0x70, 0x12, 0x23, 0x0a,
0x0d, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x18, 0x08,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x54, 0x65,
0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x6f,
0x6a, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x65, 0x73, 0x74,
0x41, 0x75, 0x64, 0x69, 0x6f, 0x6a, 0x61, 0x63, 0x6b, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x65, 0x73,
0x74, 0x5f, 0x68, 0x64, 0x6d, 0x69, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28,
0x08, 0x52, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x48, 0x64, 0x6d, 0x69, 0x61, 0x75, 0x64, 0x69, 0x6f,
0x12, 0x23, 0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x62, 0x61, 0x75, 0x64, 0x69,
0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x55, 0x73, 0x62,
0x61, 0x75, 0x64, 0x69, 0x6f, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x73,
0x62, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0f, 0x74, 0x65, 0x73, 0x74, 0x55, 0x73, 0x62, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67,
0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x62, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x18, 0x06,
0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x75, 0x73, 0x62, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x12,
0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08,
0x52, 0x06, 0x75, 0x73, 0x65, 0x4c, 0x69, 0x64, 0x22, 0x59, 0x0a, 0x09, 0x43, 0x54, 0x53, 0x53,
0x70, 0x61, 0x72, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x54, 0x53, 0x5f, 0x53, 0x50, 0x41,
0x52, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a,
0x0c, 0x43, 0x54, 0x53, 0x5f, 0x53, 0x50, 0x41, 0x52, 0x53, 0x45, 0x5f, 0x32, 0x10, 0x01, 0x12,
0x10, 0x0a, 0x0c, 0x43, 0x54, 0x53, 0x5f, 0x53, 0x50, 0x41, 0x52, 0x53, 0x45, 0x5f, 0x33, 0x10,
0x02, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x54, 0x53, 0x5f, 0x53, 0x50, 0x41, 0x52, 0x53, 0x45, 0x5f,
0x35, 0x10, 0x03, 0x22, 0x32, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x78, 0x0a, 0x07, 0x4c, 0x69, 0x63, 0x65, 0x6e,
0x73, 0x65, 0x12, 0x4d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x39, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2e, 0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e,
0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70,
0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
0x72, 0x2a, 0x5e, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x6f, 0x46, 0x77, 0x43, 0x68, 0x61, 0x6e,
0x6e, 0x65, 0x6c, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x45, 0x52, 0x56, 0x4f, 0x5f, 0x46, 0x57, 0x5f,
0x53, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x45, 0x52, 0x56,
0x4f, 0x5f, 0x46, 0x57, 0x5f, 0x50, 0x52, 0x45, 0x56, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53,
0x45, 0x52, 0x56, 0x4f, 0x5f, 0x46, 0x57, 0x5f, 0x44, 0x45, 0x56, 0x10, 0x02, 0x12, 0x12, 0x0a,
0x0e, 0x53, 0x45, 0x52, 0x56, 0x4f, 0x5f, 0x46, 0x57, 0x5f, 0x41, 0x4c, 0x50, 0x48, 0x41, 0x10,
0x03, 0x2a, 0xca, 0x03, 0x0a, 0x0f, 0x50, 0x65, 0x72, 0x69, 0x70, 0x68, 0x65, 0x72, 0x61, 0x6c,
0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x4f, 0x52, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12,
0x12, 0x0a, 0x0e, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49,
0x47, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x57, 0x52, 0x4f, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x4e,
0x46, 0x49, 0x47, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4e,
0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x5f, 0x53,
0x53, 0x48, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x52, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x03,
0x12, 0x14, 0x0a, 0x10, 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45,
0x4d, 0x45, 0x4e, 0x54, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x52, 0x35, 0x30, 0x5f, 0x43,
0x4f, 0x4e, 0x53, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x0d,
0x12, 0x15, 0x0a, 0x11, 0x43, 0x43, 0x44, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x4c, 0x41, 0x42, 0x5f,
0x49, 0x53, 0x53, 0x55, 0x45, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x45, 0x52, 0x56, 0x4f,
0x44, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x49, 0x44,
0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x14,
0x0a, 0x10, 0x42, 0x41, 0x44, 0x5f, 0x52, 0x49, 0x42, 0x42, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x42,
0x4c, 0x45, 0x10, 0x0b, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x43, 0x5f, 0x42, 0x52, 0x4f, 0x4b, 0x45,
0x4e, 0x10, 0x0c, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x55, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x43,
0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x4f,
0x50, 0x4f, 0x4c, 0x4f, 0x47, 0x59, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x10, 0x0f, 0x12, 0x13,
0x0a, 0x0f, 0x53, 0x42, 0x55, 0x5f, 0x4c, 0x4f, 0x57, 0x5f, 0x56, 0x4f, 0x4c, 0x54, 0x41, 0x47,
0x45, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x52, 0x35, 0x30, 0x5f, 0x4e, 0x4f, 0x54, 0x5f,
0x45, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x41, 0x54, 0x45, 0x44, 0x10, 0x11, 0x12, 0x19, 0x0a, 0x15,
0x53, 0x45, 0x52, 0x56, 0x4f, 0x5f, 0x53, 0x45, 0x52, 0x49, 0x41, 0x4c, 0x5f, 0x4d, 0x49, 0x53,
0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x12, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x45, 0x52, 0x56, 0x4f,
0x44, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x10, 0x13, 0x12,
0x14, 0x0a, 0x10, 0x53, 0x45, 0x52, 0x56, 0x4f, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x49, 0x53,
0x53, 0x55, 0x45, 0x10, 0x14, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x52, 0x56, 0x4f, 0x5f, 0x55,
0x50, 0x44, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x10, 0x15, 0x2a, 0x8d,
0x01, 0x0a, 0x0d, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65,
0x12, 0x14, 0x0a, 0x10, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x4b,
0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41,
0x52, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x48,
0x41, 0x52, 0x44, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x41, 0x42,
0x4c, 0x45, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41, 0x52, 0x45,
0x5f, 0x4e, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x4d, 0x45, 0x4e,
0x54, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41, 0x52, 0x45, 0x5f,
0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x71,
0x0a, 0x0b, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a,
0x18, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x4c,
0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x49, 0x4e, 0x44,
0x4f, 0x57, 0x53, 0x5f, 0x31, 0x30, 0x5f, 0x50, 0x52, 0x4f, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f,
0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x53, 0x5f,
0x4f, 0x46, 0x46, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10,
0x02, 0x42, 0x27, 0x5a, 0x25, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f,
0x73, 0x6b, 0x79, 0x6c, 0x61, 0x62, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79,
0x3b, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79,
}
var (
file_infra_libs_skylab_inventory_device_proto_rawDescOnce sync.Once
file_infra_libs_skylab_inventory_device_proto_rawDescData = file_infra_libs_skylab_inventory_device_proto_rawDesc
)
func file_infra_libs_skylab_inventory_device_proto_rawDescGZIP() []byte {
file_infra_libs_skylab_inventory_device_proto_rawDescOnce.Do(func() {
file_infra_libs_skylab_inventory_device_proto_rawDescData = protoimpl.X.CompressGZIP(file_infra_libs_skylab_inventory_device_proto_rawDescData)
})
return file_infra_libs_skylab_inventory_device_proto_rawDescData
}
var file_infra_libs_skylab_inventory_device_proto_enumTypes = make([]protoimpl.EnumInfo, 17)
var file_infra_libs_skylab_inventory_device_proto_msgTypes = make([]protoimpl.MessageInfo, 18)
var file_infra_libs_skylab_inventory_device_proto_goTypes = []interface{}{
(ServoFwChannel)(0), // 0: chrome.chromeos_infra.skylab.proto.inventory.ServoFwChannel
(PeripheralState)(0), // 1: chrome.chromeos_infra.skylab.proto.inventory.PeripheralState
(HardwareState)(0), // 2: chrome.chromeos_infra.skylab.proto.inventory.HardwareState
(LicenseType)(0), // 3: chrome.chromeos_infra.skylab.proto.inventory.LicenseType
(SchedulableLabels_CR50_Phase)(0), // 4: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.CR50_Phase
(SchedulableLabels_DUTPool)(0), // 5: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.DUTPool
(SchedulableLabels_CTSABI)(0), // 6: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.CTSABI
(SchedulableLabels_CTSCPU)(0), // 7: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.CTSCPU
(SchedulableLabels_ECType)(0), // 8: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.ECType
(SchedulableLabels_OSType)(0), // 9: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.OSType
(SchedulableLabels_Phase)(0), // 10: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.Phase
(HardwareCapabilities_Carrier)(0), // 11: chrome.chromeos_infra.skylab.proto.inventory.HardwareCapabilities.Carrier
(HardwareCapabilities_VideoAcceleration)(0), // 12: chrome.chromeos_infra.skylab.proto.inventory.HardwareCapabilities.VideoAcceleration
(Peripherals_ChameleonType)(0), // 13: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.ChameleonType
(Peripherals_CameraboxFacing)(0), // 14: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.CameraboxFacing
(Peripherals_CameraboxLight)(0), // 15: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.CameraboxLight
(TestCoverageHints_CTSSparse)(0), // 16: chrome.chromeos_infra.skylab.proto.inventory.TestCoverageHints.CTSSparse
(*Device)(nil), // 17: chrome.chromeos_infra.skylab.proto.inventory.Device
(*DeviceUnderTest)(nil), // 18: chrome.chromeos_infra.skylab.proto.inventory.DeviceUnderTest
(*ServoHostDevice)(nil), // 19: chrome.chromeos_infra.skylab.proto.inventory.ServoHostDevice
(*ChameleonDevice)(nil), // 20: chrome.chromeos_infra.skylab.proto.inventory.ChameleonDevice
(*CommonDeviceSpecs)(nil), // 21: chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs
(*RemovalReason)(nil), // 22: chrome.chromeos_infra.skylab.proto.inventory.RemovalReason
(*Location)(nil), // 23: chrome.chromeos_infra.skylab.proto.inventory.Location
(*PhysicalLab)(nil), // 24: chrome.chromeos_infra.skylab.proto.inventory.PhysicalLab
(*DeviceLock)(nil), // 25: chrome.chromeos_infra.skylab.proto.inventory.DeviceLock
(*Shard)(nil), // 26: chrome.chromeos_infra.skylab.proto.inventory.Shard
(*SchedulableLabels)(nil), // 27: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels
(*HardwareCapabilities)(nil), // 28: chrome.chromeos_infra.skylab.proto.inventory.HardwareCapabilities
(*Peripherals)(nil), // 29: chrome.chromeos_infra.skylab.proto.inventory.Peripherals
(*ServoTopology)(nil), // 30: chrome.chromeos_infra.skylab.proto.inventory.ServoTopology
(*ServoTopologyItem)(nil), // 31: chrome.chromeos_infra.skylab.proto.inventory.ServoTopologyItem
(*TestCoverageHints)(nil), // 32: chrome.chromeos_infra.skylab.proto.inventory.TestCoverageHints
(*KeyValue)(nil), // 33: chrome.chromeos_infra.skylab.proto.inventory.KeyValue
(*License)(nil), // 34: chrome.chromeos_infra.skylab.proto.inventory.License
(Environment)(0), // 35: chrome.chromeos_infra.skylab.proto.inventory.Environment
(*Timestamp)(nil), // 36: chrome.chromeos_infra.skylab.proto.inventory.Timestamp
}
var file_infra_libs_skylab_inventory_device_proto_depIdxs = []int32{
18, // 0: chrome.chromeos_infra.skylab.proto.inventory.Device.dut:type_name -> chrome.chromeos_infra.skylab.proto.inventory.DeviceUnderTest
19, // 1: chrome.chromeos_infra.skylab.proto.inventory.Device.servo_host:type_name -> chrome.chromeos_infra.skylab.proto.inventory.ServoHostDevice
20, // 2: chrome.chromeos_infra.skylab.proto.inventory.Device.chameleon:type_name -> chrome.chromeos_infra.skylab.proto.inventory.ChameleonDevice
21, // 3: chrome.chromeos_infra.skylab.proto.inventory.DeviceUnderTest.common:type_name -> chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs
22, // 4: chrome.chromeos_infra.skylab.proto.inventory.DeviceUnderTest.removal_reason:type_name -> chrome.chromeos_infra.skylab.proto.inventory.RemovalReason
21, // 5: chrome.chromeos_infra.skylab.proto.inventory.ServoHostDevice.common:type_name -> chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs
21, // 6: chrome.chromeos_infra.skylab.proto.inventory.ChameleonDevice.common:type_name -> chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs
33, // 7: chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs.attributes:type_name -> chrome.chromeos_infra.skylab.proto.inventory.KeyValue
25, // 8: chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs.device_locks:type_name -> chrome.chromeos_infra.skylab.proto.inventory.DeviceLock
35, // 9: chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs.environment:type_name -> chrome.chromeos_infra.skylab.proto.inventory.Environment
27, // 10: chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs.labels:type_name -> chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels
23, // 11: chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs.location:type_name -> chrome.chromeos_infra.skylab.proto.inventory.Location
26, // 12: chrome.chromeos_infra.skylab.proto.inventory.CommonDeviceSpecs.owner_shard:type_name -> chrome.chromeos_infra.skylab.proto.inventory.Shard
36, // 13: chrome.chromeos_infra.skylab.proto.inventory.RemovalReason.expire_time:type_name -> chrome.chromeos_infra.skylab.proto.inventory.Timestamp
24, // 14: chrome.chromeos_infra.skylab.proto.inventory.Location.lab:type_name -> chrome.chromeos_infra.skylab.proto.inventory.PhysicalLab
36, // 15: chrome.chromeos_infra.skylab.proto.inventory.DeviceLock.begin_time:type_name -> chrome.chromeos_infra.skylab.proto.inventory.Timestamp
36, // 16: chrome.chromeos_infra.skylab.proto.inventory.DeviceLock.expire_time:type_name -> chrome.chromeos_infra.skylab.proto.inventory.Timestamp
28, // 17: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.capabilities:type_name -> chrome.chromeos_infra.skylab.proto.inventory.HardwareCapabilities
4, // 18: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.cr50_phase:type_name -> chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.CR50_Phase
5, // 19: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.critical_pools:type_name -> chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.DUTPool
6, // 20: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.cts_abi:type_name -> chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.CTSABI
7, // 21: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.cts_cpu:type_name -> chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.CTSCPU
8, // 22: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.ec_type:type_name -> chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.ECType
34, // 23: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.licenses:type_name -> chrome.chromeos_infra.skylab.proto.inventory.License
9, // 24: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.os_type:type_name -> chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.OSType
29, // 25: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.peripherals:type_name -> chrome.chromeos_infra.skylab.proto.inventory.Peripherals
10, // 26: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.phase:type_name -> chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.Phase
32, // 27: chrome.chromeos_infra.skylab.proto.inventory.SchedulableLabels.test_coverage_hints:type_name -> chrome.chromeos_infra.skylab.proto.inventory.TestCoverageHints
11, // 28: chrome.chromeos_infra.skylab.proto.inventory.HardwareCapabilities.carrier:type_name -> chrome.chromeos_infra.skylab.proto.inventory.HardwareCapabilities.Carrier
12, // 29: chrome.chromeos_infra.skylab.proto.inventory.HardwareCapabilities.video_acceleration:type_name -> chrome.chromeos_infra.skylab.proto.inventory.HardwareCapabilities.VideoAcceleration
13, // 30: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.chameleon_type:type_name -> chrome.chromeos_infra.skylab.proto.inventory.Peripherals.ChameleonType
1, // 31: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.servo_state:type_name -> chrome.chromeos_infra.skylab.proto.inventory.PeripheralState
30, // 32: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.servo_topology:type_name -> chrome.chromeos_infra.skylab.proto.inventory.ServoTopology
0, // 33: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.servo_fw_channel:type_name -> chrome.chromeos_infra.skylab.proto.inventory.ServoFwChannel
14, // 34: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.camerabox_facing:type_name -> chrome.chromeos_infra.skylab.proto.inventory.Peripherals.CameraboxFacing
15, // 35: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.camerabox_light:type_name -> chrome.chromeos_infra.skylab.proto.inventory.Peripherals.CameraboxLight
2, // 36: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.storage_state:type_name -> chrome.chromeos_infra.skylab.proto.inventory.HardwareState
2, // 37: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.servo_usb_state:type_name -> chrome.chromeos_infra.skylab.proto.inventory.HardwareState
2, // 38: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.battery_state:type_name -> chrome.chromeos_infra.skylab.proto.inventory.HardwareState
2, // 39: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.wifi_state:type_name -> chrome.chromeos_infra.skylab.proto.inventory.HardwareState
2, // 40: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.bluetooth_state:type_name -> chrome.chromeos_infra.skylab.proto.inventory.HardwareState
1, // 41: chrome.chromeos_infra.skylab.proto.inventory.Peripherals.rpm_state:type_name -> chrome.chromeos_infra.skylab.proto.inventory.PeripheralState
31, // 42: chrome.chromeos_infra.skylab.proto.inventory.ServoTopology.main:type_name -> chrome.chromeos_infra.skylab.proto.inventory.ServoTopologyItem
31, // 43: chrome.chromeos_infra.skylab.proto.inventory.ServoTopology.children:type_name -> chrome.chromeos_infra.skylab.proto.inventory.ServoTopologyItem
16, // 44: chrome.chromeos_infra.skylab.proto.inventory.TestCoverageHints.cts_sparse:type_name -> chrome.chromeos_infra.skylab.proto.inventory.TestCoverageHints.CTSSparse
3, // 45: chrome.chromeos_infra.skylab.proto.inventory.License.type:type_name -> chrome.chromeos_infra.skylab.proto.inventory.LicenseType
46, // [46:46] is the sub-list for method output_type
46, // [46:46] is the sub-list for method input_type
46, // [46:46] is the sub-list for extension type_name
46, // [46:46] is the sub-list for extension extendee
0, // [0:46] is the sub-list for field type_name
}
func init() { file_infra_libs_skylab_inventory_device_proto_init() }
func file_infra_libs_skylab_inventory_device_proto_init() {
if File_infra_libs_skylab_inventory_device_proto != nil {
return
}
file_infra_libs_skylab_inventory_common_proto_init()
if !protoimpl.UnsafeEnabled {
file_infra_libs_skylab_inventory_device_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Device); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_libs_skylab_inventory_device_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceUnderTest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_libs_skylab_inventory_device_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ServoHostDevice); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_libs_skylab_inventory_device_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ChameleonDevice); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_libs_skylab_inventory_device_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CommonDeviceSpecs); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_libs_skylab_inventory_device_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RemovalReason); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_libs_skylab_inventory_device_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Location); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_libs_skylab_inventory_device_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PhysicalLab); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_libs_skylab_inventory_device_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceLock); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_libs_skylab_inventory_device_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Shard); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_libs_skylab_inventory_device_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SchedulableLabels); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_libs_skylab_inventory_device_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HardwareCapabilities); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}