// Copyright 2020 The ChromiumOS Authors // 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.27.1 // protoc v3.17.1 // source: chromiumos/config/api/topology.proto package api import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type Topology_Type int32 const ( Topology_TYPE_UNKNOWN Topology_Type = 0 Topology_SCREEN Topology_Type = 1 Topology_FORM_FACTOR Topology_Type = 2 Topology_AUDIO Topology_Type = 3 Topology_STYLUS Topology_Type = 4 Topology_KEYBOARD Topology_Type = 5 Topology_THERMAL Topology_Type = 6 Topology_CAMERA Topology_Type = 7 Topology_ACCELEROMETER_GYROSCOPE_MAGNETOMETER Topology_Type = 8 Topology_FINGERPRINT Topology_Type = 9 Topology_PROXIMITY_SENSOR Topology_Type = 10 Topology_DAUGHTER_BOARD Topology_Type = 11 Topology_NON_VOLATILE_STORAGE Topology_Type = 12 Topology_RAM Topology_Type = 13 // deprecated Topology_WIFI Topology_Type = 14 Topology_CELLULAR_BOARD Topology_Type = 15 Topology_SD_READER Topology_Type = 16 Topology_MOTHERBOARD_USB Topology_Type = 17 Topology_BLUETOOTH Topology_Type = 18 Topology_BARRELJACK Topology_Type = 19 Topology_POWER_BUTTON Topology_Type = 20 Topology_VOLUME_BUTTON Topology_Type = 21 Topology_EC Topology_Type = 22 Topology_TOUCH Topology_Type = 23 Topology_TPM Topology_Type = 24 Topology_MICROPHONE_MUTE_SWITCH Topology_Type = 25 Topology_BATTERY Topology_Type = 26 Topology_HDMI Topology_Type = 27 Topology_SOC Topology_Type = 28 Topology_HPS Topology_Type = 29 Topology_DP_CONVERTER Topology_Type = 30 Topology_POE Topology_Type = 31 Topology_POWER_SUPPLY Topology_Type = 32 Topology_RECOVERY_INPUT Topology_Type = 33 Topology_PRIVACY_SCREEN Topology_Type = 34 Topology_DGPU Topology_Type = 35 Topology_UWB Topology_Type = 36 Topology_DETACHABLE_BASE Topology_Type = 37 Topology_FAN Topology_Type = 38 ) // Enum value maps for Topology_Type. var ( Topology_Type_name = map[int32]string{ 0: "TYPE_UNKNOWN", 1: "SCREEN", 2: "FORM_FACTOR", 3: "AUDIO", 4: "STYLUS", 5: "KEYBOARD", 6: "THERMAL", 7: "CAMERA", 8: "ACCELEROMETER_GYROSCOPE_MAGNETOMETER", 9: "FINGERPRINT", 10: "PROXIMITY_SENSOR", 11: "DAUGHTER_BOARD", 12: "NON_VOLATILE_STORAGE", 13: "RAM", 14: "WIFI", 15: "CELLULAR_BOARD", 16: "SD_READER", 17: "MOTHERBOARD_USB", 18: "BLUETOOTH", 19: "BARRELJACK", 20: "POWER_BUTTON", 21: "VOLUME_BUTTON", 22: "EC", 23: "TOUCH", 24: "TPM", 25: "MICROPHONE_MUTE_SWITCH", 26: "BATTERY", 27: "HDMI", 28: "SOC", 29: "HPS", 30: "DP_CONVERTER", 31: "POE", 32: "POWER_SUPPLY", 33: "RECOVERY_INPUT", 34: "PRIVACY_SCREEN", 35: "DGPU", 36: "UWB", 37: "DETACHABLE_BASE", 38: "FAN", } Topology_Type_value = map[string]int32{ "TYPE_UNKNOWN": 0, "SCREEN": 1, "FORM_FACTOR": 2, "AUDIO": 3, "STYLUS": 4, "KEYBOARD": 5, "THERMAL": 6, "CAMERA": 7, "ACCELEROMETER_GYROSCOPE_MAGNETOMETER": 8, "FINGERPRINT": 9, "PROXIMITY_SENSOR": 10, "DAUGHTER_BOARD": 11, "NON_VOLATILE_STORAGE": 12, "RAM": 13, "WIFI": 14, "CELLULAR_BOARD": 15, "SD_READER": 16, "MOTHERBOARD_USB": 17, "BLUETOOTH": 18, "BARRELJACK": 19, "POWER_BUTTON": 20, "VOLUME_BUTTON": 21, "EC": 22, "TOUCH": 23, "TPM": 24, "MICROPHONE_MUTE_SWITCH": 25, "BATTERY": 26, "HDMI": 27, "SOC": 28, "HPS": 29, "DP_CONVERTER": 30, "POE": 31, "POWER_SUPPLY": 32, "RECOVERY_INPUT": 33, "PRIVACY_SCREEN": 34, "DGPU": 35, "UWB": 36, "DETACHABLE_BASE": 37, "FAN": 38, } ) func (x Topology_Type) Enum() *Topology_Type { p := new(Topology_Type) *p = x return p } func (x Topology_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Topology_Type) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[0].Descriptor() } func (Topology_Type) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[0] } func (x Topology_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Topology_Type.Descriptor instead. func (Topology_Type) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{0, 0} } type Duration_Type int32 const ( Duration_TYPE_UNKNOWN Duration_Type = 0 Duration_MILLISECONDS Duration_Type = 1 Duration_SECONDS Duration_Type = 2 Duration_MINUTES Duration_Type = 3 Duration_HOURS Duration_Type = 4 Duration_DAYS Duration_Type = 5 ) // Enum value maps for Duration_Type. var ( Duration_Type_name = map[int32]string{ 0: "TYPE_UNKNOWN", 1: "MILLISECONDS", 2: "SECONDS", 3: "MINUTES", 4: "HOURS", 5: "DAYS", } Duration_Type_value = map[string]int32{ "TYPE_UNKNOWN": 0, "MILLISECONDS": 1, "SECONDS": 2, "MINUTES": 3, "HOURS": 4, "DAYS": 5, } ) func (x Duration_Type) Enum() *Duration_Type { p := new(Duration_Type) *p = x return p } func (x Duration_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Duration_Type) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[1].Descriptor() } func (Duration_Type) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[1] } func (x Duration_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Duration_Type.Descriptor instead. func (Duration_Type) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{1, 0} } type HardwareFeatures_Present int32 const ( HardwareFeatures_PRESENT_UNKNOWN HardwareFeatures_Present = 0 HardwareFeatures_PRESENT HardwareFeatures_Present = 1 HardwareFeatures_NOT_PRESENT HardwareFeatures_Present = 2 ) // Enum value maps for HardwareFeatures_Present. var ( HardwareFeatures_Present_name = map[int32]string{ 0: "PRESENT_UNKNOWN", 1: "PRESENT", 2: "NOT_PRESENT", } HardwareFeatures_Present_value = map[string]int32{ "PRESENT_UNKNOWN": 0, "PRESENT": 1, "NOT_PRESENT": 2, } ) func (x HardwareFeatures_Present) Enum() *HardwareFeatures_Present { p := new(HardwareFeatures_Present) *p = x return p } func (x HardwareFeatures_Present) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Present) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[2].Descriptor() } func (HardwareFeatures_Present) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[2] } func (x HardwareFeatures_Present) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Present.Descriptor instead. func (HardwareFeatures_Present) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 0} } // Copied from PowerSupplyProperties.PowerSource.Port in // src/platform2/system_api/dbus/power_manager/power_supply_properties.proto. type HardwareFeatures_PortPosition int32 const ( HardwareFeatures_UNKNOWN HardwareFeatures_PortPosition = 0 // Various positions on the device. The first word describes the side of // the device where the port is located while the second clarifies the // position. For example, LEFT_BACK means the farthest-back port on the // left side, while BACK_LEFT means the leftmost port on the back of the // device. HardwareFeatures_LEFT HardwareFeatures_PortPosition = 1 HardwareFeatures_RIGHT HardwareFeatures_PortPosition = 2 HardwareFeatures_BACK HardwareFeatures_PortPosition = 3 HardwareFeatures_FRONT HardwareFeatures_PortPosition = 4 HardwareFeatures_LEFT_FRONT HardwareFeatures_PortPosition = 5 HardwareFeatures_LEFT_BACK HardwareFeatures_PortPosition = 6 HardwareFeatures_RIGHT_FRONT HardwareFeatures_PortPosition = 7 HardwareFeatures_RIGHT_BACK HardwareFeatures_PortPosition = 8 HardwareFeatures_BACK_LEFT HardwareFeatures_PortPosition = 9 HardwareFeatures_BACK_RIGHT HardwareFeatures_PortPosition = 10 ) // Enum value maps for HardwareFeatures_PortPosition. var ( HardwareFeatures_PortPosition_name = map[int32]string{ 0: "UNKNOWN", 1: "LEFT", 2: "RIGHT", 3: "BACK", 4: "FRONT", 5: "LEFT_FRONT", 6: "LEFT_BACK", 7: "RIGHT_FRONT", 8: "RIGHT_BACK", 9: "BACK_LEFT", 10: "BACK_RIGHT", } HardwareFeatures_PortPosition_value = map[string]int32{ "UNKNOWN": 0, "LEFT": 1, "RIGHT": 2, "BACK": 3, "FRONT": 4, "LEFT_FRONT": 5, "LEFT_BACK": 6, "RIGHT_FRONT": 7, "RIGHT_BACK": 8, "BACK_LEFT": 9, "BACK_RIGHT": 10, } ) func (x HardwareFeatures_PortPosition) Enum() *HardwareFeatures_PortPosition { p := new(HardwareFeatures_PortPosition) *p = x return p } func (x HardwareFeatures_PortPosition) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_PortPosition) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[3].Descriptor() } func (HardwareFeatures_PortPosition) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[3] } func (x HardwareFeatures_PortPosition) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_PortPosition.Descriptor instead. func (HardwareFeatures_PortPosition) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 1} } type HardwareFeatures_Cellular_CellularType int32 const ( HardwareFeatures_Cellular_CELLULAR_UNKNOWN HardwareFeatures_Cellular_CellularType = 0 HardwareFeatures_Cellular_CELLULAR_LTE HardwareFeatures_Cellular_CellularType = 1 HardwareFeatures_Cellular_CELLULAR_5G HardwareFeatures_Cellular_CellularType = 2 ) // Enum value maps for HardwareFeatures_Cellular_CellularType. var ( HardwareFeatures_Cellular_CellularType_name = map[int32]string{ 0: "CELLULAR_UNKNOWN", 1: "CELLULAR_LTE", 2: "CELLULAR_5G", } HardwareFeatures_Cellular_CellularType_value = map[string]int32{ "CELLULAR_UNKNOWN": 0, "CELLULAR_LTE": 1, "CELLULAR_5G": 2, } ) func (x HardwareFeatures_Cellular_CellularType) Enum() *HardwareFeatures_Cellular_CellularType { p := new(HardwareFeatures_Cellular_CellularType) *p = x return p } func (x HardwareFeatures_Cellular_CellularType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Cellular_CellularType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[4].Descriptor() } func (HardwareFeatures_Cellular_CellularType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[4] } func (x HardwareFeatures_Cellular_CellularType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Cellular_CellularType.Descriptor instead. func (HardwareFeatures_Cellular_CellularType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 3, 0} } type HardwareFeatures_Cellular_ModemType int32 const ( HardwareFeatures_Cellular_MODEM_UNKNOWN HardwareFeatures_Cellular_ModemType = 0 HardwareFeatures_Cellular_MODEM_L850 HardwareFeatures_Cellular_ModemType = 1 HardwareFeatures_Cellular_MODEM_NL668 HardwareFeatures_Cellular_ModemType = 2 HardwareFeatures_Cellular_MODEM_FM101 HardwareFeatures_Cellular_ModemType = 3 HardwareFeatures_Cellular_MODEM_FM350 HardwareFeatures_Cellular_ModemType = 4 HardwareFeatures_Cellular_MODEM_SC7180 HardwareFeatures_Cellular_ModemType = 5 HardwareFeatures_Cellular_MODEM_SC7280 HardwareFeatures_Cellular_ModemType = 6 HardwareFeatures_Cellular_MODEM_EM060 HardwareFeatures_Cellular_ModemType = 7 HardwareFeatures_Cellular_MODEM_RW101 HardwareFeatures_Cellular_ModemType = 8 HardwareFeatures_Cellular_MODEM_RW135 HardwareFeatures_Cellular_ModemType = 9 HardwareFeatures_Cellular_MODEM_LCUK54 HardwareFeatures_Cellular_ModemType = 10 ) // Enum value maps for HardwareFeatures_Cellular_ModemType. var ( HardwareFeatures_Cellular_ModemType_name = map[int32]string{ 0: "MODEM_UNKNOWN", 1: "MODEM_L850", 2: "MODEM_NL668", 3: "MODEM_FM101", 4: "MODEM_FM350", 5: "MODEM_SC7180", 6: "MODEM_SC7280", 7: "MODEM_EM060", 8: "MODEM_RW101", 9: "MODEM_RW135", 10: "MODEM_LCUK54", } HardwareFeatures_Cellular_ModemType_value = map[string]int32{ "MODEM_UNKNOWN": 0, "MODEM_L850": 1, "MODEM_NL668": 2, "MODEM_FM101": 3, "MODEM_FM350": 4, "MODEM_SC7180": 5, "MODEM_SC7280": 6, "MODEM_EM060": 7, "MODEM_RW101": 8, "MODEM_RW135": 9, "MODEM_LCUK54": 10, } ) func (x HardwareFeatures_Cellular_ModemType) Enum() *HardwareFeatures_Cellular_ModemType { p := new(HardwareFeatures_Cellular_ModemType) *p = x return p } func (x HardwareFeatures_Cellular_ModemType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Cellular_ModemType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[5].Descriptor() } func (HardwareFeatures_Cellular_ModemType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[5] } func (x HardwareFeatures_Cellular_ModemType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Cellular_ModemType.Descriptor instead. func (HardwareFeatures_Cellular_ModemType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 3, 1} } type HardwareFeatures_Audio_AudioCodec int32 const ( HardwareFeatures_Audio_AUDIO_CODEC_UNKNOWN HardwareFeatures_Audio_AudioCodec = 0 // Also used for non-public audio codecs HardwareFeatures_Audio_RT5682 HardwareFeatures_Audio_AudioCodec = 1 HardwareFeatures_Audio_ALC5682I HardwareFeatures_Audio_AudioCodec = 2 HardwareFeatures_Audio_ALC5682 HardwareFeatures_Audio_AudioCodec = 3 HardwareFeatures_Audio_DA7219 HardwareFeatures_Audio_AudioCodec = 8 // New audio codecs HardwareFeatures_Audio_NAU88L25B HardwareFeatures_Audio_AudioCodec = 10 HardwareFeatures_Audio_CS42L42 HardwareFeatures_Audio_AudioCodec = 11 HardwareFeatures_Audio_ALC5682IVS HardwareFeatures_Audio_AudioCodec = 12 HardwareFeatures_Audio_WCD9385 HardwareFeatures_Audio_AudioCodec = 13 HardwareFeatures_Audio_ES8326 HardwareFeatures_Audio_AudioCodec = 14 HardwareFeatures_Audio_ALC272 HardwareFeatures_Audio_AudioCodec = 15 // 16 is free to be used HardwareFeatures_Audio_AUDIO_CODEC_ALC5650 HardwareFeatures_Audio_AudioCodec = 17 HardwareFeatures_Audio_AUDIO_CODEC_ALC256 HardwareFeatures_Audio_AudioCodec = 18 HardwareFeatures_Audio_AUDIO_CODEC_ALC3247 HardwareFeatures_Audio_AudioCodec = 19 HardwareFeatures_Audio_AUDIO_CODEC_ALC3287 HardwareFeatures_Audio_AudioCodec = 20 // 21 is free to be used HardwareFeatures_Audio_AUDIO_CODEC_ALC722 HardwareFeatures_Audio_AudioCodec = 22 HardwareFeatures_Audio_AUDIO_CODEC_ALC721 HardwareFeatures_Audio_AudioCodec = 23 HardwareFeatures_Audio_AUDIO_CODEC_ALC3204 HardwareFeatures_Audio_AudioCodec = 24 ) // Enum value maps for HardwareFeatures_Audio_AudioCodec. var ( HardwareFeatures_Audio_AudioCodec_name = map[int32]string{ 0: "AUDIO_CODEC_UNKNOWN", 1: "RT5682", 2: "ALC5682I", 3: "ALC5682", 8: "DA7219", 10: "NAU88L25B", 11: "CS42L42", 12: "ALC5682IVS", 13: "WCD9385", 14: "ES8326", 15: "ALC272", 17: "AUDIO_CODEC_ALC5650", 18: "AUDIO_CODEC_ALC256", 19: "AUDIO_CODEC_ALC3247", 20: "AUDIO_CODEC_ALC3287", 22: "AUDIO_CODEC_ALC722", 23: "AUDIO_CODEC_ALC721", 24: "AUDIO_CODEC_ALC3204", } HardwareFeatures_Audio_AudioCodec_value = map[string]int32{ "AUDIO_CODEC_UNKNOWN": 0, "RT5682": 1, "ALC5682I": 2, "ALC5682": 3, "DA7219": 8, "NAU88L25B": 10, "CS42L42": 11, "ALC5682IVS": 12, "WCD9385": 13, "ES8326": 14, "ALC272": 15, "AUDIO_CODEC_ALC5650": 17, "AUDIO_CODEC_ALC256": 18, "AUDIO_CODEC_ALC3247": 19, "AUDIO_CODEC_ALC3287": 20, "AUDIO_CODEC_ALC722": 22, "AUDIO_CODEC_ALC721": 23, "AUDIO_CODEC_ALC3204": 24, } ) func (x HardwareFeatures_Audio_AudioCodec) Enum() *HardwareFeatures_Audio_AudioCodec { p := new(HardwareFeatures_Audio_AudioCodec) *p = x return p } func (x HardwareFeatures_Audio_AudioCodec) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Audio_AudioCodec) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[6].Descriptor() } func (HardwareFeatures_Audio_AudioCodec) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[6] } func (x HardwareFeatures_Audio_AudioCodec) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Audio_AudioCodec.Descriptor instead. func (HardwareFeatures_Audio_AudioCodec) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 6, 0} } type HardwareFeatures_Audio_Amplifier int32 const ( HardwareFeatures_Audio_AMPLIFIER_UNKNOWN HardwareFeatures_Audio_Amplifier = 0 // Also used for non-public amplifier HardwareFeatures_Audio_MAX98357 HardwareFeatures_Audio_Amplifier = 4 HardwareFeatures_Audio_MAX98373 HardwareFeatures_Audio_Amplifier = 5 HardwareFeatures_Audio_MAX98360 HardwareFeatures_Audio_Amplifier = 6 HardwareFeatures_Audio_RT1015 HardwareFeatures_Audio_Amplifier = 7 HardwareFeatures_Audio_ALC1011 HardwareFeatures_Audio_Amplifier = 9 // New amplifiers HardwareFeatures_Audio_RT1015P HardwareFeatures_Audio_Amplifier = 10 HardwareFeatures_Audio_ALC1019 HardwareFeatures_Audio_Amplifier = 11 HardwareFeatures_Audio_MAX98390 HardwareFeatures_Audio_Amplifier = 12 HardwareFeatures_Audio_MAX98396 HardwareFeatures_Audio_Amplifier = 13 HardwareFeatures_Audio_CS35L41 HardwareFeatures_Audio_Amplifier = 14 HardwareFeatures_Audio_MAX98363 HardwareFeatures_Audio_Amplifier = 15 HardwareFeatures_Audio_NAU8318 HardwareFeatures_Audio_Amplifier = 16 HardwareFeatures_Audio_AMPLIFIER_ALC5650 HardwareFeatures_Audio_Amplifier = 17 HardwareFeatures_Audio_AMPLIFIER_ALC256 HardwareFeatures_Audio_Amplifier = 18 HardwareFeatures_Audio_AMPLIFIER_ALC3247 HardwareFeatures_Audio_Amplifier = 19 HardwareFeatures_Audio_AMPLIFIER_ALC3287 HardwareFeatures_Audio_Amplifier = 20 HardwareFeatures_Audio_TAS2563 HardwareFeatures_Audio_Amplifier = 21 HardwareFeatures_Audio_AMPLIFIER_ALC722 HardwareFeatures_Audio_Amplifier = 22 HardwareFeatures_Audio_AMPLIFIER_ALC721 HardwareFeatures_Audio_Amplifier = 23 HardwareFeatures_Audio_AMPLIFIER_ALC3204 HardwareFeatures_Audio_Amplifier = 24 ) // Enum value maps for HardwareFeatures_Audio_Amplifier. var ( HardwareFeatures_Audio_Amplifier_name = map[int32]string{ 0: "AMPLIFIER_UNKNOWN", 4: "MAX98357", 5: "MAX98373", 6: "MAX98360", 7: "RT1015", 9: "ALC1011", 10: "RT1015P", 11: "ALC1019", 12: "MAX98390", 13: "MAX98396", 14: "CS35L41", 15: "MAX98363", 16: "NAU8318", 17: "AMPLIFIER_ALC5650", 18: "AMPLIFIER_ALC256", 19: "AMPLIFIER_ALC3247", 20: "AMPLIFIER_ALC3287", 21: "TAS2563", 22: "AMPLIFIER_ALC722", 23: "AMPLIFIER_ALC721", 24: "AMPLIFIER_ALC3204", } HardwareFeatures_Audio_Amplifier_value = map[string]int32{ "AMPLIFIER_UNKNOWN": 0, "MAX98357": 4, "MAX98373": 5, "MAX98360": 6, "RT1015": 7, "ALC1011": 9, "RT1015P": 10, "ALC1019": 11, "MAX98390": 12, "MAX98396": 13, "CS35L41": 14, "MAX98363": 15, "NAU8318": 16, "AMPLIFIER_ALC5650": 17, "AMPLIFIER_ALC256": 18, "AMPLIFIER_ALC3247": 19, "AMPLIFIER_ALC3287": 20, "TAS2563": 21, "AMPLIFIER_ALC722": 22, "AMPLIFIER_ALC721": 23, "AMPLIFIER_ALC3204": 24, } ) func (x HardwareFeatures_Audio_Amplifier) Enum() *HardwareFeatures_Audio_Amplifier { p := new(HardwareFeatures_Audio_Amplifier) *p = x return p } func (x HardwareFeatures_Audio_Amplifier) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Audio_Amplifier) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[7].Descriptor() } func (HardwareFeatures_Audio_Amplifier) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[7] } func (x HardwareFeatures_Audio_Amplifier) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Audio_Amplifier.Descriptor instead. func (HardwareFeatures_Audio_Amplifier) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 6, 1} } type HardwareFeatures_Audio_AudioConfigStructure int32 const ( HardwareFeatures_Audio_AUDIO_CONFIG_STRUCTURE_NONE HardwareFeatures_Audio_AudioConfigStructure = 0 HardwareFeatures_Audio_DESIGN HardwareFeatures_Audio_AudioConfigStructure = 1 HardwareFeatures_Audio_COMMON HardwareFeatures_Audio_AudioConfigStructure = 2 ) // Enum value maps for HardwareFeatures_Audio_AudioConfigStructure. var ( HardwareFeatures_Audio_AudioConfigStructure_name = map[int32]string{ 0: "AUDIO_CONFIG_STRUCTURE_NONE", 1: "DESIGN", 2: "COMMON", } HardwareFeatures_Audio_AudioConfigStructure_value = map[string]int32{ "AUDIO_CONFIG_STRUCTURE_NONE": 0, "DESIGN": 1, "COMMON": 2, } ) func (x HardwareFeatures_Audio_AudioConfigStructure) Enum() *HardwareFeatures_Audio_AudioConfigStructure { p := new(HardwareFeatures_Audio_AudioConfigStructure) *p = x return p } func (x HardwareFeatures_Audio_AudioConfigStructure) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Audio_AudioConfigStructure) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[8].Descriptor() } func (HardwareFeatures_Audio_AudioConfigStructure) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[8] } func (x HardwareFeatures_Audio_AudioConfigStructure) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Audio_AudioConfigStructure.Descriptor instead. func (HardwareFeatures_Audio_AudioConfigStructure) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 6, 2} } type HardwareFeatures_Camera_Interface int32 const ( HardwareFeatures_Camera_INTERFACE_UNKNOWN HardwareFeatures_Camera_Interface = 0 HardwareFeatures_Camera_INTERFACE_USB HardwareFeatures_Camera_Interface = 1 HardwareFeatures_Camera_INTERFACE_MIPI HardwareFeatures_Camera_Interface = 2 ) // Enum value maps for HardwareFeatures_Camera_Interface. var ( HardwareFeatures_Camera_Interface_name = map[int32]string{ 0: "INTERFACE_UNKNOWN", 1: "INTERFACE_USB", 2: "INTERFACE_MIPI", } HardwareFeatures_Camera_Interface_value = map[string]int32{ "INTERFACE_UNKNOWN": 0, "INTERFACE_USB": 1, "INTERFACE_MIPI": 2, } ) func (x HardwareFeatures_Camera_Interface) Enum() *HardwareFeatures_Camera_Interface { p := new(HardwareFeatures_Camera_Interface) *p = x return p } func (x HardwareFeatures_Camera_Interface) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Camera_Interface) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[9].Descriptor() } func (HardwareFeatures_Camera_Interface) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[9] } func (x HardwareFeatures_Camera_Interface) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Camera_Interface.Descriptor instead. func (HardwareFeatures_Camera_Interface) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 7, 0} } type HardwareFeatures_Camera_Facing int32 const ( HardwareFeatures_Camera_FACING_UNKNOWN HardwareFeatures_Camera_Facing = 0 HardwareFeatures_Camera_FACING_FRONT HardwareFeatures_Camera_Facing = 1 HardwareFeatures_Camera_FACING_BACK HardwareFeatures_Camera_Facing = 2 ) // Enum value maps for HardwareFeatures_Camera_Facing. var ( HardwareFeatures_Camera_Facing_name = map[int32]string{ 0: "FACING_UNKNOWN", 1: "FACING_FRONT", 2: "FACING_BACK", } HardwareFeatures_Camera_Facing_value = map[string]int32{ "FACING_UNKNOWN": 0, "FACING_FRONT": 1, "FACING_BACK": 2, } ) func (x HardwareFeatures_Camera_Facing) Enum() *HardwareFeatures_Camera_Facing { p := new(HardwareFeatures_Camera_Facing) *p = x return p } func (x HardwareFeatures_Camera_Facing) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Camera_Facing) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[10].Descriptor() } func (HardwareFeatures_Camera_Facing) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[10] } func (x HardwareFeatures_Camera_Facing) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Camera_Facing.Descriptor instead. func (HardwareFeatures_Camera_Facing) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 7, 1} } type HardwareFeatures_Camera_Orientation int32 const ( HardwareFeatures_Camera_ORIENTATION_UNKNOWN HardwareFeatures_Camera_Orientation = 0 HardwareFeatures_Camera_ORIENTATION_0 HardwareFeatures_Camera_Orientation = 1 HardwareFeatures_Camera_ORIENTATION_90 HardwareFeatures_Camera_Orientation = 2 HardwareFeatures_Camera_ORIENTATION_180 HardwareFeatures_Camera_Orientation = 3 HardwareFeatures_Camera_ORIENTATION_270 HardwareFeatures_Camera_Orientation = 4 ) // Enum value maps for HardwareFeatures_Camera_Orientation. var ( HardwareFeatures_Camera_Orientation_name = map[int32]string{ 0: "ORIENTATION_UNKNOWN", 1: "ORIENTATION_0", 2: "ORIENTATION_90", 3: "ORIENTATION_180", 4: "ORIENTATION_270", } HardwareFeatures_Camera_Orientation_value = map[string]int32{ "ORIENTATION_UNKNOWN": 0, "ORIENTATION_0": 1, "ORIENTATION_90": 2, "ORIENTATION_180": 3, "ORIENTATION_270": 4, } ) func (x HardwareFeatures_Camera_Orientation) Enum() *HardwareFeatures_Camera_Orientation { p := new(HardwareFeatures_Camera_Orientation) *p = x return p } func (x HardwareFeatures_Camera_Orientation) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Camera_Orientation) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[11].Descriptor() } func (HardwareFeatures_Camera_Orientation) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[11] } func (x HardwareFeatures_Camera_Orientation) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Camera_Orientation.Descriptor instead. func (HardwareFeatures_Camera_Orientation) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 7, 2} } type HardwareFeatures_Camera_Flags int32 const ( HardwareFeatures_Camera_FLAGS_NONE HardwareFeatures_Camera_Flags = 0 HardwareFeatures_Camera_FLAGS_SUPPORT_1080P HardwareFeatures_Camera_Flags = 1 HardwareFeatures_Camera_FLAGS_SUPPORT_AUTOFOCUS HardwareFeatures_Camera_Flags = 2 ) // Enum value maps for HardwareFeatures_Camera_Flags. var ( HardwareFeatures_Camera_Flags_name = map[int32]string{ 0: "FLAGS_NONE", 1: "FLAGS_SUPPORT_1080P", 2: "FLAGS_SUPPORT_AUTOFOCUS", } HardwareFeatures_Camera_Flags_value = map[string]int32{ "FLAGS_NONE": 0, "FLAGS_SUPPORT_1080P": 1, "FLAGS_SUPPORT_AUTOFOCUS": 2, } ) func (x HardwareFeatures_Camera_Flags) Enum() *HardwareFeatures_Camera_Flags { p := new(HardwareFeatures_Camera_Flags) *p = x return p } func (x HardwareFeatures_Camera_Flags) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Camera_Flags) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[12].Descriptor() } func (HardwareFeatures_Camera_Flags) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[12] } func (x HardwareFeatures_Camera_Flags) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Camera_Flags.Descriptor instead. func (HardwareFeatures_Camera_Flags) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 7, 3} } // The libdrm connector type that must match for the properties to // apply to this display. Right now, only eDP is supported, and // is the most common. Other connector types can be added as // required. See drm_mode.h in libdrm for valid options. type HardwareFeatures_Screen_ConnectorType int32 const ( // Assume a reasonable default (right now eDP). HardwareFeatures_Screen_CONNECTOR_TYPE_UNSPECIFIED HardwareFeatures_Screen_ConnectorType = 0 // eDP connector type. HardwareFeatures_Screen_CONNECTOR_TYPE_EDP HardwareFeatures_Screen_ConnectorType = 1 ) // Enum value maps for HardwareFeatures_Screen_ConnectorType. var ( HardwareFeatures_Screen_ConnectorType_name = map[int32]string{ 0: "CONNECTOR_TYPE_UNSPECIFIED", 1: "CONNECTOR_TYPE_EDP", } HardwareFeatures_Screen_ConnectorType_value = map[string]int32{ "CONNECTOR_TYPE_UNSPECIFIED": 0, "CONNECTOR_TYPE_EDP": 1, } ) func (x HardwareFeatures_Screen_ConnectorType) Enum() *HardwareFeatures_Screen_ConnectorType { p := new(HardwareFeatures_Screen_ConnectorType) *p = x return p } func (x HardwareFeatures_Screen_ConnectorType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Screen_ConnectorType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[13].Descriptor() } func (HardwareFeatures_Screen_ConnectorType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[13] } func (x HardwareFeatures_Screen_ConnectorType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Screen_ConnectorType.Descriptor instead. func (HardwareFeatures_Screen_ConnectorType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 12, 0} } type HardwareFeatures_FormFactor_FormFactorType int32 const ( HardwareFeatures_FormFactor_FORM_FACTOR_UNKNOWN HardwareFeatures_FormFactor_FormFactorType = 0 HardwareFeatures_FormFactor_CLAMSHELL HardwareFeatures_FormFactor_FormFactorType = 1 HardwareFeatures_FormFactor_CONVERTIBLE HardwareFeatures_FormFactor_FormFactorType = 2 HardwareFeatures_FormFactor_DETACHABLE HardwareFeatures_FormFactor_FormFactorType = 3 HardwareFeatures_FormFactor_CHROMEBASE HardwareFeatures_FormFactor_FormFactorType = 4 HardwareFeatures_FormFactor_CHROMEBOX HardwareFeatures_FormFactor_FormFactorType = 5 HardwareFeatures_FormFactor_CHROMEBIT HardwareFeatures_FormFactor_FormFactorType = 6 HardwareFeatures_FormFactor_CHROMESLATE HardwareFeatures_FormFactor_FormFactorType = 7 ) // Enum value maps for HardwareFeatures_FormFactor_FormFactorType. var ( HardwareFeatures_FormFactor_FormFactorType_name = map[int32]string{ 0: "FORM_FACTOR_UNKNOWN", 1: "CLAMSHELL", 2: "CONVERTIBLE", 3: "DETACHABLE", 4: "CHROMEBASE", 5: "CHROMEBOX", 6: "CHROMEBIT", 7: "CHROMESLATE", } HardwareFeatures_FormFactor_FormFactorType_value = map[string]int32{ "FORM_FACTOR_UNKNOWN": 0, "CLAMSHELL": 1, "CONVERTIBLE": 2, "DETACHABLE": 3, "CHROMEBASE": 4, "CHROMEBOX": 5, "CHROMEBIT": 6, "CHROMESLATE": 7, } ) func (x HardwareFeatures_FormFactor_FormFactorType) Enum() *HardwareFeatures_FormFactor_FormFactorType { p := new(HardwareFeatures_FormFactor_FormFactorType) *p = x return p } func (x HardwareFeatures_FormFactor_FormFactorType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_FormFactor_FormFactorType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[14].Descriptor() } func (HardwareFeatures_FormFactor_FormFactorType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[14] } func (x HardwareFeatures_FormFactor_FormFactorType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_FormFactor_FormFactorType.Descriptor instead. func (HardwareFeatures_FormFactor_FormFactorType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 13, 0} } type HardwareFeatures_FormFactor_RecoveryInputType int32 const ( HardwareFeatures_FormFactor_RECOVERY_INPUT_UNKNOWN HardwareFeatures_FormFactor_RecoveryInputType = 0 HardwareFeatures_FormFactor_KEYBOARD HardwareFeatures_FormFactor_RecoveryInputType = 1 HardwareFeatures_FormFactor_POWER_BUTTON HardwareFeatures_FormFactor_RecoveryInputType = 2 HardwareFeatures_FormFactor_RECOVERY_BUTTON HardwareFeatures_FormFactor_RecoveryInputType = 3 ) // Enum value maps for HardwareFeatures_FormFactor_RecoveryInputType. var ( HardwareFeatures_FormFactor_RecoveryInputType_name = map[int32]string{ 0: "RECOVERY_INPUT_UNKNOWN", 1: "KEYBOARD", 2: "POWER_BUTTON", 3: "RECOVERY_BUTTON", } HardwareFeatures_FormFactor_RecoveryInputType_value = map[string]int32{ "RECOVERY_INPUT_UNKNOWN": 0, "KEYBOARD": 1, "POWER_BUTTON": 2, "RECOVERY_BUTTON": 3, } ) func (x HardwareFeatures_FormFactor_RecoveryInputType) Enum() *HardwareFeatures_FormFactor_RecoveryInputType { p := new(HardwareFeatures_FormFactor_RecoveryInputType) *p = x return p } func (x HardwareFeatures_FormFactor_RecoveryInputType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_FormFactor_RecoveryInputType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[15].Descriptor() } func (HardwareFeatures_FormFactor_RecoveryInputType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[15] } func (x HardwareFeatures_FormFactor_RecoveryInputType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_FormFactor_RecoveryInputType.Descriptor instead. func (HardwareFeatures_FormFactor_RecoveryInputType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 13, 1} } type HardwareFeatures_Stylus_StylusType int32 const ( HardwareFeatures_Stylus_STYLUS_UNKNOWN HardwareFeatures_Stylus_StylusType = 0 HardwareFeatures_Stylus_NONE HardwareFeatures_Stylus_StylusType = 1 HardwareFeatures_Stylus_INTERNAL HardwareFeatures_Stylus_StylusType = 2 // Garaged stylus HardwareFeatures_Stylus_EXTERNAL HardwareFeatures_Stylus_StylusType = 3 // Non-garaged stylus ) // Enum value maps for HardwareFeatures_Stylus_StylusType. var ( HardwareFeatures_Stylus_StylusType_name = map[int32]string{ 0: "STYLUS_UNKNOWN", 1: "NONE", 2: "INTERNAL", 3: "EXTERNAL", } HardwareFeatures_Stylus_StylusType_value = map[string]int32{ "STYLUS_UNKNOWN": 0, "NONE": 1, "INTERNAL": 2, "EXTERNAL": 3, } ) func (x HardwareFeatures_Stylus_StylusType) Enum() *HardwareFeatures_Stylus_StylusType { p := new(HardwareFeatures_Stylus_StylusType) *p = x return p } func (x HardwareFeatures_Stylus_StylusType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Stylus_StylusType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[16].Descriptor() } func (HardwareFeatures_Stylus_StylusType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[16] } func (x HardwareFeatures_Stylus_StylusType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Stylus_StylusType.Descriptor instead. func (HardwareFeatures_Stylus_StylusType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 14, 0} } type HardwareFeatures_Keyboard_KeyboardType int32 const ( HardwareFeatures_Keyboard_KEYBOARD_TYPE_UNKNOWN HardwareFeatures_Keyboard_KeyboardType = 0 HardwareFeatures_Keyboard_INTERNAL HardwareFeatures_Keyboard_KeyboardType = 1 // E.g. Clamshell/Convertible HardwareFeatures_Keyboard_NONE HardwareFeatures_Keyboard_KeyboardType = 2 // E.g. Chromebox HardwareFeatures_Keyboard_DETACHABLE HardwareFeatures_Keyboard_KeyboardType = 3 // E.g. Tablet with detachable keyboard ) // Enum value maps for HardwareFeatures_Keyboard_KeyboardType. var ( HardwareFeatures_Keyboard_KeyboardType_name = map[int32]string{ 0: "KEYBOARD_TYPE_UNKNOWN", 1: "INTERNAL", 2: "NONE", 3: "DETACHABLE", } HardwareFeatures_Keyboard_KeyboardType_value = map[string]int32{ "KEYBOARD_TYPE_UNKNOWN": 0, "INTERNAL": 1, "NONE": 2, "DETACHABLE": 3, } ) func (x HardwareFeatures_Keyboard_KeyboardType) Enum() *HardwareFeatures_Keyboard_KeyboardType { p := new(HardwareFeatures_Keyboard_KeyboardType) *p = x return p } func (x HardwareFeatures_Keyboard_KeyboardType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Keyboard_KeyboardType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[17].Descriptor() } func (HardwareFeatures_Keyboard_KeyboardType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[17] } func (x HardwareFeatures_Keyboard_KeyboardType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Keyboard_KeyboardType.Descriptor instead. func (HardwareFeatures_Keyboard_KeyboardType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 15, 0} } type HardwareFeatures_Keyboard_KeyboardMcuType int32 const ( HardwareFeatures_Keyboard_KEYBOARD_MCU_NOT_PRESENT HardwareFeatures_Keyboard_KeyboardMcuType = 0 HardwareFeatures_Keyboard_KEYBOARD_MCU_PRISM HardwareFeatures_Keyboard_KeyboardMcuType = 1 ) // Enum value maps for HardwareFeatures_Keyboard_KeyboardMcuType. var ( HardwareFeatures_Keyboard_KeyboardMcuType_name = map[int32]string{ 0: "KEYBOARD_MCU_NOT_PRESENT", 1: "KEYBOARD_MCU_PRISM", } HardwareFeatures_Keyboard_KeyboardMcuType_value = map[string]int32{ "KEYBOARD_MCU_NOT_PRESENT": 0, "KEYBOARD_MCU_PRISM": 1, } ) func (x HardwareFeatures_Keyboard_KeyboardMcuType) Enum() *HardwareFeatures_Keyboard_KeyboardMcuType { p := new(HardwareFeatures_Keyboard_KeyboardMcuType) *p = x return p } func (x HardwareFeatures_Keyboard_KeyboardMcuType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Keyboard_KeyboardMcuType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[18].Descriptor() } func (HardwareFeatures_Keyboard_KeyboardMcuType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[18] } func (x HardwareFeatures_Keyboard_KeyboardMcuType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Keyboard_KeyboardMcuType.Descriptor instead. func (HardwareFeatures_Keyboard_KeyboardMcuType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 15, 1} } type HardwareFeatures_Keyboard_KeyboardBottomLeftLayout int32 const ( HardwareFeatures_Keyboard_KEYBOARD_BOTTOM_LEFT_LAYOUT_UNKNOWN HardwareFeatures_Keyboard_KeyboardBottomLeftLayout = 0 HardwareFeatures_Keyboard_KEYBOARD_BOTTOM_LEFT_3_KEYS HardwareFeatures_Keyboard_KeyboardBottomLeftLayout = 1 HardwareFeatures_Keyboard_KEYBOARD_BOTTOM_LEFT_4_KEYS HardwareFeatures_Keyboard_KeyboardBottomLeftLayout = 2 ) // Enum value maps for HardwareFeatures_Keyboard_KeyboardBottomLeftLayout. var ( HardwareFeatures_Keyboard_KeyboardBottomLeftLayout_name = map[int32]string{ 0: "KEYBOARD_BOTTOM_LEFT_LAYOUT_UNKNOWN", 1: "KEYBOARD_BOTTOM_LEFT_3_KEYS", 2: "KEYBOARD_BOTTOM_LEFT_4_KEYS", } HardwareFeatures_Keyboard_KeyboardBottomLeftLayout_value = map[string]int32{ "KEYBOARD_BOTTOM_LEFT_LAYOUT_UNKNOWN": 0, "KEYBOARD_BOTTOM_LEFT_3_KEYS": 1, "KEYBOARD_BOTTOM_LEFT_4_KEYS": 2, } ) func (x HardwareFeatures_Keyboard_KeyboardBottomLeftLayout) Enum() *HardwareFeatures_Keyboard_KeyboardBottomLeftLayout { p := new(HardwareFeatures_Keyboard_KeyboardBottomLeftLayout) *p = x return p } func (x HardwareFeatures_Keyboard_KeyboardBottomLeftLayout) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Keyboard_KeyboardBottomLeftLayout) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[19].Descriptor() } func (HardwareFeatures_Keyboard_KeyboardBottomLeftLayout) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[19] } func (x HardwareFeatures_Keyboard_KeyboardBottomLeftLayout) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Keyboard_KeyboardBottomLeftLayout.Descriptor instead. func (HardwareFeatures_Keyboard_KeyboardBottomLeftLayout) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 15, 2} } type HardwareFeatures_Keyboard_KeyboardBottomRightLayout int32 const ( HardwareFeatures_Keyboard_KEYBOARD_BOTTOM_RIGHT_LAYOUT_UNKNOWN HardwareFeatures_Keyboard_KeyboardBottomRightLayout = 0 HardwareFeatures_Keyboard_KEYBOARD_BOTTOM_RIGHT_2_KEYS HardwareFeatures_Keyboard_KeyboardBottomRightLayout = 1 HardwareFeatures_Keyboard_KEYBOARD_BOTTOM_RIGHT_3_KEYS HardwareFeatures_Keyboard_KeyboardBottomRightLayout = 2 HardwareFeatures_Keyboard_KEYBOARD_BOTTOM_RIGHT_4_KEYS HardwareFeatures_Keyboard_KeyboardBottomRightLayout = 3 ) // Enum value maps for HardwareFeatures_Keyboard_KeyboardBottomRightLayout. var ( HardwareFeatures_Keyboard_KeyboardBottomRightLayout_name = map[int32]string{ 0: "KEYBOARD_BOTTOM_RIGHT_LAYOUT_UNKNOWN", 1: "KEYBOARD_BOTTOM_RIGHT_2_KEYS", 2: "KEYBOARD_BOTTOM_RIGHT_3_KEYS", 3: "KEYBOARD_BOTTOM_RIGHT_4_KEYS", } HardwareFeatures_Keyboard_KeyboardBottomRightLayout_value = map[string]int32{ "KEYBOARD_BOTTOM_RIGHT_LAYOUT_UNKNOWN": 0, "KEYBOARD_BOTTOM_RIGHT_2_KEYS": 1, "KEYBOARD_BOTTOM_RIGHT_3_KEYS": 2, "KEYBOARD_BOTTOM_RIGHT_4_KEYS": 3, } ) func (x HardwareFeatures_Keyboard_KeyboardBottomRightLayout) Enum() *HardwareFeatures_Keyboard_KeyboardBottomRightLayout { p := new(HardwareFeatures_Keyboard_KeyboardBottomRightLayout) *p = x return p } func (x HardwareFeatures_Keyboard_KeyboardBottomRightLayout) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Keyboard_KeyboardBottomRightLayout) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[20].Descriptor() } func (HardwareFeatures_Keyboard_KeyboardBottomRightLayout) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[20] } func (x HardwareFeatures_Keyboard_KeyboardBottomRightLayout) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Keyboard_KeyboardBottomRightLayout.Descriptor instead. func (HardwareFeatures_Keyboard_KeyboardBottomRightLayout) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 15, 3} } type HardwareFeatures_Keyboard_NumericPadLayout int32 const ( HardwareFeatures_Keyboard_NUMERIC_PAD_LAYOUT_UNKNOWN HardwareFeatures_Keyboard_NumericPadLayout = 0 HardwareFeatures_Keyboard_NUMERIC_PAD_3_COLUMN HardwareFeatures_Keyboard_NumericPadLayout = 1 HardwareFeatures_Keyboard_NUMERIC_PAD_4_COLUMN HardwareFeatures_Keyboard_NumericPadLayout = 2 ) // Enum value maps for HardwareFeatures_Keyboard_NumericPadLayout. var ( HardwareFeatures_Keyboard_NumericPadLayout_name = map[int32]string{ 0: "NUMERIC_PAD_LAYOUT_UNKNOWN", 1: "NUMERIC_PAD_3_COLUMN", 2: "NUMERIC_PAD_4_COLUMN", } HardwareFeatures_Keyboard_NumericPadLayout_value = map[string]int32{ "NUMERIC_PAD_LAYOUT_UNKNOWN": 0, "NUMERIC_PAD_3_COLUMN": 1, "NUMERIC_PAD_4_COLUMN": 2, } ) func (x HardwareFeatures_Keyboard_NumericPadLayout) Enum() *HardwareFeatures_Keyboard_NumericPadLayout { p := new(HardwareFeatures_Keyboard_NumericPadLayout) *p = x return p } func (x HardwareFeatures_Keyboard_NumericPadLayout) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Keyboard_NumericPadLayout) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[21].Descriptor() } func (HardwareFeatures_Keyboard_NumericPadLayout) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[21] } func (x HardwareFeatures_Keyboard_NumericPadLayout) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Keyboard_NumericPadLayout.Descriptor instead. func (HardwareFeatures_Keyboard_NumericPadLayout) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 15, 4} } type HardwareFeatures_Fingerprint_Location int32 const ( HardwareFeatures_Fingerprint_LOCATION_UNKNOWN HardwareFeatures_Fingerprint_Location = 0 // Top of the screen (e.g. Pixel Slate) at the left HardwareFeatures_Fingerprint_POWER_BUTTON_TOP_LEFT HardwareFeatures_Fingerprint_Location = 1 // Bottom of keyboard at the left HardwareFeatures_Fingerprint_KEYBOARD_BOTTOM_LEFT HardwareFeatures_Fingerprint_Location = 2 // Bottom of keyboard at the right HardwareFeatures_Fingerprint_KEYBOARD_BOTTOM_RIGHT HardwareFeatures_Fingerprint_Location = 3 // Top of keyboard at the right (e.g. Galaxy Chromebook) HardwareFeatures_Fingerprint_KEYBOARD_TOP_RIGHT HardwareFeatures_Fingerprint_Location = 4 // At the right side HardwareFeatures_Fingerprint_RIGHT_SIDE HardwareFeatures_Fingerprint_Location = 6 // At the left side HardwareFeatures_Fingerprint_LEFT_SIDE HardwareFeatures_Fingerprint_Location = 7 // Left of power button at top right corner (of the keyboard) HardwareFeatures_Fingerprint_LEFT_OF_POWER_BUTTON_TOP_RIGHT HardwareFeatures_Fingerprint_Location = 9 ) // Enum value maps for HardwareFeatures_Fingerprint_Location. var ( HardwareFeatures_Fingerprint_Location_name = map[int32]string{ 0: "LOCATION_UNKNOWN", 1: "POWER_BUTTON_TOP_LEFT", 2: "KEYBOARD_BOTTOM_LEFT", 3: "KEYBOARD_BOTTOM_RIGHT", 4: "KEYBOARD_TOP_RIGHT", 6: "RIGHT_SIDE", 7: "LEFT_SIDE", 9: "LEFT_OF_POWER_BUTTON_TOP_RIGHT", } HardwareFeatures_Fingerprint_Location_value = map[string]int32{ "LOCATION_UNKNOWN": 0, "POWER_BUTTON_TOP_LEFT": 1, "KEYBOARD_BOTTOM_LEFT": 2, "KEYBOARD_BOTTOM_RIGHT": 3, "KEYBOARD_TOP_RIGHT": 4, "RIGHT_SIDE": 6, "LEFT_SIDE": 7, "LEFT_OF_POWER_BUTTON_TOP_RIGHT": 9, } ) func (x HardwareFeatures_Fingerprint_Location) Enum() *HardwareFeatures_Fingerprint_Location { p := new(HardwareFeatures_Fingerprint_Location) *p = x return p } func (x HardwareFeatures_Fingerprint_Location) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Fingerprint_Location) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[22].Descriptor() } func (HardwareFeatures_Fingerprint_Location) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[22] } func (x HardwareFeatures_Fingerprint_Location) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Fingerprint_Location.Descriptor instead. func (HardwareFeatures_Fingerprint_Location) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 17, 0} } type HardwareFeatures_Wifi_WifiChip int32 const ( HardwareFeatures_Wifi_WIFI_CHIP_UNKNOWN HardwareFeatures_Wifi_WifiChip = 0 HardwareFeatures_Wifi_WIRELESS_86ED801D HardwareFeatures_Wifi_WifiChip = 1 HardwareFeatures_Wifi_WIRELESS_REALTEK HardwareFeatures_Wifi_WifiChip = 2 ) // Enum value maps for HardwareFeatures_Wifi_WifiChip. var ( HardwareFeatures_Wifi_WifiChip_name = map[int32]string{ 0: "WIFI_CHIP_UNKNOWN", 1: "WIRELESS_86ED801D", 2: "WIRELESS_REALTEK", } HardwareFeatures_Wifi_WifiChip_value = map[string]int32{ "WIFI_CHIP_UNKNOWN": 0, "WIRELESS_86ED801D": 1, "WIRELESS_REALTEK": 2, } ) func (x HardwareFeatures_Wifi_WifiChip) Enum() *HardwareFeatures_Wifi_WifiChip { p := new(HardwareFeatures_Wifi_WifiChip) *p = x return p } func (x HardwareFeatures_Wifi_WifiChip) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Wifi_WifiChip) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[23].Descriptor() } func (HardwareFeatures_Wifi_WifiChip) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[23] } func (x HardwareFeatures_Wifi_WifiChip) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Wifi_WifiChip.Descriptor instead. func (HardwareFeatures_Wifi_WifiChip) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 21, 0} } // A general part of the device that contains the button, // e.g. "on the screen", "on the keyboard". type HardwareFeatures_Button_Region int32 const ( HardwareFeatures_Button_REGION_UNKNOWN HardwareFeatures_Button_Region = 0 HardwareFeatures_Button_SCREEN HardwareFeatures_Button_Region = 1 HardwareFeatures_Button_KEYBOARD HardwareFeatures_Button_Region = 2 ) // Enum value maps for HardwareFeatures_Button_Region. var ( HardwareFeatures_Button_Region_name = map[int32]string{ 0: "REGION_UNKNOWN", 1: "SCREEN", 2: "KEYBOARD", } HardwareFeatures_Button_Region_value = map[string]int32{ "REGION_UNKNOWN": 0, "SCREEN": 1, "KEYBOARD": 2, } ) func (x HardwareFeatures_Button_Region) Enum() *HardwareFeatures_Button_Region { p := new(HardwareFeatures_Button_Region) *p = x return p } func (x HardwareFeatures_Button_Region) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Button_Region) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[24].Descriptor() } func (HardwareFeatures_Button_Region) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[24] } func (x HardwareFeatures_Button_Region) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Button_Region.Descriptor instead. func (HardwareFeatures_Button_Region) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 22, 0} } // The edge of the Region that contains the button. type HardwareFeatures_Button_Edge int32 const ( HardwareFeatures_Button_EDGE_UNKNOWN HardwareFeatures_Button_Edge = 0 HardwareFeatures_Button_LEFT HardwareFeatures_Button_Edge = 1 HardwareFeatures_Button_RIGHT HardwareFeatures_Button_Edge = 2 HardwareFeatures_Button_TOP HardwareFeatures_Button_Edge = 3 HardwareFeatures_Button_BOTTOM HardwareFeatures_Button_Edge = 4 ) // Enum value maps for HardwareFeatures_Button_Edge. var ( HardwareFeatures_Button_Edge_name = map[int32]string{ 0: "EDGE_UNKNOWN", 1: "LEFT", 2: "RIGHT", 3: "TOP", 4: "BOTTOM", } HardwareFeatures_Button_Edge_value = map[string]int32{ "EDGE_UNKNOWN": 0, "LEFT": 1, "RIGHT": 2, "TOP": 3, "BOTTOM": 4, } ) func (x HardwareFeatures_Button_Edge) Enum() *HardwareFeatures_Button_Edge { p := new(HardwareFeatures_Button_Edge) *p = x return p } func (x HardwareFeatures_Button_Edge) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Button_Edge) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[25].Descriptor() } func (HardwareFeatures_Button_Edge) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[25] } func (x HardwareFeatures_Button_Edge) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Button_Edge.Descriptor instead. func (HardwareFeatures_Button_Edge) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 22, 1} } // The type of EC on the device. // Next Tag: 3 type HardwareFeatures_EmbeddedController_EmbeddedControllerType int32 const ( HardwareFeatures_EmbeddedController_EC_TYPE_UNKNOWN HardwareFeatures_EmbeddedController_EmbeddedControllerType = 0 HardwareFeatures_EmbeddedController_EC_CHROME HardwareFeatures_EmbeddedController_EmbeddedControllerType = 1 HardwareFeatures_EmbeddedController_EC_WILCO HardwareFeatures_EmbeddedController_EmbeddedControllerType = 2 ) // Enum value maps for HardwareFeatures_EmbeddedController_EmbeddedControllerType. var ( HardwareFeatures_EmbeddedController_EmbeddedControllerType_name = map[int32]string{ 0: "EC_TYPE_UNKNOWN", 1: "EC_CHROME", 2: "EC_WILCO", } HardwareFeatures_EmbeddedController_EmbeddedControllerType_value = map[string]int32{ "EC_TYPE_UNKNOWN": 0, "EC_CHROME": 1, "EC_WILCO": 2, } ) func (x HardwareFeatures_EmbeddedController_EmbeddedControllerType) Enum() *HardwareFeatures_EmbeddedController_EmbeddedControllerType { p := new(HardwareFeatures_EmbeddedController_EmbeddedControllerType) *p = x return p } func (x HardwareFeatures_EmbeddedController_EmbeddedControllerType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_EmbeddedController_EmbeddedControllerType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[26].Descriptor() } func (HardwareFeatures_EmbeddedController_EmbeddedControllerType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[26] } func (x HardwareFeatures_EmbeddedController_EmbeddedControllerType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_EmbeddedController_EmbeddedControllerType.Descriptor instead. func (HardwareFeatures_EmbeddedController_EmbeddedControllerType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 23, 0} } type HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType int32 const ( HardwareFeatures_TrustedPlatformModule_TPM_TYPE_UNKNOWN HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType = 0 HardwareFeatures_TrustedPlatformModule_THIRD_PARTY HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType = 1 // GSCs (Google Security Chips) provide additional functionality beyond // serving as the Trusted Platform Module. HardwareFeatures_TrustedPlatformModule_GSC_H1B HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType = 2 HardwareFeatures_TrustedPlatformModule_GSC_H1D HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType = 3 ) // Enum value maps for HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType. var ( HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType_name = map[int32]string{ 0: "TPM_TYPE_UNKNOWN", 1: "THIRD_PARTY", 2: "GSC_H1B", 3: "GSC_H1D", } HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType_value = map[string]int32{ "TPM_TYPE_UNKNOWN": 0, "THIRD_PARTY": 1, "GSC_H1B": 2, "GSC_H1D": 3, } ) func (x HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType) Enum() *HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType { p := new(HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType) *p = x return p } func (x HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[27].Descriptor() } func (HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[27] } func (x HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType.Descriptor instead. func (HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 24, 0} } // The runtime-determined TPM version. This field is needed because a flex // device couldn't determine its TPM version using USE flags, so it needs // to rely on this hardware feature which is detected during runtime. type HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion int32 const ( HardwareFeatures_TrustedPlatformModule_TPM_VERSION_DISABLED HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion = 0 // TPM 1.2 HardwareFeatures_TrustedPlatformModule_TPM_VERSION_V1_2 HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion = 1 // TPM 2.0 HardwareFeatures_TrustedPlatformModule_TPM_VERSION_V2 HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion = 2 ) // Enum value maps for HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion. var ( HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion_name = map[int32]string{ 0: "TPM_VERSION_DISABLED", 1: "TPM_VERSION_V1_2", 2: "TPM_VERSION_V2", } HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion_value = map[string]int32{ "TPM_VERSION_DISABLED": 0, "TPM_VERSION_V1_2": 1, "TPM_VERSION_V2": 2, } ) func (x HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion) Enum() *HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion { p := new(HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion) *p = x return p } func (x HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[28].Descriptor() } func (HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[28] } func (x HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion.Descriptor instead. func (HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 24, 1} } type HardwareFeatures_TrustedPlatformModule_GscFirmwareName int32 const ( HardwareFeatures_TrustedPlatformModule_GSC_NONE HardwareFeatures_TrustedPlatformModule_GscFirmwareName = 0 HardwareFeatures_TrustedPlatformModule_GSC_CR50 HardwareFeatures_TrustedPlatformModule_GscFirmwareName = 1 HardwareFeatures_TrustedPlatformModule_GSC_TI50 HardwareFeatures_TrustedPlatformModule_GscFirmwareName = 2 ) // Enum value maps for HardwareFeatures_TrustedPlatformModule_GscFirmwareName. var ( HardwareFeatures_TrustedPlatformModule_GscFirmwareName_name = map[int32]string{ 0: "GSC_NONE", 1: "GSC_CR50", 2: "GSC_TI50", } HardwareFeatures_TrustedPlatformModule_GscFirmwareName_value = map[string]int32{ "GSC_NONE": 0, "GSC_CR50": 1, "GSC_TI50": 2, } ) func (x HardwareFeatures_TrustedPlatformModule_GscFirmwareName) Enum() *HardwareFeatures_TrustedPlatformModule_GscFirmwareName { p := new(HardwareFeatures_TrustedPlatformModule_GscFirmwareName) *p = x return p } func (x HardwareFeatures_TrustedPlatformModule_GscFirmwareName) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_TrustedPlatformModule_GscFirmwareName) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[29].Descriptor() } func (HardwareFeatures_TrustedPlatformModule_GscFirmwareName) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[29] } func (x HardwareFeatures_TrustedPlatformModule_GscFirmwareName) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_TrustedPlatformModule_GscFirmwareName.Descriptor instead. func (HardwareFeatures_TrustedPlatformModule_GscFirmwareName) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 24, 2} } type HardwareFeatures_Display_Type int32 const ( HardwareFeatures_Display_TYPE_UNKNOWN HardwareFeatures_Display_Type = 0 HardwareFeatures_Display_TYPE_INTERNAL HardwareFeatures_Display_Type = 1 HardwareFeatures_Display_TYPE_EXTERNAL HardwareFeatures_Display_Type = 2 HardwareFeatures_Display_TYPE_INTERNAL_EXTERNAL HardwareFeatures_Display_Type = 3 ) // Enum value maps for HardwareFeatures_Display_Type. var ( HardwareFeatures_Display_Type_name = map[int32]string{ 0: "TYPE_UNKNOWN", 1: "TYPE_INTERNAL", 2: "TYPE_EXTERNAL", 3: "TYPE_INTERNAL_EXTERNAL", } HardwareFeatures_Display_Type_value = map[string]int32{ "TYPE_UNKNOWN": 0, "TYPE_INTERNAL": 1, "TYPE_EXTERNAL": 2, "TYPE_INTERNAL_EXTERNAL": 3, } ) func (x HardwareFeatures_Display_Type) Enum() *HardwareFeatures_Display_Type { p := new(HardwareFeatures_Display_Type) *p = x return p } func (x HardwareFeatures_Display_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Display_Type) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[30].Descriptor() } func (HardwareFeatures_Display_Type) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[30] } func (x HardwareFeatures_Display_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Display_Type.Descriptor instead. func (HardwareFeatures_Display_Type) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 26, 0} } type HardwareFeatures_Touchpad_TouchpadType int32 const ( HardwareFeatures_Touchpad_TYPE_UNKNOWN HardwareFeatures_Touchpad_TouchpadType = 0 HardwareFeatures_Touchpad_INTERNAL HardwareFeatures_Touchpad_TouchpadType = 1 // E.g. Clamshell/Convertible HardwareFeatures_Touchpad_NONE HardwareFeatures_Touchpad_TouchpadType = 2 // E.g. Chromebox HardwareFeatures_Touchpad_DETACHABLE HardwareFeatures_Touchpad_TouchpadType = 3 // E.g. Tablet with detachable keyboard/touchpad ) // Enum value maps for HardwareFeatures_Touchpad_TouchpadType. var ( HardwareFeatures_Touchpad_TouchpadType_name = map[int32]string{ 0: "TYPE_UNKNOWN", 1: "INTERNAL", 2: "NONE", 3: "DETACHABLE", } HardwareFeatures_Touchpad_TouchpadType_value = map[string]int32{ "TYPE_UNKNOWN": 0, "INTERNAL": 1, "NONE": 2, "DETACHABLE": 3, } ) func (x HardwareFeatures_Touchpad_TouchpadType) Enum() *HardwareFeatures_Touchpad_TouchpadType { p := new(HardwareFeatures_Touchpad_TouchpadType) *p = x return p } func (x HardwareFeatures_Touchpad_TouchpadType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Touchpad_TouchpadType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[31].Descriptor() } func (HardwareFeatures_Touchpad_TouchpadType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[31] } func (x HardwareFeatures_Touchpad_TouchpadType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Touchpad_TouchpadType.Descriptor instead. func (HardwareFeatures_Touchpad_TouchpadType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 27, 0} } // The type of dGPU on the device. // Next Tag: 3 type HardwareFeatures_Dgpu_DgpuType int32 const ( HardwareFeatures_Dgpu_DGPU_UNKNOWN HardwareFeatures_Dgpu_DgpuType = 0 HardwareFeatures_Dgpu_DGPU_NV3050 HardwareFeatures_Dgpu_DgpuType = 1 HardwareFeatures_Dgpu_DGPU_NV4050 HardwareFeatures_Dgpu_DgpuType = 2 ) // Enum value maps for HardwareFeatures_Dgpu_DgpuType. var ( HardwareFeatures_Dgpu_DgpuType_name = map[int32]string{ 0: "DGPU_UNKNOWN", 1: "DGPU_NV3050", 2: "DGPU_NV4050", } HardwareFeatures_Dgpu_DgpuType_value = map[string]int32{ "DGPU_UNKNOWN": 0, "DGPU_NV3050": 1, "DGPU_NV4050": 2, } ) func (x HardwareFeatures_Dgpu_DgpuType) Enum() *HardwareFeatures_Dgpu_DgpuType { p := new(HardwareFeatures_Dgpu_DgpuType) *p = x return p } func (x HardwareFeatures_Dgpu_DgpuType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HardwareFeatures_Dgpu_DgpuType) Descriptor() protoreflect.EnumDescriptor { return file_chromiumos_config_api_topology_proto_enumTypes[32].Descriptor() } func (HardwareFeatures_Dgpu_DgpuType) Type() protoreflect.EnumType { return &file_chromiumos_config_api_topology_proto_enumTypes[32] } func (x HardwareFeatures_Dgpu_DgpuType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HardwareFeatures_Dgpu_DgpuType.Descriptor instead. func (HardwareFeatures_Dgpu_DgpuType) EnumDescriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 40, 0} } // Represents a specific hardware topology option for a hardware feature, e.g. // camera, microphone, gyroscope, daughter board connection. For example. one // camera topology would be represented by a unique instance of this Topology // message. // // All Topology instances are scoped to a particular Design. type Topology struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Short, but meaningful string that represents the topology. Blank id is // not valid. Id values are validated by Design repo. Ids are // meaningful within a Design. Ids are scoped and unique within a // particular hardware features for a Design. For example, it is valid to have // a "NONE" id for both the camera and microphone hardware feature within the // same Design. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The type of hardware feature this topology describes. This is used to // ensure that the correct Topology values are used correctly within the // HardwareTopology message Type Topology_Type `protobuf:"varint,2,opt,name=type,proto3,enum=chromiumos.config.api.Topology_Type" json:"type,omitempty"` // Map of human readable descriptions in various languages. Maps language // code, e.g. "EN" or "ZH", to description of topology. These descriptions can // be displayed to factory operators to select the correct options that // applies to the board they are assembling. Description map[string]string `protobuf:"bytes,3,rep,name=description,proto3" json:"description,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Specify the subset of hardware features that this hardware topology // provides HardwareFeature *HardwareFeatures `protobuf:"bytes,4,opt,name=hardware_feature,json=hardwareFeature,proto3" json:"hardware_feature,omitempty"` } func (x *Topology) Reset() { *x = Topology{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Topology) String() string { return protoimpl.X.MessageStringOf(x) } func (*Topology) ProtoMessage() {} func (x *Topology) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 Topology.ProtoReflect.Descriptor instead. func (*Topology) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{0} } func (x *Topology) GetId() string { if x != nil { return x.Id } return "" } func (x *Topology) GetType() Topology_Type { if x != nil { return x.Type } return Topology_TYPE_UNKNOWN } func (x *Topology) GetDescription() map[string]string { if x != nil { return x.Description } return nil } func (x *Topology) GetHardwareFeature() *HardwareFeatures { if x != nil { return x.HardwareFeature } return nil } // Defines a time duration that's targeted for easier reading/understanding // of program requirements (versus normalizing everything to millis). type Duration struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type Duration_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chromiumos.config.api.Duration_Type" json:"type,omitempty"` Value int32 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` } func (x *Duration) Reset() { *x = Duration{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Duration) String() string { return protoimpl.X.MessageStringOf(x) } func (*Duration) ProtoMessage() {} func (x *Duration) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 Duration.ProtoReflect.Descriptor instead. func (*Duration) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{1} } func (x *Duration) GetType() Duration_Type { if x != nil { return x.Type } return Duration_TYPE_UNKNOWN } func (x *Duration) GetValue() int32 { if x != nil { return x.Value } return 0 } // Each Topology message specifies what that topology means in a 1st class // queryable way. Each Topology will only the subset of hardware features that // are applicable to that value. // The DesignConfig layer will combine all of the Topology messages // HardwareFeature messages into a wholistic view of the hardware design // configuration. // // Note to API designers: each field needs to be able to differentiate // an unspecified value and from the 0-value; this can be down with // messages or enums. Each field also defines how multiple values should be // combined. // NEXT TAG: 55 type HardwareFeatures struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // USB-C properties UsbC *HardwareFeatures_UsbC `protobuf:"bytes,1,opt,name=usb_c,json=usbC,proto3" json:"usb_c,omitempty"` // USB-A properties UsbA *HardwareFeatures_UsbA `protobuf:"bytes,2,opt,name=usb_a,json=usbA,proto3" json:"usb_a,omitempty"` // Cellular properties Cellular *HardwareFeatures_Cellular `protobuf:"bytes,3,opt,name=cellular,proto3" json:"cellular,omitempty"` // HDMI properties Hdmi *HardwareFeatures_Hdmi `protobuf:"bytes,4,opt,name=hdmi,proto3" json:"hdmi,omitempty"` // Firmware configuration field programmed in CBI. The value from each // topology value will be summed to create the final DesignConfig level // firmware configuration value. FwConfig *HardwareFeatures_FirmwareConfiguration `protobuf:"bytes,5,opt,name=fw_config,json=fwConfig,proto3" json:"fw_config,omitempty"` // Audio properties of system Audio *HardwareFeatures_Audio `protobuf:"bytes,6,opt,name=audio,proto3" json:"audio,omitempty"` // Camera properties of system. Camera *HardwareFeatures_Camera `protobuf:"bytes,7,opt,name=camera,proto3" json:"camera,omitempty"` // Accelerometer properties of system. Accelerometer *HardwareFeatures_Accelerometer `protobuf:"bytes,8,opt,name=accelerometer,proto3" json:"accelerometer,omitempty"` // Gyroscope properties of system. Gyroscope *HardwareFeatures_Gyroscope `protobuf:"bytes,9,opt,name=gyroscope,proto3" json:"gyroscope,omitempty"` // Magnetometer properties of system. Magnetometer *HardwareFeatures_Magnetometer `protobuf:"bytes,10,opt,name=magnetometer,proto3" json:"magnetometer,omitempty"` // LightSensor properties of system. LightSensor *HardwareFeatures_LightSensor `protobuf:"bytes,11,opt,name=light_sensor,json=lightSensor,proto3" json:"light_sensor,omitempty"` // Screen properties of system Screen *HardwareFeatures_Screen `protobuf:"bytes,12,opt,name=screen,proto3" json:"screen,omitempty"` // Function form factor of system FormFactor *HardwareFeatures_FormFactor `protobuf:"bytes,13,opt,name=form_factor,json=formFactor,proto3" json:"form_factor,omitempty"` // Stylus properites of system. Stylus *HardwareFeatures_Stylus `protobuf:"bytes,14,opt,name=stylus,proto3" json:"stylus,omitempty"` // Keyboard properties of system Keyboard *HardwareFeatures_Keyboard `protobuf:"bytes,15,opt,name=keyboard,proto3" json:"keyboard,omitempty"` // Memory properties of system Memory *HardwareFeatures_Memory `protobuf:"bytes,16,opt,name=memory,proto3" json:"memory,omitempty"` // Fingerprint properties of system Fingerprint *HardwareFeatures_Fingerprint `protobuf:"bytes,17,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` // Non-volatile storage properties of system Storage *HardwareFeatures_Storage `protobuf:"bytes,18,opt,name=storage,proto3" json:"storage,omitempty"` // Bluetooth properties Bluetooth *HardwareFeatures_Bluetooth `protobuf:"bytes,19,opt,name=bluetooth,proto3" json:"bluetooth,omitempty"` // BarrelJack properties Barreljack *HardwareFeatures_BarrelJack `protobuf:"bytes,20,opt,name=barreljack,proto3" json:"barreljack,omitempty"` Wifi *HardwareFeatures_Wifi `protobuf:"bytes,23,opt,name=wifi,proto3" json:"wifi,omitempty"` PowerButton *HardwareFeatures_Button `protobuf:"bytes,21,opt,name=power_button,json=powerButton,proto3" json:"power_button,omitempty"` VolumeButton *HardwareFeatures_Button `protobuf:"bytes,22,opt,name=volume_button,json=volumeButton,proto3" json:"volume_button,omitempty"` EmbeddedController *HardwareFeatures_EmbeddedController `protobuf:"bytes,24,opt,name=embedded_controller,json=embeddedController,proto3" json:"embedded_controller,omitempty"` TrustedPlatformModule *HardwareFeatures_TrustedPlatformModule `protobuf:"bytes,25,opt,name=trusted_platform_module,json=trustedPlatformModule,proto3" json:"trusted_platform_module,omitempty"` Hotwording *HardwareFeatures_Hotwording `protobuf:"bytes,26,opt,name=hotwording,proto3" json:"hotwording,omitempty"` Display *HardwareFeatures_Display `protobuf:"bytes,27,opt,name=display,proto3" json:"display,omitempty"` Touchpad *HardwareFeatures_Touchpad `protobuf:"bytes,28,opt,name=touchpad,proto3" json:"touchpad,omitempty"` MicrophoneMuteSwitch *HardwareFeatures_MicrophoneMuteSwitch `protobuf:"bytes,29,opt,name=microphone_mute_switch,json=microphoneMuteSwitch,proto3" json:"microphone_mute_switch,omitempty"` Battery *HardwareFeatures_Battery `protobuf:"bytes,30,opt,name=battery,proto3" json:"battery,omitempty"` PrivacyScreen *HardwareFeatures_PrivacyScreen `protobuf:"bytes,31,opt,name=privacy_screen,json=privacyScreen,proto3" json:"privacy_screen,omitempty"` Soc *HardwareFeatures_Soc `protobuf:"bytes,32,opt,name=soc,proto3" json:"soc,omitempty"` DpConverter *HardwareFeatures_DisplayPortConverter `protobuf:"bytes,33,opt,name=dp_converter,json=dpConverter,proto3" json:"dp_converter,omitempty"` // HPS properties of system Hps *HardwareFeatures_Hps `protobuf:"bytes,34,opt,name=hps,proto3" json:"hps,omitempty"` Poe *HardwareFeatures_PoE `protobuf:"bytes,35,opt,name=poe,proto3" json:"poe,omitempty"` // Power supply properties PowerSupply *HardwareFeatures_PowerSupply `protobuf:"bytes,36,opt,name=power_supply,json=powerSupply,proto3" json:"power_supply,omitempty"` Proximity *HardwareFeatures_Proximity `protobuf:"bytes,37,opt,name=proximity,proto3" json:"proximity,omitempty"` // Touch screen properties Touch *HardwareFeatures_Touch `protobuf:"bytes,38,opt,name=touch,proto3" json:"touch,omitempty"` Thermal *HardwareFeatures_Thermal `protobuf:"bytes,39,opt,name=thermal,proto3" json:"thermal,omitempty"` RuntimeProbeConfig *HardwareFeatures_RuntimeProbeConfig `protobuf:"bytes,40,opt,name=runtime_probe_config,json=runtimeProbeConfig,proto3" json:"runtime_probe_config,omitempty"` DgpuConfig *HardwareFeatures_Dgpu `protobuf:"bytes,41,opt,name=dgpu_config,json=dgpuConfig,proto3" json:"dgpu_config,omitempty"` // UWB properties of system UwbConfig *HardwareFeatures_Uwb `protobuf:"bytes,42,opt,name=uwb_config,json=uwbConfig,proto3" json:"uwb_config,omitempty"` HardwareProbeConfig *HardwareFeatures_HardwareProbe `protobuf:"bytes,43,opt,name=hardware_probe_config,json=hardwareProbeConfig,proto3" json:"hardware_probe_config,omitempty"` // Detachable base properties DetachableBase *HardwareFeatures_DetachableBase `protobuf:"bytes,44,opt,name=detachable_base,json=detachableBase,proto3" json:"detachable_base,omitempty"` // Supported suspend modes Suspend *HardwareFeatures_Suspend `protobuf:"bytes,45,opt,name=suspend,proto3" json:"suspend,omitempty"` // VRR (variable refresh rate) properties Vrr *HardwareFeatures_Vrr `protobuf:"bytes,46,opt,name=vrr,proto3" json:"vrr,omitempty"` // SD reader properties SdReader *HardwareFeatures_SdReader `protobuf:"bytes,47,opt,name=sd_reader,json=sdReader,proto3" json:"sd_reader,omitempty"` // FeatureLevel stores the feature level of a DUT FeatureLevel uint32 `protobuf:"varint,48,opt,name=feature_level,json=featureLevel,proto3" json:"feature_level,omitempty"` // OEM info OemInfo *HardwareFeatures_OEMInfo `protobuf:"bytes,49,opt,name=oem_info,json=oemInfo,proto3" json:"oem_info,omitempty"` // Fan Fan *HardwareFeatures_Fan `protobuf:"bytes,50,opt,name=fan,proto3" json:"fan,omitempty"` // Details about the Interrupt controller InterruptControllerInfo *HardwareFeatures_InterruptControllerInfo `protobuf:"bytes,51,opt,name=interrupt_controller_info,json=interruptControllerInfo,proto3" json:"interrupt_controller_info,omitempty"` // Properties of tiled display, which consists of multiple panels each driven // by separate connectors. TiledDisplay *HardwareFeatures_TiledDisplay `protobuf:"bytes,52,opt,name=tiled_display,json=tiledDisplay,proto3" json:"tiled_display,omitempty"` // Details about cpu info. CpuInfo *HardwareFeatures_CpuInfo `protobuf:"bytes,53,opt,name=cpu_info,json=cpuInfo,proto3" json:"cpu_info,omitempty"` // Details about pendrive. Pendrive *HardwareFeatures_Pendrive `protobuf:"bytes,54,opt,name=pendrive,proto3" json:"pendrive,omitempty"` } func (x *HardwareFeatures) Reset() { *x = HardwareFeatures{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures) ProtoMessage() {} func (x *HardwareFeatures) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures.ProtoReflect.Descriptor instead. func (*HardwareFeatures) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2} } func (x *HardwareFeatures) GetUsbC() *HardwareFeatures_UsbC { if x != nil { return x.UsbC } return nil } func (x *HardwareFeatures) GetUsbA() *HardwareFeatures_UsbA { if x != nil { return x.UsbA } return nil } func (x *HardwareFeatures) GetCellular() *HardwareFeatures_Cellular { if x != nil { return x.Cellular } return nil } func (x *HardwareFeatures) GetHdmi() *HardwareFeatures_Hdmi { if x != nil { return x.Hdmi } return nil } func (x *HardwareFeatures) GetFwConfig() *HardwareFeatures_FirmwareConfiguration { if x != nil { return x.FwConfig } return nil } func (x *HardwareFeatures) GetAudio() *HardwareFeatures_Audio { if x != nil { return x.Audio } return nil } func (x *HardwareFeatures) GetCamera() *HardwareFeatures_Camera { if x != nil { return x.Camera } return nil } func (x *HardwareFeatures) GetAccelerometer() *HardwareFeatures_Accelerometer { if x != nil { return x.Accelerometer } return nil } func (x *HardwareFeatures) GetGyroscope() *HardwareFeatures_Gyroscope { if x != nil { return x.Gyroscope } return nil } func (x *HardwareFeatures) GetMagnetometer() *HardwareFeatures_Magnetometer { if x != nil { return x.Magnetometer } return nil } func (x *HardwareFeatures) GetLightSensor() *HardwareFeatures_LightSensor { if x != nil { return x.LightSensor } return nil } func (x *HardwareFeatures) GetScreen() *HardwareFeatures_Screen { if x != nil { return x.Screen } return nil } func (x *HardwareFeatures) GetFormFactor() *HardwareFeatures_FormFactor { if x != nil { return x.FormFactor } return nil } func (x *HardwareFeatures) GetStylus() *HardwareFeatures_Stylus { if x != nil { return x.Stylus } return nil } func (x *HardwareFeatures) GetKeyboard() *HardwareFeatures_Keyboard { if x != nil { return x.Keyboard } return nil } func (x *HardwareFeatures) GetMemory() *HardwareFeatures_Memory { if x != nil { return x.Memory } return nil } func (x *HardwareFeatures) GetFingerprint() *HardwareFeatures_Fingerprint { if x != nil { return x.Fingerprint } return nil } func (x *HardwareFeatures) GetStorage() *HardwareFeatures_Storage { if x != nil { return x.Storage } return nil } func (x *HardwareFeatures) GetBluetooth() *HardwareFeatures_Bluetooth { if x != nil { return x.Bluetooth } return nil } func (x *HardwareFeatures) GetBarreljack() *HardwareFeatures_BarrelJack { if x != nil { return x.Barreljack } return nil } func (x *HardwareFeatures) GetWifi() *HardwareFeatures_Wifi { if x != nil { return x.Wifi } return nil } func (x *HardwareFeatures) GetPowerButton() *HardwareFeatures_Button { if x != nil { return x.PowerButton } return nil } func (x *HardwareFeatures) GetVolumeButton() *HardwareFeatures_Button { if x != nil { return x.VolumeButton } return nil } func (x *HardwareFeatures) GetEmbeddedController() *HardwareFeatures_EmbeddedController { if x != nil { return x.EmbeddedController } return nil } func (x *HardwareFeatures) GetTrustedPlatformModule() *HardwareFeatures_TrustedPlatformModule { if x != nil { return x.TrustedPlatformModule } return nil } func (x *HardwareFeatures) GetHotwording() *HardwareFeatures_Hotwording { if x != nil { return x.Hotwording } return nil } func (x *HardwareFeatures) GetDisplay() *HardwareFeatures_Display { if x != nil { return x.Display } return nil } func (x *HardwareFeatures) GetTouchpad() *HardwareFeatures_Touchpad { if x != nil { return x.Touchpad } return nil } func (x *HardwareFeatures) GetMicrophoneMuteSwitch() *HardwareFeatures_MicrophoneMuteSwitch { if x != nil { return x.MicrophoneMuteSwitch } return nil } func (x *HardwareFeatures) GetBattery() *HardwareFeatures_Battery { if x != nil { return x.Battery } return nil } func (x *HardwareFeatures) GetPrivacyScreen() *HardwareFeatures_PrivacyScreen { if x != nil { return x.PrivacyScreen } return nil } func (x *HardwareFeatures) GetSoc() *HardwareFeatures_Soc { if x != nil { return x.Soc } return nil } func (x *HardwareFeatures) GetDpConverter() *HardwareFeatures_DisplayPortConverter { if x != nil { return x.DpConverter } return nil } func (x *HardwareFeatures) GetHps() *HardwareFeatures_Hps { if x != nil { return x.Hps } return nil } func (x *HardwareFeatures) GetPoe() *HardwareFeatures_PoE { if x != nil { return x.Poe } return nil } func (x *HardwareFeatures) GetPowerSupply() *HardwareFeatures_PowerSupply { if x != nil { return x.PowerSupply } return nil } func (x *HardwareFeatures) GetProximity() *HardwareFeatures_Proximity { if x != nil { return x.Proximity } return nil } func (x *HardwareFeatures) GetTouch() *HardwareFeatures_Touch { if x != nil { return x.Touch } return nil } func (x *HardwareFeatures) GetThermal() *HardwareFeatures_Thermal { if x != nil { return x.Thermal } return nil } func (x *HardwareFeatures) GetRuntimeProbeConfig() *HardwareFeatures_RuntimeProbeConfig { if x != nil { return x.RuntimeProbeConfig } return nil } func (x *HardwareFeatures) GetDgpuConfig() *HardwareFeatures_Dgpu { if x != nil { return x.DgpuConfig } return nil } func (x *HardwareFeatures) GetUwbConfig() *HardwareFeatures_Uwb { if x != nil { return x.UwbConfig } return nil } func (x *HardwareFeatures) GetHardwareProbeConfig() *HardwareFeatures_HardwareProbe { if x != nil { return x.HardwareProbeConfig } return nil } func (x *HardwareFeatures) GetDetachableBase() *HardwareFeatures_DetachableBase { if x != nil { return x.DetachableBase } return nil } func (x *HardwareFeatures) GetSuspend() *HardwareFeatures_Suspend { if x != nil { return x.Suspend } return nil } func (x *HardwareFeatures) GetVrr() *HardwareFeatures_Vrr { if x != nil { return x.Vrr } return nil } func (x *HardwareFeatures) GetSdReader() *HardwareFeatures_SdReader { if x != nil { return x.SdReader } return nil } func (x *HardwareFeatures) GetFeatureLevel() uint32 { if x != nil { return x.FeatureLevel } return 0 } func (x *HardwareFeatures) GetOemInfo() *HardwareFeatures_OEMInfo { if x != nil { return x.OemInfo } return nil } func (x *HardwareFeatures) GetFan() *HardwareFeatures_Fan { if x != nil { return x.Fan } return nil } func (x *HardwareFeatures) GetInterruptControllerInfo() *HardwareFeatures_InterruptControllerInfo { if x != nil { return x.InterruptControllerInfo } return nil } func (x *HardwareFeatures) GetTiledDisplay() *HardwareFeatures_TiledDisplay { if x != nil { return x.TiledDisplay } return nil } func (x *HardwareFeatures) GetCpuInfo() *HardwareFeatures_CpuInfo { if x != nil { return x.CpuInfo } return nil } func (x *HardwareFeatures) GetPendrive() *HardwareFeatures_Pendrive { if x != nil { return x.Pendrive } return nil } type HardwareFeatures_Count struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` } func (x *HardwareFeatures_Count) Reset() { *x = HardwareFeatures_Count{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Count) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Count) ProtoMessage() {} func (x *HardwareFeatures_Count) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_Count.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Count) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 0} } func (x *HardwareFeatures_Count) GetValue() uint32 { if x != nil { return x.Value } return 0 } type HardwareFeatures_UsbC struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The number of USB-C ports Count *HardwareFeatures_Count `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` // Details about each USB-C port. Ports []*HardwareFeatures_UsbC_Port `protobuf:"bytes,2,rep,name=ports,proto3" json:"ports,omitempty"` // Whether port(s) are USB4 Usb4 bool `protobuf:"varint,3,opt,name=usb4,proto3" json:"usb4,omitempty"` // Optional field to manually override the external display timeout DeferExternalDisplayTimeout uint32 `protobuf:"varint,4,opt,name=defer_external_display_timeout,json=deferExternalDisplayTimeout,proto3" json:"defer_external_display_timeout,omitempty"` } func (x *HardwareFeatures_UsbC) Reset() { *x = HardwareFeatures_UsbC{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_UsbC) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_UsbC) ProtoMessage() {} func (x *HardwareFeatures_UsbC) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_UsbC.ProtoReflect.Descriptor instead. func (*HardwareFeatures_UsbC) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 1} } func (x *HardwareFeatures_UsbC) GetCount() *HardwareFeatures_Count { if x != nil { return x.Count } return nil } func (x *HardwareFeatures_UsbC) GetPorts() []*HardwareFeatures_UsbC_Port { if x != nil { return x.Ports } return nil } func (x *HardwareFeatures_UsbC) GetUsb4() bool { if x != nil { return x.Usb4 } return false } func (x *HardwareFeatures_UsbC) GetDeferExternalDisplayTimeout() uint32 { if x != nil { return x.DeferExternalDisplayTimeout } return 0 } type HardwareFeatures_UsbA struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The number of USB-A ports Count *HardwareFeatures_Count `protobuf:"bytes,1,opt,name=count,proto3" json:"count,omitempty"` } func (x *HardwareFeatures_UsbA) Reset() { *x = HardwareFeatures_UsbA{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_UsbA) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_UsbA) ProtoMessage() {} func (x *HardwareFeatures_UsbA) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_UsbA.ProtoReflect.Descriptor instead. func (*HardwareFeatures_UsbA) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 2} } func (x *HardwareFeatures_UsbA) GetCount() *HardwareFeatures_Count { if x != nil { return x.Count } return nil } type HardwareFeatures_Cellular struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If Cellular is present on system Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` // Optional string identifying the model of the modem to select the proper // helper and firmwares on platforms with several supported modems. Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"` // Cellular type Type HardwareFeatures_Cellular_CellularType `protobuf:"varint,3,opt,name=type,proto3,enum=chromiumos.config.api.HardwareFeatures_Cellular_CellularType" json:"type,omitempty"` // bool to enable the cellular feature Attach APN. // // Deprecated: Do not use. AttachApnRequired bool `protobuf:"varint,4,opt,name=attach_apn_required,json=attachApnRequired,proto3" json:"attach_apn_required,omitempty"` // Optional config for dynamic power reduction control. DynamicPowerReductionConfig *HardwareFeatures_Cellular_DynamicPowerReductionConfig `protobuf:"bytes,5,opt,name=dynamic_power_reduction_config,json=dynamicPowerReductionConfig,proto3" json:"dynamic_power_reduction_config,omitempty"` // Wedge detection timeout in ms. WedgeTimeoutInMs uint32 `protobuf:"varint,6,opt,name=wedge_timeout_in_ms,json=wedgeTimeoutInMs,proto3" json:"wedge_timeout_in_ms,omitempty"` ModemType HardwareFeatures_Cellular_ModemType `protobuf:"varint,7,opt,name=modem_type,json=modemType,proto3,enum=chromiumos.config.api.HardwareFeatures_Cellular_ModemType" json:"modem_type,omitempty"` } func (x *HardwareFeatures_Cellular) Reset() { *x = HardwareFeatures_Cellular{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Cellular) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Cellular) ProtoMessage() {} func (x *HardwareFeatures_Cellular) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_Cellular.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Cellular) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 3} } func (x *HardwareFeatures_Cellular) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Cellular) GetModel() string { if x != nil { return x.Model } return "" } func (x *HardwareFeatures_Cellular) GetType() HardwareFeatures_Cellular_CellularType { if x != nil { return x.Type } return HardwareFeatures_Cellular_CELLULAR_UNKNOWN } // Deprecated: Do not use. func (x *HardwareFeatures_Cellular) GetAttachApnRequired() bool { if x != nil { return x.AttachApnRequired } return false } func (x *HardwareFeatures_Cellular) GetDynamicPowerReductionConfig() *HardwareFeatures_Cellular_DynamicPowerReductionConfig { if x != nil { return x.DynamicPowerReductionConfig } return nil } func (x *HardwareFeatures_Cellular) GetWedgeTimeoutInMs() uint32 { if x != nil { return x.WedgeTimeoutInMs } return 0 } func (x *HardwareFeatures_Cellular) GetModemType() HardwareFeatures_Cellular_ModemType { if x != nil { return x.ModemType } return HardwareFeatures_Cellular_MODEM_UNKNOWN } type HardwareFeatures_Hdmi struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If native HDMI support is present on system. Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` // Configuration for HDMI-CEC. Cec *HardwareFeatures_Hdmi_Cec `protobuf:"bytes,2,opt,name=cec,proto3" json:"cec,omitempty"` } func (x *HardwareFeatures_Hdmi) Reset() { *x = HardwareFeatures_Hdmi{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Hdmi) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Hdmi) ProtoMessage() {} func (x *HardwareFeatures_Hdmi) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_Hdmi.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Hdmi) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 4} } func (x *HardwareFeatures_Hdmi) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Hdmi) GetCec() *HardwareFeatures_Hdmi_Cec { if x != nil { return x.Cec } return nil } type HardwareFeatures_FirmwareConfiguration struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The firmware configuration value Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` // The mask of valid bits that could be used by above value Mask uint32 `protobuf:"varint,2,opt,name=mask,proto3" json:"mask,omitempty"` // Customizations to append as a suffix to the coreboot build target and AP // firmware packaging. CorebootCustomizations []string `protobuf:"bytes,3,rep,name=coreboot_customizations,json=corebootCustomizations,proto3" json:"coreboot_customizations,omitempty"` // The AP firmware has the CONFIG_VBOOT_CBFS_INTEGRATION feature enabled. VbootCbfsIntegration HardwareFeatures_Present `protobuf:"varint,5,opt,name=vboot_cbfs_integration,json=vbootCbfsIntegration,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"vboot_cbfs_integration,omitempty"` // The RO firmware version currently running on the DUT. FwRoVersion *HardwareFeatures_FirmwareConfiguration_SemVer `protobuf:"bytes,8,opt,name=fw_ro_version,json=fwRoVersion,proto3" json:"fw_ro_version,omitempty"` // The Intel Integrated Sensor Hub is available and supported by firmware. IntelIsh HardwareFeatures_Present `protobuf:"varint,9,opt,name=intel_ish,json=intelIsh,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"intel_ish,omitempty"` // The RW firmware version currently running on the DUT. FwRwVersion *HardwareFeatures_FirmwareConfiguration_SemVer `protobuf:"bytes,10,opt,name=fw_rw_version,json=fwRwVersion,proto3" json:"fw_rw_version,omitempty"` // The AP firmware has the CONFIG_BMP_LOGO feature enabled. BmpLogo HardwareFeatures_Present `protobuf:"varint,11,opt,name=bmp_logo,json=bmpLogo,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"bmp_logo,omitempty"` // The AP firmware has the CONFIG_FW_SPLASH_SCREEN feature enabled. FwSplashScreen HardwareFeatures_Present `protobuf:"varint,12,opt,name=fw_splash_screen,json=fwSplashScreen,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"fw_splash_screen,omitempty"` // The CSE sync is late at payload with CONFIG_SOC_INTEL_CSE_LITE_SYNC_BY_PAYLOAD // feature enabled. LateCseSync HardwareFeatures_Present `protobuf:"varint,13,opt,name=late_cse_sync,json=lateCseSync,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"late_cse_sync,omitempty"` // The AP firmware has the CONFIG_HAS_RECOVERY_MRC_CACHE feature enabled. HasRecoveryMrcCache HardwareFeatures_Present `protobuf:"varint,14,opt,name=has_recovery_mrc_cache,json=hasRecoveryMrcCache,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"has_recovery_mrc_cache,omitempty"` // The AP firmware has the CONFIG_CHROMEOS_ENABLE_ESOL feature enabled. MainboardHasEarlySignOfLife HardwareFeatures_Present `protobuf:"varint,15,opt,name=mainboard_has_early_sign_of_life,json=mainboardHasEarlySignOfLife,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"mainboard_has_early_sign_of_life,omitempty"` } func (x *HardwareFeatures_FirmwareConfiguration) Reset() { *x = HardwareFeatures_FirmwareConfiguration{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_FirmwareConfiguration) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_FirmwareConfiguration) ProtoMessage() {} func (x *HardwareFeatures_FirmwareConfiguration) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_FirmwareConfiguration.ProtoReflect.Descriptor instead. func (*HardwareFeatures_FirmwareConfiguration) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 5} } func (x *HardwareFeatures_FirmwareConfiguration) GetValue() uint32 { if x != nil { return x.Value } return 0 } func (x *HardwareFeatures_FirmwareConfiguration) GetMask() uint32 { if x != nil { return x.Mask } return 0 } func (x *HardwareFeatures_FirmwareConfiguration) GetCorebootCustomizations() []string { if x != nil { return x.CorebootCustomizations } return nil } func (x *HardwareFeatures_FirmwareConfiguration) GetVbootCbfsIntegration() HardwareFeatures_Present { if x != nil { return x.VbootCbfsIntegration } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_FirmwareConfiguration) GetFwRoVersion() *HardwareFeatures_FirmwareConfiguration_SemVer { if x != nil { return x.FwRoVersion } return nil } func (x *HardwareFeatures_FirmwareConfiguration) GetIntelIsh() HardwareFeatures_Present { if x != nil { return x.IntelIsh } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_FirmwareConfiguration) GetFwRwVersion() *HardwareFeatures_FirmwareConfiguration_SemVer { if x != nil { return x.FwRwVersion } return nil } func (x *HardwareFeatures_FirmwareConfiguration) GetBmpLogo() HardwareFeatures_Present { if x != nil { return x.BmpLogo } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_FirmwareConfiguration) GetFwSplashScreen() HardwareFeatures_Present { if x != nil { return x.FwSplashScreen } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_FirmwareConfiguration) GetLateCseSync() HardwareFeatures_Present { if x != nil { return x.LateCseSync } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_FirmwareConfiguration) GetHasRecoveryMrcCache() HardwareFeatures_Present { if x != nil { return x.HasRecoveryMrcCache } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_FirmwareConfiguration) GetMainboardHasEarlySignOfLife() HardwareFeatures_Present { if x != nil { return x.MainboardHasEarlySignOfLife } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_Audio struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Which audio codec is in use (deprecated) AudioCodec HardwareFeatures_Audio_AudioCodec `protobuf:"varint,1,opt,name=audio_codec,json=audioCodec,proto3,enum=chromiumos.config.api.HardwareFeatures_Audio_AudioCodec" json:"audio_codec,omitempty"` // Which amplifier is in use for the speakers SpeakerAmp HardwareFeatures_Audio_Amplifier `protobuf:"varint,2,opt,name=speaker_amp,json=speakerAmp,proto3,enum=chromiumos.config.api.HardwareFeatures_Audio_Amplifier" json:"speaker_amp,omitempty"` // Which audio codec is in use for the headphones HeadphoneCodec HardwareFeatures_Audio_AudioCodec `protobuf:"varint,3,opt,name=headphone_codec,json=headphoneCodec,proto3,enum=chromiumos.config.api.HardwareFeatures_Audio_AudioCodec" json:"headphone_codec,omitempty"` // The number of microphones present in the lid LidMicrophone *HardwareFeatures_Count `protobuf:"bytes,4,opt,name=lid_microphone,json=lidMicrophone,proto3" json:"lid_microphone,omitempty"` // The number of microphones present in the base BaseMicrophone *HardwareFeatures_Count `protobuf:"bytes,5,opt,name=base_microphone,json=baseMicrophone,proto3" json:"base_microphone,omitempty"` // Which amplifier is in use for the speakers if one is present SpeakerAmplifier *Component_Amplifier `protobuf:"bytes,6,opt,name=speaker_amplifier,json=speakerAmplifier,proto3" json:"speaker_amplifier,omitempty"` // The card configs for this topology. CardConfigs []*HardwareFeatures_Audio_CardConfig `protobuf:"bytes,7,rep,name=card_configs,json=cardConfigs,proto3" json:"card_configs,omitempty"` // The source config file layout used for card-agnostic cras config. CrasConfig HardwareFeatures_Audio_AudioConfigStructure `protobuf:"varint,8,opt,name=cras_config,json=crasConfig,proto3,enum=chromiumos.config.api.HardwareFeatures_Audio_AudioConfigStructure" json:"cras_config,omitempty"` // If audio DSP firmware is SOF-backed. SofAudioDsp HardwareFeatures_Present `protobuf:"varint,9,opt,name=sof_audio_dsp,json=sofAudioDsp,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"sof_audio_dsp,omitempty"` } func (x *HardwareFeatures_Audio) Reset() { *x = HardwareFeatures_Audio{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Audio) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Audio) ProtoMessage() {} func (x *HardwareFeatures_Audio) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_Audio.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Audio) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 6} } func (x *HardwareFeatures_Audio) GetAudioCodec() HardwareFeatures_Audio_AudioCodec { if x != nil { return x.AudioCodec } return HardwareFeatures_Audio_AUDIO_CODEC_UNKNOWN } func (x *HardwareFeatures_Audio) GetSpeakerAmp() HardwareFeatures_Audio_Amplifier { if x != nil { return x.SpeakerAmp } return HardwareFeatures_Audio_AMPLIFIER_UNKNOWN } func (x *HardwareFeatures_Audio) GetHeadphoneCodec() HardwareFeatures_Audio_AudioCodec { if x != nil { return x.HeadphoneCodec } return HardwareFeatures_Audio_AUDIO_CODEC_UNKNOWN } func (x *HardwareFeatures_Audio) GetLidMicrophone() *HardwareFeatures_Count { if x != nil { return x.LidMicrophone } return nil } func (x *HardwareFeatures_Audio) GetBaseMicrophone() *HardwareFeatures_Count { if x != nil { return x.BaseMicrophone } return nil } func (x *HardwareFeatures_Audio) GetSpeakerAmplifier() *Component_Amplifier { if x != nil { return x.SpeakerAmplifier } return nil } func (x *HardwareFeatures_Audio) GetCardConfigs() []*HardwareFeatures_Audio_CardConfig { if x != nil { return x.CardConfigs } return nil } func (x *HardwareFeatures_Audio) GetCrasConfig() HardwareFeatures_Audio_AudioConfigStructure { if x != nil { return x.CrasConfig } return HardwareFeatures_Audio_AUDIO_CONFIG_STRUCTURE_NONE } func (x *HardwareFeatures_Audio) GetSofAudioDsp() HardwareFeatures_Present { if x != nil { return x.SofAudioDsp } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_Camera struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // List of camera devices on the model. Devices []*HardwareFeatures_Camera_Device `protobuf:"bytes,4,rep,name=devices,proto3" json:"devices,omitempty"` // The list of camera features that are enabled on this device. Features []string `protobuf:"bytes,5,rep,name=features,proto3" json:"features,omitempty"` // Whether expected camera devices were enumerated. Enumerated bool `protobuf:"varint,6,opt,name=enumerated,proto3" json:"enumerated,omitempty"` // List of strings each identifies an enumerated USB camera module. EnumeratedUsbIds []string `protobuf:"bytes,7,rep,name=enumerated_usb_ids,json=enumeratedUsbIds,proto3" json:"enumerated_usb_ids,omitempty"` } func (x *HardwareFeatures_Camera) Reset() { *x = HardwareFeatures_Camera{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Camera) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Camera) ProtoMessage() {} func (x *HardwareFeatures_Camera) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_Camera.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Camera) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 7} } func (x *HardwareFeatures_Camera) GetDevices() []*HardwareFeatures_Camera_Device { if x != nil { return x.Devices } return nil } func (x *HardwareFeatures_Camera) GetFeatures() []string { if x != nil { return x.Features } return nil } func (x *HardwareFeatures_Camera) GetEnumerated() bool { if x != nil { return x.Enumerated } return false } func (x *HardwareFeatures_Camera) GetEnumeratedUsbIds() []string { if x != nil { return x.EnumeratedUsbIds } return nil } type HardwareFeatures_Accelerometer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If lid accelerometer is present on system LidAccelerometer HardwareFeatures_Present `protobuf:"varint,1,opt,name=lid_accelerometer,json=lidAccelerometer,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"lid_accelerometer,omitempty"` // If base accelerometer is present on system BaseAccelerometer HardwareFeatures_Present `protobuf:"varint,2,opt,name=base_accelerometer,json=baseAccelerometer,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"base_accelerometer,omitempty"` } func (x *HardwareFeatures_Accelerometer) Reset() { *x = HardwareFeatures_Accelerometer{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Accelerometer) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Accelerometer) ProtoMessage() {} func (x *HardwareFeatures_Accelerometer) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_Accelerometer.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Accelerometer) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 8} } func (x *HardwareFeatures_Accelerometer) GetLidAccelerometer() HardwareFeatures_Present { if x != nil { return x.LidAccelerometer } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Accelerometer) GetBaseAccelerometer() HardwareFeatures_Present { if x != nil { return x.BaseAccelerometer } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_Gyroscope struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If lid gyroscope is present on system LidGyroscope HardwareFeatures_Present `protobuf:"varint,1,opt,name=lid_gyroscope,json=lidGyroscope,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"lid_gyroscope,omitempty"` // If base gyroscope is present on system BaseGyroscope HardwareFeatures_Present `protobuf:"varint,2,opt,name=base_gyroscope,json=baseGyroscope,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"base_gyroscope,omitempty"` } func (x *HardwareFeatures_Gyroscope) Reset() { *x = HardwareFeatures_Gyroscope{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Gyroscope) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Gyroscope) ProtoMessage() {} func (x *HardwareFeatures_Gyroscope) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_Gyroscope.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Gyroscope) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 9} } func (x *HardwareFeatures_Gyroscope) GetLidGyroscope() HardwareFeatures_Present { if x != nil { return x.LidGyroscope } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Gyroscope) GetBaseGyroscope() HardwareFeatures_Present { if x != nil { return x.BaseGyroscope } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_Magnetometer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If lid magnometer is present on system LidMagnetometer HardwareFeatures_Present `protobuf:"varint,1,opt,name=lid_magnetometer,json=lidMagnetometer,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"lid_magnetometer,omitempty"` // If base magnometer is present on system BaseMagnetometer HardwareFeatures_Present `protobuf:"varint,2,opt,name=base_magnetometer,json=baseMagnetometer,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"base_magnetometer,omitempty"` } func (x *HardwareFeatures_Magnetometer) Reset() { *x = HardwareFeatures_Magnetometer{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Magnetometer) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Magnetometer) ProtoMessage() {} func (x *HardwareFeatures_Magnetometer) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_Magnetometer.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Magnetometer) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 10} } func (x *HardwareFeatures_Magnetometer) GetLidMagnetometer() HardwareFeatures_Present { if x != nil { return x.LidMagnetometer } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Magnetometer) GetBaseMagnetometer() HardwareFeatures_Present { if x != nil { return x.BaseMagnetometer } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_LightSensor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If lid light sensor is present on system LidLightsensor HardwareFeatures_Present `protobuf:"varint,1,opt,name=lid_lightsensor,json=lidLightsensor,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"lid_lightsensor,omitempty"` // If base light sensor is present on system BaseLightsensor HardwareFeatures_Present `protobuf:"varint,2,opt,name=base_lightsensor,json=baseLightsensor,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"base_lightsensor,omitempty"` // If camera light sensor is present on system CameraLightsensor HardwareFeatures_Present `protobuf:"varint,3,opt,name=camera_lightsensor,json=cameraLightsensor,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"camera_lightsensor,omitempty"` } func (x *HardwareFeatures_LightSensor) Reset() { *x = HardwareFeatures_LightSensor{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_LightSensor) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_LightSensor) ProtoMessage() {} func (x *HardwareFeatures_LightSensor) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_LightSensor.ProtoReflect.Descriptor instead. func (*HardwareFeatures_LightSensor) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 11} } func (x *HardwareFeatures_LightSensor) GetLidLightsensor() HardwareFeatures_Present { if x != nil { return x.LidLightsensor } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_LightSensor) GetBaseLightsensor() HardwareFeatures_Present { if x != nil { return x.BaseLightsensor } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_LightSensor) GetCameraLightsensor() HardwareFeatures_Present { if x != nil { return x.CameraLightsensor } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_Screen struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ConnectorType HardwareFeatures_Screen_ConnectorType `protobuf:"varint,4,opt,name=connector_type,json=connectorType,proto3,enum=chromiumos.config.api.HardwareFeatures_Screen_ConnectorType" json:"connector_type,omitempty"` PanelProperties *Component_DisplayPanel_Properties `protobuf:"bytes,3,opt,name=panel_properties,json=panelProperties,proto3" json:"panel_properties,omitempty"` // If touch support is present on system TouchSupport HardwareFeatures_Present `protobuf:"varint,2,opt,name=touch_support,json=touchSupport,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"touch_support,omitempty"` } func (x *HardwareFeatures_Screen) Reset() { *x = HardwareFeatures_Screen{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Screen) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Screen) ProtoMessage() {} func (x *HardwareFeatures_Screen) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_Screen.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Screen) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 12} } func (x *HardwareFeatures_Screen) GetConnectorType() HardwareFeatures_Screen_ConnectorType { if x != nil { return x.ConnectorType } return HardwareFeatures_Screen_CONNECTOR_TYPE_UNSPECIFIED } func (x *HardwareFeatures_Screen) GetPanelProperties() *Component_DisplayPanel_Properties { if x != nil { return x.PanelProperties } return nil } func (x *HardwareFeatures_Screen) GetTouchSupport() HardwareFeatures_Present { if x != nil { return x.TouchSupport } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_FormFactor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Form factory of system FormFactor HardwareFeatures_FormFactor_FormFactorType `protobuf:"varint,1,opt,name=form_factor,json=formFactor,proto3,enum=chromiumos.config.api.HardwareFeatures_FormFactor_FormFactorType" json:"form_factor,omitempty"` // Input to enter recovery RecoveryInput HardwareFeatures_FormFactor_RecoveryInputType `protobuf:"varint,2,opt,name=recovery_input,json=recoveryInput,proto3,enum=chromiumos.config.api.HardwareFeatures_FormFactor_RecoveryInputType" json:"recovery_input,omitempty"` // Whether to enable detachable UI in firmware build. DetachableUi *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=detachable_ui,json=detachableUi,proto3" json:"detachable_ui,omitempty"` } func (x *HardwareFeatures_FormFactor) Reset() { *x = HardwareFeatures_FormFactor{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_FormFactor) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_FormFactor) ProtoMessage() {} func (x *HardwareFeatures_FormFactor) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_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 HardwareFeatures_FormFactor.ProtoReflect.Descriptor instead. func (*HardwareFeatures_FormFactor) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 13} } func (x *HardwareFeatures_FormFactor) GetFormFactor() HardwareFeatures_FormFactor_FormFactorType { if x != nil { return x.FormFactor } return HardwareFeatures_FormFactor_FORM_FACTOR_UNKNOWN } func (x *HardwareFeatures_FormFactor) GetRecoveryInput() HardwareFeatures_FormFactor_RecoveryInputType { if x != nil { return x.RecoveryInput } return HardwareFeatures_FormFactor_RECOVERY_INPUT_UNKNOWN } func (x *HardwareFeatures_FormFactor) GetDetachableUi() *wrapperspb.BoolValue { if x != nil { return x.DetachableUi } return nil } type HardwareFeatures_Stylus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Type of stylus Stylus HardwareFeatures_Stylus_StylusType `protobuf:"varint,1,opt,name=stylus,proto3,enum=chromiumos.config.api.HardwareFeatures_Stylus_StylusType" json:"stylus,omitempty"` } func (x *HardwareFeatures_Stylus) Reset() { *x = HardwareFeatures_Stylus{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Stylus) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Stylus) ProtoMessage() {} func (x *HardwareFeatures_Stylus) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Stylus.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Stylus) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 14} } func (x *HardwareFeatures_Stylus) GetStylus() HardwareFeatures_Stylus_StylusType { if x != nil { return x.Stylus } return HardwareFeatures_Stylus_STYLUS_UNKNOWN } type HardwareFeatures_Keyboard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Type of keyboard present on system KeyboardType HardwareFeatures_Keyboard_KeyboardType `protobuf:"varint,1,opt,name=keyboard_type,json=keyboardType,proto3,enum=chromiumos.config.api.HardwareFeatures_Keyboard_KeyboardType" json:"keyboard_type,omitempty"` // If keyboard backlight is present on system Backlight HardwareFeatures_Present `protobuf:"varint,2,opt,name=backlight,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"backlight,omitempty"` // If power button is present on keyboard PowerButton HardwareFeatures_Present `protobuf:"varint,3,opt,name=power_button,json=powerButton,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"power_button,omitempty"` // If numeric pad is present on keyboard NumericPad HardwareFeatures_Present `protobuf:"varint,4,opt,name=numeric_pad,json=numericPad,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"numeric_pad,omitempty"` // Type of the MCU used in the system McuType HardwareFeatures_Keyboard_KeyboardMcuType `protobuf:"varint,6,opt,name=mcu_type,json=mcuType,proto3,enum=chromiumos.config.api.HardwareFeatures_Keyboard_KeyboardMcuType" json:"mcu_type,omitempty"` // The keyboard backlight level step values. Values must be in // increasing order. If set, the first value must be 0. This corresponds to // the keyboard_backlight_user_steps powerd pref. BacklightUserSteps []float64 `protobuf:"fixed64,5,rep,packed,name=backlight_user_steps,json=backlightUserSteps,proto3" json:"backlight_user_steps,omitempty"` // The configuration of the keyboard backlight percentage based on the // ambient light sensor value. Steps should be in increasing order. AlsSteps []*HardwareFeatures_KbAlsStep `protobuf:"bytes,7,rep,name=als_steps,json=alsSteps,proto3" json:"als_steps,omitempty"` // The default keyboard backlight percentage in the // absence of an ambient light sensor controlling the keyboard backlight. NoAlsBrightness float64 `protobuf:"fixed64,8,opt,name=no_als_brightness,json=noAlsBrightness,proto3" json:"no_als_brightness,omitempty"` // The number of keys on the left side of bottom row. BottomLeftLayout HardwareFeatures_Keyboard_KeyboardBottomLeftLayout `protobuf:"varint,9,opt,name=bottom_left_layout,json=bottomLeftLayout,proto3,enum=chromiumos.config.api.HardwareFeatures_Keyboard_KeyboardBottomLeftLayout" json:"bottom_left_layout,omitempty"` // The number of keys on the right side of bottom row. BottomRightLayout HardwareFeatures_Keyboard_KeyboardBottomRightLayout `protobuf:"varint,10,opt,name=bottom_right_layout,json=bottomRightLayout,proto3,enum=chromiumos.config.api.HardwareFeatures_Keyboard_KeyboardBottomRightLayout" json:"bottom_right_layout,omitempty"` // The number of columns of numeric pad. NumericPadLayout HardwareFeatures_Keyboard_NumericPadLayout `protobuf:"varint,11,opt,name=numeric_pad_layout,json=numericPadLayout,proto3,enum=chromiumos.config.api.HardwareFeatures_Keyboard_NumericPadLayout" json:"numeric_pad_layout,omitempty"` } func (x *HardwareFeatures_Keyboard) Reset() { *x = HardwareFeatures_Keyboard{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Keyboard) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Keyboard) ProtoMessage() {} func (x *HardwareFeatures_Keyboard) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Keyboard.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Keyboard) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 15} } func (x *HardwareFeatures_Keyboard) GetKeyboardType() HardwareFeatures_Keyboard_KeyboardType { if x != nil { return x.KeyboardType } return HardwareFeatures_Keyboard_KEYBOARD_TYPE_UNKNOWN } func (x *HardwareFeatures_Keyboard) GetBacklight() HardwareFeatures_Present { if x != nil { return x.Backlight } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Keyboard) GetPowerButton() HardwareFeatures_Present { if x != nil { return x.PowerButton } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Keyboard) GetNumericPad() HardwareFeatures_Present { if x != nil { return x.NumericPad } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Keyboard) GetMcuType() HardwareFeatures_Keyboard_KeyboardMcuType { if x != nil { return x.McuType } return HardwareFeatures_Keyboard_KEYBOARD_MCU_NOT_PRESENT } func (x *HardwareFeatures_Keyboard) GetBacklightUserSteps() []float64 { if x != nil { return x.BacklightUserSteps } return nil } func (x *HardwareFeatures_Keyboard) GetAlsSteps() []*HardwareFeatures_KbAlsStep { if x != nil { return x.AlsSteps } return nil } func (x *HardwareFeatures_Keyboard) GetNoAlsBrightness() float64 { if x != nil { return x.NoAlsBrightness } return 0 } func (x *HardwareFeatures_Keyboard) GetBottomLeftLayout() HardwareFeatures_Keyboard_KeyboardBottomLeftLayout { if x != nil { return x.BottomLeftLayout } return HardwareFeatures_Keyboard_KEYBOARD_BOTTOM_LEFT_LAYOUT_UNKNOWN } func (x *HardwareFeatures_Keyboard) GetBottomRightLayout() HardwareFeatures_Keyboard_KeyboardBottomRightLayout { if x != nil { return x.BottomRightLayout } return HardwareFeatures_Keyboard_KEYBOARD_BOTTOM_RIGHT_LAYOUT_UNKNOWN } func (x *HardwareFeatures_Keyboard) GetNumericPadLayout() HardwareFeatures_Keyboard_NumericPadLayout { if x != nil { return x.NumericPadLayout } return HardwareFeatures_Keyboard_NUMERIC_PAD_LAYOUT_UNKNOWN } type HardwareFeatures_Memory struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Profile *Component_Memory_Profile `protobuf:"bytes,1,opt,name=profile,proto3" json:"profile,omitempty"` } func (x *HardwareFeatures_Memory) Reset() { *x = HardwareFeatures_Memory{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Memory) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Memory) ProtoMessage() {} func (x *HardwareFeatures_Memory) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Memory.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Memory) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 16} } func (x *HardwareFeatures_Memory) GetProfile() *Component_Memory_Profile { if x != nil { return x.Profile } return nil } type HardwareFeatures_Fingerprint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Location of fingerprint sensor Location HardwareFeatures_Fingerprint_Location `protobuf:"varint,1,opt,name=location,proto3,enum=chromiumos.config.api.HardwareFeatures_Fingerprint_Location" json:"location,omitempty"` // Fingerprint board used. Board string `protobuf:"bytes,2,opt,name=board,proto3" json:"board,omitempty"` // Read-only (RO) firmware version to use (empty means use default). RoVersion string `protobuf:"bytes,3,opt,name=ro_version,json=roVersion,proto3" json:"ro_version,omitempty"` // Healthd fingerprint diagnostic routine parameters. FingerprintDiag *HardwareFeatures_Fingerprint_FingerprintDiag `protobuf:"bytes,4,opt,name=fingerprint_diag,json=fingerprintDiag,proto3" json:"fingerprint_diag,omitempty"` // If fingerprint sensor is present on system Present bool `protobuf:"varint,5,opt,name=present,proto3" json:"present,omitempty"` } func (x *HardwareFeatures_Fingerprint) Reset() { *x = HardwareFeatures_Fingerprint{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Fingerprint) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Fingerprint) ProtoMessage() {} func (x *HardwareFeatures_Fingerprint) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Fingerprint.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Fingerprint) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 17} } func (x *HardwareFeatures_Fingerprint) GetLocation() HardwareFeatures_Fingerprint_Location { if x != nil { return x.Location } return HardwareFeatures_Fingerprint_LOCATION_UNKNOWN } func (x *HardwareFeatures_Fingerprint) GetBoard() string { if x != nil { return x.Board } return "" } func (x *HardwareFeatures_Fingerprint) GetRoVersion() string { if x != nil { return x.RoVersion } return "" } func (x *HardwareFeatures_Fingerprint) GetFingerprintDiag() *HardwareFeatures_Fingerprint_FingerprintDiag { if x != nil { return x.FingerprintDiag } return nil } func (x *HardwareFeatures_Fingerprint) GetPresent() bool { if x != nil { return x.Present } return false } type HardwareFeatures_Storage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StorageType Component_Storage_StorageType `protobuf:"varint,1,opt,name=storage_type,json=storageType,proto3,enum=chromiumos.config.api.Component_Storage_StorageType" json:"storage_type,omitempty"` SizeGb uint32 `protobuf:"varint,2,opt,name=size_gb,json=sizeGb,proto3" json:"size_gb,omitempty"` } func (x *HardwareFeatures_Storage) Reset() { *x = HardwareFeatures_Storage{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Storage) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Storage) ProtoMessage() {} func (x *HardwareFeatures_Storage) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Storage.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Storage) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 18} } func (x *HardwareFeatures_Storage) GetStorageType() Component_Storage_StorageType { if x != nil { return x.StorageType } return Component_Storage_STORAGE_TYPE_UNKNOWN } func (x *HardwareFeatures_Storage) GetSizeGb() uint32 { if x != nil { return x.SizeGb } return 0 } type HardwareFeatures_Bluetooth struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Defines the specific bt component used in the design config Component *Component_Bluetooth `protobuf:"bytes,1,opt,name=component,proto3" json:"component,omitempty"` Present HardwareFeatures_Present `protobuf:"varint,2,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_Bluetooth) Reset() { *x = HardwareFeatures_Bluetooth{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Bluetooth) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Bluetooth) ProtoMessage() {} func (x *HardwareFeatures_Bluetooth) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Bluetooth.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Bluetooth) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 19} } func (x *HardwareFeatures_Bluetooth) GetComponent() *Component_Bluetooth { if x != nil { return x.Component } return nil } func (x *HardwareFeatures_Bluetooth) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_BarrelJack struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If BarrelJack support is present on system. Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_BarrelJack) Reset() { *x = HardwareFeatures_BarrelJack{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_BarrelJack) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_BarrelJack) ProtoMessage() {} func (x *HardwareFeatures_BarrelJack) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_BarrelJack.ProtoReflect.Descriptor instead. func (*HardwareFeatures_BarrelJack) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 20} } func (x *HardwareFeatures_BarrelJack) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } // Wifi properties // NEXT TAG: 3 type HardwareFeatures_Wifi struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // WLAN protocols supported by the Wifi chipset(s). SupportedWlanProtocols []Component_Wifi_WLANProtocol `protobuf:"varint,1,rep,packed,name=supported_wlan_protocols,json=supportedWlanProtocols,proto3,enum=chromiumos.config.api.Component_Wifi_WLANProtocol" json:"supported_wlan_protocols,omitempty"` WifiChips []HardwareFeatures_Wifi_WifiChip `protobuf:"varint,2,rep,packed,name=wifi_chips,json=wifiChips,proto3,enum=chromiumos.config.api.HardwareFeatures_Wifi_WifiChip" json:"wifi_chips,omitempty"` WifiConfig *WifiConfig `protobuf:"bytes,3,opt,name=wifi_config,json=wifiConfig,proto3" json:"wifi_config,omitempty"` WifiVpdSar bool `protobuf:"varint,4,opt,name=wifi_vpd_sar,json=wifiVpdSar,proto3" json:"wifi_vpd_sar,omitempty"` } func (x *HardwareFeatures_Wifi) Reset() { *x = HardwareFeatures_Wifi{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Wifi) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Wifi) ProtoMessage() {} func (x *HardwareFeatures_Wifi) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Wifi.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Wifi) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 21} } func (x *HardwareFeatures_Wifi) GetSupportedWlanProtocols() []Component_Wifi_WLANProtocol { if x != nil { return x.SupportedWlanProtocols } return nil } func (x *HardwareFeatures_Wifi) GetWifiChips() []HardwareFeatures_Wifi_WifiChip { if x != nil { return x.WifiChips } return nil } func (x *HardwareFeatures_Wifi) GetWifiConfig() *WifiConfig { if x != nil { return x.WifiConfig } return nil } func (x *HardwareFeatures_Wifi) GetWifiVpdSar() bool { if x != nil { return x.WifiVpdSar } return false } type HardwareFeatures_Button struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Region HardwareFeatures_Button_Region `protobuf:"varint,1,opt,name=region,proto3,enum=chromiumos.config.api.HardwareFeatures_Button_Region" json:"region,omitempty"` Edge HardwareFeatures_Button_Edge `protobuf:"varint,2,opt,name=edge,proto3,enum=chromiumos.config.api.HardwareFeatures_Button_Edge" json:"edge,omitempty"` // The percentage for button center position to the display's width/height // in primary landscape screen orientation. If Edge is LEFT or RIGHT, // specifies the button's center position as a fraction of the Region's // height relative to the top of the Region. For TOP and BOTTOM, specifies // the position as a fraction of the Region's width relative to the left // side of the Region. Position float32 `protobuf:"fixed32,3,opt,name=position,proto3" json:"position,omitempty"` } func (x *HardwareFeatures_Button) Reset() { *x = HardwareFeatures_Button{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Button) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Button) ProtoMessage() {} func (x *HardwareFeatures_Button) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Button.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Button) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 22} } func (x *HardwareFeatures_Button) GetRegion() HardwareFeatures_Button_Region { if x != nil { return x.Region } return HardwareFeatures_Button_REGION_UNKNOWN } func (x *HardwareFeatures_Button) GetEdge() HardwareFeatures_Button_Edge { if x != nil { return x.Edge } return HardwareFeatures_Button_EDGE_UNKNOWN } func (x *HardwareFeatures_Button) GetPosition() float32 { if x != nil { return x.Position } return 0 } // EmbeddedController properties // Next Tag: 12 type HardwareFeatures_EmbeddedController struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Whether any kind of EC is present on the system. Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` EcType HardwareFeatures_EmbeddedController_EmbeddedControllerType `protobuf:"varint,2,opt,name=ec_type,json=ecType,proto3,enum=chromiumos.config.api.HardwareFeatures_EmbeddedController_EmbeddedControllerType" json:"ec_type,omitempty"` // The physical component of the EC. Part *Component_EmbeddedController `protobuf:"bytes,3,opt,name=part,proto3" json:"part,omitempty"` // Whether the EC supports EC_FEATURE_TYPEC_CMD. FeatureTypecCmd HardwareFeatures_Present `protobuf:"varint,4,opt,name=feature_typec_cmd,json=featureTypecCmd,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"feature_typec_cmd,omitempty"` // Whether the EC supports CBI (CrOS Board Info stored on the EEPROM). Cbi HardwareFeatures_Present `protobuf:"varint,5,opt,name=cbi,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"cbi,omitempty"` // Whether the EC detects the detachable base at runtime DetachableBase HardwareFeatures_Present `protobuf:"varint,6,opt,name=detachable_base,json=detachableBase,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"detachable_base,omitempty"` // Whether the EC supports EC_CMD_CHARGE_CONTROL v2. FeatureChargeControlV2 HardwareFeatures_Present `protobuf:"varint,7,opt,name=feature_charge_control_v2,json=featureChargeControlV2,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"feature_charge_control_v2,omitempty"` // Whether the EC will panic on Asserts FeatureAssertsPanic HardwareFeatures_Present `protobuf:"varint,8,opt,name=feature_asserts_panic,json=featureAssertsPanic,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"feature_asserts_panic,omitempty"` // Whether the EC supports system safe mode recovery. FeatureSystemSafeMode HardwareFeatures_Present `protobuf:"varint,9,opt,name=feature_system_safe_mode,json=featureSystemSafeMode,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"feature_system_safe_mode,omitempty"` // Whether the EC supports memory dump host commands. FeatureMemoryDumpCommands HardwareFeatures_Present `protobuf:"varint,10,opt,name=feature_memory_dump_commands,json=featureMemoryDumpCommands,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"feature_memory_dump_commands,omitempty"` // The extracted EC build config options // E.g. CONFIG_DEBUG_ASSERT, CONFIG_PLATFORM_EC_BATTERY BuildConfig map[string]HardwareFeatures_Present `protobuf:"bytes,11,rep,name=build_config,json=buildConfig,proto3" json:"build_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=chromiumos.config.api.HardwareFeatures_Present"` // Maximal ODR (Online data rate) of the MEMS sensors // (accelerometer/gyroscope). Usually EC can handle ODR up to ~200Hz. On // some EC, we need to reduce to 100Hz otherwise the sensor task is not // scheduled fast enough. It can lead to failing the CTS tests or worse EC // crashes (watchdog timer) if the idle stack is never scheduled. Normally, // the maximal ODR is set in the firmware, we find the right maximal ODR // during bring up. However, if we have to reduce the ODR between firmware // qual we can do it here: 0 (default) means the EC default is used by // iioservice to set the maximal sensor frequency. If |max_sensor_odr_mhz| // is greater than 0, iioservice will never set a maximal frequency above // it. MaxSensorOdrMhz *wrapperspb.UInt32Value `protobuf:"bytes,12,opt,name=max_sensor_odr_mhz,json=maxSensorOdrMhz,proto3" json:"max_sensor_odr_mhz,omitempty"` } func (x *HardwareFeatures_EmbeddedController) Reset() { *x = HardwareFeatures_EmbeddedController{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_EmbeddedController) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_EmbeddedController) ProtoMessage() {} func (x *HardwareFeatures_EmbeddedController) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_EmbeddedController.ProtoReflect.Descriptor instead. func (*HardwareFeatures_EmbeddedController) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 23} } func (x *HardwareFeatures_EmbeddedController) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_EmbeddedController) GetEcType() HardwareFeatures_EmbeddedController_EmbeddedControllerType { if x != nil { return x.EcType } return HardwareFeatures_EmbeddedController_EC_TYPE_UNKNOWN } func (x *HardwareFeatures_EmbeddedController) GetPart() *Component_EmbeddedController { if x != nil { return x.Part } return nil } func (x *HardwareFeatures_EmbeddedController) GetFeatureTypecCmd() HardwareFeatures_Present { if x != nil { return x.FeatureTypecCmd } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_EmbeddedController) GetCbi() HardwareFeatures_Present { if x != nil { return x.Cbi } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_EmbeddedController) GetDetachableBase() HardwareFeatures_Present { if x != nil { return x.DetachableBase } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_EmbeddedController) GetFeatureChargeControlV2() HardwareFeatures_Present { if x != nil { return x.FeatureChargeControlV2 } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_EmbeddedController) GetFeatureAssertsPanic() HardwareFeatures_Present { if x != nil { return x.FeatureAssertsPanic } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_EmbeddedController) GetFeatureSystemSafeMode() HardwareFeatures_Present { if x != nil { return x.FeatureSystemSafeMode } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_EmbeddedController) GetFeatureMemoryDumpCommands() HardwareFeatures_Present { if x != nil { return x.FeatureMemoryDumpCommands } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_EmbeddedController) GetBuildConfig() map[string]HardwareFeatures_Present { if x != nil { return x.BuildConfig } return nil } func (x *HardwareFeatures_EmbeddedController) GetMaxSensorOdrMhz() *wrapperspb.UInt32Value { if x != nil { return x.MaxSensorOdrMhz } return nil } type HardwareFeatures_TrustedPlatformModule struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TpmType HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType `protobuf:"varint,1,opt,name=tpm_type,json=tpmType,proto3,enum=chromiumos.config.api.HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType" json:"tpm_type,omitempty"` // Whether GSC image is signed with production RW keyid. ProductionRwKeyId HardwareFeatures_Present `protobuf:"varint,2,opt,name=production_rw_key_id,json=productionRwKeyId,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"production_rw_key_id,omitempty"` RuntimeTpmVersion HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion `protobuf:"varint,3,opt,name=runtime_tpm_version,json=runtimeTpmVersion,proto3,enum=chromiumos.config.api.HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion" json:"runtime_tpm_version,omitempty"` GscFwName HardwareFeatures_TrustedPlatformModule_GscFirmwareName `protobuf:"varint,4,opt,name=gsc_fw_name,json=gscFwName,proto3,enum=chromiumos.config.api.HardwareFeatures_TrustedPlatformModule_GscFirmwareName" json:"gsc_fw_name,omitempty"` // Whether the TPM has NVRAM space used for enterprise rollback. EnterpriseRollbackSpace HardwareFeatures_Present `protobuf:"varint,5,opt,name=enterprise_rollback_space,json=enterpriseRollbackSpace,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"enterprise_rollback_space,omitempty"` // Whether GSC ADID is valid. This is true if there's a valid // attested_device_id in the RO_VPD that matches the sn bits stored in GSC. ValidAdid HardwareFeatures_Present `protobuf:"varint,6,opt,name=valid_adid,json=validAdid,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"valid_adid,omitempty"` } func (x *HardwareFeatures_TrustedPlatformModule) Reset() { *x = HardwareFeatures_TrustedPlatformModule{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_TrustedPlatformModule) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_TrustedPlatformModule) ProtoMessage() {} func (x *HardwareFeatures_TrustedPlatformModule) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_TrustedPlatformModule.ProtoReflect.Descriptor instead. func (*HardwareFeatures_TrustedPlatformModule) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 24} } func (x *HardwareFeatures_TrustedPlatformModule) GetTpmType() HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType { if x != nil { return x.TpmType } return HardwareFeatures_TrustedPlatformModule_TPM_TYPE_UNKNOWN } func (x *HardwareFeatures_TrustedPlatformModule) GetProductionRwKeyId() HardwareFeatures_Present { if x != nil { return x.ProductionRwKeyId } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_TrustedPlatformModule) GetRuntimeTpmVersion() HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion { if x != nil { return x.RuntimeTpmVersion } return HardwareFeatures_TrustedPlatformModule_TPM_VERSION_DISABLED } func (x *HardwareFeatures_TrustedPlatformModule) GetGscFwName() HardwareFeatures_TrustedPlatformModule_GscFirmwareName { if x != nil { return x.GscFwName } return HardwareFeatures_TrustedPlatformModule_GSC_NONE } func (x *HardwareFeatures_TrustedPlatformModule) GetEnterpriseRollbackSpace() HardwareFeatures_Present { if x != nil { return x.EnterpriseRollbackSpace } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_TrustedPlatformModule) GetValidAdid() HardwareFeatures_Present { if x != nil { return x.ValidAdid } return HardwareFeatures_PRESENT_UNKNOWN } // Whether the system supports 'Hotwording' (ie wake-on-voice: "Hey Google") type HardwareFeatures_Hotwording struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_Hotwording) Reset() { *x = HardwareFeatures_Hotwording{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Hotwording) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Hotwording) ProtoMessage() {} func (x *HardwareFeatures_Hotwording) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Hotwording.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Hotwording) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 25} } func (x *HardwareFeatures_Hotwording) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } // Whether the system has an internal display, external display only or both type HardwareFeatures_Display struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type HardwareFeatures_Display_Type `protobuf:"varint,1,opt,name=type,proto3,enum=chromiumos.config.api.HardwareFeatures_Display_Type" json:"type,omitempty"` } func (x *HardwareFeatures_Display) Reset() { *x = HardwareFeatures_Display{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Display) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Display) ProtoMessage() {} func (x *HardwareFeatures_Display) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Display.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Display) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 26} } func (x *HardwareFeatures_Display) GetType() HardwareFeatures_Display_Type { if x != nil { return x.Type } return HardwareFeatures_Display_TYPE_UNKNOWN } // Whether the system has a touchpad type HardwareFeatures_Touchpad struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` // Type of touchpad present on system TouchpadType HardwareFeatures_Touchpad_TouchpadType `protobuf:"varint,2,opt,name=touchpad_type,json=touchpadType,proto3,enum=chromiumos.config.api.HardwareFeatures_Touchpad_TouchpadType" json:"touchpad_type,omitempty"` } func (x *HardwareFeatures_Touchpad) Reset() { *x = HardwareFeatures_Touchpad{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Touchpad) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Touchpad) ProtoMessage() {} func (x *HardwareFeatures_Touchpad) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Touchpad.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Touchpad) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 27} } func (x *HardwareFeatures_Touchpad) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Touchpad) GetTouchpadType() HardwareFeatures_Touchpad_TouchpadType { if x != nil { return x.TouchpadType } return HardwareFeatures_Touchpad_TYPE_UNKNOWN } // Whether the system has an audio input mute switch type HardwareFeatures_MicrophoneMuteSwitch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_MicrophoneMuteSwitch) Reset() { *x = HardwareFeatures_MicrophoneMuteSwitch{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_MicrophoneMuteSwitch) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_MicrophoneMuteSwitch) ProtoMessage() {} func (x *HardwareFeatures_MicrophoneMuteSwitch) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_MicrophoneMuteSwitch.ProtoReflect.Descriptor instead. func (*HardwareFeatures_MicrophoneMuteSwitch) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 28} } func (x *HardwareFeatures_MicrophoneMuteSwitch) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_Battery struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Battery present (e.g. not present on chromebox) Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` Lifetime *HardwareFeatures_Battery_Lifetime `protobuf:"bytes,2,opt,name=lifetime,proto3" json:"lifetime,omitempty"` Charging *HardwareFeatures_Battery_Charging `protobuf:"bytes,3,opt,name=charging,proto3" json:"charging,omitempty"` // Device supports the feature to boot with no battery. NoBatteryBootSupported bool `protobuf:"varint,4,opt,name=no_battery_boot_supported,json=noBatteryBootSupported,proto3" json:"no_battery_boot_supported,omitempty"` } func (x *HardwareFeatures_Battery) Reset() { *x = HardwareFeatures_Battery{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Battery) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Battery) ProtoMessage() {} func (x *HardwareFeatures_Battery) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Battery.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Battery) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 29} } func (x *HardwareFeatures_Battery) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Battery) GetLifetime() *HardwareFeatures_Battery_Lifetime { if x != nil { return x.Lifetime } return nil } func (x *HardwareFeatures_Battery) GetCharging() *HardwareFeatures_Battery_Charging { if x != nil { return x.Charging } return nil } func (x *HardwareFeatures_Battery) GetNoBatteryBootSupported() bool { if x != nil { return x.NoBatteryBootSupported } return false } type HardwareFeatures_PrivacyScreen struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If privacy screen is present on system Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_PrivacyScreen) Reset() { *x = HardwareFeatures_PrivacyScreen{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_PrivacyScreen) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_PrivacyScreen) ProtoMessage() {} func (x *HardwareFeatures_PrivacyScreen) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_PrivacyScreen.ProtoReflect.Descriptor instead. func (*HardwareFeatures_PrivacyScreen) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 30} } func (x *HardwareFeatures_PrivacyScreen) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_Soc struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Features []Component_Soc_Feature `protobuf:"varint,1,rep,packed,name=features,proto3,enum=chromiumos.config.api.Component_Soc_Feature" json:"features,omitempty"` Vulnerabilities []Component_Soc_Vulnerability `protobuf:"varint,2,rep,packed,name=vulnerabilities,proto3,enum=chromiumos.config.api.Component_Soc_Vulnerability" json:"vulnerabilities,omitempty"` ArcMediaCodecsSuffix string `protobuf:"bytes,3,opt,name=arc_media_codecs_suffix,json=arcMediaCodecsSuffix,proto3" json:"arc_media_codecs_suffix,omitempty"` HevcSupport HardwareFeatures_Present `protobuf:"varint,4,opt,name=hevc_support,json=hevcSupport,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"hevc_support,omitempty"` ResourceConfig *ResourceConfig `protobuf:"bytes,5,opt,name=resource_config,json=resourceConfig,proto3" json:"resource_config,omitempty"` } func (x *HardwareFeatures_Soc) Reset() { *x = HardwareFeatures_Soc{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Soc) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Soc) ProtoMessage() {} func (x *HardwareFeatures_Soc) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Soc.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Soc) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 31} } func (x *HardwareFeatures_Soc) GetFeatures() []Component_Soc_Feature { if x != nil { return x.Features } return nil } func (x *HardwareFeatures_Soc) GetVulnerabilities() []Component_Soc_Vulnerability { if x != nil { return x.Vulnerabilities } return nil } func (x *HardwareFeatures_Soc) GetArcMediaCodecsSuffix() string { if x != nil { return x.ArcMediaCodecsSuffix } return "" } func (x *HardwareFeatures_Soc) GetHevcSupport() HardwareFeatures_Present { if x != nil { return x.HevcSupport } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Soc) GetResourceConfig() *ResourceConfig { if x != nil { return x.ResourceConfig } return nil } type HardwareFeatures_DisplayPortConverter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Converters []*Component_DisplayPortConverter `protobuf:"bytes,1,rep,name=converters,proto3" json:"converters,omitempty"` } func (x *HardwareFeatures_DisplayPortConverter) Reset() { *x = HardwareFeatures_DisplayPortConverter{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_DisplayPortConverter) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_DisplayPortConverter) ProtoMessage() {} func (x *HardwareFeatures_DisplayPortConverter) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_DisplayPortConverter.ProtoReflect.Descriptor instead. func (*HardwareFeatures_DisplayPortConverter) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 32} } func (x *HardwareFeatures_DisplayPortConverter) GetConverters() []*Component_DisplayPortConverter { if x != nil { return x.Converters } return nil } type HardwareFeatures_Hps struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If hps is present on system Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_Hps) Reset() { *x = HardwareFeatures_Hps{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Hps) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Hps) ProtoMessage() {} func (x *HardwareFeatures_Hps) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Hps.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Hps) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 33} } func (x *HardwareFeatures_Hps) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_PoE struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If PoE peripheral support is present on system Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_PoE) Reset() { *x = HardwareFeatures_PoE{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_PoE) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_PoE) ProtoMessage() {} func (x *HardwareFeatures_PoE) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_PoE.ProtoReflect.Descriptor instead. func (*HardwareFeatures_PoE) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 34} } func (x *HardwareFeatures_PoE) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_PowerSupply struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If BarrelJack support is present on system. Barreljack HardwareFeatures_Present `protobuf:"varint,1,opt,name=barreljack,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"barreljack,omitempty"` // The input power below which a warning should be shown to use a // higher-power USB adapter. UsbMinAcWatts int32 `protobuf:"varint,2,opt,name=usb_min_ac_watts,json=usbMinAcWatts,proto3" json:"usb_min_ac_watts,omitempty"` } func (x *HardwareFeatures_PowerSupply) Reset() { *x = HardwareFeatures_PowerSupply{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_PowerSupply) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_PowerSupply) ProtoMessage() {} func (x *HardwareFeatures_PowerSupply) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_PowerSupply.ProtoReflect.Descriptor instead. func (*HardwareFeatures_PowerSupply) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 35} } func (x *HardwareFeatures_PowerSupply) GetBarreljack() HardwareFeatures_Present { if x != nil { return x.Barreljack } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_PowerSupply) GetUsbMinAcWatts() int32 { if x != nil { return x.UsbMinAcWatts } return 0 } type HardwareFeatures_Proximity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Configs []*ProximityConfig `protobuf:"bytes,1,rep,name=configs,proto3" json:"configs,omitempty"` } func (x *HardwareFeatures_Proximity) Reset() { *x = HardwareFeatures_Proximity{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Proximity) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Proximity) ProtoMessage() {} func (x *HardwareFeatures_Proximity) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Proximity.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Proximity) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 36} } func (x *HardwareFeatures_Proximity) GetConfigs() []*ProximityConfig { if x != nil { return x.Configs } return nil } type HardwareFeatures_Touch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Configures touch slop distance in Chrome. // This is the number of pixels a touch event can wander before being // recognized as a scroll rather than a tap. TouchSlopDistance *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=touch_slop_distance,json=touchSlopDistance,proto3" json:"touch_slop_distance,omitempty"` } func (x *HardwareFeatures_Touch) Reset() { *x = HardwareFeatures_Touch{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Touch) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Touch) ProtoMessage() {} func (x *HardwareFeatures_Touch) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use HardwareFeatures_Touch.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Touch) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 37} } func (x *HardwareFeatures_Touch) GetTouchSlopDistance() *wrapperspb.UInt32Value { if x != nil { return x.TouchSlopDistance } return nil } type HardwareFeatures_Thermal struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // A suffix to be added to the design name to determine the directory to // search for thermal config files, e.g. dptf.dv. ConfigPathSuffix string `protobuf:"bytes,1,opt,name=config_path_suffix,json=configPathSuffix,proto3" json:"config_path_suffix,omitempty"` } func (x *HardwareFeatures_Thermal) Reset() { *x = HardwareFeatures_Thermal{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Thermal) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Thermal) ProtoMessage() {} func (x *HardwareFeatures_Thermal) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[42] 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 HardwareFeatures_Thermal.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Thermal) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 38} } func (x *HardwareFeatures_Thermal) GetConfigPathSuffix() string { if x != nil { return x.ConfigPathSuffix } return "" } type HardwareFeatures_RuntimeProbeConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If the probe config file under /etc/runtime_probe/{model}/ present on // device. Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` // If the encrypted probe config file under /etc/runtime_probe/{model}/ // present on device. EncryptedConfigPresent HardwareFeatures_Present `protobuf:"varint,2,opt,name=encrypted_config_present,json=encryptedConfigPresent,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"encrypted_config_present,omitempty"` } func (x *HardwareFeatures_RuntimeProbeConfig) Reset() { *x = HardwareFeatures_RuntimeProbeConfig{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_RuntimeProbeConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_RuntimeProbeConfig) ProtoMessage() {} func (x *HardwareFeatures_RuntimeProbeConfig) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[43] 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 HardwareFeatures_RuntimeProbeConfig.ProtoReflect.Descriptor instead. func (*HardwareFeatures_RuntimeProbeConfig) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 39} } func (x *HardwareFeatures_RuntimeProbeConfig) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_RuntimeProbeConfig) GetEncryptedConfigPresent() HardwareFeatures_Present { if x != nil { return x.EncryptedConfigPresent } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_Dgpu struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` DgpuType HardwareFeatures_Dgpu_DgpuType `protobuf:"varint,2,opt,name=dgpu_type,json=dgpuType,proto3,enum=chromiumos.config.api.HardwareFeatures_Dgpu_DgpuType" json:"dgpu_type,omitempty"` } func (x *HardwareFeatures_Dgpu) Reset() { *x = HardwareFeatures_Dgpu{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Dgpu) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Dgpu) ProtoMessage() {} func (x *HardwareFeatures_Dgpu) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[44] 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 HardwareFeatures_Dgpu.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Dgpu) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 40} } func (x *HardwareFeatures_Dgpu) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Dgpu) GetDgpuType() HardwareFeatures_Dgpu_DgpuType { if x != nil { return x.DgpuType } return HardwareFeatures_Dgpu_DGPU_UNKNOWN } type HardwareFeatures_Uwb struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If UWB is present on system Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_Uwb) Reset() { *x = HardwareFeatures_Uwb{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Uwb) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Uwb) ProtoMessage() {} func (x *HardwareFeatures_Uwb) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[45] 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 HardwareFeatures_Uwb.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Uwb) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 41} } func (x *HardwareFeatures_Uwb) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_HardwareProbe struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GpuFamily string `protobuf:"bytes,1,opt,name=gpu_family,json=gpuFamily,proto3" json:"gpu_family,omitempty"` GpuVendor string `protobuf:"bytes,2,opt,name=gpu_vendor,json=gpuVendor,proto3" json:"gpu_vendor,omitempty"` CpuSocFamily string `protobuf:"bytes,3,opt,name=cpu_soc_family,json=cpuSocFamily,proto3" json:"cpu_soc_family,omitempty"` DmiProductName string `protobuf:"bytes,4,opt,name=dmi_product_name,json=dmiProductName,proto3" json:"dmi_product_name,omitempty"` } func (x *HardwareFeatures_HardwareProbe) Reset() { *x = HardwareFeatures_HardwareProbe{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_HardwareProbe) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_HardwareProbe) ProtoMessage() {} func (x *HardwareFeatures_HardwareProbe) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[46] 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 HardwareFeatures_HardwareProbe.ProtoReflect.Descriptor instead. func (*HardwareFeatures_HardwareProbe) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 42} } func (x *HardwareFeatures_HardwareProbe) GetGpuFamily() string { if x != nil { return x.GpuFamily } return "" } func (x *HardwareFeatures_HardwareProbe) GetGpuVendor() string { if x != nil { return x.GpuVendor } return "" } func (x *HardwareFeatures_HardwareProbe) GetCpuSocFamily() string { if x != nil { return x.CpuSocFamily } return "" } func (x *HardwareFeatures_HardwareProbe) GetDmiProductName() string { if x != nil { return x.DmiProductName } return "" } // A single step in an ambient light sensor configuration table. Each step // configures the brightness percentage while at that step as well as the // sensor value at which the next or previous step should be considered. // Steps should be specified in increasing order for each field. type HardwareFeatures_KbAlsStep struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The backlight brightness percentage for this step. BacklightPercent float64 `protobuf:"fixed64,1,opt,name=backlight_percent,json=backlightPercent,proto3" json:"backlight_percent,omitempty"` LuxThreshold *Component_LuxThreshold `protobuf:"bytes,2,opt,name=lux_threshold,json=luxThreshold,proto3" json:"lux_threshold,omitempty"` } func (x *HardwareFeatures_KbAlsStep) Reset() { *x = HardwareFeatures_KbAlsStep{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_KbAlsStep) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_KbAlsStep) ProtoMessage() {} func (x *HardwareFeatures_KbAlsStep) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[47] 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 HardwareFeatures_KbAlsStep.ProtoReflect.Descriptor instead. func (*HardwareFeatures_KbAlsStep) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 43} } func (x *HardwareFeatures_KbAlsStep) GetBacklightPercent() float64 { if x != nil { return x.BacklightPercent } return 0 } func (x *HardwareFeatures_KbAlsStep) GetLuxThreshold() *Component_LuxThreshold { if x != nil { return x.LuxThreshold } return nil } type HardwareFeatures_DetachableBase struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The target EC binary name which is placed under /lib/firmware. EcImageName string `protobuf:"bytes,1,opt,name=ec_image_name,json=ecImageName,proto3" json:"ec_image_name,omitempty"` // The Product ID of the detachable base. // This value can be queried by command 'lsusb'. ProductId uint32 `protobuf:"varint,2,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` // The touchpad binary name which is placed under /lib/firmware // This is only needed if the detachable base contains touchpad. TouchImageName string `protobuf:"bytes,3,opt,name=touch_image_name,json=touchImageName,proto3" json:"touch_image_name,omitempty"` // Searches and finds the idVendor and idProduct under sysfs // /sys/bus/usb/devices/* which matches the vendor-id and product-id. // This is required for usb interface detachable base. UsbPath string `protobuf:"bytes,4,opt,name=usb_path,json=usbPath,proto3" json:"usb_path,omitempty"` // The Vendor ID of the detachable base. // This value can be queried by command 'lsusb'. VendorId uint32 `protobuf:"varint,5,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"` // Searches and finds the idVendor and idProduct under sysfs // /sys/bus/i2c/devices/* which matches the vendor-id and product-id // due to hid-over-i2c is used. // This is required for i2c interface detachable base. // Note - i2c bus numbering can shift across reboots, please have // corresponding setup based on your platform to ensure consistency. I2CPath string `protobuf:"bytes,6,opt,name=i2c_path,json=i2cPath,proto3" json:"i2c_path,omitempty"` } func (x *HardwareFeatures_DetachableBase) Reset() { *x = HardwareFeatures_DetachableBase{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_DetachableBase) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_DetachableBase) ProtoMessage() {} func (x *HardwareFeatures_DetachableBase) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[48] 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 HardwareFeatures_DetachableBase.ProtoReflect.Descriptor instead. func (*HardwareFeatures_DetachableBase) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 44} } func (x *HardwareFeatures_DetachableBase) GetEcImageName() string { if x != nil { return x.EcImageName } return "" } func (x *HardwareFeatures_DetachableBase) GetProductId() uint32 { if x != nil { return x.ProductId } return 0 } func (x *HardwareFeatures_DetachableBase) GetTouchImageName() string { if x != nil { return x.TouchImageName } return "" } func (x *HardwareFeatures_DetachableBase) GetUsbPath() string { if x != nil { return x.UsbPath } return "" } func (x *HardwareFeatures_DetachableBase) GetVendorId() uint32 { if x != nil { return x.VendorId } return 0 } func (x *HardwareFeatures_DetachableBase) GetI2CPath() string { if x != nil { return x.I2CPath } return "" } type HardwareFeatures_Suspend struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If S3 (suspend to mem) is supported SuspendToMem HardwareFeatures_Present `protobuf:"varint,1,opt,name=suspend_to_mem,json=suspendToMem,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"suspend_to_mem,omitempty"` // If S0ix (suspend to idle) is supported SuspendToIdle HardwareFeatures_Present `protobuf:"varint,2,opt,name=suspend_to_idle,json=suspendToIdle,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"suspend_to_idle,omitempty"` } func (x *HardwareFeatures_Suspend) Reset() { *x = HardwareFeatures_Suspend{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Suspend) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Suspend) ProtoMessage() {} func (x *HardwareFeatures_Suspend) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[49] 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 HardwareFeatures_Suspend.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Suspend) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 45} } func (x *HardwareFeatures_Suspend) GetSuspendToMem() HardwareFeatures_Present { if x != nil { return x.SuspendToMem } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Suspend) GetSuspendToIdle() HardwareFeatures_Present { if x != nil { return x.SuspendToIdle } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_Vrr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If VRR is supported. Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_Vrr) Reset() { *x = HardwareFeatures_Vrr{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Vrr) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Vrr) ProtoMessage() {} func (x *HardwareFeatures_Vrr) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[50] 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 HardwareFeatures_Vrr.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Vrr) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 46} } func (x *HardwareFeatures_Vrr) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_SdReader struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If SD reader is supported. Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_SdReader) Reset() { *x = HardwareFeatures_SdReader{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_SdReader) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_SdReader) ProtoMessage() {} func (x *HardwareFeatures_SdReader) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[51] 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 HardwareFeatures_SdReader.ProtoReflect.Descriptor instead. func (*HardwareFeatures_SdReader) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 47} } func (x *HardwareFeatures_SdReader) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_OEMInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Name stores the name of OEM. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *HardwareFeatures_OEMInfo) Reset() { *x = HardwareFeatures_OEMInfo{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_OEMInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_OEMInfo) ProtoMessage() {} func (x *HardwareFeatures_OEMInfo) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[52] 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 HardwareFeatures_OEMInfo.ProtoReflect.Descriptor instead. func (*HardwareFeatures_OEMInfo) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 48} } func (x *HardwareFeatures_OEMInfo) GetName() string { if x != nil { return x.Name } return "" } type HardwareFeatures_Fan struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The number of fan in the device. FanCount *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=fan_count,json=fanCount,proto3" json:"fan_count,omitempty"` } func (x *HardwareFeatures_Fan) Reset() { *x = HardwareFeatures_Fan{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Fan) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Fan) ProtoMessage() {} func (x *HardwareFeatures_Fan) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[53] 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 HardwareFeatures_Fan.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Fan) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 49} } func (x *HardwareFeatures_Fan) GetFanCount() *wrapperspb.UInt32Value { if x != nil { return x.FanCount } return nil } type HardwareFeatures_InterruptControllerInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If present then the Interrupt controller can support NMIs NmiSupport HardwareFeatures_Present `protobuf:"varint,1,opt,name=nmi_support,json=nmiSupport,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"nmi_support,omitempty"` } func (x *HardwareFeatures_InterruptControllerInfo) Reset() { *x = HardwareFeatures_InterruptControllerInfo{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_InterruptControllerInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_InterruptControllerInfo) ProtoMessage() {} func (x *HardwareFeatures_InterruptControllerInfo) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[54] 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 HardwareFeatures_InterruptControllerInfo.ProtoReflect.Descriptor instead. func (*HardwareFeatures_InterruptControllerInfo) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 50} } func (x *HardwareFeatures_InterruptControllerInfo) GetNmiSupport() HardwareFeatures_Present { if x != nil { return x.NmiSupport } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_TiledDisplay struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // If the device is connected to a tiled display. Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_TiledDisplay) Reset() { *x = HardwareFeatures_TiledDisplay{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_TiledDisplay) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_TiledDisplay) ProtoMessage() {} func (x *HardwareFeatures_TiledDisplay) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[55] 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 HardwareFeatures_TiledDisplay.ProtoReflect.Descriptor instead. func (*HardwareFeatures_TiledDisplay) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 51} } func (x *HardwareFeatures_TiledDisplay) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_CpuInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields VendorInfo *HardwareFeatures_CpuInfo_VendorInfo `protobuf:"bytes,1,opt,name=vendor_info,json=vendorInfo,proto3" json:"vendor_info,omitempty"` } func (x *HardwareFeatures_CpuInfo) Reset() { *x = HardwareFeatures_CpuInfo{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_CpuInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_CpuInfo) ProtoMessage() {} func (x *HardwareFeatures_CpuInfo) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[56] 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 HardwareFeatures_CpuInfo.ProtoReflect.Descriptor instead. func (*HardwareFeatures_CpuInfo) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 52} } func (x *HardwareFeatures_CpuInfo) GetVendorInfo() *HardwareFeatures_CpuInfo_VendorInfo { if x != nil { return x.VendorInfo } return nil } type HardwareFeatures_Pendrive struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Present HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"` } func (x *HardwareFeatures_Pendrive) Reset() { *x = HardwareFeatures_Pendrive{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Pendrive) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Pendrive) ProtoMessage() {} func (x *HardwareFeatures_Pendrive) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[57] 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 HardwareFeatures_Pendrive.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Pendrive) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 53} } func (x *HardwareFeatures_Pendrive) GetPresent() HardwareFeatures_Present { if x != nil { return x.Present } return HardwareFeatures_PRESENT_UNKNOWN } type HardwareFeatures_UsbC_Port struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The position of the port on the chassis. Position HardwareFeatures_PortPosition `protobuf:"varint,1,opt,name=position,proto3,enum=chromiumos.config.api.HardwareFeatures_PortPosition" json:"position,omitempty"` // The 0-indexed index of this USB-C port. If set, this is used as the // port index rather than numbering the motherboard ports in order // followed by daughter board ports, in the order they are specified. // This value must be in the range [0, number_of_usb_c_ports). IndexOverride *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=index_override,json=indexOverride,proto3" json:"index_override,omitempty"` } func (x *HardwareFeatures_UsbC_Port) Reset() { *x = HardwareFeatures_UsbC_Port{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_UsbC_Port) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_UsbC_Port) ProtoMessage() {} func (x *HardwareFeatures_UsbC_Port) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[58] 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 HardwareFeatures_UsbC_Port.ProtoReflect.Descriptor instead. func (*HardwareFeatures_UsbC_Port) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 1, 0} } func (x *HardwareFeatures_UsbC_Port) GetPosition() HardwareFeatures_PortPosition { if x != nil { return x.Position } return HardwareFeatures_UNKNOWN } func (x *HardwareFeatures_UsbC_Port) GetIndexOverride() *wrapperspb.UInt32Value { if x != nil { return x.IndexOverride } return nil } type HardwareFeatures_Cellular_DynamicPowerReductionConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to DynamicPowerReductionConfig: // *HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio // *HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager DynamicPowerReductionConfig isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig `protobuf_oneof:"dynamic_power_reduction_config"` // Whether tablet mode should be a trigger for dynamic power reduction. TabletMode bool `protobuf:"varint,3,opt,name=tablet_mode,json=tabletMode,proto3" json:"tablet_mode,omitempty"` // Whether multi level dynamic power reduction is enabled. EnableMultiPowerLevelSar bool `protobuf:"varint,4,opt,name=enable_multi_power_level_sar,json=enableMultiPowerLevelSar,proto3" json:"enable_multi_power_level_sar,omitempty"` // Whether we should set the initial proximity state to far. EnableDefaultProximityStateFar bool `protobuf:"varint,5,opt,name=enable_default_proximity_state_far,json=enableDefaultProximityStateFar,proto3" json:"enable_default_proximity_state_far,omitempty"` // Map of custom power level to modem index mapping. // E.g. HIGH -> 1, LOW -> 2 PowerLevelMapping map[string]uint32 `protobuf:"bytes,6,rep,name=power_level_mapping,json=powerLevelMapping,proto3" json:"power_level_mapping,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // Map of regulatory domains and power level offset. // E.g. KCC -> 2 RegulatoryDomainMapping map[string]uint32 `protobuf:"bytes,7,rep,name=regulatory_domain_mapping,json=regulatoryDomainMapping,proto3" json:"regulatory_domain_mapping,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } func (x *HardwareFeatures_Cellular_DynamicPowerReductionConfig) Reset() { *x = HardwareFeatures_Cellular_DynamicPowerReductionConfig{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Cellular_DynamicPowerReductionConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig) ProtoMessage() {} func (x *HardwareFeatures_Cellular_DynamicPowerReductionConfig) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[59] 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 HardwareFeatures_Cellular_DynamicPowerReductionConfig.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 3, 0} } func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetDynamicPowerReductionConfig() isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig { if m != nil { return m.DynamicPowerReductionConfig } return nil } func (x *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetGpio() uint32 { if x, ok := x.GetDynamicPowerReductionConfig().(*HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio); ok { return x.Gpio } return 0 } func (x *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetModemManager() bool { if x, ok := x.GetDynamicPowerReductionConfig().(*HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager); ok { return x.ModemManager } return false } func (x *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetTabletMode() bool { if x != nil { return x.TabletMode } return false } func (x *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetEnableMultiPowerLevelSar() bool { if x != nil { return x.EnableMultiPowerLevelSar } return false } func (x *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetEnableDefaultProximityStateFar() bool { if x != nil { return x.EnableDefaultProximityStateFar } return false } func (x *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetPowerLevelMapping() map[string]uint32 { if x != nil { return x.PowerLevelMapping } return nil } func (x *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetRegulatoryDomainMapping() map[string]uint32 { if x != nil { return x.RegulatoryDomainMapping } return nil } type isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig interface { isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig() } type HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio struct { // A uint identifying the GPIO to use to toggle dynamic power // reduction. Gpio uint32 `protobuf:"varint,1,opt,name=gpio,proto3,oneof"` } type HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager struct { // A dummy value identifying that modem manager should be used to // toggle dynamic power reduction. ModemManager bool `protobuf:"varint,2,opt,name=modem_manager,json=modemManager,proto3,oneof"` } func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio) isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig() { } func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager) isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig() { } type HardwareFeatures_Hdmi_Cec struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Automatically power on all connected displays on boot. PowerOnDisplaysOnBoot bool `protobuf:"varint,1,opt,name=power_on_displays_on_boot,json=powerOnDisplaysOnBoot,proto3" json:"power_on_displays_on_boot,omitempty"` // Automatically power off all connected displays on shutdown. PowerOffDisplaysOnShutdown bool `protobuf:"varint,2,opt,name=power_off_displays_on_shutdown,json=powerOffDisplaysOnShutdown,proto3" json:"power_off_displays_on_shutdown,omitempty"` } func (x *HardwareFeatures_Hdmi_Cec) Reset() { *x = HardwareFeatures_Hdmi_Cec{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Hdmi_Cec) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Hdmi_Cec) ProtoMessage() {} func (x *HardwareFeatures_Hdmi_Cec) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[62] 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 HardwareFeatures_Hdmi_Cec.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Hdmi_Cec) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 4, 0} } func (x *HardwareFeatures_Hdmi_Cec) GetPowerOnDisplaysOnBoot() bool { if x != nil { return x.PowerOnDisplaysOnBoot } return false } func (x *HardwareFeatures_Hdmi_Cec) GetPowerOffDisplaysOnShutdown() bool { if x != nil { return x.PowerOffDisplaysOnShutdown } return false } type HardwareFeatures_FirmwareConfiguration_SemVer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MajorVersion uint32 `protobuf:"varint,1,opt,name=major_version,json=majorVersion,proto3" json:"major_version,omitempty"` MinorVersion uint32 `protobuf:"varint,2,opt,name=minor_version,json=minorVersion,proto3" json:"minor_version,omitempty"` PatchVersion uint32 `protobuf:"varint,3,opt,name=patch_version,json=patchVersion,proto3" json:"patch_version,omitempty"` } func (x *HardwareFeatures_FirmwareConfiguration_SemVer) Reset() { *x = HardwareFeatures_FirmwareConfiguration_SemVer{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_FirmwareConfiguration_SemVer) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_FirmwareConfiguration_SemVer) ProtoMessage() {} func (x *HardwareFeatures_FirmwareConfiguration_SemVer) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[63] 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 HardwareFeatures_FirmwareConfiguration_SemVer.ProtoReflect.Descriptor instead. func (*HardwareFeatures_FirmwareConfiguration_SemVer) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 5, 0} } func (x *HardwareFeatures_FirmwareConfiguration_SemVer) GetMajorVersion() uint32 { if x != nil { return x.MajorVersion } return 0 } func (x *HardwareFeatures_FirmwareConfiguration_SemVer) GetMinorVersion() uint32 { if x != nil { return x.MinorVersion } return 0 } func (x *HardwareFeatures_FirmwareConfiguration_SemVer) GetPatchVersion() uint32 { if x != nil { return x.PatchVersion } return 0 } // The configuration file layout structure for a single card. type HardwareFeatures_Audio_CardConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The name of the audio card. CardName string `protobuf:"bytes,1,opt,name=card_name,json=cardName,proto3" json:"card_name,omitempty"` // The UCM suffix pattern for this card if different to the program-level // default. UcmSuffix *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=ucm_suffix,json=ucmSuffix,proto3" json:"ucm_suffix,omitempty"` // The source config file layout used for UCM config. May not be // AUDIO_CONFIG_STRUCTURE_NONE. UcmConfig HardwareFeatures_Audio_AudioConfigStructure `protobuf:"varint,3,opt,name=ucm_config,json=ucmConfig,proto3,enum=chromiumos.config.api.HardwareFeatures_Audio_AudioConfigStructure" json:"ucm_config,omitempty"` // The source config file layout used for card-level cras config. CrasConfig HardwareFeatures_Audio_AudioConfigStructure `protobuf:"varint,4,opt,name=cras_config,json=crasConfig,proto3,enum=chromiumos.config.api.HardwareFeatures_Audio_AudioConfigStructure" json:"cras_config,omitempty"` // The source config file layout used for sound card init config. SoundCardInitConfig HardwareFeatures_Audio_AudioConfigStructure `protobuf:"varint,5,opt,name=sound_card_init_config,json=soundCardInitConfig,proto3,enum=chromiumos.config.api.HardwareFeatures_Audio_AudioConfigStructure" json:"sound_card_init_config,omitempty"` // The cras suffix pattern for this card if different to the program-level // default. CrasSuffix *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=cras_suffix,json=crasSuffix,proto3" json:"cras_suffix,omitempty"` } func (x *HardwareFeatures_Audio_CardConfig) Reset() { *x = HardwareFeatures_Audio_CardConfig{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Audio_CardConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Audio_CardConfig) ProtoMessage() {} func (x *HardwareFeatures_Audio_CardConfig) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[64] 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 HardwareFeatures_Audio_CardConfig.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Audio_CardConfig) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 6, 0} } func (x *HardwareFeatures_Audio_CardConfig) GetCardName() string { if x != nil { return x.CardName } return "" } func (x *HardwareFeatures_Audio_CardConfig) GetUcmSuffix() *wrapperspb.StringValue { if x != nil { return x.UcmSuffix } return nil } func (x *HardwareFeatures_Audio_CardConfig) GetUcmConfig() HardwareFeatures_Audio_AudioConfigStructure { if x != nil { return x.UcmConfig } return HardwareFeatures_Audio_AUDIO_CONFIG_STRUCTURE_NONE } func (x *HardwareFeatures_Audio_CardConfig) GetCrasConfig() HardwareFeatures_Audio_AudioConfigStructure { if x != nil { return x.CrasConfig } return HardwareFeatures_Audio_AUDIO_CONFIG_STRUCTURE_NONE } func (x *HardwareFeatures_Audio_CardConfig) GetSoundCardInitConfig() HardwareFeatures_Audio_AudioConfigStructure { if x != nil { return x.SoundCardInitConfig } return HardwareFeatures_Audio_AUDIO_CONFIG_STRUCTURE_NONE } func (x *HardwareFeatures_Audio_CardConfig) GetCrasSuffix() *wrapperspb.StringValue { if x != nil { return x.CrasSuffix } return nil } type HardwareFeatures_Camera_Device struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The interface type of the camera device. Interface HardwareFeatures_Camera_Interface `protobuf:"varint,2,opt,name=interface,proto3,enum=chromiumos.config.api.HardwareFeatures_Camera_Interface" json:"interface,omitempty"` // Direction the camera faces relative to device screen. Facing HardwareFeatures_Camera_Facing `protobuf:"varint,3,opt,name=facing,proto3,enum=chromiumos.config.api.HardwareFeatures_Camera_Facing" json:"facing,omitempty"` // Clockwise angle through which the output image needs to be rotated to // be upright on the device screen in its native orientation. Orientation HardwareFeatures_Camera_Orientation `protobuf:"varint,4,opt,name=orientation,proto3,enum=chromiumos.config.api.HardwareFeatures_Camera_Orientation" json:"orientation,omitempty"` // Bit flags representing camera capabilities of this device. A camera // module can be mounted on this slot only if all the flags match. Flags uint32 `protobuf:"varint,5,opt,name=flags,proto3" json:"flags,omitempty"` // List of strings each identifies a possible camera module on this slot. Ids []string `protobuf:"bytes,6,rep,name=ids,proto3" json:"ids,omitempty"` // If privacy switch is present on the camera PrivacySwitch HardwareFeatures_Present `protobuf:"varint,7,opt,name=privacy_switch,json=privacySwitch,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"privacy_switch,omitempty"` // The number of microphones associated with this device. MicrophoneCount *HardwareFeatures_Count `protobuf:"bytes,8,opt,name=microphone_count,json=microphoneCount,proto3" json:"microphone_count,omitempty"` // Whether the camera module is detachable. Detachable bool `protobuf:"varint,9,opt,name=detachable,proto3" json:"detachable,omitempty"` } func (x *HardwareFeatures_Camera_Device) Reset() { *x = HardwareFeatures_Camera_Device{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Camera_Device) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Camera_Device) ProtoMessage() {} func (x *HardwareFeatures_Camera_Device) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[65] 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 HardwareFeatures_Camera_Device.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Camera_Device) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 7, 0} } func (x *HardwareFeatures_Camera_Device) GetInterface() HardwareFeatures_Camera_Interface { if x != nil { return x.Interface } return HardwareFeatures_Camera_INTERFACE_UNKNOWN } func (x *HardwareFeatures_Camera_Device) GetFacing() HardwareFeatures_Camera_Facing { if x != nil { return x.Facing } return HardwareFeatures_Camera_FACING_UNKNOWN } func (x *HardwareFeatures_Camera_Device) GetOrientation() HardwareFeatures_Camera_Orientation { if x != nil { return x.Orientation } return HardwareFeatures_Camera_ORIENTATION_UNKNOWN } func (x *HardwareFeatures_Camera_Device) GetFlags() uint32 { if x != nil { return x.Flags } return 0 } func (x *HardwareFeatures_Camera_Device) GetIds() []string { if x != nil { return x.Ids } return nil } func (x *HardwareFeatures_Camera_Device) GetPrivacySwitch() HardwareFeatures_Present { if x != nil { return x.PrivacySwitch } return HardwareFeatures_PRESENT_UNKNOWN } func (x *HardwareFeatures_Camera_Device) GetMicrophoneCount() *HardwareFeatures_Count { if x != nil { return x.MicrophoneCount } return nil } func (x *HardwareFeatures_Camera_Device) GetDetachable() bool { if x != nil { return x.Detachable } return false } type HardwareFeatures_Fingerprint_FingerprintDiag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoutineEnable bool `protobuf:"varint,1,opt,name=routine_enable,json=routineEnable,proto3" json:"routine_enable,omitempty"` MaxPixelDev uint32 `protobuf:"varint,2,opt,name=max_pixel_dev,json=maxPixelDev,proto3" json:"max_pixel_dev,omitempty"` MaxDeadPixels uint32 `protobuf:"varint,3,opt,name=max_dead_pixels,json=maxDeadPixels,proto3" json:"max_dead_pixels,omitempty"` PixelMedian *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian `protobuf:"bytes,4,opt,name=pixel_median,json=pixelMedian,proto3" json:"pixel_median,omitempty"` NumDetectZone uint32 `protobuf:"varint,5,opt,name=num_detect_zone,json=numDetectZone,proto3" json:"num_detect_zone,omitempty"` DetectZones []*HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone `protobuf:"bytes,6,rep,name=detect_zones,json=detectZones,proto3" json:"detect_zones,omitempty"` MaxDeadPixelsInDetectZone uint32 `protobuf:"varint,7,opt,name=max_dead_pixels_in_detect_zone,json=maxDeadPixelsInDetectZone,proto3" json:"max_dead_pixels_in_detect_zone,omitempty"` MaxResetPixelDev uint32 `protobuf:"varint,8,opt,name=max_reset_pixel_dev,json=maxResetPixelDev,proto3" json:"max_reset_pixel_dev,omitempty"` MaxErrorResetPixels uint32 `protobuf:"varint,9,opt,name=max_error_reset_pixels,json=maxErrorResetPixels,proto3" json:"max_error_reset_pixels,omitempty"` } func (x *HardwareFeatures_Fingerprint_FingerprintDiag) Reset() { *x = HardwareFeatures_Fingerprint_FingerprintDiag{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Fingerprint_FingerprintDiag) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Fingerprint_FingerprintDiag) ProtoMessage() {} func (x *HardwareFeatures_Fingerprint_FingerprintDiag) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[66] 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 HardwareFeatures_Fingerprint_FingerprintDiag.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Fingerprint_FingerprintDiag) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 17, 0} } func (x *HardwareFeatures_Fingerprint_FingerprintDiag) GetRoutineEnable() bool { if x != nil { return x.RoutineEnable } return false } func (x *HardwareFeatures_Fingerprint_FingerprintDiag) GetMaxPixelDev() uint32 { if x != nil { return x.MaxPixelDev } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag) GetMaxDeadPixels() uint32 { if x != nil { return x.MaxDeadPixels } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag) GetPixelMedian() *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian { if x != nil { return x.PixelMedian } return nil } func (x *HardwareFeatures_Fingerprint_FingerprintDiag) GetNumDetectZone() uint32 { if x != nil { return x.NumDetectZone } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag) GetDetectZones() []*HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone { if x != nil { return x.DetectZones } return nil } func (x *HardwareFeatures_Fingerprint_FingerprintDiag) GetMaxDeadPixelsInDetectZone() uint32 { if x != nil { return x.MaxDeadPixelsInDetectZone } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag) GetMaxResetPixelDev() uint32 { if x != nil { return x.MaxResetPixelDev } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag) GetMaxErrorResetPixels() uint32 { if x != nil { return x.MaxErrorResetPixels } return 0 } type HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CbType1Lower uint32 `protobuf:"varint,1,opt,name=cb_type1_lower,json=cbType1Lower,proto3" json:"cb_type1_lower,omitempty"` CbType1Upper uint32 `protobuf:"varint,2,opt,name=cb_type1_upper,json=cbType1Upper,proto3" json:"cb_type1_upper,omitempty"` CbType2Lower uint32 `protobuf:"varint,3,opt,name=cb_type2_lower,json=cbType2Lower,proto3" json:"cb_type2_lower,omitempty"` CbType2Upper uint32 `protobuf:"varint,4,opt,name=cb_type2_upper,json=cbType2Upper,proto3" json:"cb_type2_upper,omitempty"` IcbType1Lower uint32 `protobuf:"varint,5,opt,name=icb_type1_lower,json=icbType1Lower,proto3" json:"icb_type1_lower,omitempty"` IcbType1Upper uint32 `protobuf:"varint,6,opt,name=icb_type1_upper,json=icbType1Upper,proto3" json:"icb_type1_upper,omitempty"` IcbType2Lower uint32 `protobuf:"varint,7,opt,name=icb_type2_lower,json=icbType2Lower,proto3" json:"icb_type2_lower,omitempty"` IcbType2Upper uint32 `protobuf:"varint,8,opt,name=icb_type2_upper,json=icbType2Upper,proto3" json:"icb_type2_upper,omitempty"` } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) Reset() { *x = HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) ProtoMessage() {} func (x *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[67] 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 HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 17, 0, 0} } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) GetCbType1Lower() uint32 { if x != nil { return x.CbType1Lower } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) GetCbType1Upper() uint32 { if x != nil { return x.CbType1Upper } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) GetCbType2Lower() uint32 { if x != nil { return x.CbType2Lower } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) GetCbType2Upper() uint32 { if x != nil { return x.CbType2Upper } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) GetIcbType1Lower() uint32 { if x != nil { return x.IcbType1Lower } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) GetIcbType1Upper() uint32 { if x != nil { return x.IcbType1Upper } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) GetIcbType2Lower() uint32 { if x != nil { return x.IcbType2Lower } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian) GetIcbType2Upper() uint32 { if x != nil { return x.IcbType2Upper } return 0 } type HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields X1 uint32 `protobuf:"varint,1,opt,name=x1,proto3" json:"x1,omitempty"` Y1 uint32 `protobuf:"varint,2,opt,name=y1,proto3" json:"y1,omitempty"` X2 uint32 `protobuf:"varint,3,opt,name=x2,proto3" json:"x2,omitempty"` Y2 uint32 `protobuf:"varint,4,opt,name=y2,proto3" json:"y2,omitempty"` } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone) Reset() { *x = HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone) ProtoMessage() {} func (x *HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[68] 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 HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 17, 0, 1} } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone) GetX1() uint32 { if x != nil { return x.X1 } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone) GetY1() uint32 { if x != nil { return x.Y1 } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone) GetX2() uint32 { if x != nil { return x.X2 } return 0 } func (x *HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone) GetY2() uint32 { if x != nil { return x.Y2 } return 0 } type HardwareFeatures_Battery_Lifetime struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Starting with a fully-charged battery, the amount of time a Chrome // device must remain operational in the Shipping state. ShippingMin *Duration `protobuf:"bytes,1,opt,name=shipping_min,json=shippingMin,proto3" json:"shipping_min,omitempty"` // Starting with a fully-charged battery, the amount of time a Chrome // device must remain operational in the Deep Sleep state. DeepSleepMin *Duration `protobuf:"bytes,2,opt,name=deep_sleep_min,json=deepSleepMin,proto3" json:"deep_sleep_min,omitempty"` // Starting with a fully-charged battery, the amount of time a Chrome // device must remain operational in the Suspend state. SuspendMin *Duration `protobuf:"bytes,3,opt,name=suspend_min,json=suspendMin,proto3" json:"suspend_min,omitempty"` // Starting with a fully-charged battery, the amount of time a Chrome // device must remain operational in the Lucid Sleep state. LucidSleepMin *Duration `protobuf:"bytes,4,opt,name=lucid_sleep_min,json=lucidSleepMin,proto3" json:"lucid_sleep_min,omitempty"` // Starting with a fully-charged battery, the amount of time a Chrome // device must remain operational in the Active state. ActiveMin *Duration `protobuf:"bytes,5,opt,name=active_min,json=activeMin,proto3" json:"active_min,omitempty"` } func (x *HardwareFeatures_Battery_Lifetime) Reset() { *x = HardwareFeatures_Battery_Lifetime{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Battery_Lifetime) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Battery_Lifetime) ProtoMessage() {} func (x *HardwareFeatures_Battery_Lifetime) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[70] 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 HardwareFeatures_Battery_Lifetime.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Battery_Lifetime) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 29, 0} } func (x *HardwareFeatures_Battery_Lifetime) GetShippingMin() *Duration { if x != nil { return x.ShippingMin } return nil } func (x *HardwareFeatures_Battery_Lifetime) GetDeepSleepMin() *Duration { if x != nil { return x.DeepSleepMin } return nil } func (x *HardwareFeatures_Battery_Lifetime) GetSuspendMin() *Duration { if x != nil { return x.SuspendMin } return nil } func (x *HardwareFeatures_Battery_Lifetime) GetLucidSleepMin() *Duration { if x != nil { return x.LucidSleepMin } return nil } func (x *HardwareFeatures_Battery_Lifetime) GetActiveMin() *Duration { if x != nil { return x.ActiveMin } return nil } type HardwareFeatures_Battery_Charging struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Max time to charge from 0 to 100% in the Active state at average load. ActiveMax *Duration `protobuf:"bytes,1,opt,name=active_max,json=activeMax,proto3" json:"active_max,omitempty"` // Max time to charge from 0 to 100% in the Suspend state. SuspendMax *Duration `protobuf:"bytes,2,opt,name=suspend_max,json=suspendMax,proto3" json:"suspend_max,omitempty"` // Max time to charge from 0 to 100% in the Deep sleep state. DeepSleepMax *Duration `protobuf:"bytes,3,opt,name=deep_sleep_max,json=deepSleepMax,proto3" json:"deep_sleep_max,omitempty"` } func (x *HardwareFeatures_Battery_Charging) Reset() { *x = HardwareFeatures_Battery_Charging{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_Battery_Charging) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_Battery_Charging) ProtoMessage() {} func (x *HardwareFeatures_Battery_Charging) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[71] 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 HardwareFeatures_Battery_Charging.ProtoReflect.Descriptor instead. func (*HardwareFeatures_Battery_Charging) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 29, 1} } func (x *HardwareFeatures_Battery_Charging) GetActiveMax() *Duration { if x != nil { return x.ActiveMax } return nil } func (x *HardwareFeatures_Battery_Charging) GetSuspendMax() *Duration { if x != nil { return x.SuspendMax } return nil } func (x *HardwareFeatures_Battery_Charging) GetDeepSleepMax() *Duration { if x != nil { return x.DeepSleepMax } return nil } // Details about cpu vendor info. type HardwareFeatures_CpuInfo_VendorInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CpuFamilyNum int64 `protobuf:"varint,1,opt,name=cpu_family_num,json=cpuFamilyNum,proto3" json:"cpu_family_num,omitempty"` CpuModelNum int64 `protobuf:"varint,2,opt,name=cpu_model_num,json=cpuModelNum,proto3" json:"cpu_model_num,omitempty"` } func (x *HardwareFeatures_CpuInfo_VendorInfo) Reset() { *x = HardwareFeatures_CpuInfo_VendorInfo{} if protoimpl.UnsafeEnabled { mi := &file_chromiumos_config_api_topology_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HardwareFeatures_CpuInfo_VendorInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*HardwareFeatures_CpuInfo_VendorInfo) ProtoMessage() {} func (x *HardwareFeatures_CpuInfo_VendorInfo) ProtoReflect() protoreflect.Message { mi := &file_chromiumos_config_api_topology_proto_msgTypes[72] 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 HardwareFeatures_CpuInfo_VendorInfo.ProtoReflect.Descriptor instead. func (*HardwareFeatures_CpuInfo_VendorInfo) Descriptor() ([]byte, []int) { return file_chromiumos_config_api_topology_proto_rawDescGZIP(), []int{2, 52, 0} } func (x *HardwareFeatures_CpuInfo_VendorInfo) GetCpuFamilyNum() int64 { if x != nil { return x.CpuFamilyNum } return 0 } func (x *HardwareFeatures_CpuInfo_VendorInfo) GetCpuModelNum() int64 { if x != nil { return x.CpuModelNum } return 0 } var File_chromiumos_config_api_topology_proto protoreflect.FileDescriptor var file_chromiumos_config_api_topology_proto_rawDesc = []byte{ 0x0a, 0x24, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x25, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa7, 0x07, 0x0a, 0x08, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x52, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x10, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x1a, 0x3e, 0x0a, 0x10, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe8, 0x04, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x59, 0x4c, 0x55, 0x53, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x48, 0x45, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x41, 0x4d, 0x45, 0x52, 0x41, 0x10, 0x07, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x43, 0x45, 0x4c, 0x45, 0x52, 0x4f, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x47, 0x59, 0x52, 0x4f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x47, 0x4e, 0x45, 0x54, 0x4f, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x49, 0x4e, 0x47, 0x45, 0x52, 0x50, 0x52, 0x49, 0x4e, 0x54, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x52, 0x4f, 0x58, 0x49, 0x4d, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x45, 0x4e, 0x53, 0x4f, 0x52, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x41, 0x55, 0x47, 0x48, 0x54, 0x45, 0x52, 0x5f, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x10, 0x0b, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x4f, 0x4e, 0x5f, 0x56, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x0c, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x41, 0x4d, 0x10, 0x0d, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x49, 0x46, 0x49, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x10, 0x0f, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x55, 0x53, 0x42, 0x10, 0x11, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x4c, 0x55, 0x45, 0x54, 0x4f, 0x4f, 0x54, 0x48, 0x10, 0x12, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x41, 0x52, 0x52, 0x45, 0x4c, 0x4a, 0x41, 0x43, 0x4b, 0x10, 0x13, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x54, 0x54, 0x4f, 0x4e, 0x10, 0x14, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x42, 0x55, 0x54, 0x54, 0x4f, 0x4e, 0x10, 0x15, 0x12, 0x06, 0x0a, 0x02, 0x45, 0x43, 0x10, 0x16, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x4f, 0x55, 0x43, 0x48, 0x10, 0x17, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x50, 0x4d, 0x10, 0x18, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x49, 0x43, 0x52, 0x4f, 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x5f, 0x4d, 0x55, 0x54, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x19, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x41, 0x54, 0x54, 0x45, 0x52, 0x59, 0x10, 0x1a, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x44, 0x4d, 0x49, 0x10, 0x1b, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x4f, 0x43, 0x10, 0x1c, 0x12, 0x07, 0x0a, 0x03, 0x48, 0x50, 0x53, 0x10, 0x1d, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x54, 0x45, 0x52, 0x10, 0x1e, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x4f, 0x45, 0x10, 0x1f, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4c, 0x59, 0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x21, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x49, 0x56, 0x41, 0x43, 0x59, 0x5f, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x10, 0x22, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x47, 0x50, 0x55, 0x10, 0x23, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x57, 0x42, 0x10, 0x24, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x45, 0x54, 0x41, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x25, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x41, 0x4e, 0x10, 0x26, 0x22, 0xb5, 0x01, 0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x59, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, 0x4c, 0x4c, 0x49, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x53, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4e, 0x55, 0x54, 0x45, 0x53, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x48, 0x4f, 0x55, 0x52, 0x53, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x59, 0x53, 0x10, 0x05, 0x22, 0xb6, 0xbe, 0x01, 0x0a, 0x10, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x75, 0x73, 0x62, 0x5f, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x62, 0x43, 0x52, 0x04, 0x75, 0x73, 0x62, 0x43, 0x12, 0x41, 0x0a, 0x05, 0x75, 0x73, 0x62, 0x5f, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x62, 0x41, 0x52, 0x04, 0x75, 0x73, 0x62, 0x41, 0x12, 0x4c, 0x0a, 0x08, 0x63, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x52, 0x08, 0x63, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x12, 0x40, 0x0a, 0x04, 0x68, 0x64, 0x6d, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x48, 0x64, 0x6d, 0x69, 0x52, 0x04, 0x68, 0x64, 0x6d, 0x69, 0x12, 0x5a, 0x0a, 0x09, 0x66, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x66, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x43, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x52, 0x06, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x12, 0x5b, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x09, 0x67, 0x79, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x47, 0x79, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x09, 0x67, 0x79, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x0c, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x0c, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x0c, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x0b, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x46, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x52, 0x06, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x53, 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x46, 0x0a, 0x06, 0x73, 0x74, 0x79, 0x6c, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x79, 0x6c, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x46, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x55, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x12, 0x52, 0x0a, 0x0a, 0x62, 0x61, 0x72, 0x72, 0x65, 0x6c, 0x6a, 0x61, 0x63, 0x6b, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x42, 0x61, 0x72, 0x72, 0x65, 0x6c, 0x4a, 0x61, 0x63, 0x6b, 0x52, 0x0a, 0x62, 0x61, 0x72, 0x72, 0x65, 0x6c, 0x6a, 0x61, 0x63, 0x6b, 0x12, 0x40, 0x0a, 0x04, 0x77, 0x69, 0x66, 0x69, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x66, 0x69, 0x52, 0x04, 0x77, 0x69, 0x66, 0x69, 0x12, 0x51, 0x0a, 0x0c, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x53, 0x0a, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x6b, 0x0a, 0x13, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x12, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x75, 0x0a, 0x17, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x15, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x52, 0x0a, 0x0a, 0x68, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x48, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x68, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x49, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x4c, 0x0a, 0x08, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x70, 0x61, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x70, 0x61, 0x64, 0x52, 0x08, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x70, 0x61, 0x64, 0x12, 0x72, 0x0a, 0x16, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x14, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x49, 0x0a, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x3d, 0x0a, 0x03, 0x73, 0x6f, 0x63, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x53, 0x6f, 0x63, 0x52, 0x03, 0x73, 0x6f, 0x63, 0x12, 0x5f, 0x0a, 0x0c, 0x64, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0b, 0x64, 0x70, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x03, 0x68, 0x70, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x48, 0x70, 0x73, 0x52, 0x03, 0x68, 0x70, 0x73, 0x12, 0x3d, 0x0a, 0x03, 0x70, 0x6f, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x6f, 0x45, 0x52, 0x03, 0x70, 0x6f, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x0b, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x4f, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x52, 0x05, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x12, 0x49, 0x0a, 0x07, 0x74, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x54, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x52, 0x07, 0x74, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x6c, 0x0a, 0x14, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4d, 0x0a, 0x0b, 0x64, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x44, 0x67, 0x70, 0x75, 0x52, 0x0a, 0x64, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4a, 0x0a, 0x0a, 0x75, 0x77, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x55, 0x77, 0x62, 0x52, 0x09, 0x75, 0x77, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x69, 0x0a, 0x15, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x13, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5f, 0x0a, 0x0f, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x73, 0x65, 0x52, 0x0e, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x07, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x3d, 0x0a, 0x03, 0x76, 0x72, 0x72, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x56, 0x72, 0x72, 0x52, 0x03, 0x76, 0x72, 0x72, 0x12, 0x4d, 0x0a, 0x09, 0x73, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x53, 0x64, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x08, 0x73, 0x64, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x4a, 0x0a, 0x08, 0x6f, 0x65, 0x6d, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4f, 0x45, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6f, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x03, 0x66, 0x61, 0x6e, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x61, 0x6e, 0x52, 0x03, 0x66, 0x61, 0x6e, 0x12, 0x7b, 0x0a, 0x19, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x17, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x59, 0x0a, 0x0d, 0x74, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x54, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x0c, 0x74, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x4a, 0x0a, 0x08, 0x63, 0x70, 0x75, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x70, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x63, 0x70, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4c, 0x0a, 0x08, 0x70, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x52, 0x08, 0x70, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x1a, 0x1d, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x8d, 0x03, 0x0a, 0x04, 0x55, 0x73, 0x62, 0x43, 0x12, 0x43, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x62, 0x43, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x62, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x75, 0x73, 0x62, 0x34, 0x12, 0x43, 0x0a, 0x1e, 0x64, 0x65, 0x66, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1b, 0x64, 0x65, 0x66, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x1a, 0x9d, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x50, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x0e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x1a, 0x4b, 0x0a, 0x04, 0x55, 0x73, 0x62, 0x41, 0x12, 0x43, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xa2, 0x0c, 0x0a, 0x08, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x51, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x13, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x61, 0x70, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x41, 0x70, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x91, 0x01, 0x0a, 0x1e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x1b, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2d, 0x0a, 0x13, 0x77, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x77, 0x65, 0x64, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x49, 0x6e, 0x4d, 0x73, 0x12, 0x59, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x1a, 0xf9, 0x05, 0x0a, 0x1b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x04, 0x67, 0x70, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x67, 0x70, 0x69, 0x6f, 0x12, 0x25, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3e, 0x0a, 0x1c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x73, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x61, 0x72, 0x12, 0x4a, 0x0a, 0x22, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x61, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x61, 0x72, 0x12, 0x93, 0x01, 0x0a, 0x13, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x63, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0xa5, 0x01, 0x0a, 0x19, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x69, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x1a, 0x44, 0x0a, 0x16, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4a, 0x0a, 0x1c, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x20, 0x0a, 0x1e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x47, 0x0a, 0x0c, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x4c, 0x54, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x35, 0x47, 0x10, 0x02, 0x22, 0xca, 0x01, 0x0a, 0x09, 0x4d, 0x6f, 0x64, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x4f, 0x44, 0x45, 0x4d, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x4f, 0x44, 0x45, 0x4d, 0x5f, 0x4c, 0x38, 0x35, 0x30, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, 0x44, 0x45, 0x4d, 0x5f, 0x4e, 0x4c, 0x36, 0x36, 0x38, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, 0x44, 0x45, 0x4d, 0x5f, 0x46, 0x4d, 0x31, 0x30, 0x31, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, 0x44, 0x45, 0x4d, 0x5f, 0x46, 0x4d, 0x33, 0x35, 0x30, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x4f, 0x44, 0x45, 0x4d, 0x5f, 0x53, 0x43, 0x37, 0x31, 0x38, 0x30, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x4f, 0x44, 0x45, 0x4d, 0x5f, 0x53, 0x43, 0x37, 0x32, 0x38, 0x30, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, 0x44, 0x45, 0x4d, 0x5f, 0x45, 0x4d, 0x30, 0x36, 0x30, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, 0x44, 0x45, 0x4d, 0x5f, 0x52, 0x57, 0x31, 0x30, 0x31, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, 0x44, 0x45, 0x4d, 0x5f, 0x52, 0x57, 0x31, 0x33, 0x35, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x4f, 0x44, 0x45, 0x4d, 0x5f, 0x4c, 0x43, 0x55, 0x4b, 0x35, 0x34, 0x10, 0x0a, 0x1a, 0x9b, 0x02, 0x0a, 0x04, 0x48, 0x64, 0x6d, 0x69, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x03, 0x63, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x48, 0x64, 0x6d, 0x69, 0x2e, 0x43, 0x65, 0x63, 0x52, 0x03, 0x63, 0x65, 0x63, 0x1a, 0x83, 0x01, 0x0a, 0x03, 0x43, 0x65, 0x63, 0x12, 0x38, 0x0a, 0x19, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x6e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x73, 0x4f, 0x6e, 0x42, 0x6f, 0x6f, 0x74, 0x12, 0x42, 0x0a, 0x1e, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x73, 0x4f, 0x6e, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0xe8, 0x08, 0x0a, 0x15, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x37, 0x0a, 0x17, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x65, 0x0a, 0x16, 0x76, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x63, 0x62, 0x66, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x14, 0x76, 0x62, 0x6f, 0x6f, 0x74, 0x43, 0x62, 0x66, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x68, 0x0a, 0x0d, 0x66, 0x77, 0x5f, 0x72, 0x6f, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, 0x56, 0x65, 0x72, 0x52, 0x0b, 0x66, 0x77, 0x52, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x6c, 0x5f, 0x69, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x6c, 0x49, 0x73, 0x68, 0x12, 0x68, 0x0a, 0x0d, 0x66, 0x77, 0x5f, 0x72, 0x77, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, 0x56, 0x65, 0x72, 0x52, 0x0b, 0x66, 0x77, 0x52, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x08, 0x62, 0x6d, 0x70, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x62, 0x6d, 0x70, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x59, 0x0a, 0x10, 0x66, 0x77, 0x5f, 0x73, 0x70, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x66, 0x77, 0x53, 0x70, 0x6c, 0x61, 0x73, 0x68, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x53, 0x0a, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x73, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x73, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x64, 0x0a, 0x16, 0x68, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x6d, 0x72, 0x63, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x13, 0x68, 0x61, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4d, 0x72, 0x63, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x76, 0x0a, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x6f, 0x66, 0x5f, 0x6c, 0x69, 0x66, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x1b, 0x6d, 0x61, 0x69, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x48, 0x61, 0x73, 0x45, 0x61, 0x72, 0x6c, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x4f, 0x66, 0x4c, 0x69, 0x66, 0x65, 0x1a, 0x77, 0x0a, 0x06, 0x53, 0x65, 0x6d, 0x56, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x63, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x1a, 0xd8, 0x10, 0x0a, 0x05, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x12, 0x59, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x0a, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x58, 0x0a, 0x0b, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x41, 0x6d, 0x70, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x41, 0x6d, 0x70, 0x12, 0x61, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x54, 0x0a, 0x0e, 0x6c, 0x69, 0x64, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0d, 0x6c, 0x69, 0x64, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x56, 0x0a, 0x0f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x57, 0x0a, 0x11, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x6d, 0x70, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x10, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x41, 0x6d, 0x70, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x63, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x63, 0x0a, 0x0b, 0x63, 0x72, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x53, 0x0a, 0x0d, 0x73, 0x6f, 0x66, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x64, 0x73, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x73, 0x6f, 0x66, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x44, 0x73, 0x70, 0x1a, 0xe6, 0x03, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x75, 0x63, 0x6d, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x75, 0x63, 0x6d, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x61, 0x0a, 0x0a, 0x75, 0x63, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x75, 0x63, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x63, 0x0a, 0x0b, 0x63, 0x72, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x77, 0x0a, 0x16, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x13, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x72, 0x61, 0x73, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x61, 0x73, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x22, 0xe1, 0x02, 0x0a, 0x0a, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x43, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x54, 0x35, 0x36, 0x38, 0x32, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x4c, 0x43, 0x35, 0x36, 0x38, 0x32, 0x49, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x4c, 0x43, 0x35, 0x36, 0x38, 0x32, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x41, 0x37, 0x32, 0x31, 0x39, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x41, 0x55, 0x38, 0x38, 0x4c, 0x32, 0x35, 0x42, 0x10, 0x0a, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x53, 0x34, 0x32, 0x4c, 0x34, 0x32, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x4c, 0x43, 0x35, 0x36, 0x38, 0x32, 0x49, 0x56, 0x53, 0x10, 0x0c, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x43, 0x44, 0x39, 0x33, 0x38, 0x35, 0x10, 0x0d, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x53, 0x38, 0x33, 0x32, 0x36, 0x10, 0x0e, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x43, 0x32, 0x37, 0x32, 0x10, 0x0f, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x43, 0x5f, 0x41, 0x4c, 0x43, 0x35, 0x36, 0x35, 0x30, 0x10, 0x11, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x43, 0x5f, 0x41, 0x4c, 0x43, 0x32, 0x35, 0x36, 0x10, 0x12, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x43, 0x5f, 0x41, 0x4c, 0x43, 0x33, 0x32, 0x34, 0x37, 0x10, 0x13, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x43, 0x5f, 0x41, 0x4c, 0x43, 0x33, 0x32, 0x38, 0x37, 0x10, 0x14, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x43, 0x5f, 0x41, 0x4c, 0x43, 0x37, 0x32, 0x32, 0x10, 0x16, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x43, 0x5f, 0x41, 0x4c, 0x43, 0x37, 0x32, 0x31, 0x10, 0x17, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x43, 0x5f, 0x41, 0x4c, 0x43, 0x33, 0x32, 0x30, 0x34, 0x10, 0x18, 0x22, 0x04, 0x08, 0x04, 0x10, 0x07, 0x22, 0x04, 0x08, 0x09, 0x10, 0x09, 0x22, 0xfa, 0x02, 0x0a, 0x09, 0x41, 0x6d, 0x70, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4d, 0x50, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x39, 0x38, 0x33, 0x35, 0x37, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x39, 0x38, 0x33, 0x37, 0x33, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x39, 0x38, 0x33, 0x36, 0x30, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x54, 0x31, 0x30, 0x31, 0x35, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x4c, 0x43, 0x31, 0x30, 0x31, 0x31, 0x10, 0x09, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x54, 0x31, 0x30, 0x31, 0x35, 0x50, 0x10, 0x0a, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x4c, 0x43, 0x31, 0x30, 0x31, 0x39, 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x39, 0x38, 0x33, 0x39, 0x30, 0x10, 0x0c, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x39, 0x38, 0x33, 0x39, 0x36, 0x10, 0x0d, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x53, 0x33, 0x35, 0x4c, 0x34, 0x31, 0x10, 0x0e, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x58, 0x39, 0x38, 0x33, 0x36, 0x33, 0x10, 0x0f, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x41, 0x55, 0x38, 0x33, 0x31, 0x38, 0x10, 0x10, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4d, 0x50, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x43, 0x35, 0x36, 0x35, 0x30, 0x10, 0x11, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x4d, 0x50, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x43, 0x32, 0x35, 0x36, 0x10, 0x12, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4d, 0x50, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x43, 0x33, 0x32, 0x34, 0x37, 0x10, 0x13, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4d, 0x50, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x43, 0x33, 0x32, 0x38, 0x37, 0x10, 0x14, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x41, 0x53, 0x32, 0x35, 0x36, 0x33, 0x10, 0x15, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x4d, 0x50, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x43, 0x37, 0x32, 0x32, 0x10, 0x16, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x4d, 0x50, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x43, 0x37, 0x32, 0x31, 0x10, 0x17, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x4d, 0x50, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x43, 0x33, 0x32, 0x30, 0x34, 0x10, 0x18, 0x22, 0x04, 0x08, 0x01, 0x10, 0x03, 0x22, 0x04, 0x08, 0x08, 0x10, 0x08, 0x22, 0x4f, 0x0a, 0x14, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x10, 0x02, 0x1a, 0xa1, 0x08, 0x0a, 0x06, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x12, 0x4f, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x62, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x65, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x62, 0x49, 0x64, 0x73, 0x1a, 0x87, 0x04, 0x0a, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x2e, 0x46, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x66, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x5c, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x2e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x56, 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x58, 0x0a, 0x10, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x49, 0x0a, 0x09, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x55, 0x53, 0x42, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x4d, 0x49, 0x50, 0x49, 0x10, 0x02, 0x22, 0x3f, 0x0a, 0x06, 0x46, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x52, 0x4f, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x02, 0x22, 0x77, 0x0a, 0x0b, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x30, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x30, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x31, 0x38, 0x30, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x37, 0x30, 0x10, 0x04, 0x22, 0x4d, 0x0a, 0x05, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x31, 0x30, 0x38, 0x30, 0x50, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x46, 0x4f, 0x43, 0x55, 0x53, 0x10, 0x02, 0x1a, 0xcd, 0x01, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x5c, 0x0a, 0x11, 0x6c, 0x69, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x6c, 0x69, 0x64, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x12, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x11, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x1a, 0xb9, 0x01, 0x0a, 0x09, 0x47, 0x79, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x6c, 0x69, 0x64, 0x5f, 0x67, 0x79, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x6c, 0x69, 0x64, 0x47, 0x79, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x67, 0x79, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x47, 0x79, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x1a, 0xc8, 0x01, 0x0a, 0x0c, 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x10, 0x6c, 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x6c, 0x69, 0x64, 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x5c, 0x0a, 0x11, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x1a, 0xa3, 0x02, 0x0a, 0x0b, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x58, 0x0a, 0x0f, 0x6c, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x6c, 0x69, 0x64, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x5a, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x62, 0x61, 0x73, 0x65, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x5e, 0x0a, 0x12, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x11, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x1a, 0xf7, 0x02, 0x0a, 0x06, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x63, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x63, 0x0a, 0x10, 0x70, 0x61, 0x6e, 0x65, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x61, 0x6e, 0x65, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0f, 0x70, 0x61, 0x6e, 0x65, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0d, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x47, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x44, 0x50, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x1a, 0x9f, 0x04, 0x0a, 0x0a, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x62, 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x6b, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3f, 0x0a, 0x0d, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x69, 0x22, 0x98, 0x01, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4c, 0x41, 0x4d, 0x53, 0x48, 0x45, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x54, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x54, 0x41, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x42, 0x41, 0x53, 0x45, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x42, 0x4f, 0x58, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x42, 0x49, 0x54, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x53, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x07, 0x22, 0x64, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x54, 0x54, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x54, 0x54, 0x4f, 0x4e, 0x10, 0x03, 0x1a, 0xa3, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x79, 0x6c, 0x75, 0x73, 0x12, 0x51, 0x0a, 0x06, 0x73, 0x74, 0x79, 0x6c, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x74, 0x79, 0x6c, 0x75, 0x73, 0x22, 0x46, 0x0a, 0x0a, 0x53, 0x74, 0x79, 0x6c, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x59, 0x4c, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x03, 0x1a, 0x8e, 0x0c, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x62, 0x0a, 0x0d, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x50, 0x61, 0x64, 0x12, 0x5b, 0x0a, 0x08, 0x6d, 0x63, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4d, 0x63, 0x75, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6d, 0x63, 0x75, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x01, 0x52, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x65, 0x70, 0x73, 0x12, 0x4e, 0x0a, 0x09, 0x61, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4b, 0x62, 0x41, 0x6c, 0x73, 0x53, 0x74, 0x65, 0x70, 0x52, 0x08, 0x61, 0x6c, 0x73, 0x53, 0x74, 0x65, 0x70, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f, 0x5f, 0x61, 0x6c, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x41, 0x6c, 0x73, 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x77, 0x0a, 0x12, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x49, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4c, 0x65, 0x66, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x10, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4c, 0x65, 0x66, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x7a, 0x0a, 0x13, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x52, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x11, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x52, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x6f, 0x0a, 0x12, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x64, 0x5f, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x50, 0x61, 0x64, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x50, 0x61, 0x64, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x22, 0x51, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x54, 0x41, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x22, 0x47, 0x0a, 0x0f, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4d, 0x63, 0x75, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x4d, 0x43, 0x55, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x4d, 0x43, 0x55, 0x5f, 0x50, 0x52, 0x49, 0x53, 0x4d, 0x10, 0x01, 0x22, 0x85, 0x01, 0x0a, 0x18, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4c, 0x65, 0x66, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x23, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x33, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x34, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x02, 0x22, 0xab, 0x01, 0x0a, 0x19, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x52, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x28, 0x0a, 0x24, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x32, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x33, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x34, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x03, 0x22, 0x66, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x50, 0x61, 0x64, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x41, 0x44, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x41, 0x44, 0x5f, 0x33, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x41, 0x44, 0x5f, 0x34, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x10, 0x02, 0x1a, 0x53, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0xd3, 0x0b, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x6e, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x52, 0x0f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0xd0, 0x07, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x64, 0x65, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x44, 0x65, 0x76, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x61, 0x64, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x12, 0x72, 0x0a, 0x0c, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x2e, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x52, 0x0b, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x71, 0x0a, 0x0c, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x44, 0x69, 0x61, 0x67, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x1e, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x19, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x61, 0x64, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x49, 0x6e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x64, 0x65, 0x76, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x44, 0x65, 0x76, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x1a, 0xc5, 0x02, 0x0a, 0x0b, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x31, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x62, 0x54, 0x79, 0x70, 0x65, 0x31, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x31, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x62, 0x54, 0x79, 0x70, 0x65, 0x31, 0x55, 0x70, 0x70, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x32, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x62, 0x54, 0x79, 0x70, 0x65, 0x32, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x32, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x62, 0x54, 0x79, 0x70, 0x65, 0x32, 0x55, 0x70, 0x70, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x63, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x31, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x63, 0x62, 0x54, 0x79, 0x70, 0x65, 0x31, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x63, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x31, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x63, 0x62, 0x54, 0x79, 0x70, 0x65, 0x31, 0x55, 0x70, 0x70, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x63, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x32, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x63, 0x62, 0x54, 0x79, 0x70, 0x65, 0x32, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x63, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x32, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x63, 0x62, 0x54, 0x79, 0x70, 0x65, 0x32, 0x55, 0x70, 0x70, 0x65, 0x72, 0x1a, 0x4c, 0x0a, 0x0a, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x78, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x78, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x79, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x79, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x78, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x78, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x79, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x79, 0x32, 0x22, 0xd7, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x54, 0x54, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x50, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x54, 0x4f, 0x50, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x10, 0x07, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x54, 0x54, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x50, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x09, 0x22, 0x04, 0x08, 0x05, 0x10, 0x05, 0x22, 0x04, 0x08, 0x08, 0x10, 0x08, 0x1a, 0x7b, 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x69, 0x7a, 0x65, 0x47, 0x62, 0x1a, 0xa0, 0x01, 0x0a, 0x09, 0x42, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x12, 0x48, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0x57, 0x0a, 0x0a, 0x42, 0x61, 0x72, 0x72, 0x65, 0x6c, 0x4a, 0x61, 0x63, 0x6b, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0x80, 0x03, 0x0a, 0x04, 0x57, 0x69, 0x66, 0x69, 0x12, 0x6c, 0x0a, 0x18, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x77, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x66, 0x69, 0x2e, 0x57, 0x4c, 0x41, 0x4e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x16, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x57, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x54, 0x0a, 0x0a, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x63, 0x68, 0x69, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x66, 0x69, 0x2e, 0x57, 0x69, 0x66, 0x69, 0x43, 0x68, 0x69, 0x70, 0x52, 0x09, 0x77, 0x69, 0x66, 0x69, 0x43, 0x68, 0x69, 0x70, 0x73, 0x12, 0x42, 0x0a, 0x0b, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x69, 0x66, 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x77, 0x69, 0x66, 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0c, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x76, 0x70, 0x64, 0x5f, 0x73, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x66, 0x69, 0x56, 0x70, 0x64, 0x53, 0x61, 0x72, 0x22, 0x4e, 0x0a, 0x08, 0x57, 0x69, 0x66, 0x69, 0x43, 0x68, 0x69, 0x70, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x49, 0x46, 0x49, 0x5f, 0x43, 0x48, 0x49, 0x50, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x57, 0x49, 0x52, 0x45, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x38, 0x36, 0x45, 0x44, 0x38, 0x30, 0x31, 0x44, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x57, 0x49, 0x52, 0x45, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x54, 0x45, 0x4b, 0x10, 0x02, 0x1a, 0xb8, 0x02, 0x0a, 0x06, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x04, 0x65, 0x64, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x04, 0x65, 0x64, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x36, 0x0a, 0x06, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x10, 0x02, 0x22, 0x42, 0x0a, 0x04, 0x45, 0x64, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x44, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x4f, 0x50, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x10, 0x04, 0x1a, 0xb3, 0x0a, 0x0a, 0x12, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x6a, 0x0a, 0x07, 0x65, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x51, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x70, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x04, 0x70, 0x61, 0x72, 0x74, 0x12, 0x5b, 0x0a, 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x63, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x63, 0x43, 0x6d, 0x64, 0x12, 0x41, 0x0a, 0x03, 0x63, 0x62, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x03, 0x63, 0x62, 0x69, 0x12, 0x58, 0x0a, 0x0f, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x19, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x76, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x16, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x56, 0x32, 0x12, 0x63, 0x0a, 0x15, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x6e, 0x69, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x13, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x73, 0x50, 0x61, 0x6e, 0x69, 0x63, 0x12, 0x68, 0x0a, 0x18, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x15, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x70, 0x0a, 0x1c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x64, 0x75, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x19, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x44, 0x75, 0x6d, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x6e, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x49, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x5f, 0x6f, 0x64, 0x72, 0x5f, 0x6d, 0x68, 0x7a, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4f, 0x64, 0x72, 0x4d, 0x68, 0x7a, 0x1a, 0x6f, 0x0a, 0x10, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4a, 0x0a, 0x16, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x43, 0x5f, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x43, 0x5f, 0x57, 0x49, 0x4c, 0x43, 0x4f, 0x10, 0x02, 0x1a, 0x8e, 0x07, 0x0a, 0x15, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x72, 0x0a, 0x08, 0x74, 0x70, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x57, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x74, 0x70, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x60, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x77, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x77, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x7f, 0x0a, 0x13, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x70, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x70, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x70, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x6d, 0x0a, 0x0b, 0x67, 0x73, 0x63, 0x5f, 0x66, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x47, 0x73, 0x63, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x67, 0x73, 0x63, 0x46, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6b, 0x0a, 0x19, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x4e, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x61, 0x64, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x41, 0x64, 0x69, 0x64, 0x22, 0x5c, 0x0a, 0x19, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x48, 0x49, 0x52, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x53, 0x43, 0x5f, 0x48, 0x31, 0x42, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x53, 0x43, 0x5f, 0x48, 0x31, 0x44, 0x10, 0x03, 0x22, 0x57, 0x0a, 0x11, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x70, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x50, 0x4d, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x4d, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x31, 0x5f, 0x32, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x50, 0x4d, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x32, 0x10, 0x02, 0x22, 0x3b, 0x0a, 0x0f, 0x47, 0x73, 0x63, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x47, 0x53, 0x43, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x47, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x35, 0x30, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x47, 0x53, 0x43, 0x5f, 0x54, 0x49, 0x35, 0x30, 0x10, 0x02, 0x1a, 0x57, 0x0a, 0x0a, 0x48, 0x6f, 0x74, 0x77, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0xaf, 0x01, 0x0a, 0x07, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x48, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5a, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x03, 0x1a, 0x83, 0x02, 0x0a, 0x08, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x70, 0x61, 0x64, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x62, 0x0a, 0x0d, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x70, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x70, 0x61, 0x64, 0x2e, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x70, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x70, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x48, 0x0a, 0x0c, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x70, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x54, 0x41, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x1a, 0x61, 0x0a, 0x14, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0xf4, 0x06, 0x0a, 0x07, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x63, 0x68, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x39, 0x0a, 0x19, 0x6e, 0x6f, 0x5f, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x6e, 0x6f, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x1a, 0xe0, 0x02, 0x0a, 0x08, 0x4c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x4d, 0x69, 0x6e, 0x12, 0x45, 0x0a, 0x0e, 0x64, 0x65, 0x65, 0x70, 0x5f, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x65, 0x65, 0x70, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x4d, 0x69, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x47, 0x0a, 0x0f, 0x6c, 0x75, 0x63, 0x69, 0x64, 0x5f, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6c, 0x75, 0x63, 0x69, 0x64, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x4d, 0x69, 0x6e, 0x12, 0x3e, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x69, 0x6e, 0x1a, 0xd3, 0x01, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x40, 0x0a, 0x0b, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x45, 0x0a, 0x0e, 0x64, 0x65, 0x65, 0x70, 0x5f, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x65, 0x65, 0x70, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x4d, 0x61, 0x78, 0x1a, 0x5a, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0x88, 0x03, 0x0a, 0x03, 0x53, 0x6f, 0x63, 0x12, 0x48, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x6f, 0x63, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x6f, 0x63, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x61, 0x72, 0x63, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x73, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x61, 0x72, 0x63, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x73, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x52, 0x0a, 0x0c, 0x68, 0x65, 0x76, 0x63, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x68, 0x65, 0x76, 0x63, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x6d, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x50, 0x0a, 0x03, 0x48, 0x70, 0x73, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0x50, 0x0a, 0x03, 0x50, 0x6f, 0x45, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0x87, 0x01, 0x0a, 0x0b, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x4f, 0x0a, 0x0a, 0x62, 0x61, 0x72, 0x72, 0x65, 0x6c, 0x6a, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x62, 0x61, 0x72, 0x72, 0x65, 0x6c, 0x6a, 0x61, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x10, 0x75, 0x73, 0x62, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x5f, 0x77, 0x61, 0x74, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x75, 0x73, 0x62, 0x4d, 0x69, 0x6e, 0x41, 0x63, 0x57, 0x61, 0x74, 0x74, 0x73, 0x1a, 0x4d, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x1a, 0x55, 0x0a, 0x05, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x12, 0x4c, 0x0a, 0x13, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x5f, 0x73, 0x6c, 0x6f, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x53, 0x6c, 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x37, 0x0a, 0x07, 0x54, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x68, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x1a, 0xca, 0x01, 0x0a, 0x12, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x69, 0x0a, 0x18, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0xe5, 0x01, 0x0a, 0x04, 0x44, 0x67, 0x70, 0x75, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x09, 0x64, 0x67, 0x70, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x44, 0x67, 0x70, 0x75, 0x2e, 0x44, 0x67, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x67, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3e, 0x0a, 0x08, 0x44, 0x67, 0x70, 0x75, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x47, 0x50, 0x55, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x47, 0x50, 0x55, 0x5f, 0x4e, 0x56, 0x33, 0x30, 0x35, 0x30, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x47, 0x50, 0x55, 0x5f, 0x4e, 0x56, 0x34, 0x30, 0x35, 0x30, 0x10, 0x02, 0x1a, 0x50, 0x0a, 0x03, 0x55, 0x77, 0x62, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0x9d, 0x01, 0x0a, 0x0d, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x70, 0x75, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x70, 0x75, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x70, 0x75, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x6f, 0x63, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x70, 0x75, 0x53, 0x6f, 0x63, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x6d, 0x69, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6d, 0x69, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x8c, 0x01, 0x0a, 0x09, 0x4b, 0x62, 0x41, 0x6c, 0x73, 0x53, 0x74, 0x65, 0x70, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0d, 0x6c, 0x75, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x75, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x0c, 0x6c, 0x75, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x1a, 0xd0, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x65, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x63, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x62, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x62, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x32, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x32, 0x63, 0x50, 0x61, 0x74, 0x68, 0x1a, 0xb9, 0x01, 0x0a, 0x07, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x55, 0x0a, 0x0e, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x4d, 0x65, 0x6d, 0x12, 0x57, 0x0a, 0x0f, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x49, 0x64, 0x6c, 0x65, 0x1a, 0x50, 0x0a, 0x03, 0x56, 0x72, 0x72, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0x55, 0x0a, 0x08, 0x53, 0x64, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0x1d, 0x0a, 0x07, 0x4f, 0x45, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x40, 0x0a, 0x03, 0x46, 0x61, 0x6e, 0x12, 0x39, 0x0a, 0x09, 0x66, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x66, 0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x6b, 0x0a, 0x17, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x50, 0x0a, 0x0b, 0x6e, 0x6d, 0x69, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x6e, 0x6d, 0x69, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x1a, 0x59, 0x0a, 0x0c, 0x54, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0xbe, 0x01, 0x0a, 0x07, 0x43, 0x70, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5b, 0x0a, 0x0b, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x43, 0x70, 0x75, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x56, 0x0a, 0x0a, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x70, 0x75, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x70, 0x75, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x1a, 0x55, 0x0a, 0x08, 0x50, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x22, 0x3c, 0x0a, 0x07, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x22, 0xa4, 0x01, 0x0a, 0x0c, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x52, 0x4f, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x46, 0x52, 0x4f, 0x4e, 0x54, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x46, 0x52, 0x4f, 0x4e, 0x54, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x0a, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_chromiumos_config_api_topology_proto_rawDescOnce sync.Once file_chromiumos_config_api_topology_proto_rawDescData = file_chromiumos_config_api_topology_proto_rawDesc ) func file_chromiumos_config_api_topology_proto_rawDescGZIP() []byte { file_chromiumos_config_api_topology_proto_rawDescOnce.Do(func() { file_chromiumos_config_api_topology_proto_rawDescData = protoimpl.X.CompressGZIP(file_chromiumos_config_api_topology_proto_rawDescData) }) return file_chromiumos_config_api_topology_proto_rawDescData } var file_chromiumos_config_api_topology_proto_enumTypes = make([]protoimpl.EnumInfo, 33) var file_chromiumos_config_api_topology_proto_msgTypes = make([]protoimpl.MessageInfo, 73) var file_chromiumos_config_api_topology_proto_goTypes = []interface{}{ (Topology_Type)(0), // 0: chromiumos.config.api.Topology.Type (Duration_Type)(0), // 1: chromiumos.config.api.Duration.Type (HardwareFeatures_Present)(0), // 2: chromiumos.config.api.HardwareFeatures.Present (HardwareFeatures_PortPosition)(0), // 3: chromiumos.config.api.HardwareFeatures.PortPosition (HardwareFeatures_Cellular_CellularType)(0), // 4: chromiumos.config.api.HardwareFeatures.Cellular.CellularType (HardwareFeatures_Cellular_ModemType)(0), // 5: chromiumos.config.api.HardwareFeatures.Cellular.ModemType (HardwareFeatures_Audio_AudioCodec)(0), // 6: chromiumos.config.api.HardwareFeatures.Audio.AudioCodec (HardwareFeatures_Audio_Amplifier)(0), // 7: chromiumos.config.api.HardwareFeatures.Audio.Amplifier (HardwareFeatures_Audio_AudioConfigStructure)(0), // 8: chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure (HardwareFeatures_Camera_Interface)(0), // 9: chromiumos.config.api.HardwareFeatures.Camera.Interface (HardwareFeatures_Camera_Facing)(0), // 10: chromiumos.config.api.HardwareFeatures.Camera.Facing (HardwareFeatures_Camera_Orientation)(0), // 11: chromiumos.config.api.HardwareFeatures.Camera.Orientation (HardwareFeatures_Camera_Flags)(0), // 12: chromiumos.config.api.HardwareFeatures.Camera.Flags (HardwareFeatures_Screen_ConnectorType)(0), // 13: chromiumos.config.api.HardwareFeatures.Screen.ConnectorType (HardwareFeatures_FormFactor_FormFactorType)(0), // 14: chromiumos.config.api.HardwareFeatures.FormFactor.FormFactorType (HardwareFeatures_FormFactor_RecoveryInputType)(0), // 15: chromiumos.config.api.HardwareFeatures.FormFactor.RecoveryInputType (HardwareFeatures_Stylus_StylusType)(0), // 16: chromiumos.config.api.HardwareFeatures.Stylus.StylusType (HardwareFeatures_Keyboard_KeyboardType)(0), // 17: chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardType (HardwareFeatures_Keyboard_KeyboardMcuType)(0), // 18: chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardMcuType (HardwareFeatures_Keyboard_KeyboardBottomLeftLayout)(0), // 19: chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardBottomLeftLayout (HardwareFeatures_Keyboard_KeyboardBottomRightLayout)(0), // 20: chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardBottomRightLayout (HardwareFeatures_Keyboard_NumericPadLayout)(0), // 21: chromiumos.config.api.HardwareFeatures.Keyboard.NumericPadLayout (HardwareFeatures_Fingerprint_Location)(0), // 22: chromiumos.config.api.HardwareFeatures.Fingerprint.Location (HardwareFeatures_Wifi_WifiChip)(0), // 23: chromiumos.config.api.HardwareFeatures.Wifi.WifiChip (HardwareFeatures_Button_Region)(0), // 24: chromiumos.config.api.HardwareFeatures.Button.Region (HardwareFeatures_Button_Edge)(0), // 25: chromiumos.config.api.HardwareFeatures.Button.Edge (HardwareFeatures_EmbeddedController_EmbeddedControllerType)(0), // 26: chromiumos.config.api.HardwareFeatures.EmbeddedController.EmbeddedControllerType (HardwareFeatures_TrustedPlatformModule_TrustedPlatformModuleType)(0), // 27: chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.TrustedPlatformModuleType (HardwareFeatures_TrustedPlatformModule_RuntimeTpmVersion)(0), // 28: chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.RuntimeTpmVersion (HardwareFeatures_TrustedPlatformModule_GscFirmwareName)(0), // 29: chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.GscFirmwareName (HardwareFeatures_Display_Type)(0), // 30: chromiumos.config.api.HardwareFeatures.Display.Type (HardwareFeatures_Touchpad_TouchpadType)(0), // 31: chromiumos.config.api.HardwareFeatures.Touchpad.TouchpadType (HardwareFeatures_Dgpu_DgpuType)(0), // 32: chromiumos.config.api.HardwareFeatures.Dgpu.DgpuType (*Topology)(nil), // 33: chromiumos.config.api.Topology (*Duration)(nil), // 34: chromiumos.config.api.Duration (*HardwareFeatures)(nil), // 35: chromiumos.config.api.HardwareFeatures nil, // 36: chromiumos.config.api.Topology.DescriptionEntry (*HardwareFeatures_Count)(nil), // 37: chromiumos.config.api.HardwareFeatures.Count (*HardwareFeatures_UsbC)(nil), // 38: chromiumos.config.api.HardwareFeatures.UsbC (*HardwareFeatures_UsbA)(nil), // 39: chromiumos.config.api.HardwareFeatures.UsbA (*HardwareFeatures_Cellular)(nil), // 40: chromiumos.config.api.HardwareFeatures.Cellular (*HardwareFeatures_Hdmi)(nil), // 41: chromiumos.config.api.HardwareFeatures.Hdmi (*HardwareFeatures_FirmwareConfiguration)(nil), // 42: chromiumos.config.api.HardwareFeatures.FirmwareConfiguration (*HardwareFeatures_Audio)(nil), // 43: chromiumos.config.api.HardwareFeatures.Audio (*HardwareFeatures_Camera)(nil), // 44: chromiumos.config.api.HardwareFeatures.Camera (*HardwareFeatures_Accelerometer)(nil), // 45: chromiumos.config.api.HardwareFeatures.Accelerometer (*HardwareFeatures_Gyroscope)(nil), // 46: chromiumos.config.api.HardwareFeatures.Gyroscope (*HardwareFeatures_Magnetometer)(nil), // 47: chromiumos.config.api.HardwareFeatures.Magnetometer (*HardwareFeatures_LightSensor)(nil), // 48: chromiumos.config.api.HardwareFeatures.LightSensor (*HardwareFeatures_Screen)(nil), // 49: chromiumos.config.api.HardwareFeatures.Screen (*HardwareFeatures_FormFactor)(nil), // 50: chromiumos.config.api.HardwareFeatures.FormFactor (*HardwareFeatures_Stylus)(nil), // 51: chromiumos.config.api.HardwareFeatures.Stylus (*HardwareFeatures_Keyboard)(nil), // 52: chromiumos.config.api.HardwareFeatures.Keyboard (*HardwareFeatures_Memory)(nil), // 53: chromiumos.config.api.HardwareFeatures.Memory (*HardwareFeatures_Fingerprint)(nil), // 54: chromiumos.config.api.HardwareFeatures.Fingerprint (*HardwareFeatures_Storage)(nil), // 55: chromiumos.config.api.HardwareFeatures.Storage (*HardwareFeatures_Bluetooth)(nil), // 56: chromiumos.config.api.HardwareFeatures.Bluetooth (*HardwareFeatures_BarrelJack)(nil), // 57: chromiumos.config.api.HardwareFeatures.BarrelJack (*HardwareFeatures_Wifi)(nil), // 58: chromiumos.config.api.HardwareFeatures.Wifi (*HardwareFeatures_Button)(nil), // 59: chromiumos.config.api.HardwareFeatures.Button (*HardwareFeatures_EmbeddedController)(nil), // 60: chromiumos.config.api.HardwareFeatures.EmbeddedController (*HardwareFeatures_TrustedPlatformModule)(nil), // 61: chromiumos.config.api.HardwareFeatures.TrustedPlatformModule (*HardwareFeatures_Hotwording)(nil), // 62: chromiumos.config.api.HardwareFeatures.Hotwording (*HardwareFeatures_Display)(nil), // 63: chromiumos.config.api.HardwareFeatures.Display (*HardwareFeatures_Touchpad)(nil), // 64: chromiumos.config.api.HardwareFeatures.Touchpad (*HardwareFeatures_MicrophoneMuteSwitch)(nil), // 65: chromiumos.config.api.HardwareFeatures.MicrophoneMuteSwitch (*HardwareFeatures_Battery)(nil), // 66: chromiumos.config.api.HardwareFeatures.Battery (*HardwareFeatures_PrivacyScreen)(nil), // 67: chromiumos.config.api.HardwareFeatures.PrivacyScreen (*HardwareFeatures_Soc)(nil), // 68: chromiumos.config.api.HardwareFeatures.Soc (*HardwareFeatures_DisplayPortConverter)(nil), // 69: chromiumos.config.api.HardwareFeatures.DisplayPortConverter (*HardwareFeatures_Hps)(nil), // 70: chromiumos.config.api.HardwareFeatures.Hps (*HardwareFeatures_PoE)(nil), // 71: chromiumos.config.api.HardwareFeatures.PoE (*HardwareFeatures_PowerSupply)(nil), // 72: chromiumos.config.api.HardwareFeatures.PowerSupply (*HardwareFeatures_Proximity)(nil), // 73: chromiumos.config.api.HardwareFeatures.Proximity (*HardwareFeatures_Touch)(nil), // 74: chromiumos.config.api.HardwareFeatures.Touch (*HardwareFeatures_Thermal)(nil), // 75: chromiumos.config.api.HardwareFeatures.Thermal (*HardwareFeatures_RuntimeProbeConfig)(nil), // 76: chromiumos.config.api.HardwareFeatures.RuntimeProbeConfig (*HardwareFeatures_Dgpu)(nil), // 77: chromiumos.config.api.HardwareFeatures.Dgpu (*HardwareFeatures_Uwb)(nil), // 78: chromiumos.config.api.HardwareFeatures.Uwb (*HardwareFeatures_HardwareProbe)(nil), // 79: chromiumos.config.api.HardwareFeatures.HardwareProbe (*HardwareFeatures_KbAlsStep)(nil), // 80: chromiumos.config.api.HardwareFeatures.KbAlsStep (*HardwareFeatures_DetachableBase)(nil), // 81: chromiumos.config.api.HardwareFeatures.DetachableBase (*HardwareFeatures_Suspend)(nil), // 82: chromiumos.config.api.HardwareFeatures.Suspend (*HardwareFeatures_Vrr)(nil), // 83: chromiumos.config.api.HardwareFeatures.Vrr (*HardwareFeatures_SdReader)(nil), // 84: chromiumos.config.api.HardwareFeatures.SdReader (*HardwareFeatures_OEMInfo)(nil), // 85: chromiumos.config.api.HardwareFeatures.OEMInfo (*HardwareFeatures_Fan)(nil), // 86: chromiumos.config.api.HardwareFeatures.Fan (*HardwareFeatures_InterruptControllerInfo)(nil), // 87: chromiumos.config.api.HardwareFeatures.InterruptControllerInfo (*HardwareFeatures_TiledDisplay)(nil), // 88: chromiumos.config.api.HardwareFeatures.TiledDisplay (*HardwareFeatures_CpuInfo)(nil), // 89: chromiumos.config.api.HardwareFeatures.CpuInfo (*HardwareFeatures_Pendrive)(nil), // 90: chromiumos.config.api.HardwareFeatures.Pendrive (*HardwareFeatures_UsbC_Port)(nil), // 91: chromiumos.config.api.HardwareFeatures.UsbC.Port (*HardwareFeatures_Cellular_DynamicPowerReductionConfig)(nil), // 92: chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig nil, // 93: chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.PowerLevelMappingEntry nil, // 94: chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.RegulatoryDomainMappingEntry (*HardwareFeatures_Hdmi_Cec)(nil), // 95: chromiumos.config.api.HardwareFeatures.Hdmi.Cec (*HardwareFeatures_FirmwareConfiguration_SemVer)(nil), // 96: chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.SemVer (*HardwareFeatures_Audio_CardConfig)(nil), // 97: chromiumos.config.api.HardwareFeatures.Audio.CardConfig (*HardwareFeatures_Camera_Device)(nil), // 98: chromiumos.config.api.HardwareFeatures.Camera.Device (*HardwareFeatures_Fingerprint_FingerprintDiag)(nil), // 99: chromiumos.config.api.HardwareFeatures.Fingerprint.FingerprintDiag (*HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian)(nil), // 100: chromiumos.config.api.HardwareFeatures.Fingerprint.FingerprintDiag.PixelMedian (*HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone)(nil), // 101: chromiumos.config.api.HardwareFeatures.Fingerprint.FingerprintDiag.DetectZone nil, // 102: chromiumos.config.api.HardwareFeatures.EmbeddedController.BuildConfigEntry (*HardwareFeatures_Battery_Lifetime)(nil), // 103: chromiumos.config.api.HardwareFeatures.Battery.Lifetime (*HardwareFeatures_Battery_Charging)(nil), // 104: chromiumos.config.api.HardwareFeatures.Battery.Charging (*HardwareFeatures_CpuInfo_VendorInfo)(nil), // 105: chromiumos.config.api.HardwareFeatures.CpuInfo.VendorInfo (*Component_Amplifier)(nil), // 106: chromiumos.config.api.Component.Amplifier (*Component_DisplayPanel_Properties)(nil), // 107: chromiumos.config.api.Component.DisplayPanel.Properties (*wrapperspb.BoolValue)(nil), // 108: google.protobuf.BoolValue (*Component_Memory_Profile)(nil), // 109: chromiumos.config.api.Component.Memory.Profile (Component_Storage_StorageType)(0), // 110: chromiumos.config.api.Component.Storage.StorageType (*Component_Bluetooth)(nil), // 111: chromiumos.config.api.Component.Bluetooth (Component_Wifi_WLANProtocol)(0), // 112: chromiumos.config.api.Component.Wifi.WLANProtocol (*WifiConfig)(nil), // 113: chromiumos.config.api.WifiConfig (*Component_EmbeddedController)(nil), // 114: chromiumos.config.api.Component.EmbeddedController (*wrapperspb.UInt32Value)(nil), // 115: google.protobuf.UInt32Value (Component_Soc_Feature)(0), // 116: chromiumos.config.api.Component.Soc.Feature (Component_Soc_Vulnerability)(0), // 117: chromiumos.config.api.Component.Soc.Vulnerability (*ResourceConfig)(nil), // 118: chromiumos.config.api.ResourceConfig (*Component_DisplayPortConverter)(nil), // 119: chromiumos.config.api.Component.DisplayPortConverter (*ProximityConfig)(nil), // 120: chromiumos.config.api.ProximityConfig (*Component_LuxThreshold)(nil), // 121: chromiumos.config.api.Component.LuxThreshold (*wrapperspb.StringValue)(nil), // 122: google.protobuf.StringValue } var file_chromiumos_config_api_topology_proto_depIdxs = []int32{ 0, // 0: chromiumos.config.api.Topology.type:type_name -> chromiumos.config.api.Topology.Type 36, // 1: chromiumos.config.api.Topology.description:type_name -> chromiumos.config.api.Topology.DescriptionEntry 35, // 2: chromiumos.config.api.Topology.hardware_feature:type_name -> chromiumos.config.api.HardwareFeatures 1, // 3: chromiumos.config.api.Duration.type:type_name -> chromiumos.config.api.Duration.Type 38, // 4: chromiumos.config.api.HardwareFeatures.usb_c:type_name -> chromiumos.config.api.HardwareFeatures.UsbC 39, // 5: chromiumos.config.api.HardwareFeatures.usb_a:type_name -> chromiumos.config.api.HardwareFeatures.UsbA 40, // 6: chromiumos.config.api.HardwareFeatures.cellular:type_name -> chromiumos.config.api.HardwareFeatures.Cellular 41, // 7: chromiumos.config.api.HardwareFeatures.hdmi:type_name -> chromiumos.config.api.HardwareFeatures.Hdmi 42, // 8: chromiumos.config.api.HardwareFeatures.fw_config:type_name -> chromiumos.config.api.HardwareFeatures.FirmwareConfiguration 43, // 9: chromiumos.config.api.HardwareFeatures.audio:type_name -> chromiumos.config.api.HardwareFeatures.Audio 44, // 10: chromiumos.config.api.HardwareFeatures.camera:type_name -> chromiumos.config.api.HardwareFeatures.Camera 45, // 11: chromiumos.config.api.HardwareFeatures.accelerometer:type_name -> chromiumos.config.api.HardwareFeatures.Accelerometer 46, // 12: chromiumos.config.api.HardwareFeatures.gyroscope:type_name -> chromiumos.config.api.HardwareFeatures.Gyroscope 47, // 13: chromiumos.config.api.HardwareFeatures.magnetometer:type_name -> chromiumos.config.api.HardwareFeatures.Magnetometer 48, // 14: chromiumos.config.api.HardwareFeatures.light_sensor:type_name -> chromiumos.config.api.HardwareFeatures.LightSensor 49, // 15: chromiumos.config.api.HardwareFeatures.screen:type_name -> chromiumos.config.api.HardwareFeatures.Screen 50, // 16: chromiumos.config.api.HardwareFeatures.form_factor:type_name -> chromiumos.config.api.HardwareFeatures.FormFactor 51, // 17: chromiumos.config.api.HardwareFeatures.stylus:type_name -> chromiumos.config.api.HardwareFeatures.Stylus 52, // 18: chromiumos.config.api.HardwareFeatures.keyboard:type_name -> chromiumos.config.api.HardwareFeatures.Keyboard 53, // 19: chromiumos.config.api.HardwareFeatures.memory:type_name -> chromiumos.config.api.HardwareFeatures.Memory 54, // 20: chromiumos.config.api.HardwareFeatures.fingerprint:type_name -> chromiumos.config.api.HardwareFeatures.Fingerprint 55, // 21: chromiumos.config.api.HardwareFeatures.storage:type_name -> chromiumos.config.api.HardwareFeatures.Storage 56, // 22: chromiumos.config.api.HardwareFeatures.bluetooth:type_name -> chromiumos.config.api.HardwareFeatures.Bluetooth 57, // 23: chromiumos.config.api.HardwareFeatures.barreljack:type_name -> chromiumos.config.api.HardwareFeatures.BarrelJack 58, // 24: chromiumos.config.api.HardwareFeatures.wifi:type_name -> chromiumos.config.api.HardwareFeatures.Wifi 59, // 25: chromiumos.config.api.HardwareFeatures.power_button:type_name -> chromiumos.config.api.HardwareFeatures.Button 59, // 26: chromiumos.config.api.HardwareFeatures.volume_button:type_name -> chromiumos.config.api.HardwareFeatures.Button 60, // 27: chromiumos.config.api.HardwareFeatures.embedded_controller:type_name -> chromiumos.config.api.HardwareFeatures.EmbeddedController 61, // 28: chromiumos.config.api.HardwareFeatures.trusted_platform_module:type_name -> chromiumos.config.api.HardwareFeatures.TrustedPlatformModule 62, // 29: chromiumos.config.api.HardwareFeatures.hotwording:type_name -> chromiumos.config.api.HardwareFeatures.Hotwording 63, // 30: chromiumos.config.api.HardwareFeatures.display:type_name -> chromiumos.config.api.HardwareFeatures.Display 64, // 31: chromiumos.config.api.HardwareFeatures.touchpad:type_name -> chromiumos.config.api.HardwareFeatures.Touchpad 65, // 32: chromiumos.config.api.HardwareFeatures.microphone_mute_switch:type_name -> chromiumos.config.api.HardwareFeatures.MicrophoneMuteSwitch 66, // 33: chromiumos.config.api.HardwareFeatures.battery:type_name -> chromiumos.config.api.HardwareFeatures.Battery 67, // 34: chromiumos.config.api.HardwareFeatures.privacy_screen:type_name -> chromiumos.config.api.HardwareFeatures.PrivacyScreen 68, // 35: chromiumos.config.api.HardwareFeatures.soc:type_name -> chromiumos.config.api.HardwareFeatures.Soc 69, // 36: chromiumos.config.api.HardwareFeatures.dp_converter:type_name -> chromiumos.config.api.HardwareFeatures.DisplayPortConverter 70, // 37: chromiumos.config.api.HardwareFeatures.hps:type_name -> chromiumos.config.api.HardwareFeatures.Hps 71, // 38: chromiumos.config.api.HardwareFeatures.poe:type_name -> chromiumos.config.api.HardwareFeatures.PoE 72, // 39: chromiumos.config.api.HardwareFeatures.power_supply:type_name -> chromiumos.config.api.HardwareFeatures.PowerSupply 73, // 40: chromiumos.config.api.HardwareFeatures.proximity:type_name -> chromiumos.config.api.HardwareFeatures.Proximity 74, // 41: chromiumos.config.api.HardwareFeatures.touch:type_name -> chromiumos.config.api.HardwareFeatures.Touch 75, // 42: chromiumos.config.api.HardwareFeatures.thermal:type_name -> chromiumos.config.api.HardwareFeatures.Thermal 76, // 43: chromiumos.config.api.HardwareFeatures.runtime_probe_config:type_name -> chromiumos.config.api.HardwareFeatures.RuntimeProbeConfig 77, // 44: chromiumos.config.api.HardwareFeatures.dgpu_config:type_name -> chromiumos.config.api.HardwareFeatures.Dgpu 78, // 45: chromiumos.config.api.HardwareFeatures.uwb_config:type_name -> chromiumos.config.api.HardwareFeatures.Uwb 79, // 46: chromiumos.config.api.HardwareFeatures.hardware_probe_config:type_name -> chromiumos.config.api.HardwareFeatures.HardwareProbe 81, // 47: chromiumos.config.api.HardwareFeatures.detachable_base:type_name -> chromiumos.config.api.HardwareFeatures.DetachableBase 82, // 48: chromiumos.config.api.HardwareFeatures.suspend:type_name -> chromiumos.config.api.HardwareFeatures.Suspend 83, // 49: chromiumos.config.api.HardwareFeatures.vrr:type_name -> chromiumos.config.api.HardwareFeatures.Vrr 84, // 50: chromiumos.config.api.HardwareFeatures.sd_reader:type_name -> chromiumos.config.api.HardwareFeatures.SdReader 85, // 51: chromiumos.config.api.HardwareFeatures.oem_info:type_name -> chromiumos.config.api.HardwareFeatures.OEMInfo 86, // 52: chromiumos.config.api.HardwareFeatures.fan:type_name -> chromiumos.config.api.HardwareFeatures.Fan 87, // 53: chromiumos.config.api.HardwareFeatures.interrupt_controller_info:type_name -> chromiumos.config.api.HardwareFeatures.InterruptControllerInfo 88, // 54: chromiumos.config.api.HardwareFeatures.tiled_display:type_name -> chromiumos.config.api.HardwareFeatures.TiledDisplay 89, // 55: chromiumos.config.api.HardwareFeatures.cpu_info:type_name -> chromiumos.config.api.HardwareFeatures.CpuInfo 90, // 56: chromiumos.config.api.HardwareFeatures.pendrive:type_name -> chromiumos.config.api.HardwareFeatures.Pendrive 37, // 57: chromiumos.config.api.HardwareFeatures.UsbC.count:type_name -> chromiumos.config.api.HardwareFeatures.Count 91, // 58: chromiumos.config.api.HardwareFeatures.UsbC.ports:type_name -> chromiumos.config.api.HardwareFeatures.UsbC.Port 37, // 59: chromiumos.config.api.HardwareFeatures.UsbA.count:type_name -> chromiumos.config.api.HardwareFeatures.Count 2, // 60: chromiumos.config.api.HardwareFeatures.Cellular.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 4, // 61: chromiumos.config.api.HardwareFeatures.Cellular.type:type_name -> chromiumos.config.api.HardwareFeatures.Cellular.CellularType 92, // 62: chromiumos.config.api.HardwareFeatures.Cellular.dynamic_power_reduction_config:type_name -> chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig 5, // 63: chromiumos.config.api.HardwareFeatures.Cellular.modem_type:type_name -> chromiumos.config.api.HardwareFeatures.Cellular.ModemType 2, // 64: chromiumos.config.api.HardwareFeatures.Hdmi.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 95, // 65: chromiumos.config.api.HardwareFeatures.Hdmi.cec:type_name -> chromiumos.config.api.HardwareFeatures.Hdmi.Cec 2, // 66: chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.vboot_cbfs_integration:type_name -> chromiumos.config.api.HardwareFeatures.Present 96, // 67: chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.fw_ro_version:type_name -> chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.SemVer 2, // 68: chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.intel_ish:type_name -> chromiumos.config.api.HardwareFeatures.Present 96, // 69: chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.fw_rw_version:type_name -> chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.SemVer 2, // 70: chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.bmp_logo:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 71: chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.fw_splash_screen:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 72: chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.late_cse_sync:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 73: chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.has_recovery_mrc_cache:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 74: chromiumos.config.api.HardwareFeatures.FirmwareConfiguration.mainboard_has_early_sign_of_life:type_name -> chromiumos.config.api.HardwareFeatures.Present 6, // 75: chromiumos.config.api.HardwareFeatures.Audio.audio_codec:type_name -> chromiumos.config.api.HardwareFeatures.Audio.AudioCodec 7, // 76: chromiumos.config.api.HardwareFeatures.Audio.speaker_amp:type_name -> chromiumos.config.api.HardwareFeatures.Audio.Amplifier 6, // 77: chromiumos.config.api.HardwareFeatures.Audio.headphone_codec:type_name -> chromiumos.config.api.HardwareFeatures.Audio.AudioCodec 37, // 78: chromiumos.config.api.HardwareFeatures.Audio.lid_microphone:type_name -> chromiumos.config.api.HardwareFeatures.Count 37, // 79: chromiumos.config.api.HardwareFeatures.Audio.base_microphone:type_name -> chromiumos.config.api.HardwareFeatures.Count 106, // 80: chromiumos.config.api.HardwareFeatures.Audio.speaker_amplifier:type_name -> chromiumos.config.api.Component.Amplifier 97, // 81: chromiumos.config.api.HardwareFeatures.Audio.card_configs:type_name -> chromiumos.config.api.HardwareFeatures.Audio.CardConfig 8, // 82: chromiumos.config.api.HardwareFeatures.Audio.cras_config:type_name -> chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure 2, // 83: chromiumos.config.api.HardwareFeatures.Audio.sof_audio_dsp:type_name -> chromiumos.config.api.HardwareFeatures.Present 98, // 84: chromiumos.config.api.HardwareFeatures.Camera.devices:type_name -> chromiumos.config.api.HardwareFeatures.Camera.Device 2, // 85: chromiumos.config.api.HardwareFeatures.Accelerometer.lid_accelerometer:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 86: chromiumos.config.api.HardwareFeatures.Accelerometer.base_accelerometer:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 87: chromiumos.config.api.HardwareFeatures.Gyroscope.lid_gyroscope:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 88: chromiumos.config.api.HardwareFeatures.Gyroscope.base_gyroscope:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 89: chromiumos.config.api.HardwareFeatures.Magnetometer.lid_magnetometer:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 90: chromiumos.config.api.HardwareFeatures.Magnetometer.base_magnetometer:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 91: chromiumos.config.api.HardwareFeatures.LightSensor.lid_lightsensor:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 92: chromiumos.config.api.HardwareFeatures.LightSensor.base_lightsensor:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 93: chromiumos.config.api.HardwareFeatures.LightSensor.camera_lightsensor:type_name -> chromiumos.config.api.HardwareFeatures.Present 13, // 94: chromiumos.config.api.HardwareFeatures.Screen.connector_type:type_name -> chromiumos.config.api.HardwareFeatures.Screen.ConnectorType 107, // 95: chromiumos.config.api.HardwareFeatures.Screen.panel_properties:type_name -> chromiumos.config.api.Component.DisplayPanel.Properties 2, // 96: chromiumos.config.api.HardwareFeatures.Screen.touch_support:type_name -> chromiumos.config.api.HardwareFeatures.Present 14, // 97: chromiumos.config.api.HardwareFeatures.FormFactor.form_factor:type_name -> chromiumos.config.api.HardwareFeatures.FormFactor.FormFactorType 15, // 98: chromiumos.config.api.HardwareFeatures.FormFactor.recovery_input:type_name -> chromiumos.config.api.HardwareFeatures.FormFactor.RecoveryInputType 108, // 99: chromiumos.config.api.HardwareFeatures.FormFactor.detachable_ui:type_name -> google.protobuf.BoolValue 16, // 100: chromiumos.config.api.HardwareFeatures.Stylus.stylus:type_name -> chromiumos.config.api.HardwareFeatures.Stylus.StylusType 17, // 101: chromiumos.config.api.HardwareFeatures.Keyboard.keyboard_type:type_name -> chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardType 2, // 102: chromiumos.config.api.HardwareFeatures.Keyboard.backlight:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 103: chromiumos.config.api.HardwareFeatures.Keyboard.power_button:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 104: chromiumos.config.api.HardwareFeatures.Keyboard.numeric_pad:type_name -> chromiumos.config.api.HardwareFeatures.Present 18, // 105: chromiumos.config.api.HardwareFeatures.Keyboard.mcu_type:type_name -> chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardMcuType 80, // 106: chromiumos.config.api.HardwareFeatures.Keyboard.als_steps:type_name -> chromiumos.config.api.HardwareFeatures.KbAlsStep 19, // 107: chromiumos.config.api.HardwareFeatures.Keyboard.bottom_left_layout:type_name -> chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardBottomLeftLayout 20, // 108: chromiumos.config.api.HardwareFeatures.Keyboard.bottom_right_layout:type_name -> chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardBottomRightLayout 21, // 109: chromiumos.config.api.HardwareFeatures.Keyboard.numeric_pad_layout:type_name -> chromiumos.config.api.HardwareFeatures.Keyboard.NumericPadLayout 109, // 110: chromiumos.config.api.HardwareFeatures.Memory.profile:type_name -> chromiumos.config.api.Component.Memory.Profile 22, // 111: chromiumos.config.api.HardwareFeatures.Fingerprint.location:type_name -> chromiumos.config.api.HardwareFeatures.Fingerprint.Location 99, // 112: chromiumos.config.api.HardwareFeatures.Fingerprint.fingerprint_diag:type_name -> chromiumos.config.api.HardwareFeatures.Fingerprint.FingerprintDiag 110, // 113: chromiumos.config.api.HardwareFeatures.Storage.storage_type:type_name -> chromiumos.config.api.Component.Storage.StorageType 111, // 114: chromiumos.config.api.HardwareFeatures.Bluetooth.component:type_name -> chromiumos.config.api.Component.Bluetooth 2, // 115: chromiumos.config.api.HardwareFeatures.Bluetooth.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 116: chromiumos.config.api.HardwareFeatures.BarrelJack.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 112, // 117: chromiumos.config.api.HardwareFeatures.Wifi.supported_wlan_protocols:type_name -> chromiumos.config.api.Component.Wifi.WLANProtocol 23, // 118: chromiumos.config.api.HardwareFeatures.Wifi.wifi_chips:type_name -> chromiumos.config.api.HardwareFeatures.Wifi.WifiChip 113, // 119: chromiumos.config.api.HardwareFeatures.Wifi.wifi_config:type_name -> chromiumos.config.api.WifiConfig 24, // 120: chromiumos.config.api.HardwareFeatures.Button.region:type_name -> chromiumos.config.api.HardwareFeatures.Button.Region 25, // 121: chromiumos.config.api.HardwareFeatures.Button.edge:type_name -> chromiumos.config.api.HardwareFeatures.Button.Edge 2, // 122: chromiumos.config.api.HardwareFeatures.EmbeddedController.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 26, // 123: chromiumos.config.api.HardwareFeatures.EmbeddedController.ec_type:type_name -> chromiumos.config.api.HardwareFeatures.EmbeddedController.EmbeddedControllerType 114, // 124: chromiumos.config.api.HardwareFeatures.EmbeddedController.part:type_name -> chromiumos.config.api.Component.EmbeddedController 2, // 125: chromiumos.config.api.HardwareFeatures.EmbeddedController.feature_typec_cmd:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 126: chromiumos.config.api.HardwareFeatures.EmbeddedController.cbi:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 127: chromiumos.config.api.HardwareFeatures.EmbeddedController.detachable_base:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 128: chromiumos.config.api.HardwareFeatures.EmbeddedController.feature_charge_control_v2:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 129: chromiumos.config.api.HardwareFeatures.EmbeddedController.feature_asserts_panic:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 130: chromiumos.config.api.HardwareFeatures.EmbeddedController.feature_system_safe_mode:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 131: chromiumos.config.api.HardwareFeatures.EmbeddedController.feature_memory_dump_commands:type_name -> chromiumos.config.api.HardwareFeatures.Present 102, // 132: chromiumos.config.api.HardwareFeatures.EmbeddedController.build_config:type_name -> chromiumos.config.api.HardwareFeatures.EmbeddedController.BuildConfigEntry 115, // 133: chromiumos.config.api.HardwareFeatures.EmbeddedController.max_sensor_odr_mhz:type_name -> google.protobuf.UInt32Value 27, // 134: chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.tpm_type:type_name -> chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.TrustedPlatformModuleType 2, // 135: chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.production_rw_key_id:type_name -> chromiumos.config.api.HardwareFeatures.Present 28, // 136: chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.runtime_tpm_version:type_name -> chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.RuntimeTpmVersion 29, // 137: chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.gsc_fw_name:type_name -> chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.GscFirmwareName 2, // 138: chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.enterprise_rollback_space:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 139: chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.valid_adid:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 140: chromiumos.config.api.HardwareFeatures.Hotwording.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 30, // 141: chromiumos.config.api.HardwareFeatures.Display.type:type_name -> chromiumos.config.api.HardwareFeatures.Display.Type 2, // 142: chromiumos.config.api.HardwareFeatures.Touchpad.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 31, // 143: chromiumos.config.api.HardwareFeatures.Touchpad.touchpad_type:type_name -> chromiumos.config.api.HardwareFeatures.Touchpad.TouchpadType 2, // 144: chromiumos.config.api.HardwareFeatures.MicrophoneMuteSwitch.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 145: chromiumos.config.api.HardwareFeatures.Battery.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 103, // 146: chromiumos.config.api.HardwareFeatures.Battery.lifetime:type_name -> chromiumos.config.api.HardwareFeatures.Battery.Lifetime 104, // 147: chromiumos.config.api.HardwareFeatures.Battery.charging:type_name -> chromiumos.config.api.HardwareFeatures.Battery.Charging 2, // 148: chromiumos.config.api.HardwareFeatures.PrivacyScreen.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 116, // 149: chromiumos.config.api.HardwareFeatures.Soc.features:type_name -> chromiumos.config.api.Component.Soc.Feature 117, // 150: chromiumos.config.api.HardwareFeatures.Soc.vulnerabilities:type_name -> chromiumos.config.api.Component.Soc.Vulnerability 2, // 151: chromiumos.config.api.HardwareFeatures.Soc.hevc_support:type_name -> chromiumos.config.api.HardwareFeatures.Present 118, // 152: chromiumos.config.api.HardwareFeatures.Soc.resource_config:type_name -> chromiumos.config.api.ResourceConfig 119, // 153: chromiumos.config.api.HardwareFeatures.DisplayPortConverter.converters:type_name -> chromiumos.config.api.Component.DisplayPortConverter 2, // 154: chromiumos.config.api.HardwareFeatures.Hps.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 155: chromiumos.config.api.HardwareFeatures.PoE.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 156: chromiumos.config.api.HardwareFeatures.PowerSupply.barreljack:type_name -> chromiumos.config.api.HardwareFeatures.Present 120, // 157: chromiumos.config.api.HardwareFeatures.Proximity.configs:type_name -> chromiumos.config.api.ProximityConfig 115, // 158: chromiumos.config.api.HardwareFeatures.Touch.touch_slop_distance:type_name -> google.protobuf.UInt32Value 2, // 159: chromiumos.config.api.HardwareFeatures.RuntimeProbeConfig.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 160: chromiumos.config.api.HardwareFeatures.RuntimeProbeConfig.encrypted_config_present:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 161: chromiumos.config.api.HardwareFeatures.Dgpu.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 32, // 162: chromiumos.config.api.HardwareFeatures.Dgpu.dgpu_type:type_name -> chromiumos.config.api.HardwareFeatures.Dgpu.DgpuType 2, // 163: chromiumos.config.api.HardwareFeatures.Uwb.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 121, // 164: chromiumos.config.api.HardwareFeatures.KbAlsStep.lux_threshold:type_name -> chromiumos.config.api.Component.LuxThreshold 2, // 165: chromiumos.config.api.HardwareFeatures.Suspend.suspend_to_mem:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 166: chromiumos.config.api.HardwareFeatures.Suspend.suspend_to_idle:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 167: chromiumos.config.api.HardwareFeatures.Vrr.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 168: chromiumos.config.api.HardwareFeatures.SdReader.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 115, // 169: chromiumos.config.api.HardwareFeatures.Fan.fan_count:type_name -> google.protobuf.UInt32Value 2, // 170: chromiumos.config.api.HardwareFeatures.InterruptControllerInfo.nmi_support:type_name -> chromiumos.config.api.HardwareFeatures.Present 2, // 171: chromiumos.config.api.HardwareFeatures.TiledDisplay.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 105, // 172: chromiumos.config.api.HardwareFeatures.CpuInfo.vendor_info:type_name -> chromiumos.config.api.HardwareFeatures.CpuInfo.VendorInfo 2, // 173: chromiumos.config.api.HardwareFeatures.Pendrive.present:type_name -> chromiumos.config.api.HardwareFeatures.Present 3, // 174: chromiumos.config.api.HardwareFeatures.UsbC.Port.position:type_name -> chromiumos.config.api.HardwareFeatures.PortPosition 115, // 175: chromiumos.config.api.HardwareFeatures.UsbC.Port.index_override:type_name -> google.protobuf.UInt32Value 93, // 176: chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.power_level_mapping:type_name -> chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.PowerLevelMappingEntry 94, // 177: chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.regulatory_domain_mapping:type_name -> chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.RegulatoryDomainMappingEntry 122, // 178: chromiumos.config.api.HardwareFeatures.Audio.CardConfig.ucm_suffix:type_name -> google.protobuf.StringValue 8, // 179: chromiumos.config.api.HardwareFeatures.Audio.CardConfig.ucm_config:type_name -> chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure 8, // 180: chromiumos.config.api.HardwareFeatures.Audio.CardConfig.cras_config:type_name -> chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure 8, // 181: chromiumos.config.api.HardwareFeatures.Audio.CardConfig.sound_card_init_config:type_name -> chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure 122, // 182: chromiumos.config.api.HardwareFeatures.Audio.CardConfig.cras_suffix:type_name -> google.protobuf.StringValue 9, // 183: chromiumos.config.api.HardwareFeatures.Camera.Device.interface:type_name -> chromiumos.config.api.HardwareFeatures.Camera.Interface 10, // 184: chromiumos.config.api.HardwareFeatures.Camera.Device.facing:type_name -> chromiumos.config.api.HardwareFeatures.Camera.Facing 11, // 185: chromiumos.config.api.HardwareFeatures.Camera.Device.orientation:type_name -> chromiumos.config.api.HardwareFeatures.Camera.Orientation 2, // 186: chromiumos.config.api.HardwareFeatures.Camera.Device.privacy_switch:type_name -> chromiumos.config.api.HardwareFeatures.Present 37, // 187: chromiumos.config.api.HardwareFeatures.Camera.Device.microphone_count:type_name -> chromiumos.config.api.HardwareFeatures.Count 100, // 188: chromiumos.config.api.HardwareFeatures.Fingerprint.FingerprintDiag.pixel_median:type_name -> chromiumos.config.api.HardwareFeatures.Fingerprint.FingerprintDiag.PixelMedian 101, // 189: chromiumos.config.api.HardwareFeatures.Fingerprint.FingerprintDiag.detect_zones:type_name -> chromiumos.config.api.HardwareFeatures.Fingerprint.FingerprintDiag.DetectZone 2, // 190: chromiumos.config.api.HardwareFeatures.EmbeddedController.BuildConfigEntry.value:type_name -> chromiumos.config.api.HardwareFeatures.Present 34, // 191: chromiumos.config.api.HardwareFeatures.Battery.Lifetime.shipping_min:type_name -> chromiumos.config.api.Duration 34, // 192: chromiumos.config.api.HardwareFeatures.Battery.Lifetime.deep_sleep_min:type_name -> chromiumos.config.api.Duration 34, // 193: chromiumos.config.api.HardwareFeatures.Battery.Lifetime.suspend_min:type_name -> chromiumos.config.api.Duration 34, // 194: chromiumos.config.api.HardwareFeatures.Battery.Lifetime.lucid_sleep_min:type_name -> chromiumos.config.api.Duration 34, // 195: chromiumos.config.api.HardwareFeatures.Battery.Lifetime.active_min:type_name -> chromiumos.config.api.Duration 34, // 196: chromiumos.config.api.HardwareFeatures.Battery.Charging.active_max:type_name -> chromiumos.config.api.Duration 34, // 197: chromiumos.config.api.HardwareFeatures.Battery.Charging.suspend_max:type_name -> chromiumos.config.api.Duration 34, // 198: chromiumos.config.api.HardwareFeatures.Battery.Charging.deep_sleep_max:type_name -> chromiumos.config.api.Duration 199, // [199:199] is the sub-list for method output_type 199, // [199:199] is the sub-list for method input_type 199, // [199:199] is the sub-list for extension type_name 199, // [199:199] is the sub-list for extension extendee 0, // [0:199] is the sub-list for field type_name } func init() { file_chromiumos_config_api_topology_proto_init() } func file_chromiumos_config_api_topology_proto_init() { if File_chromiumos_config_api_topology_proto != nil { return } file_chromiumos_config_api_component_proto_init() file_chromiumos_config_api_proximity_config_proto_init() file_chromiumos_config_api_resource_config_proto_init() file_chromiumos_config_api_wifi_config_proto_init() if !protoimpl.UnsafeEnabled { file_chromiumos_config_api_topology_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Topology); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Duration); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Count); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_UsbC); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_UsbA); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Cellular); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Hdmi); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_FirmwareConfiguration); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Audio); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Camera); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Accelerometer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Gyroscope); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Magnetometer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_LightSensor); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Screen); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_FormFactor); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Stylus); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Keyboard); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Memory); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Fingerprint); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Storage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Bluetooth); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_BarrelJack); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Wifi); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Button); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_EmbeddedController); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_TrustedPlatformModule); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Hotwording); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Display); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Touchpad); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_MicrophoneMuteSwitch); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Battery); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_PrivacyScreen); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Soc); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_DisplayPortConverter); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Hps); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_PoE); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_PowerSupply); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Proximity); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Touch); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Thermal); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_RuntimeProbeConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Dgpu); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Uwb); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_HardwareProbe); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_KbAlsStep); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_DetachableBase); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Suspend); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Vrr); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_SdReader); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_OEMInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Fan); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_InterruptControllerInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_TiledDisplay); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_CpuInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Pendrive); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_UsbC_Port); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Cellular_DynamicPowerReductionConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Hdmi_Cec); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_FirmwareConfiguration_SemVer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Audio_CardConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Camera_Device); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Fingerprint_FingerprintDiag); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Fingerprint_FingerprintDiag_PixelMedian); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Fingerprint_FingerprintDiag_DetectZone); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Battery_Lifetime); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_Battery_Charging); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chromiumos_config_api_topology_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HardwareFeatures_CpuInfo_VendorInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_chromiumos_config_api_topology_proto_msgTypes[59].OneofWrappers = []interface{}{ (*HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio)(nil), (*HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_chromiumos_config_api_topology_proto_rawDesc, NumEnums: 33, NumMessages: 73, NumExtensions: 0, NumServices: 0, }, GoTypes: file_chromiumos_config_api_topology_proto_goTypes, DependencyIndexes: file_chromiumos_config_api_topology_proto_depIdxs, EnumInfos: file_chromiumos_config_api_topology_proto_enumTypes, MessageInfos: file_chromiumos_config_api_topology_proto_msgTypes, }.Build() File_chromiumos_config_api_topology_proto = out.File file_chromiumos_config_api_topology_proto_rawDesc = nil file_chromiumos_config_api_topology_proto_goTypes = nil file_chromiumos_config_api_topology_proto_depIdxs = nil }