Generate cellular transmit power prefs from cellular and proximity sensor.
Add a proximity sensor topology for the existing proximity sensor
hardware topology, containing no fields, just representing the presence
of a proximity sensor (all existing proximity sensor topologies
represent sensor presence), allowing software config generation to
incorporate that information. Add an optional cellular field for dynamic
power reduction config, either with a GPIO or a setting to use modem
manager, as well as an optional bool for whether tablet mode should feed
into cellular power reduction decisions, defaulting to true for
convertibles and ignored for form factors not supporting tablet mode.
If a cellular topology has a dynamic power reduction config, generate
relevant prefs: enable set-cellular-transmit-power-for-proximity if a
proximity sensor is present; enable
set-cellular-transmit-power-for-tablet-mode if requested or defaulted to
true. If either of those prefs is enabled (and thus some form of
cellular dynamic power reduction is enabled), use the configured GPIO if
one is specified for set-cellular-transmit-power-dpr-gpio; otherwise,
enable use-modemmanager-for-dynamic-sar.
BUG=b:196188522
TEST=./run_py_unittests.sh
Cq-Depend: chrome-internal:4661918,chrome-internal:4662213,chrome-internal:4662233,chrome-internal:4662253
Cq-Depend: chrome-internal:4662214
Change-Id: I20445e1ff35c9dec54308c604059b195331c5d8d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/config/+/3161898
Reviewed-by: Andrew Lamb <andrewlamb@chromium.org>
Reviewed-by: Madhav <madhavadas@google.com>
Reviewed-by: Victor Ding <victording@chromium.org>
Commit-Queue: Sam McNally <sammc@chromium.org>
diff --git a/generated/descriptors.json b/generated/descriptors.json
index 3d1e181..6f5e7de 100644
--- a/generated/descriptors.json
+++ b/generated/descriptors.json
@@ -2674,6 +2674,14 @@
"number": 36,
"type": "TYPE_MESSAGE",
"typeName": ".chromiumos.config.api.HardwareFeatures.PowerSupply"
+ },
+ {
+ "jsonName": "proximity",
+ "label": "LABEL_OPTIONAL",
+ "name": "proximity",
+ "number": 37,
+ "type": "TYPE_MESSAGE",
+ "typeName": ".chromiumos.config.api.HardwareFeatures.Proximity"
}
],
"name": "HardwareFeatures",
@@ -2797,9 +2805,53 @@
"name": "attach_apn_required",
"number": 4,
"type": "TYPE_BOOL"
+ },
+ {
+ "jsonName": "dynamicPowerReductionConfig",
+ "label": "LABEL_OPTIONAL",
+ "name": "dynamic_power_reduction_config",
+ "number": 5,
+ "type": "TYPE_MESSAGE",
+ "typeName": ".chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig"
}
],
- "name": "Cellular"
+ "name": "Cellular",
+ "nestedType": [
+ {
+ "field": [
+ {
+ "jsonName": "gpio",
+ "label": "LABEL_OPTIONAL",
+ "name": "gpio",
+ "number": 1,
+ "oneofIndex": 0,
+ "type": "TYPE_UINT32"
+ },
+ {
+ "jsonName": "modemManager",
+ "label": "LABEL_OPTIONAL",
+ "name": "modem_manager",
+ "number": 2,
+ "oneofIndex": 0,
+ "type": "TYPE_BOOL"
+ },
+ {
+ "jsonName": "tabletMode",
+ "label": "LABEL_OPTIONAL",
+ "name": "tablet_mode",
+ "number": 3,
+ "type": "TYPE_MESSAGE",
+ "typeName": ".google.protobuf.BoolValue"
+ }
+ ],
+ "name": "DynamicPowerReductionConfig",
+ "oneofDecl": [
+ {
+ "name": "dynamic_power_reduction_config"
+ }
+ ]
+ }
+ ]
},
{
"field": [
@@ -4100,6 +4152,9 @@
}
],
"name": "PowerSupply"
+ },
+ {
+ "name": "Proximity"
}
]
}
diff --git a/go/api/topology.pb.go b/go/api/topology.pb.go
index 627d99c..408e102 100644
--- a/go/api/topology.pb.go
+++ b/go/api/topology.pb.go
@@ -1021,7 +1021,7 @@
// 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: 31
+// NEXT TAG: 38
type HardwareFeatures struct {
// USB-C properties
UsbC *HardwareFeatures_UsbC `protobuf:"bytes,1,opt,name=usb_c,json=usbC,proto3" json:"usb_c,omitempty"`
@@ -1083,6 +1083,7 @@
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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -1365,6 +1366,13 @@
return nil
}
+func (m *HardwareFeatures) GetProximity() *HardwareFeatures_Proximity {
+ if m != nil {
+ return m.Proximity
+ }
+ return nil
+}
+
type HardwareFeatures_Count struct {
Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -1554,10 +1562,12 @@
// 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.
- AttachApnRequired bool `protobuf:"varint,4,opt,name=attach_apn_required,json=attachApnRequired,proto3" json:"attach_apn_required,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+ 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"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
func (m *HardwareFeatures_Cellular) Reset() { *m = HardwareFeatures_Cellular{} }
@@ -1613,6 +1623,109 @@
return false
}
+func (m *HardwareFeatures_Cellular) GetDynamicPowerReductionConfig() *HardwareFeatures_Cellular_DynamicPowerReductionConfig {
+ if m != nil {
+ return m.DynamicPowerReductionConfig
+ }
+ return nil
+}
+
+type HardwareFeatures_Cellular_DynamicPowerReductionConfig struct {
+ // Types that are valid to be assigned 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.
+ // If unset, the value will be true for convertibles.
+ TabletMode *wrappers.BoolValue `protobuf:"bytes,3,opt,name=tablet_mode,json=tabletMode,proto3" json:"tablet_mode,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) Reset() {
+ *m = HardwareFeatures_Cellular_DynamicPowerReductionConfig{}
+}
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) String() string {
+ return proto.CompactTextString(m)
+}
+func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig) ProtoMessage() {}
+func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_9bdbf9c393c85c5f, []int{2, 3, 0}
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig.Unmarshal(m, b)
+}
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig.Marshal(b, m, deterministic)
+}
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig.Merge(m, src)
+}
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_Size() int {
+ return xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig.Size(m)
+}
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig proto.InternalMessageInfo
+
+type isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig interface {
+ isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig()
+}
+
+type HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio struct {
+ Gpio uint32 `protobuf:"varint,1,opt,name=gpio,proto3,oneof"`
+}
+
+type HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager struct {
+ 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() {
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetDynamicPowerReductionConfig() isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig {
+ if m != nil {
+ return m.DynamicPowerReductionConfig
+ }
+ return nil
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetGpio() uint32 {
+ if x, ok := m.GetDynamicPowerReductionConfig().(*HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio); ok {
+ return x.Gpio
+ }
+ return 0
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetModemManager() bool {
+ if x, ok := m.GetDynamicPowerReductionConfig().(*HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager); ok {
+ return x.ModemManager
+ }
+ return false
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetTabletMode() *wrappers.BoolValue {
+ if m != nil {
+ return m.TabletMode
+ }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio)(nil),
+ (*HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager)(nil),
+ }
+}
+
type HardwareFeatures_Hdmi struct {
// 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"`
@@ -3488,6 +3601,37 @@
return 0
}
+type HardwareFeatures_Proximity struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *HardwareFeatures_Proximity) Reset() { *m = HardwareFeatures_Proximity{} }
+func (m *HardwareFeatures_Proximity) String() string { return proto.CompactTextString(m) }
+func (*HardwareFeatures_Proximity) ProtoMessage() {}
+func (*HardwareFeatures_Proximity) Descriptor() ([]byte, []int) {
+ return fileDescriptor_9bdbf9c393c85c5f, []int{2, 36}
+}
+
+func (m *HardwareFeatures_Proximity) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_HardwareFeatures_Proximity.Unmarshal(m, b)
+}
+func (m *HardwareFeatures_Proximity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_HardwareFeatures_Proximity.Marshal(b, m, deterministic)
+}
+func (m *HardwareFeatures_Proximity) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_HardwareFeatures_Proximity.Merge(m, src)
+}
+func (m *HardwareFeatures_Proximity) XXX_Size() int {
+ return xxx_messageInfo_HardwareFeatures_Proximity.Size(m)
+}
+func (m *HardwareFeatures_Proximity) XXX_DiscardUnknown() {
+ xxx_messageInfo_HardwareFeatures_Proximity.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_HardwareFeatures_Proximity proto.InternalMessageInfo
+
func init() {
proto.RegisterEnum("chromiumos.config.api.Topology_Type", Topology_Type_name, Topology_Type_value)
proto.RegisterEnum("chromiumos.config.api.Duration_Type", Duration_Type_name, Duration_Type_value)
@@ -3520,6 +3664,7 @@
proto.RegisterType((*HardwareFeatures_UsbC_Port)(nil), "chromiumos.config.api.HardwareFeatures.UsbC.Port")
proto.RegisterType((*HardwareFeatures_UsbA)(nil), "chromiumos.config.api.HardwareFeatures.UsbA")
proto.RegisterType((*HardwareFeatures_Cellular)(nil), "chromiumos.config.api.HardwareFeatures.Cellular")
+ proto.RegisterType((*HardwareFeatures_Cellular_DynamicPowerReductionConfig)(nil), "chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig")
proto.RegisterType((*HardwareFeatures_Hdmi)(nil), "chromiumos.config.api.HardwareFeatures.Hdmi")
proto.RegisterType((*HardwareFeatures_FirmwareConfiguration)(nil), "chromiumos.config.api.HardwareFeatures.FirmwareConfiguration")
proto.RegisterType((*HardwareFeatures_Audio)(nil), "chromiumos.config.api.HardwareFeatures.Audio")
@@ -3556,6 +3701,7 @@
proto.RegisterType((*HardwareFeatures_Hps)(nil), "chromiumos.config.api.HardwareFeatures.Hps")
proto.RegisterType((*HardwareFeatures_PoE)(nil), "chromiumos.config.api.HardwareFeatures.PoE")
proto.RegisterType((*HardwareFeatures_PowerSupply)(nil), "chromiumos.config.api.HardwareFeatures.PowerSupply")
+ proto.RegisterType((*HardwareFeatures_Proximity)(nil), "chromiumos.config.api.HardwareFeatures.Proximity")
}
func init() {
@@ -3563,275 +3709,284 @@
}
var fileDescriptor_9bdbf9c393c85c5f = []byte{
- // 4310 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5b, 0xcb, 0x73, 0xe3, 0xd8,
- 0x5a, 0xc7, 0x8f, 0x24, 0xf6, 0x67, 0x3b, 0x39, 0x39, 0x9d, 0xee, 0xf6, 0x78, 0xee, 0xcc, 0x34,
- 0x66, 0xa8, 0xdb, 0x75, 0xb9, 0xa4, 0x93, 0x74, 0xf7, 0x4c, 0x7a, 0x98, 0xb9, 0x5c, 0x45, 0x56,
- 0x62, 0x4f, 0xdb, 0x96, 0xfb, 0x48, 0x4e, 0x3a, 0x33, 0x53, 0xa8, 0x14, 0x49, 0x4e, 0x74, 0xdb,
- 0xb6, 0x84, 0x24, 0x77, 0x3a, 0xb0, 0x61, 0xc7, 0x82, 0x05, 0x4b, 0x1e, 0x55, 0xb7, 0xa0, 0x0a,
- 0xaa, 0x58, 0x52, 0x45, 0x41, 0x15, 0x77, 0x4d, 0x51, 0x05, 0x0b, 0xd8, 0xf0, 0x07, 0xc0, 0x82,
- 0x2a, 0xe0, 0xbf, 0xa0, 0xce, 0x43, 0xb2, 0x9c, 0x4e, 0xd3, 0xb6, 0x27, 0x6c, 0x12, 0x9d, 0xc7,
- 0xef, 0xa7, 0x73, 0xbe, 0xa3, 0xef, 0x9c, 0xef, 0x71, 0x0c, 0x9f, 0x5a, 0x17, 0x81, 0x37, 0x72,
- 0x27, 0x23, 0x2f, 0x7c, 0x64, 0x79, 0xe3, 0x81, 0x7b, 0xfe, 0xc8, 0xf4, 0xdd, 0x47, 0x91, 0xe7,
- 0x7b, 0x43, 0xef, 0xfc, 0x6a, 0xdb, 0x0f, 0xbc, 0xc8, 0xc3, 0x77, 0xa7, 0xbd, 0xb6, 0x79, 0xaf,
- 0x6d, 0xd3, 0x77, 0x6b, 0xbf, 0x7a, 0x33, 0xd8, 0xf2, 0x46, 0xbe, 0x37, 0x76, 0xc6, 0x11, 0x47,
- 0xd7, 0x3e, 0x3e, 0xf7, 0xbc, 0xf3, 0xa1, 0xf3, 0x88, 0x95, 0xce, 0x26, 0x83, 0x47, 0x97, 0x81,
- 0xe9, 0xfb, 0x4e, 0x10, 0xf2, 0xf6, 0xfa, 0xbf, 0xae, 0x42, 0x41, 0x17, 0x2f, 0xc4, 0xeb, 0x90,
- 0x75, 0xed, 0x6a, 0xe6, 0x41, 0xe6, 0x61, 0x91, 0x64, 0x5d, 0x1b, 0xef, 0x43, 0x3e, 0xba, 0xf2,
- 0x9d, 0x6a, 0xf6, 0x41, 0xe6, 0xe1, 0xfa, 0xde, 0xa7, 0xdb, 0x37, 0x8e, 0x64, 0x3b, 0x86, 0x6f,
- 0xeb, 0x57, 0xbe, 0x43, 0x18, 0x02, 0x13, 0x28, 0xd9, 0x4e, 0x68, 0x05, 0xae, 0x1f, 0xb9, 0xde,
- 0xb8, 0x9a, 0x7b, 0x90, 0x7b, 0x58, 0xda, 0xdb, 0x79, 0x1f, 0x41, 0x63, 0x0a, 0x51, 0xc6, 0x51,
- 0x70, 0x45, 0xd2, 0x24, 0x98, 0x00, 0xba, 0x30, 0x03, 0xfb, 0xd2, 0x0c, 0x1c, 0x63, 0xe0, 0x98,
- 0xd1, 0x24, 0x70, 0xaa, 0xf9, 0x07, 0x99, 0x87, 0xa5, 0xbd, 0x1f, 0xbe, 0x83, 0xb8, 0x29, 0xba,
- 0x1f, 0xf2, 0xde, 0x21, 0xd9, 0xb8, 0x98, 0xad, 0xa9, 0xfd, 0x04, 0xd0, 0xf5, 0x97, 0x62, 0x04,
- 0xb9, 0x57, 0xce, 0x95, 0x10, 0x03, 0x7d, 0xc4, 0x5b, 0xb0, 0xf2, 0xda, 0x1c, 0x4e, 0xb8, 0x20,
- 0x8a, 0x84, 0x17, 0xbe, 0xc8, 0xee, 0x67, 0xea, 0x7f, 0x98, 0x87, 0x3c, 0x9d, 0x36, 0x46, 0x50,
- 0xd6, 0x4f, 0x7b, 0x8a, 0xd1, 0xef, 0x3e, 0xef, 0xaa, 0x27, 0x5d, 0xf4, 0x4b, 0x18, 0x60, 0x55,
- 0x93, 0x89, 0xa2, 0x74, 0x51, 0x06, 0x6f, 0x40, 0xe9, 0x50, 0x25, 0x1d, 0xe3, 0x50, 0x92, 0x75,
- 0x95, 0xa0, 0x2c, 0x2e, 0xc2, 0x8a, 0xd4, 0x6f, 0xb4, 0x54, 0x94, 0x63, 0xfd, 0xf4, 0xd3, 0x76,
- 0x5f, 0x43, 0x79, 0x5c, 0x86, 0xc2, 0x73, 0xe5, 0xf4, 0x40, 0x95, 0x48, 0x03, 0xad, 0xe0, 0x12,
- 0xac, 0xe9, 0x4d, 0x85, 0x74, 0xa4, 0x36, 0x5a, 0xa5, 0xdd, 0x64, 0xa9, 0xa3, 0x10, 0x09, 0xad,
- 0xe1, 0x87, 0xf0, 0xa9, 0x24, 0xcb, 0x4a, 0x5b, 0x21, 0x6a, 0x47, 0xd1, 0x15, 0x62, 0x1c, 0x9d,
- 0x12, 0x55, 0x93, 0xd5, 0x9e, 0x62, 0x74, 0xa4, 0xa3, 0xae, 0xa2, 0xf3, 0x6a, 0x54, 0x60, 0x2f,
- 0x6e, 0x75, 0x8f, 0x14, 0xd2, 0x23, 0xad, 0xae, 0x8e, 0x8a, 0x78, 0x0b, 0x50, 0x8f, 0xa8, 0x2f,
- 0x5b, 0x9d, 0x96, 0x7e, 0x6a, 0x68, 0x4a, 0x57, 0x53, 0x09, 0x02, 0x8c, 0x61, 0xbd, 0x21, 0xf5,
- 0x8f, 0x9a, 0x94, 0x8b, 0xbf, 0xbd, 0x84, 0xab, 0xb0, 0xd5, 0x55, 0xbb, 0xc6, 0xb1, 0xda, 0x96,
- 0xf4, 0x56, 0x5b, 0x31, 0x34, 0x5d, 0x25, 0xd2, 0x91, 0x82, 0xca, 0x78, 0x0d, 0x72, 0x44, 0xea,
- 0xa0, 0x0a, 0x2e, 0x40, 0xfe, 0xa4, 0x75, 0xd8, 0x42, 0xeb, 0x94, 0x40, 0x56, 0xda, 0xed, 0x7e,
- 0x5b, 0x8a, 0x09, 0x36, 0x70, 0x05, 0x8a, 0x5a, 0xc3, 0x20, 0x8a, 0xd4, 0x50, 0x08, 0x42, 0xf8,
- 0x0e, 0x6c, 0x74, 0x54, 0x3a, 0x1f, 0xd6, 0x6e, 0xf4, 0xb5, 0x03, 0xb4, 0x49, 0xfb, 0x1c, 0xb4,
- 0xfb, 0x8a, 0xae, 0xaa, 0x7a, 0x13, 0x61, 0xbc, 0x0e, 0x70, 0x20, 0x11, 0xa2, 0xb4, 0xbf, 0x96,
- 0xe4, 0xe7, 0xe8, 0x0e, 0x95, 0x6a, 0x4f, 0x3d, 0xa1, 0x83, 0xea, 0xeb, 0xba, 0xda, 0x45, 0x5b,
- 0x78, 0x13, 0x2a, 0xc7, 0x6a, 0xbb, 0xdf, 0x51, 0xe2, 0xaa, 0xbb, 0x78, 0x15, 0xb2, 0x8a, 0x8c,
- 0xee, 0x51, 0x99, 0xea, 0x6a, 0x5f, 0x6e, 0xa2, 0xfb, 0x74, 0x84, 0x7a, 0xaf, 0x83, 0xaa, 0xb8,
- 0x06, 0xf7, 0x3a, 0x2d, 0x99, 0xa8, 0xbd, 0xa6, 0xda, 0x55, 0x8c, 0x4e, 0x5f, 0x57, 0x0c, 0xed,
- 0xa4, 0xa5, 0xcb, 0x4d, 0xf4, 0x01, 0x15, 0xef, 0x81, 0xa4, 0xeb, 0x0a, 0x39, 0x45, 0x35, 0x3a,
- 0x95, 0x66, 0xa3, 0xd3, 0x42, 0x1f, 0x52, 0xac, 0xa6, 0xca, 0xe8, 0x07, 0xf4, 0xa1, 0xd9, 0xd3,
- 0xd0, 0x47, 0x74, 0x14, 0x8d, 0x9e, 0x21, 0xab, 0xdd, 0x63, 0x85, 0x50, 0xb1, 0x7e, 0x4c, 0x9b,
- 0x7a, 0xaa, 0x82, 0x3e, 0x99, 0x0e, 0x50, 0xeb, 0xf7, 0x7a, 0xed, 0x53, 0xf4, 0xa0, 0xfe, 0x77,
- 0x19, 0x28, 0x34, 0x26, 0x81, 0xc9, 0x3e, 0xd9, 0x58, 0x81, 0x32, 0xff, 0xa7, 0x02, 0xc5, 0xdd,
- 0xd3, 0x0a, 0x34, 0xf3, 0xc9, 0xad, 0x88, 0x4f, 0xae, 0x7e, 0xfa, 0xce, 0xaf, 0x0d, 0x41, 0xb9,
- 0xd3, 0x6a, 0xb7, 0x5b, 0x9a, 0x22, 0xab, 0xdd, 0x86, 0x86, 0x32, 0x74, 0x7a, 0x71, 0x21, 0x4b,
- 0x0b, 0x9d, 0x56, 0xb7, 0xaf, 0x2b, 0x1a, 0xca, 0x51, 0x41, 0x35, 0xd5, 0x3e, 0xa1, 0x1f, 0x5c,
- 0x01, 0xf2, 0x0d, 0xe9, 0x54, 0x43, 0x2b, 0xf5, 0x7f, 0x37, 0x01, 0x5d, 0xd7, 0x17, 0x2c, 0xc1,
- 0xca, 0x24, 0x3c, 0x33, 0x2c, 0x36, 0x81, 0xd2, 0xde, 0x8f, 0xe7, 0xd4, 0xb3, 0xed, 0x7e, 0x78,
- 0x26, 0x93, 0xfc, 0x24, 0x3c, 0x93, 0x63, 0x0a, 0x93, 0x4d, 0x64, 0x31, 0x0a, 0x89, 0x51, 0x48,
- 0xb8, 0x0d, 0x05, 0xcb, 0x19, 0x0e, 0x27, 0x43, 0x33, 0xa8, 0xe6, 0x18, 0xcb, 0xce, 0xbc, 0x2c,
- 0xb2, 0xc0, 0x91, 0x84, 0x01, 0xff, 0x14, 0xf2, 0x17, 0xf6, 0xc8, 0x15, 0x5b, 0xc7, 0xdc, 0xe3,
- 0x69, 0xda, 0x23, 0x97, 0x30, 0x24, 0xfe, 0x06, 0x8a, 0x83, 0x4b, 0x83, 0x77, 0xae, 0xae, 0x30,
- 0x9a, 0xaf, 0xe6, 0xa5, 0x39, 0x74, 0x83, 0x11, 0xad, 0x90, 0x59, 0x1f, 0xb1, 0xf0, 0xa4, 0x30,
- 0xb8, 0xe4, 0x15, 0x58, 0x86, 0x15, 0x73, 0x62, 0xbb, 0x5e, 0x75, 0x95, 0xf1, 0xfe, 0xfa, 0xbc,
- 0xbc, 0x12, 0x05, 0x11, 0x8e, 0xc5, 0x87, 0xb0, 0x6a, 0x99, 0x23, 0x27, 0x30, 0xab, 0x6b, 0x8c,
- 0x65, 0x7b, 0x6e, 0x71, 0x31, 0x14, 0x11, 0x68, 0xfc, 0x2d, 0x54, 0x4c, 0xcb, 0x72, 0x86, 0x4e,
- 0xe0, 0x8d, 0x9c, 0xc8, 0x09, 0xaa, 0x05, 0x46, 0xf7, 0x74, 0xee, 0x41, 0xa5, 0xc1, 0x64, 0x96,
- 0x0b, 0xab, 0x50, 0x3c, 0xbf, 0x0a, 0xbc, 0xd0, 0xf2, 0x7c, 0xa7, 0x5a, 0x64, 0xc4, 0xbb, 0xf3,
- 0x12, 0x1f, 0xc5, 0x40, 0x32, 0xe5, 0xc0, 0x2f, 0xa1, 0x3c, 0x32, 0xcf, 0xc7, 0x4e, 0x24, 0x06,
- 0x0b, 0x8c, 0xf3, 0xc9, 0xbc, 0x9c, 0x9d, 0x14, 0x96, 0xcc, 0x30, 0xe1, 0x63, 0x28, 0x0f, 0xdd,
- 0xf3, 0x8b, 0xc8, 0x08, 0x9d, 0x71, 0xe8, 0x05, 0xd5, 0x12, 0x63, 0x7e, 0x3c, 0x2f, 0x73, 0x9b,
- 0x62, 0x35, 0x06, 0x25, 0xa5, 0xe1, 0xb4, 0x40, 0xd7, 0x29, 0xb4, 0x02, 0xc7, 0x19, 0x57, 0xcb,
- 0x8b, 0xad, 0x93, 0xc6, 0x50, 0x44, 0xa0, 0xb1, 0x06, 0xa5, 0x81, 0x17, 0x8c, 0x8c, 0x81, 0x69,
- 0x45, 0x5e, 0x50, 0xad, 0x30, 0xb2, 0xbd, 0xb9, 0x3f, 0x49, 0x2f, 0x18, 0x1d, 0x32, 0x24, 0x81,
- 0x41, 0xf2, 0xcc, 0x06, 0x17, 0x5d, 0x0d, 0x27, 0x61, 0x75, 0x7d, 0xc1, 0xc1, 0x31, 0x14, 0x11,
- 0x68, 0xaa, 0xbd, 0xaf, 0x9c, 0xab, 0x33, 0xcf, 0x0c, 0xec, 0xea, 0xc6, 0x62, 0xda, 0xfb, 0x5c,
- 0xe0, 0x48, 0xc2, 0x40, 0x47, 0x35, 0x72, 0x46, 0x5e, 0x70, 0x55, 0x45, 0x8b, 0x8d, 0xaa, 0xc3,
- 0x50, 0x44, 0xa0, 0x71, 0x1f, 0x4a, 0x03, 0x77, 0x7c, 0xee, 0x04, 0x7e, 0xe0, 0x8e, 0xa3, 0xea,
- 0xe6, 0x62, 0x2b, 0x7a, 0x38, 0x85, 0x92, 0x34, 0x0f, 0x6e, 0xc1, 0x5a, 0x18, 0x79, 0x81, 0x79,
- 0xee, 0x54, 0x31, 0xa3, 0x7c, 0x34, 0xbf, 0xd4, 0x18, 0x8c, 0xc4, 0x78, 0xaa, 0x1f, 0x67, 0xc3,
- 0x89, 0x13, 0x79, 0x5e, 0x74, 0x51, 0xbd, 0xb3, 0x98, 0x7e, 0x1c, 0xc4, 0x40, 0x32, 0xe5, 0xc0,
- 0x04, 0xe0, 0xcc, 0x0c, 0x02, 0x67, 0xf8, 0x33, 0xd3, 0x7a, 0x55, 0xdd, 0x5a, 0xec, 0x23, 0x39,
- 0x60, 0xc8, 0xaf, 0x4d, 0xeb, 0x15, 0x49, 0xb1, 0xd0, 0xcd, 0xf4, 0xd2, 0x1d, 0xb8, 0xd5, 0xfb,
- 0x8b, 0x6d, 0xa6, 0x27, 0xee, 0xc0, 0x25, 0x0c, 0x89, 0x5f, 0x40, 0xd9, 0xf7, 0x2e, 0x9d, 0xc0,
- 0x38, 0x9b, 0x44, 0x91, 0x37, 0xae, 0xde, 0x5d, 0x6c, 0x59, 0x0f, 0x18, 0x8a, 0x94, 0x18, 0x07,
- 0x2f, 0x60, 0x0d, 0x2a, 0xaf, 0xbd, 0xe1, 0x64, 0xe4, 0xc4, 0x9c, 0xf7, 0x96, 0xe2, 0x2c, 0x73,
- 0x12, 0x41, 0xfa, 0x0a, 0xee, 0x38, 0xa3, 0x33, 0xc7, 0xb6, 0x1d, 0x9b, 0x6e, 0xfd, 0x51, 0xe0,
- 0x0d, 0x87, 0x4e, 0x50, 0xad, 0x32, 0xea, 0x2f, 0xe6, 0xa5, 0x56, 0x04, 0x85, 0x9c, 0x30, 0x10,
- 0xec, 0xbc, 0x55, 0x87, 0x27, 0x70, 0x3f, 0x0a, 0x26, 0x61, 0xe4, 0xd8, 0x86, 0x3f, 0x34, 0x23,
- 0xa6, 0xdc, 0x23, 0xcf, 0x9e, 0x0c, 0x9d, 0xea, 0x07, 0x8b, 0x9d, 0x37, 0x3a, 0xa7, 0xe9, 0x09,
- 0x96, 0x0e, 0x23, 0x21, 0x77, 0xa3, 0x9b, 0xaa, 0xe9, 0x17, 0x72, 0xe1, 0x45, 0x97, 0x5e, 0x60,
- 0xbb, 0xe3, 0xf3, 0x6a, 0x6d, 0xb1, 0x2f, 0xa4, 0x99, 0x20, 0x49, 0x8a, 0x85, 0x6a, 0x84, 0xed,
- 0x86, 0xfe, 0xd0, 0xbc, 0xaa, 0x7e, 0xb8, 0x98, 0x46, 0x34, 0x38, 0x8c, 0xc4, 0x78, 0xba, 0x93,
- 0x44, 0xde, 0xc4, 0xba, 0xf0, 0x4d, 0xbb, 0xfa, 0x83, 0xc5, 0x76, 0x12, 0x5d, 0xe0, 0x48, 0xc2,
- 0x80, 0x03, 0xb8, 0x37, 0x72, 0xad, 0xc0, 0xf3, 0x2f, 0xbc, 0xb1, 0x63, 0x8c, 0x26, 0x91, 0x63,
- 0x84, 0x97, 0x6e, 0x64, 0x5d, 0x54, 0x3f, 0x62, 0xdc, 0x5f, 0xce, 0xbd, 0xb3, 0x24, 0x2c, 0x9d,
- 0x49, 0xe4, 0x68, 0x8c, 0x83, 0x6c, 0x8d, 0x6e, 0xa8, 0xa5, 0xc2, 0x38, 0x33, 0xa3, 0xc8, 0x09,
- 0xae, 0xaa, 0x1f, 0x2f, 0x26, 0x8c, 0x03, 0x0e, 0x23, 0x31, 0x1e, 0x7f, 0x07, 0xeb, 0x7e, 0xe0,
- 0xbe, 0x36, 0xad, 0x2b, 0x43, 0x9c, 0x21, 0x9f, 0x2c, 0x76, 0x38, 0xf7, 0x38, 0x5a, 0x1c, 0x25,
- 0x15, 0x3f, 0x5d, 0xc4, 0x5f, 0x41, 0x2e, 0xf4, 0xac, 0xea, 0x03, 0x46, 0xf9, 0x6b, 0x73, 0xef,
- 0x61, 0x9e, 0x45, 0x28, 0x0e, 0x1b, 0x50, 0xb6, 0x7d, 0xaa, 0x26, 0xaf, 0x9d, 0x80, 0x1e, 0xc5,
- 0xbf, 0xbc, 0x98, 0x44, 0xc5, 0xca, 0xf7, 0xbc, 0x20, 0x92, 0x63, 0x0e, 0x52, 0xb2, 0xfd, 0xa4,
- 0x40, 0xc7, 0x77, 0xe1, 0x87, 0xd5, 0xfa, 0x62, 0xe3, 0x6b, 0xfa, 0x21, 0xa1, 0x38, 0x0a, 0xf7,
- 0x3d, 0xa7, 0xfa, 0x2b, 0x8b, 0xc1, 0x7b, 0x9e, 0x42, 0x28, 0x8e, 0xda, 0x03, 0x7c, 0xcf, 0x0a,
- 0x27, 0xbe, 0x3f, 0xbc, 0xaa, 0x7e, 0xba, 0xd8, 0xe9, 0xd1, 0xa3, 0x58, 0x8d, 0x41, 0xc5, 0xc6,
- 0xc5, 0x0b, 0xb5, 0x8f, 0x60, 0x45, 0xf6, 0x26, 0xe3, 0x68, 0x6a, 0xfd, 0x53, 0xbb, 0xbb, 0x22,
- 0xac, 0xff, 0xda, 0xdf, 0x66, 0x21, 0x4f, 0x2d, 0x6b, 0x6a, 0x24, 0x5a, 0xb4, 0x9f, 0x30, 0xcb,
- 0xe7, 0x36, 0x12, 0x19, 0x39, 0xe1, 0x58, 0x7c, 0x04, 0x2b, 0xbe, 0x17, 0x44, 0x61, 0x35, 0xcb,
- 0x9c, 0xf3, 0xdd, 0x45, 0x6c, 0xfb, 0x6d, 0xba, 0x34, 0x84, 0xe3, 0x6b, 0x3f, 0xcf, 0x40, 0x9e,
- 0x96, 0x71, 0x0f, 0x0a, 0xbe, 0x17, 0xba, 0xcc, 0xe3, 0xe7, 0x1e, 0xcf, 0x93, 0xf9, 0x45, 0x12,
- 0x44, 0x3d, 0x81, 0x25, 0x09, 0x0b, 0x96, 0x61, 0xdd, 0x1d, 0xdb, 0xce, 0x1b, 0xc3, 0x7b, 0xed,
- 0x04, 0x81, 0x6b, 0x3b, 0xc2, 0x8b, 0xf8, 0xc1, 0x36, 0x0f, 0x6b, 0x6c, 0xc7, 0x61, 0x8d, 0xed,
- 0x7e, 0x6b, 0x1c, 0x3d, 0xde, 0x3b, 0xa6, 0x72, 0x22, 0x15, 0x86, 0x51, 0x05, 0xa4, 0xf6, 0x9c,
- 0x49, 0x4d, 0xba, 0x15, 0xa9, 0xd5, 0xfe, 0x26, 0x0b, 0x85, 0xd8, 0xa9, 0xa0, 0xea, 0xec, 0x07,
- 0x4e, 0xe8, 0x08, 0xce, 0xf5, 0xf9, 0xd5, 0xb9, 0xc7, 0x61, 0x24, 0xc6, 0xd3, 0x15, 0x1f, 0x79,
- 0xb6, 0x33, 0x8c, 0x43, 0x0c, 0xac, 0x80, 0x5f, 0x08, 0xff, 0x31, 0xc7, 0xd8, 0xbf, 0x5a, 0xd4,
- 0xeb, 0x49, 0x1e, 0x52, 0x8e, 0xe5, 0x36, 0xdc, 0x31, 0xa3, 0xc8, 0xb4, 0x2e, 0x0c, 0xd3, 0x1f,
- 0x1b, 0x81, 0xf3, 0xdb, 0x13, 0x37, 0x70, 0x6c, 0xe6, 0x0d, 0x15, 0xc8, 0x26, 0x6f, 0x92, 0xfc,
- 0x31, 0x11, 0x0d, 0xf5, 0x03, 0x28, 0xa7, 0x59, 0xf0, 0x06, 0x94, 0xba, 0xaa, 0x6e, 0xf4, 0x88,
- 0xa2, 0x29, 0x5d, 0x9d, 0x7b, 0x9e, 0x89, 0xeb, 0xdf, 0xd6, 0x15, 0x1e, 0xed, 0x48, 0x6a, 0x9e,
- 0x1e, 0xa1, 0x6c, 0xed, 0x05, 0xe4, 0xa9, 0xfb, 0x74, 0x8b, 0xf2, 0xaa, 0x49, 0x70, 0xf7, 0x46,
- 0x57, 0xea, 0x66, 0xd5, 0xc1, 0x18, 0xf2, 0x23, 0x33, 0x7c, 0xc5, 0xa4, 0x5b, 0x21, 0xec, 0xb9,
- 0xf6, 0x67, 0x65, 0x58, 0x61, 0x6e, 0x13, 0x3e, 0x85, 0x12, 0x73, 0x9c, 0x0c, 0xcb, 0xb3, 0x1d,
- 0x4b, 0x8c, 0x6d, 0x7f, 0x21, 0xd7, 0x8b, 0xff, 0x95, 0x29, 0x9e, 0x80, 0x99, 0x3c, 0xe3, 0x97,
- 0x50, 0x0a, 0x7d, 0xc7, 0x7c, 0xe5, 0x04, 0x86, 0x39, 0xf2, 0x45, 0x24, 0xed, 0xf3, 0x05, 0xa9,
- 0x47, 0xfe, 0xd0, 0x1d, 0xb8, 0x4e, 0x40, 0x40, 0x70, 0x49, 0x23, 0x1f, 0x9b, 0xb0, 0x71, 0xe1,
- 0x98, 0x36, 0x3f, 0xbe, 0xf8, 0xc0, 0x73, 0xdf, 0x73, 0xe0, 0xeb, 0x09, 0x21, 0x1f, 0xbc, 0x0e,
- 0xeb, 0x43, 0xd7, 0x36, 0xa6, 0x47, 0x99, 0x70, 0x9a, 0x17, 0x54, 0x9d, 0xca, 0xd0, 0xb5, 0xa7,
- 0x87, 0x24, 0x3e, 0x86, 0x8d, 0x33, 0x33, 0x74, 0xd2, 0xb4, 0x2b, 0xcb, 0xd0, 0xae, 0x53, 0x96,
- 0x14, 0xef, 0x09, 0x6c, 0xa6, 0x44, 0xcd, 0x25, 0x26, 0xdc, 0xe8, 0x1f, 0xbd, 0x83, 0x59, 0x4e,
- 0xa2, 0xa5, 0x53, 0x19, 0xa3, 0xa9, 0x8c, 0x79, 0x0d, 0xfe, 0x16, 0xca, 0x96, 0x19, 0xd8, 0xc2,
- 0xe3, 0x0f, 0xab, 0x6b, 0x6c, 0xc3, 0x5c, 0x50, 0xcc, 0xb2, 0x19, 0xd8, 0xfc, 0x4b, 0x25, 0x25,
- 0x2b, 0x79, 0x0e, 0xb1, 0x05, 0x25, 0x2b, 0x30, 0xc3, 0x38, 0x9c, 0x50, 0x60, 0x4b, 0x78, 0xb0,
- 0xd4, 0x12, 0xd2, 0x6e, 0x5a, 0x14, 0x4c, 0x2c, 0xda, 0x46, 0x80, 0xd2, 0xf2, 0xca, 0xda, 0x5f,
- 0xe5, 0x00, 0xa6, 0x03, 0xc0, 0x1f, 0x42, 0x91, 0x4d, 0x68, 0x6c, 0x8e, 0x1c, 0x11, 0xe7, 0x2c,
- 0xd0, 0x8a, 0xae, 0x39, 0x72, 0xf0, 0x6f, 0x00, 0x4c, 0xac, 0x91, 0x11, 0x4e, 0x06, 0x03, 0xf7,
- 0xcd, 0x3b, 0xf7, 0x5b, 0x2d, 0x0a, 0xdc, 0xf1, 0x39, 0xdf, 0x6f, 0x8b, 0x13, 0x6b, 0xa4, 0xb1,
- 0xee, 0xd8, 0xe4, 0x60, 0x31, 0x99, 0xdc, 0xad, 0x4d, 0x86, 0xbe, 0x42, 0x0c, 0xfe, 0x9a, 0xc0,
- 0xf2, 0xff, 0x1f, 0x02, 0xc3, 0x97, 0x70, 0x2f, 0xf4, 0x26, 0x63, 0xdb, 0x60, 0x72, 0x72, 0xc7,
- 0x6e, 0x94, 0x8e, 0xf7, 0xdc, 0xce, 0xfb, 0xee, 0xb0, 0x37, 0xd0, 0x65, 0x69, 0x8d, 0xdd, 0x88,
- 0xb7, 0xd6, 0x7f, 0x9e, 0x01, 0x98, 0x6a, 0x24, 0xbe, 0x0f, 0x77, 0x58, 0x9c, 0xd8, 0x90, 0xd5,
- 0x86, 0x22, 0xcf, 0x46, 0x97, 0x89, 0xfe, 0xf4, 0xb3, 0xfd, 0x3d, 0x94, 0xc1, 0x65, 0x28, 0x48,
- 0x6d, 0x99, 0x16, 0x5a, 0x3c, 0xd4, 0x27, 0x4a, 0x3c, 0xb8, 0xdc, 0x90, 0x3e, 0xdf, 0xdb, 0x7d,
- 0x86, 0x0a, 0xb8, 0x02, 0xc5, 0xae, 0xd4, 0xdf, 0xdf, 0x6f, 0xef, 0x3d, 0x3d, 0x40, 0x40, 0xfb,
- 0xc9, 0xda, 0x93, 0xbd, 0xf6, 0x93, 0x3d, 0x54, 0xc2, 0xeb, 0x00, 0x31, 0xc5, 0xb1, 0x86, 0xca,
- 0xb4, 0xf1, 0x44, 0x6e, 0x3c, 0x7b, 0xbc, 0xff, 0x14, 0x55, 0xea, 0xf9, 0x42, 0x1e, 0xad, 0xd5,
- 0xf3, 0x85, 0x22, 0x2a, 0xd6, 0xff, 0x24, 0x03, 0xc5, 0xa9, 0x66, 0xdc, 0x85, 0x4d, 0xa9, 0xd3,
- 0x6b, 0xb7, 0x0e, 0x5b, 0x0a, 0x49, 0x0d, 0xae, 0x0c, 0x85, 0x8e, 0xf4, 0xf2, 0xd9, 0xfe, 0xe3,
- 0xa7, 0x9f, 0xf3, 0xa0, 0x36, 0x2f, 0x7d, 0xfe, 0x18, 0xad, 0x4c, 0x4b, 0x9f, 0xed, 0xf0, 0xa8,
- 0x36, 0xd1, 0x77, 0x77, 0x76, 0x9f, 0xa2, 0x35, 0x31, 0xf0, 0xdd, 0x9d, 0xdd, 0x5d, 0x54, 0xa4,
- 0x05, 0xde, 0xd0, 0xe3, 0x43, 0xe5, 0x2d, 0xcf, 0x50, 0x69, 0x4a, 0xf0, 0x6c, 0x07, 0x95, 0xeb,
- 0xf9, 0x42, 0x06, 0xe5, 0xea, 0xf9, 0x42, 0x01, 0x15, 0xea, 0x2a, 0x6c, 0xdd, 0x24, 0x68, 0xfc,
- 0x09, 0x7c, 0x18, 0x0b, 0xb1, 0x7b, 0xd8, 0x3a, 0x32, 0x34, 0x9d, 0xf4, 0x65, 0xbd, 0x4f, 0x14,
- 0xa3, 0xab, 0x76, 0x15, 0x2e, 0xcc, 0x86, 0xa2, 0xb5, 0x8e, 0xba, 0x28, 0xc3, 0xe2, 0xec, 0x6a,
- 0xa7, 0xa3, 0x76, 0x51, 0xb6, 0xf6, 0x47, 0x6b, 0xb0, 0xca, 0x43, 0x62, 0x58, 0x85, 0x35, 0xdb,
- 0x79, 0xed, 0x5a, 0x4e, 0x58, 0xcd, 0x33, 0xf5, 0x7f, 0xba, 0x58, 0x4c, 0x6d, 0xbb, 0xc1, 0xd0,
- 0x24, 0x66, 0xa9, 0xfd, 0x57, 0x0e, 0x56, 0x79, 0x1d, 0x3e, 0x86, 0xa2, 0x3b, 0x8e, 0x9c, 0x60,
- 0x60, 0x5a, 0x71, 0xae, 0x65, 0x7f, 0x41, 0xf6, 0x56, 0x8c, 0x27, 0x53, 0x2a, 0xdc, 0x81, 0xd5,
- 0x81, 0x69, 0x51, 0x57, 0x8e, 0x2b, 0xe2, 0xa2, 0x43, 0x3e, 0x64, 0x60, 0x22, 0x48, 0xf0, 0x77,
- 0x50, 0xf2, 0x02, 0xd7, 0x19, 0x47, 0xec, 0xa0, 0x15, 0x8a, 0xf7, 0xc5, 0x82, 0x9c, 0xea, 0x94,
- 0x81, 0xa4, 0xe9, 0xe8, 0xb9, 0x3d, 0x18, 0x9a, 0xe7, 0x21, 0x53, 0xb0, 0x0a, 0xe1, 0x05, 0x8c,
- 0x20, 0xe7, 0xda, 0x61, 0x75, 0xf5, 0x41, 0xee, 0x61, 0x91, 0xd0, 0x47, 0x7c, 0x9c, 0xf2, 0x7b,
- 0xb8, 0xbb, 0xb6, 0xb6, 0x9c, 0x29, 0x91, 0x78, 0x3c, 0xdc, 0x35, 0x7b, 0x09, 0x28, 0xe5, 0x0e,
- 0x72, 0x43, 0xb1, 0xb0, 0xcc, 0xb1, 0xb4, 0x31, 0xa5, 0x61, 0x15, 0xf5, 0x16, 0x14, 0x93, 0xe5,
- 0xa1, 0x1a, 0xd3, 0xea, 0xea, 0x0a, 0x39, 0x94, 0xe4, 0x74, 0xf8, 0x7e, 0x13, 0x2a, 0xa9, 0x6a,
- 0xed, 0x00, 0x65, 0x30, 0x86, 0xf5, 0x69, 0x55, 0xa7, 0xd5, 0x6b, 0xa1, 0x6c, 0xfd, 0x37, 0x61,
- 0x95, 0x2f, 0x0a, 0x6d, 0x3d, 0x94, 0xe4, 0x56, 0xf7, 0x68, 0x36, 0x07, 0x20, 0xea, 0x0e, 0x89,
- 0xda, 0xd5, 0x45, 0xde, 0x89, 0xd7, 0x1c, 0x48, 0xf2, 0x73, 0x94, 0xad, 0x5f, 0x42, 0x29, 0xb5,
- 0x02, 0x74, 0x7b, 0x51, 0x49, 0x4b, 0xe9, 0xea, 0x92, 0xde, 0x52, 0xbb, 0xb3, 0xe3, 0x49, 0x37,
- 0xec, 0xf0, 0xf1, 0xa4, 0xab, 0x9e, 0xed, 0xa0, 0x2c, 0xbe, 0x03, 0x1b, 0xe9, 0xba, 0xdd, 0xfd,
- 0x1d, 0x94, 0xbb, 0x5e, 0xb9, 0xf7, 0xf9, 0x0e, 0xca, 0xd7, 0x3b, 0xb0, 0x72, 0xc8, 0x56, 0x74,
- 0x1d, 0xe0, 0xb0, 0x2d, 0x1d, 0x69, 0xb1, 0xee, 0xdd, 0x87, 0x3b, 0xbc, 0xac, 0xf5, 0x7b, 0x3d,
- 0x95, 0xe8, 0xc6, 0xee, 0xce, 0xfe, 0x4e, 0x0f, 0x65, 0xf0, 0x87, 0x70, 0x7f, 0xb6, 0x41, 0xea,
- 0xeb, 0xea, 0xa1, 0x2a, 0xf7, 0x35, 0x94, 0xad, 0xfd, 0x4b, 0x06, 0x2a, 0x33, 0xd1, 0x65, 0xfc,
- 0x1d, 0x6c, 0x52, 0x5b, 0x65, 0x36, 0x5e, 0xbd, 0xa4, 0x95, 0x89, 0x86, 0xae, 0x3d, 0xcb, 0xfe,
- 0x5b, 0x80, 0x99, 0xcd, 0x32, 0x4b, 0x9f, 0x5d, 0x8e, 0x7e, 0x93, 0x52, 0xcd, 0xf0, 0xd7, 0x7e,
- 0x91, 0x81, 0x62, 0x12, 0xd4, 0xc6, 0x3a, 0x50, 0x93, 0xc9, 0x98, 0x86, 0xc7, 0x97, 0x9c, 0x47,
- 0x79, 0xe8, 0xda, 0x53, 0xd6, 0x63, 0x60, 0x16, 0x53, 0x8a, 0x76, 0xc9, 0xf1, 0x57, 0x28, 0x4d,
- 0xc2, 0x5b, 0xfb, 0xa7, 0x0c, 0x94, 0xd3, 0xc1, 0x73, 0xfc, 0x0d, 0x20, 0x66, 0x36, 0xa6, 0x83,
- 0xf1, 0x4b, 0xce, 0x60, 0x83, 0x9a, 0x8e, 0x69, 0xee, 0xef, 0x60, 0x93, 0x1b, 0x8f, 0x69, 0xf2,
- 0x25, 0xe7, 0x81, 0x98, 0x01, 0x99, 0x22, 0xaa, 0xfd, 0x43, 0x06, 0x4a, 0xa9, 0x68, 0x3d, 0x7e,
- 0x09, 0x74, 0x00, 0x06, 0x8b, 0xd9, 0x8b, 0xd8, 0xff, 0x92, 0x13, 0xa1, 0x86, 0x74, 0x7b, 0x4a,
- 0x43, 0x65, 0xc4, 0xe6, 0x91, 0xa6, 0x5e, 0x72, 0x1a, 0xcc, 0x9a, 0x4e, 0x71, 0xd7, 0xfe, 0x39,
- 0x03, 0xab, 0x22, 0x8e, 0x63, 0x01, 0xf2, 0xcd, 0xb1, 0x33, 0x34, 0xfc, 0xc0, 0xf3, 0x9d, 0x20,
- 0x72, 0x9d, 0x50, 0xa4, 0xd0, 0xf6, 0xdf, 0x6b, 0x12, 0xc7, 0x51, 0x18, 0x8a, 0xdf, 0xee, 0x25,
- 0x78, 0xb2, 0xc1, 0x18, 0xa7, 0x15, 0xf4, 0x73, 0x65, 0x51, 0x35, 0x16, 0x0e, 0xf1, 0x82, 0x68,
- 0xd9, 0x89, 0x94, 0x19, 0x8b, 0xc6, 0x49, 0xbe, 0xa6, 0x27, 0x7b, 0xb6, 0xf6, 0x07, 0x59, 0x80,
- 0x69, 0x82, 0x02, 0x9f, 0xcd, 0x66, 0x3a, 0xf8, 0x62, 0x48, 0x8b, 0x67, 0x3a, 0x52, 0x8f, 0xcc,
- 0x37, 0x4e, 0x25, 0x3e, 0xea, 0x7f, 0x9c, 0x81, 0xf5, 0xd9, 0x66, 0xb6, 0x49, 0x4d, 0xf3, 0xf7,
- 0xa9, 0x7d, 0xb2, 0x02, 0x45, 0xb9, 0x2d, 0x75, 0xb4, 0xa6, 0xd2, 0x6e, 0x0b, 0xcf, 0x97, 0xa7,
- 0x89, 0x5b, 0x07, 0x6d, 0x05, 0x65, 0xe9, 0x6e, 0xd7, 0x50, 0x74, 0x49, 0x6e, 0x4a, 0xb4, 0x9c,
- 0xa3, 0x65, 0xb9, 0x49, 0xd4, 0x8e, 0x72, 0x20, 0x69, 0x0a, 0xca, 0x33, 0x3c, 0x2f, 0xab, 0x2f,
- 0xd1, 0x4a, 0xaa, 0xd8, 0xd2, 0xd1, 0x2a, 0xa3, 0x63, 0x45, 0xad, 0x2d, 0xe9, 0x0a, 0x5a, 0xab,
- 0xfd, 0x05, 0x5d, 0x59, 0x9e, 0x56, 0x79, 0x91, 0xa4, 0x67, 0xb8, 0x10, 0x9e, 0x2d, 0x96, 0x9e,
- 0x11, 0xff, 0xd8, 0xe4, 0x05, 0x51, 0xfd, 0x10, 0x60, 0x5a, 0x4b, 0xf7, 0x7b, 0x7e, 0x2f, 0x21,
- 0x35, 0xdd, 0x02, 0xe4, 0xd9, 0xb6, 0xcd, 0x6c, 0x4e, 0x76, 0x3a, 0x75, 0xa5, 0x36, 0xca, 0xd2,
- 0x92, 0xf2, 0x52, 0x94, 0x72, 0xb5, 0xff, 0xce, 0x41, 0x21, 0x4e, 0xdd, 0xe0, 0x33, 0xa8, 0xc4,
- 0xc9, 0x1b, 0x23, 0x95, 0x0b, 0xff, 0x6a, 0xd1, 0x1c, 0x50, 0xf2, 0xc0, 0x86, 0x5c, 0x7e, 0x95,
- 0x2a, 0xe1, 0x0e, 0x14, 0xcf, 0x4c, 0xeb, 0x15, 0xd3, 0xa5, 0x65, 0x3f, 0xbe, 0x29, 0x03, 0x26,
- 0xd7, 0x52, 0x12, 0xb9, 0xe5, 0x18, 0x67, 0x72, 0x12, 0x3d, 0x28, 0x8d, 0x27, 0x23, 0x27, 0x70,
- 0x2d, 0xc3, 0x37, 0x6d, 0x61, 0x3c, 0x2d, 0x4c, 0x09, 0x82, 0xa3, 0x67, 0xda, 0x78, 0x07, 0xb6,
- 0x92, 0x21, 0x1b, 0x93, 0xd0, 0x09, 0x8c, 0x30, 0x72, 0x7c, 0x6a, 0x3f, 0xe5, 0x1e, 0x66, 0x08,
- 0x4e, 0xda, 0xfa, 0xa1, 0x13, 0x68, 0xb4, 0xa5, 0xfe, 0x02, 0xca, 0x69, 0x21, 0xe2, 0x0f, 0xe0,
- 0x6e, 0x7c, 0xdb, 0xc4, 0xb8, 0x76, 0x9d, 0x20, 0xbd, 0xbc, 0x99, 0x64, 0xd9, 0xdf, 0xfa, 0x9e,
- 0x6b, 0x1a, 0xac, 0xf2, 0xc4, 0x1a, 0x8f, 0xed, 0x78, 0x03, 0x77, 0xe8, 0x88, 0xf8, 0xda, 0xa3,
- 0xf7, 0x6e, 0x30, 0x1c, 0x49, 0xb7, 0x16, 0x0a, 0x23, 0x31, 0xbe, 0xf6, 0x9f, 0x59, 0x28, 0xa5,
- 0x32, 0x6c, 0xf8, 0x25, 0x14, 0x86, 0x9e, 0x65, 0xa6, 0xe2, 0x8a, 0x5f, 0x2e, 0x91, 0xa8, 0xdb,
- 0x6e, 0x0b, 0x0e, 0x92, 0xb0, 0x51, 0xa3, 0x93, 0x27, 0x26, 0x45, 0xd4, 0x8d, 0x7f, 0xb2, 0x1f,
- 0x01, 0x04, 0x9e, 0xf1, 0xda, 0x09, 0x42, 0x57, 0xac, 0x7e, 0x91, 0x14, 0x03, 0xef, 0x98, 0x57,
- 0xd4, 0xff, 0x31, 0x03, 0x85, 0xf6, 0x94, 0x01, 0xb5, 0x55, 0xf9, 0xba, 0xf9, 0xf4, 0x01, 0xdc,
- 0x4d, 0xdf, 0x5b, 0x31, 0x74, 0xb5, 0x67, 0xb4, 0x95, 0x43, 0x6a, 0x92, 0x55, 0x61, 0x2b, 0x11,
- 0xfa, 0x81, 0xaa, 0xeb, 0x6a, 0x87, 0xb7, 0x64, 0x67, 0x96, 0x43, 0xb4, 0x90, 0xd6, 0x51, 0x53,
- 0x47, 0x39, 0x7c, 0x0f, 0xf0, 0x74, 0xa5, 0xd4, 0x9e, 0xa8, 0xcf, 0x5f, 0x0f, 0xc6, 0xad, 0xd0,
- 0xf5, 0x61, 0x6d, 0x86, 0xd6, 0x6a, 0x28, 0x68, 0x95, 0x6e, 0x28, 0x94, 0x9d, 0x17, 0x99, 0x8b,
- 0x15, 0xf7, 0x2d, 0xd4, 0x7e, 0x17, 0xd6, 0x44, 0xd2, 0x11, 0x9f, 0x40, 0x59, 0xa4, 0x1d, 0xd3,
- 0x3a, 0xfa, 0xe4, 0xbd, 0x2b, 0x28, 0xf0, 0xf1, 0x7f, 0xa6, 0x9a, 0xa5, 0x70, 0x5a, 0xc0, 0xf7,
- 0x61, 0x2d, 0x74, 0x7f, 0xc7, 0x31, 0xce, 0xcf, 0x44, 0xe8, 0x6d, 0x95, 0x16, 0x8f, 0xce, 0x6a,
- 0x7f, 0x9e, 0x81, 0x62, 0x92, 0xa5, 0xc4, 0x4d, 0x28, 0x26, 0x17, 0xd7, 0xc4, 0xe7, 0xf3, 0xfe,
- 0x90, 0x4d, 0x2a, 0xc9, 0x99, 0x80, 0xd3, 0x21, 0xc6, 0xec, 0xf7, 0x0c, 0x31, 0x9e, 0x00, 0x4c,
- 0xb3, 0x9e, 0xb7, 0x19, 0xbb, 0xfc, 0xd3, 0x2c, 0xe4, 0x4f, 0xdc, 0x81, 0x8b, 0x87, 0x50, 0x15,
- 0x47, 0xa6, 0x63, 0x1b, 0x97, 0x43, 0x73, 0x6c, 0xb0, 0xf8, 0x8a, 0xe5, 0x0d, 0xe9, 0xae, 0x9e,
- 0x7b, 0xb8, 0xfe, 0xce, 0xec, 0xdb, 0x54, 0x0a, 0x94, 0x68, 0xfb, 0xa4, 0x2d, 0x75, 0x7b, 0x02,
- 0x4a, 0xee, 0x25, 0x9c, 0x27, 0x43, 0x73, 0x1c, 0x57, 0xd3, 0x63, 0x1a, 0x2e, 0xdd, 0x81, 0x6b,
- 0x58, 0x17, 0xae, 0xcf, 0xa3, 0xfe, 0x0b, 0xb8, 0x84, 0xfc, 0x35, 0xee, 0xc0, 0x95, 0x2f, 0x5c,
- 0x9f, 0x14, 0x2f, 0xc5, 0x53, 0x58, 0xef, 0x42, 0x21, 0xae, 0xa6, 0xce, 0xcd, 0x49, 0xeb, 0xb0,
- 0x65, 0xc8, 0xcd, 0x56, 0x2f, 0xa5, 0x0d, 0xac, 0x9a, 0x28, 0x6d, 0x45, 0xd3, 0x8c, 0xfd, 0xcf,
- 0x94, 0xc6, 0xfe, 0xce, 0x6e, 0x03, 0x65, 0xa8, 0xea, 0x24, 0xd5, 0x44, 0x91, 0xda, 0xba, 0xf2,
- 0x1c, 0x65, 0x6b, 0x7f, 0x9f, 0x85, 0x55, 0xb1, 0x67, 0x76, 0x60, 0x35, 0x70, 0xce, 0xa7, 0x5a,
- 0xff, 0x74, 0xb1, 0x04, 0xee, 0x36, 0x61, 0x60, 0x22, 0x48, 0xf0, 0x11, 0xe4, 0x1d, 0xfb, 0x3c,
- 0xb6, 0x7a, 0x1f, 0x2f, 0x48, 0xa6, 0xd8, 0xe7, 0x0e, 0x61, 0x04, 0xb8, 0x96, 0xca, 0x73, 0xd0,
- 0xdd, 0x21, 0x3b, 0xcd, 0x58, 0xd4, 0x3f, 0x83, 0x55, 0xfe, 0x5a, 0x7a, 0x7e, 0x12, 0xe5, 0x68,
- 0x76, 0x5f, 0x48, 0xdf, 0x09, 0x4c, 0xdf, 0xf5, 0xcb, 0xd6, 0x0f, 0x20, 0x4f, 0xdf, 0x40, 0x7d,
- 0x38, 0xa5, 0x71, 0xa4, 0xcc, 0x9e, 0xb9, 0x62, 0xeb, 0x28, 0xc2, 0x0a, 0x57, 0xfc, 0x2c, 0xbb,
- 0xe0, 0xa6, 0xf6, 0x78, 0x80, 0x87, 0xef, 0x15, 0x28, 0x5f, 0xfb, 0xbd, 0x3c, 0xe0, 0xb7, 0x13,
- 0xcc, 0xb7, 0x99, 0xa5, 0xf8, 0x19, 0xac, 0x39, 0x96, 0x91, 0xba, 0x13, 0xfa, 0x62, 0xf9, 0xc4,
- 0xf7, 0x0d, 0x55, 0xdc, 0x1a, 0x71, 0x2c, 0xb6, 0x75, 0x1c, 0x41, 0xde, 0x37, 0x83, 0x48, 0x98,
- 0xab, 0x8f, 0xdf, 0xab, 0x08, 0x37, 0xa4, 0xd6, 0x19, 0x01, 0xfe, 0x16, 0x36, 0xc5, 0x75, 0x51,
- 0x36, 0x72, 0xcb, 0xb0, 0x46, 0x4b, 0x1f, 0xc0, 0x1b, 0x82, 0x89, 0x8e, 0xd0, 0x92, 0x47, 0x36,
- 0x96, 0x20, 0x67, 0x9d, 0xb9, 0x22, 0x2a, 0xb8, 0x30, 0x1d, 0xc5, 0xd6, 0xbf, 0x86, 0x7b, 0x37,
- 0x8b, 0x82, 0x7a, 0xd2, 0x8a, 0x7c, 0xfd, 0x68, 0xae, 0x40, 0x51, 0x91, 0x0d, 0x6e, 0x17, 0xf2,
- 0xcf, 0x48, 0x91, 0x8d, 0x93, 0x56, 0x5b, 0x56, 0x51, 0xb6, 0xf6, 0x3f, 0x19, 0xb8, 0x7b, 0x63,
- 0xca, 0x1f, 0x07, 0x50, 0x88, 0xfc, 0x51, 0x7a, 0x7b, 0x3f, 0xf9, 0x5e, 0x77, 0x08, 0x6e, 0xae,
- 0x65, 0x2b, 0xb8, 0x16, 0xf9, 0x23, 0xfa, 0x50, 0xff, 0x0e, 0x3e, 0x78, 0x67, 0x2f, 0xaa, 0xfe,
- 0x7a, 0xaf, 0x73, 0x7d, 0x76, 0x1b, 0x50, 0xd2, 0x9b, 0x2d, 0xd2, 0x30, 0x7a, 0x12, 0xd1, 0x4f,
- 0xf9, 0x35, 0xc6, 0x23, 0x4d, 0x36, 0x9a, 0xbb, 0x07, 0x3c, 0xb6, 0xc9, 0x0b, 0x0d, 0x94, 0xa3,
- 0xfb, 0x73, 0x73, 0xe6, 0x9e, 0xc1, 0x6d, 0xed, 0xcf, 0x7f, 0x9d, 0x81, 0x35, 0xe1, 0xfc, 0xe0,
- 0xe6, 0xcc, 0x0d, 0xce, 0x27, 0x0b, 0x66, 0xb0, 0x53, 0x37, 0x3a, 0xeb, 0xdf, 0xbc, 0xf3, 0xee,
- 0xe6, 0x26, 0x54, 0x58, 0x4d, 0xca, 0xe2, 0x8a, 0xab, 0x12, 0xab, 0x3a, 0x8b, 0x6b, 0x70, 0x6f,
- 0xa6, 0x97, 0x91, 0xb2, 0xb8, 0xfb, 0x50, 0x88, 0x6f, 0x38, 0xdc, 0xa6, 0x20, 0x4c, 0xd8, 0xea,
- 0xbc, 0xe3, 0x1a, 0xc3, 0x6d, 0xbd, 0xe2, 0x17, 0xab, 0xb0, 0x26, 0xee, 0x36, 0xdc, 0xe6, 0x46,
- 0xa5, 0x43, 0x61, 0xe8, 0x0e, 0x9c, 0xc8, 0x1d, 0xc5, 0x29, 0xe3, 0xfd, 0x05, 0x6f, 0x5a, 0x6c,
- 0xb7, 0x05, 0x9e, 0x24, 0x4c, 0x94, 0xd5, 0xba, 0x30, 0x83, 0xf3, 0x38, 0xa4, 0xba, 0x04, 0xab,
- 0x2c, 0xf0, 0x24, 0x61, 0xaa, 0xfd, 0x47, 0x16, 0x0a, 0xf1, 0xcb, 0xf0, 0x01, 0x94, 0xc3, 0x0b,
- 0xd7, 0xf7, 0xdd, 0xf1, 0xb9, 0x31, 0x72, 0xc7, 0xc2, 0x18, 0xfa, 0xe4, 0x3d, 0x37, 0x87, 0x49,
- 0x29, 0x06, 0x75, 0xdc, 0x31, 0x56, 0x60, 0xdd, 0x76, 0x1c, 0xdf, 0x08, 0x87, 0xf4, 0x2f, 0x65,
- 0xc9, 0xce, 0xc7, 0x52, 0xa6, 0x30, 0x8d, 0xa2, 0x28, 0xcd, 0x4f, 0xa1, 0x14, 0x4e, 0x42, 0xdf,
- 0x19, 0xdb, 0x8c, 0x23, 0x37, 0x1f, 0x07, 0x08, 0x0c, 0x65, 0x38, 0x82, 0x8d, 0xe1, 0xc4, 0x72,
- 0xed, 0xd4, 0x48, 0xf2, 0xf3, 0xb1, 0x54, 0x18, 0x2e, 0x19, 0xca, 0x4f, 0x00, 0x4c, 0x2b, 0x72,
- 0x5f, 0x3b, 0x8c, 0x63, 0x65, 0x3e, 0x8e, 0x22, 0x87, 0x74, 0xdc, 0x71, 0xed, 0xdf, 0x32, 0x50,
- 0x88, 0x25, 0x9f, 0x26, 0x33, 0xdf, 0xcc, 0x2b, 0xe0, 0x98, 0xcc, 0x7c, 0x33, 0x23, 0x17, 0xf3,
- 0xcd, 0xbc, 0xb2, 0x4d, 0xe4, 0x62, 0xbe, 0xb9, 0xbe, 0x40, 0xe6, 0x9b, 0x79, 0x85, 0x9b, 0x5a,
- 0x20, 0xf3, 0x4d, 0xed, 0x1b, 0xa8, 0xcc, 0x5c, 0xe2, 0xb9, 0x4d, 0xbd, 0x54, 0x21, 0xa7, 0x79,
- 0x16, 0x6e, 0x42, 0x41, 0x9c, 0x78, 0xb1, 0x45, 0xfa, 0xe3, 0xf7, 0x3b, 0x05, 0x9e, 0xb5, 0x2d,
- 0x88, 0x49, 0x82, 0xae, 0x8d, 0x60, 0xeb, 0xa6, 0x6b, 0x3d, 0xb8, 0x0f, 0x90, 0xdc, 0x13, 0xe2,
- 0xef, 0x78, 0x77, 0x6e, 0xe5, 0xed, 0xd8, 0xd4, 0xcc, 0x0d, 0xa1, 0x14, 0x51, 0xad, 0x07, 0xb9,
- 0xa6, 0x1f, 0xde, 0xa6, 0x44, 0x7a, 0x90, 0xeb, 0x79, 0xca, 0x6d, 0x32, 0xfe, 0x7e, 0x06, 0x4a,
- 0xa9, 0xbb, 0x40, 0x58, 0x9d, 0xb9, 0xa0, 0xb9, 0x24, 0x7b, 0xfa, 0x76, 0xe6, 0x0f, 0x01, 0x4d,
- 0xc2, 0x33, 0xaa, 0x33, 0x86, 0x69, 0x19, 0x97, 0x66, 0xc4, 0x6e, 0xfb, 0x64, 0x1e, 0xae, 0x90,
- 0xca, 0x24, 0x3c, 0xeb, 0xb8, 0x63, 0xc9, 0x3a, 0xa1, 0x95, 0xf5, 0x2f, 0x61, 0x4d, 0xe0, 0xa9,
- 0xcd, 0x21, 0x5c, 0xc4, 0xd4, 0x09, 0x95, 0xf2, 0x1b, 0x33, 0xd7, 0x9d, 0xce, 0x6c, 0xfd, 0x2f,
- 0x33, 0x50, 0x4e, 0x5f, 0xe0, 0xa1, 0xdd, 0xdf, 0x63, 0xbf, 0x16, 0x20, 0xcf, 0x32, 0x12, 0xec,
- 0xc7, 0x08, 0x3c, 0x5b, 0x91, 0xa7, 0xce, 0x2b, 0x73, 0x56, 0x79, 0x79, 0x25, 0x71, 0x5e, 0x59,
- 0x4f, 0x16, 0x0d, 0xe3, 0xbe, 0x2d, 0x6f, 0x5f, 0x9b, 0x3a, 0xbb, 0xac, 0x03, 0x4b, 0x70, 0xd2,
- 0x27, 0xee, 0x4f, 0x17, 0xf9, 0x8f, 0x49, 0xe4, 0xe7, 0xc2, 0x59, 0x86, 0x83, 0x1f, 0x7d, 0xf3,
- 0xf0, 0xdc, 0x4b, 0xc4, 0xb9, 0xed, 0x05, 0xe7, 0x8f, 0xde, 0xfe, 0x0d, 0xd5, 0xb9, 0xf7, 0xc8,
- 0xf4, 0xdd, 0xb3, 0x55, 0xe6, 0x88, 0x3d, 0xfe, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x77,
- 0x8f, 0x47, 0xa3, 0x35, 0x00, 0x00,
+ // 4455 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5b, 0xcb, 0x6f, 0xe3, 0x48,
+ 0x7a, 0x1f, 0x3d, 0x6c, 0x4b, 0x9f, 0x24, 0xbb, 0x5c, 0xed, 0xee, 0xd6, 0xa8, 0xe7, 0xd1, 0x51,
+ 0x66, 0xb0, 0x8d, 0xcd, 0xc6, 0x6d, 0xbb, 0xbb, 0x67, 0xdc, 0xb3, 0x33, 0x9b, 0xa5, 0x28, 0xda,
+ 0xd2, 0xb4, 0x24, 0xaa, 0x8b, 0x94, 0xdd, 0x9e, 0x19, 0x84, 0xa0, 0xc9, 0x92, 0xcc, 0x6d, 0x49,
+ 0x64, 0x48, 0xaa, 0xdd, 0x4e, 0x2e, 0x41, 0x2e, 0x39, 0x04, 0x41, 0x90, 0x53, 0x1e, 0xc0, 0x22,
+ 0x01, 0x12, 0x20, 0xc7, 0x5c, 0x12, 0x20, 0x7b, 0x0e, 0x02, 0x24, 0x87, 0xe4, 0x92, 0x7f, 0x20,
+ 0x87, 0x00, 0x49, 0xfe, 0x8b, 0xa0, 0xaa, 0x48, 0x89, 0x72, 0xbb, 0xb7, 0x25, 0x8f, 0xf7, 0x62,
+ 0xb3, 0x1e, 0xbf, 0x1f, 0xab, 0xbe, 0x62, 0x7d, 0xf5, 0x3d, 0x4a, 0xf0, 0x89, 0x75, 0xe6, 0xbb,
+ 0x23, 0x67, 0x32, 0x72, 0x83, 0x87, 0x96, 0x3b, 0xee, 0x3b, 0x83, 0x87, 0xa6, 0xe7, 0x3c, 0x0c,
+ 0x5d, 0xcf, 0x1d, 0xba, 0x83, 0x8b, 0x6d, 0xcf, 0x77, 0x43, 0x17, 0xdf, 0x9e, 0xf5, 0xda, 0x16,
+ 0xbd, 0xb6, 0x4d, 0xcf, 0xa9, 0x7c, 0x7a, 0x35, 0xd8, 0x72, 0x47, 0x9e, 0x3b, 0xa6, 0xe3, 0x50,
+ 0xa0, 0x2b, 0x1f, 0x0d, 0x5c, 0x77, 0x30, 0xa4, 0x0f, 0x79, 0xe9, 0x74, 0xd2, 0x7f, 0x78, 0xee,
+ 0x9b, 0x9e, 0x47, 0xfd, 0x40, 0xb4, 0x57, 0xff, 0x63, 0x15, 0x72, 0x7a, 0xf4, 0x42, 0xbc, 0x0e,
+ 0x69, 0xc7, 0x2e, 0xa7, 0xee, 0xa7, 0x1e, 0xe4, 0x49, 0xda, 0xb1, 0xf1, 0x3e, 0x64, 0xc3, 0x0b,
+ 0x8f, 0x96, 0xd3, 0xf7, 0x53, 0x0f, 0xd6, 0xf7, 0x3e, 0xd9, 0xbe, 0x72, 0x24, 0xdb, 0x31, 0x7c,
+ 0x5b, 0xbf, 0xf0, 0x28, 0xe1, 0x08, 0x4c, 0xa0, 0x60, 0xd3, 0xc0, 0xf2, 0x1d, 0x2f, 0x74, 0xdc,
+ 0x71, 0x39, 0x73, 0x3f, 0xf3, 0xa0, 0xb0, 0xb7, 0xf3, 0x2e, 0x82, 0xfa, 0x0c, 0xa2, 0x8c, 0x43,
+ 0xff, 0x82, 0x24, 0x49, 0x30, 0x01, 0x74, 0x66, 0xfa, 0xf6, 0xb9, 0xe9, 0x53, 0xa3, 0x4f, 0xcd,
+ 0x70, 0xe2, 0xd3, 0x72, 0xf6, 0x7e, 0xea, 0x41, 0x61, 0xef, 0x07, 0x6f, 0x21, 0x6e, 0x44, 0xdd,
+ 0x0f, 0x44, 0xef, 0x80, 0x6c, 0x9c, 0xcd, 0xd7, 0x54, 0x7e, 0x02, 0xe8, 0xf2, 0x4b, 0x31, 0x82,
+ 0xcc, 0x4b, 0x7a, 0x11, 0x89, 0x81, 0x3d, 0xe2, 0x2d, 0x58, 0x79, 0x65, 0x0e, 0x27, 0x42, 0x10,
+ 0x79, 0x22, 0x0a, 0x5f, 0xa4, 0xf7, 0x53, 0xd5, 0x3f, 0xc9, 0x42, 0x96, 0x4d, 0x1b, 0x23, 0x28,
+ 0xea, 0x27, 0x5d, 0xc5, 0xe8, 0x75, 0x9e, 0x75, 0xd4, 0xe3, 0x0e, 0x7a, 0x0f, 0x03, 0xac, 0x6a,
+ 0x32, 0x51, 0x94, 0x0e, 0x4a, 0xe1, 0x0d, 0x28, 0x1c, 0xa8, 0xa4, 0x6d, 0x1c, 0x48, 0xb2, 0xae,
+ 0x12, 0x94, 0xc6, 0x79, 0x58, 0x91, 0x7a, 0xf5, 0xa6, 0x8a, 0x32, 0xbc, 0x9f, 0x7e, 0xd2, 0xea,
+ 0x69, 0x28, 0x8b, 0x8b, 0x90, 0x7b, 0xa6, 0x9c, 0xd4, 0x54, 0x89, 0xd4, 0xd1, 0x0a, 0x2e, 0xc0,
+ 0x9a, 0xde, 0x50, 0x48, 0x5b, 0x6a, 0xa1, 0x55, 0xd6, 0x4d, 0x96, 0xda, 0x0a, 0x91, 0xd0, 0x1a,
+ 0x7e, 0x00, 0x9f, 0x48, 0xb2, 0xac, 0xb4, 0x14, 0xa2, 0xb6, 0x15, 0x5d, 0x21, 0xc6, 0xe1, 0x09,
+ 0x51, 0x35, 0x59, 0xed, 0x2a, 0x46, 0x5b, 0x3a, 0xec, 0x28, 0xba, 0xa8, 0x46, 0x39, 0xfe, 0xe2,
+ 0x66, 0xe7, 0x50, 0x21, 0x5d, 0xd2, 0xec, 0xe8, 0x28, 0x8f, 0xb7, 0x00, 0x75, 0x89, 0xfa, 0xa2,
+ 0xd9, 0x6e, 0xea, 0x27, 0x86, 0xa6, 0x74, 0x34, 0x95, 0x20, 0xc0, 0x18, 0xd6, 0xeb, 0x52, 0xef,
+ 0xb0, 0xc1, 0xb8, 0xc4, 0xdb, 0x0b, 0xb8, 0x0c, 0x5b, 0x1d, 0xb5, 0x63, 0x1c, 0xa9, 0x2d, 0x49,
+ 0x6f, 0xb6, 0x14, 0x43, 0xd3, 0x55, 0x22, 0x1d, 0x2a, 0xa8, 0x88, 0xd7, 0x20, 0x43, 0xa4, 0x36,
+ 0x2a, 0xe1, 0x1c, 0x64, 0x8f, 0x9b, 0x07, 0x4d, 0xb4, 0xce, 0x08, 0x64, 0xa5, 0xd5, 0xea, 0xb5,
+ 0xa4, 0x98, 0x60, 0x03, 0x97, 0x20, 0xaf, 0xd5, 0x0d, 0xa2, 0x48, 0x75, 0x85, 0x20, 0x84, 0x6f,
+ 0xc1, 0x46, 0x5b, 0x65, 0xf3, 0xe1, 0xed, 0x46, 0x4f, 0xab, 0xa1, 0x4d, 0xd6, 0xa7, 0xd6, 0xea,
+ 0x29, 0xba, 0xaa, 0xea, 0x0d, 0x84, 0xf1, 0x3a, 0x40, 0x4d, 0x22, 0x44, 0x69, 0x7d, 0x2d, 0xc9,
+ 0xcf, 0xd0, 0x2d, 0x26, 0xd5, 0xae, 0x7a, 0xcc, 0x06, 0xd5, 0xd3, 0x75, 0xb5, 0x83, 0xb6, 0xf0,
+ 0x26, 0x94, 0x8e, 0xd4, 0x56, 0xaf, 0xad, 0xc4, 0x55, 0xb7, 0xf1, 0x2a, 0xa4, 0x15, 0x19, 0xdd,
+ 0x61, 0x32, 0xd5, 0xd5, 0x9e, 0xdc, 0x40, 0x77, 0xd9, 0x08, 0xf5, 0x6e, 0x1b, 0x95, 0x71, 0x05,
+ 0xee, 0xb4, 0x9b, 0x32, 0x51, 0xbb, 0x0d, 0xb5, 0xa3, 0x18, 0xed, 0x9e, 0xae, 0x18, 0xda, 0x71,
+ 0x53, 0x97, 0x1b, 0xe8, 0x7d, 0x26, 0xde, 0x9a, 0xa4, 0xeb, 0x0a, 0x39, 0x41, 0x15, 0x36, 0x95,
+ 0x46, 0xbd, 0xdd, 0x44, 0xf7, 0x18, 0x56, 0x53, 0x65, 0xf4, 0x01, 0x7b, 0x68, 0x74, 0x35, 0xf4,
+ 0x21, 0x1b, 0x45, 0xbd, 0x6b, 0xc8, 0x6a, 0xe7, 0x48, 0x21, 0x4c, 0xac, 0x1f, 0xb1, 0xa6, 0xae,
+ 0xaa, 0xa0, 0x8f, 0x67, 0x03, 0xd4, 0x7a, 0xdd, 0x6e, 0xeb, 0x04, 0xdd, 0xaf, 0xfe, 0x63, 0x0a,
+ 0x72, 0xf5, 0x89, 0x6f, 0xf2, 0x4f, 0x36, 0xde, 0x40, 0xa9, 0x5f, 0xba, 0x81, 0xe2, 0xee, 0xc9,
+ 0x0d, 0x34, 0xf7, 0xc9, 0xad, 0x44, 0x9f, 0x5c, 0xf5, 0xe4, 0xad, 0x5f, 0x1b, 0x82, 0x62, 0xbb,
+ 0xd9, 0x6a, 0x35, 0x35, 0x45, 0x56, 0x3b, 0x75, 0x0d, 0xa5, 0xd8, 0xf4, 0xe2, 0x42, 0x9a, 0x15,
+ 0xda, 0xcd, 0x4e, 0x4f, 0x57, 0x34, 0x94, 0x61, 0x82, 0x6a, 0xa8, 0x3d, 0xc2, 0x3e, 0xb8, 0x1c,
+ 0x64, 0xeb, 0xd2, 0x89, 0x86, 0x56, 0xaa, 0x7f, 0x4c, 0x01, 0x5d, 0xde, 0x2f, 0x58, 0x82, 0x95,
+ 0x49, 0x70, 0x6a, 0x58, 0x7c, 0x02, 0x85, 0xbd, 0x1f, 0x2d, 0xb8, 0xcf, 0xb6, 0x7b, 0xc1, 0xa9,
+ 0x4c, 0xb2, 0x93, 0xe0, 0x54, 0x8e, 0x29, 0x4c, 0x3e, 0x91, 0xe5, 0x28, 0x24, 0x4e, 0x21, 0xe1,
+ 0x16, 0xe4, 0x2c, 0x3a, 0x1c, 0x4e, 0x86, 0xa6, 0x5f, 0xce, 0x70, 0x96, 0x9d, 0x45, 0x59, 0xe4,
+ 0x08, 0x47, 0xa6, 0x0c, 0xf8, 0xa7, 0x90, 0x3d, 0xb3, 0x47, 0x4e, 0xa4, 0x3a, 0x16, 0x1e, 0x4f,
+ 0xc3, 0x1e, 0x39, 0x84, 0x23, 0xf1, 0x37, 0x90, 0xef, 0x9f, 0x1b, 0xa2, 0x73, 0x79, 0x85, 0xd3,
+ 0x7c, 0xb5, 0x28, 0xcd, 0x81, 0xe3, 0x8f, 0x58, 0x85, 0xcc, 0xfb, 0x44, 0x0b, 0x4f, 0x72, 0xfd,
+ 0x73, 0x51, 0x81, 0x65, 0x58, 0x31, 0x27, 0xb6, 0xe3, 0x96, 0x57, 0x39, 0xef, 0x6f, 0x2e, 0xca,
+ 0x2b, 0x31, 0x10, 0x11, 0x58, 0x7c, 0x00, 0xab, 0x96, 0x39, 0xa2, 0xbe, 0x59, 0x5e, 0xe3, 0x2c,
+ 0xdb, 0x0b, 0x8b, 0x8b, 0xa3, 0x48, 0x84, 0xc6, 0xdf, 0x42, 0xc9, 0xb4, 0x2c, 0x3a, 0xa4, 0xbe,
+ 0x3b, 0xa2, 0x21, 0xf5, 0xcb, 0x39, 0x4e, 0xf7, 0x64, 0xe1, 0x41, 0x25, 0xc1, 0x64, 0x9e, 0x0b,
+ 0xab, 0x90, 0x1f, 0x5c, 0xf8, 0x6e, 0x60, 0xb9, 0x1e, 0x2d, 0xe7, 0x39, 0xf1, 0xee, 0xa2, 0xc4,
+ 0x87, 0x31, 0x90, 0xcc, 0x38, 0xf0, 0x0b, 0x28, 0x8e, 0xcc, 0xc1, 0x98, 0x86, 0xd1, 0x60, 0x81,
+ 0x73, 0x3e, 0x5e, 0x94, 0xb3, 0x9d, 0xc0, 0x92, 0x39, 0x26, 0x7c, 0x04, 0xc5, 0xa1, 0x33, 0x38,
+ 0x0b, 0x8d, 0x80, 0x8e, 0x03, 0xd7, 0x2f, 0x17, 0x38, 0xf3, 0xa3, 0x45, 0x99, 0x5b, 0x0c, 0xab,
+ 0x71, 0x28, 0x29, 0x0c, 0x67, 0x05, 0xb6, 0x4e, 0x81, 0xe5, 0x53, 0x3a, 0x2e, 0x17, 0x97, 0x5b,
+ 0x27, 0x8d, 0xa3, 0x48, 0x84, 0xc6, 0x1a, 0x14, 0xfa, 0xae, 0x3f, 0x32, 0xfa, 0xa6, 0x15, 0xba,
+ 0x7e, 0xb9, 0xc4, 0xc9, 0xf6, 0x16, 0xfe, 0x24, 0x5d, 0x7f, 0x74, 0xc0, 0x91, 0x04, 0xfa, 0xd3,
+ 0x67, 0x3e, 0xb8, 0xf0, 0x62, 0x38, 0x09, 0xca, 0xeb, 0x4b, 0x0e, 0x8e, 0xa3, 0x48, 0x84, 0x66,
+ 0xbb, 0xf7, 0x25, 0xbd, 0x38, 0x75, 0x4d, 0xdf, 0x2e, 0x6f, 0x2c, 0xb7, 0x7b, 0x9f, 0x45, 0x38,
+ 0x32, 0x65, 0x60, 0xa3, 0x1a, 0xd1, 0x91, 0xeb, 0x5f, 0x94, 0xd1, 0x72, 0xa3, 0x6a, 0x73, 0x14,
+ 0x89, 0xd0, 0xb8, 0x07, 0x85, 0xbe, 0x33, 0x1e, 0x50, 0xdf, 0xf3, 0x9d, 0x71, 0x58, 0xde, 0x5c,
+ 0x6e, 0x45, 0x0f, 0x66, 0x50, 0x92, 0xe4, 0xc1, 0x4d, 0x58, 0x0b, 0x42, 0xd7, 0x37, 0x07, 0xb4,
+ 0x8c, 0x39, 0xe5, 0xc3, 0xc5, 0xa5, 0xc6, 0x61, 0x24, 0xc6, 0xb3, 0xfd, 0x71, 0x3a, 0x9c, 0xd0,
+ 0xd0, 0x75, 0xc3, 0xb3, 0xf2, 0xad, 0xe5, 0xf6, 0x47, 0x2d, 0x06, 0x92, 0x19, 0x07, 0x26, 0x00,
+ 0xa7, 0xa6, 0xef, 0xd3, 0xe1, 0xcf, 0x4c, 0xeb, 0x65, 0x79, 0x6b, 0xb9, 0x8f, 0xa4, 0xc6, 0x91,
+ 0x5f, 0x9b, 0xd6, 0x4b, 0x92, 0x60, 0x61, 0xca, 0xf4, 0xdc, 0xe9, 0x3b, 0xe5, 0xbb, 0xcb, 0x29,
+ 0xd3, 0x63, 0xa7, 0xef, 0x10, 0x8e, 0xc4, 0xcf, 0xa1, 0xe8, 0xb9, 0xe7, 0xd4, 0x37, 0x4e, 0x27,
+ 0x61, 0xe8, 0x8e, 0xcb, 0xb7, 0x97, 0x5b, 0xd6, 0x1a, 0x47, 0x91, 0x02, 0xe7, 0x10, 0x05, 0xac,
+ 0x41, 0xe9, 0x95, 0x3b, 0x9c, 0x8c, 0x68, 0xcc, 0x79, 0xe7, 0x5a, 0x9c, 0x45, 0x41, 0x12, 0x91,
+ 0xbe, 0x84, 0x5b, 0x74, 0x74, 0x4a, 0x6d, 0x9b, 0xda, 0x4c, 0xf5, 0x87, 0xbe, 0x3b, 0x1c, 0x52,
+ 0xbf, 0x5c, 0xe6, 0xd4, 0x5f, 0x2c, 0x4a, 0xad, 0x44, 0x14, 0xf2, 0x94, 0x81, 0x60, 0xfa, 0x46,
+ 0x1d, 0x9e, 0xc0, 0xdd, 0xd0, 0x9f, 0x04, 0x21, 0xb5, 0x0d, 0x6f, 0x68, 0x86, 0x7c, 0x73, 0x8f,
+ 0x5c, 0x7b, 0x32, 0xa4, 0xe5, 0xf7, 0x97, 0x3b, 0x6f, 0x74, 0x41, 0xd3, 0x8d, 0x58, 0xda, 0x9c,
+ 0x84, 0xdc, 0x0e, 0xaf, 0xaa, 0x66, 0x5f, 0xc8, 0x99, 0x1b, 0x9e, 0xbb, 0xbe, 0xed, 0x8c, 0x07,
+ 0xe5, 0xca, 0x72, 0x5f, 0x48, 0x63, 0x8a, 0x24, 0x09, 0x16, 0xb6, 0x23, 0x6c, 0x27, 0xf0, 0x86,
+ 0xe6, 0x45, 0xf9, 0xde, 0x72, 0x3b, 0xa2, 0x2e, 0x60, 0x24, 0xc6, 0x33, 0x4d, 0x12, 0xba, 0x13,
+ 0xeb, 0xcc, 0x33, 0xed, 0xf2, 0x07, 0xcb, 0x69, 0x12, 0x3d, 0xc2, 0x91, 0x29, 0x03, 0xf6, 0xe1,
+ 0xce, 0xc8, 0xb1, 0x7c, 0xd7, 0x3b, 0x73, 0xc7, 0xd4, 0x18, 0x4d, 0x42, 0x6a, 0x04, 0xe7, 0x4e,
+ 0x68, 0x9d, 0x95, 0x3f, 0xe4, 0xdc, 0x5f, 0x2e, 0xac, 0x59, 0xa6, 0x2c, 0xed, 0x49, 0x48, 0x35,
+ 0xce, 0x41, 0xb6, 0x46, 0x57, 0xd4, 0x32, 0x61, 0x9c, 0x9a, 0x61, 0x48, 0xfd, 0x8b, 0xf2, 0x47,
+ 0xcb, 0x09, 0xa3, 0x26, 0x60, 0x24, 0xc6, 0xe3, 0xef, 0x60, 0xdd, 0xf3, 0x9d, 0x57, 0xa6, 0x75,
+ 0x61, 0x44, 0x67, 0xc8, 0xc7, 0xcb, 0x1d, 0xce, 0x5d, 0x81, 0x8e, 0x8e, 0x92, 0x92, 0x97, 0x2c,
+ 0xe2, 0xaf, 0x20, 0x13, 0xb8, 0x56, 0xf9, 0x3e, 0xa7, 0xfc, 0x8d, 0x85, 0x75, 0x98, 0x6b, 0x11,
+ 0x86, 0xc3, 0x06, 0x14, 0x6d, 0x8f, 0x6d, 0x93, 0x57, 0xd4, 0x67, 0x47, 0xf1, 0xaf, 0x2d, 0x27,
+ 0xd1, 0x68, 0xe5, 0xbb, 0xae, 0x1f, 0xca, 0x31, 0x07, 0x29, 0xd8, 0xde, 0xb4, 0xc0, 0xc6, 0x77,
+ 0xe6, 0x05, 0xe5, 0xea, 0x72, 0xe3, 0x6b, 0x78, 0x01, 0x61, 0x38, 0x06, 0xf7, 0x5c, 0x5a, 0xfe,
+ 0xf5, 0xe5, 0xe0, 0x5d, 0x57, 0x21, 0x0c, 0xc7, 0xec, 0x01, 0xa1, 0xb3, 0x82, 0x89, 0xe7, 0x0d,
+ 0x2f, 0xca, 0x9f, 0x2c, 0x77, 0x7a, 0x74, 0x19, 0x56, 0xe3, 0xd0, 0x48, 0x71, 0x89, 0x02, 0x53,
+ 0xf9, 0x9e, 0xef, 0xbe, 0x76, 0x46, 0x4e, 0x78, 0x51, 0xfe, 0x74, 0x39, 0x95, 0xdf, 0x8d, 0x81,
+ 0x64, 0xc6, 0x51, 0xf9, 0x10, 0x56, 0x64, 0x77, 0x32, 0x0e, 0x67, 0xee, 0x04, 0x33, 0xe4, 0x4b,
+ 0x91, 0x3b, 0x51, 0xf9, 0x87, 0x34, 0x64, 0x99, 0xa9, 0xce, 0xac, 0x4e, 0x8b, 0xf5, 0x8b, 0xec,
+ 0xfc, 0x85, 0xad, 0x4e, 0x4e, 0x4e, 0x04, 0x16, 0x1f, 0xc2, 0x8a, 0xe7, 0xfa, 0x61, 0x50, 0x4e,
+ 0x73, 0x6f, 0x7f, 0x77, 0x19, 0x67, 0x61, 0x9b, 0xad, 0x35, 0x11, 0xf8, 0xca, 0xcf, 0x53, 0x90,
+ 0x65, 0x65, 0xdc, 0x85, 0x9c, 0xe7, 0x06, 0x0e, 0x0f, 0x21, 0x08, 0x17, 0xea, 0xf1, 0xe2, 0x32,
+ 0xf6, 0xc3, 0x6e, 0x84, 0x25, 0x53, 0x16, 0x2c, 0xc3, 0xba, 0x33, 0xb6, 0xe9, 0x6b, 0xc3, 0x7d,
+ 0x45, 0x7d, 0xdf, 0xb1, 0x69, 0xe4, 0x96, 0x7c, 0xb0, 0x2d, 0xe2, 0x24, 0xdb, 0x71, 0x9c, 0x64,
+ 0xbb, 0xd7, 0x1c, 0x87, 0x8f, 0xf6, 0x8e, 0x98, 0x9c, 0x48, 0x89, 0x63, 0xd4, 0x08, 0x52, 0x79,
+ 0xc6, 0xa5, 0x26, 0xdd, 0x88, 0xd4, 0x2a, 0x7f, 0xb0, 0x02, 0xb9, 0xd8, 0x4b, 0x61, 0xfa, 0xc1,
+ 0xf3, 0x69, 0x40, 0x23, 0xce, 0xf5, 0xc5, 0xf5, 0x43, 0x57, 0xc0, 0x48, 0x8c, 0x67, 0x2b, 0x3e,
+ 0x72, 0x6d, 0x3a, 0x8c, 0x63, 0x16, 0xbc, 0x80, 0x9f, 0x47, 0x0e, 0x69, 0x86, 0xb3, 0x7f, 0xb5,
+ 0xac, 0x1b, 0x35, 0x7d, 0x48, 0x78, 0xaa, 0xdb, 0x70, 0xcb, 0x0c, 0x43, 0xd3, 0x3a, 0x33, 0x4c,
+ 0x6f, 0x6c, 0xf8, 0xf4, 0x77, 0x26, 0x8e, 0x4f, 0x6d, 0xee, 0x5e, 0xe5, 0xc8, 0xa6, 0x68, 0x92,
+ 0xbc, 0x31, 0x89, 0x1a, 0xf0, 0x9f, 0xa6, 0xe0, 0x23, 0xfb, 0x62, 0x6c, 0x8e, 0x1c, 0xcb, 0x10,
+ 0xbb, 0xc8, 0xa7, 0xf6, 0xc4, 0x62, 0xcb, 0x33, 0xef, 0x53, 0xb5, 0x96, 0x1e, 0x5d, 0x5d, 0xd0,
+ 0xf2, 0xfd, 0x45, 0x62, 0x52, 0xe1, 0x58, 0x91, 0x7b, 0xf6, 0xdb, 0x1b, 0x2b, 0xbf, 0x48, 0xc1,
+ 0xbd, 0x5f, 0x02, 0xc6, 0x5b, 0x90, 0x1d, 0x78, 0x8e, 0x2b, 0x76, 0x4f, 0xe3, 0x3d, 0xc2, 0x4b,
+ 0xf8, 0x53, 0x28, 0x31, 0xa9, 0x8e, 0x8c, 0x91, 0x39, 0x36, 0x07, 0xd4, 0xe7, 0xa2, 0xce, 0x35,
+ 0xde, 0x23, 0x45, 0x5e, 0xdd, 0x16, 0xb5, 0xf8, 0xc7, 0x50, 0x08, 0xcd, 0xd3, 0x21, 0x0d, 0xd9,
+ 0x11, 0x4e, 0x23, 0x0f, 0xb6, 0xf2, 0xc6, 0x07, 0x57, 0x73, 0xdd, 0xa1, 0xf8, 0xdc, 0x40, 0x74,
+ 0x6f, 0xbb, 0x36, 0xad, 0xdd, 0x7f, 0x97, 0xb0, 0xaa, 0x35, 0x28, 0x26, 0x57, 0x05, 0x6f, 0x40,
+ 0xa1, 0xa3, 0xea, 0x46, 0x97, 0x28, 0x9a, 0xd2, 0xd1, 0x45, 0x68, 0x60, 0x1a, 0x9b, 0x69, 0xe9,
+ 0x8a, 0x08, 0x47, 0x4d, 0x6b, 0x9e, 0x1c, 0xa2, 0x74, 0xe5, 0x39, 0x64, 0x99, 0x7f, 0x7b, 0x83,
+ 0xdf, 0x5f, 0x45, 0x82, 0xdb, 0x57, 0xfa, 0xba, 0x57, 0xab, 0x22, 0x8c, 0x21, 0x3b, 0x32, 0x83,
+ 0x97, 0x5c, 0x84, 0x25, 0xc2, 0x9f, 0x2b, 0x7f, 0x55, 0x84, 0x15, 0xee, 0xd7, 0xe2, 0x13, 0x28,
+ 0x70, 0xcf, 0xd6, 0xb0, 0x5c, 0x9b, 0x5a, 0xd1, 0xd8, 0xf6, 0x97, 0xf2, 0x8d, 0xc5, 0x5f, 0x99,
+ 0xe1, 0x09, 0x98, 0xd3, 0x67, 0xfc, 0x02, 0x0a, 0x81, 0x47, 0xcd, 0x97, 0xd4, 0x37, 0xcc, 0x91,
+ 0x17, 0x85, 0x3a, 0x3f, 0x5f, 0x92, 0x7a, 0xe4, 0x0d, 0x9d, 0xbe, 0x43, 0x7d, 0x02, 0x11, 0x97,
+ 0x34, 0xf2, 0xb0, 0x09, 0x1b, 0x67, 0xd4, 0xb4, 0x85, 0x7d, 0x21, 0x06, 0x9e, 0xf9, 0x9e, 0x03,
+ 0x5f, 0x9f, 0x12, 0x8a, 0xc1, 0xeb, 0xb0, 0x3e, 0x74, 0x6c, 0x63, 0x66, 0x6b, 0x44, 0x51, 0x8d,
+ 0x25, 0x55, 0x51, 0x69, 0xe8, 0xd8, 0x33, 0x2b, 0x06, 0x1f, 0xc1, 0xc6, 0xa9, 0x19, 0xd0, 0x24,
+ 0xed, 0xca, 0x75, 0x68, 0xd7, 0x19, 0x4b, 0x82, 0xf7, 0x18, 0x36, 0x13, 0xa2, 0x16, 0x12, 0x8b,
+ 0xe2, 0x1c, 0x3f, 0x7c, 0x0b, 0xb3, 0x3c, 0x0d, 0x67, 0xcf, 0x64, 0x8c, 0x66, 0x32, 0x16, 0x35,
+ 0xf8, 0x5b, 0x28, 0x5a, 0xa6, 0x6f, 0x47, 0x3b, 0x22, 0x28, 0xaf, 0xf1, 0x03, 0x68, 0x49, 0x31,
+ 0xcb, 0xa6, 0x6f, 0x47, 0xba, 0xa2, 0x60, 0x4d, 0x9f, 0x03, 0x6c, 0x41, 0xc1, 0xf2, 0xcd, 0x20,
+ 0xd6, 0x4d, 0x39, 0xbe, 0x84, 0xb5, 0x6b, 0x2d, 0x21, 0xeb, 0xa6, 0x85, 0xfe, 0xc4, 0x62, 0x6d,
+ 0x04, 0x18, 0x6d, 0xa4, 0x80, 0xfe, 0x2e, 0x03, 0x30, 0x1b, 0x00, 0xbe, 0x07, 0x79, 0x3e, 0xa1,
+ 0xb1, 0x39, 0xa2, 0x51, 0x20, 0x3a, 0xc7, 0x2a, 0x3a, 0xe6, 0x88, 0xe2, 0x1f, 0x03, 0x4c, 0xac,
+ 0x91, 0x11, 0x4c, 0xfa, 0x7d, 0xe7, 0xf5, 0x5b, 0xcf, 0x2f, 0x2d, 0xf4, 0x9d, 0xf1, 0x40, 0x28,
+ 0x94, 0xfc, 0xc4, 0x1a, 0x69, 0xbc, 0x3b, 0x36, 0x05, 0x38, 0x9a, 0x4c, 0xe6, 0xc6, 0x26, 0xc3,
+ 0x5e, 0x11, 0x0d, 0xfe, 0x92, 0xc0, 0xb2, 0xbf, 0x0a, 0x81, 0xe1, 0x73, 0xb8, 0x13, 0xb8, 0x93,
+ 0xb1, 0x6d, 0x70, 0x39, 0x39, 0x63, 0x27, 0x4c, 0x1e, 0x1e, 0x37, 0xf3, 0xbe, 0x5b, 0xfc, 0x0d,
+ 0x6c, 0x59, 0x9a, 0x63, 0x27, 0x14, 0xad, 0xd5, 0x9f, 0xa7, 0x00, 0x66, 0x3b, 0x12, 0xdf, 0x85,
+ 0x5b, 0x3c, 0x90, 0x6f, 0xc8, 0x6a, 0x5d, 0x91, 0xe7, 0xc3, 0xff, 0x44, 0x7f, 0xf2, 0xd9, 0xfe,
+ 0x1e, 0x4a, 0xe1, 0x22, 0xe4, 0xa4, 0x96, 0xcc, 0x0a, 0x4d, 0x11, 0x8b, 0x8d, 0x4a, 0x22, 0xfa,
+ 0x5f, 0x97, 0x3e, 0xdf, 0xdb, 0x7d, 0x8a, 0x72, 0xb8, 0x04, 0xf9, 0x8e, 0xd4, 0xdb, 0xdf, 0x6f,
+ 0xed, 0x3d, 0xa9, 0x21, 0x60, 0xfd, 0x64, 0xed, 0xf1, 0x5e, 0xeb, 0xf1, 0x1e, 0x2a, 0xe0, 0x75,
+ 0x80, 0x98, 0xe2, 0x48, 0x43, 0x45, 0xd6, 0x78, 0x2c, 0xd7, 0x9f, 0x3e, 0xda, 0x7f, 0x82, 0x4a,
+ 0xd5, 0x6c, 0x2e, 0x8b, 0xd6, 0xaa, 0xd9, 0x5c, 0x1e, 0xe5, 0xab, 0x7f, 0x91, 0x82, 0xfc, 0x6c,
+ 0x67, 0xdc, 0x86, 0x4d, 0xa9, 0xdd, 0x6d, 0x35, 0x0f, 0x9a, 0x0a, 0x49, 0x0c, 0xae, 0x08, 0xb9,
+ 0xb6, 0xf4, 0xe2, 0xe9, 0xfe, 0xa3, 0x27, 0x9f, 0x8b, 0xac, 0x83, 0x28, 0x7d, 0xfe, 0x08, 0xad,
+ 0xcc, 0x4a, 0x9f, 0xed, 0x88, 0xb4, 0x03, 0xd1, 0x77, 0x77, 0x76, 0x9f, 0xa0, 0xb5, 0x68, 0xe0,
+ 0xbb, 0x3b, 0xbb, 0xbb, 0x28, 0xcf, 0x0a, 0xa2, 0xa1, 0x2b, 0x86, 0x2a, 0x5a, 0x9e, 0xa2, 0xc2,
+ 0x8c, 0xe0, 0xe9, 0x0e, 0x2a, 0x56, 0xb3, 0xb9, 0x14, 0xca, 0x54, 0xb3, 0xb9, 0x1c, 0xca, 0x55,
+ 0x55, 0xd8, 0xba, 0x4a, 0xd0, 0xf8, 0x63, 0xb8, 0x17, 0x0b, 0xb1, 0x73, 0xd0, 0x3c, 0x34, 0x34,
+ 0x9d, 0xf4, 0x64, 0xbd, 0x47, 0x14, 0xa3, 0xa3, 0x76, 0x14, 0x21, 0xcc, 0xba, 0xa2, 0x35, 0x0f,
+ 0x3b, 0x28, 0xc5, 0x13, 0x21, 0x6a, 0xbb, 0xad, 0x76, 0x50, 0xba, 0xf2, 0x67, 0x6b, 0xb0, 0x2a,
+ 0x62, 0x96, 0x58, 0x85, 0x35, 0x9b, 0xbe, 0x72, 0x2c, 0x1a, 0x94, 0xb3, 0x7c, 0xfb, 0x3f, 0x59,
+ 0x2e, 0xe8, 0xb9, 0x5d, 0xe7, 0x68, 0x12, 0xb3, 0x54, 0xfe, 0x27, 0x03, 0xab, 0xa2, 0x0e, 0x1f,
+ 0x41, 0xde, 0x19, 0x87, 0xd4, 0xef, 0x9b, 0x56, 0x9c, 0x0c, 0xdb, 0x5f, 0x92, 0xbd, 0x19, 0xe3,
+ 0xc9, 0x8c, 0x0a, 0xb7, 0x61, 0xb5, 0x6f, 0x5a, 0xcc, 0xd7, 0x16, 0x1b, 0x71, 0xd9, 0x21, 0x1f,
+ 0x70, 0x30, 0x89, 0x48, 0xf0, 0x77, 0x50, 0x70, 0x7d, 0x87, 0x8e, 0x43, 0x7e, 0xd0, 0x46, 0x1b,
+ 0xef, 0x8b, 0x25, 0x39, 0xd5, 0x19, 0x03, 0x49, 0xd2, 0xb1, 0x73, 0xbb, 0x3f, 0x34, 0x07, 0x01,
+ 0xdf, 0x60, 0x25, 0x22, 0x0a, 0x18, 0x41, 0xc6, 0xb1, 0x83, 0xf2, 0xea, 0xfd, 0xcc, 0x83, 0x3c,
+ 0x61, 0x8f, 0xf8, 0x28, 0xe1, 0x98, 0x0a, 0x7f, 0x7a, 0xed, 0x7a, 0xa6, 0xc4, 0xd4, 0x25, 0x15,
+ 0xbe, 0xf3, 0x0b, 0x40, 0x09, 0x7f, 0x5d, 0x18, 0xde, 0xb9, 0xeb, 0x1c, 0x4b, 0x1b, 0x33, 0x1a,
+ 0x5e, 0x51, 0x6d, 0x42, 0x7e, 0xba, 0x3c, 0x6c, 0xc7, 0x34, 0x3b, 0xba, 0x42, 0x0e, 0x24, 0x39,
+ 0x99, 0x5f, 0xd9, 0x84, 0x52, 0xa2, 0x5a, 0xab, 0xa1, 0x14, 0xc6, 0xb0, 0x3e, 0xab, 0x6a, 0x37,
+ 0xbb, 0x4d, 0x94, 0xae, 0xfe, 0x16, 0xac, 0x8a, 0x45, 0x61, 0xad, 0x07, 0x92, 0xdc, 0xec, 0x1c,
+ 0xce, 0x27, 0x69, 0xa2, 0xba, 0x03, 0xa2, 0x76, 0xf4, 0x28, 0x31, 0x28, 0x6a, 0x6a, 0x92, 0xfc,
+ 0x0c, 0xa5, 0xab, 0xe7, 0x50, 0x48, 0xac, 0x00, 0x53, 0x2f, 0x2a, 0x69, 0x2a, 0x1d, 0x5d, 0xd2,
+ 0x9b, 0x6a, 0x67, 0x7e, 0x3c, 0xc9, 0x86, 0x1d, 0x31, 0x9e, 0x64, 0xd5, 0xd3, 0x1d, 0x94, 0xc6,
+ 0xb7, 0x60, 0x23, 0x59, 0xb7, 0xbb, 0xbf, 0x83, 0x32, 0x97, 0x2b, 0xf7, 0x3e, 0xdf, 0x41, 0xd9,
+ 0x6a, 0x1b, 0x56, 0x0e, 0xf8, 0x8a, 0xae, 0x03, 0x1c, 0xb4, 0xa4, 0x43, 0x2d, 0xde, 0x7b, 0x77,
+ 0xe1, 0x96, 0x28, 0x6b, 0xbd, 0x6e, 0x57, 0x25, 0xba, 0xb1, 0xbb, 0xb3, 0xbf, 0xd3, 0x45, 0x29,
+ 0x7c, 0x0f, 0xee, 0xce, 0x37, 0x48, 0x3d, 0x5d, 0x3d, 0x50, 0xe5, 0x9e, 0x86, 0xd2, 0x95, 0x7f,
+ 0x4f, 0x41, 0x69, 0x2e, 0xfc, 0x8f, 0xbf, 0x83, 0x4d, 0x66, 0xab, 0xcc, 0x27, 0x14, 0xae, 0x69,
+ 0x65, 0xa2, 0xa1, 0x63, 0xcf, 0xb3, 0xff, 0x36, 0x60, 0x6e, 0xb3, 0xcc, 0xd3, 0xa7, 0xaf, 0x47,
+ 0xbf, 0xc9, 0xa8, 0xe6, 0xf8, 0x99, 0x87, 0x90, 0x9f, 0x66, 0x1d, 0xb0, 0x0e, 0xcc, 0x64, 0x32,
+ 0x66, 0xf9, 0x8b, 0x6b, 0xce, 0xa3, 0x38, 0x74, 0xec, 0x19, 0xeb, 0x11, 0x70, 0x8b, 0x29, 0x41,
+ 0x7b, 0xcd, 0xf1, 0x97, 0x18, 0xcd, 0x94, 0xb7, 0xf2, 0xaf, 0x29, 0x28, 0x26, 0xb3, 0x1b, 0xf8,
+ 0x1b, 0x40, 0xdc, 0x6c, 0x4c, 0x66, 0x4b, 0xae, 0x39, 0x83, 0x0d, 0x66, 0x3a, 0x26, 0xb9, 0xbf,
+ 0x83, 0x4d, 0x61, 0x3c, 0x26, 0xc9, 0xaf, 0x39, 0x0f, 0xc4, 0x0d, 0xc8, 0x04, 0x51, 0xe5, 0x9f,
+ 0x53, 0x50, 0x48, 0xa4, 0x53, 0xf0, 0x0b, 0x60, 0x03, 0x30, 0x78, 0x52, 0x25, 0x4a, 0xce, 0x5c,
+ 0x73, 0x22, 0xcc, 0x90, 0x6e, 0xcd, 0x68, 0x98, 0x8c, 0xf8, 0x3c, 0x92, 0xd4, 0xd7, 0x9c, 0x06,
+ 0xb7, 0xa6, 0x13, 0xdc, 0x95, 0x7f, 0x4b, 0xc1, 0x6a, 0x14, 0x68, 0xb3, 0x00, 0x79, 0xe6, 0x98,
+ 0x0e, 0x0d, 0xcf, 0x77, 0x3d, 0xea, 0x87, 0x0e, 0x0d, 0x22, 0x0f, 0x71, 0xff, 0x9d, 0x26, 0x71,
+ 0x1c, 0x26, 0x63, 0xf8, 0xed, 0xee, 0x14, 0x4f, 0x36, 0x38, 0xe3, 0xac, 0x82, 0x7d, 0xae, 0x3c,
+ 0xec, 0xc9, 0xe3, 0x55, 0xae, 0x1f, 0x5e, 0x77, 0x22, 0x45, 0xce, 0xa2, 0x09, 0x92, 0xaf, 0xd9,
+ 0xc9, 0x9e, 0xae, 0xfc, 0x51, 0x1a, 0x60, 0x96, 0x41, 0xc2, 0xa7, 0xf3, 0xa9, 0x28, 0xb1, 0x18,
+ 0xd2, 0xf2, 0xa9, 0xa8, 0xc4, 0x23, 0x8f, 0x35, 0x24, 0x32, 0x53, 0xd5, 0x3f, 0x4f, 0xc1, 0xfa,
+ 0x7c, 0x33, 0x57, 0x52, 0xb3, 0x0b, 0x16, 0x09, 0x3d, 0x59, 0x82, 0xbc, 0xdc, 0x92, 0xda, 0x5a,
+ 0x43, 0x69, 0xb5, 0x22, 0xcf, 0x57, 0xe4, 0xf1, 0x9b, 0xb5, 0x96, 0x82, 0xd2, 0x4c, 0xdb, 0xd5,
+ 0x15, 0x5d, 0x92, 0x1b, 0x12, 0x2b, 0x67, 0x58, 0x59, 0x6e, 0x10, 0xb5, 0xad, 0xd4, 0x24, 0x4d,
+ 0x41, 0x59, 0x8e, 0x17, 0x65, 0xf5, 0x05, 0x5a, 0x49, 0x14, 0x9b, 0x3a, 0x5a, 0xe5, 0x74, 0xbc,
+ 0xa8, 0xb5, 0x24, 0x5d, 0x41, 0x6b, 0x95, 0xbf, 0x61, 0x2b, 0x2b, 0xf2, 0x5e, 0xcf, 0xa7, 0xf9,
+ 0x33, 0x21, 0x84, 0xa7, 0xcb, 0xe5, 0xcf, 0xa2, 0x7f, 0x7c, 0xf2, 0x11, 0x51, 0xf5, 0x00, 0x60,
+ 0x56, 0xcb, 0xf4, 0xbd, 0xb8, 0x38, 0x92, 0x98, 0x6e, 0x0e, 0xb2, 0x5c, 0x6d, 0x73, 0x9b, 0x93,
+ 0x9f, 0x4e, 0x1d, 0xa9, 0x85, 0xd2, 0xac, 0xa4, 0xbc, 0x88, 0x4a, 0x99, 0xca, 0xff, 0x66, 0x20,
+ 0x17, 0xe7, 0xd6, 0xf0, 0x29, 0x94, 0xe2, 0xec, 0x9a, 0x91, 0xb8, 0xac, 0xf0, 0xd5, 0xb2, 0x49,
+ 0xba, 0xe9, 0x03, 0x1f, 0x72, 0xf1, 0x65, 0xa2, 0x84, 0xdb, 0x90, 0x3f, 0x35, 0xad, 0x97, 0x7c,
+ 0x2f, 0x5d, 0xf7, 0xe3, 0x9b, 0x31, 0x60, 0x72, 0x29, 0x67, 0x94, 0xb9, 0x1e, 0xe3, 0x5c, 0xd2,
+ 0xa8, 0x0b, 0x85, 0xf1, 0x64, 0x44, 0x7d, 0xc7, 0x32, 0x3c, 0xd3, 0x8e, 0x8c, 0xa7, 0xa5, 0x29,
+ 0x21, 0xe2, 0xe8, 0x9a, 0x36, 0xde, 0x81, 0xad, 0xe9, 0x90, 0x8d, 0x49, 0x40, 0x7d, 0x23, 0x08,
+ 0xa9, 0xc7, 0xec, 0xa7, 0xcc, 0x83, 0x14, 0xc1, 0xd3, 0xb6, 0x5e, 0x40, 0x7d, 0x8d, 0xb5, 0x54,
+ 0x9f, 0x43, 0x31, 0x29, 0x44, 0xfc, 0x3e, 0xdc, 0x8e, 0xaf, 0x03, 0x19, 0x97, 0xee, 0x7b, 0x24,
+ 0x97, 0x37, 0x35, 0x5d, 0xf6, 0x37, 0xbe, 0xe7, 0x8a, 0x06, 0xab, 0x22, 0xf3, 0x29, 0x62, 0x3b,
+ 0x6e, 0xdf, 0x19, 0xd2, 0x28, 0x5e, 0xf9, 0xf0, 0x9d, 0x0a, 0x46, 0x20, 0x99, 0x6a, 0x61, 0x30,
+ 0x12, 0xe3, 0x2b, 0xff, 0x9d, 0x86, 0x42, 0x22, 0x05, 0x8a, 0x5f, 0x40, 0x6e, 0xe8, 0x5a, 0x66,
+ 0x22, 0x4e, 0xfb, 0xe5, 0x35, 0x32, 0xa9, 0xdb, 0xad, 0x88, 0x83, 0x4c, 0xd9, 0x98, 0xd1, 0x29,
+ 0x32, 0xc7, 0x51, 0x14, 0x53, 0x7c, 0xb2, 0x1f, 0x02, 0xf8, 0xae, 0xf1, 0x8a, 0xfa, 0x81, 0x13,
+ 0xad, 0x7e, 0x9e, 0xe4, 0x7d, 0xf7, 0x48, 0x54, 0x54, 0xff, 0x25, 0x05, 0xb9, 0xd6, 0x8c, 0x01,
+ 0xb5, 0x54, 0xf9, 0xb2, 0xf9, 0xf4, 0x3e, 0xdc, 0x4e, 0x5e, 0x2c, 0x32, 0x74, 0xb5, 0x6b, 0xb4,
+ 0x94, 0x03, 0x66, 0x92, 0x95, 0x61, 0x6b, 0x2a, 0xf4, 0x9a, 0xaa, 0xeb, 0x6a, 0x5b, 0xb4, 0xa4,
+ 0xe7, 0x96, 0x23, 0x6a, 0x21, 0xcd, 0xc3, 0x86, 0x8e, 0x32, 0xf8, 0x0e, 0xe0, 0xd9, 0x4a, 0xa9,
+ 0xdd, 0xa8, 0x3e, 0x7b, 0x39, 0x18, 0xb7, 0xc2, 0xd6, 0x87, 0xb7, 0x19, 0x5a, 0xb3, 0xae, 0xa0,
+ 0x55, 0xa6, 0x50, 0x18, 0xbb, 0x28, 0x72, 0x17, 0x2b, 0xee, 0x9b, 0xab, 0xfc, 0x1e, 0xac, 0x45,
+ 0x59, 0x61, 0x7c, 0x0c, 0xc5, 0x28, 0x2f, 0x9c, 0xdc, 0xa3, 0x8f, 0xdf, 0xb9, 0x82, 0x11, 0x3e,
+ 0xfe, 0xcf, 0xb7, 0x66, 0x21, 0x98, 0x15, 0xf0, 0x5d, 0x58, 0x0b, 0x9c, 0xdf, 0xa5, 0xc6, 0xe0,
+ 0x34, 0x0a, 0xbd, 0xad, 0xb2, 0xe2, 0xe1, 0x69, 0xe5, 0xaf, 0x53, 0x90, 0x9f, 0xa6, 0x91, 0x71,
+ 0x03, 0xf2, 0xd3, 0x9b, 0x85, 0xd1, 0xe7, 0xf3, 0xee, 0x90, 0x4d, 0x22, 0x0b, 0x3d, 0x05, 0x27,
+ 0x43, 0x8c, 0xe9, 0xef, 0x19, 0x62, 0x3c, 0x06, 0x98, 0xa5, 0xa5, 0x6f, 0x32, 0x76, 0xf9, 0x97,
+ 0x69, 0xc8, 0x1e, 0x3b, 0x7d, 0x07, 0x0f, 0xa1, 0x1c, 0x1d, 0x99, 0xd4, 0x36, 0xce, 0x87, 0xe6,
+ 0xd8, 0xe0, 0xf1, 0x15, 0xcb, 0x1d, 0x32, 0xad, 0x9e, 0x79, 0xb0, 0xfe, 0xd6, 0xf4, 0xe8, 0x4c,
+ 0x0a, 0x8c, 0x68, 0xfb, 0xb8, 0x25, 0x75, 0xba, 0x11, 0x94, 0xdc, 0x99, 0x72, 0x1e, 0x0f, 0xcd,
+ 0x71, 0x5c, 0xcd, 0x8e, 0x69, 0x38, 0x77, 0xfa, 0x8e, 0x61, 0x9d, 0x39, 0x9e, 0xc8, 0xa2, 0x2c,
+ 0xe1, 0x12, 0x8a, 0xd7, 0x38, 0x7d, 0x47, 0x3e, 0x73, 0x3c, 0x92, 0x3f, 0x8f, 0x9e, 0x82, 0x6a,
+ 0x07, 0x72, 0x71, 0x35, 0x73, 0x6e, 0x8e, 0x9b, 0x07, 0x4d, 0x43, 0x6e, 0x34, 0xbb, 0x89, 0xdd,
+ 0xc0, 0xab, 0x89, 0xd2, 0x52, 0x34, 0xcd, 0xd8, 0xff, 0x4c, 0xa9, 0xef, 0xef, 0xec, 0xd6, 0x51,
+ 0x8a, 0x6d, 0x9d, 0x69, 0x35, 0x51, 0xa4, 0x96, 0xae, 0x3c, 0x43, 0xe9, 0xca, 0x3f, 0xa5, 0x61,
+ 0x35, 0xd2, 0x99, 0x6d, 0x58, 0xf5, 0xe9, 0x60, 0xb6, 0xeb, 0x9f, 0x2c, 0x97, 0x61, 0xdf, 0x26,
+ 0x1c, 0x4c, 0x22, 0x12, 0x7c, 0x08, 0x59, 0x6a, 0x0f, 0x62, 0xab, 0xf7, 0xd1, 0x92, 0x64, 0x8a,
+ 0x3d, 0xa0, 0x84, 0x13, 0xe0, 0x4a, 0x22, 0x6f, 0xc4, 0xb4, 0x43, 0x7a, 0x96, 0x01, 0xaa, 0x7e,
+ 0x06, 0xab, 0xe2, 0xb5, 0xec, 0xfc, 0x24, 0xca, 0xe1, 0xbc, 0x5e, 0x48, 0x5e, 0xda, 0x4c, 0x5e,
+ 0xc6, 0x4c, 0x57, 0x6b, 0x90, 0x65, 0x6f, 0x60, 0x3e, 0x9c, 0x52, 0x3f, 0x54, 0xe6, 0xcf, 0xdc,
+ 0x48, 0x75, 0xe4, 0x61, 0x45, 0x6c, 0xfc, 0x34, 0xbf, 0x81, 0xa8, 0x76, 0x45, 0x80, 0x47, 0xe8,
+ 0x0a, 0x94, 0xad, 0xfc, 0x7e, 0x16, 0xf0, 0x9b, 0x37, 0x00, 0x6e, 0x32, 0xeb, 0xf3, 0x33, 0x58,
+ 0xa3, 0x96, 0x91, 0xb8, 0xb4, 0xfb, 0xfc, 0xfa, 0x37, 0x13, 0xae, 0xa8, 0x12, 0xd6, 0x08, 0xb5,
+ 0xb8, 0xea, 0x38, 0x84, 0xac, 0x67, 0xfa, 0x61, 0x64, 0xae, 0x3e, 0x7a, 0xe7, 0x46, 0xb8, 0xe2,
+ 0xee, 0x03, 0x27, 0xc0, 0xdf, 0xc2, 0x66, 0x74, 0x9f, 0x97, 0x8f, 0xdc, 0x32, 0xac, 0xd1, 0xb5,
+ 0x0f, 0xe0, 0x8d, 0x88, 0x89, 0x8d, 0xd0, 0x92, 0x47, 0x36, 0x96, 0x20, 0x63, 0x9d, 0x3a, 0x51,
+ 0x54, 0x70, 0x69, 0x3a, 0x86, 0xad, 0x7e, 0x0d, 0x77, 0xae, 0x16, 0x05, 0xf3, 0xa4, 0x15, 0xf9,
+ 0xf2, 0xd1, 0x5c, 0x82, 0xbc, 0x22, 0x1b, 0xc2, 0x2e, 0x14, 0x9f, 0x91, 0x22, 0x1b, 0xc7, 0xcd,
+ 0x96, 0xac, 0xa2, 0x74, 0xe5, 0xff, 0x52, 0x70, 0xfb, 0xca, 0x3b, 0x19, 0xd8, 0x87, 0x5c, 0xe8,
+ 0x8d, 0x92, 0xea, 0xfd, 0xf8, 0x7b, 0x5d, 0xf2, 0xb8, 0xba, 0x96, 0xaf, 0xe0, 0x5a, 0xe8, 0x8d,
+ 0xd8, 0x43, 0xf5, 0x3b, 0x78, 0xff, 0xad, 0xbd, 0xd8, 0xf6, 0xd7, 0xbb, 0xed, 0xcb, 0xb3, 0xdb,
+ 0x80, 0x82, 0xde, 0x68, 0x92, 0xba, 0xd1, 0x95, 0x88, 0x7e, 0x22, 0xee, 0x99, 0x1e, 0x6a, 0xb2,
+ 0xd1, 0xd8, 0xad, 0x89, 0xd8, 0xa6, 0x28, 0xd4, 0x51, 0x86, 0xe9, 0xe7, 0xc6, 0xdc, 0x45, 0x90,
+ 0x9b, 0xd2, 0xcf, 0x7f, 0x9f, 0x82, 0xb5, 0xc8, 0xf9, 0xc1, 0x8d, 0xb9, 0x2b, 0xb6, 0x8f, 0x97,
+ 0xbc, 0x62, 0x90, 0xb8, 0x72, 0x5b, 0xfd, 0xe6, 0xad, 0x97, 0x6b, 0x37, 0xa1, 0xc4, 0x6b, 0x12,
+ 0x16, 0x57, 0x5c, 0x35, 0xb5, 0xaa, 0xd3, 0xb8, 0x02, 0x77, 0xe6, 0x7a, 0x19, 0x09, 0x8b, 0xbb,
+ 0x07, 0xb9, 0xf8, 0x0a, 0xca, 0x4d, 0x0a, 0xc2, 0x84, 0xad, 0xf6, 0x5b, 0xee, 0x99, 0xdc, 0xd4,
+ 0x2b, 0x7e, 0xb1, 0x0a, 0x6b, 0xd1, 0xe5, 0x93, 0x9b, 0x54, 0x54, 0x3a, 0xe4, 0x86, 0x4e, 0x9f,
+ 0x86, 0xce, 0x28, 0x4e, 0xc1, 0xef, 0x2f, 0x79, 0x15, 0x66, 0xbb, 0x15, 0xe1, 0xc9, 0x94, 0x89,
+ 0xb1, 0x5a, 0x67, 0xa6, 0x3f, 0x88, 0x43, 0xaa, 0xd7, 0x60, 0x95, 0x23, 0x3c, 0x99, 0x32, 0x55,
+ 0xfe, 0x2b, 0x0d, 0xb9, 0xf8, 0x65, 0xb8, 0x06, 0xc5, 0xe0, 0xcc, 0xf1, 0x3c, 0x67, 0x3c, 0x30,
+ 0x46, 0xce, 0x38, 0x32, 0x86, 0x3e, 0x7e, 0xc7, 0xd5, 0x6e, 0x52, 0x88, 0x41, 0x6d, 0x67, 0x8c,
+ 0x15, 0x58, 0xb7, 0x29, 0xf5, 0x8c, 0x60, 0xc8, 0xfe, 0x32, 0x96, 0xf4, 0x62, 0x2c, 0x45, 0x06,
+ 0xd3, 0x18, 0x8a, 0xd1, 0xfc, 0x14, 0x0a, 0xc1, 0x24, 0xf0, 0xe8, 0xd8, 0xe6, 0x1c, 0x99, 0xc5,
+ 0x38, 0x20, 0xc2, 0x30, 0x86, 0x43, 0xd8, 0x18, 0x4e, 0x2c, 0xc7, 0x4e, 0x8c, 0x24, 0xbb, 0x18,
+ 0x4b, 0x89, 0xe3, 0xa6, 0x43, 0xf9, 0x09, 0x80, 0x69, 0x85, 0xce, 0x2b, 0xca, 0x39, 0x56, 0x16,
+ 0xe3, 0xc8, 0x0b, 0x48, 0xdb, 0x19, 0x57, 0xfe, 0x33, 0x05, 0xb9, 0x58, 0xf2, 0x49, 0x32, 0xf3,
+ 0xf5, 0xa2, 0x02, 0x8e, 0xc9, 0xcc, 0xd7, 0x73, 0x72, 0x31, 0x5f, 0x2f, 0x2a, 0xdb, 0xa9, 0x5c,
+ 0xcc, 0xd7, 0x97, 0x17, 0xc8, 0x7c, 0xbd, 0xa8, 0x70, 0x13, 0x0b, 0x64, 0xbe, 0xae, 0x7c, 0x03,
+ 0xa5, 0xb9, 0x5b, 0x56, 0x37, 0xb9, 0x2f, 0x55, 0xc8, 0x68, 0xae, 0x85, 0x1b, 0x90, 0x8b, 0x4e,
+ 0xbc, 0xd8, 0x22, 0xfd, 0xd1, 0xbb, 0x9d, 0x02, 0xd7, 0xda, 0x8e, 0x88, 0xc9, 0x14, 0x5d, 0x19,
+ 0xc1, 0xd6, 0x55, 0xf7, 0xae, 0x70, 0x0f, 0x60, 0x7a, 0x91, 0x4b, 0xbc, 0xe3, 0xed, 0xb9, 0x95,
+ 0x37, 0x63, 0x53, 0x73, 0x57, 0xb8, 0x12, 0x44, 0x95, 0x2e, 0x64, 0x1a, 0x5e, 0x70, 0x93, 0x12,
+ 0xe9, 0x42, 0xa6, 0xeb, 0x2a, 0x37, 0xc9, 0xf8, 0x87, 0x29, 0x28, 0x74, 0xe7, 0xee, 0x67, 0x25,
+ 0x6f, 0xd0, 0x5e, 0x93, 0x3d, 0x79, 0x7d, 0xf6, 0x07, 0x80, 0x26, 0xc1, 0x29, 0xdb, 0x33, 0x86,
+ 0x69, 0x19, 0xe7, 0x66, 0xc8, 0x6f, 0x4f, 0xa5, 0x1e, 0xac, 0x90, 0xd2, 0x24, 0x38, 0x6d, 0x3b,
+ 0x63, 0xc9, 0x3a, 0x66, 0x95, 0x95, 0x02, 0xe4, 0xa7, 0x17, 0xbc, 0xaa, 0x5f, 0xc2, 0x5a, 0x44,
+ 0xc6, 0x0c, 0x90, 0xc8, 0x5f, 0x4c, 0x1c, 0x57, 0x09, 0x27, 0x32, 0x75, 0xd9, 0x03, 0x4d, 0x57,
+ 0xff, 0x36, 0x05, 0xc5, 0xe4, 0xed, 0x28, 0xd6, 0xfd, 0x1d, 0xc6, 0x6c, 0x0e, 0xb2, 0x3c, 0x3d,
+ 0xc1, 0x7f, 0x3a, 0x22, 0x52, 0x17, 0x59, 0xe6, 0xc9, 0x72, 0xcf, 0x55, 0x94, 0x57, 0xa6, 0x9e,
+ 0x2c, 0xef, 0xc9, 0x43, 0x63, 0xc2, 0xd1, 0x15, 0xed, 0x6b, 0x33, 0xcf, 0x97, 0x77, 0xe0, 0xd9,
+ 0x4e, 0xf6, 0x24, 0x9c, 0xeb, 0xbc, 0xf8, 0xe9, 0x8f, 0xfc, 0x2c, 0xf2, 0x9c, 0xa1, 0xf6, 0xc3,
+ 0x6f, 0x1e, 0x0c, 0xdc, 0xa9, 0x6c, 0xb7, 0x5d, 0x7f, 0xf0, 0xf0, 0xcd, 0x5f, 0xbc, 0x0d, 0xdc,
+ 0x87, 0xa6, 0xe7, 0x9c, 0xae, 0x72, 0xaf, 0xec, 0xd1, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x44,
+ 0x5f, 0x95, 0xeb, 0x51, 0x37, 0x00, 0x00,
}
diff --git a/payload_utils/cros_config_proto_converter.py b/payload_utils/cros_config_proto_converter.py
index 8ddc4fc..dc94add 100755
--- a/payload_utils/cros_config_proto_converter.py
+++ b/payload_utils/cros_config_proto_converter.py
@@ -262,6 +262,39 @@
return result
+def _build_derived_connectivity_power_prefs(config: Config) -> dict:
+ present = topology_pb2.HardwareFeatures.PRESENT
+ hw_features = config.hw_design_config.hardware_features
+ form_factor = hw_features.form_factor.form_factor
+ result = {}
+
+ if (hw_features.cellular.present == present and
+ hw_features.cellular.HasField('dynamic_power_reduction_config')):
+ dpr_config = hw_features.cellular.dynamic_power_reduction_config
+ result['set-cellular-transmit-power-for-proximity'] = (
+ hw_features.HasField('proximity'))
+ if form_factor in (topology_pb2.HardwareFeatures.FormFactor.CONVERTIBLE,
+ topology_pb2.HardwareFeatures.FormFactor.DETACHABLE):
+ if dpr_config.HasField('tablet_mode'):
+ result['set-cellular-transmit-power-for-tablet-mode'] = (
+ dpr_config.tablet_mode.value)
+ else:
+ result['set-cellular-transmit-power-for-tablet-mode'] = (
+ form_factor == topology_pb2.HardwareFeatures.FormFactor.CONVERTIBLE)
+ else:
+ result['set-cellular-transmit-power-for-tablet-mode'] = False
+
+ if (result['set-cellular-transmit-power-for-tablet-mode'] or
+ result['set-cellular-transmit-power-for-proximity']):
+ if dpr_config.HasField('gpio'):
+ result['set-cellular-transmit-power-dpr-gpio'] = (
+ wrappers_pb2.UInt32Value(value=dpr_config.gpio))
+ elif dpr_config.HasField('modem_manager'):
+ result['use-modemmanager-for-dynamic-sar'] = True
+
+ return result
+
+
def _build_derived_power_prefs(config: Config) -> dict:
"""Builds a partial 'power' property derived from hardware features."""
present = topology_pb2.HardwareFeatures.PRESENT
@@ -336,6 +369,7 @@
result.update(
_build_derived_platform_power_prefs(config.program.platform.capabilities))
+ result.update(_build_derived_connectivity_power_prefs(config))
result['usb-min-ac-watts'] = hw_features.power_supply.usb_min_ac_watts
diff --git a/payload_utils/test_data/fake_project.json b/payload_utils/test_data/fake_project.json
index 73c5145..c400012 100644
--- a/payload_utils/test_data/fake_project.json
+++ b/payload_utils/test_data/fake_project.json
@@ -506,10 +506,12 @@
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.0",
"internal-backlight-no-als-battery-brightness": "63.0",
+ "set-cellular-transmit-power-for-tablet-mode": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "3000",
"usb-min-ac-watts": "20",
+ "use-modemmanager-for-dynamic-sar": "1",
"wake-on-dp": "1"
},
"ui": {
@@ -659,7 +661,7 @@
"smbios-name-match": "PROJECT_B"
},
"modem": {
- "firmware-variant": "fakemodemb"
+ "firmware-variant": "fakemodem"
},
"name": "project_b",
"power": {
@@ -668,6 +670,8 @@
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.0",
"internal-backlight-no-als-battery-brightness": "63.0",
+ "set-cellular-transmit-power-dpr-gpio": "0",
+ "set-cellular-transmit-power-for-tablet-mode": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "3000",
@@ -956,7 +960,7 @@
"zephyr-ec": "projects/fake/fake"
},
"ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
- "firmware-config": 90913,
+ "firmware-config": 90914,
"image-name": "fake",
"main-ro-image": "bcs://Fake.11111.0.0.tbz2",
"main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -977,14 +981,19 @@
"sku-id": 64,
"smbios-name-match": "PROJECT_WL"
},
+ "modem": {
+ "firmware-variant": "project_wl"
+ },
"name": "project_wl",
"power": {
"battery-poll-interval-initial-ms": "1000",
- "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+ "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.1",
"internal-backlight-no-als-battery-brightness": "63.2",
"min-visible-backlight-level": "1000",
+ "set-cellular-transmit-power-dpr-gpio": "20",
+ "set-cellular-transmit-power-for-proximity": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "0",
@@ -1091,7 +1100,7 @@
"zephyr-ec": "projects/fake/fake"
},
"ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
- "firmware-config": 90913,
+ "firmware-config": 90914,
"image-name": "fake",
"main-ro-image": "bcs://Fake.11111.0.0.tbz2",
"main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1113,14 +1122,19 @@
"smbios-name-match": "PROJECT_WL",
"whitelabel-tag": "loema"
},
+ "modem": {
+ "firmware-variant": "project_wl"
+ },
"name": "project_wl",
"power": {
"battery-poll-interval-initial-ms": "1000",
- "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+ "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.1",
"internal-backlight-no-als-battery-brightness": "63.2",
"min-visible-backlight-level": "1000",
+ "set-cellular-transmit-power-dpr-gpio": "20",
+ "set-cellular-transmit-power-for-proximity": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "0",
@@ -1227,7 +1241,7 @@
"zephyr-ec": "projects/fake/fake"
},
"ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
- "firmware-config": 90913,
+ "firmware-config": 90914,
"image-name": "fake",
"main-ro-image": "bcs://Fake.11111.0.0.tbz2",
"main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1249,14 +1263,19 @@
"smbios-name-match": "PROJECT_WL",
"whitelabel-tag": "loemb"
},
+ "modem": {
+ "firmware-variant": "project_wl"
+ },
"name": "project_wl",
"power": {
"battery-poll-interval-initial-ms": "1000",
- "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+ "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.1",
"internal-backlight-no-als-battery-brightness": "63.2",
"min-visible-backlight-level": "1000",
+ "set-cellular-transmit-power-dpr-gpio": "20",
+ "set-cellular-transmit-power-for-proximity": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "0",
@@ -1363,7 +1382,7 @@
"zephyr-ec": "projects/fake/fake"
},
"ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
- "firmware-config": 90913,
+ "firmware-config": 90914,
"image-name": "fake",
"main-ro-image": "bcs://Fake.11111.0.0.tbz2",
"main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1385,14 +1404,19 @@
"smbios-name-match": "PROJECT_WL",
"whitelabel-tag": "loemc"
},
+ "modem": {
+ "firmware-variant": "project_wl"
+ },
"name": "project_wl",
"power": {
"battery-poll-interval-initial-ms": "1000",
- "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+ "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.1",
"internal-backlight-no-als-battery-brightness": "63.2",
"min-visible-backlight-level": "1000",
+ "set-cellular-transmit-power-dpr-gpio": "20",
+ "set-cellular-transmit-power-for-proximity": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "0",
@@ -1530,6 +1554,9 @@
"smbios-name-match": "PROJECT_REBRAND",
"whitelabel-tag": "branda"
},
+ "modem": {
+ "firmware-variant": "project_rebrand"
+ },
"name": "project_rebrand",
"power": {
"battery-poll-interval-initial-ms": "1000",
@@ -1665,6 +1692,9 @@
"sku-id": 128,
"smbios-name-match": "PROJECT_BOX"
},
+ "modem": {
+ "firmware-variant": "fakemodem"
+ },
"name": "project_box",
"power": {
"battery-poll-interval-initial-ms": "1000",
diff --git a/payload_utils/test_data/model_sku.json b/payload_utils/test_data/model_sku.json
index 92c33b4..098ce5f 100644
--- a/payload_utils/test_data/model_sku.json
+++ b/payload_utils/test_data/model_sku.json
@@ -13,7 +13,7 @@
"component.has_lte": true,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_sd_reader": true,
"component.has_stylus": true,
"component.has_tabletmode": false,
@@ -39,7 +39,7 @@
"component.has_lte": true,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_rear_camera": false,
"component.has_sd_reader": true,
"component.has_stylus": true,
@@ -89,7 +89,7 @@
"component.has_lte": true,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_rear_camera": false,
"component.has_sd_reader": true,
"component.has_stylus": true,
@@ -132,10 +132,9 @@
"component.has_keyboard_backlight": false,
"component.has_lid_gyroscope": null,
"component.has_lid_magnetometer": null,
- "component.has_lte": false,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_rear_camera": null,
"component.has_sd_reader": true,
"component.has_stylus": false,
@@ -183,7 +182,7 @@
"component.has_lte": false,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_rear_camera": false,
"component.has_sd_reader": true,
"component.has_stylus": true,
@@ -230,10 +229,10 @@
"component.has_lid_accelerometer": null,
"component.has_lid_gyroscope": null,
"component.has_lid_magnetometer": null,
- "component.has_lte": false,
+ "component.has_lte": true,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_rear_camera": false,
"component.has_sd_reader": true,
"component.has_stylus": false,
@@ -274,14 +273,14 @@
"component.has_base_gyroscope": true,
"component.has_base_magnetometer": true,
"component.has_daughter_board_usb_a": 0,
- "component.has_daughter_board_usb_c": 1,
+ "component.has_daughter_board_usb_c": 0,
"component.has_fingerprint": false,
"component.has_front_camera": true,
"component.has_keyboard_backlight": false,
"component.has_lid_accelerometer": null,
"component.has_lid_gyroscope": null,
"component.has_lid_magnetometer": null,
- "component.has_lte": false,
+ "component.has_lte": true,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
"component.has_proximity_sensor": true,
@@ -306,7 +305,7 @@
[
"usb_host",
"==",
- 3
+ 2
],
[
"stylus",
@@ -316,7 +315,7 @@
],
"component.speaker_amp": "AMPLIFIER_UNKNOWN",
"custom_type": "whitelabel",
- "fw_config": 90913
+ "fw_config": 90914
}
},
"product_sku": {
@@ -396,6 +395,7 @@
"component.has_base_gyroscope": true,
"component.has_base_magnetometer": true,
"component.has_lid_accelerometer": null,
+ "component.has_lte": true,
"component.speaker_amp": "MAX98373",
"fw_config": 90897
},
@@ -404,6 +404,7 @@
"component.has_base_gyroscope": true,
"component.has_base_magnetometer": true,
"component.has_lid_accelerometer": null,
+ "component.has_lte": false,
"component.speaker_amp": "AMPLIFIER_UNKNOWN",
"fw_config": 90897
},
@@ -412,6 +413,7 @@
"component.has_base_gyroscope": null,
"component.has_base_magnetometer": null,
"component.has_lid_accelerometer": true,
+ "component.has_lte": false,
"component.speaker_amp": "MAX98373",
"fw_config": 90113
}
diff --git a/proto/chromiumos/config/api/topology.proto b/proto/chromiumos/config/api/topology.proto
index ccc89b2..38acff4 100644
--- a/proto/chromiumos/config/api/topology.proto
+++ b/proto/chromiumos/config/api/topology.proto
@@ -103,7 +103,7 @@
// 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: 31
+// NEXT TAG: 38
message HardwareFeatures {
enum Present {
PRESENT_UNKNOWN = 0;
@@ -150,10 +150,10 @@
// The position of the port on the chassis.
PortPosition position = 1;
- // 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).
+ // 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).
google.protobuf.UInt32Value index_override = 2;
}
}
@@ -186,6 +186,23 @@
CELLULAR_LTE = 1;
CELLULAR_5G = 2;
}
+
+ // Optional config for dynamic power reduction control.
+ DynamicPowerReductionConfig dynamic_power_reduction_config = 5;
+ message DynamicPowerReductionConfig {
+ oneof dynamic_power_reduction_config {
+ // A uint identifying the GPIO to use to toggle dynamic power
+ // reduction.
+ uint32 gpio = 1;
+
+ // A dummy value identifying that modem manager should be used to
+ // toggle dynamic power reduction.
+ bool modem_manager = 2;
+ }
+ // Whether tablet mode should be a trigger for dynamic power reduction.
+ // If unset, the value will be true for convertibles.
+ google.protobuf.BoolValue tablet_mode = 3;
+ }
}
// HDMI properties
@@ -710,4 +727,8 @@
// higher-power USB adapter.
int32 usb_min_ac_watts = 2;
}
+
+ Proximity proximity = 37;
+ message Proximity {
+ }
}
diff --git a/python/chromiumos/config/api/topology_pb2.py b/python/chromiumos/config/api/topology_pb2.py
index d9f8b9f..bdd764f 100644
--- a/python/chromiumos/config/api/topology_pb2.py
+++ b/python/chromiumos/config/api/topology_pb2.py
@@ -21,7 +21,7 @@
package='chromiumos.config.api',
syntax='proto3',
serialized_options=_b('Z(go.chromium.org/chromiumos/config/go/api'),
- serialized_pb=_b('\n$chromiumos/config/api/topology.proto\x12\x15\x63hromiumos.config.api\x1a%chromiumos/config/api/component.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x9a\x06\n\x08Topology\x12\n\n\x02id\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.chromiumos.config.api.Topology.Type\x12\x45\n\x0b\x64\x65scription\x18\x03 \x03(\x0b\x32\x30.chromiumos.config.api.Topology.DescriptionEntry\x12\x41\n\x10hardware_feature\x18\x04 \x01(\x0b\x32\'.chromiumos.config.api.HardwareFeatures\x1a\x32\n\x10\x44\x65scriptionEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x8f\x04\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0f\n\x0b\x46ORM_FACTOR\x10\x02\x12\t\n\x05\x41UDIO\x10\x03\x12\n\n\x06STYLUS\x10\x04\x12\x0c\n\x08KEYBOARD\x10\x05\x12\x0b\n\x07THERMAL\x10\x06\x12\n\n\x06\x43\x41MERA\x10\x07\x12(\n$ACCELEROMETER_GYROSCOPE_MAGNETOMETER\x10\x08\x12\x0f\n\x0b\x46INGERPRINT\x10\t\x12\x14\n\x10PROXIMITY_SENSOR\x10\n\x12\x12\n\x0e\x44\x41UGHTER_BOARD\x10\x0b\x12\x18\n\x14NON_VOLATILE_STORAGE\x10\x0c\x12\x07\n\x03RAM\x10\r\x12\x08\n\x04WIFI\x10\x0e\x12\x12\n\x0e\x43\x45LLULAR_BOARD\x10\x0f\x12\r\n\tSD_READER\x10\x10\x12\x13\n\x0fMOTHERBOARD_USB\x10\x11\x12\r\n\tBLUETOOTH\x10\x12\x12\x0e\n\nBARRELJACK\x10\x13\x12\x10\n\x0cPOWER_BUTTON\x10\x14\x12\x11\n\rVOLUME_BUTTON\x10\x15\x12\x06\n\x02\x45\x43\x10\x16\x12\t\n\x05TOUCH\x10\x17\x12\x07\n\x03TPM\x10\x18\x12\x1a\n\x16MICROPHONE_MUTE_SWITCH\x10\x19\x12\x0b\n\x07\x42\x41TTERY\x10\x1a\x12\x08\n\x04HDMI\x10\x1b\x12\x07\n\x03SOC\x10\x1c\x12\x07\n\x03HPS\x10\x1d\x12\x10\n\x0c\x44P_CONVERTER\x10\x1e\x12\x07\n\x03POE\x10\x1f\x12\x10\n\x0cPOWER_SUPPLY\x10 \"\xa8\x01\n\x08\x44uration\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32$.chromiumos.config.api.Duration.Type\x12\r\n\x05value\x18\x02 \x01(\x05\"Y\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x10\n\x0cMILLISECONDS\x10\x01\x12\x0b\n\x07SECONDS\x10\x02\x12\x0b\n\x07MINUTES\x10\x03\x12\t\n\x05HOURS\x10\x04\x12\x08\n\x04\x44\x41YS\x10\x05\"\xa4V\n\x10HardwareFeatures\x12;\n\x05usb_c\x18\x01 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbC\x12;\n\x05usb_a\x18\x02 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbA\x12\x42\n\x08\x63\x65llular\x18\x03 \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Cellular\x12:\n\x04hdmi\x18\x04 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Hdmi\x12P\n\tfw_config\x18\x05 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.FirmwareConfiguration\x12<\n\x05\x61udio\x18\x06 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Audio\x12>\n\x06\x63\x61mera\x18\x07 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Camera\x12L\n\raccelerometer\x18\x08 \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Accelerometer\x12\x44\n\tgyroscope\x18\t \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Gyroscope\x12J\n\x0cmagnetometer\x18\n \x01(\x0b\x32\x34.chromiumos.config.api.HardwareFeatures.Magnetometer\x12I\n\x0clight_sensor\x18\x0b \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.LightSensor\x12>\n\x06screen\x18\x0c \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Screen\x12G\n\x0b\x66orm_factor\x18\r \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.FormFactor\x12>\n\x06stylus\x18\x0e \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Stylus\x12\x42\n\x08keyboard\x18\x0f \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Keyboard\x12>\n\x06memory\x18\x10 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Memory\x12H\n\x0b\x66ingerprint\x18\x11 \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.Fingerprint\x12@\n\x07storage\x18\x12 \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Storage\x12\x44\n\tbluetooth\x18\x13 \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Bluetooth\x12\x46\n\nbarreljack\x18\x14 \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.BarrelJack\x12:\n\x04wifi\x18\x17 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Wifi\x12\x44\n\x0cpower_button\x18\x15 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12\x45\n\rvolume_button\x18\x16 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12W\n\x13\x65mbedded_controller\x18\x18 \x01(\x0b\x32:.chromiumos.config.api.HardwareFeatures.EmbeddedController\x12^\n\x17trusted_platform_module\x18\x19 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule\x12\x46\n\nhotwording\x18\x1a \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.Hotwording\x12@\n\x07\x64isplay\x18\x1b \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Display\x12\x42\n\x08touchpad\x18\x1c \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Touchpad\x12\\\n\x16microphone_mute_switch\x18\x1d \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.MicrophoneMuteSwitch\x12@\n\x07\x62\x61ttery\x18\x1e \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Battery\x12M\n\x0eprivacy_screen\x18\x1f \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.PrivacyScreen\x12\x38\n\x03soc\x18 \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Soc\x12R\n\x0c\x64p_converter\x18! \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.DisplayPortConverter\x12\x38\n\x03hps\x18\" \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Hps\x12\x38\n\x03poe\x18# \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.PoE\x12I\n\x0cpower_supply\x18$ \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.PowerSupply\x1a\x16\n\x05\x43ount\x12\r\n\x05value\x18\x01 \x01(\r\x1a\x8d\x02\n\x04UsbC\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12@\n\x05ports\x18\x02 \x03(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.UsbC.Port\x1a\x84\x01\n\x04Port\x12\x46\n\x08position\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.PortPosition\x12\x34\n\x0eindex_override\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x1a\x44\n\x04UsbA\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1a\x89\x02\n\x08\x43\x65llular\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\r\n\x05model\x18\x02 \x01(\t\x12K\n\x04type\x18\x03 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Cellular.CellularType\x12\x1b\n\x13\x61ttach_apn_required\x18\x04 \x01(\x08\"B\n\x0c\x43\x65llularType\x12\x0f\n\x0bNOT_PRESENT\x10\x00\x12\x10\n\x0c\x43\x45LLULAR_LTE\x10\x01\x12\x0f\n\x0b\x43\x45LLULAR_5G\x10\x02\x1aH\n\x04Hdmi\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x34\n\x15\x46irmwareConfiguration\x12\r\n\x05value\x18\x01 \x01(\r\x12\x0c\n\x04mask\x18\x02 \x01(\r\x1a\xec\n\n\x05\x41udio\x12M\n\x0b\x61udio_codec\x18\x01 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12L\n\x0bspeaker_amp\x18\x02 \x01(\x0e\x32\x37.chromiumos.config.api.HardwareFeatures.Audio.Amplifier\x12Q\n\x0fheadphone_codec\x18\x03 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12\x45\n\x0elid_microphone\x18\x04 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x46\n\x0f\x62\x61se_microphone\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x45\n\x11speaker_amplifier\x18\x06 \x01(\x0b\x32*.chromiumos.config.api.Component.Amplifier\x12N\n\x0c\x63\x61rd_configs\x18\x07 \x03(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.CardConfig\x12W\n\x0b\x63ras_config\x18\x08 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x1a\xe6\x02\n\nCardConfig\x12\x11\n\tcard_name\x18\x01 \x01(\t\x12\x30\n\nucm_suffix\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12V\n\nucm_config\x18\x03 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x12W\n\x0b\x63ras_config\x18\x04 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x12\x62\n\x16sound_card_init_config\x18\x05 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\"\x9d\x01\n\nAudioCodec\x12\x17\n\x13\x41UDIO_CODEC_UNKNOWN\x10\x00\x12\n\n\x06RT5682\x10\x01\x12\x0c\n\x08\x41LC5682I\x10\x02\x12\x0b\n\x07\x41LC5682\x10\x03\x12\n\n\x06\x44\x41\x37\x32\x31\x39\x10\x08\x12\r\n\tNAU88L25B\x10\n\x12\x0b\n\x07\x43S42L42\x10\x0b\x12\x0e\n\nALC5682IVS\x10\x0c\x12\x0b\n\x07WCD9385\x10\r\"\x04\x08\x04\x10\x07\"\x04\x08\t\x10\t\"\x99\x01\n\tAmplifier\x12\x15\n\x11\x41MPLIFIER_UNKNOWN\x10\x00\x12\x0c\n\x08MAX98357\x10\x04\x12\x0c\n\x08MAX98373\x10\x05\x12\x0c\n\x08MAX98360\x10\x06\x12\n\n\x06RT1015\x10\x07\x12\x0b\n\x07\x41LC1011\x10\t\x12\x0b\n\x07RT1015P\x10\n\x12\x0b\n\x07\x41LC1019\x10\x0b\x12\x0c\n\x08MAX98390\x10\x0c\"\x04\x08\x01\x10\x03\"\x04\x08\x08\x10\x08\"O\n\x14\x41udioConfigStructure\x12\x1f\n\x1b\x41UDIO_CONFIG_STRUCTURE_NONE\x10\x00\x12\n\n\x06\x44\x45SIGN\x10\x01\x12\n\n\x06\x43OMMON\x10\x02\x1a\xc2\x06\n\x06\x43\x61mera\x12\x46\n\x07\x64\x65vices\x18\x04 \x03(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Device\x1a\x9b\x03\n\x06\x44\x65vice\x12K\n\tinterface\x18\x02 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Camera.Interface\x12\x45\n\x06\x66\x61\x63ing\x18\x03 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Facing\x12O\n\x0borientation\x18\x04 \x01(\x0e\x32:.chromiumos.config.api.HardwareFeatures.Camera.Orientation\x12\r\n\x05\x66lags\x18\x05 \x01(\r\x12\x0b\n\x03ids\x18\x06 \x03(\t\x12G\n\x0eprivacy_switch\x18\x07 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x10microphone_count\x18\x08 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\"I\n\tInterface\x12\x15\n\x11INTERFACE_UNKNOWN\x10\x00\x12\x11\n\rINTERFACE_USB\x10\x01\x12\x12\n\x0eINTERFACE_MIPI\x10\x02\"?\n\x06\x46\x61\x63ing\x12\x12\n\x0e\x46\x41\x43ING_UNKNOWN\x10\x00\x12\x10\n\x0c\x46\x41\x43ING_FRONT\x10\x01\x12\x0f\n\x0b\x46\x41\x43ING_BACK\x10\x02\"w\n\x0bOrientation\x12\x17\n\x13ORIENTATION_UNKNOWN\x10\x00\x12\x11\n\rORIENTATION_0\x10\x01\x12\x12\n\x0eORIENTATION_90\x10\x02\x12\x13\n\x0fORIENTATION_180\x10\x03\x12\x13\n\x0fORIENTATION_270\x10\x04\"M\n\x05\x46lags\x12\x0e\n\nFLAGS_NONE\x10\x00\x12\x17\n\x13\x46LAGS_SUPPORT_1080P\x10\x01\x12\x1b\n\x17\x46LAGS_SUPPORT_AUTOFOCUS\x10\x02\x1a\xa8\x01\n\rAccelerometer\x12J\n\x11lid_accelerometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12K\n\x12\x62\x61se_accelerometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x9c\x01\n\tGyroscope\x12\x46\n\rlid_gyroscope\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x0e\x62\x61se_gyroscope\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa5\x01\n\x0cMagnetometer\x12I\n\x10lid_magnetometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x11\x62\x61se_magnetometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa2\x01\n\x0bLightSensor\x12H\n\x0flid_lightsensor\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12I\n\x10\x62\x61se_lightsensor\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xaa\x01\n\x06Screen\x12R\n\x10panel_properties\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x12\x46\n\rtouch_support\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.PresentJ\x04\x08\x01\x10\x02\x1a\xff\x01\n\nFormFactor\x12V\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32\x41.chromiumos.config.api.HardwareFeatures.FormFactor.FormFactorType\"\x98\x01\n\x0e\x46ormFactorType\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\r\n\tCLAMSHELL\x10\x01\x12\x0f\n\x0b\x43ONVERTIBLE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x12\x0e\n\nCHROMEBASE\x10\x04\x12\r\n\tCHROMEBOX\x10\x05\x12\r\n\tCHROMEBIT\x10\x06\x12\x0f\n\x0b\x43HROMESLATE\x10\x07\x1a\x9b\x01\n\x06Stylus\x12I\n\x06stylus\x18\x01 \x01(\x0e\x32\x39.chromiumos.config.api.HardwareFeatures.Stylus.StylusType\"F\n\nStylusType\x12\x12\n\x0eSTYLUS_UNKNOWN\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\x0c\n\x08INTERNAL\x10\x02\x12\x0c\n\x08\x45XTERNAL\x10\x03\x1a\xa2\x03\n\x08Keyboard\x12T\n\rkeyboard_type\x18\x01 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardType\x12\x42\n\tbacklight\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x45\n\x0cpower_button\x18\x03 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x44\n\x0bnumeric_pad\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x1c\n\x14\x62\x61\x63klight_user_steps\x18\x05 \x03(\x01\"Q\n\x0cKeyboardType\x12\x19\n\x15KEYBOARD_TYPE_UNKNOWN\x10\x00\x12\x0c\n\x08INTERNAL\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x1aJ\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x1a\xc8\x02\n\x0b\x46ingerprint\x12N\n\x08location\x18\x01 \x01(\x0e\x32<.chromiumos.config.api.HardwareFeatures.Fingerprint.Location\x12\r\n\x05\x62oard\x18\x02 \x01(\t\x12\x12\n\nro_version\x18\x03 \x01(\t\"\xc5\x01\n\x08Location\x12\x14\n\x10LOCATION_UNKNOWN\x10\x00\x12\x19\n\x15POWER_BUTTON_TOP_LEFT\x10\x01\x12\x18\n\x14KEYBOARD_BOTTOM_LEFT\x10\x02\x12\x19\n\x15KEYBOARD_BOTTOM_RIGHT\x10\x03\x12\x16\n\x12KEYBOARD_TOP_RIGHT\x10\x04\x12\x0f\n\x0bNOT_PRESENT\x10\x05\x12\x0e\n\nRIGHT_SIDE\x10\x06\x12\r\n\tLEFT_SIDE\x10\x07\x12\x0b\n\x07PRESENT\x10\x08\x1a\x66\n\x07Storage\x12J\n\x0cstorage_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x02 \x01(\r\x1a\x8c\x01\n\tBluetooth\x12=\n\tcomponent\x18\x01 \x01(\x0b\x32*.chromiumos.config.api.Component.Bluetooth\x12@\n\x07present\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aN\n\nBarrelJack\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xf7\x01\n\x04Wifi\x12T\n\x18supported_wlan_protocols\x18\x01 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\x12I\n\nwifi_chips\x18\x02 \x03(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Wifi.WifiChip\"N\n\x08WifiChip\x12\x15\n\x11WIFI_CHIP_UNKNOWN\x10\x00\x12\x15\n\x11WIRELESS_86ED801D\x10\x01\x12\x14\n\x10WIRELESS_REALTEK\x10\x02\x1a\xa0\x02\n\x06\x42utton\x12\x45\n\x06region\x18\x01 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Button.Region\x12\x41\n\x04\x65\x64ge\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.HardwareFeatures.Button.Edge\x12\x10\n\x08position\x18\x03 \x01(\x02\"6\n\x06Region\x12\x12\n\x0eREGION_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0c\n\x08KEYBOARD\x10\x02\"B\n\x04\x45\x64ge\x12\x10\n\x0c\x45\x44GE_UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x07\n\x03TOP\x10\x03\x12\n\n\x06\x42OTTOM\x10\x04\x1a\xd3\x03\n\x12\x45mbeddedController\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x62\n\x07\x65\x63_type\x18\x02 \x01(\x0e\x32Q.chromiumos.config.api.HardwareFeatures.EmbeddedController.EmbeddedControllerType\x12\x41\n\x04part\x18\x03 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedController\x12J\n\x11\x66\x65\x61ture_typec_cmd\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12<\n\x03\x63\x62i\x18\x05 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"J\n\x16\x45mbeddedControllerType\x12\x13\n\x0f\x45\x43_TYPE_UNKNOWN\x10\x00\x12\r\n\tEC_CHROME\x10\x01\x12\x0c\n\x08\x45\x43_WILCO\x10\x02\x1a\xe0\x01\n\x15TrustedPlatformModule\x12i\n\x08tpm_type\x18\x01 \x01(\x0e\x32W.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.TrustedPlatformModuleType\"\\\n\x19TrustedPlatformModuleType\x12\x14\n\x10TPM_TYPE_UNKNOWN\x10\x00\x12\x0f\n\x0bTHIRD_PARTY\x10\x01\x12\x0b\n\x07GSC_H1B\x10\x02\x12\x0b\n\x07GSC_H1D\x10\x03\x1aN\n\nHotwording\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa9\x01\n\x07\x44isplay\x12\x42\n\x04type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.Display.Type\"Z\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x11\n\rTYPE_INTERNAL\x10\x01\x12\x11\n\rTYPE_EXTERNAL\x10\x02\x12\x1a\n\x16TYPE_INTERNAL_EXTERNAL\x10\x03\x1aL\n\x08Touchpad\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aX\n\x14MicrophoneMuteSwitch\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xb6\x05\n\x07\x42\x61ttery\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x08lifetime\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Lifetime\x12J\n\x08\x63harging\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Charging\x1a\x9f\x02\n\x08Lifetime\x12\x35\n\x0cshipping_min\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_min\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_min\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x38\n\x0flucid_sleep_min\x18\x04 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x33\n\nactive_min\x18\x05 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1a\xae\x01\n\x08\x43harging\x12\x33\n\nactive_max\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_max\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_max\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1aQ\n\rPrivacyScreen\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x45\n\x03Soc\x12>\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\x1a\x61\n\x14\x44isplayPortConverter\x12I\n\nconverters\x18\x01 \x03(\x0b\x32\x35.chromiumos.config.api.Component.DisplayPortConverter\x1aG\n\x03Hps\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aG\n\x03PoE\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1al\n\x0bPowerSupply\x12\x43\n\nbarreljack\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x18\n\x10usb_min_ac_watts\x18\x02 \x01(\x05\"<\n\x07Present\x12\x13\n\x0fPRESENT_UNKNOWN\x10\x00\x12\x0b\n\x07PRESENT\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\"\xa4\x01\n\x0cPortPosition\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x08\n\x04\x42\x41\x43K\x10\x03\x12\t\n\x05\x46RONT\x10\x04\x12\x0e\n\nLEFT_FRONT\x10\x05\x12\r\n\tLEFT_BACK\x10\x06\x12\x0f\n\x0bRIGHT_FRONT\x10\x07\x12\x0e\n\nRIGHT_BACK\x10\x08\x12\r\n\tBACK_LEFT\x10\t\x12\x0e\n\nBACK_RIGHT\x10\nB*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3')
+ serialized_pb=_b('\n$chromiumos/config/api/topology.proto\x12\x15\x63hromiumos.config.api\x1a%chromiumos/config/api/component.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x9a\x06\n\x08Topology\x12\n\n\x02id\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.chromiumos.config.api.Topology.Type\x12\x45\n\x0b\x64\x65scription\x18\x03 \x03(\x0b\x32\x30.chromiumos.config.api.Topology.DescriptionEntry\x12\x41\n\x10hardware_feature\x18\x04 \x01(\x0b\x32\'.chromiumos.config.api.HardwareFeatures\x1a\x32\n\x10\x44\x65scriptionEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x8f\x04\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0f\n\x0b\x46ORM_FACTOR\x10\x02\x12\t\n\x05\x41UDIO\x10\x03\x12\n\n\x06STYLUS\x10\x04\x12\x0c\n\x08KEYBOARD\x10\x05\x12\x0b\n\x07THERMAL\x10\x06\x12\n\n\x06\x43\x41MERA\x10\x07\x12(\n$ACCELEROMETER_GYROSCOPE_MAGNETOMETER\x10\x08\x12\x0f\n\x0b\x46INGERPRINT\x10\t\x12\x14\n\x10PROXIMITY_SENSOR\x10\n\x12\x12\n\x0e\x44\x41UGHTER_BOARD\x10\x0b\x12\x18\n\x14NON_VOLATILE_STORAGE\x10\x0c\x12\x07\n\x03RAM\x10\r\x12\x08\n\x04WIFI\x10\x0e\x12\x12\n\x0e\x43\x45LLULAR_BOARD\x10\x0f\x12\r\n\tSD_READER\x10\x10\x12\x13\n\x0fMOTHERBOARD_USB\x10\x11\x12\r\n\tBLUETOOTH\x10\x12\x12\x0e\n\nBARRELJACK\x10\x13\x12\x10\n\x0cPOWER_BUTTON\x10\x14\x12\x11\n\rVOLUME_BUTTON\x10\x15\x12\x06\n\x02\x45\x43\x10\x16\x12\t\n\x05TOUCH\x10\x17\x12\x07\n\x03TPM\x10\x18\x12\x1a\n\x16MICROPHONE_MUTE_SWITCH\x10\x19\x12\x0b\n\x07\x42\x41TTERY\x10\x1a\x12\x08\n\x04HDMI\x10\x1b\x12\x07\n\x03SOC\x10\x1c\x12\x07\n\x03HPS\x10\x1d\x12\x10\n\x0c\x44P_CONVERTER\x10\x1e\x12\x07\n\x03POE\x10\x1f\x12\x10\n\x0cPOWER_SUPPLY\x10 \"\xa8\x01\n\x08\x44uration\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32$.chromiumos.config.api.Duration.Type\x12\r\n\x05value\x18\x02 \x01(\x05\"Y\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x10\n\x0cMILLISECONDS\x10\x01\x12\x0b\n\x07SECONDS\x10\x02\x12\x0b\n\x07MINUTES\x10\x03\x12\t\n\x05HOURS\x10\x04\x12\x08\n\x04\x44\x41YS\x10\x05\"\x89Y\n\x10HardwareFeatures\x12;\n\x05usb_c\x18\x01 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbC\x12;\n\x05usb_a\x18\x02 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbA\x12\x42\n\x08\x63\x65llular\x18\x03 \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Cellular\x12:\n\x04hdmi\x18\x04 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Hdmi\x12P\n\tfw_config\x18\x05 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.FirmwareConfiguration\x12<\n\x05\x61udio\x18\x06 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Audio\x12>\n\x06\x63\x61mera\x18\x07 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Camera\x12L\n\raccelerometer\x18\x08 \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Accelerometer\x12\x44\n\tgyroscope\x18\t \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Gyroscope\x12J\n\x0cmagnetometer\x18\n \x01(\x0b\x32\x34.chromiumos.config.api.HardwareFeatures.Magnetometer\x12I\n\x0clight_sensor\x18\x0b \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.LightSensor\x12>\n\x06screen\x18\x0c \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Screen\x12G\n\x0b\x66orm_factor\x18\r \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.FormFactor\x12>\n\x06stylus\x18\x0e \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Stylus\x12\x42\n\x08keyboard\x18\x0f \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Keyboard\x12>\n\x06memory\x18\x10 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Memory\x12H\n\x0b\x66ingerprint\x18\x11 \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.Fingerprint\x12@\n\x07storage\x18\x12 \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Storage\x12\x44\n\tbluetooth\x18\x13 \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Bluetooth\x12\x46\n\nbarreljack\x18\x14 \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.BarrelJack\x12:\n\x04wifi\x18\x17 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Wifi\x12\x44\n\x0cpower_button\x18\x15 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12\x45\n\rvolume_button\x18\x16 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12W\n\x13\x65mbedded_controller\x18\x18 \x01(\x0b\x32:.chromiumos.config.api.HardwareFeatures.EmbeddedController\x12^\n\x17trusted_platform_module\x18\x19 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule\x12\x46\n\nhotwording\x18\x1a \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.Hotwording\x12@\n\x07\x64isplay\x18\x1b \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Display\x12\x42\n\x08touchpad\x18\x1c \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Touchpad\x12\\\n\x16microphone_mute_switch\x18\x1d \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.MicrophoneMuteSwitch\x12@\n\x07\x62\x61ttery\x18\x1e \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Battery\x12M\n\x0eprivacy_screen\x18\x1f \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.PrivacyScreen\x12\x38\n\x03soc\x18 \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Soc\x12R\n\x0c\x64p_converter\x18! \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.DisplayPortConverter\x12\x38\n\x03hps\x18\" \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Hps\x12\x38\n\x03poe\x18# \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.PoE\x12I\n\x0cpower_supply\x18$ \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.PowerSupply\x12\x44\n\tproximity\x18% \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Proximity\x1a\x16\n\x05\x43ount\x12\r\n\x05value\x18\x01 \x01(\r\x1a\x8d\x02\n\x04UsbC\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12@\n\x05ports\x18\x02 \x03(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.UsbC.Port\x1a\x84\x01\n\x04Port\x12\x46\n\x08position\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.PortPosition\x12\x34\n\x0eindex_override\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x1a\x44\n\x04UsbA\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1a\x9b\x04\n\x08\x43\x65llular\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\r\n\x05model\x18\x02 \x01(\t\x12K\n\x04type\x18\x03 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Cellular.CellularType\x12\x1b\n\x13\x61ttach_apn_required\x18\x04 \x01(\x08\x12t\n\x1e\x64ynamic_power_reduction_config\x18\x05 \x01(\x0b\x32L.chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig\x1a\x99\x01\n\x1b\x44ynamicPowerReductionConfig\x12\x0e\n\x04gpio\x18\x01 \x01(\rH\x00\x12\x17\n\rmodem_manager\x18\x02 \x01(\x08H\x00\x12/\n\x0btablet_mode\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB \n\x1e\x64ynamic_power_reduction_config\"B\n\x0c\x43\x65llularType\x12\x0f\n\x0bNOT_PRESENT\x10\x00\x12\x10\n\x0c\x43\x45LLULAR_LTE\x10\x01\x12\x0f\n\x0b\x43\x45LLULAR_5G\x10\x02\x1aH\n\x04Hdmi\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x34\n\x15\x46irmwareConfiguration\x12\r\n\x05value\x18\x01 \x01(\r\x12\x0c\n\x04mask\x18\x02 \x01(\r\x1a\xec\n\n\x05\x41udio\x12M\n\x0b\x61udio_codec\x18\x01 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12L\n\x0bspeaker_amp\x18\x02 \x01(\x0e\x32\x37.chromiumos.config.api.HardwareFeatures.Audio.Amplifier\x12Q\n\x0fheadphone_codec\x18\x03 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12\x45\n\x0elid_microphone\x18\x04 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x46\n\x0f\x62\x61se_microphone\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x45\n\x11speaker_amplifier\x18\x06 \x01(\x0b\x32*.chromiumos.config.api.Component.Amplifier\x12N\n\x0c\x63\x61rd_configs\x18\x07 \x03(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.CardConfig\x12W\n\x0b\x63ras_config\x18\x08 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x1a\xe6\x02\n\nCardConfig\x12\x11\n\tcard_name\x18\x01 \x01(\t\x12\x30\n\nucm_suffix\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12V\n\nucm_config\x18\x03 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x12W\n\x0b\x63ras_config\x18\x04 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x12\x62\n\x16sound_card_init_config\x18\x05 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\"\x9d\x01\n\nAudioCodec\x12\x17\n\x13\x41UDIO_CODEC_UNKNOWN\x10\x00\x12\n\n\x06RT5682\x10\x01\x12\x0c\n\x08\x41LC5682I\x10\x02\x12\x0b\n\x07\x41LC5682\x10\x03\x12\n\n\x06\x44\x41\x37\x32\x31\x39\x10\x08\x12\r\n\tNAU88L25B\x10\n\x12\x0b\n\x07\x43S42L42\x10\x0b\x12\x0e\n\nALC5682IVS\x10\x0c\x12\x0b\n\x07WCD9385\x10\r\"\x04\x08\x04\x10\x07\"\x04\x08\t\x10\t\"\x99\x01\n\tAmplifier\x12\x15\n\x11\x41MPLIFIER_UNKNOWN\x10\x00\x12\x0c\n\x08MAX98357\x10\x04\x12\x0c\n\x08MAX98373\x10\x05\x12\x0c\n\x08MAX98360\x10\x06\x12\n\n\x06RT1015\x10\x07\x12\x0b\n\x07\x41LC1011\x10\t\x12\x0b\n\x07RT1015P\x10\n\x12\x0b\n\x07\x41LC1019\x10\x0b\x12\x0c\n\x08MAX98390\x10\x0c\"\x04\x08\x01\x10\x03\"\x04\x08\x08\x10\x08\"O\n\x14\x41udioConfigStructure\x12\x1f\n\x1b\x41UDIO_CONFIG_STRUCTURE_NONE\x10\x00\x12\n\n\x06\x44\x45SIGN\x10\x01\x12\n\n\x06\x43OMMON\x10\x02\x1a\xc2\x06\n\x06\x43\x61mera\x12\x46\n\x07\x64\x65vices\x18\x04 \x03(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Device\x1a\x9b\x03\n\x06\x44\x65vice\x12K\n\tinterface\x18\x02 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Camera.Interface\x12\x45\n\x06\x66\x61\x63ing\x18\x03 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Facing\x12O\n\x0borientation\x18\x04 \x01(\x0e\x32:.chromiumos.config.api.HardwareFeatures.Camera.Orientation\x12\r\n\x05\x66lags\x18\x05 \x01(\r\x12\x0b\n\x03ids\x18\x06 \x03(\t\x12G\n\x0eprivacy_switch\x18\x07 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x10microphone_count\x18\x08 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\"I\n\tInterface\x12\x15\n\x11INTERFACE_UNKNOWN\x10\x00\x12\x11\n\rINTERFACE_USB\x10\x01\x12\x12\n\x0eINTERFACE_MIPI\x10\x02\"?\n\x06\x46\x61\x63ing\x12\x12\n\x0e\x46\x41\x43ING_UNKNOWN\x10\x00\x12\x10\n\x0c\x46\x41\x43ING_FRONT\x10\x01\x12\x0f\n\x0b\x46\x41\x43ING_BACK\x10\x02\"w\n\x0bOrientation\x12\x17\n\x13ORIENTATION_UNKNOWN\x10\x00\x12\x11\n\rORIENTATION_0\x10\x01\x12\x12\n\x0eORIENTATION_90\x10\x02\x12\x13\n\x0fORIENTATION_180\x10\x03\x12\x13\n\x0fORIENTATION_270\x10\x04\"M\n\x05\x46lags\x12\x0e\n\nFLAGS_NONE\x10\x00\x12\x17\n\x13\x46LAGS_SUPPORT_1080P\x10\x01\x12\x1b\n\x17\x46LAGS_SUPPORT_AUTOFOCUS\x10\x02\x1a\xa8\x01\n\rAccelerometer\x12J\n\x11lid_accelerometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12K\n\x12\x62\x61se_accelerometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x9c\x01\n\tGyroscope\x12\x46\n\rlid_gyroscope\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x0e\x62\x61se_gyroscope\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa5\x01\n\x0cMagnetometer\x12I\n\x10lid_magnetometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x11\x62\x61se_magnetometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa2\x01\n\x0bLightSensor\x12H\n\x0flid_lightsensor\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12I\n\x10\x62\x61se_lightsensor\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xaa\x01\n\x06Screen\x12R\n\x10panel_properties\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x12\x46\n\rtouch_support\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.PresentJ\x04\x08\x01\x10\x02\x1a\xff\x01\n\nFormFactor\x12V\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32\x41.chromiumos.config.api.HardwareFeatures.FormFactor.FormFactorType\"\x98\x01\n\x0e\x46ormFactorType\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\r\n\tCLAMSHELL\x10\x01\x12\x0f\n\x0b\x43ONVERTIBLE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x12\x0e\n\nCHROMEBASE\x10\x04\x12\r\n\tCHROMEBOX\x10\x05\x12\r\n\tCHROMEBIT\x10\x06\x12\x0f\n\x0b\x43HROMESLATE\x10\x07\x1a\x9b\x01\n\x06Stylus\x12I\n\x06stylus\x18\x01 \x01(\x0e\x32\x39.chromiumos.config.api.HardwareFeatures.Stylus.StylusType\"F\n\nStylusType\x12\x12\n\x0eSTYLUS_UNKNOWN\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\x0c\n\x08INTERNAL\x10\x02\x12\x0c\n\x08\x45XTERNAL\x10\x03\x1a\xa2\x03\n\x08Keyboard\x12T\n\rkeyboard_type\x18\x01 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardType\x12\x42\n\tbacklight\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x45\n\x0cpower_button\x18\x03 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x44\n\x0bnumeric_pad\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x1c\n\x14\x62\x61\x63klight_user_steps\x18\x05 \x03(\x01\"Q\n\x0cKeyboardType\x12\x19\n\x15KEYBOARD_TYPE_UNKNOWN\x10\x00\x12\x0c\n\x08INTERNAL\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x1aJ\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x1a\xc8\x02\n\x0b\x46ingerprint\x12N\n\x08location\x18\x01 \x01(\x0e\x32<.chromiumos.config.api.HardwareFeatures.Fingerprint.Location\x12\r\n\x05\x62oard\x18\x02 \x01(\t\x12\x12\n\nro_version\x18\x03 \x01(\t\"\xc5\x01\n\x08Location\x12\x14\n\x10LOCATION_UNKNOWN\x10\x00\x12\x19\n\x15POWER_BUTTON_TOP_LEFT\x10\x01\x12\x18\n\x14KEYBOARD_BOTTOM_LEFT\x10\x02\x12\x19\n\x15KEYBOARD_BOTTOM_RIGHT\x10\x03\x12\x16\n\x12KEYBOARD_TOP_RIGHT\x10\x04\x12\x0f\n\x0bNOT_PRESENT\x10\x05\x12\x0e\n\nRIGHT_SIDE\x10\x06\x12\r\n\tLEFT_SIDE\x10\x07\x12\x0b\n\x07PRESENT\x10\x08\x1a\x66\n\x07Storage\x12J\n\x0cstorage_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x02 \x01(\r\x1a\x8c\x01\n\tBluetooth\x12=\n\tcomponent\x18\x01 \x01(\x0b\x32*.chromiumos.config.api.Component.Bluetooth\x12@\n\x07present\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aN\n\nBarrelJack\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xf7\x01\n\x04Wifi\x12T\n\x18supported_wlan_protocols\x18\x01 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\x12I\n\nwifi_chips\x18\x02 \x03(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Wifi.WifiChip\"N\n\x08WifiChip\x12\x15\n\x11WIFI_CHIP_UNKNOWN\x10\x00\x12\x15\n\x11WIRELESS_86ED801D\x10\x01\x12\x14\n\x10WIRELESS_REALTEK\x10\x02\x1a\xa0\x02\n\x06\x42utton\x12\x45\n\x06region\x18\x01 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Button.Region\x12\x41\n\x04\x65\x64ge\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.HardwareFeatures.Button.Edge\x12\x10\n\x08position\x18\x03 \x01(\x02\"6\n\x06Region\x12\x12\n\x0eREGION_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0c\n\x08KEYBOARD\x10\x02\"B\n\x04\x45\x64ge\x12\x10\n\x0c\x45\x44GE_UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x07\n\x03TOP\x10\x03\x12\n\n\x06\x42OTTOM\x10\x04\x1a\xd3\x03\n\x12\x45mbeddedController\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x62\n\x07\x65\x63_type\x18\x02 \x01(\x0e\x32Q.chromiumos.config.api.HardwareFeatures.EmbeddedController.EmbeddedControllerType\x12\x41\n\x04part\x18\x03 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedController\x12J\n\x11\x66\x65\x61ture_typec_cmd\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12<\n\x03\x63\x62i\x18\x05 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"J\n\x16\x45mbeddedControllerType\x12\x13\n\x0f\x45\x43_TYPE_UNKNOWN\x10\x00\x12\r\n\tEC_CHROME\x10\x01\x12\x0c\n\x08\x45\x43_WILCO\x10\x02\x1a\xe0\x01\n\x15TrustedPlatformModule\x12i\n\x08tpm_type\x18\x01 \x01(\x0e\x32W.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.TrustedPlatformModuleType\"\\\n\x19TrustedPlatformModuleType\x12\x14\n\x10TPM_TYPE_UNKNOWN\x10\x00\x12\x0f\n\x0bTHIRD_PARTY\x10\x01\x12\x0b\n\x07GSC_H1B\x10\x02\x12\x0b\n\x07GSC_H1D\x10\x03\x1aN\n\nHotwording\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa9\x01\n\x07\x44isplay\x12\x42\n\x04type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.Display.Type\"Z\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x11\n\rTYPE_INTERNAL\x10\x01\x12\x11\n\rTYPE_EXTERNAL\x10\x02\x12\x1a\n\x16TYPE_INTERNAL_EXTERNAL\x10\x03\x1aL\n\x08Touchpad\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aX\n\x14MicrophoneMuteSwitch\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xb6\x05\n\x07\x42\x61ttery\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x08lifetime\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Lifetime\x12J\n\x08\x63harging\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Charging\x1a\x9f\x02\n\x08Lifetime\x12\x35\n\x0cshipping_min\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_min\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_min\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x38\n\x0flucid_sleep_min\x18\x04 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x33\n\nactive_min\x18\x05 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1a\xae\x01\n\x08\x43harging\x12\x33\n\nactive_max\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_max\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_max\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1aQ\n\rPrivacyScreen\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x45\n\x03Soc\x12>\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\x1a\x61\n\x14\x44isplayPortConverter\x12I\n\nconverters\x18\x01 \x03(\x0b\x32\x35.chromiumos.config.api.Component.DisplayPortConverter\x1aG\n\x03Hps\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aG\n\x03PoE\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1al\n\x0bPowerSupply\x12\x43\n\nbarreljack\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x18\n\x10usb_min_ac_watts\x18\x02 \x01(\x05\x1a\x0b\n\tProximity\"<\n\x07Present\x12\x13\n\x0fPRESENT_UNKNOWN\x10\x00\x12\x0b\n\x07PRESENT\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\"\xa4\x01\n\x0cPortPosition\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x08\n\x04\x42\x41\x43K\x10\x03\x12\t\n\x05\x46RONT\x10\x04\x12\x0e\n\nLEFT_FRONT\x10\x05\x12\r\n\tLEFT_BACK\x10\x06\x12\x0f\n\x0bRIGHT_FRONT\x10\x07\x12\x0e\n\nRIGHT_BACK\x10\x08\x12\r\n\tBACK_LEFT\x10\t\x12\x0e\n\nBACK_RIGHT\x10\nB*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3')
,
dependencies=[chromiumos_dot_config_dot_api_dot_component__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,])
@@ -232,8 +232,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=4225,
- serialized_end=4291,
+ serialized_start=4569,
+ serialized_end=4635,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CELLULAR_CELLULARTYPE)
@@ -282,8 +282,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=5416,
- serialized_end=5573,
+ serialized_start=5760,
+ serialized_end=5917,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_AUDIO_AUDIOCODEC)
@@ -332,8 +332,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=5576,
- serialized_end=5729,
+ serialized_start=5920,
+ serialized_end=6073,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_AUDIO_AMPLIFIER)
@@ -358,8 +358,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=5731,
- serialized_end=5810,
+ serialized_start=6075,
+ serialized_end=6154,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_AUDIO_AUDIOCONFIGSTRUCTURE)
@@ -384,8 +384,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=6309,
- serialized_end=6382,
+ serialized_start=6653,
+ serialized_end=6726,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_INTERFACE)
@@ -410,8 +410,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=6384,
- serialized_end=6447,
+ serialized_start=6728,
+ serialized_end=6791,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_FACING)
@@ -444,8 +444,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=6449,
- serialized_end=6568,
+ serialized_start=6793,
+ serialized_end=6912,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_ORIENTATION)
@@ -470,8 +470,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=6570,
- serialized_end=6647,
+ serialized_start=6914,
+ serialized_end=6991,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_FLAGS)
@@ -516,8 +516,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=7589,
- serialized_end=7741,
+ serialized_start=7933,
+ serialized_end=8085,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_FORMFACTOR_FORMFACTORTYPE)
@@ -546,8 +546,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=7829,
- serialized_end=7899,
+ serialized_start=8173,
+ serialized_end=8243,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_STYLUS_STYLUSTYPE)
@@ -576,8 +576,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=8239,
- serialized_end=8320,
+ serialized_start=8583,
+ serialized_end=8664,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_KEYBOARD_KEYBOARDTYPE)
@@ -626,8 +626,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=8530,
- serialized_end=8727,
+ serialized_start=8874,
+ serialized_end=9071,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_FINGERPRINT_LOCATION)
@@ -652,8 +652,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=9226,
- serialized_end=9304,
+ serialized_start=9570,
+ serialized_end=9648,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_WIFI_WIFICHIP)
@@ -678,8 +678,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=9473,
- serialized_end=9527,
+ serialized_start=9817,
+ serialized_end=9871,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_BUTTON_REGION)
@@ -712,8 +712,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=9529,
- serialized_end=9595,
+ serialized_start=9873,
+ serialized_end=9939,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_BUTTON_EDGE)
@@ -738,8 +738,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=9991,
- serialized_end=10065,
+ serialized_start=10335,
+ serialized_end=10409,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_EMBEDDEDCONTROLLER_EMBEDDEDCONTROLLERTYPE)
@@ -768,8 +768,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=10200,
- serialized_end=10292,
+ serialized_start=10544,
+ serialized_end=10636,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_TRUSTEDPLATFORMMODULE_TRUSTEDPLATFORMMODULETYPE)
@@ -798,8 +798,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=10454,
- serialized_end=10544,
+ serialized_start=10798,
+ serialized_end=10888,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_DISPLAY_TYPE)
@@ -824,8 +824,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=11920,
- serialized_end=11980,
+ serialized_start=12277,
+ serialized_end=12337,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_PRESENT)
@@ -882,8 +882,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=11983,
- serialized_end=12147,
+ serialized_start=12340,
+ serialized_end=12504,
)
_sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_PORTPOSITION)
@@ -1043,8 +1043,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3659,
- serialized_end=3681,
+ serialized_start=3729,
+ serialized_end=3751,
)
_HARDWAREFEATURES_USBC_PORT = _descriptor.Descriptor(
@@ -1080,8 +1080,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3821,
- serialized_end=3953,
+ serialized_start=3891,
+ serialized_end=4023,
)
_HARDWAREFEATURES_USBC = _descriptor.Descriptor(
@@ -1117,8 +1117,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3684,
- serialized_end=3953,
+ serialized_start=3754,
+ serialized_end=4023,
)
_HARDWAREFEATURES_USBA = _descriptor.Descriptor(
@@ -1147,8 +1147,55 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3955,
- serialized_end=4023,
+ serialized_start=4025,
+ serialized_end=4093,
+)
+
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG = _descriptor.Descriptor(
+ name='DynamicPowerReductionConfig',
+ full_name='chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='gpio', full_name='chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.gpio', index=0,
+ number=1, type=13, cpp_type=3, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='modem_manager', full_name='chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.modem_manager', index=1,
+ number=2, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='tablet_mode', full_name='chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.tablet_mode', index=2,
+ number=3, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ _descriptor.OneofDescriptor(
+ name='dynamic_power_reduction_config', full_name='chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.dynamic_power_reduction_config',
+ index=0, containing_type=None, fields=[]),
+ ],
+ serialized_start=4414,
+ serialized_end=4567,
)
_HARDWAREFEATURES_CELLULAR = _descriptor.Descriptor(
@@ -1186,10 +1233,17 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='dynamic_power_reduction_config', full_name='chromiumos.config.api.HardwareFeatures.Cellular.dynamic_power_reduction_config', index=4,
+ number=5, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
- nested_types=[],
+ nested_types=[_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG, ],
enum_types=[
_HARDWAREFEATURES_CELLULAR_CELLULARTYPE,
],
@@ -1199,8 +1253,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4026,
- serialized_end=4291,
+ serialized_start=4096,
+ serialized_end=4635,
)
_HARDWAREFEATURES_HDMI = _descriptor.Descriptor(
@@ -1229,8 +1283,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4293,
- serialized_end=4365,
+ serialized_start=4637,
+ serialized_end=4709,
)
_HARDWAREFEATURES_FIRMWARECONFIGURATION = _descriptor.Descriptor(
@@ -1266,8 +1320,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4367,
- serialized_end=4419,
+ serialized_start=4711,
+ serialized_end=4763,
)
_HARDWAREFEATURES_AUDIO_CARDCONFIG = _descriptor.Descriptor(
@@ -1324,8 +1378,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5055,
- serialized_end=5413,
+ serialized_start=5399,
+ serialized_end=5757,
)
_HARDWAREFEATURES_AUDIO = _descriptor.Descriptor(
@@ -1406,8 +1460,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4422,
- serialized_end=5810,
+ serialized_start=4766,
+ serialized_end=6154,
)
_HARDWAREFEATURES_CAMERA_DEVICE = _descriptor.Descriptor(
@@ -1478,8 +1532,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5896,
- serialized_end=6307,
+ serialized_start=6240,
+ serialized_end=6651,
)
_HARDWAREFEATURES_CAMERA = _descriptor.Descriptor(
@@ -1512,8 +1566,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5813,
- serialized_end=6647,
+ serialized_start=6157,
+ serialized_end=6991,
)
_HARDWAREFEATURES_ACCELEROMETER = _descriptor.Descriptor(
@@ -1549,8 +1603,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6650,
- serialized_end=6818,
+ serialized_start=6994,
+ serialized_end=7162,
)
_HARDWAREFEATURES_GYROSCOPE = _descriptor.Descriptor(
@@ -1586,8 +1640,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6821,
- serialized_end=6977,
+ serialized_start=7165,
+ serialized_end=7321,
)
_HARDWAREFEATURES_MAGNETOMETER = _descriptor.Descriptor(
@@ -1623,8 +1677,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=6980,
- serialized_end=7145,
+ serialized_start=7324,
+ serialized_end=7489,
)
_HARDWAREFEATURES_LIGHTSENSOR = _descriptor.Descriptor(
@@ -1660,8 +1714,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=7148,
- serialized_end=7310,
+ serialized_start=7492,
+ serialized_end=7654,
)
_HARDWAREFEATURES_SCREEN = _descriptor.Descriptor(
@@ -1697,8 +1751,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=7313,
- serialized_end=7483,
+ serialized_start=7657,
+ serialized_end=7827,
)
_HARDWAREFEATURES_FORMFACTOR = _descriptor.Descriptor(
@@ -1728,8 +1782,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=7486,
- serialized_end=7741,
+ serialized_start=7830,
+ serialized_end=8085,
)
_HARDWAREFEATURES_STYLUS = _descriptor.Descriptor(
@@ -1759,8 +1813,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=7744,
- serialized_end=7899,
+ serialized_start=8088,
+ serialized_end=8243,
)
_HARDWAREFEATURES_KEYBOARD = _descriptor.Descriptor(
@@ -1818,8 +1872,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=7902,
- serialized_end=8320,
+ serialized_start=8246,
+ serialized_end=8664,
)
_HARDWAREFEATURES_MEMORY = _descriptor.Descriptor(
@@ -1848,8 +1902,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=8322,
- serialized_end=8396,
+ serialized_start=8666,
+ serialized_end=8740,
)
_HARDWAREFEATURES_FINGERPRINT = _descriptor.Descriptor(
@@ -1893,8 +1947,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=8399,
- serialized_end=8727,
+ serialized_start=8743,
+ serialized_end=9071,
)
_HARDWAREFEATURES_STORAGE = _descriptor.Descriptor(
@@ -1930,8 +1984,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=8729,
- serialized_end=8831,
+ serialized_start=9073,
+ serialized_end=9175,
)
_HARDWAREFEATURES_BLUETOOTH = _descriptor.Descriptor(
@@ -1967,8 +2021,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=8834,
- serialized_end=8974,
+ serialized_start=9178,
+ serialized_end=9318,
)
_HARDWAREFEATURES_BARRELJACK = _descriptor.Descriptor(
@@ -1997,8 +2051,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=8976,
- serialized_end=9054,
+ serialized_start=9320,
+ serialized_end=9398,
)
_HARDWAREFEATURES_WIFI = _descriptor.Descriptor(
@@ -2035,8 +2089,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=9057,
- serialized_end=9304,
+ serialized_start=9401,
+ serialized_end=9648,
)
_HARDWAREFEATURES_BUTTON = _descriptor.Descriptor(
@@ -2081,8 +2135,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=9307,
- serialized_end=9595,
+ serialized_start=9651,
+ serialized_end=9939,
)
_HARDWAREFEATURES_EMBEDDEDCONTROLLER = _descriptor.Descriptor(
@@ -2140,8 +2194,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=9598,
- serialized_end=10065,
+ serialized_start=9942,
+ serialized_end=10409,
)
_HARDWAREFEATURES_TRUSTEDPLATFORMMODULE = _descriptor.Descriptor(
@@ -2171,8 +2225,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10068,
- serialized_end=10292,
+ serialized_start=10412,
+ serialized_end=10636,
)
_HARDWAREFEATURES_HOTWORDING = _descriptor.Descriptor(
@@ -2201,8 +2255,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10294,
- serialized_end=10372,
+ serialized_start=10638,
+ serialized_end=10716,
)
_HARDWAREFEATURES_DISPLAY = _descriptor.Descriptor(
@@ -2232,8 +2286,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10375,
- serialized_end=10544,
+ serialized_start=10719,
+ serialized_end=10888,
)
_HARDWAREFEATURES_TOUCHPAD = _descriptor.Descriptor(
@@ -2262,8 +2316,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10546,
- serialized_end=10622,
+ serialized_start=10890,
+ serialized_end=10966,
)
_HARDWAREFEATURES_MICROPHONEMUTESWITCH = _descriptor.Descriptor(
@@ -2292,8 +2346,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10624,
- serialized_end=10712,
+ serialized_start=10968,
+ serialized_end=11056,
)
_HARDWAREFEATURES_BATTERY_LIFETIME = _descriptor.Descriptor(
@@ -2350,8 +2404,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10945,
- serialized_end=11232,
+ serialized_start=11289,
+ serialized_end=11576,
)
_HARDWAREFEATURES_BATTERY_CHARGING = _descriptor.Descriptor(
@@ -2394,8 +2448,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11235,
- serialized_end=11409,
+ serialized_start=11579,
+ serialized_end=11753,
)
_HARDWAREFEATURES_BATTERY = _descriptor.Descriptor(
@@ -2438,8 +2492,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=10715,
- serialized_end=11409,
+ serialized_start=11059,
+ serialized_end=11753,
)
_HARDWAREFEATURES_PRIVACYSCREEN = _descriptor.Descriptor(
@@ -2468,8 +2522,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11411,
- serialized_end=11492,
+ serialized_start=11755,
+ serialized_end=11836,
)
_HARDWAREFEATURES_SOC = _descriptor.Descriptor(
@@ -2498,8 +2552,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11494,
- serialized_end=11563,
+ serialized_start=11838,
+ serialized_end=11907,
)
_HARDWAREFEATURES_DISPLAYPORTCONVERTER = _descriptor.Descriptor(
@@ -2528,8 +2582,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11565,
- serialized_end=11662,
+ serialized_start=11909,
+ serialized_end=12006,
)
_HARDWAREFEATURES_HPS = _descriptor.Descriptor(
@@ -2558,8 +2612,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11664,
- serialized_end=11735,
+ serialized_start=12008,
+ serialized_end=12079,
)
_HARDWAREFEATURES_POE = _descriptor.Descriptor(
@@ -2588,8 +2642,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11737,
- serialized_end=11808,
+ serialized_start=12081,
+ serialized_end=12152,
)
_HARDWAREFEATURES_POWERSUPPLY = _descriptor.Descriptor(
@@ -2625,8 +2679,31 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=11810,
- serialized_end=11918,
+ serialized_start=12154,
+ serialized_end=12262,
+)
+
+_HARDWAREFEATURES_PROXIMITY = _descriptor.Descriptor(
+ name='Proximity',
+ full_name='chromiumos.config.api.HardwareFeatures.Proximity',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=12264,
+ serialized_end=12275,
)
_HARDWAREFEATURES = _descriptor.Descriptor(
@@ -2888,10 +2965,17 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='proximity', full_name='chromiumos.config.api.HardwareFeatures.proximity', index=36,
+ number=37, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
- nested_types=[_HARDWAREFEATURES_COUNT, _HARDWAREFEATURES_USBC, _HARDWAREFEATURES_USBA, _HARDWAREFEATURES_CELLULAR, _HARDWAREFEATURES_HDMI, _HARDWAREFEATURES_FIRMWARECONFIGURATION, _HARDWAREFEATURES_AUDIO, _HARDWAREFEATURES_CAMERA, _HARDWAREFEATURES_ACCELEROMETER, _HARDWAREFEATURES_GYROSCOPE, _HARDWAREFEATURES_MAGNETOMETER, _HARDWAREFEATURES_LIGHTSENSOR, _HARDWAREFEATURES_SCREEN, _HARDWAREFEATURES_FORMFACTOR, _HARDWAREFEATURES_STYLUS, _HARDWAREFEATURES_KEYBOARD, _HARDWAREFEATURES_MEMORY, _HARDWAREFEATURES_FINGERPRINT, _HARDWAREFEATURES_STORAGE, _HARDWAREFEATURES_BLUETOOTH, _HARDWAREFEATURES_BARRELJACK, _HARDWAREFEATURES_WIFI, _HARDWAREFEATURES_BUTTON, _HARDWAREFEATURES_EMBEDDEDCONTROLLER, _HARDWAREFEATURES_TRUSTEDPLATFORMMODULE, _HARDWAREFEATURES_HOTWORDING, _HARDWAREFEATURES_DISPLAY, _HARDWAREFEATURES_TOUCHPAD, _HARDWAREFEATURES_MICROPHONEMUTESWITCH, _HARDWAREFEATURES_BATTERY, _HARDWAREFEATURES_PRIVACYSCREEN, _HARDWAREFEATURES_SOC, _HARDWAREFEATURES_DISPLAYPORTCONVERTER, _HARDWAREFEATURES_HPS, _HARDWAREFEATURES_POE, _HARDWAREFEATURES_POWERSUPPLY, ],
+ nested_types=[_HARDWAREFEATURES_COUNT, _HARDWAREFEATURES_USBC, _HARDWAREFEATURES_USBA, _HARDWAREFEATURES_CELLULAR, _HARDWAREFEATURES_HDMI, _HARDWAREFEATURES_FIRMWARECONFIGURATION, _HARDWAREFEATURES_AUDIO, _HARDWAREFEATURES_CAMERA, _HARDWAREFEATURES_ACCELEROMETER, _HARDWAREFEATURES_GYROSCOPE, _HARDWAREFEATURES_MAGNETOMETER, _HARDWAREFEATURES_LIGHTSENSOR, _HARDWAREFEATURES_SCREEN, _HARDWAREFEATURES_FORMFACTOR, _HARDWAREFEATURES_STYLUS, _HARDWAREFEATURES_KEYBOARD, _HARDWAREFEATURES_MEMORY, _HARDWAREFEATURES_FINGERPRINT, _HARDWAREFEATURES_STORAGE, _HARDWAREFEATURES_BLUETOOTH, _HARDWAREFEATURES_BARRELJACK, _HARDWAREFEATURES_WIFI, _HARDWAREFEATURES_BUTTON, _HARDWAREFEATURES_EMBEDDEDCONTROLLER, _HARDWAREFEATURES_TRUSTEDPLATFORMMODULE, _HARDWAREFEATURES_HOTWORDING, _HARDWAREFEATURES_DISPLAY, _HARDWAREFEATURES_TOUCHPAD, _HARDWAREFEATURES_MICROPHONEMUTESWITCH, _HARDWAREFEATURES_BATTERY, _HARDWAREFEATURES_PRIVACYSCREEN, _HARDWAREFEATURES_SOC, _HARDWAREFEATURES_DISPLAYPORTCONVERTER, _HARDWAREFEATURES_HPS, _HARDWAREFEATURES_POE, _HARDWAREFEATURES_POWERSUPPLY, _HARDWAREFEATURES_PROXIMITY, ],
enum_types=[
_HARDWAREFEATURES_PRESENT,
_HARDWAREFEATURES_PORTPOSITION,
@@ -2903,7 +2987,7 @@
oneofs=[
],
serialized_start=1103,
- serialized_end=12147,
+ serialized_end=12504,
)
_TOPOLOGY_DESCRIPTIONENTRY.containing_type = _TOPOLOGY
@@ -2922,8 +3006,17 @@
_HARDWAREFEATURES_USBC.containing_type = _HARDWAREFEATURES
_HARDWAREFEATURES_USBA.fields_by_name['count'].message_type = _HARDWAREFEATURES_COUNT
_HARDWAREFEATURES_USBA.containing_type = _HARDWAREFEATURES
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.fields_by_name['tablet_mode'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.containing_type = _HARDWAREFEATURES_CELLULAR
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.oneofs_by_name['dynamic_power_reduction_config'].fields.append(
+ _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.fields_by_name['gpio'])
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.fields_by_name['gpio'].containing_oneof = _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.oneofs_by_name['dynamic_power_reduction_config']
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.oneofs_by_name['dynamic_power_reduction_config'].fields.append(
+ _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.fields_by_name['modem_manager'])
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.fields_by_name['modem_manager'].containing_oneof = _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.oneofs_by_name['dynamic_power_reduction_config']
_HARDWAREFEATURES_CELLULAR.fields_by_name['present'].enum_type = _HARDWAREFEATURES_PRESENT
_HARDWAREFEATURES_CELLULAR.fields_by_name['type'].enum_type = _HARDWAREFEATURES_CELLULAR_CELLULARTYPE
+_HARDWAREFEATURES_CELLULAR.fields_by_name['dynamic_power_reduction_config'].message_type = _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG
_HARDWAREFEATURES_CELLULAR.containing_type = _HARDWAREFEATURES
_HARDWAREFEATURES_CELLULAR_CELLULARTYPE.containing_type = _HARDWAREFEATURES_CELLULAR
_HARDWAREFEATURES_HDMI.fields_by_name['present'].enum_type = _HARDWAREFEATURES_PRESENT
@@ -3051,6 +3144,7 @@
_HARDWAREFEATURES_POE.containing_type = _HARDWAREFEATURES
_HARDWAREFEATURES_POWERSUPPLY.fields_by_name['barreljack'].enum_type = _HARDWAREFEATURES_PRESENT
_HARDWAREFEATURES_POWERSUPPLY.containing_type = _HARDWAREFEATURES
+_HARDWAREFEATURES_PROXIMITY.containing_type = _HARDWAREFEATURES
_HARDWAREFEATURES.fields_by_name['usb_c'].message_type = _HARDWAREFEATURES_USBC
_HARDWAREFEATURES.fields_by_name['usb_a'].message_type = _HARDWAREFEATURES_USBA
_HARDWAREFEATURES.fields_by_name['cellular'].message_type = _HARDWAREFEATURES_CELLULAR
@@ -3087,6 +3181,7 @@
_HARDWAREFEATURES.fields_by_name['hps'].message_type = _HARDWAREFEATURES_HPS
_HARDWAREFEATURES.fields_by_name['poe'].message_type = _HARDWAREFEATURES_POE
_HARDWAREFEATURES.fields_by_name['power_supply'].message_type = _HARDWAREFEATURES_POWERSUPPLY
+_HARDWAREFEATURES.fields_by_name['proximity'].message_type = _HARDWAREFEATURES_PROXIMITY
_HARDWAREFEATURES_PRESENT.containing_type = _HARDWAREFEATURES
_HARDWAREFEATURES_PORTPOSITION.containing_type = _HARDWAREFEATURES
DESCRIPTOR.message_types_by_name['Topology'] = _TOPOLOGY
@@ -3147,6 +3242,13 @@
,
Cellular = _reflection.GeneratedProtocolMessageType('Cellular', (_message.Message,), dict(
+
+ DynamicPowerReductionConfig = _reflection.GeneratedProtocolMessageType('DynamicPowerReductionConfig', (_message.Message,), dict(
+ DESCRIPTOR = _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG,
+ __module__ = 'chromiumos.config.api.topology_pb2'
+ # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig)
+ ))
+ ,
DESCRIPTOR = _HARDWAREFEATURES_CELLULAR,
__module__ = 'chromiumos.config.api.topology_pb2'
# @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.Cellular)
@@ -3404,6 +3506,13 @@
# @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.PowerSupply)
))
,
+
+ Proximity = _reflection.GeneratedProtocolMessageType('Proximity', (_message.Message,), dict(
+ DESCRIPTOR = _HARDWAREFEATURES_PROXIMITY,
+ __module__ = 'chromiumos.config.api.topology_pb2'
+ # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.Proximity)
+ ))
+ ,
DESCRIPTOR = _HARDWAREFEATURES,
__module__ = 'chromiumos.config.api.topology_pb2'
# @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures)
@@ -3414,6 +3523,7 @@
_sym_db.RegisterMessage(HardwareFeatures.UsbC.Port)
_sym_db.RegisterMessage(HardwareFeatures.UsbA)
_sym_db.RegisterMessage(HardwareFeatures.Cellular)
+_sym_db.RegisterMessage(HardwareFeatures.Cellular.DynamicPowerReductionConfig)
_sym_db.RegisterMessage(HardwareFeatures.Hdmi)
_sym_db.RegisterMessage(HardwareFeatures.FirmwareConfiguration)
_sym_db.RegisterMessage(HardwareFeatures.Audio)
@@ -3450,6 +3560,7 @@
_sym_db.RegisterMessage(HardwareFeatures.Hps)
_sym_db.RegisterMessage(HardwareFeatures.PoE)
_sym_db.RegisterMessage(HardwareFeatures.PowerSupply)
+_sym_db.RegisterMessage(HardwareFeatures.Proximity)
DESCRIPTOR._options = None
diff --git a/test/project/fake/fake/config.star b/test/project/fake/fake/config.star
index 6e28696..76c84ad 100755
--- a/test/project/fake/fake/config.star
+++ b/test/project/fake/fake/config.star
@@ -170,6 +170,7 @@
_NO_FINGERPRINT = hw_topo.create_fingerprint("NONE", "No finger print sensor", location = hw_topo.fp_loc.NOT_PRESENT)
_HPS = hw_topo.create_hps("HPS", "Default Hps", present = True)
_PROXIMITY_SENSOR = hw_topo.create_proximity_sensor("PROXIMITY_SENSOR", "Default proximity_sensor")
+_NO_PROXIMITY_SENSOR = None
_DAUGHTER_BOARD = hw_topo.create_daughter_board(
"Default DB",
"Default daughter_board",
@@ -179,8 +180,9 @@
)
_NON_VOLATILE_STORAGE = hw_topo.create_non_volatile_storage("NON_VOLATILE_STORAGE", "Default non_volatile_storage", storage_type = hw_topo.storage.EMMC)
_WIFI = hw_topo.create_wifi("WIFI", "Default wifi", fw_configs = [hw_topo.make_fw_config(program.fw_masks.WIFI_SAR_ID, 6)])
-_LTE_BOARD = hw_topo.create_cellular_board("LTE_BOARD", "Default cellular_board", present = True, type = hw_topo.cellular.CELLULAR_LTE)
-_LTE_BOARD_WITH_MODEL = hw_topo.create_cellular_board("LTE_BOARD_MODEL", "Default cellular_board w/ model", present = True, type = hw_topo.cellular.CELLULAR_LTE, model = "FakeModem")
+_LTE_BOARD = hw_topo.create_cellular_board("LTE_BOARD", "Default cellular_board", present = True, type = hw_topo.cellular.CELLULAR_LTE, dynamic_power_reduction_config = hw_topo.make_cellular_dynamic_power_reduction_config(modem_manager = True))
+_LTE_BOARD_WITH_MODEL = hw_topo.create_cellular_board("LTE_BOARD_MODEL", "Default cellular_board w/ model", present = True, type = hw_topo.cellular.CELLULAR_LTE, model = "FakeModem", dynamic_power_reduction_config = hw_topo.make_cellular_dynamic_power_reduction_config(gpio = 0, tablet_mode = True))
+_LTE_BOARD_WITH_NO_DPR = hw_topo.create_cellular_board("LTE_BOARD_NO_DPR", "Default cellular_board without dynamic power reduction config", present = True, type = hw_topo.cellular.CELLULAR_LTE, dynamic_power_reduction_config = None)
_SD_READER = hw_topo.create_sd_reader("SD_READER", "Default sd_reader")
_MOTHERBOARD_USB = hw_topo.create_motherboard_usb(
"MOTHERBOARD_USB",
@@ -243,7 +245,8 @@
hdmi = None,
hps = None,
audio = None,
- power_supply = None):
+ power_supply = None,
+ proximity_sensor = None):
return hw_topo.create_hardware_topology(
bluetooth = bluetooth if bluetooth else None,
barreljack = barreljack if barreljack else None,
@@ -259,7 +262,7 @@
daughter_board = daughter_board if daughter_board else _DAUGHTER_BOARD,
motherboard_usb = _MOTHERBOARD_USB,
non_volatile_storage = _NON_VOLATILE_STORAGE,
- proximity_sensor = _PROXIMITY_SENSOR,
+ proximity_sensor = proximity_sensor if proximity_sensor else _NO_PROXIMITY_SENSOR,
sd_reader = _SD_READER,
thermal = _THERMAL,
wifi = _WIFI,
@@ -647,6 +650,8 @@
form_factor = _FORM_FACTOR_DETACHABLE,
screen = _TOUCHSCREEN,
stylus = _STYLUS,
+ cellular_board = _LTE_BOARD_WITH_MODEL,
+ proximity_sensor = _NO_PROXIMITY_SENSOR,
),
bluetooth = _SC_BLUETOOTH,
firmware = sc.create_fw_payloads_by_names(
@@ -739,6 +744,15 @@
config_id = 64,
hardware_topology = create_hardware_topology(
camera = _CAMERA1,
+ daughter_board = hw_topo.create_daughter_board(
+ "LTE DB",
+ "LTE daughter_board",
+ fw_configs = [hw_topo.make_fw_config(program.fw_masks.DB, 2)],
+ cellular_support = True,
+ cellular_type = hw_topo.cellular.CELLULAR_LTE,
+ cellular_dynamic_power_reduction_config = hw_topo.make_cellular_dynamic_power_reduction_config(gpio = 20, tablet_mode = True),
+ ),
+ proximity_sensor = _PROXIMITY_SENSOR,
),
audio = [sc.create_audio(
_AUDIO_CARD,
@@ -769,6 +783,7 @@
config_id = 65,
hardware_topology = create_hardware_topology(
camera = _CAMERA1,
+ cellular_board = _LTE_BOARD_WITH_NO_DPR,
),
firmware = sc.create_fw_payloads_by_names(
"Fake",
@@ -800,6 +815,8 @@
bj_present = True,
),
camera = _CAMERA0,
+ cellular_board = _LTE_BOARD_WITH_MODEL,
+ proximity_sensor = _NO_PROXIMITY_SENSOR,
),
firmware = sc.create_fw_payloads_by_names(
"Fake",
diff --git a/test/project/fake/fake/factory/generated/model_sku.json b/test/project/fake/fake/factory/generated/model_sku.json
index 92c33b4..098ce5f 100644
--- a/test/project/fake/fake/factory/generated/model_sku.json
+++ b/test/project/fake/fake/factory/generated/model_sku.json
@@ -13,7 +13,7 @@
"component.has_lte": true,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_sd_reader": true,
"component.has_stylus": true,
"component.has_tabletmode": false,
@@ -39,7 +39,7 @@
"component.has_lte": true,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_rear_camera": false,
"component.has_sd_reader": true,
"component.has_stylus": true,
@@ -89,7 +89,7 @@
"component.has_lte": true,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_rear_camera": false,
"component.has_sd_reader": true,
"component.has_stylus": true,
@@ -132,10 +132,9 @@
"component.has_keyboard_backlight": false,
"component.has_lid_gyroscope": null,
"component.has_lid_magnetometer": null,
- "component.has_lte": false,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_rear_camera": null,
"component.has_sd_reader": true,
"component.has_stylus": false,
@@ -183,7 +182,7 @@
"component.has_lte": false,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_rear_camera": false,
"component.has_sd_reader": true,
"component.has_stylus": true,
@@ -230,10 +229,10 @@
"component.has_lid_accelerometer": null,
"component.has_lid_gyroscope": null,
"component.has_lid_magnetometer": null,
- "component.has_lte": false,
+ "component.has_lte": true,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
- "component.has_proximity_sensor": true,
+ "component.has_proximity_sensor": null,
"component.has_rear_camera": false,
"component.has_sd_reader": true,
"component.has_stylus": false,
@@ -274,14 +273,14 @@
"component.has_base_gyroscope": true,
"component.has_base_magnetometer": true,
"component.has_daughter_board_usb_a": 0,
- "component.has_daughter_board_usb_c": 1,
+ "component.has_daughter_board_usb_c": 0,
"component.has_fingerprint": false,
"component.has_front_camera": true,
"component.has_keyboard_backlight": false,
"component.has_lid_accelerometer": null,
"component.has_lid_gyroscope": null,
"component.has_lid_magnetometer": null,
- "component.has_lte": false,
+ "component.has_lte": true,
"component.has_mother_board_usb_a": 0,
"component.has_mother_board_usb_c": 2,
"component.has_proximity_sensor": true,
@@ -306,7 +305,7 @@
[
"usb_host",
"==",
- 3
+ 2
],
[
"stylus",
@@ -316,7 +315,7 @@
],
"component.speaker_amp": "AMPLIFIER_UNKNOWN",
"custom_type": "whitelabel",
- "fw_config": 90913
+ "fw_config": 90914
}
},
"product_sku": {
@@ -396,6 +395,7 @@
"component.has_base_gyroscope": true,
"component.has_base_magnetometer": true,
"component.has_lid_accelerometer": null,
+ "component.has_lte": true,
"component.speaker_amp": "MAX98373",
"fw_config": 90897
},
@@ -404,6 +404,7 @@
"component.has_base_gyroscope": true,
"component.has_base_magnetometer": true,
"component.has_lid_accelerometer": null,
+ "component.has_lte": false,
"component.speaker_amp": "AMPLIFIER_UNKNOWN",
"fw_config": 90897
},
@@ -412,6 +413,7 @@
"component.has_base_gyroscope": null,
"component.has_base_magnetometer": null,
"component.has_lid_accelerometer": true,
+ "component.has_lte": false,
"component.speaker_amp": "MAX98373",
"fw_config": 90113
}
diff --git a/test/project/fake/fake/generated/config.jsonproto b/test/project/fake/fake/generated/config.jsonproto
index 4985721..3221a4e 100644
--- a/test/project/fake/fake/generated/config.jsonproto
+++ b/test/project/fake/fake/generated/config.jsonproto
@@ -216,6 +216,9 @@
]
},
"cellular": {
+ "dynamicPowerReductionConfig": {
+ "modemManager": true
+ },
"present": 1,
"type": 1
},
@@ -432,6 +435,9 @@
},
"hardwareFeature": {
"cellular": {
+ "dynamicPowerReductionConfig": {
+ "modemManager": true
+ },
"present": 1,
"type": 1
}
@@ -619,14 +625,6 @@
"id": "POWER_SUPPLY",
"type": 32
},
- "proximitySensor": {
- "description": {
- "EN": "Default proximity_sensor"
- },
- "hardwareFeature": {},
- "id": "PROXIMITY_SENSOR",
- "type": 10
- },
"screen": {
"description": {
"EN": "Touchscreen"
@@ -793,6 +791,10 @@
]
},
"cellular": {
+ "dynamicPowerReductionConfig": {
+ "gpio": 0,
+ "tabletMode": true
+ },
"model": "FakeModem",
"present": 1,
"type": 1
@@ -986,6 +988,10 @@
},
"hardwareFeature": {
"cellular": {
+ "dynamicPowerReductionConfig": {
+ "gpio": 0,
+ "tabletMode": true
+ },
"model": "FakeModem",
"present": 1,
"type": 1
@@ -1148,14 +1154,6 @@
"id": "POWER_SUPPLY",
"type": 32
},
- "proximitySensor": {
- "description": {
- "EN": "Default proximity_sensor"
- },
- "hardwareFeature": {},
- "id": "PROXIMITY_SENSOR",
- "type": 10
- },
"screen": {
"description": {
"EN": "Touchscreen"
@@ -1335,6 +1333,9 @@
]
},
"cellular": {
+ "dynamicPowerReductionConfig": {
+ "modemManager": true
+ },
"present": 1,
"type": 1
},
@@ -1527,6 +1528,9 @@
},
"hardwareFeature": {
"cellular": {
+ "dynamicPowerReductionConfig": {
+ "modemManager": true
+ },
"present": 1,
"type": 1
}
@@ -1681,14 +1685,6 @@
"id": "POWER_SUPPLY",
"type": 32
},
- "proximitySensor": {
- "description": {
- "EN": "Default proximity_sensor"
- },
- "hardwareFeature": {},
- "id": "PROXIMITY_SENSOR",
- "type": 10
- },
"screen": {
"description": {
"EN": "Touchscreen"
@@ -1870,7 +1866,11 @@
]
},
"cellular": {
- "model": "FakeModemB",
+ "dynamicPowerReductionConfig": {
+ "gpio": 0,
+ "tabletMode": true
+ },
+ "model": "FakeModem",
"present": 1,
"type": 1
},
@@ -2054,6 +2054,24 @@
"id": "CAMERA1",
"type": 7
},
+ "cellularBoard": {
+ "description": {
+ "EN": "Default cellular_board w/ model"
+ },
+ "hardwareFeature": {
+ "cellular": {
+ "dynamicPowerReductionConfig": {
+ "gpio": 0,
+ "tabletMode": true
+ },
+ "model": "FakeModem",
+ "present": 1,
+ "type": 1
+ }
+ },
+ "id": "LTE_BOARD_MODEL",
+ "type": 15
+ },
"daughterBoard": {
"description": {
"EN": "Non-default daughter_board with LTE"
@@ -2193,14 +2211,6 @@
"id": "POWER_SUPPLY",
"type": 32
},
- "proximitySensor": {
- "description": {
- "EN": "Default proximity_sensor"
- },
- "hardwareFeature": {},
- "id": "PROXIMITY_SENSOR",
- "type": 10
- },
"screen": {
"description": {
"EN": "Touchscreen"
@@ -2710,14 +2720,6 @@
"id": "POWER_SUPPLY",
"type": 32
},
- "proximitySensor": {
- "description": {
- "EN": "Default proximity_sensor"
- },
- "hardwareFeature": {},
- "id": "PROXIMITY_SENSOR",
- "type": 10
- },
"screen": {
"description": {
"EN": "Touchscreen"
@@ -2887,7 +2889,12 @@
]
},
"cellular": {
- "present": 2
+ "dynamicPowerReductionConfig": {
+ "gpio": 20,
+ "tabletMode": true
+ },
+ "present": 1,
+ "type": 1
},
"fingerprint": {
"location": 5
@@ -2897,7 +2904,7 @@
},
"fwConfig": {
"mask": 131071,
- "value": 90913
+ "value": 90914
},
"gyroscope": {
"baseGyroscope": 1
@@ -2923,6 +2930,7 @@
"barreljack": 2,
"usbMinAcWatts": 20
},
+ "proximity": {},
"screen": {
"panelProperties": {
"alsSteps": [
@@ -2958,7 +2966,7 @@
},
"usbC": {
"count": {
- "value": 3
+ "value": 2
},
"ports": [
{
@@ -2966,10 +2974,6 @@
},
{
"position": 5
- },
- {
- "indexOverride": 1,
- "position": 2
}
]
},
@@ -3052,15 +3056,20 @@
},
"daughterBoard": {
"description": {
- "EN": "Default daughter_board"
+ "EN": "LTE daughter_board"
},
"hardwareFeature": {
"cellular": {
- "present": 2
+ "dynamicPowerReductionConfig": {
+ "gpio": 20,
+ "tabletMode": true
+ },
+ "present": 1,
+ "type": 1
},
"fwConfig": {
"mask": 15,
- "value": 1
+ "value": 2
},
"hdmi": {
"present": 2
@@ -3069,18 +3078,10 @@
"count": {}
},
"usbC": {
- "count": {
- "value": 1
- },
- "ports": [
- {
- "indexOverride": 1,
- "position": 2
- }
- ]
+ "count": {}
}
},
- "id": "Default DB",
+ "id": "LTE DB",
"type": 11
},
"ec": {
@@ -3200,7 +3201,9 @@
"description": {
"EN": "Default proximity_sensor"
},
- "hardwareFeature": {},
+ "hardwareFeature": {
+ "proximity": {}
+ },
"id": "PROXIMITY_SENSOR",
"type": 10
},
@@ -3363,7 +3366,8 @@
]
},
"cellular": {
- "present": 2
+ "present": 1,
+ "type": 1
},
"fingerprint": {
"location": 5
@@ -3526,6 +3530,19 @@
"id": "CAMERA1",
"type": 7
},
+ "cellularBoard": {
+ "description": {
+ "EN": "Default cellular_board without dynamic power reduction config"
+ },
+ "hardwareFeature": {
+ "cellular": {
+ "present": 1,
+ "type": 1
+ }
+ },
+ "id": "LTE_BOARD_NO_DPR",
+ "type": 15
+ },
"daughterBoard": {
"description": {
"EN": "Default daughter_board"
@@ -3672,14 +3689,6 @@
"id": "POWER_SUPPLY",
"type": 32
},
- "proximitySensor": {
- "description": {
- "EN": "Default proximity_sensor"
- },
- "hardwareFeature": {},
- "id": "PROXIMITY_SENSOR",
- "type": 10
- },
"screen": {
"description": {
"EN": "Default screen"
@@ -3827,7 +3836,13 @@
"speakerAmp": 5
},
"cellular": {
- "present": 2
+ "dynamicPowerReductionConfig": {
+ "gpio": 0,
+ "tabletMode": true
+ },
+ "model": "FakeModem",
+ "present": 1,
+ "type": 1
},
"fingerprint": {
"location": 5
@@ -3979,6 +3994,24 @@
"id": "CAMERA0",
"type": 7
},
+ "cellularBoard": {
+ "description": {
+ "EN": "Default cellular_board w/ model"
+ },
+ "hardwareFeature": {
+ "cellular": {
+ "dynamicPowerReductionConfig": {
+ "gpio": 0,
+ "tabletMode": true
+ },
+ "model": "FakeModem",
+ "present": 1,
+ "type": 1
+ }
+ },
+ "id": "LTE_BOARD_MODEL",
+ "type": 15
+ },
"daughterBoard": {
"description": {
"EN": "Default daughter_board"
@@ -4125,14 +4158,6 @@
"id": "BJ_POWER_SUPPLY",
"type": 32
},
- "proximitySensor": {
- "description": {
- "EN": "Default proximity_sensor"
- },
- "hardwareFeature": {},
- "id": "PROXIMITY_SENSOR",
- "type": 10
- },
"screen": {
"description": {
"EN": "Default screen"
@@ -4554,14 +4579,6 @@
"id": "POWER_SUPPLY",
"type": 32
},
- "proximitySensor": {
- "description": {
- "EN": "Default proximity_sensor"
- },
- "hardwareFeature": {},
- "id": "PROXIMITY_SENSOR",
- "type": 10
- },
"screen": {
"description": {
"EN": "Default screen"
@@ -4965,14 +4982,6 @@
"id": "POWER_SUPPLY",
"type": 32
},
- "proximitySensor": {
- "description": {
- "EN": "Default proximity_sensor"
- },
- "hardwareFeature": {},
- "id": "PROXIMITY_SENSOR",
- "type": 10
- },
"screen": {
"description": {
"EN": "Default screen"
diff --git a/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json b/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json
index 5c343a9..57e8801 100644
--- a/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json
+++ b/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json
@@ -572,10 +572,12 @@
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.0",
"internal-backlight-no-als-battery-brightness": "63.0",
+ "set-cellular-transmit-power-for-tablet-mode": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "3000",
"usb-min-ac-watts": "20",
+ "use-modemmanager-for-dynamic-sar": "1",
"wake-on-dp": "1"
},
"thermal": {
@@ -764,7 +766,7 @@
"smbios-name-match": "PROJECT_B"
},
"modem": {
- "firmware-variant": "fakemodemb"
+ "firmware-variant": "fakemodem"
},
"name": "project_b",
"power": {
@@ -773,6 +775,8 @@
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.0",
"internal-backlight-no-als-battery-brightness": "63.0",
+ "set-cellular-transmit-power-dpr-gpio": "0",
+ "set-cellular-transmit-power-for-tablet-mode": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "3000",
@@ -1127,7 +1131,7 @@
"zephyr-ec": "projects/fake/fake"
},
"ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
- "firmware-config": 90913,
+ "firmware-config": 90914,
"image-name": "fake",
"main-ro-image": "bcs://Fake.11111.0.0.tbz2",
"main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1148,14 +1152,19 @@
"sku-id": 64,
"smbios-name-match": "PROJECT_WL"
},
+ "modem": {
+ "firmware-variant": "project_wl"
+ },
"name": "project_wl",
"power": {
"battery-poll-interval-initial-ms": "1000",
- "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+ "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.1",
"internal-backlight-no-als-battery-brightness": "63.2",
"min-visible-backlight-level": "1000",
+ "set-cellular-transmit-power-dpr-gpio": "20",
+ "set-cellular-transmit-power-for-proximity": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "0",
@@ -1295,7 +1304,7 @@
"zephyr-ec": "projects/fake/fake"
},
"ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
- "firmware-config": 90913,
+ "firmware-config": 90914,
"image-name": "fake",
"main-ro-image": "bcs://Fake.11111.0.0.tbz2",
"main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1317,14 +1326,19 @@
"smbios-name-match": "PROJECT_WL",
"whitelabel-tag": "loema"
},
+ "modem": {
+ "firmware-variant": "project_wl"
+ },
"name": "project_wl",
"power": {
"battery-poll-interval-initial-ms": "1000",
- "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+ "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.1",
"internal-backlight-no-als-battery-brightness": "63.2",
"min-visible-backlight-level": "1000",
+ "set-cellular-transmit-power-dpr-gpio": "20",
+ "set-cellular-transmit-power-for-proximity": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "0",
@@ -1464,7 +1478,7 @@
"zephyr-ec": "projects/fake/fake"
},
"ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
- "firmware-config": 90913,
+ "firmware-config": 90914,
"image-name": "fake",
"main-ro-image": "bcs://Fake.11111.0.0.tbz2",
"main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1486,14 +1500,19 @@
"smbios-name-match": "PROJECT_WL",
"whitelabel-tag": "loemb"
},
+ "modem": {
+ "firmware-variant": "project_wl"
+ },
"name": "project_wl",
"power": {
"battery-poll-interval-initial-ms": "1000",
- "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+ "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.1",
"internal-backlight-no-als-battery-brightness": "63.2",
"min-visible-backlight-level": "1000",
+ "set-cellular-transmit-power-dpr-gpio": "20",
+ "set-cellular-transmit-power-for-proximity": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "0",
@@ -1633,7 +1652,7 @@
"zephyr-ec": "projects/fake/fake"
},
"ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
- "firmware-config": 90913,
+ "firmware-config": 90914,
"image-name": "fake",
"main-ro-image": "bcs://Fake.11111.0.0.tbz2",
"main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1655,14 +1674,19 @@
"smbios-name-match": "PROJECT_WL",
"whitelabel-tag": "loemc"
},
+ "modem": {
+ "firmware-variant": "project_wl"
+ },
"name": "project_wl",
"power": {
"battery-poll-interval-initial-ms": "1000",
- "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+ "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
"disable-dark-resume": "0",
"internal-backlight-no-als-ac-brightness": "80.1",
"internal-backlight-no-als-battery-brightness": "63.2",
"min-visible-backlight-level": "1000",
+ "set-cellular-transmit-power-dpr-gpio": "20",
+ "set-cellular-transmit-power-for-proximity": "1",
"set-wifi-transmit-power-for-tablet-mode": "1",
"suspend-to-idle": "1",
"turn-off-screen-timeout-ms": "0",
@@ -1833,6 +1857,9 @@
"smbios-name-match": "PROJECT_REBRAND",
"whitelabel-tag": "branda"
},
+ "modem": {
+ "firmware-variant": "project_rebrand"
+ },
"name": "project_rebrand",
"power": {
"battery-poll-interval-initial-ms": "1000",
@@ -2001,6 +2028,9 @@
"sku-id": 128,
"smbios-name-match": "PROJECT_BOX"
},
+ "modem": {
+ "firmware-variant": "fakemodem"
+ },
"name": "project_box",
"power": {
"battery-poll-interval-initial-ms": "1000",
diff --git a/util/hw_topology.star b/util/hw_topology.star
index d8065fe..3ca4084 100644
--- a/util/hw_topology.star
+++ b/util/hw_topology.star
@@ -708,6 +708,8 @@
"""Builds a Topology proto for a proximity sensor."""
hw_features = topo_pb.HardwareFeatures()
+ hw_features.proximity = {}
+
_accumulate_fw_configs(hw_features, fw_configs)
return topo_pb.Topology(
@@ -741,6 +743,7 @@
cellular_support = False,
cellular_model = None,
cellular_type = _CELLULAR.NOT_PRESENT,
+ cellular_dynamic_power_reduction_config = None,
hdmi_support = False,
side = None,
usbc_ports = None):
@@ -755,6 +758,7 @@
hw_features.cellular.present = _bool_to_present(cellular_support)
hw_features.cellular.model = cellular_model
hw_features.cellular.type = cellular_type
+ hw_features.cellular.dynamic_power_reduction_config = cellular_dynamic_power_reduction_config
hw_features.hdmi.present = _bool_to_present(hdmi_support)
@@ -800,7 +804,8 @@
type = _CELLULAR.NOT_PRESENT,
fw_configs = [],
model = None,
- attach_apn_required = None):
+ attach_apn_required = None,
+ dynamic_power_reduction_config = None):
"""Builds a Topology proto for a Cellular board."""
hw_features = topo_pb.HardwareFeatures()
@@ -808,6 +813,7 @@
hw_features.cellular.model = model
hw_features.cellular.type = type
hw_features.cellular.attach_apn_required = attach_apn_required
+ hw_features.cellular.dynamic_power_reduction_config = dynamic_power_reduction_config
_accumulate_fw_configs(hw_features, fw_configs)
@@ -818,6 +824,24 @@
hardware_feature = hw_features,
)
+def _make_cellular_dynamic_power_reduction_config(
+ gpio = None,
+ modem_manager = False,
+ tablet_mode = None):
+ """Builds a configuration for cellular dynamic power reduction."""
+ config = topo_pb.HardwareFeatures.Cellular.DynamicPowerReductionConfig()
+
+ if gpio != None:
+ config.gpio = gpio
+ elif modem_manager:
+ config.modem_manager = True
+ else:
+ fail("A Cellular.DynamicPowerReductionConfig must configure a GPIO or the use of modem manager.")
+
+ if tablet_mode:
+ config.tablet_mode.value = tablet_mode
+ return config
+
def _create_sd_reader(id, description, fw_configs = []):
"""Builds a Topology proto for a SD reader."""
hw_features = topo_pb.HardwareFeatures()
@@ -1310,6 +1334,8 @@
existing_cellular.model = new_cellular.model
existing_cellular.type = new_cellular.type
existing_cellular.attach_apn_required = new_cellular.attach_apn_required
+ if proto.has(new_cellular, "dynamic_power_reduction_config"):
+ existing_cellular.dynamic_power_reduction_config = new_cellular.dynamic_power_reduction_config
def _accumulate_hdmi(existing_hdmi, new_hdmi):
existing_hdmi.present = _accumulate_presence(existing_hdmi.present, new_hdmi.present)
@@ -1399,6 +1425,9 @@
# Handle all possible proximity sensor hardware features attributes
_accumulate_fw_config(result.fw_config, copy.proximity_sensor.hardware_feature.fw_config)
+ if proto.has(copy.proximity_sensor.hardware_feature, "proximity"):
+ result.proximity = copy.proximity_sensor.hardware_feature.proximity
+
# Handle all possible hdmi hardware features attributes
_accumulate_fw_config(result.fw_config, copy.hdmi.hardware_feature.fw_config)
@@ -1519,6 +1548,7 @@
create_poe = _create_poe,
convert_to_hw_features = _convert_to_hw_features,
make_camera_device = _make_camera_device,
+ make_cellular_dynamic_power_reduction_config = _make_cellular_dynamic_power_reduction_config,
make_fw_config = _make_fw_config,
ff = hw_feat.form_factor,
amplifier = _AMPLIFIER,