// Code generated by protoc-gen-go. DO NOT EDIT.
// source: device/config.proto

package device

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	math "math"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

// Next tag: 8
type Config_FormFactor int32

const (
	Config_FORM_FACTOR_UNSPECIFIED Config_FormFactor = 0
	Config_FORM_FACTOR_CLAMSHELL   Config_FormFactor = 1
	Config_FORM_FACTOR_CONVERTIBLE Config_FormFactor = 2
	Config_FORM_FACTOR_DETACHABLE  Config_FormFactor = 3
	Config_FORM_FACTOR_CHROMEBASE  Config_FormFactor = 4
	Config_FORM_FACTOR_CHROMEBOX   Config_FormFactor = 5
	Config_FORM_FACTOR_CHROMEBIT   Config_FormFactor = 6
	Config_FORM_FACTOR_CHROMESLATE Config_FormFactor = 7
)

var Config_FormFactor_name = map[int32]string{
	0: "FORM_FACTOR_UNSPECIFIED",
	1: "FORM_FACTOR_CLAMSHELL",
	2: "FORM_FACTOR_CONVERTIBLE",
	3: "FORM_FACTOR_DETACHABLE",
	4: "FORM_FACTOR_CHROMEBASE",
	5: "FORM_FACTOR_CHROMEBOX",
	6: "FORM_FACTOR_CHROMEBIT",
	7: "FORM_FACTOR_CHROMESLATE",
}

var Config_FormFactor_value = map[string]int32{
	"FORM_FACTOR_UNSPECIFIED": 0,
	"FORM_FACTOR_CLAMSHELL":   1,
	"FORM_FACTOR_CONVERTIBLE": 2,
	"FORM_FACTOR_DETACHABLE":  3,
	"FORM_FACTOR_CHROMEBASE":  4,
	"FORM_FACTOR_CHROMEBOX":   5,
	"FORM_FACTOR_CHROMEBIT":   6,
	"FORM_FACTOR_CHROMESLATE": 7,
}

func (x Config_FormFactor) String() string {
	return proto.EnumName(Config_FormFactor_name, int32(x))
}

func (Config_FormFactor) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{0, 0}
}

// Next Tag: 3
type Config_Graphics int32

const (
	Config_GRAPHICS_UNSPECIFIED Config_Graphics = 0
	Config_GRAPHICS_GL          Config_Graphics = 1
	Config_GRAPHICS_GLE         Config_Graphics = 2
)

var Config_Graphics_name = map[int32]string{
	0: "GRAPHICS_UNSPECIFIED",
	1: "GRAPHICS_GL",
	2: "GRAPHICS_GLE",
}

var Config_Graphics_value = map[string]int32{
	"GRAPHICS_UNSPECIFIED": 0,
	"GRAPHICS_GL":          1,
	"GRAPHICS_GLE":         2,
}

func (x Config_Graphics) String() string {
	return proto.EnumName(Config_Graphics_name, int32(x))
}

func (Config_Graphics) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{0, 1}
}

// Next Tag: 12
type Config_HardwareFeature int32

const (
	Config_HARDWARE_FEATURE_UNSPECIFIED Config_HardwareFeature = 0
	Config_HARDWARE_FEATURE_BLUETOOTH   Config_HardwareFeature = 1
	Config_HARDWARE_FEATURE_FLASHROM    Config_HardwareFeature = 2
	// Indicate if the device support audio hotwording, an audio listening module
	// included with Google Chrome and Chromium to support Google Assistant.
	// https://chromeos.google.com/partner/dlm/docs/latest-requirements/chromebook.html#audio-hotwording-always-on-listening
	Config_HARDWARE_FEATURE_HOTWORDING       Config_HardwareFeature = 3
	Config_HARDWARE_FEATURE_INTERNAL_DISPLAY Config_HardwareFeature = 4
	// Indicate if the device has support for lucid sleep (a connected lower power state,
	// in which the device should still has some network communications)
	// https://chromeos.google.com/partner/dlm/docs/p-hardware-specs/lucidsleep.html
	Config_HARDWARE_FEATURE_LUCID_SLEEP Config_HardwareFeature = 5
	Config_HARDWARE_FEATURE_WEBCAM      Config_HardwareFeature = 6
	Config_HARDWARE_FEATURE_STYLUS      Config_HardwareFeature = 7
	Config_HARDWARE_FEATURE_TOUCHPAD    Config_HardwareFeature = 8
	Config_HARDWARE_FEATURE_TOUCHSCREEN Config_HardwareFeature = 9
	// Indicate if the device has detachable keyboard.
	// https://chromeos.google.com/partner/dlm/docs/latest-requirements/detachable.html#keyboard-external
	Config_HARDWARE_FEATURE_DETACHABLE_KEYBOARD Config_HardwareFeature = 10
	// Indicate if the device has fingerprint sensor.
	Config_HARDWARE_FEATURE_FINGERPRINT Config_HardwareFeature = 11
)

var Config_HardwareFeature_name = map[int32]string{
	0:  "HARDWARE_FEATURE_UNSPECIFIED",
	1:  "HARDWARE_FEATURE_BLUETOOTH",
	2:  "HARDWARE_FEATURE_FLASHROM",
	3:  "HARDWARE_FEATURE_HOTWORDING",
	4:  "HARDWARE_FEATURE_INTERNAL_DISPLAY",
	5:  "HARDWARE_FEATURE_LUCID_SLEEP",
	6:  "HARDWARE_FEATURE_WEBCAM",
	7:  "HARDWARE_FEATURE_STYLUS",
	8:  "HARDWARE_FEATURE_TOUCHPAD",
	9:  "HARDWARE_FEATURE_TOUCHSCREEN",
	10: "HARDWARE_FEATURE_DETACHABLE_KEYBOARD",
	11: "HARDWARE_FEATURE_FINGERPRINT",
}

var Config_HardwareFeature_value = map[string]int32{
	"HARDWARE_FEATURE_UNSPECIFIED":         0,
	"HARDWARE_FEATURE_BLUETOOTH":           1,
	"HARDWARE_FEATURE_FLASHROM":            2,
	"HARDWARE_FEATURE_HOTWORDING":          3,
	"HARDWARE_FEATURE_INTERNAL_DISPLAY":    4,
	"HARDWARE_FEATURE_LUCID_SLEEP":         5,
	"HARDWARE_FEATURE_WEBCAM":              6,
	"HARDWARE_FEATURE_STYLUS":              7,
	"HARDWARE_FEATURE_TOUCHPAD":            8,
	"HARDWARE_FEATURE_TOUCHSCREEN":         9,
	"HARDWARE_FEATURE_DETACHABLE_KEYBOARD": 10,
	"HARDWARE_FEATURE_FINGERPRINT":         11,
}

