# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: github_com/TheThingsNetwork/api/handler/handler.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
from google.protobuf import descriptor_pb2
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
from ttn.github_com.gogo.protobuf.gogoproto import gogo_pb2 as github__com_dot_gogo_dot_protobuf_dot_gogoproto_dot_gogo__pb2
from ttn.github_com.TheThingsNetwork.api import api_pb2 as github__com_dot_TheThingsNetwork_dot_api_dot_api__pb2
from ttn.github_com.TheThingsNetwork.api.broker import broker_pb2 as github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2
from ttn.github_com.TheThingsNetwork.api.protocol import protocol_pb2 as github__com_dot_TheThingsNetwork_dot_api_dot_protocol_dot_protocol__pb2
from ttn.github_com.TheThingsNetwork.api.protocol.lorawan import device_pb2 as github__com_dot_TheThingsNetwork_dot_api_dot_protocol_dot_lorawan_dot_device__pb2
from ttn.github_com.TheThingsNetwork.api.trace import trace_pb2 as github__com_dot_TheThingsNetwork_dot_api_dot_trace_dot_trace__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='github_com/TheThingsNetwork/api/handler/handler.proto',
  package='handler',
  syntax='proto3',
  serialized_pb=_b('\n5github_com/TheThingsNetwork/api/handler/handler.proto\x12\x07handler\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/api/annotations.proto\x1a-github_com/gogo/protobuf/gogoproto/gogo.proto\x1a)github_com/TheThingsNetwork/api/api.proto\x1a\x33github_com/TheThingsNetwork/api/broker/broker.proto\x1a\x37github_com/TheThingsNetwork/api/protocol/protocol.proto\x1a=github_com/TheThingsNetwork/api/protocol/lorawan/device.proto\x1a\x31github_com/TheThingsNetwork/api/trace/trace.proto\"\xe4\x01\n\x18\x44\x65viceActivationResponse\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\x12\"\n\x07message\x18\x02 \x01(\x0b\x32\x11.protocol.Message\x12\x35\n\x0f\x64ownlink_option\x18\x0b \x01(\x0b\x32\x16.broker.DownlinkOptionB\x04\xc8\xde\x1f\x00\x12?\n\x13\x61\x63tivation_metadata\x18\x17 \x01(\x0b\x32\x1c.protocol.ActivationMetadataB\x04\xc8\xde\x1f\x00\x12\x1b\n\x05trace\x18\x1f \x01(\x0b\x32\x0c.trace.Trace\"\x0f\n\rStatusRequest\"\xb9\x01\n\x06Status\x12&\n\x06system\x18\x01 \x01(\x0b\x32\x10.api.SystemStatsB\x04\xc8\xde\x1f\x00\x12,\n\tcomponent\x18\x02 \x01(\x0b\x32\x13.api.ComponentStatsB\x04\xc8\xde\x1f\x00\x12\x1a\n\x06uplink\x18\x0b \x01(\x0b\x32\n.api.Rates\x12\x1c\n\x08\x64ownlink\x18\x0c \x01(\x0b\x32\n.api.Rates\x12\x1f\n\x0b\x61\x63tivations\x18\r \x01(\x0b\x32\n.api.Rates\"2\n\x15\x41pplicationIdentifier\x12\x19\n\x06\x61pp_id\x18\x01 \x01(\tB\t\xe2\xde\x1f\x05\x41ppID\"\xad\x01\n\x0b\x41pplication\x12\x19\n\x06\x61pp_id\x18\x01 \x01(\tB\t\xe2\xde\x1f\x05\x41ppID\x12\x16\n\x0epayload_format\x18\x06 \x01(\t\x12\x0f\n\x07\x64\x65\x63oder\x18\x02 \x01(\t\x12\x11\n\tconverter\x18\x03 \x01(\t\x12\x11\n\tvalidator\x18\x04 \x01(\t\x12\x0f\n\x07\x65ncoder\x18\x05 \x01(\t\x12#\n\x1bregister_on_join_access_key\x18\x07 \x01(\t\"H\n\x10\x44\x65viceIdentifier\x12\x19\n\x06\x61pp_id\x18\x01 \x01(\tB\t\xe2\xde\x1f\x05\x41ppID\x12\x19\n\x06\x64\x65v_id\x18\x02 \x01(\tB\t\xe2\xde\x1f\x05\x44\x65vID\"\xba\x02\n\x06\x44\x65vice\x12\x19\n\x06\x61pp_id\x18\x01 \x01(\tB\t\xe2\xde\x1f\x05\x41ppID\x12\x19\n\x06\x64\x65v_id\x18\x02 \x01(\tB\t\xe2\xde\x1f\x05\x44\x65vID\x12<\n\x0elorawan_device\x18\x03 \x01(\x0b\x32\x0f.lorawan.DeviceB\x11\xe2\xde\x1f\rLoRaWANDeviceH\x00\x12\x10\n\x08latitude\x18\n \x01(\x02\x12\x11\n\tlongitude\x18\x0b \x01(\x02\x12\x10\n\x08\x61ltitude\x18\x0c \x01(\x05\x12\x33\n\nattributes\x18\r \x03(\x0b\x32\x1f.handler.Device.AttributesEntry\x12\x13\n\x0b\x64\x65scription\x18\x14 \x01(\t\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x08\n\x06\x64\x65vice\".\n\nDeviceList\x12 \n\x07\x64\x65vices\x18\x01 \x03(\x0b\x32\x0f.handler.Device\"l\n\x12\x44ryDownlinkMessage\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\x12\x0e\n\x06\x66ields\x18\x02 \x01(\t\x12\'\n\x03\x61pp\x18\x03 \x01(\x0b\x32\x14.handler.ApplicationB\x04\xc8\xde\x1f\x00\x12\x0c\n\x04port\x18\x04 \x01(\r\"Z\n\x10\x44ryUplinkMessage\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\x12\'\n\x03\x61pp\x18\x02 \x01(\x0b\x32\x14.handler.ApplicationB\x04\xc8\xde\x1f\x00\x12\x0c\n\x04port\x18\x03 \x01(\r\"m\n\x16SimulatedUplinkMessage\x12\x19\n\x06\x61pp_id\x18\x01 \x01(\tB\t\xe2\xde\x1f\x05\x41ppID\x12\x19\n\x06\x64\x65v_id\x18\x02 \x01(\tB\t\xe2\xde\x1f\x05\x44\x65vID\x12\x0f\n\x07payload\x18\x03 \x01(\x0c\x12\x0c\n\x04port\x18\x04 \x01(\r\",\n\x08LogEntry\x12\x10\n\x08\x66unction\x18\x01 \x01(\t\x12\x0e\n\x06\x66ields\x18\x02 \x03(\t\"b\n\x0f\x44ryUplinkResult\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\x12\x0e\n\x06\x66ields\x18\x02 \x01(\t\x12\r\n\x05valid\x18\x03 \x01(\x08\x12\x1f\n\x04logs\x18\x04 \x03(\x0b\x32\x11.handler.LogEntry\"E\n\x11\x44ryDownlinkResult\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\x12\x1f\n\x04logs\x18\x02 \x03(\x0b\x32\x11.handler.LogEntry2\xc5\x01\n\x07Handler\x12^\n\x13\x41\x63tivationChallenge\x12\".broker.ActivationChallengeRequest\x1a#.broker.ActivationChallengeResponse\x12Z\n\x08\x41\x63tivate\x12+.broker.DeduplicatedDeviceActivationRequest\x1a!.handler.DeviceActivationResponse2\xe3\t\n\x12\x41pplicationManager\x12g\n\x13RegisterApplication\x12\x1e.handler.ApplicationIdentifier\x1a\x16.google.protobuf.Empty\"\x18\x82\xd3\xe4\x93\x02\x12\"\r/applications:\x01*\x12\x66\n\x0eGetApplication\x12\x1e.handler.ApplicationIdentifier\x1a\x14.handler.Application\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/applications/{app_id}\x12~\n\x0eSetApplication\x12\x14.handler.Application\x1a\x16.google.protobuf.Empty\">\x82\xd3\xe4\x93\x02\x38\"\x16/applications/{app_id}:\x01*Z\x1b\x1a\x16/applications/{app_id}:\x01*\x12k\n\x11\x44\x65leteApplication\x12\x1e.handler.ApplicationIdentifier\x1a\x16.google.protobuf.Empty\"\x1e\x82\xd3\xe4\x93\x02\x18*\x16/applications/{app_id}\x12h\n\tGetDevice\x12\x19.handler.DeviceIdentifier\x1a\x0f.handler.Device\"/\x82\xd3\xe4\x93\x02)\x12\'/applications/{app_id}/devices/{dev_id}\x12\xe2\x01\n\tSetDevice\x12\x0f.handler.Device\x1a\x16.google.protobuf.Empty\"\xab\x01\x82\xd3\xe4\x93\x02\xa4\x01\"\'/applications/{app_id}/devices/{dev_id}:\x01*Z,\x1a\'/applications/{app_id}/devices/{dev_id}:\x01*Z#\"\x1e/applications/{app_id}/devices:\x01*Z#\x1a\x1e/applications/{app_id}/devices:\x01*\x12r\n\x0c\x44\x65leteDevice\x12\x19.handler.DeviceIdentifier\x1a\x16.google.protobuf.Empty\"/\x82\xd3\xe4\x93\x02)*\'/applications/{app_id}/devices/{dev_id}\x12w\n\x18GetDevicesForApplication\x12\x1e.handler.ApplicationIdentifier\x1a\x13.handler.DeviceList\"&\x82\xd3\xe4\x93\x02 \x12\x1e/applications/{app_id}/devices\x12\x46\n\x0b\x44ryDownlink\x12\x1b.handler.DryDownlinkMessage\x1a\x1a.handler.DryDownlinkResult\x12@\n\tDryUplink\x12\x19.handler.DryUplinkMessage\x1a\x18.handler.DryUplinkResult\x12I\n\x0eSimulateUplink\x12\x1f.handler.SimulatedUplinkMessage\x1a\x16.google.protobuf.Empty2F\n\x0eHandlerManager\x12\x34\n\tGetStatus\x12\x16.handler.StatusRequest\x1a\x0f.handler.StatusBz\n org.thethingsnetwork.api.handlerB\x0cHandlerProtoP\x01Z\'github_com/TheThingsNetwork/api/handler\xaa\x02\x1cTheThingsNetwork.API.Handlerb\x06proto3')
  ,
  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_api_dot_annotations__pb2.DESCRIPTOR,github__com_dot_gogo_dot_protobuf_dot_gogoproto_dot_gogo__pb2.DESCRIPTOR,github__com_dot_TheThingsNetwork_dot_api_dot_api__pb2.DESCRIPTOR,github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.DESCRIPTOR,github__com_dot_TheThingsNetwork_dot_api_dot_protocol_dot_protocol__pb2.DESCRIPTOR,github__com_dot_TheThingsNetwork_dot_api_dot_protocol_dot_lorawan_dot_device__pb2.DESCRIPTOR,github__com_dot_TheThingsNetwork_dot_api_dot_trace_dot_trace__pb2.DESCRIPTOR,])




