1// Code generated by protoc-gen-go. DO NOT EDIT.
2// source: google/cloud/iot/v1/resources.proto
3
4package iot
5
6import (
7	fmt "fmt"
8	math "math"
9
10	proto "github.com/golang/protobuf/proto"
11	timestamp "github.com/golang/protobuf/ptypes/timestamp"
12	_ "google.golang.org/genproto/googleapis/api/annotations"
13	status "google.golang.org/genproto/googleapis/rpc/status"
14)
15
16// Reference imports to suppress errors if they are not otherwise used.
17var _ = proto.Marshal
18var _ = fmt.Errorf
19var _ = math.Inf
20
21// This is a compile-time assertion to ensure that this generated file
22// is compatible with the proto package it is being compiled against.
23// A compilation error at this line likely means your copy of the
24// proto package needs to be updated.
25const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
26
27// Indicates whether an MQTT connection is enabled or disabled. See the field
28// description for details.
29type MqttState int32
30
31const (
32	// No MQTT state specified. If not specified, MQTT will be enabled by default.
33	MqttState_MQTT_STATE_UNSPECIFIED MqttState = 0
34	// Enables a MQTT connection.
35	MqttState_MQTT_ENABLED MqttState = 1
36	// Disables a MQTT connection.
37	MqttState_MQTT_DISABLED MqttState = 2
38)
39
40var MqttState_name = map[int32]string{
41	0: "MQTT_STATE_UNSPECIFIED",
42	1: "MQTT_ENABLED",
43	2: "MQTT_DISABLED",
44}
45
46var MqttState_value = map[string]int32{
47	"MQTT_STATE_UNSPECIFIED": 0,
48	"MQTT_ENABLED":           1,
49	"MQTT_DISABLED":          2,
50}
51
52func (x MqttState) String() string {
53	return proto.EnumName(MqttState_name, int32(x))
54}
55
56func (MqttState) EnumDescriptor() ([]byte, []int) {
57	return fileDescriptor_b8dc5e858286fc66, []int{0}
58}
59
60// Indicates whether DeviceService (HTTP) is enabled or disabled for the
61// registry. See the field description for details.
62type HttpState int32
63
64const (
65	// No HTTP state specified. If not specified, DeviceService will be
66	// enabled by default.
67	HttpState_HTTP_STATE_UNSPECIFIED HttpState = 0
68	// Enables DeviceService (HTTP) service for the registry.
69	HttpState_HTTP_ENABLED HttpState = 1
70	// Disables DeviceService (HTTP) service for the registry.
71	HttpState_HTTP_DISABLED HttpState = 2
72)
73
74var HttpState_name = map[int32]string{
75	0: "HTTP_STATE_UNSPECIFIED",
76	1: "HTTP_ENABLED",
77	2: "HTTP_DISABLED",
78}
79
80var HttpState_value = map[string]int32{
81	"HTTP_STATE_UNSPECIFIED": 0,
82	"HTTP_ENABLED":           1,
83	"HTTP_DISABLED":          2,
84}
85
86func (x HttpState) String() string {
87	return proto.EnumName(HttpState_name, int32(x))
88}
89
90func (HttpState) EnumDescriptor() ([]byte, []int) {
91	return fileDescriptor_b8dc5e858286fc66, []int{1}
92}
93
94// **Beta Feature**
95//
96// The logging verbosity for device activity. Specifies which events should be
97// written to logs. For example, if the LogLevel is ERROR, only events that
98// terminate in errors will be logged. LogLevel is inclusive; enabling INFO
99// logging will also enable ERROR logging.
100type LogLevel int32
101
102const (
103	// No logging specified. If not specified, logging will be disabled.
104	LogLevel_LOG_LEVEL_UNSPECIFIED LogLevel = 0
105	// Disables logging.
106	LogLevel_NONE LogLevel = 10
107	// Error events will be logged.
108	LogLevel_ERROR LogLevel = 20
109	// Informational events will be logged, such as connections and
110	// disconnections.
111	LogLevel_INFO LogLevel = 30
112	// All events will be logged.
113	LogLevel_DEBUG LogLevel = 40
114)
115
116var LogLevel_name = map[int32]string{
117	0:  "LOG_LEVEL_UNSPECIFIED",
118	10: "NONE",
119	20: "ERROR",
120	30: "INFO",
121	40: "DEBUG",
122}
123
124var LogLevel_value = map[string]int32{
125	"LOG_LEVEL_UNSPECIFIED": 0,
126	"NONE":                  10,
127	"ERROR":                 20,
128	"INFO":                  30,
129	"DEBUG":                 40,
130}
131
132func (x LogLevel) String() string {
133	return proto.EnumName(LogLevel_name, int32(x))
134}
135
136func (LogLevel) EnumDescriptor() ([]byte, []int) {
137	return fileDescriptor_b8dc5e858286fc66, []int{2}
138}
139
140// Gateway type.
141type GatewayType int32
142
143const (
144	// If unspecified, the device is considered a non-gateway device.
145	GatewayType_GATEWAY_TYPE_UNSPECIFIED GatewayType = 0
146	// The device is a gateway.
147	GatewayType_GATEWAY GatewayType = 1
148	// The device is not a gateway.
149	GatewayType_NON_GATEWAY GatewayType = 2
150)
151
152var GatewayType_name = map[int32]string{
153	0: "GATEWAY_TYPE_UNSPECIFIED",
154	1: "GATEWAY",
155	2: "NON_GATEWAY",
156}
157
158var GatewayType_value = map[string]int32{
159	"GATEWAY_TYPE_UNSPECIFIED": 0,
160	"GATEWAY":                  1,
161	"NON_GATEWAY":              2,
162}
163
164func (x GatewayType) String() string {
165	return proto.EnumName(GatewayType_name, int32(x))
166}
167
168func (GatewayType) EnumDescriptor() ([]byte, []int) {
169	return fileDescriptor_b8dc5e858286fc66, []int{3}
170}
171
172// The gateway authorization/authentication method. This setting determines how
173// Cloud IoT Core authorizes/authenticate devices to access the gateway.
174type GatewayAuthMethod int32
175
176const (
177	// No authentication/authorization method specified. No devices are allowed to
178	// access the gateway.
179	GatewayAuthMethod_GATEWAY_AUTH_METHOD_UNSPECIFIED GatewayAuthMethod = 0
180	// The device is authenticated through the gateway association only. Device
181	// credentials are ignored even if provided.
182	GatewayAuthMethod_ASSOCIATION_ONLY GatewayAuthMethod = 1
183	// The device is authenticated through its own credentials. Gateway
184	// association is not checked.
185	GatewayAuthMethod_DEVICE_AUTH_TOKEN_ONLY GatewayAuthMethod = 2
186	// The device is authenticated through both device credentials and gateway
187	// association. The device must be bound to the gateway and must provide its
188	// own credentials.
189	GatewayAuthMethod_ASSOCIATION_AND_DEVICE_AUTH_TOKEN GatewayAuthMethod = 3
190)
191
192var GatewayAuthMethod_name = map[int32]string{
193	0: "GATEWAY_AUTH_METHOD_UNSPECIFIED",
194	1: "ASSOCIATION_ONLY",
195	2: "DEVICE_AUTH_TOKEN_ONLY",
196	3: "ASSOCIATION_AND_DEVICE_AUTH_TOKEN",
197}
198
199var GatewayAuthMethod_value = map[string]int32{
200	"GATEWAY_AUTH_METHOD_UNSPECIFIED":   0,
201	"ASSOCIATION_ONLY":                  1,
202	"DEVICE_AUTH_TOKEN_ONLY":            2,
203	"ASSOCIATION_AND_DEVICE_AUTH_TOKEN": 3,
204}
205
206func (x GatewayAuthMethod) String() string {
207	return proto.EnumName(GatewayAuthMethod_name, int32(x))
208}
209
210func (GatewayAuthMethod) EnumDescriptor() ([]byte, []int) {
211	return fileDescriptor_b8dc5e858286fc66, []int{4}
212}
213
214// The supported formats for the public key.
215type PublicKeyCertificateFormat int32
216
217const (
218	// The format has not been specified. This is an invalid default value and
219	// must not be used.
220	PublicKeyCertificateFormat_UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT PublicKeyCertificateFormat = 0
221	// An X.509v3 certificate ([RFC5280](https://www.ietf.org/rfc/rfc5280.txt)),
222	// encoded in base64, and wrapped by `-----BEGIN CERTIFICATE-----` and
223	// `-----END CERTIFICATE-----`.
224	PublicKeyCertificateFormat_X509_CERTIFICATE_PEM PublicKeyCertificateFormat = 1
225)
226
227var PublicKeyCertificateFormat_name = map[int32]string{
228	0: "UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT",
229	1: "X509_CERTIFICATE_PEM",
230}
231
232var PublicKeyCertificateFormat_value = map[string]int32{
233	"UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT": 0,
234	"X509_CERTIFICATE_PEM":                      1,
235}
236
237func (x PublicKeyCertificateFormat) String() string {
238	return proto.EnumName(PublicKeyCertificateFormat_name, int32(x))
239}
240
241func (PublicKeyCertificateFormat) EnumDescriptor() ([]byte, []int) {
242	return fileDescriptor_b8dc5e858286fc66, []int{5}
243}
244
245// The supported formats for the public key.
246type PublicKeyFormat int32
247
248const (
249	// The format has not been specified. This is an invalid default value and
250	// must not be used.
251	PublicKeyFormat_UNSPECIFIED_PUBLIC_KEY_FORMAT PublicKeyFormat = 0
252	// An RSA public key encoded in base64, and wrapped by
253	// `-----BEGIN PUBLIC KEY-----` and `-----END PUBLIC KEY-----`. This can be
254	// used to verify `RS256` signatures in JWT tokens ([RFC7518](
255	// https://www.ietf.org/rfc/rfc7518.txt)).
256	PublicKeyFormat_RSA_PEM PublicKeyFormat = 3
257	// As RSA_PEM, but wrapped in an X.509v3 certificate ([RFC5280](
258	// https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by
259	// `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.
260	PublicKeyFormat_RSA_X509_PEM PublicKeyFormat = 1
261	// Public key for the ECDSA algorithm using P-256 and SHA-256, encoded in
262	// base64, and wrapped by `-----BEGIN PUBLIC KEY-----` and `-----END
263	// PUBLIC KEY-----`. This can be used to verify JWT tokens with the `ES256`
264	// algorithm ([RFC7518](https://www.ietf.org/rfc/rfc7518.txt)). This curve is
265	// defined in [OpenSSL](https://www.openssl.org/) as the `prime256v1` curve.
266	PublicKeyFormat_ES256_PEM PublicKeyFormat = 2
267	// As ES256_PEM, but wrapped in an X.509v3 certificate ([RFC5280](
268	// https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by
269	// `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.
270	PublicKeyFormat_ES256_X509_PEM PublicKeyFormat = 4
271)
272
273var PublicKeyFormat_name = map[int32]string{
274	0: "UNSPECIFIED_PUBLIC_KEY_FORMAT",
275	3: "RSA_PEM",
276	1: "RSA_X509_PEM",
277	2: "ES256_PEM",
278	4: "ES256_X509_PEM",
279}
280
281var PublicKeyFormat_value = map[string]int32{
282	"UNSPECIFIED_PUBLIC_KEY_FORMAT": 0,
283	"RSA_PEM":                       3,
284	"RSA_X509_PEM":                  1,
285	"ES256_PEM":                     2,
286	"ES256_X509_PEM":                4,
287}
288
289func (x PublicKeyFormat) String() string {
290	return proto.EnumName(PublicKeyFormat_name, int32(x))
291}
292
293func (PublicKeyFormat) EnumDescriptor() ([]byte, []int) {
294	return fileDescriptor_b8dc5e858286fc66, []int{6}
295}
296
297// The device resource.
298type Device struct {
299	// The user-defined device identifier. The device ID must be unique
300	// within a device registry.
301	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
302	// The resource path name. For example,
303	// `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
304	// `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
305	// When `name` is populated as a response from the service, it always ends
306	// in the device numeric ID.
307	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
308	// [Output only] A server-defined unique numeric ID for the device. This is a
309	// more compact way to identify devices, and it is globally unique.
310	NumId uint64 `protobuf:"varint,3,opt,name=num_id,json=numId,proto3" json:"num_id,omitempty"`
311	// The credentials used to authenticate this device. To allow credential
312	// rotation without interruption, multiple device credentials can be bound to
313	// this device. No more than 3 credentials can be bound to a single device at
314	// a time. When new credentials are added to a device, they are verified
315	// against the registry credentials. For details, see the description of the
316	// `DeviceRegistry.credentials` field.
317	Credentials []*DeviceCredential `protobuf:"bytes,12,rep,name=credentials,proto3" json:"credentials,omitempty"`
318	// [Output only] The last time an MQTT `PINGREQ` was received. This field
319	// applies only to devices connecting through MQTT. MQTT clients usually only
320	// send `PINGREQ` messages if the connection is idle, and no other messages
321	// have been sent. Timestamps are periodically collected and written to
322	// storage; they may be stale by a few minutes.
323	LastHeartbeatTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=last_heartbeat_time,json=lastHeartbeatTime,proto3" json:"last_heartbeat_time,omitempty"`
324	// [Output only] The last time a telemetry event was received. Timestamps are
325	// periodically collected and written to storage; they may be stale by a few
326	// minutes.
327	LastEventTime *timestamp.Timestamp `protobuf:"bytes,8,opt,name=last_event_time,json=lastEventTime,proto3" json:"last_event_time,omitempty"`
328	// [Output only] The last time a state event was received. Timestamps are
329	// periodically collected and written to storage; they may be stale by a few
330	// minutes.
331	LastStateTime *timestamp.Timestamp `protobuf:"bytes,20,opt,name=last_state_time,json=lastStateTime,proto3" json:"last_state_time,omitempty"`
332	// [Output only] The last time a cloud-to-device config version acknowledgment
333	// was received from the device. This field is only for configurations
334	// sent through MQTT.
335	LastConfigAckTime *timestamp.Timestamp `protobuf:"bytes,14,opt,name=last_config_ack_time,json=lastConfigAckTime,proto3" json:"last_config_ack_time,omitempty"`
336	// [Output only] The last time a cloud-to-device config version was sent to
337	// the device.
338	LastConfigSendTime *timestamp.Timestamp `protobuf:"bytes,18,opt,name=last_config_send_time,json=lastConfigSendTime,proto3" json:"last_config_send_time,omitempty"`
339	// If a device is blocked, connections or requests from this device will fail.
340	// Can be used to temporarily prevent the device from connecting if, for
341	// example, the sensor is generating bad data and needs maintenance.
342	Blocked bool `protobuf:"varint,19,opt,name=blocked,proto3" json:"blocked,omitempty"`
343	// [Output only] The time the most recent error occurred, such as a failure to
344	// publish to Cloud Pub/Sub. This field is the timestamp of
345	// 'last_error_status'.
346	LastErrorTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=last_error_time,json=lastErrorTime,proto3" json:"last_error_time,omitempty"`
347	// [Output only] The error message of the most recent error, such as a failure
348	// to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
349	// field. If no errors have occurred, this field has an empty message
350	// and the status code 0 == OK. Otherwise, this field is expected to have a
351	// status code other than OK.
352	LastErrorStatus *status.Status `protobuf:"bytes,11,opt,name=last_error_status,json=lastErrorStatus,proto3" json:"last_error_status,omitempty"`
353	// The most recent device configuration, which is eventually sent from
354	// Cloud IoT Core to the device. If not present on creation, the
355	// configuration will be initialized with an empty payload and version value
356	// of `1`. To update this field after creation, use the
357	// `DeviceManager.ModifyCloudToDeviceConfig` method.
358	Config *DeviceConfig `protobuf:"bytes,13,opt,name=config,proto3" json:"config,omitempty"`
359	// [Output only] The state most recently received from the device. If no state
360	// has been reported, this field is not present.
361	State *DeviceState `protobuf:"bytes,16,opt,name=state,proto3" json:"state,omitempty"`
362	// **Beta Feature**
363	//
364	// The logging verbosity for device activity. If unspecified,
365	// DeviceRegistry.log_level will be used.
366	LogLevel LogLevel `protobuf:"varint,21,opt,name=log_level,json=logLevel,proto3,enum=google.cloud.iot.v1.LogLevel" json:"log_level,omitempty"`
367	// The metadata key-value pairs assigned to the device. This metadata is not
368	// interpreted or indexed by Cloud IoT Core. It can be used to add contextual
369	// information for the device.
370	//
371	// Keys must conform to the regular expression [a-zA-Z][a-zA-Z0-9-_.+~%]+ and
372	// be less than 128 bytes in length.
373	//
374	// Values are free-form strings. Each value must be less than or equal to 32
375	// KB in size.
376	//
377	// The total size of all keys and values must be less than 256 KB, and the
378	// maximum number of key-value pairs is 500.
379	Metadata map[string]string `protobuf:"bytes,17,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
380	// Gateway-related configuration and state.
381	GatewayConfig        *GatewayConfig `protobuf:"bytes,24,opt,name=gateway_config,json=gatewayConfig,proto3" json:"gateway_config,omitempty"`
382	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
383	XXX_unrecognized     []byte         `json:"-"`
384	XXX_sizecache        int32          `json:"-"`
385}
386
387func (m *Device) Reset()         { *m = Device{} }
388func (m *Device) String() string { return proto.CompactTextString(m) }
389func (*Device) ProtoMessage()    {}
390func (*Device) Descriptor() ([]byte, []int) {
391	return fileDescriptor_b8dc5e858286fc66, []int{0}
392}
393
394func (m *Device) XXX_Unmarshal(b []byte) error {
395	return xxx_messageInfo_Device.Unmarshal(m, b)
396}
397func (m *Device) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
398	return xxx_messageInfo_Device.Marshal(b, m, deterministic)
399}
400func (m *Device) XXX_Merge(src proto.Message) {
401	xxx_messageInfo_Device.Merge(m, src)
402}
403func (m *Device) XXX_Size() int {
404	return xxx_messageInfo_Device.Size(m)
405}
406func (m *Device) XXX_DiscardUnknown() {
407	xxx_messageInfo_Device.DiscardUnknown(m)
408}
409
410var xxx_messageInfo_Device proto.InternalMessageInfo
411
412func (m *Device) GetId() string {
413	if m != nil {
414		return m.Id
415	}
416	return ""
417}
418
419func (m *Device) GetName() string {
420	if m != nil {
421		return m.Name
422	}
423	return ""
424}
425
426func (m *Device) GetNumId() uint64 {
427	if m != nil {
428		return m.NumId
429	}
430	return 0
431}
432
433func (m *Device) GetCredentials() []*DeviceCredential {
434	if m != nil {
435		return m.Credentials
436	}
437	return nil
438}
439
440func (m *Device) GetLastHeartbeatTime() *timestamp.Timestamp {
441	if m != nil {
442		return m.LastHeartbeatTime
443	}
444	return nil
445}
446
447func (m *Device) GetLastEventTime() *timestamp.Timestamp {
448	if m != nil {
449		return m.LastEventTime
450	}
451	return nil
452}
453
454func (m *Device) GetLastStateTime() *timestamp.Timestamp {
455	if m != nil {
456		return m.LastStateTime
457	}
458	return nil
459}
460
461func (m *Device) GetLastConfigAckTime() *timestamp.Timestamp {
462	if m != nil {
463		return m.LastConfigAckTime
464	}
465	return nil
466}
467
468func (m *Device) GetLastConfigSendTime() *timestamp.Timestamp {
469	if m != nil {
470		return m.LastConfigSendTime
471	}
472	return nil
473}
474
475func (m *Device) GetBlocked() bool {
476	if m != nil {
477		return m.Blocked
478	}
479	return false
480}
481
482func (m *Device) GetLastErrorTime() *timestamp.Timestamp {
483	if m != nil {
484		return m.LastErrorTime
485	}
486	return nil
487}
488
489func (m *Device) GetLastErrorStatus() *status.Status {
490	if m != nil {
491		return m.LastErrorStatus
492	}
493	return nil
494}
495
496func (m *Device) GetConfig() *DeviceConfig {
497	if m != nil {
498		return m.Config
499	}
500	return nil
501}
502
503func (m *Device) GetState() *DeviceState {
504	if m != nil {
505		return m.State
506	}
507	return nil
508}
509
510func (m *Device) GetLogLevel() LogLevel {
511	if m != nil {
512		return m.LogLevel
513	}
514	return LogLevel_LOG_LEVEL_UNSPECIFIED
515}
516
517func (m *Device) GetMetadata() map[string]string {
518	if m != nil {
519		return m.Metadata
520	}
521	return nil
522}
523
524func (m *Device) GetGatewayConfig() *GatewayConfig {
525	if m != nil {
526		return m.GatewayConfig
527	}
528	return nil
529}
530
531// Gateway-related configuration and state.
532type GatewayConfig struct {
533	// Indicates whether the device is a gateway.
534	GatewayType GatewayType `protobuf:"varint,1,opt,name=gateway_type,json=gatewayType,proto3,enum=google.cloud.iot.v1.GatewayType" json:"gateway_type,omitempty"`
535	// Indicates how to authorize and/or authenticate devices to access the
536	// gateway.
537	GatewayAuthMethod GatewayAuthMethod `protobuf:"varint,2,opt,name=gateway_auth_method,json=gatewayAuthMethod,proto3,enum=google.cloud.iot.v1.GatewayAuthMethod" json:"gateway_auth_method,omitempty"`
538	// [Output only] The ID of the gateway the device accessed most recently.
539	LastAccessedGatewayId string `protobuf:"bytes,3,opt,name=last_accessed_gateway_id,json=lastAccessedGatewayId,proto3" json:"last_accessed_gateway_id,omitempty"`
540	// [Output only] The most recent time at which the device accessed the gateway
541	// specified in `last_accessed_gateway`.
542	LastAccessedGatewayTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=last_accessed_gateway_time,json=lastAccessedGatewayTime,proto3" json:"last_accessed_gateway_time,omitempty"`
543	XXX_NoUnkeyedLiteral    struct{}             `json:"-"`
544	XXX_unrecognized        []byte               `json:"-"`
545	XXX_sizecache           int32                `json:"-"`
546}
547
548func (m *GatewayConfig) Reset()         { *m = GatewayConfig{} }
549func (m *GatewayConfig) String() string { return proto.CompactTextString(m) }
550func (*GatewayConfig) ProtoMessage()    {}
551func (*GatewayConfig) Descriptor() ([]byte, []int) {
552	return fileDescriptor_b8dc5e858286fc66, []int{1}
553}
554
555func (m *GatewayConfig) XXX_Unmarshal(b []byte) error {
556	return xxx_messageInfo_GatewayConfig.Unmarshal(m, b)
557}
558func (m *GatewayConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
559	return xxx_messageInfo_GatewayConfig.Marshal(b, m, deterministic)
560}
561func (m *GatewayConfig) XXX_Merge(src proto.Message) {
562	xxx_messageInfo_GatewayConfig.Merge(m, src)
563}
564func (m *GatewayConfig) XXX_Size() int {
565	return xxx_messageInfo_GatewayConfig.Size(m)
566}
567func (m *GatewayConfig) XXX_DiscardUnknown() {
568	xxx_messageInfo_GatewayConfig.DiscardUnknown(m)
569}
570
571var xxx_messageInfo_GatewayConfig proto.InternalMessageInfo
572
573func (m *GatewayConfig) GetGatewayType() GatewayType {
574	if m != nil {
575		return m.GatewayType
576	}
577	return GatewayType_GATEWAY_TYPE_UNSPECIFIED
578}
579
580func (m *GatewayConfig) GetGatewayAuthMethod() GatewayAuthMethod {
581	if m != nil {
582		return m.GatewayAuthMethod
583	}
584	return GatewayAuthMethod_GATEWAY_AUTH_METHOD_UNSPECIFIED
585}
586
587func (m *GatewayConfig) GetLastAccessedGatewayId() string {
588	if m != nil {
589		return m.LastAccessedGatewayId
590	}
591	return ""
592}
593
594func (m *GatewayConfig) GetLastAccessedGatewayTime() *timestamp.Timestamp {
595	if m != nil {
596		return m.LastAccessedGatewayTime
597	}
598	return nil
599}
600
601// A container for a group of devices.
602type DeviceRegistry struct {
603	// The identifier of this device registry. For example, `myRegistry`.
604	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
605	// The resource path name. For example,
606	// `projects/example-project/locations/us-central1/registries/my-registry`.
607	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
608	// The configuration for notification of telemetry events received from the
609	// device. All telemetry events that were successfully published by the
610	// device and acknowledged by Cloud IoT Core are guaranteed to be
611	// delivered to Cloud Pub/Sub. If multiple configurations match a message,
612	// only the first matching configuration is used. If you try to publish a
613	// device telemetry event using MQTT without specifying a Cloud Pub/Sub topic
614	// for the device's registry, the connection closes automatically. If you try
615	// to do so using an HTTP connection, an error is returned. Up to 10
616	// configurations may be provided.
617	EventNotificationConfigs []*EventNotificationConfig `protobuf:"bytes,10,rep,name=event_notification_configs,json=eventNotificationConfigs,proto3" json:"event_notification_configs,omitempty"`
618	// The configuration for notification of new states received from the device.
619	// State updates are guaranteed to be stored in the state history, but
620	// notifications to Cloud Pub/Sub are not guaranteed. For example, if
621	// permissions are misconfigured or the specified topic doesn't exist, no
622	// notification will be published but the state will still be stored in Cloud
623	// IoT Core.
624	StateNotificationConfig *StateNotificationConfig `protobuf:"bytes,7,opt,name=state_notification_config,json=stateNotificationConfig,proto3" json:"state_notification_config,omitempty"`
625	// The MQTT configuration for this device registry.
626	MqttConfig *MqttConfig `protobuf:"bytes,4,opt,name=mqtt_config,json=mqttConfig,proto3" json:"mqtt_config,omitempty"`
627	// The DeviceService (HTTP) configuration for this device registry.
628	HttpConfig *HttpConfig `protobuf:"bytes,9,opt,name=http_config,json=httpConfig,proto3" json:"http_config,omitempty"`
629	// **Beta Feature**
630	//
631	// The default logging verbosity for activity from devices in this registry.
632	// The verbosity level can be overridden by Device.log_level.
633	LogLevel LogLevel `protobuf:"varint,11,opt,name=log_level,json=logLevel,proto3,enum=google.cloud.iot.v1.LogLevel" json:"log_level,omitempty"`
634	// The credentials used to verify the device credentials. No more than 10
635	// credentials can be bound to a single registry at a time. The verification
636	// process occurs at the time of device creation or update. If this field is
637	// empty, no verification is performed. Otherwise, the credentials of a newly
638	// created device or added credentials of an updated device should be signed
639	// with one of these registry credentials.
640	//
641	// Note, however, that existing devices will never be affected by
642	// modifications to this list of credentials: after a device has been
643	// successfully created in a registry, it should be able to connect even if
644	// its registry credentials are revoked, deleted, or modified.
645	Credentials          []*RegistryCredential `protobuf:"bytes,8,rep,name=credentials,proto3" json:"credentials,omitempty"`
646	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
647	XXX_unrecognized     []byte                `json:"-"`
648	XXX_sizecache        int32                 `json:"-"`
649}
650
651func (m *DeviceRegistry) Reset()         { *m = DeviceRegistry{} }
652func (m *DeviceRegistry) String() string { return proto.CompactTextString(m) }
653func (*DeviceRegistry) ProtoMessage()    {}
654func (*DeviceRegistry) Descriptor() ([]byte, []int) {
655	return fileDescriptor_b8dc5e858286fc66, []int{2}
656}
657
658func (m *DeviceRegistry) XXX_Unmarshal(b []byte) error {
659	return xxx_messageInfo_DeviceRegistry.Unmarshal(m, b)
660}
661func (m *DeviceRegistry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
662	return xxx_messageInfo_DeviceRegistry.Marshal(b, m, deterministic)
663}
664func (m *DeviceRegistry) XXX_Merge(src proto.Message) {
665	xxx_messageInfo_DeviceRegistry.Merge(m, src)
666}
667func (m *DeviceRegistry) XXX_Size() int {
668	return xxx_messageInfo_DeviceRegistry.Size(m)
669}
670func (m *DeviceRegistry) XXX_DiscardUnknown() {
671	xxx_messageInfo_DeviceRegistry.DiscardUnknown(m)
672}
673
674var xxx_messageInfo_DeviceRegistry proto.InternalMessageInfo
675
676func (m *DeviceRegistry) GetId() string {
677	if m != nil {
678		return m.Id
679	}
680	return ""
681}
682
683func (m *DeviceRegistry) GetName() string {
684	if m != nil {
685		return m.Name
686	}
687	return ""
688}
689
690func (m *DeviceRegistry) GetEventNotificationConfigs() []*EventNotificationConfig {
691	if m != nil {
692		return m.EventNotificationConfigs
693	}
694	return nil
695}
696
697func (m *DeviceRegistry) GetStateNotificationConfig() *StateNotificationConfig {
698	if m != nil {
699		return m.StateNotificationConfig
700	}
701	return nil
702}
703
704func (m *DeviceRegistry) GetMqttConfig() *MqttConfig {
705	if m != nil {
706		return m.MqttConfig
707	}
708	return nil
709}
710
711func (m *DeviceRegistry) GetHttpConfig() *HttpConfig {
712	if m != nil {
713		return m.HttpConfig
714	}
715	return nil
716}
717
718func (m *DeviceRegistry) GetLogLevel() LogLevel {
719	if m != nil {
720		return m.LogLevel
721	}
722	return LogLevel_LOG_LEVEL_UNSPECIFIED
723}
724
725func (m *DeviceRegistry) GetCredentials() []*RegistryCredential {
726	if m != nil {
727		return m.Credentials
728	}
729	return nil
730}
731
732// The configuration of MQTT for a device registry.
733type MqttConfig struct {
734	// If enabled, allows connections using the MQTT protocol. Otherwise, MQTT
735	// connections to this registry will fail.
736	MqttEnabledState     MqttState `protobuf:"varint,1,opt,name=mqtt_enabled_state,json=mqttEnabledState,proto3,enum=google.cloud.iot.v1.MqttState" json:"mqtt_enabled_state,omitempty"`
737	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
738	XXX_unrecognized     []byte    `json:"-"`
739	XXX_sizecache        int32     `json:"-"`
740}
741
742func (m *MqttConfig) Reset()         { *m = MqttConfig{} }
743func (m *MqttConfig) String() string { return proto.CompactTextString(m) }
744func (*MqttConfig) ProtoMessage()    {}
745func (*MqttConfig) Descriptor() ([]byte, []int) {
746	return fileDescriptor_b8dc5e858286fc66, []int{3}
747}
748
749func (m *MqttConfig) XXX_Unmarshal(b []byte) error {
750	return xxx_messageInfo_MqttConfig.Unmarshal(m, b)
751}
752func (m *MqttConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
753	return xxx_messageInfo_MqttConfig.Marshal(b, m, deterministic)
754}
755func (m *MqttConfig) XXX_Merge(src proto.Message) {
756	xxx_messageInfo_MqttConfig.Merge(m, src)
757}
758func (m *MqttConfig) XXX_Size() int {
759	return xxx_messageInfo_MqttConfig.Size(m)
760}
761func (m *MqttConfig) XXX_DiscardUnknown() {
762	xxx_messageInfo_MqttConfig.DiscardUnknown(m)
763}
764
765var xxx_messageInfo_MqttConfig proto.InternalMessageInfo
766
767func (m *MqttConfig) GetMqttEnabledState() MqttState {
768	if m != nil {
769		return m.MqttEnabledState
770	}
771	return MqttState_MQTT_STATE_UNSPECIFIED
772}
773
774// The configuration of the HTTP bridge for a device registry.
775type HttpConfig struct {
776	// If enabled, allows devices to use DeviceService via the HTTP protocol.
777	// Otherwise, any requests to DeviceService will fail for this registry.
778	HttpEnabledState     HttpState `protobuf:"varint,1,opt,name=http_enabled_state,json=httpEnabledState,proto3,enum=google.cloud.iot.v1.HttpState" json:"http_enabled_state,omitempty"`
779	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
780	XXX_unrecognized     []byte    `json:"-"`
781	XXX_sizecache        int32     `json:"-"`
782}
783
784func (m *HttpConfig) Reset()         { *m = HttpConfig{} }
785func (m *HttpConfig) String() string { return proto.CompactTextString(m) }
786func (*HttpConfig) ProtoMessage()    {}
787func (*HttpConfig) Descriptor() ([]byte, []int) {
788	return fileDescriptor_b8dc5e858286fc66, []int{4}
789}
790
791func (m *HttpConfig) XXX_Unmarshal(b []byte) error {
792	return xxx_messageInfo_HttpConfig.Unmarshal(m, b)
793}
794func (m *HttpConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
795	return xxx_messageInfo_HttpConfig.Marshal(b, m, deterministic)
796}
797func (m *HttpConfig) XXX_Merge(src proto.Message) {
798	xxx_messageInfo_HttpConfig.Merge(m, src)
799}
800func (m *HttpConfig) XXX_Size() int {
801	return xxx_messageInfo_HttpConfig.Size(m)
802}
803func (m *HttpConfig) XXX_DiscardUnknown() {
804	xxx_messageInfo_HttpConfig.DiscardUnknown(m)
805}
806
807var xxx_messageInfo_HttpConfig proto.InternalMessageInfo
808
809func (m *HttpConfig) GetHttpEnabledState() HttpState {
810	if m != nil {
811		return m.HttpEnabledState
812	}
813	return HttpState_HTTP_STATE_UNSPECIFIED
814}
815
816// The configuration for forwarding telemetry events.
817type EventNotificationConfig struct {
818	// If the subfolder name matches this string exactly, this configuration will
819	// be used. The string must not include the leading '/' character. If empty,
820	// all strings are matched. This field is used only for telemetry events;
821	// subfolders are not supported for state changes.
822	SubfolderMatches string `protobuf:"bytes,2,opt,name=subfolder_matches,json=subfolderMatches,proto3" json:"subfolder_matches,omitempty"`
823	// A Cloud Pub/Sub topic name. For example,
824	// `projects/myProject/topics/deviceEvents`.
825	PubsubTopicName      string   `protobuf:"bytes,1,opt,name=pubsub_topic_name,json=pubsubTopicName,proto3" json:"pubsub_topic_name,omitempty"`
826	XXX_NoUnkeyedLiteral struct{} `json:"-"`
827	XXX_unrecognized     []byte   `json:"-"`
828	XXX_sizecache        int32    `json:"-"`
829}
830
831func (m *EventNotificationConfig) Reset()         { *m = EventNotificationConfig{} }
832func (m *EventNotificationConfig) String() string { return proto.CompactTextString(m) }
833func (*EventNotificationConfig) ProtoMessage()    {}
834func (*EventNotificationConfig) Descriptor() ([]byte, []int) {
835	return fileDescriptor_b8dc5e858286fc66, []int{5}
836}
837
838func (m *EventNotificationConfig) XXX_Unmarshal(b []byte) error {
839	return xxx_messageInfo_EventNotificationConfig.Unmarshal(m, b)
840}
841func (m *EventNotificationConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
842	return xxx_messageInfo_EventNotificationConfig.Marshal(b, m, deterministic)
843}
844func (m *EventNotificationConfig) XXX_Merge(src proto.Message) {
845	xxx_messageInfo_EventNotificationConfig.Merge(m, src)
846}
847func (m *EventNotificationConfig) XXX_Size() int {
848	return xxx_messageInfo_EventNotificationConfig.Size(m)
849}
850func (m *EventNotificationConfig) XXX_DiscardUnknown() {
851	xxx_messageInfo_EventNotificationConfig.DiscardUnknown(m)
852}
853
854var xxx_messageInfo_EventNotificationConfig proto.InternalMessageInfo
855
856func (m *EventNotificationConfig) GetSubfolderMatches() string {
857	if m != nil {
858		return m.SubfolderMatches
859	}
860	return ""
861}
862
863func (m *EventNotificationConfig) GetPubsubTopicName() string {
864	if m != nil {
865		return m.PubsubTopicName
866	}
867	return ""
868}
869
870// The configuration for notification of new states received from the device.
871type StateNotificationConfig struct {
872	// A Cloud Pub/Sub topic name. For example,
873	// `projects/myProject/topics/deviceEvents`.
874	PubsubTopicName      string   `protobuf:"bytes,1,opt,name=pubsub_topic_name,json=pubsubTopicName,proto3" json:"pubsub_topic_name,omitempty"`
875	XXX_NoUnkeyedLiteral struct{} `json:"-"`
876	XXX_unrecognized     []byte   `json:"-"`
877	XXX_sizecache        int32    `json:"-"`
878}
879
880func (m *StateNotificationConfig) Reset()         { *m = StateNotificationConfig{} }
881func (m *StateNotificationConfig) String() string { return proto.CompactTextString(m) }
882func (*StateNotificationConfig) ProtoMessage()    {}
883func (*StateNotificationConfig) Descriptor() ([]byte, []int) {
884	return fileDescriptor_b8dc5e858286fc66, []int{6}
885}
886
887func (m *StateNotificationConfig) XXX_Unmarshal(b []byte) error {
888	return xxx_messageInfo_StateNotificationConfig.Unmarshal(m, b)
889}
890func (m *StateNotificationConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
891	return xxx_messageInfo_StateNotificationConfig.Marshal(b, m, deterministic)
892}
893func (m *StateNotificationConfig) XXX_Merge(src proto.Message) {
894	xxx_messageInfo_StateNotificationConfig.Merge(m, src)
895}
896func (m *StateNotificationConfig) XXX_Size() int {
897	return xxx_messageInfo_StateNotificationConfig.Size(m)
898}
899func (m *StateNotificationConfig) XXX_DiscardUnknown() {
900	xxx_messageInfo_StateNotificationConfig.DiscardUnknown(m)
901}
902
903var xxx_messageInfo_StateNotificationConfig proto.InternalMessageInfo
904
905func (m *StateNotificationConfig) GetPubsubTopicName() string {
906	if m != nil {
907		return m.PubsubTopicName
908	}
909	return ""
910}
911
912// A server-stored registry credential used to validate device credentials.
913type RegistryCredential struct {
914	// The credential data. Reserved for expansion in the future.
915	//
916	// Types that are valid to be assigned to Credential:
917	//	*RegistryCredential_PublicKeyCertificate
918	Credential           isRegistryCredential_Credential `protobuf_oneof:"credential"`
919	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
920	XXX_unrecognized     []byte                          `json:"-"`
921	XXX_sizecache        int32                           `json:"-"`
922}
923
924func (m *RegistryCredential) Reset()         { *m = RegistryCredential{} }
925func (m *RegistryCredential) String() string { return proto.CompactTextString(m) }
926func (*RegistryCredential) ProtoMessage()    {}
927func (*RegistryCredential) Descriptor() ([]byte, []int) {
928	return fileDescriptor_b8dc5e858286fc66, []int{7}
929}
930
931func (m *RegistryCredential) XXX_Unmarshal(b []byte) error {
932	return xxx_messageInfo_RegistryCredential.Unmarshal(m, b)
933}
934func (m *RegistryCredential) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
935	return xxx_messageInfo_RegistryCredential.Marshal(b, m, deterministic)
936}
937func (m *RegistryCredential) XXX_Merge(src proto.Message) {
938	xxx_messageInfo_RegistryCredential.Merge(m, src)
939}
940func (m *RegistryCredential) XXX_Size() int {
941	return xxx_messageInfo_RegistryCredential.Size(m)
942}
943func (m *RegistryCredential) XXX_DiscardUnknown() {
944	xxx_messageInfo_RegistryCredential.DiscardUnknown(m)
945}
946
947var xxx_messageInfo_RegistryCredential proto.InternalMessageInfo
948
949type isRegistryCredential_Credential interface {
950	isRegistryCredential_Credential()
951}
952
953type RegistryCredential_PublicKeyCertificate struct {
954	PublicKeyCertificate *PublicKeyCertificate `protobuf:"bytes,1,opt,name=public_key_certificate,json=publicKeyCertificate,proto3,oneof"`
955}
956
957func (*RegistryCredential_PublicKeyCertificate) isRegistryCredential_Credential() {}
958
959func (m *RegistryCredential) GetCredential() isRegistryCredential_Credential {
960	if m != nil {
961		return m.Credential
962	}
963	return nil
964}
965
966func (m *RegistryCredential) GetPublicKeyCertificate() *PublicKeyCertificate {
967	if x, ok := m.GetCredential().(*RegistryCredential_PublicKeyCertificate); ok {
968		return x.PublicKeyCertificate
969	}
970	return nil
971}
972
973// XXX_OneofWrappers is for the internal use of the proto package.
974func (*RegistryCredential) XXX_OneofWrappers() []interface{} {
975	return []interface{}{
976		(*RegistryCredential_PublicKeyCertificate)(nil),
977	}
978}
979
980// Details of an X.509 certificate. For informational purposes only.
981type X509CertificateDetails struct {
982	// The entity that signed the certificate.
983	Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
984	// The entity the certificate and public key belong to.
985	Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
986	// The time the certificate becomes valid.
987	StartTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
988	// The time the certificate becomes invalid.
989	ExpiryTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=expiry_time,json=expiryTime,proto3" json:"expiry_time,omitempty"`
990	// The algorithm used to sign the certificate.
991	SignatureAlgorithm string `protobuf:"bytes,5,opt,name=signature_algorithm,json=signatureAlgorithm,proto3" json:"signature_algorithm,omitempty"`
992	// The type of public key in the certificate.
993	PublicKeyType        string   `protobuf:"bytes,6,opt,name=public_key_type,json=publicKeyType,proto3" json:"public_key_type,omitempty"`
994	XXX_NoUnkeyedLiteral struct{} `json:"-"`
995	XXX_unrecognized     []byte   `json:"-"`
996	XXX_sizecache        int32    `json:"-"`
997}
998
999func (m *X509CertificateDetails) Reset()         { *m = X509CertificateDetails{} }
1000func (m *X509CertificateDetails) String() string { return proto.CompactTextString(m) }
1001func (*X509CertificateDetails) ProtoMessage()    {}
1002func (*X509CertificateDetails) Descriptor() ([]byte, []int) {
1003	return fileDescriptor_b8dc5e858286fc66, []int{8}
1004}
1005
1006func (m *X509CertificateDetails) XXX_Unmarshal(b []byte) error {
1007	return xxx_messageInfo_X509CertificateDetails.Unmarshal(m, b)
1008}
1009func (m *X509CertificateDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1010	return xxx_messageInfo_X509CertificateDetails.Marshal(b, m, deterministic)
1011}
1012func (m *X509CertificateDetails) XXX_Merge(src proto.Message) {
1013	xxx_messageInfo_X509CertificateDetails.Merge(m, src)
1014}
1015func (m *X509CertificateDetails) XXX_Size() int {
1016	return xxx_messageInfo_X509CertificateDetails.Size(m)
1017}
1018func (m *X509CertificateDetails) XXX_DiscardUnknown() {
1019	xxx_messageInfo_X509CertificateDetails.DiscardUnknown(m)
1020}
1021
1022var xxx_messageInfo_X509CertificateDetails proto.InternalMessageInfo
1023
1024func (m *X509CertificateDetails) GetIssuer() string {
1025	if m != nil {
1026		return m.Issuer
1027	}
1028	return ""
1029}
1030
1031func (m *X509CertificateDetails) GetSubject() string {
1032	if m != nil {
1033		return m.Subject
1034	}
1035	return ""
1036}
1037
1038func (m *X509CertificateDetails) GetStartTime() *timestamp.Timestamp {
1039	if m != nil {
1040		return m.StartTime
1041	}
1042	return nil
1043}
1044
1045func (m *X509CertificateDetails) GetExpiryTime() *timestamp.Timestamp {
1046	if m != nil {
1047		return m.ExpiryTime
1048	}
1049	return nil
1050}
1051
1052func (m *X509CertificateDetails) GetSignatureAlgorithm() string {
1053	if m != nil {
1054		return m.SignatureAlgorithm
1055	}
1056	return ""
1057}
1058
1059func (m *X509CertificateDetails) GetPublicKeyType() string {
1060	if m != nil {
1061		return m.PublicKeyType
1062	}
1063	return ""
1064}
1065
1066// A public key certificate format and data.
1067type PublicKeyCertificate struct {
1068	// The certificate format.
1069	Format PublicKeyCertificateFormat `protobuf:"varint,1,opt,name=format,proto3,enum=google.cloud.iot.v1.PublicKeyCertificateFormat" json:"format,omitempty"`
1070	// The certificate data.
1071	Certificate string `protobuf:"bytes,2,opt,name=certificate,proto3" json:"certificate,omitempty"`
1072	// [Output only] The certificate details. Used only for X.509 certificates.
1073	X509Details          *X509CertificateDetails `protobuf:"bytes,3,opt,name=x509_details,json=x509Details,proto3" json:"x509_details,omitempty"`
1074	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
1075	XXX_unrecognized     []byte                  `json:"-"`
1076	XXX_sizecache        int32                   `json:"-"`
1077}
1078
1079func (m *PublicKeyCertificate) Reset()         { *m = PublicKeyCertificate{} }
1080func (m *PublicKeyCertificate) String() string { return proto.CompactTextString(m) }
1081func (*PublicKeyCertificate) ProtoMessage()    {}
1082func (*PublicKeyCertificate) Descriptor() ([]byte, []int) {
1083	return fileDescriptor_b8dc5e858286fc66, []int{9}
1084}
1085
1086func (m *PublicKeyCertificate) XXX_Unmarshal(b []byte) error {
1087	return xxx_messageInfo_PublicKeyCertificate.Unmarshal(m, b)
1088}
1089func (m *PublicKeyCertificate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1090	return xxx_messageInfo_PublicKeyCertificate.Marshal(b, m, deterministic)
1091}
1092func (m *PublicKeyCertificate) XXX_Merge(src proto.Message) {
1093	xxx_messageInfo_PublicKeyCertificate.Merge(m, src)
1094}
1095func (m *PublicKeyCertificate) XXX_Size() int {
1096	return xxx_messageInfo_PublicKeyCertificate.Size(m)
1097}
1098func (m *PublicKeyCertificate) XXX_DiscardUnknown() {
1099	xxx_messageInfo_PublicKeyCertificate.DiscardUnknown(m)
1100}
1101
1102var xxx_messageInfo_PublicKeyCertificate proto.InternalMessageInfo
1103
1104func (m *PublicKeyCertificate) GetFormat() PublicKeyCertificateFormat {
1105	if m != nil {
1106		return m.Format
1107	}
1108	return PublicKeyCertificateFormat_UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT
1109}
1110
1111func (m *PublicKeyCertificate) GetCertificate() string {
1112	if m != nil {
1113		return m.Certificate
1114	}
1115	return ""
1116}
1117
1118func (m *PublicKeyCertificate) GetX509Details() *X509CertificateDetails {
1119	if m != nil {
1120		return m.X509Details
1121	}
1122	return nil
1123}
1124
1125// A server-stored device credential used for authentication.
1126type DeviceCredential struct {
1127	// The credential data. Reserved for expansion in the future.
1128	//
1129	// Types that are valid to be assigned to Credential:
1130	//	*DeviceCredential_PublicKey
1131	Credential isDeviceCredential_Credential `protobuf_oneof:"credential"`
1132	// [Optional] The time at which this credential becomes invalid. This
1133	// credential will be ignored for new client authentication requests after
1134	// this timestamp; however, it will not be automatically deleted.
1135	ExpirationTime       *timestamp.Timestamp `protobuf:"bytes,6,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"`
1136	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
1137	XXX_unrecognized     []byte               `json:"-"`
1138	XXX_sizecache        int32                `json:"-"`
1139}
1140
1141func (m *DeviceCredential) Reset()         { *m = DeviceCredential{} }
1142func (m *DeviceCredential) String() string { return proto.CompactTextString(m) }
1143func (*DeviceCredential) ProtoMessage()    {}
1144func (*DeviceCredential) Descriptor() ([]byte, []int) {
1145	return fileDescriptor_b8dc5e858286fc66, []int{10}
1146}
1147
1148func (m *DeviceCredential) XXX_Unmarshal(b []byte) error {
1149	return xxx_messageInfo_DeviceCredential.Unmarshal(m, b)
1150}
1151func (m *DeviceCredential) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1152	return xxx_messageInfo_DeviceCredential.Marshal(b, m, deterministic)
1153}
1154func (m *DeviceCredential) XXX_Merge(src proto.Message) {
1155	xxx_messageInfo_DeviceCredential.Merge(m, src)
1156}
1157func (m *DeviceCredential) XXX_Size() int {
1158	return xxx_messageInfo_DeviceCredential.Size(m)
1159}
1160func (m *DeviceCredential) XXX_DiscardUnknown() {
1161	xxx_messageInfo_DeviceCredential.DiscardUnknown(m)
1162}
1163
1164var xxx_messageInfo_DeviceCredential proto.InternalMessageInfo
1165
1166type isDeviceCredential_Credential interface {
1167	isDeviceCredential_Credential()
1168}
1169
1170type DeviceCredential_PublicKey struct {
1171	PublicKey *PublicKeyCredential `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3,oneof"`
1172}
1173
1174func (*DeviceCredential_PublicKey) isDeviceCredential_Credential() {}
1175
1176func (m *DeviceCredential) GetCredential() isDeviceCredential_Credential {
1177	if m != nil {
1178		return m.Credential
1179	}
1180	return nil
1181}
1182
1183func (m *DeviceCredential) GetPublicKey() *PublicKeyCredential {
1184	if x, ok := m.GetCredential().(*DeviceCredential_PublicKey); ok {
1185		return x.PublicKey
1186	}
1187	return nil
1188}
1189
1190func (m *DeviceCredential) GetExpirationTime() *timestamp.Timestamp {
1191	if m != nil {
1192		return m.ExpirationTime
1193	}
1194	return nil
1195}
1196
1197// XXX_OneofWrappers is for the internal use of the proto package.
1198func (*DeviceCredential) XXX_OneofWrappers() []interface{} {
1199	return []interface{}{
1200		(*DeviceCredential_PublicKey)(nil),
1201	}
1202}
1203
1204// A public key format and data.
1205type PublicKeyCredential struct {
1206	// The format of the key.
1207	Format PublicKeyFormat `protobuf:"varint,1,opt,name=format,proto3,enum=google.cloud.iot.v1.PublicKeyFormat" json:"format,omitempty"`
1208	// The key data.
1209	Key                  string   `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
1210	XXX_NoUnkeyedLiteral struct{} `json:"-"`
1211	XXX_unrecognized     []byte   `json:"-"`
1212	XXX_sizecache        int32    `json:"-"`
1213}
1214
1215func (m *PublicKeyCredential) Reset()         { *m = PublicKeyCredential{} }
1216func (m *PublicKeyCredential) String() string { return proto.CompactTextString(m) }
1217func (*PublicKeyCredential) ProtoMessage()    {}
1218func (*PublicKeyCredential) Descriptor() ([]byte, []int) {
1219	return fileDescriptor_b8dc5e858286fc66, []int{11}
1220}
1221
1222func (m *PublicKeyCredential) XXX_Unmarshal(b []byte) error {
1223	return xxx_messageInfo_PublicKeyCredential.Unmarshal(m, b)
1224}
1225func (m *PublicKeyCredential) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1226	return xxx_messageInfo_PublicKeyCredential.Marshal(b, m, deterministic)
1227}
1228func (m *PublicKeyCredential) XXX_Merge(src proto.Message) {
1229	xxx_messageInfo_PublicKeyCredential.Merge(m, src)
1230}
1231func (m *PublicKeyCredential) XXX_Size() int {
1232	return xxx_messageInfo_PublicKeyCredential.Size(m)
1233}
1234func (m *PublicKeyCredential) XXX_DiscardUnknown() {
1235	xxx_messageInfo_PublicKeyCredential.DiscardUnknown(m)
1236}
1237
1238var xxx_messageInfo_PublicKeyCredential proto.InternalMessageInfo
1239
1240func (m *PublicKeyCredential) GetFormat() PublicKeyFormat {
1241	if m != nil {
1242		return m.Format
1243	}
1244	return PublicKeyFormat_UNSPECIFIED_PUBLIC_KEY_FORMAT
1245}
1246
1247func (m *PublicKeyCredential) GetKey() string {
1248	if m != nil {
1249		return m.Key
1250	}
1251	return ""
1252}
1253
1254// The device configuration. Eventually delivered to devices.
1255type DeviceConfig struct {
1256	// [Output only] The version of this update. The version number is assigned by
1257	// the server, and is always greater than 0 after device creation. The
1258	// version must be 0 on the `CreateDevice` request if a `config` is
1259	// specified; the response of `CreateDevice` will always have a value of 1.
1260	Version int64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
1261	// [Output only] The time at which this configuration version was updated in
1262	// Cloud IoT Core. This timestamp is set by the server.
1263	CloudUpdateTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=cloud_update_time,json=cloudUpdateTime,proto3" json:"cloud_update_time,omitempty"`
1264	// [Output only] The time at which Cloud IoT Core received the
1265	// acknowledgment from the device, indicating that the device has received
1266	// this configuration version. If this field is not present, the device has
1267	// not yet acknowledged that it received this version. Note that when
1268	// the config was sent to the device, many config versions may have been
1269	// available in Cloud IoT Core while the device was disconnected, and on
1270	// connection, only the latest version is sent to the device. Some
1271	// versions may never be sent to the device, and therefore are never
1272	// acknowledged. This timestamp is set by Cloud IoT Core.
1273	DeviceAckTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=device_ack_time,json=deviceAckTime,proto3" json:"device_ack_time,omitempty"`
1274	// The device configuration data.
1275	BinaryData           []byte   `protobuf:"bytes,4,opt,name=binary_data,json=binaryData,proto3" json:"binary_data,omitempty"`
1276	XXX_NoUnkeyedLiteral struct{} `json:"-"`
1277	XXX_unrecognized     []byte   `json:"-"`
1278	XXX_sizecache        int32    `json:"-"`
1279}
1280
1281func (m *DeviceConfig) Reset()         { *m = DeviceConfig{} }
1282func (m *DeviceConfig) String() string { return proto.CompactTextString(m) }
1283func (*DeviceConfig) ProtoMessage()    {}
1284func (*DeviceConfig) Descriptor() ([]byte, []int) {
1285	return fileDescriptor_b8dc5e858286fc66, []int{12}
1286}
1287
1288func (m *DeviceConfig) XXX_Unmarshal(b []byte) error {
1289	return xxx_messageInfo_DeviceConfig.Unmarshal(m, b)
1290}
1291func (m *DeviceConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1292	return xxx_messageInfo_DeviceConfig.Marshal(b, m, deterministic)
1293}
1294func (m *DeviceConfig) XXX_Merge(src proto.Message) {
1295	xxx_messageInfo_DeviceConfig.Merge(m, src)
1296}
1297func (m *DeviceConfig) XXX_Size() int {
1298	return xxx_messageInfo_DeviceConfig.Size(m)
1299}
1300func (m *DeviceConfig) XXX_DiscardUnknown() {
1301	xxx_messageInfo_DeviceConfig.DiscardUnknown(m)
1302}
1303
1304var xxx_messageInfo_DeviceConfig proto.InternalMessageInfo
1305
1306func (m *DeviceConfig) GetVersion() int64 {
1307	if m != nil {
1308		return m.Version
1309	}
1310	return 0
1311}
1312
1313func (m *DeviceConfig) GetCloudUpdateTime() *timestamp.Timestamp {
1314	if m != nil {
1315		return m.CloudUpdateTime
1316	}
1317	return nil
1318}
1319
1320func (m *DeviceConfig) GetDeviceAckTime() *timestamp.Timestamp {
1321	if m != nil {
1322		return m.DeviceAckTime
1323	}
1324	return nil
1325}
1326
1327func (m *DeviceConfig) GetBinaryData() []byte {
1328	if m != nil {
1329		return m.BinaryData
1330	}
1331	return nil
1332}
1333
1334// The device state, as reported by the device.
1335type DeviceState struct {
1336	// [Output only] The time at which this state version was updated in Cloud
1337	// IoT Core.
1338	UpdateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
1339	// The device state data.
1340	BinaryData           []byte   `protobuf:"bytes,2,opt,name=binary_data,json=binaryData,proto3" json:"binary_data,omitempty"`
1341	XXX_NoUnkeyedLiteral struct{} `json:"-"`
1342	XXX_unrecognized     []byte   `json:"-"`
1343	XXX_sizecache        int32    `json:"-"`
1344}
1345
1346func (m *DeviceState) Reset()         { *m = DeviceState{} }
1347func (m *DeviceState) String() string { return proto.CompactTextString(m) }
1348func (*DeviceState) ProtoMessage()    {}
1349func (*DeviceState) Descriptor() ([]byte, []int) {
1350	return fileDescriptor_b8dc5e858286fc66, []int{13}
1351}
1352
1353func (m *DeviceState) XXX_Unmarshal(b []byte) error {
1354	return xxx_messageInfo_DeviceState.Unmarshal(m, b)
1355}
1356func (m *DeviceState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1357	return xxx_messageInfo_DeviceState.Marshal(b, m, deterministic)
1358}
1359func (m *DeviceState) XXX_Merge(src proto.Message) {
1360	xxx_messageInfo_DeviceState.Merge(m, src)
1361}
1362func (m *DeviceState) XXX_Size() int {
1363	return xxx_messageInfo_DeviceState.Size(m)
1364}
1365func (m *DeviceState) XXX_DiscardUnknown() {
1366	xxx_messageInfo_DeviceState.DiscardUnknown(m)
1367}
1368
1369var xxx_messageInfo_DeviceState proto.InternalMessageInfo
1370
1371func (m *DeviceState) GetUpdateTime() *timestamp.Timestamp {
1372	if m != nil {
1373		return m.UpdateTime
1374	}
1375	return nil
1376}
1377
1378func (m *DeviceState) GetBinaryData() []byte {
1379	if m != nil {
1380		return m.BinaryData
1381	}
1382	return nil
1383}
1384
1385func init() {
1386	proto.RegisterEnum("google.cloud.iot.v1.MqttState", MqttState_name, MqttState_value)
1387	proto.RegisterEnum("google.cloud.iot.v1.HttpState", HttpState_name, HttpState_value)
1388	proto.RegisterEnum("google.cloud.iot.v1.LogLevel", LogLevel_name, LogLevel_value)
1389	proto.RegisterEnum("google.cloud.iot.v1.GatewayType", GatewayType_name, GatewayType_value)
1390	proto.RegisterEnum("google.cloud.iot.v1.GatewayAuthMethod", GatewayAuthMethod_name, GatewayAuthMethod_value)
1391	proto.RegisterEnum("google.cloud.iot.v1.PublicKeyCertificateFormat", PublicKeyCertificateFormat_name, PublicKeyCertificateFormat_value)
1392	proto.RegisterEnum("google.cloud.iot.v1.PublicKeyFormat", PublicKeyFormat_name, PublicKeyFormat_value)
1393	proto.RegisterType((*Device)(nil), "google.cloud.iot.v1.Device")
1394	proto.RegisterMapType((map[string]string)(nil), "google.cloud.iot.v1.Device.MetadataEntry")
1395	proto.RegisterType((*GatewayConfig)(nil), "google.cloud.iot.v1.GatewayConfig")
1396	proto.RegisterType((*DeviceRegistry)(nil), "google.cloud.iot.v1.DeviceRegistry")
1397	proto.RegisterType((*MqttConfig)(nil), "google.cloud.iot.v1.MqttConfig")
1398	proto.RegisterType((*HttpConfig)(nil), "google.cloud.iot.v1.HttpConfig")
1399	proto.RegisterType((*EventNotificationConfig)(nil), "google.cloud.iot.v1.EventNotificationConfig")
1400	proto.RegisterType((*StateNotificationConfig)(nil), "google.cloud.iot.v1.StateNotificationConfig")
1401	proto.RegisterType((*RegistryCredential)(nil), "google.cloud.iot.v1.RegistryCredential")
1402	proto.RegisterType((*X509CertificateDetails)(nil), "google.cloud.iot.v1.X509CertificateDetails")
1403	proto.RegisterType((*PublicKeyCertificate)(nil), "google.cloud.iot.v1.PublicKeyCertificate")
1404	proto.RegisterType((*DeviceCredential)(nil), "google.cloud.iot.v1.DeviceCredential")
1405	proto.RegisterType((*PublicKeyCredential)(nil), "google.cloud.iot.v1.PublicKeyCredential")
1406	proto.RegisterType((*DeviceConfig)(nil), "google.cloud.iot.v1.DeviceConfig")
1407	proto.RegisterType((*DeviceState)(nil), "google.cloud.iot.v1.DeviceState")
1408}
1409
1410func init() {
1411	proto.RegisterFile("google/cloud/iot/v1/resources.proto", fileDescriptor_b8dc5e858286fc66)
1412}
1413
1414var fileDescriptor_b8dc5e858286fc66 = []byte{
1415	// 1750 bytes of a gzipped FileDescriptorProto
1416	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xcb, 0x72, 0xdb, 0xc8,
1417	0x15, 0x35, 0xa8, 0x87, 0xc5, 0x4b, 0x91, 0x22, 0x5b, 0xb2, 0x04, 0xb3, 0x32, 0x36, 0xcd, 0xc9,
1418	0x4c, 0x34, 0x9a, 0x84, 0x98, 0x51, 0xca, 0x4e, 0x6c, 0x27, 0xa9, 0x50, 0x24, 0x24, 0x31, 0xe6,
1419	0x43, 0x01, 0x29, 0x4f, 0x3c, 0x1b, 0x14, 0x08, 0xb4, 0x48, 0x8c, 0x48, 0x00, 0x03, 0x34, 0x94,
1420	0x61, 0xb9, 0xb4, 0xcc, 0x32, 0x8b, 0xac, 0xf3, 0x13, 0xf9, 0x82, 0xfc, 0x43, 0x16, 0xf9, 0x89,
1421	0xf9, 0x82, 0x54, 0x65, 0x93, 0xea, 0x07, 0xc0, 0x87, 0x41, 0x51, 0xae, 0xec, 0xba, 0xef, 0xbd,
1422	0xe7, 0x5c, 0xf4, 0x7d, 0x75, 0x93, 0xf0, 0xe9, 0xc0, 0x75, 0x07, 0x23, 0xac, 0x98, 0x23, 0x37,
1423	0xb4, 0x14, 0xdb, 0x25, 0xca, 0xcd, 0xd7, 0x8a, 0x8f, 0x03, 0x37, 0xf4, 0x4d, 0x1c, 0x54, 0x3c,
1424	0xdf, 0x25, 0x2e, 0xda, 0xe5, 0x46, 0x15, 0x66, 0x54, 0xb1, 0x5d, 0x52, 0xb9, 0xf9, 0xba, 0xf8,
1425	0x58, 0x20, 0x0d, 0xcf, 0x8e, 0x01, 0xdc, 0xbe, 0xf8, 0x54, 0xa8, 0xd8, 0xae, 0x1f, 0x5e, 0x29,
1426	0xc4, 0x1e, 0xe3, 0x80, 0x18, 0x63, 0x4f, 0x18, 0x1c, 0x08, 0x03, 0xdf, 0x33, 0x95, 0x80, 0x18,
1427	0x24, 0x14, 0x9e, 0xca, 0x7f, 0x4d, 0xc3, 0x66, 0x1d, 0xdf, 0xd8, 0x26, 0x46, 0x39, 0x48, 0xd9,
1428	0x96, 0x2c, 0x95, 0xa4, 0xc3, 0xb4, 0x96, 0xb2, 0x2d, 0x84, 0x60, 0xdd, 0x31, 0xc6, 0x58, 0x4e,
1429	0x31, 0x09, 0x5b, 0xa3, 0x47, 0xb0, 0xe9, 0x84, 0x63, 0xdd, 0xb6, 0xe4, 0xb5, 0x92, 0x74, 0xb8,
1430	0xae, 0x6d, 0x38, 0xe1, 0xb8, 0x61, 0xa1, 0x33, 0xc8, 0x98, 0x3e, 0xb6, 0xb0, 0x43, 0x6c, 0x63,
1431	0x14, 0xc8, 0xdb, 0xa5, 0xb5, 0xc3, 0xcc, 0xf1, 0x67, 0x95, 0x84, 0x53, 0x54, 0xb8, 0xb3, 0x5a,
1432	0x6c, 0xad, 0xcd, 0x22, 0xd1, 0x1f, 0x60, 0x77, 0x64, 0x04, 0x44, 0x1f, 0x62, 0xc3, 0x27, 0x7d,
1433	0x6c, 0x10, 0x9d, 0x9e, 0x44, 0x7e, 0x58, 0x92, 0x0e, 0x33, 0xc7, 0xc5, 0x88, 0x30, 0x3a, 0x66,
1434	0xa5, 0x17, 0x1d, 0x53, 0x2b, 0x50, 0xd8, 0x79, 0x84, 0xa2, 0x72, 0x74, 0x02, 0x3b, 0x8c, 0x0b,
1435	0xdf, 0x60, 0x47, 0xf0, 0x6c, 0xad, 0xe4, 0xc9, 0x52, 0x88, 0x4a, 0x11, 0x73, 0x1c, 0x34, 0x66,
1436	0x98, 0x73, 0xec, 0xdd, 0x8f, 0xa3, 0x4b, 0x11, 0x8c, 0xe3, 0x0d, 0xec, 0x31, 0x0e, 0xd3, 0x75,
1437	0xae, 0xec, 0x81, 0x6e, 0x98, 0xd7, 0x9c, 0x28, 0x77, 0xbf, 0x43, 0xd5, 0x18, 0xac, 0x6a, 0x5e,
1438	0x33, 0xb2, 0x16, 0x3c, 0x9a, 0x25, 0x0b, 0xb0, 0x63, 0x71, 0x36, 0xb4, 0x92, 0x0d, 0x4d, 0xd9,
1439	0xba, 0xd8, 0xb1, 0x18, 0x9d, 0x0c, 0x0f, 0xfb, 0x23, 0xd7, 0xbc, 0xc6, 0x96, 0xbc, 0x5b, 0x92,
1440	0x0e, 0xb7, 0xb4, 0x68, 0x3b, 0x8d, 0x9e, 0xef, 0xbb, 0x3e, 0x77, 0x01, 0xf7, 0x8c, 0x1e, 0x45,
1441	0x30, 0xf6, 0xdf, 0x41, 0x61, 0x86, 0x83, 0xd7, 0x9d, 0x9c, 0x61, 0x2c, 0x28, 0x62, 0xf1, 0x3d,
1442	0xb3, 0xd2, 0x65, 0x1a, 0x6d, 0x27, 0x46, 0x73, 0x01, 0x7a, 0x09, 0x9b, 0xfc, 0x9c, 0x72, 0x96,
1443	0x81, 0x9e, 0xdd, 0x55, 0x51, 0xcc, 0x50, 0x13, 0x00, 0xf4, 0x02, 0x36, 0x58, 0xce, 0xe4, 0x3c,
1444	0x43, 0x96, 0xee, 0x40, 0xb2, 0x4c, 0x69, 0xdc, 0x1c, 0xbd, 0x82, 0xf4, 0xc8, 0x1d, 0xe8, 0x23,
1445	0x7c, 0x83, 0x47, 0xf2, 0xa3, 0x92, 0x74, 0x98, 0x3b, 0xfe, 0x24, 0x11, 0xdb, 0x74, 0x07, 0x4d,
1446	0x6a, 0xa4, 0x6d, 0x8d, 0xc4, 0x0a, 0xa9, 0xb0, 0x35, 0xc6, 0xc4, 0xb0, 0x0c, 0x62, 0xc8, 0x05,
1447	0xd6, 0x02, 0x5f, 0xdc, 0xe1, 0xb6, 0xd2, 0x12, 0xb6, 0xaa, 0x43, 0xfc, 0x89, 0x16, 0x43, 0x51,
1448	0x03, 0x72, 0x03, 0x83, 0xe0, 0x3f, 0x1b, 0x13, 0x91, 0x65, 0x59, 0x66, 0x67, 0x28, 0x27, 0x92,
1449	0x9d, 0x71, 0x53, 0x71, 0xfc, 0xec, 0x60, 0x76, 0x5b, 0x7c, 0x0d, 0xd9, 0x39, 0x2f, 0x28, 0x0f,
1450	0x6b, 0xd7, 0x78, 0x22, 0x9a, 0x9c, 0x2e, 0xd1, 0x1e, 0x6c, 0xdc, 0x18, 0xa3, 0x30, 0x6a, 0x73,
1451	0xbe, 0x79, 0x95, 0xfa, 0xb5, 0xf4, 0x2a, 0xf8, 0xb1, 0xea, 0xc1, 0x13, 0xe6, 0x8c, 0xfa, 0xe2,
1452	0xce, 0x0d, 0xcf, 0x0e, 0x2a, 0xa6, 0x3b, 0x56, 0xc4, 0xd0, 0x68, 0x7b, 0xbe, 0xfb, 0x1d, 0x36,
1453	0x49, 0xa0, 0xbc, 0x17, 0xab, 0x5b, 0x65, 0xe4, 0x9a, 0x06, 0xb1, 0x5d, 0x27, 0x50, 0xde, 0x47,
1454	0xcb, 0x5b, 0xc5, 0xc7, 0x03, 0x3b, 0x20, 0xbe, 0x8d, 0x03, 0xe5, 0xbd, 0x58, 0x4f, 0x6e, 0x15,
1455	0x8b, 0xb1, 0x04, 0xca, 0x7b, 0xbe, 0xb8, 0x2d, 0xff, 0x33, 0x05, 0xd9, 0xb9, 0x23, 0xa1, 0x1a,
1456	0x6c, 0x47, 0xe1, 0x20, 0x13, 0x0f, 0xb3, 0x6f, 0xcf, 0x2d, 0x49, 0xa8, 0x40, 0xf6, 0x26, 0x1e,
1457	0xd6, 0x32, 0x83, 0xe9, 0x06, 0xbd, 0x85, 0xdd, 0x88, 0xc4, 0x08, 0xc9, 0x50, 0x1f, 0x63, 0x32,
1458	0x74, 0x2d, 0x76, 0xe6, 0xdc, 0xf1, 0xe7, 0x77, 0x71, 0x55, 0x43, 0x32, 0x6c, 0x31, 0x6b, 0xad,
1459	0x30, 0x58, 0x14, 0xa1, 0x5f, 0x81, 0xcc, 0x2a, 0xdc, 0x30, 0x4d, 0x1c, 0x04, 0xd8, 0xd2, 0x23,
1460	0x2f, 0x62, 0x42, 0xa6, 0x35, 0xd6, 0xae, 0x55, 0xa1, 0x16, 0x9c, 0x0d, 0x0b, 0x7d, 0x03, 0xc5,
1461	0x64, 0x20, 0xeb, 0xb4, 0xf5, 0x95, 0x9d, 0x76, 0x90, 0x40, 0x4b, 0xb5, 0xe5, 0xff, 0xae, 0x43,
1462	0x8e, 0xe7, 0x46, 0x13, 0x51, 0xbe, 0xd7, 0x60, 0xff, 0x0e, 0x8a, 0x7c, 0x4e, 0x3a, 0x2e, 0xb1,
1463	0xaf, 0x6c, 0x9e, 0x35, 0x51, 0x7f, 0x81, 0x0c, 0xac, 0x9a, 0x7f, 0x9e, 0x18, 0x27, 0x36, 0x2c,
1464	0xdb, 0x33, 0x28, 0x51, 0x8a, 0x32, 0x4e, 0x56, 0x04, 0x68, 0x08, 0x8f, 0xf9, 0x3c, 0x4d, 0xf0,
1465	0x25, 0x46, 0x7d, 0xb2, 0x2b, 0xd6, 0xa9, 0x09, 0xae, 0x0e, 0x82, 0x64, 0x05, 0xfa, 0x3d, 0x64,
1466	0xc6, 0xdf, 0x93, 0x68, 0x5a, 0x8a, 0xb0, 0x3e, 0x4d, 0xe4, 0x6e, 0x7d, 0x4f, 0xc4, 0x70, 0xd4,
1467	0x60, 0x1c, 0xaf, 0x29, 0xc3, 0x90, 0x10, 0x2f, 0x62, 0x48, 0xdf, 0xc1, 0x70, 0x4e, 0x88, 0x17,
1468	0x31, 0x0c, 0xe3, 0xf5, 0xfc, 0x44, 0xc9, 0x7c, 0xdc, 0x44, 0x69, 0xcc, 0xdf, 0xab, 0x5b, 0x2c,
1469	0x0d, 0x3f, 0x4b, 0x44, 0x47, 0xd9, 0x5e, 0x72, 0xb3, 0xbe, 0xb2, 0x7e, 0xac, 0x1a, 0x50, 0x5a,
1470	0xd6, 0xcd, 0x71, 0xad, 0xfc, 0xf6, 0xff, 0xea, 0xe7, 0xf2, 0xb7, 0x00, 0xd3, 0x40, 0xa2, 0x26,
1471	0x20, 0x16, 0x7e, 0xec, 0x18, 0xfd, 0x11, 0xb6, 0xf8, 0x2d, 0x2a, 0x1a, 0xf8, 0xc9, 0xd2, 0x2c,
1472	0xf0, 0x79, 0x9c, 0xa7, 0x48, 0x95, 0x03, 0x99, 0x84, 0x72, 0x4f, 0x43, 0x4c, 0xb9, 0x59, 0x62,
1473	0xee, 0xcf, 0x4d, 0xc1, 0x82, 0x9b, 0x22, 0xe7, 0xb8, 0x7d, 0x38, 0x58, 0x52, 0xc7, 0xe8, 0x4b,
1474	0x28, 0x04, 0x61, 0xff, 0xca, 0x1d, 0x59, 0xd8, 0xd7, 0xc7, 0x06, 0x31, 0x87, 0x38, 0x10, 0xad,
1475	0x93, 0x8f, 0x15, 0x2d, 0x2e, 0x47, 0x47, 0x50, 0xf0, 0xc2, 0x7e, 0x10, 0xf6, 0x75, 0xe2, 0x7a,
1476	0xb6, 0xa9, 0xb3, 0x3e, 0xe3, 0x9d, 0xb7, 0xc3, 0x15, 0x3d, 0x2a, 0x6f, 0x1b, 0x63, 0x5c, 0x56,
1477	0xe1, 0x60, 0x49, 0x41, 0x7f, 0x14, 0xcd, 0x5f, 0x24, 0x40, 0x1f, 0x26, 0x1f, 0x19, 0xb0, 0xef,
1478	0x85, 0xfd, 0x91, 0x6d, 0xea, 0xd7, 0x78, 0xa2, 0x9b, 0xd8, 0x17, 0x4e, 0x38, 0xcf, 0xb2, 0xab,
1479	0xe9, 0x82, 0x41, 0xde, 0xe0, 0x49, 0x6d, 0x0a, 0x38, 0x7f, 0xa0, 0xed, 0x79, 0x09, 0xf2, 0x93,
1480	0x6d, 0x80, 0x69, 0x85, 0x95, 0xff, 0x9e, 0x82, 0xfd, 0x3f, 0x3d, 0xff, 0xea, 0xe5, 0x8c, 0x45,
1481	0x1d, 0x13, 0xc3, 0x1e, 0x05, 0x68, 0x1f, 0x36, 0xed, 0x20, 0x08, 0xb1, 0x2f, 0xce, 0x20, 0x76,
1482	0xf4, 0xf5, 0x11, 0x84, 0x7d, 0x5a, 0x64, 0x22, 0xa0, 0xd1, 0x16, 0xbd, 0x04, 0x08, 0x88, 0xe1,
1483	0x8b, 0x67, 0xdb, 0xda, 0xca, 0x71, 0x98, 0x66, 0xd6, 0xec, 0xd1, 0xf1, 0x1a, 0x32, 0xf8, 0x07,
1484	0xcf, 0xf6, 0xef, 0x3d, 0x4a, 0x81, 0x9b, 0x33, 0xb0, 0x02, 0xbb, 0x81, 0x3d, 0x70, 0x0c, 0x12,
1485	0xfa, 0x58, 0x37, 0x46, 0x03, 0xd7, 0xb7, 0xc9, 0x70, 0x2c, 0x6f, 0xb0, 0xaf, 0x43, 0xb1, 0xaa,
1486	0x1a, 0x69, 0xd0, 0xe7, 0xb0, 0x33, 0x13, 0x66, 0x76, 0x41, 0x6d, 0x32, 0xe3, 0x6c, 0x1c, 0x32,
1487	0x7a, 0x01, 0x95, 0xff, 0x25, 0xc1, 0x5e, 0x52, 0x70, 0xd1, 0x19, 0x6c, 0x5e, 0xb9, 0xfe, 0xd8,
1488	0x20, 0xa2, 0x76, 0x95, 0x7b, 0xe7, 0xe5, 0x94, 0xc1, 0x34, 0x01, 0x47, 0x25, 0xc8, 0xcc, 0x66,
1489	0x99, 0x07, 0x74, 0x56, 0x84, 0xda, 0xb0, 0xfd, 0xc3, 0xf3, 0xaf, 0x5e, 0xea, 0x16, 0x4f, 0x8b,
1490	0x08, 0xeb, 0x97, 0x89, 0x0e, 0x93, 0x33, 0xa9, 0x65, 0x28, 0x81, 0xd8, 0x94, 0xff, 0x21, 0x41,
1491	0x7e, 0xf1, 0x39, 0x8f, 0x1a, 0x00, 0xd3, 0x80, 0xb0, 0xaf, 0xc8, 0x1c, 0x1f, 0xae, 0x38, 0x53,
1492	0x8c, 0x3e, 0x7f, 0xa0, 0xa5, 0xe3, 0xb8, 0xa1, 0x1a, 0xec, 0xb0, 0xd4, 0xf0, 0xfb, 0x81, 0x65,
1493	0x73, 0x73, 0x65, 0x36, 0x73, 0x53, 0x08, 0x15, 0x2e, 0x14, 0x29, 0x86, 0xdd, 0x04, 0xb7, 0xe8,
1494	0x37, 0x0b, 0x49, 0xf8, 0xe9, 0xdd, 0x1f, 0xbc, 0x10, 0x79, 0xf1, 0xa8, 0x4a, 0xc5, 0x8f, 0xaa,
1495	0xf2, 0xbf, 0x25, 0xd8, 0x9e, 0x7d, 0x96, 0xd2, 0x4a, 0xbf, 0xc1, 0x7e, 0x60, 0xbb, 0x0e, 0xf3,
1496	0xb0, 0xa6, 0x45, 0x5b, 0x74, 0x0a, 0x05, 0xe6, 0x44, 0x0f, 0x3d, 0x2b, 0xfe, 0x8d, 0x91, 0x5a,
1497	0x79, 0xcc, 0x1d, 0x06, 0xba, 0x64, 0x98, 0xe8, 0x97, 0x0a, 0x7f, 0x43, 0x4d, 0x7f, 0x60, 0xac,
1498	0x6e, 0x9b, 0x2c, 0x87, 0x44, 0x3f, 0x2e, 0x9e, 0x42, 0xa6, 0x6f, 0x3b, 0x86, 0x3f, 0xd1, 0xd9,
1499	0x1b, 0x96, 0xb6, 0xce, 0xb6, 0x06, 0x5c, 0x54, 0x37, 0x88, 0x51, 0xbe, 0x86, 0xcc, 0xcc, 0x9b,
1500	0x99, 0xb6, 0xda, 0xec, 0x57, 0x4b, 0xab, 0x5b, 0x2d, 0x9c, 0x7e, 0xf0, 0x82, 0xb3, 0xd4, 0xa2,
1501	0xb3, 0xa3, 0x26, 0xa4, 0xe3, 0xeb, 0x00, 0x15, 0x61, 0xbf, 0xf5, 0xc7, 0x5e, 0x4f, 0xef, 0xf6,
1502	0xaa, 0x3d, 0x55, 0xbf, 0x6c, 0x77, 0x2f, 0xd4, 0x5a, 0xe3, 0xb4, 0xa1, 0xd6, 0xf3, 0x0f, 0x50,
1503	0x1e, 0xb6, 0x99, 0x4e, 0x6d, 0x57, 0x4f, 0x9a, 0x6a, 0x3d, 0x2f, 0xa1, 0x02, 0x64, 0x99, 0xa4,
1504	0xde, 0xe8, 0x72, 0x51, 0x8a, 0xb2, 0xc5, 0x17, 0x00, 0x65, 0x3b, 0xef, 0xf5, 0x2e, 0x96, 0xb1,
1505	0x31, 0xdd, 0x1c, 0x1b, 0x93, 0xcc, 0xb0, 0x75, 0x60, 0x2b, 0xba, 0xae, 0xd1, 0x63, 0x78, 0xd4,
1506	0xec, 0x9c, 0xe9, 0x4d, 0xf5, 0xad, 0xda, 0x5c, 0xe0, 0xda, 0x82, 0xf5, 0x76, 0xa7, 0xad, 0xe6,
1507	0x01, 0xa5, 0x61, 0x43, 0xd5, 0xb4, 0x8e, 0x96, 0xdf, 0xa3, 0xc2, 0x46, 0xfb, 0xb4, 0x93, 0x7f,
1508	0x42, 0x85, 0x75, 0xf5, 0xe4, 0xf2, 0x2c, 0x7f, 0x78, 0xd4, 0x80, 0xcc, 0xcc, 0xe3, 0x15, 0xfd,
1509	0x04, 0xe4, 0xb3, 0x6a, 0x4f, 0xfd, 0xa6, 0xfa, 0x4e, 0xef, 0xbd, 0xbb, 0x58, 0xfc, 0xc4, 0x0c,
1510	0x3c, 0x14, 0xda, 0xbc, 0x84, 0x76, 0x20, 0xd3, 0xee, 0xb4, 0xf5, 0x48, 0x90, 0x3a, 0xfa, 0x9b,
1511	0x04, 0x85, 0x0f, 0x1e, 0xaf, 0xe8, 0x53, 0x78, 0x1a, 0x31, 0x56, 0x2f, 0x7b, 0xe7, 0x7a, 0x4b,
1512	0xed, 0x9d, 0x77, 0xea, 0x0b, 0xc4, 0x7b, 0x90, 0xaf, 0x76, 0xbb, 0x9d, 0x5a, 0xa3, 0xda, 0x6b,
1513	0x74, 0xda, 0x7a, 0xa7, 0xdd, 0xa4, 0x1e, 0x8a, 0xb0, 0x5f, 0x57, 0xdf, 0x36, 0x6a, 0x2a, 0x47,
1514	0xf6, 0x3a, 0x6f, 0x54, 0xa1, 0x4b, 0xa1, 0xcf, 0xe0, 0xd9, 0x2c, 0xa2, 0xda, 0xae, 0xeb, 0x1f,
1515	0xd8, 0xe6, 0xd7, 0x8e, 0x30, 0x14, 0x97, 0x8f, 0x30, 0xf4, 0x0b, 0xf8, 0x62, 0xe6, 0x3b, 0xf4,
1516	0x8b, 0xcb, 0x93, 0x66, 0xa3, 0xa6, 0xbf, 0x51, 0xdf, 0xe9, 0x35, 0x55, 0xeb, 0x35, 0x4e, 0x1b,
1517	0x35, 0x9a, 0xa6, 0xd3, 0x8e, 0xd6, 0xaa, 0xf6, 0xf2, 0x0f, 0x90, 0x0c, 0x7b, 0x74, 0x3c, 0xcd,
1518	0x29, 0x2f, 0xd4, 0x56, 0x5e, 0x3a, 0xba, 0x81, 0x9d, 0x85, 0x26, 0x45, 0xcf, 0xe0, 0x93, 0x25,
1519	0xdc, 0x31, 0x5f, 0x06, 0x1e, 0x6a, 0xdd, 0x2a, 0xa3, 0x58, 0xa3, 0xe9, 0xa7, 0x1b, 0xe6, 0x80,
1520	0x91, 0xa2, 0x2c, 0xa4, 0xd5, 0xee, 0xf1, 0xf3, 0x17, 0x6c, 0x9b, 0x42, 0x08, 0x72, 0x7c, 0x1b,
1521	0x9b, 0xac, 0x9f, 0x5c, 0xc1, 0x81, 0xe9, 0x8e, 0x93, 0x86, 0xc6, 0x49, 0x4e, 0x8b, 0xfe, 0xdb,
1522	0xb9, 0xa0, 0xfd, 0x70, 0x21, 0x7d, 0xfb, 0x42, 0x98, 0x0d, 0xdc, 0x91, 0xe1, 0x0c, 0x2a, 0xae,
1523	0x3f, 0x50, 0x06, 0xd8, 0x61, 0xdd, 0xa2, 0x4c, 0x9f, 0x65, 0x73, 0x7f, 0x10, 0xbd, 0xb6, 0x5d,
1524	0xf2, 0x1f, 0x49, 0xea, 0x6f, 0x32, 0xab, 0x5f, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x33, 0xaa,
1525	0x23, 0xdb, 0x45, 0x12, 0x00, 0x00,
1526}
1527