func (x Config_HardwareFeature) String() string {
	return proto.EnumName(Config_HardwareFeature_name, int32(x))
}

func (Config_HardwareFeature) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{0, 2}
}

// Indicate the device's power supply.
// Next Tag: 3
type Config_PowerSupply int32

const (
	Config_POWER_SUPPLY_UNSPECIFIED Config_PowerSupply = 0
	Config_POWER_SUPPLY_BATTERY     Config_PowerSupply = 1
	Config_POWER_SUPPLY_AC_ONLY     Config_PowerSupply = 2
)

var Config_PowerSupply_name = map[int32]string{
	0: "POWER_SUPPLY_UNSPECIFIED",
	1: "POWER_SUPPLY_BATTERY",
	2: "POWER_SUPPLY_AC_ONLY",
}

var Config_PowerSupply_value = map[string]int32{
	"POWER_SUPPLY_UNSPECIFIED": 0,
	"POWER_SUPPLY_BATTERY":     1,
	"POWER_SUPPLY_AC_ONLY":     2,
}

func (x Config_PowerSupply) String() string {
	return proto.EnumName(Config_PowerSupply_name, int32(x))
}

func (Config_PowerSupply) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{0, 3}
}

// Next Tag: 6
type Config_Storage int32

const (
	Config_STORAGE_UNSPECIFIED Config_Storage = 0
	Config_STORAGE_SSD         Config_Storage = 1
	Config_STORAGE_HDD         Config_Storage = 2
	Config_STORAGE_MMC         Config_Storage = 3
	Config_STORAGE_NVME        Config_Storage = 4
	Config_STORAGE_UFS         Config_Storage = 5
)

var Config_Storage_name = map[int32]string{
	0: "STORAGE_UNSPECIFIED",
	1: "STORAGE_SSD",
	2: "STORAGE_HDD",
	3: "STORAGE_MMC",
	4: "STORAGE_NVME",
	5: "STORAGE_UFS",
}

var Config_Storage_value = map[string]int32{
	"STORAGE_UNSPECIFIED": 0,
	"STORAGE_SSD":         1,
	"STORAGE_HDD":         2,
	"STORAGE_MMC":         3,
	"STORAGE_NVME":        4,
	"STORAGE_UFS":         5,
}

func (x Config_Storage) String() string {
	return proto.EnumName(Config_Storage_name, int32(x))
}

func (Config_Storage) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{0, 4}
}

// Next tag: 13
type Config_VideoAcceleration int32

const (
	Config_VIDEO_UNSPECIFIED            Config_VideoAcceleration = 0
	Config_VIDEO_ACCELERATION_H264      Config_VideoAcceleration = 1
	Config_VIDEO_ACCELERATION_ENC_H264  Config_VideoAcceleration = 2
	Config_VIDEO_ACCELERATION_VP8       Config_VideoAcceleration = 3
	Config_VIDEO_ACCELERATION_ENC_VP8   Config_VideoAcceleration = 4
	Config_VIDEO_ACCELERATION_VP9       Config_VideoAcceleration = 5
	Config_VIDEO_ACCELERATION_ENC_VP9   Config_VideoAcceleration = 6
	Config_VIDEO_ACCELERATION_VP9_2     Config_VideoAcceleration = 7
	Config_VIDEO_ACCELERATION_ENC_VP9_2 Config_VideoAcceleration = 8
	Config_VIDEO_ACCELERATION_H265      Config_VideoAcceleration = 9
	Config_VIDEO_ACCELERATION_ENC_H265  Config_VideoAcceleration = 10
	Config_VIDEO_ACCELERATION_MJPG      Config_VideoAcceleration = 11
	Config_VIDEO_ACCELERATION_ENC_MJPG  Config_VideoAcceleration = 12
)

var Config_VideoAcceleration_name = map[int32]string{
	0:  "VIDEO_UNSPECIFIED",
	1:  "VIDEO_ACCELERATION_H264",
	2:  "VIDEO_ACCELERATION_ENC_H264",
	3:  "VIDEO_ACCELERATION_VP8",
	4:  "VIDEO_ACCELERATION_ENC_VP8",
	5:  "VIDEO_ACCELERATION_VP9",
	6:  "VIDEO_ACCELERATION_ENC_VP9",
	7:  "VIDEO_ACCELERATION_VP9_2",
	8:  "VIDEO_ACCELERATION_ENC_VP9_2",
	9:  "VIDEO_ACCELERATION_H265",
	10: "VIDEO_ACCELERATION_ENC_H265",
	11: "VIDEO_ACCELERATION_MJPG",
	12: "VIDEO_ACCELERATION_ENC_MJPG",
}

var Config_VideoAcceleration_value = map[string]int32{
	"VIDEO_UNSPECIFIED":            0,
	"VIDEO_ACCELERATION_H264":      1,
	"VIDEO_ACCELERATION_ENC_H264":  2,
	"VIDEO_ACCELERATION_VP8":       3,
	"VIDEO_ACCELERATION_ENC_VP8":   4,
	"VIDEO_ACCELERATION_VP9":       5,
	"VIDEO_ACCELERATION_ENC_VP9":   6,
	"VIDEO_ACCELERATION_VP9_2":     7,
	"VIDEO_ACCELERATION_ENC_VP9_2": 8,
	"VIDEO_ACCELERATION_H265":      9,
	"VIDEO_ACCELERATION_ENC_H265":  10,
	"VIDEO_ACCELERATION_MJPG":      11,
	"VIDEO_ACCELERATION_ENC_MJPG":  12,
}

func (x Config_VideoAcceleration) String() string {
	return proto.EnumName(Config_VideoAcceleration_name, int32(x))
}

func (Config_VideoAcceleration) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{0, 5}
}

// Next Tag: 31
type Config_SOC int32