_DEVICEACTIVATIONRESPONSE = _descriptor.Descriptor(
  name='DeviceActivationResponse',
  full_name='handler.DeviceActivationResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='payload', full_name='handler.DeviceActivationResponse.payload', index=0,
      number=1, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='message', full_name='handler.DeviceActivationResponse.message', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='downlink_option', full_name='handler.DeviceActivationResponse.downlink_option', index=2,
      number=11, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))),
    _descriptor.FieldDescriptor(
      name='activation_metadata', full_name='handler.DeviceActivationResponse.activation_metadata', index=3,
      number=23, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))),
    _descriptor.FieldDescriptor(
      name='trace', full_name='handler.DeviceActivationResponse.trace', index=4,
      number=31, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=440,
  serialized_end=668,
)


_STATUSREQUEST = _descriptor.Descriptor(
  name='StatusRequest',
  full_name='handler.StatusRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=670,
  serialized_end=685,
)


_STATUS = _descriptor.Descriptor(
  name='Status',
  full_name='handler.Status',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='system', full_name='handler.Status.system', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))),
    _descriptor.FieldDescriptor(
      name='component', full_name='handler.Status.component', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))),
    _descriptor.FieldDescriptor(
      name='uplink', full_name='handler.Status.uplink', index=2,
      number=11, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='downlink', full_name='handler.Status.downlink', index=3,
      number=12, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='activations', full_name='handler.Status.activations', index=4,
      number=13, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=688,
  serialized_end=873,
)


_APPLICATIONIDENTIFIER = _descriptor.Descriptor(
  name='ApplicationIdentifier',
  full_name='handler.ApplicationIdentifier',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='app_id', full_name='handler.ApplicationIdentifier.app_id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005AppID'))),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=875,
  serialized_end=925,
)


_APPLICATION = _descriptor.Descriptor(
  name='Application',
  full_name='handler.Application',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='app_id', full_name='handler.Application.app_id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005AppID'))),
    _descriptor.FieldDescriptor(
      name='payload_format', full_name='handler.Application.payload_format', index=1,
      number=6, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='decoder', full_name='handler.Application.decoder', index=2,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='converter', full_name='handler.Application.converter', index=3,
      number=3, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='validator', full_name='handler.Application.validator', index=4,
      number=4, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='encoder', full_name='handler.Application.encoder', index=5,
      number=5, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='register_on_join_access_key', full_name='handler.Application.register_on_join_access_key', index=6,
      number=7, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=928,
  serialized_end=1101,
)


_DEVICEIDENTIFIER = _descriptor.Descriptor(
  name='DeviceIdentifier',
  full_name='handler.DeviceIdentifier',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='app_id', full_name='handler.DeviceIdentifier.app_id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005AppID'))),
    _descriptor.FieldDescriptor(
      name='dev_id', full_name='handler.DeviceIdentifier.dev_id', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005DevID'))),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1103,
  serialized_end=1175,
)


_DEVICE_ATTRIBUTESENTRY = _descriptor.Descriptor(
  name='AttributesEntry',
  full_name='handler.Device.AttributesEntry',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='key', full_name='handler.Device.AttributesEntry.key', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='value', full_name='handler.Device.AttributesEntry.value', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1433,
  serialized_end=1482,
)