const (
	Config_SOC_UNSPECIFIED Config_SOC = 0
	// Aka AML-Y
	Config_SOC_AMBERLAKE_Y   Config_SOC = 1
	Config_SOC_APOLLO_LAKE   Config_SOC = 2
	Config_SOC_BAY_TRAIL     Config_SOC = 3
	Config_SOC_BRASWELL      Config_SOC = 4
	Config_SOC_BROADWELL     Config_SOC = 5
	Config_SOC_CANNON_LAKE_Y Config_SOC = 6
	Config_SOC_COMET_LAKE_U  Config_SOC = 7
	Config_SOC_EXYNOS_5250   Config_SOC = 8
	Config_SOC_EXYNOS_5420   Config_SOC = 9
	// Aka GLK
	Config_SOC_GEMINI_LAKE Config_SOC = 10
	Config_SOC_HASWELL     Config_SOC = 11
	Config_SOC_ICE_LAKE_Y  Config_SOC = 12
	Config_SOC_IVY_BRIDGE  Config_SOC = 13
	Config_SOC_KABYLAKE_U  Config_SOC = 14
	// KabyLake U refresh
	Config_SOC_KABYLAKE_U_R   Config_SOC = 15
	Config_SOC_KABYLAKE_Y     Config_SOC = 16
	Config_SOC_MT8173         Config_SOC = 17
	Config_SOC_MT8176         Config_SOC = 18
	Config_SOC_MT8183         Config_SOC = 19
	Config_SOC_PICASSO        Config_SOC = 20
	Config_SOC_PINE_TRAIL     Config_SOC = 21
	Config_SOC_RK3288         Config_SOC = 22
	Config_SOC_RK3399         Config_SOC = 23
	Config_SOC_SANDY_BRIDGE   Config_SOC = 24
	Config_SOC_SDM845         Config_SOC = 25
	Config_SOC_SKYLAKE_U      Config_SOC = 26
	Config_SOC_SKYLAKE_Y      Config_SOC = 27
	Config_SOC_STONEY_RIDGE   Config_SOC = 28
	Config_SOC_TEGRA_K1       Config_SOC = 29
	Config_SOC_WHISKEY_LAKE_U Config_SOC = 30
)

var Config_SOC_name = map[int32]string{
	0:  "SOC_UNSPECIFIED",
	1:  "SOC_AMBERLAKE_Y",
	2:  "SOC_APOLLO_LAKE",
	3:  "SOC_BAY_TRAIL",
	4:  "SOC_BRASWELL",
	5:  "SOC_BROADWELL",
	6:  "SOC_CANNON_LAKE_Y",
	7:  "SOC_COMET_LAKE_U",
	8:  "SOC_EXYNOS_5250",
	9:  "SOC_EXYNOS_5420",
	10: "SOC_GEMINI_LAKE",
	11: "SOC_HASWELL",
	12: "SOC_ICE_LAKE_Y",
	13: "SOC_IVY_BRIDGE",
	14: "SOC_KABYLAKE_U",
	15: "SOC_KABYLAKE_U_R",
	16: "SOC_KABYLAKE_Y",
	17: "SOC_MT8173",
	18: "SOC_MT8176",
	19: "SOC_MT8183",
	20: "SOC_PICASSO",
	21: "SOC_PINE_TRAIL",
	22: "SOC_RK3288",
	23: "SOC_RK3399",
	24: "SOC_SANDY_BRIDGE",
	25: "SOC_SDM845",
	26: "SOC_SKYLAKE_U",
	27: "SOC_SKYLAKE_Y",
	28: "SOC_STONEY_RIDGE",
	29: "SOC_TEGRA_K1",
	30: "SOC_WHISKEY_LAKE_U",
}

var Config_SOC_value = map[string]int32{
	"SOC_UNSPECIFIED":    0,
	"SOC_AMBERLAKE_Y":    1,
	"SOC_APOLLO_LAKE":    2,
	"SOC_BAY_TRAIL":      3,
	"SOC_BRASWELL":       4,
	"SOC_BROADWELL":      5,
	"SOC_CANNON_LAKE_Y":  6,
	"SOC_COMET_LAKE_U":   7,
	"SOC_EXYNOS_5250":    8,
	"SOC_EXYNOS_5420":    9,
	"SOC_GEMINI_LAKE":    10,
	"SOC_HASWELL":        11,
	"SOC_ICE_LAKE_Y":     12,
	"SOC_IVY_BRIDGE":     13,
	"SOC_KABYLAKE_U":     14,
	"SOC_KABYLAKE_U_R":   15,
	"SOC_KABYLAKE_Y":     16,
	"SOC_MT8173":         17,
	"SOC_MT8176":         18,
	"SOC_MT8183":         19,
	"SOC_PICASSO":        20,
	"SOC_PINE_TRAIL":     21,
	"SOC_RK3288":         22,
	"SOC_RK3399":         23,
	"SOC_SANDY_BRIDGE":   24,
	"SOC_SDM845":         25,
	"SOC_SKYLAKE_U":      26,
	"SOC_SKYLAKE_Y":      27,
	"SOC_STONEY_RIDGE":   28,
	"SOC_TEGRA_K1":       29,
	"SOC_WHISKEY_LAKE_U": 30,
}

func (x Config_SOC) String() string {
	return proto.EnumName(Config_SOC_name, int32(x))
}

func (Config_SOC) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{0, 6}
}

// Next Tag: 6
type Config_ODM int32

const (
	Config_ODM_UNSPECIFIED Config_ODM = 0
	Config_ODM_QUANTA      Config_ODM = 1
	Config_ODM_BITLAND     Config_ODM = 2
	Config_ODM_SAMSUNG     Config_ODM = 3
	Config_ODM_PEGATRON    Config_ODM = 4
	Config_ODM_COMPAL      Config_ODM = 5
)

var Config_ODM_name = map[int32]string{
	0: "ODM_UNSPECIFIED",
	1: "ODM_QUANTA",
	2: "ODM_BITLAND",
	3: "ODM_SAMSUNG",
	4: "ODM_PEGATRON",
	5: "ODM_COMPAL",
}

var Config_ODM_value = map[string]int32{
	"ODM_UNSPECIFIED": 0,
	"ODM_QUANTA":      1,
	"ODM_BITLAND":     2,
	"ODM_SAMSUNG":     3,
	"ODM_PEGATRON":    4,
	"ODM_COMPAL":      5,
}

func (x Config_ODM) String() string {
	return proto.EnumName(Config_ODM_name, int32(x))
}

func (Config_ODM) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{0, 7}
}

type Config_OEM int32

const (
	Config_OEM_UNSPECIFIED Config_OEM = 0
	Config_OEM_ACER        Config_OEM = 1
	Config_OEM_DELL        Config_OEM = 2
	Config_OEM_SAMSUNG     Config_OEM = 3
	Config_OEM_HP          Config_OEM = 4
	Config_OEM_LENOVO      Config_OEM = 5
	Config_OEM_ASUS        Config_OEM = 6
)

var Config_OEM_name = map[int32]string{
	0: "OEM_UNSPECIFIED",
	1: "OEM_ACER",
	2: "OEM_DELL",
	3: "OEM_SAMSUNG",
	4: "OEM_HP",
	5: "OEM_LENOVO",
	6: "OEM_ASUS",
}

var Config_OEM_value = map[string]int32{
	"OEM_UNSPECIFIED": 0,
	"OEM_ACER":        1,
	"OEM_DELL":        2,
	"OEM_SAMSUNG":     3,
	"OEM_HP":          4,
	"OEM_LENOVO":      5,
	"OEM_ASUS":        6,
}

func (x Config_OEM) String() string {
	return proto.EnumName(Config_OEM_name, int32(x))
}

func (Config_OEM) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{0, 8}
}

type Config_Architecture int32

const (
	Config_ARCHITECTURE_UNDEFINED Config_Architecture = 0
	Config_X86                    Config_Architecture = 1
	Config_X86_64                 Config_Architecture = 2
	Config_ARM                    Config_Architecture = 3
	Config_ARM64                  Config_Architecture = 4
)

var Config_Architecture_name = map[int32]string{
	0: "ARCHITECTURE_UNDEFINED",
	1: "X86",
	2: "X86_64",
	3: "ARM",
	4: "ARM64",
}

var Config_Architecture_value = map[string]int32{
	"ARCHITECTURE_UNDEFINED": 0,
	"X86":                    1,
	"X86_64":                 2,
	"ARM":                    3,
	"ARM64":                  4,
}

func (x Config_Architecture) String() string {
	return proto.EnumName(Config_Architecture_name, int32(x))
}

func (Config_Architecture) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{0, 9}
}