_DEVICE = _descriptor.Descriptor(
  name='Device',
  full_name='handler.Device',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='app_id', full_name='handler.Device.app_id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005AppID'))),
    _descriptor.FieldDescriptor(
      name='dev_id', full_name='handler.Device.dev_id', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005DevID'))),
    _descriptor.FieldDescriptor(
      name='lorawan_device', full_name='handler.Device.lorawan_device', index=2,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\rLoRaWANDevice'))),
    _descriptor.FieldDescriptor(
      name='latitude', full_name='handler.Device.latitude', index=3,
      number=10, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='longitude', full_name='handler.Device.longitude', index=4,
      number=11, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='altitude', full_name='handler.Device.altitude', index=5,
      number=12, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='attributes', full_name='handler.Device.attributes', index=6,
      number=13, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='description', full_name='handler.Device.description', index=7,
      number=20, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[_DEVICE_ATTRIBUTESENTRY, ],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='device', full_name='handler.Device.device',
      index=0, containing_type=None, fields=[]),
  ],
  serialized_start=1178,
  serialized_end=1492,
)


_DEVICELIST = _descriptor.Descriptor(
  name='DeviceList',
  full_name='handler.DeviceList',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='devices', full_name='handler.DeviceList.devices', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1494,
  serialized_end=1540,
)


_DRYDOWNLINKMESSAGE = _descriptor.Descriptor(
  name='DryDownlinkMessage',
  full_name='handler.DryDownlinkMessage',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='payload', full_name='handler.DryDownlinkMessage.payload', index=0,
      number=1, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='fields', full_name='handler.DryDownlinkMessage.fields', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='app', full_name='handler.DryDownlinkMessage.app', index=2,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))),
    _descriptor.FieldDescriptor(
      name='port', full_name='handler.DryDownlinkMessage.port', index=3,
      number=4, type=13, cpp_type=3, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1542,
  serialized_end=1650,
)


_DRYUPLINKMESSAGE = _descriptor.Descriptor(
  name='DryUplinkMessage',
  full_name='handler.DryUplinkMessage',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='payload', full_name='handler.DryUplinkMessage.payload', index=0,
      number=1, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='app', full_name='handler.DryUplinkMessage.app', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))),
    _descriptor.FieldDescriptor(
      name='port', full_name='handler.DryUplinkMessage.port', index=2,
      number=3, type=13, cpp_type=3, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1652,
  serialized_end=1742,
)


_SIMULATEDUPLINKMESSAGE = _descriptor.Descriptor(
  name='SimulatedUplinkMessage',
  full_name='handler.SimulatedUplinkMessage',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='app_id', full_name='handler.SimulatedUplinkMessage.app_id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005AppID'))),
    _descriptor.FieldDescriptor(
      name='dev_id', full_name='handler.SimulatedUplinkMessage.dev_id', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005DevID'))),
    _descriptor.FieldDescriptor(
      name='payload', full_name='handler.SimulatedUplinkMessage.payload', index=2,
      number=3, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='port', full_name='handler.SimulatedUplinkMessage.port', index=3,
      number=4, type=13, cpp_type=3, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1744,
  serialized_end=1853,
)


_LOGENTRY = _descriptor.Descriptor(
  name='LogEntry',
  full_name='handler.LogEntry',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='function', full_name='handler.LogEntry.function', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='fields', full_name='handler.LogEntry.fields', index=1,
      number=2, type=9, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1855,
  serialized_end=1899,
)


_DRYUPLINKRESULT = _descriptor.Descriptor(
  name='DryUplinkResult',
  full_name='handler.DryUplinkResult',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='payload', full_name='handler.DryUplinkResult.payload', index=0,
      number=1, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='fields', full_name='handler.DryUplinkResult.fields', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='valid', full_name='handler.DryUplinkResult.valid', index=2,
      number=3, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='logs', full_name='handler.DryUplinkResult.logs', index=3,
      number=4, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1901,
  serialized_end=1999,
)


_DRYDOWNLINKRESULT = _descriptor.Descriptor(
  name='DryDownlinkResult',
  full_name='handler.DryDownlinkResult',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='payload', full_name='handler.DryDownlinkResult.payload', index=0,
      number=1, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='logs', full_name='handler.DryDownlinkResult.logs', index=1,
      number=2, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=2001,
  serialized_end=2070,
)

_DEVICEACTIVATIONRESPONSE.fields_by_name['message'].message_type = github__com_dot_TheThingsNetwork_dot_api_dot_protocol_dot_protocol__pb2._MESSAGE
_DEVICEACTIVATIONRESPONSE.fields_by_name['downlink_option'].message_type = github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2._DOWNLINKOPTION
_DEVICEACTIVATIONRESPONSE.fields_by_name['activation_metadata'].message_type = github__com_dot_TheThingsNetwork_dot_api_dot_protocol_dot_protocol__pb2._ACTIVATIONMETADATA
_DEVICEACTIVATIONRESPONSE.fields_by_name['trace'].message_type = github__com_dot_TheThingsNetwork_dot_api_dot_trace_dot_trace__pb2._TRACE
_STATUS.fields_by_name['system'].message_type = github__com_dot_TheThingsNetwork_dot_api_dot_api__pb2._SYSTEMSTATS
_STATUS.fields_by_name['component'].message_type = github__com_dot_TheThingsNetwork_dot_api_dot_api__pb2._COMPONENTSTATS
_STATUS.fields_by_name['uplink'].message_type = github__com_dot_TheThingsNetwork_dot_api_dot_api__pb2._RATES
_STATUS.fields_by_name['downlink'].message_type = github__com_dot_TheThingsNetwork_dot_api_dot_api__pb2._RATES
_STATUS.fields_by_name['activations'].message_type = github__com_dot_TheThingsNetwork_dot_api_dot_api__pb2._RATES
_DEVICE_ATTRIBUTESENTRY.containing_type = _DEVICE
_DEVICE.fields_by_name['lorawan_device'].message_type = github__com_dot_TheThingsNetwork_dot_api_dot_protocol_dot_lorawan_dot_device__pb2._DEVICE
_DEVICE.fields_by_name['attributes'].message_type = _DEVICE_ATTRIBUTESENTRY
_DEVICE.oneofs_by_name['device'].fields.append(
  _DEVICE.fields_by_name['lorawan_device'])
_DEVICE.fields_by_name['lorawan_device'].containing_oneof = _DEVICE.oneofs_by_name['device']
_DEVICELIST.fields_by_name['devices'].message_type = _DEVICE
_DRYDOWNLINKMESSAGE.fields_by_name['app'].message_type = _APPLICATION
_DRYUPLINKMESSAGE.fields_by_name['app'].message_type = _APPLICATION
_DRYUPLINKRESULT.fields_by_name['logs'].message_type = _LOGENTRY
_DRYDOWNLINKRESULT.fields_by_name['logs'].message_type = _LOGENTRY
DESCRIPTOR.message_types_by_name['DeviceActivationResponse'] = _DEVICEACTIVATIONRESPONSE
DESCRIPTOR.message_types_by_name['StatusRequest'] = _STATUSREQUEST
DESCRIPTOR.message_types_by_name['Status'] = _STATUS
DESCRIPTOR.message_types_by_name['ApplicationIdentifier'] = _APPLICATIONIDENTIFIER
DESCRIPTOR.message_types_by_name['Application'] = _APPLICATION
DESCRIPTOR.message_types_by_name['DeviceIdentifier'] = _DEVICEIDENTIFIER
DESCRIPTOR.message_types_by_name['Device'] = _DEVICE
DESCRIPTOR.message_types_by_name['DeviceList'] = _DEVICELIST
DESCRIPTOR.message_types_by_name['DryDownlinkMessage'] = _DRYDOWNLINKMESSAGE
DESCRIPTOR.message_types_by_name['DryUplinkMessage'] = _DRYUPLINKMESSAGE
DESCRIPTOR.message_types_by_name['SimulatedUplinkMessage'] = _SIMULATEDUPLINKMESSAGE
DESCRIPTOR.message_types_by_name['LogEntry'] = _LOGENTRY
DESCRIPTOR.message_types_by_name['DryUplinkResult'] = _DRYUPLINKRESULT
DESCRIPTOR.message_types_by_name['DryDownlinkResult'] = _DRYDOWNLINKRESULT
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

DeviceActivationResponse = _reflection.GeneratedProtocolMessageType('DeviceActivationResponse', (_message.Message,), dict(
  DESCRIPTOR = _DEVICEACTIVATIONRESPONSE,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.DeviceActivationResponse)
  ))
_sym_db.RegisterMessage(DeviceActivationResponse)

StatusRequest = _reflection.GeneratedProtocolMessageType('StatusRequest', (_message.Message,), dict(
  DESCRIPTOR = _STATUSREQUEST,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.StatusRequest)
  ))
_sym_db.RegisterMessage(StatusRequest)

Status = _reflection.GeneratedProtocolMessageType('Status', (_message.Message,), dict(
  DESCRIPTOR = _STATUS,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.Status)
  ))
_sym_db.RegisterMessage(Status)

ApplicationIdentifier = _reflection.GeneratedProtocolMessageType('ApplicationIdentifier', (_message.Message,), dict(
  DESCRIPTOR = _APPLICATIONIDENTIFIER,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.ApplicationIdentifier)
  ))
_sym_db.RegisterMessage(ApplicationIdentifier)

Application = _reflection.GeneratedProtocolMessageType('Application', (_message.Message,), dict(
  DESCRIPTOR = _APPLICATION,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.Application)
  ))
_sym_db.RegisterMessage(Application)

DeviceIdentifier = _reflection.GeneratedProtocolMessageType('DeviceIdentifier', (_message.Message,), dict(
  DESCRIPTOR = _DEVICEIDENTIFIER,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.DeviceIdentifier)
  ))
_sym_db.RegisterMessage(DeviceIdentifier)

Device = _reflection.GeneratedProtocolMessageType('Device', (_message.Message,), dict(

  AttributesEntry = _reflection.GeneratedProtocolMessageType('AttributesEntry', (_message.Message,), dict(
    DESCRIPTOR = _DEVICE_ATTRIBUTESENTRY,
    __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
    # @@protoc_insertion_point(class_scope:handler.Device.AttributesEntry)
    ))
  ,
  DESCRIPTOR = _DEVICE,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.Device)
  ))
_sym_db.RegisterMessage(Device)
_sym_db.RegisterMessage(Device.AttributesEntry)

DeviceList = _reflection.GeneratedProtocolMessageType('DeviceList', (_message.Message,), dict(
  DESCRIPTOR = _DEVICELIST,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.DeviceList)
  ))
_sym_db.RegisterMessage(DeviceList)

DryDownlinkMessage = _reflection.GeneratedProtocolMessageType('DryDownlinkMessage', (_message.Message,), dict(
  DESCRIPTOR = _DRYDOWNLINKMESSAGE,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.DryDownlinkMessage)
  ))
_sym_db.RegisterMessage(DryDownlinkMessage)

DryUplinkMessage = _reflection.GeneratedProtocolMessageType('DryUplinkMessage', (_message.Message,), dict(
  DESCRIPTOR = _DRYUPLINKMESSAGE,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.DryUplinkMessage)
  ))
_sym_db.RegisterMessage(DryUplinkMessage)

SimulatedUplinkMessage = _reflection.GeneratedProtocolMessageType('SimulatedUplinkMessage', (_message.Message,), dict(
  DESCRIPTOR = _SIMULATEDUPLINKMESSAGE,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.SimulatedUplinkMessage)
  ))
_sym_db.RegisterMessage(SimulatedUplinkMessage)

LogEntry = _reflection.GeneratedProtocolMessageType('LogEntry', (_message.Message,), dict(
  DESCRIPTOR = _LOGENTRY,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.LogEntry)
  ))
_sym_db.RegisterMessage(LogEntry)

DryUplinkResult = _reflection.GeneratedProtocolMessageType('DryUplinkResult', (_message.Message,), dict(
  DESCRIPTOR = _DRYUPLINKRESULT,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.DryUplinkResult)
  ))
_sym_db.RegisterMessage(DryUplinkResult)

DryDownlinkResult = _reflection.GeneratedProtocolMessageType('DryDownlinkResult', (_message.Message,), dict(
  DESCRIPTOR = _DRYDOWNLINKRESULT,
  __module__ = 'github_com.TheThingsNetwork.api.handler.handler_pb2'
  # @@protoc_insertion_point(class_scope:handler.DryDownlinkResult)
  ))
_sym_db.RegisterMessage(DryDownlinkResult)


DESCRIPTOR.has_options = True
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n org.thethingsnetwork.api.handlerB\014HandlerProtoP\001Z\'github_com/TheThingsNetwork/api/handler\252\002\034TheThingsNetwork.API.Handler'))
_DEVICEACTIVATIONRESPONSE.fields_by_name['downlink_option'].has_options = True
_DEVICEACTIVATIONRESPONSE.fields_by_name['downlink_option']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))
_DEVICEACTIVATIONRESPONSE.fields_by_name['activation_metadata'].has_options = True
_DEVICEACTIVATIONRESPONSE.fields_by_name['activation_metadata']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))
_STATUS.fields_by_name['system'].has_options = True
_STATUS.fields_by_name['system']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))
_STATUS.fields_by_name['component'].has_options = True
_STATUS.fields_by_name['component']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))
_APPLICATIONIDENTIFIER.fields_by_name['app_id'].has_options = True
_APPLICATIONIDENTIFIER.fields_by_name['app_id']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005AppID'))
_APPLICATION.fields_by_name['app_id'].has_options = True
_APPLICATION.fields_by_name['app_id']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005AppID'))
_DEVICEIDENTIFIER.fields_by_name['app_id'].has_options = True
_DEVICEIDENTIFIER.fields_by_name['app_id']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005AppID'))
_DEVICEIDENTIFIER.fields_by_name['dev_id'].has_options = True
_DEVICEIDENTIFIER.fields_by_name['dev_id']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005DevID'))
_DEVICE_ATTRIBUTESENTRY.has_options = True
_DEVICE_ATTRIBUTESENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
_DEVICE.fields_by_name['app_id'].has_options = True
_DEVICE.fields_by_name['app_id']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005AppID'))
_DEVICE.fields_by_name['dev_id'].has_options = True
_DEVICE.fields_by_name['dev_id']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005DevID'))
_DEVICE.fields_by_name['lorawan_device'].has_options = True
_DEVICE.fields_by_name['lorawan_device']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\rLoRaWANDevice'))
_DRYDOWNLINKMESSAGE.fields_by_name['app'].has_options = True
_DRYDOWNLINKMESSAGE.fields_by_name['app']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))
_DRYUPLINKMESSAGE.fields_by_name['app'].has_options = True
_DRYUPLINKMESSAGE.fields_by_name['app']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\310\336\037\000'))
_SIMULATEDUPLINKMESSAGE.fields_by_name['app_id'].has_options = True
_SIMULATEDUPLINKMESSAGE.fields_by_name['app_id']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005AppID'))
_SIMULATEDUPLINKMESSAGE.fields_by_name['dev_id'].has_options = True
_SIMULATEDUPLINKMESSAGE.fields_by_name['dev_id']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\336\037\005DevID'))