// Next tag: 21
type Config struct {
	// Required. Unique ID of the device config.
	Id         *ConfigId         `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	FormFactor Config_FormFactor `protobuf:"varint,3,opt,name=form_factor,json=formFactor,proto3,enum=device.Config_FormFactor" json:"form_factor,omitempty"`
	// e.g: "haswell", "tegra",...
	GpuFamily string          `protobuf:"bytes,4,opt,name=gpu_family,json=gpuFamily,proto3" json:"gpu_family,omitempty"`
	Graphics  Config_Graphics `protobuf:"varint,5,opt,name=graphics,proto3,enum=device.Config_Graphics" json:"graphics,omitempty"`
	// If a hardware feature isn't specified, one can assume that it doesn't
	// exist on the device.
	HardwareFeatures []Config_HardwareFeature `protobuf:"varint,6,rep,packed,name=hardware_features,json=hardwareFeatures,proto3,enum=device.Config_HardwareFeature" json:"hardware_features,omitempty"`
	Power            Config_PowerSupply       `protobuf:"varint,8,opt,name=power,proto3,enum=device.Config_PowerSupply" json:"power,omitempty"`
	// Indicate the device's storage type.
	Storage                   Config_Storage             `protobuf:"varint,9,opt,name=storage,proto3,enum=device.Config_Storage" json:"storage,omitempty"`
	VideoAccelerationSupports []Config_VideoAcceleration `protobuf:"varint,10,rep,packed,name=video_acceleration_supports,json=videoAccelerationSupports,proto3,enum=device.Config_VideoAcceleration" json:"video_acceleration_supports,omitempty"`
	Soc                       Config_SOC                 `protobuf:"varint,11,opt,name=soc,proto3,enum=device.Config_SOC" json:"soc,omitempty"`
	// Full email address for TAMs responsible for device
	Tam []string `protobuf:"bytes,12,rep,name=tam,proto3" json:"tam,omitempty"`
	// Full email address for Google EEs responsible for device
	Ee []string `protobuf:"bytes,13,rep,name=ee,proto3" json:"ee,omitempty"`
	// ODM for device
	Odm Config_ODM `protobuf:"varint,14,opt,name=odm,proto3,enum=device.Config_ODM" json:"odm,omitempty"`
	// Group email address for this device's odm contact in buganizer (@google.com)
	OdmEmailGroup string `protobuf:"bytes,15,opt,name=odm_email_group,json=odmEmailGroup,proto3" json:"odm_email_group,omitempty"`
	// OEM for device
	Oem Config_OEM `protobuf:"varint,16,opt,name=oem,proto3,enum=device.Config_OEM" json:"oem,omitempty"`
	// Group email address for this device's oem contact in buganizer (@google.com)
	OemEmailGroup string `protobuf:"bytes,17,opt,name=oem_email_group,json=oemEmailGroup,proto3" json:"oem_email_group,omitempty"`
	// Group email address for this device's SoC contact in buganizer (@google.com)
	SocEmailGroup string `protobuf:"bytes,18,opt,name=soc_email_group,json=socEmailGroup,proto3" json:"soc_email_group,omitempty"`
	// A bit field used by firmware to make decisions. The definition of this
	// firmware configuration field is per firmware build. This does not have
	// 1st-class definitions for values in the top-level configuration proto since
	// each firmware build target can appropriate the bits within this 32-bit
	// field differently. Each firmware build can vary significantly in the
	// configuration space that needs customization.
	FirmwareConfiguration uint32              `protobuf:"varint,19,opt,name=firmware_configuration,json=firmwareConfiguration,proto3" json:"firmware_configuration,omitempty"`
	Cpu                   Config_Architecture `protobuf:"varint,20,opt,name=cpu,proto3,enum=device.Config_Architecture" json:"cpu,omitempty"`
	XXX_NoUnkeyedLiteral  struct{}            `json:"-"`
	XXX_unrecognized      []byte              `json:"-"`
	XXX_sizecache         int32               `json:"-"`
}

func (m *Config) Reset()         { *m = Config{} }
func (m *Config) String() string { return proto.CompactTextString(m) }
func (*Config) ProtoMessage()    {}
func (*Config) Descriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{0}
}

func (m *Config) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Config.Unmarshal(m, b)
}
func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Config.Marshal(b, m, deterministic)
}
func (m *Config) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Config.Merge(m, src)
}
func (m *Config) XXX_Size() int {
	return xxx_messageInfo_Config.Size(m)
}
func (m *Config) XXX_DiscardUnknown() {
	xxx_messageInfo_Config.DiscardUnknown(m)
}

var xxx_messageInfo_Config proto.InternalMessageInfo

func (m *Config) GetId() *ConfigId {
	if m != nil {
		return m.Id
	}
	return nil
}

func (m *Config) GetFormFactor() Config_FormFactor {
	if m != nil {
		return m.FormFactor
	}
	return Config_FORM_FACTOR_UNSPECIFIED
}

func (m *Config) GetGpuFamily() string {
	if m != nil {
		return m.GpuFamily
	}
	return ""
}

func (m *Config) GetGraphics() Config_Graphics {
	if m != nil {
		return m.Graphics
	}
	return Config_GRAPHICS_UNSPECIFIED
}

func (m *Config) GetHardwareFeatures() []Config_HardwareFeature {
	if m != nil {
		return m.HardwareFeatures
	}
	return nil
}

func (m *Config) GetPower() Config_PowerSupply {
	if m != nil {
		return m.Power
	}
	return Config_POWER_SUPPLY_UNSPECIFIED
}

func (m *Config) GetStorage() Config_Storage {
	if m != nil {
		return m.Storage
	}
	return Config_STORAGE_UNSPECIFIED
}

func (m *Config) GetVideoAccelerationSupports() []Config_VideoAcceleration {
	if m != nil {
		return m.VideoAccelerationSupports
	}
	return nil
}

func (m *Config) GetSoc() Config_SOC {
	if m != nil {
		return m.Soc
	}
	return Config_SOC_UNSPECIFIED
}

func (m *Config) GetTam() []string {
	if m != nil {
		return m.Tam
	}
	return nil
}

func (m *Config) GetEe() []string {
	if m != nil {
		return m.Ee
	}
	return nil
}

func (m *Config) GetOdm() Config_ODM {
	if m != nil {
		return m.Odm
	}
	return Config_ODM_UNSPECIFIED
}

func (m *Config) GetOdmEmailGroup() string {
	if m != nil {
		return m.OdmEmailGroup
	}
	return ""
}

func (m *Config) GetOem() Config_OEM {
	if m != nil {
		return m.Oem
	}
	return Config_OEM_UNSPECIFIED
}

func (m *Config) GetOemEmailGroup() string {
	if m != nil {
		return m.OemEmailGroup
	}
	return ""
}

func (m *Config) GetSocEmailGroup() string {
	if m != nil {
		return m.SocEmailGroup
	}
	return ""
}

func (m *Config) GetFirmwareConfiguration() uint32 {
	if m != nil {
		return m.FirmwareConfiguration
	}
	return 0
}

func (m *Config) GetCpu() Config_Architecture {
	if m != nil {
		return m.Cpu
	}
	return Config_ARCHITECTURE_UNDEFINED
}

// Message contains all ChromeOS device configs.
type AllConfigs struct {
	Configs              []*Config `protobuf:"bytes,1,rep,name=configs,proto3" json:"configs,omitempty"`
	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
	XXX_unrecognized     []byte    `json:"-"`
	XXX_sizecache        int32     `json:"-"`
}

func (m *AllConfigs) Reset()         { *m = AllConfigs{} }
func (m *AllConfigs) String() string { return proto.CompactTextString(m) }
func (*AllConfigs) ProtoMessage()    {}
func (*AllConfigs) Descriptor() ([]byte, []int) {
	return fileDescriptor_8272a55f8dc33811, []int{1}
}

func (m *AllConfigs) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AllConfigs.Unmarshal(m, b)
}
func (m *AllConfigs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AllConfigs.Marshal(b, m, deterministic)
}
func (m *AllConfigs) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AllConfigs.Merge(m, src)
}
func (m *AllConfigs) XXX_Size() int {
	return xxx_messageInfo_AllConfigs.Size(m)
}
func (m *AllConfigs) XXX_DiscardUnknown() {
	xxx_messageInfo_AllConfigs.DiscardUnknown(m)
}

var xxx_messageInfo_AllConfigs proto.InternalMessageInfo

func (m *AllConfigs) GetConfigs() []*Config {
	if m != nil {
		return m.Configs
	}
	return nil
}

func init() {
	proto.RegisterEnum("device.Config_FormFactor", Config_FormFactor_name, Config_FormFactor_value)
	proto.RegisterEnum("device.Config_Graphics", Config_Graphics_name, Config_Graphics_value)
	proto.RegisterEnum("device.Config_HardwareFeature", Config_HardwareFeature_name, Config_HardwareFeature_value)
	proto.RegisterEnum("device.Config_PowerSupply", Config_PowerSupply_name, Config_PowerSupply_value)
	proto.RegisterEnum("device.Config_Storage", Config_Storage_name, Config_Storage_value)
	proto.RegisterEnum("device.Config_VideoAcceleration", Config_VideoAcceleration_name, Config_VideoAcceleration_value)
	proto.RegisterEnum("device.Config_SOC", Config_SOC_name, Config_SOC_value)
	proto.RegisterEnum("device.Config_ODM", Config_ODM_name, Config_ODM_value)
	proto.RegisterEnum("device.Config_OEM", Config_OEM_name, Config_OEM_value)
	proto.RegisterEnum("device.Config_Architecture", Config_Architecture_name, Config_Architecture_value)
	proto.RegisterType((*Config)(nil), "device.Config")
	proto.RegisterType((*AllConfigs)(nil), "device.AllConfigs")
}

func init() { proto.RegisterFile("device/config.proto", fileDescriptor_8272a55f8dc33811) }

var fileDescriptor_8272a55f8dc33811 = []byte{
	// 1501 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x57, 0xdd, 0x76, 0xe2, 0xc8,
	0x11, 0x0e, 0x88, 0x1f, 0xbb, 0xb0, 0x71, 0xbb, 0xed, 0xb1, 0x65, 0x7b, 0x66, 0x42, 0x38, 0x9b,
	0x3d, 0xdc, 0xc4, 0xf6, 0xe2, 0xb1, 0xe3, 0xc9, 0x5d, 0x23, 0x35, 0xa0, 0xb5, 0xa4, 0x56, 0xba,
	0x85, 0x3d, 0xe4, 0x46, 0x21, 0x20, 0x63, 0xce, 0x31, 0x16, 0x11, 0x66, 0x36, 0xfb, 0x2e, 0xb9,
	0xcb, 0x93, 0xe4, 0x4d, 0xf2, 0x00, 0x79, 0x88, 0x3d, 0x2d, 0x21, 0x06, 0x04, 0x9e, 0x3b, 0xfa,
	0xfb, 0xbe, 0xfa, 0xaa, 0x5a, 0x55, 0x6a, 0x35, 0x70, 0x30, 0xf0, 0xbf, 0x8e, 0xfa, 0xfe, 0x45,
	0x3f, 0x78, 0x79, 0x1c, 0x0d, 0xcf, 0x27, 0x61, 0xf0, 0x1a, 0xe0, 0x42, 0x0c, 0x9e, 0x1e, 0xad,
	0x90, 0xde, 0x68, 0x10, 0xf3, 0xd5, 0xff, 0xaa, 0x50, 0xd0, 0x22, 0x0c, 0x57, 0x20, 0x3b, 0x1a,
	0xa8, 0x99, 0x4a, 0xa6, 0x56, 0xaa, 0xa3, 0xf3, 0x58, 0x7f, 0x1e, 0x73, 0xc6, 0x80, 0x67, 0x47,
	0x03, 0xfc, 0x17, 0x28, 0x3d, 0x06, 0xe1, 0xd8, 0x7b, 0xec, 0xf5, 0x5f, 0x83, 0x50, 0x55, 0x2a,
	0x99, 0x5a, 0xb9, 0x7e, 0xb2, 0x2a, 0x3d, 0x6f, 0x06, 0xe1, 0xb8, 0x19, 0x09, 0x38, 0x3c, 0x2e,
	0x7e, 0xe3, 0x0f, 0x00, 0xc3, 0xc9, 0xcc, 0x7b, 0xec, 0x8d, 0x47, 0xcf, 0xbf, 0xaa, 0xb9, 0x4a,
	0xa6, 0xb6, 0xcd, 0xb7, 0x87, 0x93, 0x59, 0x33, 0x02, 0xf0, 0x15, 0x6c, 0x0d, 0xc3, 0xde, 0xe4,
	0x69, 0xd4, 0x9f, 0xaa, 0xf9, 0xc8, 0xf7, 0x38, 0xe5, 0xdb, 0x9a, 0xd3, 0x7c, 0x21, 0xc4, 0x77,
	0xb0, 0xff, 0xd4, 0x0b, 0x07, 0xbf, 0xf4, 0x42, 0xdf, 0x7b, 0xf4, 0x7b, 0xaf, 0xb3, 0xd0, 0x9f,
	0xaa, 0x85, 0x8a, 0x52, 0x2b, 0xd7, 0x3f, 0xa6, 0xa2, 0xdb, 0x73, 0x5d, 0x33, 0x96, 0x71, 0xf4,
	0xb4, 0x0a, 0x4c, 0xf1, 0x25, 0xe4, 0x27, 0xc1, 0x2f, 0x7e, 0xa8, 0x6e, 0x45, 0xe9, 0x4f, 0x53,
	0x06, 0x8e, 0xe4, 0xc4, 0x6c, 0x32, 0x79, 0xfe, 0x95, 0xc7, 0x42, 0x7c, 0x09, 0xc5, 0xe9, 0x6b,
	0x10, 0xf6, 0x86, 0xbe, 0xba, 0x1d, 0xc5, 0x1c, 0xa5, 0x62, 0x44, 0xcc, 0xf2, 0x44, 0x86, 0xff,
	0x0e, 0x67, 0x5f, 0x47, 0x03, 0x3f, 0xf0, 0x7a, 0xfd, 0xbe, 0xff, 0xec, 0x87, 0xbd, 0xd7, 0x51,
	0xf0, 0xe2, 0x4d, 0x67, 0x93, 0x49, 0x10, 0xbe, 0x4e, 0x55, 0x88, 0x4a, 0xaf, 0xa4, 0x5c, 0xee,
	0x65, 0x04, 0x59, 0x0a, 0xe0, 0x27, 0x5f, 0xd3, 0x90, 0x98, 0x5b, 0xe0, 0x1f, 0x40, 0x99, 0x06,
	0x7d, 0xb5, 0x14, 0xd5, 0x83, 0xd3, 0xf5, 0x30, 0x8d, 0x4b, 0x1a, 0x23, 0x50, 0x5e, 0x7b, 0x63,
	0x75, 0xa7, 0xa2, 0xd4, 0xb6, 0xb9, 0xfc, 0x89, 0xcb, 0x90, 0xf5, 0x7d, 0x75, 0x37, 0x02, 0xb2,
	0xbe, 0x2f, 0x7d, 0x82, 0xc1, 0x58, 0x2d, 0x6f, 0xf4, 0x61, 0xba, 0xc5, 0x25, 0x8d, 0x7f, 0x84,
	0xbd, 0x60, 0x30, 0xf6, 0xfc, 0x71, 0x6f, 0xf4, 0xec, 0x0d, 0xc3, 0x60, 0x36, 0x51, 0xf7, 0xa2,
	0xce, 0xee, 0x06, 0x83, 0x31, 0x95, 0x68, 0x4b, 0x82, 0x91, 0x9b, 0x3f, 0x56, 0xd1, 0x66, 0x37,
	0x2a, 0xdd, 0xfc, 0xd8, 0xcd, 0x5f, 0x75, 0xdb, 0x9f, 0xbb, 0xf9, 0xcb, 0x6e, 0x3f, 0xc2, 0xde,
	0x34, 0xe8, 0xaf, 0xe8, 0x70, 0xac, 0x9b, 0x06, 0xfd, 0x25, 0xdd, 0x35, 0x1c, 0x3d, 0x8e, 0xc2,
	0x71, 0x34, 0x1e, 0xf1, 0xdc, 0xcf, 0xe2, 0xa7, 0xa5, 0x1e, 0x54, 0x32, 0xb5, 0x5d, 0xfe, 0x2e,
	0x61, 0xb5, 0x65, 0x12, 0xff, 0x09, 0x94, 0xfe, 0x64, 0xa6, 0x1e, 0x46, 0xc5, 0x9e, 0xa5, 0x8a,
	0x25, 0x61, 0xff, 0x69, 0xf4, 0xea, 0xf7, 0xa3, 0x21, 0x92, 0xba, 0xea, 0xff, 0x33, 0x00, 0xdf,
	0x66, 0x1e, 0x9f, 0xc1, 0x71, 0x93, 0x71, 0xcb, 0x6b, 0x12, 0xcd, 0x65, 0xdc, 0xeb, 0xd8, 0xc2,
	0xa1, 0x9a, 0xd1, 0x34, 0xa8, 0x8e, 0x7e, 0x87, 0x4f, 0xe0, 0xdd, 0x32, 0xa9, 0x99, 0xc4, 0x12,
	0x6d, 0x6a, 0x9a, 0x28, 0x93, 0x8e, 0xd3, 0x98, 0x7d, 0x4f, 0xb9, 0x6b, 0x34, 0x4c, 0x8a, 0xb2,
	0xf8, 0x14, 0x8e, 0x96, 0x49, 0x9d, 0xba, 0x44, 0x6b, 0x13, 0xc9, 0x29, 0x69, 0x4e, 0x6b, 0x73,
	0x66, 0xd1, 0x06, 0x11, 0x14, 0xe5, 0xd6, 0xf2, 0xc5, 0x1c, 0xfb, 0x82, 0xf2, 0x6f, 0x50, 0x86,
	0x8b, 0x0a, 0x6b, 0xa5, 0x44, 0x94, 0x30, 0x89, 0x4b, 0x51, 0xb1, 0xda, 0x82, 0xad, 0xe4, 0x4d,
	0xc4, 0x2a, 0x1c, 0xb6, 0x38, 0x71, 0xda, 0x86, 0x26, 0x52, 0x1b, 0xdd, 0x83, 0xd2, 0x82, 0x69,
	0xc9, 0xed, 0x21, 0xd8, 0x59, 0x02, 0x28, 0xca, 0x56, 0xff, 0xa3, 0xc0, 0x5e, 0xea, 0xad, 0xc4,
	0x15, 0x78, 0xdf, 0x26, 0x5c, 0x7f, 0x20, 0x9c, 0x7a, 0x4d, 0x4a, 0xdc, 0x0e, 0xa7, 0x29, 0xe3,
	0x8f, 0x70, 0xba, 0xa6, 0x68, 0x98, 0x1d, 0xea, 0x32, 0xe6, 0xb6, 0x51, 0x06, 0x7f, 0x80, 0x93,
	0x35, 0xbe, 0x69, 0x12, 0x21, 0xf7, 0x80, 0xb2, 0xf8, 0xf7, 0x70, 0xb6, 0x46, 0xb7, 0x99, 0xfb,
	0xc0, 0xb8, 0x6e, 0xd8, 0x2d, 0xa4, 0xe0, 0x3f, 0xc2, 0x1f, 0xd6, 0x04, 0x86, 0xed, 0x52, 0x6e,
	0x13, 0xd3, 0xd3, 0x0d, 0xe1, 0x98, 0xa4, 0x8b, 0x72, 0x1b, 0x0b, 0x35, 0x3b, 0x9a, 0xa1, 0x7b,
	0xc2, 0xa4, 0xd4, 0x41, 0x79, 0xf9, 0x10, 0xd7, 0x14, 0x0f, 0xb4, 0xa1, 0x11, 0x2b, 0x7e, 0xc2,
	0x6b, 0xa4, 0x70, 0xbb, 0x66, 0x47, 0xa0, 0xe2, 0xc6, 0x2d, 0xb8, 0xac, 0xa3, 0xb5, 0x1d, 0xa2,
	0xa3, 0xad, 0x8d, 0xa9, 0x23, 0x5a, 0x68, 0x9c, 0x52, 0x1b, 0x6d, 0xe3, 0x1a, 0xfc, 0xb0, 0xa6,
	0xf8, 0x36, 0x32, 0xde, 0x1d, 0xed, 0x36, 0x18, 0xe1, 0x3a, 0x82, 0x8d, 0x5e, 0x4d, 0xc3, 0x6e,
	0x51, 0xee, 0x70, 0xc3, 0x76, 0x51, 0xa9, 0xea, 0x41, 0x69, 0xe9, 0xe4, 0xc3, 0xef, 0x41, 0x75,
	0xd8, 0x03, 0xe5, 0x9e, 0xe8, 0x38, 0x8e, 0xd9, 0x4d, 0x35, 0x47, 0x85, 0xc3, 0x15, 0xb6, 0x41,
	0x5c, 0x97, 0xf2, 0x2e, 0xca, 0xac, 0x31, 0x44, 0xf3, 0x98, 0x6d, 0x76, 0x51, 0xb6, 0xfa, 0x2f,
	0x28, 0xce, 0x8f, 0x49, 0x7c, 0x0c, 0x07, 0xc2, 0x65, 0x9c, 0xb4, 0xe8, 0xfa, 0x34, 0x25, 0x84,
	0x10, 0x3a, 0xca, 0x2c, 0x03, 0x6d, 0x5d, 0x47, 0xd9, 0x65, 0xc0, 0xb2, 0x34, 0xa4, 0xc8, 0x79,
	0x4b, 0x00, 0xfb, 0xde, 0x92, 0xef, 0xc2, 0x92, 0xa4, 0xd3, 0x14, 0x28, 0x5f, 0xfd, 0xb7, 0x02,
	0xfb, 0x6b, 0x67, 0x2b, 0x7e, 0x07, 0xfb, 0xf7, 0x86, 0x4e, 0x59, 0xaa, 0x84, 0x33, 0x38, 0x8e,
	0x61, 0xa2, 0x69, 0xd4, 0xa4, 0x9c, 0xb8, 0x06, 0xb3, 0xbd, 0x76, 0xfd, 0xe6, 0x13, 0xca, 0xc8,
	0xa9, 0xda, 0x40, 0x52, 0x5b, 0x8b, 0x05, 0xd1, 0xfb, 0xbb, 0x41, 0x70, 0xef, 0xdc, 0x22, 0x45,
	0x4e, 0xf4, 0x1b, 0xc1, 0x92, 0xcf, 0xbd, 0x19, 0xfb, 0x19, 0xe5, 0xbf, 0x1b, 0xfb, 0x19, 0x15,
	0x64, 0xbb, 0x36, 0xc7, 0x7a, 0x75, 0x54, 0x94, 0xdd, 0x7f, 0x3b, 0xda, 0xab, 0xa3, 0xad, 0xb7,
	0x77, 0x7d, 0x8d, 0xb6, 0xbf, 0xbf, 0xeb, 0x6b, 0x04, 0x6f, 0x44, 0x5b, 0x3f, 0x3b, 0x2d, 0x54,
	0xfa, 0x4e, 0x74, 0x24, 0xd8, 0xa9, 0xfe, 0x2f, 0x07, 0x8a, 0x60, 0x1a, 0x3e, 0x80, 0x3d, 0xc1,
	0xb4, 0x54, 0x3b, 0xe6, 0x20, 0xb1, 0x1a, 0x94, 0x9b, 0xe4, 0x8e, 0x7a, 0x72, 0xc8, 0x12, 0xd0,
	0x61, 0xa6, 0xc9, 0x3c, 0x09, 0xa3, 0x2c, 0xde, 0x87, 0x5d, 0x09, 0x36, 0x48, 0xd7, 0x73, 0x39,
	0x31, 0xcc, 0xf9, 0x6c, 0x48, 0x88, 0x13, 0xf1, 0x20, 0x0f, 0xdf, 0xdc, 0x42, 0xc4, 0x19, 0xd1,
	0x23, 0x28, 0x2f, 0xe7, 0x40, 0x42, 0x1a, 0xb1, 0x6d, 0x66, 0x7b, 0xf3, 0x1c, 0x05, 0x7c, 0x08,
	0x28, 0x82, 0x99, 0x45, 0xdd, 0x18, 0xed, 0xa0, 0x62, 0x92, 0x99, 0x7e, 0xe9, 0xda, 0x4c, 0x78,
	0xd7, 0xf5, 0xeb, 0x4b, 0xb4, 0x95, 0x06, 0x3f, 0xd5, 0x2f, 0xd1, 0x76, 0x02, 0xb6, 0xa8, 0x65,
	0xd8, 0x46, 0x5c, 0x23, 0x44, 0xa3, 0xc9, 0x34, 0xaf, 0x3d, 0xaf, 0xa7, 0x84, 0x31, 0x94, 0x25,
	0x60, 0x68, 0x34, 0xc9, 0xbc, 0xb3, 0xc0, 0xee, 0xbb, 0x5e, 0x83, 0x1b, 0x7a, 0x8b, 0xa2, 0xdd,
	0x04, 0xbb, 0x23, 0x8d, 0xee, 0xbc, 0x96, 0x72, 0x52, 0xe1, 0x37, 0xcc, 0xe3, 0x68, 0x6f, 0x4d,
	0xd9, 0x45, 0x08, 0x97, 0x01, 0x24, 0x66, 0xb9, 0xb7, 0x3f, 0xfd, 0xf9, 0x0a, 0xed, 0xaf, 0xac,
	0x6f, 0x10, 0x5e, 0x5e, 0xdf, 0x5e, 0xa1, 0x83, 0xa4, 0x4c, 0xc7, 0xd0, 0x88, 0x10, 0x0c, 0x1d,
	0x26, 0xa6, 0x8e, 0x61, 0xd3, 0xf9, 0xc3, 0x7d, 0x97, 0x04, 0xf1, 0xbb, 0xab, 0xfa, 0xed, 0x2d,
	0x3a, 0x5a, 0x5a, 0x5f, 0x7d, 0xfe, 0x8c, 0x8e, 0x93, 0xf2, 0x04, 0xb1, 0xf5, 0xc5, 0x46, 0xd4,
	0x44, 0x25, 0x74, 0xeb, 0xf6, 0xd3, 0x35, 0x3a, 0x49, 0x1a, 0x22, 0xee, 0x92, 0x7d, 0x9d, 0xa6,
	0xa1, 0x2e, 0x3a, 0x5b, 0x78, 0xb9, 0xcc, 0xa6, 0x5d, 0x2f, 0xf6, 0x7a, 0x9f, 0xb4, 0xd7, 0xa5,
	0x2d, 0x4e, 0xbc, 0xbb, 0x9f, 0xd0, 0x07, 0x7c, 0x04, 0x58, 0x22, 0x0f, 0x6d, 0x43, 0xdc, 0xd1,
	0x6e, 0xd2, 0xb6, 0x8f, 0xd5, 0x17, 0x50, 0x98, 0x6e, 0xc9, 0x9e, 0x30, 0xdd, 0x4a, 0x4d, 0x58,
	0x19, 0x40, 0x82, 0x7f, 0xed, 0x10, 0xdb, 0x25, 0xf1, 0x91, 0x23, 0xd7, 0x0d, 0xc3, 0x35, 0x89,
	0x3d, 0x3f, 0x72, 0x24, 0x20, 0x88, 0x25, 0x3a, 0xd1, 0xa7, 0x03, 0xc1, 0x8e, 0x04, 0x1c, 0xda,
	0x22, 0x2e, 0x67, 0x36, 0xca, 0x25, 0x1e, 0x1a, 0xb3, 0x1c, 0x62, 0xa2, 0x7c, 0xf5, 0x9f, 0xa0,
	0x30, 0x1a, 0xe7, 0xa3, 0xe9, 0x7c, 0x3b, 0xb0, 0x25, 0x41, 0xa2, 0x51, 0x8e, 0x32, 0xc9, 0x4a,
	0x97, 0xe3, 0x10, 0xa7, 0xa2, 0xcb, 0xa9, 0x00, 0x0a, 0x12, 0x68, 0x3b, 0xf3, 0x24, 0xd4, 0xf2,
	0x4c, 0x6a, 0xb3, 0x7b, 0x86, 0xf2, 0x0b, 0x23, 0xd1, 0x11, 0xa8, 0x50, 0x15, 0xb0, 0xb3, 0x7c,
	0x65, 0x91, 0xa7, 0x09, 0xe1, 0x5a, 0xdb, 0x70, 0xa9, 0x36, 0xff, 0xba, 0xea, 0xb4, 0x69, 0xd8,
	0x51, 0x09, 0x45, 0x50, 0xbe, 0xdc, 0xde, 0xa0, 0x8c, 0xb4, 0xff, 0x72, 0x7b, 0xe3, 0x45, 0x47,
	0x57, 0x11, 0x14, 0xc2, 0x2d, 0xa4, 0xe0, 0x6d, 0xc8, 0x13, 0x6e, 0xdd, 0x7c, 0x42, 0xb9, 0x9f,
	0x73, 0x5b, 0x59, 0xa4, 0xf0, 0x62, 0xbf, 0x17, 0x86, 0x23, 0x3f, 0xac, 0xde, 0x00, 0x90, 0xe7,
	0xe7, 0xf8, 0x82, 0x34, 0xc5, 0x35, 0x28, 0xc6, 0x97, 0xad, 0xa9, 0x9a, 0xa9, 0x28, 0xb5, 0x52,
	0xbd, 0xbc, 0x7a, 0x85, 0xe2, 0x09, 0xdd, 0xa8, 0xff, 0xed, 0x72, 0x18, 0x9c, 0xf7, 0x9f, 0xc2,
	0x60, 0x3c, 0x9a, 0x8d, 0xcf, 0x83, 0x70, 0x78, 0x91, 0x2c, 0x82, 0xe9, 0xc5, 0xe8, 0xe5, 0x31,
	0xec, 0x5d, 0x44, 0xff, 0x52, 0x2e, 0x86, 0xc1, 0x45, 0xec, 0xf1, 0x8f, 0x42, 0x04, 0x5c, 0xfd,
	0x16, 0x00, 0x00, 0xff, 0xff, 0x54, 0x04, 0x2b, 0x18, 0xed, 0x0c, 0x00, 0x00,
}