_HANDLER = _descriptor.ServiceDescriptor(
  name='Handler',
  full_name='handler.Handler',
  file=DESCRIPTOR,
  index=0,
  options=None,
  serialized_start=2073,
  serialized_end=2270,
  methods=[
  _descriptor.MethodDescriptor(
    name='ActivationChallenge',
    full_name='handler.Handler.ActivationChallenge',
    index=0,
    containing_service=None,
    input_type=github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2._ACTIVATIONCHALLENGEREQUEST,
    output_type=github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2._ACTIVATIONCHALLENGERESPONSE,
    options=None,
  ),
  _descriptor.MethodDescriptor(
    name='Activate',
    full_name='handler.Handler.Activate',
    index=1,
    containing_service=None,
    input_type=github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2._DEDUPLICATEDDEVICEACTIVATIONREQUEST,
    output_type=_DEVICEACTIVATIONRESPONSE,
    options=None,
  ),
])
_sym_db.RegisterServiceDescriptor(_HANDLER)

DESCRIPTOR.services_by_name['Handler'] = _HANDLER


_APPLICATIONMANAGER = _descriptor.ServiceDescriptor(
  name='ApplicationManager',
  full_name='handler.ApplicationManager',
  file=DESCRIPTOR,
  index=1,
  options=None,
  serialized_start=2273,
  serialized_end=3524,
  methods=[
  _descriptor.MethodDescriptor(
    name='RegisterApplication',
    full_name='handler.ApplicationManager.RegisterApplication',
    index=0,
    containing_service=None,
    input_type=_APPLICATIONIDENTIFIER,
    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
    options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002\022\"\r/applications:\001*')),
  ),
  _descriptor.MethodDescriptor(
    name='GetApplication',
    full_name='handler.ApplicationManager.GetApplication',
    index=1,
    containing_service=None,
    input_type=_APPLICATIONIDENTIFIER,
    output_type=_APPLICATION,
    options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002\030\022\026/applications/{app_id}')),
  ),
  _descriptor.MethodDescriptor(
    name='SetApplication',
    full_name='handler.ApplicationManager.SetApplication',
    index=2,
    containing_service=None,
    input_type=_APPLICATION,
    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
    options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\0028\"\026/applications/{app_id}:\001*Z\033\032\026/applications/{app_id}:\001*')),
  ),
  _descriptor.MethodDescriptor(
    name='DeleteApplication',
    full_name='handler.ApplicationManager.DeleteApplication',
    index=3,
    containing_service=None,
    input_type=_APPLICATIONIDENTIFIER,
    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
    options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002\030*\026/applications/{app_id}')),
  ),
  _descriptor.MethodDescriptor(
    name='GetDevice',
    full_name='handler.ApplicationManager.GetDevice',
    index=4,
    containing_service=None,
    input_type=_DEVICEIDENTIFIER,
    output_type=_DEVICE,
    options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002)\022\'/applications/{app_id}/devices/{dev_id}')),
  ),
  _descriptor.MethodDescriptor(
    name='SetDevice',
    full_name='handler.ApplicationManager.SetDevice',
    index=5,
    containing_service=None,
    input_type=_DEVICE,
    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
    options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002\244\001\"\'/applications/{app_id}/devices/{dev_id}:\001*Z,\032\'/applications/{app_id}/devices/{dev_id}:\001*Z#\"\036/applications/{app_id}/devices:\001*Z#\032\036/applications/{app_id}/devices:\001*')),
  ),
  _descriptor.MethodDescriptor(
    name='DeleteDevice',
    full_name='handler.ApplicationManager.DeleteDevice',
    index=6,
    containing_service=None,
    input_type=_DEVICEIDENTIFIER,
    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
    options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002)*\'/applications/{app_id}/devices/{dev_id}')),
  ),
  _descriptor.MethodDescriptor(
    name='GetDevicesForApplication',
    full_name='handler.ApplicationManager.GetDevicesForApplication',
    index=7,
    containing_service=None,
    input_type=_APPLICATIONIDENTIFIER,
    output_type=_DEVICELIST,
    options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002 \022\036/applications/{app_id}/devices')),
  ),
  _descriptor.MethodDescriptor(
    name='DryDownlink',
    full_name='handler.ApplicationManager.DryDownlink',
    index=8,
    containing_service=None,
    input_type=_DRYDOWNLINKMESSAGE,
    output_type=_DRYDOWNLINKRESULT,
    options=None,
  ),
  _descriptor.MethodDescriptor(
    name='DryUplink',
    full_name='handler.ApplicationManager.DryUplink',
    index=9,
    containing_service=None,
    input_type=_DRYUPLINKMESSAGE,
    output_type=_DRYUPLINKRESULT,
    options=None,
  ),
  _descriptor.MethodDescriptor(
    name='SimulateUplink',
    full_name='handler.ApplicationManager.SimulateUplink',
    index=10,
    containing_service=None,
    input_type=_SIMULATEDUPLINKMESSAGE,
    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
    options=None,
  ),
])
_sym_db.RegisterServiceDescriptor(_APPLICATIONMANAGER)

DESCRIPTOR.services_by_name['ApplicationManager'] = _APPLICATIONMANAGER


_HANDLERMANAGER = _descriptor.ServiceDescriptor(
  name='HandlerManager',
  full_name='handler.HandlerManager',
  file=DESCRIPTOR,
  index=2,
  options=None,
  serialized_start=3526,
  serialized_end=3596,
  methods=[
  _descriptor.MethodDescriptor(
    name='GetStatus',
    full_name='handler.HandlerManager.GetStatus',
    index=0,
    containing_service=None,
    input_type=_STATUSREQUEST,
    output_type=_STATUS,
    options=None,
  ),
])
_sym_db.RegisterServiceDescriptor(_HANDLERMANAGER)

DESCRIPTOR.services_by_name['HandlerManager'] = _HANDLERMANAGER

try:
  # THESE ELEMENTS WILL BE DEPRECATED.
  # Please use the generated *_pb2_grpc.py files instead.
  import grpc
  from grpc.beta import implementations as beta_implementations
  from grpc.beta import interfaces as beta_interfaces
  from grpc.framework.common import cardinality
  from grpc.framework.interfaces.face import utilities as face_utilities


  class HandlerStub(object):
    """The Handler service provides pure network functionality
    """

    def __init__(self, channel):
      """Constructor.

      Args:
        channel: A grpc.Channel.
      """
      self.ActivationChallenge = channel.unary_unary(
          '/handler.Handler/ActivationChallenge',
          request_serializer=github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.ActivationChallengeRequest.SerializeToString,
          response_deserializer=github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.ActivationChallengeResponse.FromString,
          )
      self.Activate = channel.unary_unary(
          '/handler.Handler/Activate',
          request_serializer=github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.DeduplicatedDeviceActivationRequest.SerializeToString,
          response_deserializer=DeviceActivationResponse.FromString,
          )


  class HandlerServicer(object):
    """The Handler service provides pure network functionality
    """

    def ActivationChallenge(self, request, context):
      # missing associated documentation comment in .proto file
      pass
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def Activate(self, request, context):
      # missing associated documentation comment in .proto file
      pass
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')


  def add_HandlerServicer_to_server(servicer, server):
    rpc_method_handlers = {
        'ActivationChallenge': grpc.unary_unary_rpc_method_handler(
            servicer.ActivationChallenge,
            request_deserializer=github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.ActivationChallengeRequest.FromString,
            response_serializer=github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.ActivationChallengeResponse.SerializeToString,
        ),
        'Activate': grpc.unary_unary_rpc_method_handler(
            servicer.Activate,
            request_deserializer=github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.DeduplicatedDeviceActivationRequest.FromString,
            response_serializer=DeviceActivationResponse.SerializeToString,
        ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
        'handler.Handler', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


  class ApplicationManagerStub(object):
    """ApplicationManager manages application and device registrations on the Handler

    To protect our quality of service, you can make up to 5000 calls to the
    ApplicationManager API per hour. Once you go over the rate limit, you will
    receive an error response.
    """

    def __init__(self, channel):
      """Constructor.

      Args:
        channel: A grpc.Channel.
      """
      self.RegisterApplication = channel.unary_unary(
          '/handler.ApplicationManager/RegisterApplication',
          request_serializer=ApplicationIdentifier.SerializeToString,
          response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
          )
      self.GetApplication = channel.unary_unary(
          '/handler.ApplicationManager/GetApplication',
          request_serializer=ApplicationIdentifier.SerializeToString,
          response_deserializer=Application.FromString,
          )
      self.SetApplication = channel.unary_unary(
          '/handler.ApplicationManager/SetApplication',
          request_serializer=Application.SerializeToString,
          response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
          )
      self.DeleteApplication = channel.unary_unary(
          '/handler.ApplicationManager/DeleteApplication',
          request_serializer=ApplicationIdentifier.SerializeToString,
          response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
          )
      self.GetDevice = channel.unary_unary(
          '/handler.ApplicationManager/GetDevice',
          request_serializer=DeviceIdentifier.SerializeToString,
          response_deserializer=Device.FromString,
          )
      self.SetDevice = channel.unary_unary(
          '/handler.ApplicationManager/SetDevice',
          request_serializer=Device.SerializeToString,
          response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
          )
      self.DeleteDevice = channel.unary_unary(
          '/handler.ApplicationManager/DeleteDevice',
          request_serializer=DeviceIdentifier.SerializeToString,
          response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
          )
      self.GetDevicesForApplication = channel.unary_unary(
          '/handler.ApplicationManager/GetDevicesForApplication',
          request_serializer=ApplicationIdentifier.SerializeToString,
          response_deserializer=DeviceList.FromString,
          )
      self.DryDownlink = channel.unary_unary(
          '/handler.ApplicationManager/DryDownlink',
          request_serializer=DryDownlinkMessage.SerializeToString,
          response_deserializer=DryDownlinkResult.FromString,
          )
      self.DryUplink = channel.unary_unary(
          '/handler.ApplicationManager/DryUplink',
          request_serializer=DryUplinkMessage.SerializeToString,
          response_deserializer=DryUplinkResult.FromString,
          )
      self.SimulateUplink = channel.unary_unary(
          '/handler.ApplicationManager/SimulateUplink',
          request_serializer=SimulatedUplinkMessage.SerializeToString,
          response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
          )


  class ApplicationManagerServicer(object):
    """ApplicationManager manages application and device registrations on the Handler

    To protect our quality of service, you can make up to 5000 calls to the
    ApplicationManager API per hour. Once you go over the rate limit, you will
    receive an error response.
    """

    def RegisterApplication(self, request, context):
      """Applications should first be registered to the Handler with the `RegisterApplication` method
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def GetApplication(self, request, context):
      """GetApplication returns the application with the given identifier (app_id)
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def SetApplication(self, request, context):
      """SetApplication updates the settings for the application. All fields must be supplied.
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def DeleteApplication(self, request, context):
      """DeleteApplication deletes the application with the given identifier (app_id)
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def GetDevice(self, request, context):
      """GetDevice returns the device with the given identifier (app_id and dev_id)
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def SetDevice(self, request, context):
      """SetDevice creates or updates a device. All fields must be supplied.
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def DeleteDevice(self, request, context):
      """DeleteDevice deletes the device with the given identifier (app_id and dev_id)
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def GetDevicesForApplication(self, request, context):
      """GetDevicesForApplication returns all devices that belong to the application with the given identifier (app_id)
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def DryDownlink(self, request, context):
      """DryUplink simulates processing a downlink message and returns the result
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def DryUplink(self, request, context):
      """DryUplink simulates processing an uplink message and returns the result
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def SimulateUplink(self, request, context):
      """SimulateUplink simulates an uplink message
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')


  def add_ApplicationManagerServicer_to_server(servicer, server):
    rpc_method_handlers = {
        'RegisterApplication': grpc.unary_unary_rpc_method_handler(
            servicer.RegisterApplication,
            request_deserializer=ApplicationIdentifier.FromString,
            response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
        ),
        'GetApplication': grpc.unary_unary_rpc_method_handler(
            servicer.GetApplication,
            request_deserializer=ApplicationIdentifier.FromString,
            response_serializer=Application.SerializeToString,
        ),
        'SetApplication': grpc.unary_unary_rpc_method_handler(
            servicer.SetApplication,
            request_deserializer=Application.FromString,
            response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
        ),
        'DeleteApplication': grpc.unary_unary_rpc_method_handler(
            servicer.DeleteApplication,
            request_deserializer=ApplicationIdentifier.FromString,
            response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
        ),
        'GetDevice': grpc.unary_unary_rpc_method_handler(
            servicer.GetDevice,
            request_deserializer=DeviceIdentifier.FromString,
            response_serializer=Device.SerializeToString,
        ),
        'SetDevice': grpc.unary_unary_rpc_method_handler(
            servicer.SetDevice,
            request_deserializer=Device.FromString,
            response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
        ),
        'DeleteDevice': grpc.unary_unary_rpc_method_handler(
            servicer.DeleteDevice,
            request_deserializer=DeviceIdentifier.FromString,
            response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
        ),
        'GetDevicesForApplication': grpc.unary_unary_rpc_method_handler(
            servicer.GetDevicesForApplication,
            request_deserializer=ApplicationIdentifier.FromString,
            response_serializer=DeviceList.SerializeToString,
        ),
        'DryDownlink': grpc.unary_unary_rpc_method_handler(
            servicer.DryDownlink,
            request_deserializer=DryDownlinkMessage.FromString,
            response_serializer=DryDownlinkResult.SerializeToString,
        ),
        'DryUplink': grpc.unary_unary_rpc_method_handler(
            servicer.DryUplink,
            request_deserializer=DryUplinkMessage.FromString,
            response_serializer=DryUplinkResult.SerializeToString,
        ),
        'SimulateUplink': grpc.unary_unary_rpc_method_handler(
            servicer.SimulateUplink,
            request_deserializer=SimulatedUplinkMessage.FromString,
            response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
        ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
        'handler.ApplicationManager', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


  class HandlerManagerStub(object):
    """The HandlerManager service provides configuration and monitoring
    functionality
    """

    def __init__(self, channel):
      """Constructor.

      Args:
        channel: A grpc.Channel.
      """
      self.GetStatus = channel.unary_unary(
          '/handler.HandlerManager/GetStatus',
          request_serializer=StatusRequest.SerializeToString,
          response_deserializer=Status.FromString,
          )


  class HandlerManagerServicer(object):
    """The HandlerManager service provides configuration and monitoring
    functionality
    """

    def GetStatus(self, request, context):
      # missing associated documentation comment in .proto file
      pass
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')


  def add_HandlerManagerServicer_to_server(servicer, server):
    rpc_method_handlers = {
        'GetStatus': grpc.unary_unary_rpc_method_handler(
            servicer.GetStatus,
            request_deserializer=StatusRequest.FromString,
            response_serializer=Status.SerializeToString,
        ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
        'handler.HandlerManager', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


  class BetaHandlerServicer(object):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This class was generated
    only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0."""
    """The Handler service provides pure network functionality
    """
    def ActivationChallenge(self, request, context):
      # missing associated documentation comment in .proto file
      pass
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def Activate(self, request, context):
      # missing associated documentation comment in .proto file
      pass
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)


  class BetaHandlerStub(object):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This class was generated
    only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0."""
    """The Handler service provides pure network functionality
    """
    def ActivationChallenge(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      # missing associated documentation comment in .proto file
      pass
      raise NotImplementedError()
    ActivationChallenge.future = None
    def Activate(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      # missing associated documentation comment in .proto file
      pass
      raise NotImplementedError()
    Activate.future = None


  def beta_create_Handler_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This function was
    generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0"""
    request_deserializers = {
      ('handler.Handler', 'Activate'): github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.DeduplicatedDeviceActivationRequest.FromString,
      ('handler.Handler', 'ActivationChallenge'): github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.ActivationChallengeRequest.FromString,
    }
    response_serializers = {
      ('handler.Handler', 'Activate'): DeviceActivationResponse.SerializeToString,
      ('handler.Handler', 'ActivationChallenge'): github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.ActivationChallengeResponse.SerializeToString,
    }
    method_implementations = {
      ('handler.Handler', 'Activate'): face_utilities.unary_unary_inline(servicer.Activate),
      ('handler.Handler', 'ActivationChallenge'): face_utilities.unary_unary_inline(servicer.ActivationChallenge),
    }
    server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
    return beta_implementations.server(method_implementations, options=server_options)


  def beta_create_Handler_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This function was
    generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0"""
    request_serializers = {
      ('handler.Handler', 'Activate'): github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.DeduplicatedDeviceActivationRequest.SerializeToString,
      ('handler.Handler', 'ActivationChallenge'): github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.ActivationChallengeRequest.SerializeToString,
    }
    response_deserializers = {
      ('handler.Handler', 'Activate'): DeviceActivationResponse.FromString,
      ('handler.Handler', 'ActivationChallenge'): github__com_dot_TheThingsNetwork_dot_api_dot_broker_dot_broker__pb2.ActivationChallengeResponse.FromString,
    }
    cardinalities = {
      'Activate': cardinality.Cardinality.UNARY_UNARY,
      'ActivationChallenge': cardinality.Cardinality.UNARY_UNARY,
    }
    stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
    return beta_implementations.dynamic_stub(channel, 'handler.Handler', cardinalities, options=stub_options)


  class BetaApplicationManagerServicer(object):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This class was generated
    only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0."""
    """ApplicationManager manages application and device registrations on the Handler

    To protect our quality of service, you can make up to 5000 calls to the
    ApplicationManager API per hour. Once you go over the rate limit, you will
    receive an error response.
    """
    def RegisterApplication(self, request, context):
      """Applications should first be registered to the Handler with the `RegisterApplication` method
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def GetApplication(self, request, context):
      """GetApplication returns the application with the given identifier (app_id)
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def SetApplication(self, request, context):
      """SetApplication updates the settings for the application. All fields must be supplied.
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def DeleteApplication(self, request, context):
      """DeleteApplication deletes the application with the given identifier (app_id)
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def GetDevice(self, request, context):
      """GetDevice returns the device with the given identifier (app_id and dev_id)
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def SetDevice(self, request, context):
      """SetDevice creates or updates a device. All fields must be supplied.
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def DeleteDevice(self, request, context):
      """DeleteDevice deletes the device with the given identifier (app_id and dev_id)
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def GetDevicesForApplication(self, request, context):
      """GetDevicesForApplication returns all devices that belong to the application with the given identifier (app_id)
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def DryDownlink(self, request, context):
      """DryUplink simulates processing a downlink message and returns the result
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def DryUplink(self, request, context):
      """DryUplink simulates processing an uplink message and returns the result
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def SimulateUplink(self, request, context):
      """SimulateUplink simulates an uplink message
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)


  class BetaApplicationManagerStub(object):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This class was generated
    only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0."""
    """ApplicationManager manages application and device registrations on the Handler

    To protect our quality of service, you can make up to 5000 calls to the
    ApplicationManager API per hour. Once you go over the rate limit, you will
    receive an error response.
    """
    def RegisterApplication(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """Applications should first be registered to the Handler with the `RegisterApplication` method
      """
      raise NotImplementedError()
    RegisterApplication.future = None
    def GetApplication(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """GetApplication returns the application with the given identifier (app_id)
      """
      raise NotImplementedError()
    GetApplication.future = None
    def SetApplication(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """SetApplication updates the settings for the application. All fields must be supplied.
      """
      raise NotImplementedError()
    SetApplication.future = None
    def DeleteApplication(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """DeleteApplication deletes the application with the given identifier (app_id)
      """
      raise NotImplementedError()
    DeleteApplication.future = None
    def GetDevice(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """GetDevice returns the device with the given identifier (app_id and dev_id)
      """
      raise NotImplementedError()
    GetDevice.future = None
    def SetDevice(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """SetDevice creates or updates a device. All fields must be supplied.
      """
      raise NotImplementedError()
    SetDevice.future = None
    def DeleteDevice(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """DeleteDevice deletes the device with the given identifier (app_id and dev_id)
      """
      raise NotImplementedError()
    DeleteDevice.future = None
    def GetDevicesForApplication(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """GetDevicesForApplication returns all devices that belong to the application with the given identifier (app_id)
      """
      raise NotImplementedError()
    GetDevicesForApplication.future = None
    def DryDownlink(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """DryUplink simulates processing a downlink message and returns the result
      """
      raise NotImplementedError()
    DryDownlink.future = None
    def DryUplink(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """DryUplink simulates processing an uplink message and returns the result
      """
      raise NotImplementedError()
    DryUplink.future = None
    def SimulateUplink(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """SimulateUplink simulates an uplink message
      """
      raise NotImplementedError()
    SimulateUplink.future = None


  def beta_create_ApplicationManager_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This function was
    generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0"""
    request_deserializers = {
      ('handler.ApplicationManager', 'DeleteApplication'): ApplicationIdentifier.FromString,
      ('handler.ApplicationManager', 'DeleteDevice'): DeviceIdentifier.FromString,
      ('handler.ApplicationManager', 'DryDownlink'): DryDownlinkMessage.FromString,
      ('handler.ApplicationManager', 'DryUplink'): DryUplinkMessage.FromString,
      ('handler.ApplicationManager', 'GetApplication'): ApplicationIdentifier.FromString,
      ('handler.ApplicationManager', 'GetDevice'): DeviceIdentifier.FromString,
      ('handler.ApplicationManager', 'GetDevicesForApplication'): ApplicationIdentifier.FromString,
      ('handler.ApplicationManager', 'RegisterApplication'): ApplicationIdentifier.FromString,
      ('handler.ApplicationManager', 'SetApplication'): Application.FromString,
      ('handler.ApplicationManager', 'SetDevice'): Device.FromString,
      ('handler.ApplicationManager', 'SimulateUplink'): SimulatedUplinkMessage.FromString,
    }
    response_serializers = {
      ('handler.ApplicationManager', 'DeleteApplication'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
      ('handler.ApplicationManager', 'DeleteDevice'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
      ('handler.ApplicationManager', 'DryDownlink'): DryDownlinkResult.SerializeToString,
      ('handler.ApplicationManager', 'DryUplink'): DryUplinkResult.SerializeToString,
      ('handler.ApplicationManager', 'GetApplication'): Application.SerializeToString,
      ('handler.ApplicationManager', 'GetDevice'): Device.SerializeToString,
      ('handler.ApplicationManager', 'GetDevicesForApplication'): DeviceList.SerializeToString,
      ('handler.ApplicationManager', 'RegisterApplication'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
      ('handler.ApplicationManager', 'SetApplication'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
      ('handler.ApplicationManager', 'SetDevice'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
      ('handler.ApplicationManager', 'SimulateUplink'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
    }
    method_implementations = {
      ('handler.ApplicationManager', 'DeleteApplication'): face_utilities.unary_unary_inline(servicer.DeleteApplication),
      ('handler.ApplicationManager', 'DeleteDevice'): face_utilities.unary_unary_inline(servicer.DeleteDevice),
      ('handler.ApplicationManager', 'DryDownlink'): face_utilities.unary_unary_inline(servicer.DryDownlink),
      ('handler.ApplicationManager', 'DryUplink'): face_utilities.unary_unary_inline(servicer.DryUplink),
      ('handler.ApplicationManager', 'GetApplication'): face_utilities.unary_unary_inline(servicer.GetApplication),
      ('handler.ApplicationManager', 'GetDevice'): face_utilities.unary_unary_inline(servicer.GetDevice),
      ('handler.ApplicationManager', 'GetDevicesForApplication'): face_utilities.unary_unary_inline(servicer.GetDevicesForApplication),
      ('handler.ApplicationManager', 'RegisterApplication'): face_utilities.unary_unary_inline(servicer.RegisterApplication),
      ('handler.ApplicationManager', 'SetApplication'): face_utilities.unary_unary_inline(servicer.SetApplication),
      ('handler.ApplicationManager', 'SetDevice'): face_utilities.unary_unary_inline(servicer.SetDevice),
      ('handler.ApplicationManager', 'SimulateUplink'): face_utilities.unary_unary_inline(servicer.SimulateUplink),
    }
    server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
    return beta_implementations.server(method_implementations, options=server_options)


  def beta_create_ApplicationManager_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This function was
    generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0"""
    request_serializers = {
      ('handler.ApplicationManager', 'DeleteApplication'): ApplicationIdentifier.SerializeToString,
      ('handler.ApplicationManager', 'DeleteDevice'): DeviceIdentifier.SerializeToString,
      ('handler.ApplicationManager', 'DryDownlink'): DryDownlinkMessage.SerializeToString,
      ('handler.ApplicationManager', 'DryUplink'): DryUplinkMessage.SerializeToString,
      ('handler.ApplicationManager', 'GetApplication'): ApplicationIdentifier.SerializeToString,
      ('handler.ApplicationManager', 'GetDevice'): DeviceIdentifier.SerializeToString,
      ('handler.ApplicationManager', 'GetDevicesForApplication'): ApplicationIdentifier.SerializeToString,
      ('handler.ApplicationManager', 'RegisterApplication'): ApplicationIdentifier.SerializeToString,
      ('handler.ApplicationManager', 'SetApplication'): Application.SerializeToString,
      ('handler.ApplicationManager', 'SetDevice'): Device.SerializeToString,
      ('handler.ApplicationManager', 'SimulateUplink'): SimulatedUplinkMessage.SerializeToString,
    }
    response_deserializers = {
      ('handler.ApplicationManager', 'DeleteApplication'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
      ('handler.ApplicationManager', 'DeleteDevice'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
      ('handler.ApplicationManager', 'DryDownlink'): DryDownlinkResult.FromString,
      ('handler.ApplicationManager', 'DryUplink'): DryUplinkResult.FromString,
      ('handler.ApplicationManager', 'GetApplication'): Application.FromString,
      ('handler.ApplicationManager', 'GetDevice'): Device.FromString,
      ('handler.ApplicationManager', 'GetDevicesForApplication'): DeviceList.FromString,
      ('handler.ApplicationManager', 'RegisterApplication'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
      ('handler.ApplicationManager', 'SetApplication'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
      ('handler.ApplicationManager', 'SetDevice'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
      ('handler.ApplicationManager', 'SimulateUplink'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
    }
    cardinalities = {
      'DeleteApplication': cardinality.Cardinality.UNARY_UNARY,
      'DeleteDevice': cardinality.Cardinality.UNARY_UNARY,
      'DryDownlink': cardinality.Cardinality.UNARY_UNARY,
      'DryUplink': cardinality.Cardinality.UNARY_UNARY,
      'GetApplication': cardinality.Cardinality.UNARY_UNARY,
      'GetDevice': cardinality.Cardinality.UNARY_UNARY,
      'GetDevicesForApplication': cardinality.Cardinality.UNARY_UNARY,
      'RegisterApplication': cardinality.Cardinality.UNARY_UNARY,
      'SetApplication': cardinality.Cardinality.UNARY_UNARY,
      'SetDevice': cardinality.Cardinality.UNARY_UNARY,
      'SimulateUplink': cardinality.Cardinality.UNARY_UNARY,
    }
    stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
    return beta_implementations.dynamic_stub(channel, 'handler.ApplicationManager', cardinalities, options=stub_options)


  class BetaHandlerManagerServicer(object):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This class was generated
    only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0."""
    """The HandlerManager service provides configuration and monitoring
    functionality
    """
    def GetStatus(self, request, context):
      # missing associated documentation comment in .proto file
      pass
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)


  class BetaHandlerManagerStub(object):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This class was generated
    only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0."""
    """The HandlerManager service provides configuration and monitoring
    functionality
    """
    def GetStatus(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      # missing associated documentation comment in .proto file
      pass
      raise NotImplementedError()
    GetStatus.future = None


  def beta_create_HandlerManager_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This function was
    generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0"""
    request_deserializers = {
      ('handler.HandlerManager', 'GetStatus'): StatusRequest.FromString,
    }
    response_serializers = {
      ('handler.HandlerManager', 'GetStatus'): Status.SerializeToString,
    }
    method_implementations = {
      ('handler.HandlerManager', 'GetStatus'): face_utilities.unary_unary_inline(servicer.GetStatus),
    }
    server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
    return beta_implementations.server(method_implementations, options=server_options)


  def beta_create_HandlerManager_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This function was
    generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0"""
    request_serializers = {
      ('handler.HandlerManager', 'GetStatus'): StatusRequest.SerializeToString,
    }
    response_deserializers = {
      ('handler.HandlerManager', 'GetStatus'): Status.FromString,
    }
    cardinalities = {
      'GetStatus': cardinality.Cardinality.UNARY_UNARY,
    }
    stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
    return beta_implementations.dynamic_stub(channel, 'handler.HandlerManager', cardinalities, options=stub_options)
except ImportError:
  pass
# @@protoc_insertion_point(module_scope)
