// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: s2clientprotocol/query.proto

#include "s2clientprotocol/query.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fcommon_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_AvailableAbility_s2clientprotocol_2fcommon_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fcommon_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Point2D_s2clientprotocol_2fcommon_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_RequestQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_RequestQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_RequestQueryPathing_s2clientprotocol_2fquery_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_ResponseQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ResponseQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ResponseQueryPathing_s2clientprotocol_2fquery_2eproto;
namespace SC2APIProtocol {
class RequestQueryDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<RequestQuery> _instance;
} _RequestQuery_default_instance_;
class ResponseQueryDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ResponseQuery> _instance;
} _ResponseQuery_default_instance_;
class RequestQueryPathingDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<RequestQueryPathing> _instance;
  const ::SC2APIProtocol::Point2D* start_pos_;
  ::PROTOBUF_NAMESPACE_ID::uint64 unit_tag_;
} _RequestQueryPathing_default_instance_;
class ResponseQueryPathingDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ResponseQueryPathing> _instance;
} _ResponseQueryPathing_default_instance_;
class RequestQueryAvailableAbilitiesDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<RequestQueryAvailableAbilities> _instance;
} _RequestQueryAvailableAbilities_default_instance_;
class ResponseQueryAvailableAbilitiesDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ResponseQueryAvailableAbilities> _instance;
} _ResponseQueryAvailableAbilities_default_instance_;
class RequestQueryBuildingPlacementDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<RequestQueryBuildingPlacement> _instance;
} _RequestQueryBuildingPlacement_default_instance_;
class ResponseQueryBuildingPlacementDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ResponseQueryBuildingPlacement> _instance;
} _ResponseQueryBuildingPlacement_default_instance_;
}  // namespace SC2APIProtocol
static void InitDefaultsscc_info_RequestQuery_s2clientprotocol_2fquery_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_RequestQuery_default_instance_;
    new (ptr) ::SC2APIProtocol::RequestQuery();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::RequestQuery::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<3> scc_info_RequestQuery_s2clientprotocol_2fquery_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 3, 0, InitDefaultsscc_info_RequestQuery_s2clientprotocol_2fquery_2eproto}, {
      &scc_info_RequestQueryPathing_s2clientprotocol_2fquery_2eproto.base,
      &scc_info_RequestQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto.base,
      &scc_info_RequestQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto.base,}};

static void InitDefaultsscc_info_RequestQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_RequestQueryAvailableAbilities_default_instance_;
    new (ptr) ::SC2APIProtocol::RequestQueryAvailableAbilities();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::RequestQueryAvailableAbilities::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_RequestQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_RequestQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto}, {}};

static void InitDefaultsscc_info_RequestQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_RequestQueryBuildingPlacement_default_instance_;
    new (ptr) ::SC2APIProtocol::RequestQueryBuildingPlacement();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::RequestQueryBuildingPlacement::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_RequestQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_RequestQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto}, {
      &scc_info_Point2D_s2clientprotocol_2fcommon_2eproto.base,}};

static void InitDefaultsscc_info_RequestQueryPathing_s2clientprotocol_2fquery_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_RequestQueryPathing_default_instance_;
    new (ptr) ::SC2APIProtocol::RequestQueryPathing();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::RequestQueryPathing::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_RequestQueryPathing_s2clientprotocol_2fquery_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_RequestQueryPathing_s2clientprotocol_2fquery_2eproto}, {
      &scc_info_Point2D_s2clientprotocol_2fcommon_2eproto.base,}};

static void InitDefaultsscc_info_ResponseQuery_s2clientprotocol_2fquery_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ResponseQuery_default_instance_;
    new (ptr) ::SC2APIProtocol::ResponseQuery();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ResponseQuery::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<3> scc_info_ResponseQuery_s2clientprotocol_2fquery_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 3, 0, InitDefaultsscc_info_ResponseQuery_s2clientprotocol_2fquery_2eproto}, {
      &scc_info_ResponseQueryPathing_s2clientprotocol_2fquery_2eproto.base,
      &scc_info_ResponseQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto.base,
      &scc_info_ResponseQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto.base,}};

static void InitDefaultsscc_info_ResponseQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ResponseQueryAvailableAbilities_default_instance_;
    new (ptr) ::SC2APIProtocol::ResponseQueryAvailableAbilities();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ResponseQueryAvailableAbilities::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_ResponseQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_ResponseQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto}, {
      &scc_info_AvailableAbility_s2clientprotocol_2fcommon_2eproto.base,}};

static void InitDefaultsscc_info_ResponseQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ResponseQueryBuildingPlacement_default_instance_;
    new (ptr) ::SC2APIProtocol::ResponseQueryBuildingPlacement();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ResponseQueryBuildingPlacement::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ResponseQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ResponseQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto}, {}};

static void InitDefaultsscc_info_ResponseQueryPathing_s2clientprotocol_2fquery_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ResponseQueryPathing_default_instance_;
    new (ptr) ::SC2APIProtocol::ResponseQueryPathing();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ResponseQueryPathing::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ResponseQueryPathing_s2clientprotocol_2fquery_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ResponseQueryPathing_s2clientprotocol_2fquery_2eproto}, {}};

static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_s2clientprotocol_2fquery_2eproto[8];
static constexpr ::PROTOBUF_NAMESPACE_ID::EnumDescriptor const** file_level_enum_descriptors_s2clientprotocol_2fquery_2eproto = nullptr;
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_s2clientprotocol_2fquery_2eproto = nullptr;

const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_s2clientprotocol_2fquery_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQuery, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQuery, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQuery, pathing_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQuery, abilities_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQuery, placements_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQuery, ignore_resource_requirements_),
  ~0u,
  ~0u,
  ~0u,
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQuery, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQuery, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQuery, pathing_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQuery, abilities_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQuery, placements_),
  ~0u,
  ~0u,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryPathing, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryPathing, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryPathing, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  offsetof(::SC2APIProtocol::RequestQueryPathingDefaultTypeInternal, start_pos_),
  offsetof(::SC2APIProtocol::RequestQueryPathingDefaultTypeInternal, unit_tag_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryPathing, end_pos_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryPathing, start_),
  ~0u,
  ~0u,
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQueryPathing, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQueryPathing, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQueryPathing, distance_),
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryAvailableAbilities, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryAvailableAbilities, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryAvailableAbilities, unit_tag_),
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQueryAvailableAbilities, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQueryAvailableAbilities, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQueryAvailableAbilities, abilities_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQueryAvailableAbilities, unit_tag_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQueryAvailableAbilities, unit_type_id_),
  ~0u,
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryBuildingPlacement, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryBuildingPlacement, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryBuildingPlacement, ability_id_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryBuildingPlacement, target_pos_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::RequestQueryBuildingPlacement, placing_unit_tag_),
  2,
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQueryBuildingPlacement, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQueryBuildingPlacement, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ResponseQueryBuildingPlacement, result_),
  0,
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, 9, sizeof(::SC2APIProtocol::RequestQuery)},
  { 13, 21, sizeof(::SC2APIProtocol::ResponseQuery)},
  { 24, 33, sizeof(::SC2APIProtocol::RequestQueryPathing)},
  { 36, 42, sizeof(::SC2APIProtocol::ResponseQueryPathing)},
  { 43, 49, sizeof(::SC2APIProtocol::RequestQueryAvailableAbilities)},
  { 50, 58, sizeof(::SC2APIProtocol::ResponseQueryAvailableAbilities)},
  { 61, 69, sizeof(::SC2APIProtocol::RequestQueryBuildingPlacement)},
  { 72, 78, sizeof(::SC2APIProtocol::ResponseQueryBuildingPlacement)},
};

static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_RequestQuery_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ResponseQuery_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_RequestQueryPathing_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ResponseQueryPathing_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_RequestQueryAvailableAbilities_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ResponseQueryAvailableAbilities_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_RequestQueryBuildingPlacement_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ResponseQueryBuildingPlacement_default_instance_),
};

const char descriptor_table_protodef_s2clientprotocol_2fquery_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\034s2clientprotocol/query.proto\022\016SC2APIPr"
  "otocol\032\035s2clientprotocol/common.proto\032\034s"
  "2clientprotocol/error.proto\"\360\001\n\014RequestQ"
  "uery\0224\n\007pathing\030\001 \003(\0132#.SC2APIProtocol.R"
  "equestQueryPathing\022A\n\tabilities\030\002 \003(\0132.."
  "SC2APIProtocol.RequestQueryAvailableAbil"
  "ities\022A\n\nplacements\030\003 \003(\0132-.SC2APIProtoc"
  "ol.RequestQueryBuildingPlacement\022$\n\034igno"
  "re_resource_requirements\030\004 \001(\010\"\316\001\n\rRespo"
  "nseQuery\0225\n\007pathing\030\001 \003(\0132$.SC2APIProtoc"
  "ol.ResponseQueryPathing\022B\n\tabilities\030\002 \003"
  "(\0132/.SC2APIProtocol.ResponseQueryAvailab"
  "leAbilities\022B\n\nplacements\030\003 \003(\0132..SC2API"
  "Protocol.ResponseQueryBuildingPlacement\""
  "\212\001\n\023RequestQueryPathing\022,\n\tstart_pos\030\001 \001"
  "(\0132\027.SC2APIProtocol.Point2DH\000\022\022\n\010unit_ta"
  "g\030\002 \001(\004H\000\022(\n\007end_pos\030\003 \001(\0132\027.SC2APIProto"
  "col.Point2DB\007\n\005start\"(\n\024ResponseQueryPat"
  "hing\022\020\n\010distance\030\001 \001(\002\"2\n\036RequestQueryAv"
  "ailableAbilities\022\020\n\010unit_tag\030\001 \001(\004\"~\n\037Re"
  "sponseQueryAvailableAbilities\0223\n\tabiliti"
  "es\030\001 \003(\0132 .SC2APIProtocol.AvailableAbili"
  "ty\022\020\n\010unit_tag\030\002 \001(\004\022\024\n\014unit_type_id\030\003 \001"
  "(\r\"z\n\035RequestQueryBuildingPlacement\022\022\n\na"
  "bility_id\030\001 \001(\005\022+\n\ntarget_pos\030\002 \001(\0132\027.SC"
  "2APIProtocol.Point2D\022\030\n\020placing_unit_tag"
  "\030\003 \001(\004\"N\n\036ResponseQueryBuildingPlacement"
  "\022,\n\006result\030\001 \001(\0162\034.SC2APIProtocol.Action"
  "Result"
  ;
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_s2clientprotocol_2fquery_2eproto_deps[2] = {
  &::descriptor_table_s2clientprotocol_2fcommon_2eproto,
  &::descriptor_table_s2clientprotocol_2ferror_2eproto,
};
static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_s2clientprotocol_2fquery_2eproto_sccs[8] = {
  &scc_info_RequestQuery_s2clientprotocol_2fquery_2eproto.base,
  &scc_info_RequestQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto.base,
  &scc_info_RequestQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto.base,
  &scc_info_RequestQueryPathing_s2clientprotocol_2fquery_2eproto.base,
  &scc_info_ResponseQuery_s2clientprotocol_2fquery_2eproto.base,
  &scc_info_ResponseQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto.base,
  &scc_info_ResponseQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto.base,
  &scc_info_ResponseQueryPathing_s2clientprotocol_2fquery_2eproto.base,
};
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_s2clientprotocol_2fquery_2eproto_once;
static bool descriptor_table_s2clientprotocol_2fquery_2eproto_initialized = false;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_s2clientprotocol_2fquery_2eproto = {
  &descriptor_table_s2clientprotocol_2fquery_2eproto_initialized, descriptor_table_protodef_s2clientprotocol_2fquery_2eproto, "s2clientprotocol/query.proto", 1126,
  &descriptor_table_s2clientprotocol_2fquery_2eproto_once, descriptor_table_s2clientprotocol_2fquery_2eproto_sccs, descriptor_table_s2clientprotocol_2fquery_2eproto_deps, 8, 2,
  schemas, file_default_instances, TableStruct_s2clientprotocol_2fquery_2eproto::offsets,
  file_level_metadata_s2clientprotocol_2fquery_2eproto, 8, file_level_enum_descriptors_s2clientprotocol_2fquery_2eproto, file_level_service_descriptors_s2clientprotocol_2fquery_2eproto,
};

// Force running AddDescriptors() at dynamic initialization time.
static bool dynamic_init_dummy_s2clientprotocol_2fquery_2eproto = (static_cast<void>(::PROTOBUF_NAMESPACE_ID::internal::AddDescriptors(&descriptor_table_s2clientprotocol_2fquery_2eproto)), true);
namespace SC2APIProtocol {

// ===================================================================

void RequestQuery::InitAsDefaultInstance() {
}
class RequestQuery::_Internal {
 public:
  using HasBits = decltype(std::declval<RequestQuery>()._has_bits_);
  static void set_has_ignore_resource_requirements(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

RequestQuery::RequestQuery()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.RequestQuery)
}
RequestQuery::RequestQuery(const RequestQuery& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      pathing_(from.pathing_),
      abilities_(from.abilities_),
      placements_(from.placements_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ignore_resource_requirements_ = from.ignore_resource_requirements_;
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.RequestQuery)
}

void RequestQuery::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_RequestQuery_s2clientprotocol_2fquery_2eproto.base);
  ignore_resource_requirements_ = false;
}

RequestQuery::~RequestQuery() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.RequestQuery)
  SharedDtor();
}

void RequestQuery::SharedDtor() {
}

void RequestQuery::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const RequestQuery& RequestQuery::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_RequestQuery_s2clientprotocol_2fquery_2eproto.base);
  return *internal_default_instance();
}


void RequestQuery::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.RequestQuery)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  pathing_.Clear();
  abilities_.Clear();
  placements_.Clear();
  ignore_resource_requirements_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* RequestQuery::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // repeated .SC2APIProtocol.RequestQueryPathing pathing = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_pathing(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else goto handle_unusual;
        continue;
      // repeated .SC2APIProtocol.RequestQueryAvailableAbilities abilities = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_abilities(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else goto handle_unusual;
        continue;
      // repeated .SC2APIProtocol.RequestQueryBuildingPlacement placements = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_placements(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else goto handle_unusual;
        continue;
      // optional bool ignore_resource_requirements = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_ignore_resource_requirements(&has_bits);
          ignore_resource_requirements_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* RequestQuery::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.RequestQuery)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .SC2APIProtocol.RequestQueryPathing pathing = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_pathing_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_pathing(i), target, stream);
  }

  // repeated .SC2APIProtocol.RequestQueryAvailableAbilities abilities = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_abilities_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, this->_internal_abilities(i), target, stream);
  }

  // repeated .SC2APIProtocol.RequestQueryBuildingPlacement placements = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_placements_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(3, this->_internal_placements(i), target, stream);
  }

  cached_has_bits = _has_bits_[0];
  // optional bool ignore_resource_requirements = 4;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_ignore_resource_requirements(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.RequestQuery)
  return target;
}

size_t RequestQuery::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.RequestQuery)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .SC2APIProtocol.RequestQueryPathing pathing = 1;
  total_size += 1UL * this->_internal_pathing_size();
  for (const auto& msg : this->pathing_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .SC2APIProtocol.RequestQueryAvailableAbilities abilities = 2;
  total_size += 1UL * this->_internal_abilities_size();
  for (const auto& msg : this->abilities_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .SC2APIProtocol.RequestQueryBuildingPlacement placements = 3;
  total_size += 1UL * this->_internal_placements_size();
  for (const auto& msg : this->placements_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // optional bool ignore_resource_requirements = 4;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 + 1;
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void RequestQuery::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.RequestQuery)
  GOOGLE_DCHECK_NE(&from, this);
  const RequestQuery* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<RequestQuery>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.RequestQuery)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.RequestQuery)
    MergeFrom(*source);
  }
}

void RequestQuery::MergeFrom(const RequestQuery& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.RequestQuery)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  pathing_.MergeFrom(from.pathing_);
  abilities_.MergeFrom(from.abilities_);
  placements_.MergeFrom(from.placements_);
  if (from._internal_has_ignore_resource_requirements()) {
    _internal_set_ignore_resource_requirements(from._internal_ignore_resource_requirements());
  }
}

void RequestQuery::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.RequestQuery)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void RequestQuery::CopyFrom(const RequestQuery& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.RequestQuery)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RequestQuery::IsInitialized() const {
  return true;
}

void RequestQuery::InternalSwap(RequestQuery* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  pathing_.InternalSwap(&other->pathing_);
  abilities_.InternalSwap(&other->abilities_);
  placements_.InternalSwap(&other->placements_);
  swap(ignore_resource_requirements_, other->ignore_resource_requirements_);
}

::PROTOBUF_NAMESPACE_ID::Metadata RequestQuery::GetMetadata() const {
  return GetMetadataStatic();
}


// ===================================================================

void ResponseQuery::InitAsDefaultInstance() {
}
class ResponseQuery::_Internal {
 public:
  using HasBits = decltype(std::declval<ResponseQuery>()._has_bits_);
};

ResponseQuery::ResponseQuery()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ResponseQuery)
}
ResponseQuery::ResponseQuery(const ResponseQuery& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      pathing_(from.pathing_),
      abilities_(from.abilities_),
      placements_(from.placements_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ResponseQuery)
}

void ResponseQuery::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_ResponseQuery_s2clientprotocol_2fquery_2eproto.base);
}

ResponseQuery::~ResponseQuery() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ResponseQuery)
  SharedDtor();
}

void ResponseQuery::SharedDtor() {
}

void ResponseQuery::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ResponseQuery& ResponseQuery::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ResponseQuery_s2clientprotocol_2fquery_2eproto.base);
  return *internal_default_instance();
}


void ResponseQuery::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ResponseQuery)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  pathing_.Clear();
  abilities_.Clear();
  placements_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ResponseQuery::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // repeated .SC2APIProtocol.ResponseQueryPathing pathing = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_pathing(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else goto handle_unusual;
        continue;
      // repeated .SC2APIProtocol.ResponseQueryAvailableAbilities abilities = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_abilities(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else goto handle_unusual;
        continue;
      // repeated .SC2APIProtocol.ResponseQueryBuildingPlacement placements = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_placements(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ResponseQuery::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ResponseQuery)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .SC2APIProtocol.ResponseQueryPathing pathing = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_pathing_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_pathing(i), target, stream);
  }

  // repeated .SC2APIProtocol.ResponseQueryAvailableAbilities abilities = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_abilities_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, this->_internal_abilities(i), target, stream);
  }

  // repeated .SC2APIProtocol.ResponseQueryBuildingPlacement placements = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_placements_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(3, this->_internal_placements(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ResponseQuery)
  return target;
}

size_t ResponseQuery::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ResponseQuery)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .SC2APIProtocol.ResponseQueryPathing pathing = 1;
  total_size += 1UL * this->_internal_pathing_size();
  for (const auto& msg : this->pathing_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .SC2APIProtocol.ResponseQueryAvailableAbilities abilities = 2;
  total_size += 1UL * this->_internal_abilities_size();
  for (const auto& msg : this->abilities_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .SC2APIProtocol.ResponseQueryBuildingPlacement placements = 3;
  total_size += 1UL * this->_internal_placements_size();
  for (const auto& msg : this->placements_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ResponseQuery::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ResponseQuery)
  GOOGLE_DCHECK_NE(&from, this);
  const ResponseQuery* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ResponseQuery>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ResponseQuery)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ResponseQuery)
    MergeFrom(*source);
  }
}

void ResponseQuery::MergeFrom(const ResponseQuery& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ResponseQuery)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  pathing_.MergeFrom(from.pathing_);
  abilities_.MergeFrom(from.abilities_);
  placements_.MergeFrom(from.placements_);
}

void ResponseQuery::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ResponseQuery)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ResponseQuery::CopyFrom(const ResponseQuery& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.ResponseQuery)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ResponseQuery::IsInitialized() const {
  return true;
}

void ResponseQuery::InternalSwap(ResponseQuery* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  pathing_.InternalSwap(&other->pathing_);
  abilities_.InternalSwap(&other->abilities_);
  placements_.InternalSwap(&other->placements_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ResponseQuery::GetMetadata() const {
  return GetMetadataStatic();
}


// ===================================================================

void RequestQueryPathing::InitAsDefaultInstance() {
  ::SC2APIProtocol::_RequestQueryPathing_default_instance_.start_pos_ = const_cast< ::SC2APIProtocol::Point2D*>(
      ::SC2APIProtocol::Point2D::internal_default_instance());
  ::SC2APIProtocol::_RequestQueryPathing_default_instance_.unit_tag_ = PROTOBUF_ULONGLONG(0);
  ::SC2APIProtocol::_RequestQueryPathing_default_instance_._instance.get_mutable()->end_pos_ = const_cast< ::SC2APIProtocol::Point2D*>(
      ::SC2APIProtocol::Point2D::internal_default_instance());
}
class RequestQueryPathing::_Internal {
 public:
  using HasBits = decltype(std::declval<RequestQueryPathing>()._has_bits_);
  static const ::SC2APIProtocol::Point2D& start_pos(const RequestQueryPathing* msg);
  static const ::SC2APIProtocol::Point2D& end_pos(const RequestQueryPathing* msg);
  static void set_has_end_pos(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::SC2APIProtocol::Point2D&
RequestQueryPathing::_Internal::start_pos(const RequestQueryPathing* msg) {
  return *msg->start_.start_pos_;
}
const ::SC2APIProtocol::Point2D&
RequestQueryPathing::_Internal::end_pos(const RequestQueryPathing* msg) {
  return *msg->end_pos_;
}
void RequestQueryPathing::set_allocated_start_pos(::SC2APIProtocol::Point2D* start_pos) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_start();
  if (start_pos) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      start_pos = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, start_pos, submessage_arena);
    }
    set_has_start_pos();
    start_.start_pos_ = start_pos;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.RequestQueryPathing.start_pos)
}
void RequestQueryPathing::clear_start_pos() {
  if (_internal_has_start_pos()) {
    delete start_.start_pos_;
    clear_has_start();
  }
}
void RequestQueryPathing::clear_end_pos() {
  if (end_pos_ != nullptr) end_pos_->Clear();
  _has_bits_[0] &= ~0x00000001u;
}
RequestQueryPathing::RequestQueryPathing()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.RequestQueryPathing)
}
RequestQueryPathing::RequestQueryPathing(const RequestQueryPathing& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from._internal_has_end_pos()) {
    end_pos_ = new ::SC2APIProtocol::Point2D(*from.end_pos_);
  } else {
    end_pos_ = nullptr;
  }
  clear_has_start();
  switch (from.start_case()) {
    case kStartPos: {
      _internal_mutable_start_pos()->::SC2APIProtocol::Point2D::MergeFrom(from._internal_start_pos());
      break;
    }
    case kUnitTag: {
      _internal_set_unit_tag(from._internal_unit_tag());
      break;
    }
    case START_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.RequestQueryPathing)
}

void RequestQueryPathing::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_RequestQueryPathing_s2clientprotocol_2fquery_2eproto.base);
  end_pos_ = nullptr;
  clear_has_start();
}

RequestQueryPathing::~RequestQueryPathing() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.RequestQueryPathing)
  SharedDtor();
}

void RequestQueryPathing::SharedDtor() {
  if (this != internal_default_instance()) delete end_pos_;
  if (has_start()) {
    clear_start();
  }
}

void RequestQueryPathing::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const RequestQueryPathing& RequestQueryPathing::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_RequestQueryPathing_s2clientprotocol_2fquery_2eproto.base);
  return *internal_default_instance();
}


void RequestQueryPathing::clear_start() {
// @@protoc_insertion_point(one_of_clear_start:SC2APIProtocol.RequestQueryPathing)
  switch (start_case()) {
    case kStartPos: {
      delete start_.start_pos_;
      break;
    }
    case kUnitTag: {
      // No need to clear
      break;
    }
    case START_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = START_NOT_SET;
}


void RequestQueryPathing::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.RequestQueryPathing)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(end_pos_ != nullptr);
    end_pos_->Clear();
  }
  clear_start();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* RequestQueryPathing::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional .SC2APIProtocol.Point2D start_pos = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_start_pos(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint64 unit_tag = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _internal_set_unit_tag(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr));
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.Point2D end_pos = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_end_pos(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* RequestQueryPathing::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.RequestQueryPathing)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  switch (start_case()) {
    case kStartPos: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          1, _Internal::start_pos(this), target, stream);
      break;
    }
    case kUnitTag: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(2, this->_internal_unit_tag(), target);
      break;
    }
    default: ;
  }
  cached_has_bits = _has_bits_[0];
  // optional .SC2APIProtocol.Point2D end_pos = 3;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        3, _Internal::end_pos(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.RequestQueryPathing)
  return target;
}

size_t RequestQueryPathing::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.RequestQueryPathing)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // optional .SC2APIProtocol.Point2D end_pos = 3;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *end_pos_);
  }

  switch (start_case()) {
    // optional .SC2APIProtocol.Point2D start_pos = 1;
    case kStartPos: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *start_.start_pos_);
      break;
    }
    // optional uint64 unit_tag = 2;
    case kUnitTag: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size(
          this->_internal_unit_tag());
      break;
    }
    case START_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void RequestQueryPathing::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.RequestQueryPathing)
  GOOGLE_DCHECK_NE(&from, this);
  const RequestQueryPathing* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<RequestQueryPathing>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.RequestQueryPathing)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.RequestQueryPathing)
    MergeFrom(*source);
  }
}

void RequestQueryPathing::MergeFrom(const RequestQueryPathing& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.RequestQueryPathing)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_end_pos()) {
    _internal_mutable_end_pos()->::SC2APIProtocol::Point2D::MergeFrom(from._internal_end_pos());
  }
  switch (from.start_case()) {
    case kStartPos: {
      _internal_mutable_start_pos()->::SC2APIProtocol::Point2D::MergeFrom(from._internal_start_pos());
      break;
    }
    case kUnitTag: {
      _internal_set_unit_tag(from._internal_unit_tag());
      break;
    }
    case START_NOT_SET: {
      break;
    }
  }
}

void RequestQueryPathing::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.RequestQueryPathing)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void RequestQueryPathing::CopyFrom(const RequestQueryPathing& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.RequestQueryPathing)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RequestQueryPathing::IsInitialized() const {
  return true;
}

void RequestQueryPathing::InternalSwap(RequestQueryPathing* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(end_pos_, other->end_pos_);
  swap(start_, other->start_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata RequestQueryPathing::GetMetadata() const {
  return GetMetadataStatic();
}


// ===================================================================

void ResponseQueryPathing::InitAsDefaultInstance() {
}
class ResponseQueryPathing::_Internal {
 public:
  using HasBits = decltype(std::declval<ResponseQueryPathing>()._has_bits_);
  static void set_has_distance(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

ResponseQueryPathing::ResponseQueryPathing()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ResponseQueryPathing)
}
ResponseQueryPathing::ResponseQueryPathing(const ResponseQueryPathing& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  distance_ = from.distance_;
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ResponseQueryPathing)
}

void ResponseQueryPathing::SharedCtor() {
  distance_ = 0;
}

ResponseQueryPathing::~ResponseQueryPathing() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ResponseQueryPathing)
  SharedDtor();
}

void ResponseQueryPathing::SharedDtor() {
}

void ResponseQueryPathing::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ResponseQueryPathing& ResponseQueryPathing::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ResponseQueryPathing_s2clientprotocol_2fquery_2eproto.base);
  return *internal_default_instance();
}


void ResponseQueryPathing::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ResponseQueryPathing)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  distance_ = 0;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ResponseQueryPathing::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional float distance = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 13)) {
          _Internal::set_has_distance(&has_bits);
          distance_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ResponseQueryPathing::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ResponseQueryPathing)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional float distance = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(1, this->_internal_distance(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ResponseQueryPathing)
  return target;
}

size_t ResponseQueryPathing::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ResponseQueryPathing)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // optional float distance = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 + 4;
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ResponseQueryPathing::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ResponseQueryPathing)
  GOOGLE_DCHECK_NE(&from, this);
  const ResponseQueryPathing* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ResponseQueryPathing>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ResponseQueryPathing)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ResponseQueryPathing)
    MergeFrom(*source);
  }
}

void ResponseQueryPathing::MergeFrom(const ResponseQueryPathing& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ResponseQueryPathing)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_distance()) {
    _internal_set_distance(from._internal_distance());
  }
}

void ResponseQueryPathing::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ResponseQueryPathing)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ResponseQueryPathing::CopyFrom(const ResponseQueryPathing& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.ResponseQueryPathing)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ResponseQueryPathing::IsInitialized() const {
  return true;
}

void ResponseQueryPathing::InternalSwap(ResponseQueryPathing* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(distance_, other->distance_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ResponseQueryPathing::GetMetadata() const {
  return GetMetadataStatic();
}


// ===================================================================

void RequestQueryAvailableAbilities::InitAsDefaultInstance() {
}
class RequestQueryAvailableAbilities::_Internal {
 public:
  using HasBits = decltype(std::declval<RequestQueryAvailableAbilities>()._has_bits_);
  static void set_has_unit_tag(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

RequestQueryAvailableAbilities::RequestQueryAvailableAbilities()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.RequestQueryAvailableAbilities)
}
RequestQueryAvailableAbilities::RequestQueryAvailableAbilities(const RequestQueryAvailableAbilities& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  unit_tag_ = from.unit_tag_;
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.RequestQueryAvailableAbilities)
}

void RequestQueryAvailableAbilities::SharedCtor() {
  unit_tag_ = PROTOBUF_ULONGLONG(0);
}

RequestQueryAvailableAbilities::~RequestQueryAvailableAbilities() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.RequestQueryAvailableAbilities)
  SharedDtor();
}

void RequestQueryAvailableAbilities::SharedDtor() {
}

void RequestQueryAvailableAbilities::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const RequestQueryAvailableAbilities& RequestQueryAvailableAbilities::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_RequestQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto.base);
  return *internal_default_instance();
}


void RequestQueryAvailableAbilities::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.RequestQueryAvailableAbilities)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  unit_tag_ = PROTOBUF_ULONGLONG(0);
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* RequestQueryAvailableAbilities::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional uint64 unit_tag = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_unit_tag(&has_bits);
          unit_tag_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* RequestQueryAvailableAbilities::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.RequestQueryAvailableAbilities)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional uint64 unit_tag = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(1, this->_internal_unit_tag(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.RequestQueryAvailableAbilities)
  return target;
}

size_t RequestQueryAvailableAbilities::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.RequestQueryAvailableAbilities)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // optional uint64 unit_tag = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size(
        this->_internal_unit_tag());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void RequestQueryAvailableAbilities::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.RequestQueryAvailableAbilities)
  GOOGLE_DCHECK_NE(&from, this);
  const RequestQueryAvailableAbilities* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<RequestQueryAvailableAbilities>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.RequestQueryAvailableAbilities)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.RequestQueryAvailableAbilities)
    MergeFrom(*source);
  }
}

void RequestQueryAvailableAbilities::MergeFrom(const RequestQueryAvailableAbilities& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.RequestQueryAvailableAbilities)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_unit_tag()) {
    _internal_set_unit_tag(from._internal_unit_tag());
  }
}

void RequestQueryAvailableAbilities::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.RequestQueryAvailableAbilities)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void RequestQueryAvailableAbilities::CopyFrom(const RequestQueryAvailableAbilities& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.RequestQueryAvailableAbilities)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RequestQueryAvailableAbilities::IsInitialized() const {
  return true;
}

void RequestQueryAvailableAbilities::InternalSwap(RequestQueryAvailableAbilities* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(unit_tag_, other->unit_tag_);
}

::PROTOBUF_NAMESPACE_ID::Metadata RequestQueryAvailableAbilities::GetMetadata() const {
  return GetMetadataStatic();
}


// ===================================================================

void ResponseQueryAvailableAbilities::InitAsDefaultInstance() {
}
class ResponseQueryAvailableAbilities::_Internal {
 public:
  using HasBits = decltype(std::declval<ResponseQueryAvailableAbilities>()._has_bits_);
  static void set_has_unit_tag(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_unit_type_id(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

void ResponseQueryAvailableAbilities::clear_abilities() {
  abilities_.Clear();
}
ResponseQueryAvailableAbilities::ResponseQueryAvailableAbilities()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ResponseQueryAvailableAbilities)
}
ResponseQueryAvailableAbilities::ResponseQueryAvailableAbilities(const ResponseQueryAvailableAbilities& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      abilities_(from.abilities_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&unit_tag_, &from.unit_tag_,
    static_cast<size_t>(reinterpret_cast<char*>(&unit_type_id_) -
    reinterpret_cast<char*>(&unit_tag_)) + sizeof(unit_type_id_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ResponseQueryAvailableAbilities)
}

void ResponseQueryAvailableAbilities::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_ResponseQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto.base);
  ::memset(&unit_tag_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&unit_type_id_) -
      reinterpret_cast<char*>(&unit_tag_)) + sizeof(unit_type_id_));
}

ResponseQueryAvailableAbilities::~ResponseQueryAvailableAbilities() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ResponseQueryAvailableAbilities)
  SharedDtor();
}

void ResponseQueryAvailableAbilities::SharedDtor() {
}

void ResponseQueryAvailableAbilities::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ResponseQueryAvailableAbilities& ResponseQueryAvailableAbilities::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ResponseQueryAvailableAbilities_s2clientprotocol_2fquery_2eproto.base);
  return *internal_default_instance();
}


void ResponseQueryAvailableAbilities::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ResponseQueryAvailableAbilities)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  abilities_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    ::memset(&unit_tag_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&unit_type_id_) -
        reinterpret_cast<char*>(&unit_tag_)) + sizeof(unit_type_id_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ResponseQueryAvailableAbilities::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // repeated .SC2APIProtocol.AvailableAbility abilities = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_abilities(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else goto handle_unusual;
        continue;
      // optional uint64 unit_tag = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_unit_tag(&has_bits);
          unit_tag_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 unit_type_id = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_unit_type_id(&has_bits);
          unit_type_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ResponseQueryAvailableAbilities::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ResponseQueryAvailableAbilities)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .SC2APIProtocol.AvailableAbility abilities = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_abilities_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_abilities(i), target, stream);
  }

  cached_has_bits = _has_bits_[0];
  // optional uint64 unit_tag = 2;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(2, this->_internal_unit_tag(), target);
  }

  // optional uint32 unit_type_id = 3;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_unit_type_id(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ResponseQueryAvailableAbilities)
  return target;
}

size_t ResponseQueryAvailableAbilities::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ResponseQueryAvailableAbilities)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .SC2APIProtocol.AvailableAbility abilities = 1;
  total_size += 1UL * this->_internal_abilities_size();
  for (const auto& msg : this->abilities_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional uint64 unit_tag = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size(
          this->_internal_unit_tag());
    }

    // optional uint32 unit_type_id = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_unit_type_id());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ResponseQueryAvailableAbilities::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ResponseQueryAvailableAbilities)
  GOOGLE_DCHECK_NE(&from, this);
  const ResponseQueryAvailableAbilities* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ResponseQueryAvailableAbilities>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ResponseQueryAvailableAbilities)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ResponseQueryAvailableAbilities)
    MergeFrom(*source);
  }
}

void ResponseQueryAvailableAbilities::MergeFrom(const ResponseQueryAvailableAbilities& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ResponseQueryAvailableAbilities)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  abilities_.MergeFrom(from.abilities_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      unit_tag_ = from.unit_tag_;
    }
    if (cached_has_bits & 0x00000002u) {
      unit_type_id_ = from.unit_type_id_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void ResponseQueryAvailableAbilities::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ResponseQueryAvailableAbilities)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ResponseQueryAvailableAbilities::CopyFrom(const ResponseQueryAvailableAbilities& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.ResponseQueryAvailableAbilities)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ResponseQueryAvailableAbilities::IsInitialized() const {
  return true;
}

void ResponseQueryAvailableAbilities::InternalSwap(ResponseQueryAvailableAbilities* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  abilities_.InternalSwap(&other->abilities_);
  swap(unit_tag_, other->unit_tag_);
  swap(unit_type_id_, other->unit_type_id_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ResponseQueryAvailableAbilities::GetMetadata() const {
  return GetMetadataStatic();
}


// ===================================================================

void RequestQueryBuildingPlacement::InitAsDefaultInstance() {
  ::SC2APIProtocol::_RequestQueryBuildingPlacement_default_instance_._instance.get_mutable()->target_pos_ = const_cast< ::SC2APIProtocol::Point2D*>(
      ::SC2APIProtocol::Point2D::internal_default_instance());
}
class RequestQueryBuildingPlacement::_Internal {
 public:
  using HasBits = decltype(std::declval<RequestQueryBuildingPlacement>()._has_bits_);
  static void set_has_ability_id(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static const ::SC2APIProtocol::Point2D& target_pos(const RequestQueryBuildingPlacement* msg);
  static void set_has_target_pos(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_placing_unit_tag(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::SC2APIProtocol::Point2D&
RequestQueryBuildingPlacement::_Internal::target_pos(const RequestQueryBuildingPlacement* msg) {
  return *msg->target_pos_;
}
void RequestQueryBuildingPlacement::clear_target_pos() {
  if (target_pos_ != nullptr) target_pos_->Clear();
  _has_bits_[0] &= ~0x00000001u;
}
RequestQueryBuildingPlacement::RequestQueryBuildingPlacement()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.RequestQueryBuildingPlacement)
}
RequestQueryBuildingPlacement::RequestQueryBuildingPlacement(const RequestQueryBuildingPlacement& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from._internal_has_target_pos()) {
    target_pos_ = new ::SC2APIProtocol::Point2D(*from.target_pos_);
  } else {
    target_pos_ = nullptr;
  }
  ::memcpy(&placing_unit_tag_, &from.placing_unit_tag_,
    static_cast<size_t>(reinterpret_cast<char*>(&ability_id_) -
    reinterpret_cast<char*>(&placing_unit_tag_)) + sizeof(ability_id_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.RequestQueryBuildingPlacement)
}

void RequestQueryBuildingPlacement::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_RequestQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto.base);
  ::memset(&target_pos_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&ability_id_) -
      reinterpret_cast<char*>(&target_pos_)) + sizeof(ability_id_));
}

RequestQueryBuildingPlacement::~RequestQueryBuildingPlacement() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.RequestQueryBuildingPlacement)
  SharedDtor();
}

void RequestQueryBuildingPlacement::SharedDtor() {
  if (this != internal_default_instance()) delete target_pos_;
}

void RequestQueryBuildingPlacement::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const RequestQueryBuildingPlacement& RequestQueryBuildingPlacement::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_RequestQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto.base);
  return *internal_default_instance();
}


void RequestQueryBuildingPlacement::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.RequestQueryBuildingPlacement)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(target_pos_ != nullptr);
    target_pos_->Clear();
  }
  if (cached_has_bits & 0x00000006u) {
    ::memset(&placing_unit_tag_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&ability_id_) -
        reinterpret_cast<char*>(&placing_unit_tag_)) + sizeof(ability_id_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* RequestQueryBuildingPlacement::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional int32 ability_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_ability_id(&has_bits);
          ability_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.Point2D target_pos = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_target_pos(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint64 placing_unit_tag = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_placing_unit_tag(&has_bits);
          placing_unit_tag_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* RequestQueryBuildingPlacement::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.RequestQueryBuildingPlacement)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional int32 ability_id = 1;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_ability_id(), target);
  }

  // optional .SC2APIProtocol.Point2D target_pos = 2;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::target_pos(this), target, stream);
  }

  // optional uint64 placing_unit_tag = 3;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(3, this->_internal_placing_unit_tag(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.RequestQueryBuildingPlacement)
  return target;
}

size_t RequestQueryBuildingPlacement::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.RequestQueryBuildingPlacement)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // optional .SC2APIProtocol.Point2D target_pos = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *target_pos_);
    }

    // optional uint64 placing_unit_tag = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size(
          this->_internal_placing_unit_tag());
    }

    // optional int32 ability_id = 1;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_ability_id());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void RequestQueryBuildingPlacement::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.RequestQueryBuildingPlacement)
  GOOGLE_DCHECK_NE(&from, this);
  const RequestQueryBuildingPlacement* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<RequestQueryBuildingPlacement>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.RequestQueryBuildingPlacement)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.RequestQueryBuildingPlacement)
    MergeFrom(*source);
  }
}

void RequestQueryBuildingPlacement::MergeFrom(const RequestQueryBuildingPlacement& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.RequestQueryBuildingPlacement)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_mutable_target_pos()->::SC2APIProtocol::Point2D::MergeFrom(from._internal_target_pos());
    }
    if (cached_has_bits & 0x00000002u) {
      placing_unit_tag_ = from.placing_unit_tag_;
    }
    if (cached_has_bits & 0x00000004u) {
      ability_id_ = from.ability_id_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void RequestQueryBuildingPlacement::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.RequestQueryBuildingPlacement)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void RequestQueryBuildingPlacement::CopyFrom(const RequestQueryBuildingPlacement& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.RequestQueryBuildingPlacement)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RequestQueryBuildingPlacement::IsInitialized() const {
  return true;
}

void RequestQueryBuildingPlacement::InternalSwap(RequestQueryBuildingPlacement* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(target_pos_, other->target_pos_);
  swap(placing_unit_tag_, other->placing_unit_tag_);
  swap(ability_id_, other->ability_id_);
}

::PROTOBUF_NAMESPACE_ID::Metadata RequestQueryBuildingPlacement::GetMetadata() const {
  return GetMetadataStatic();
}


// ===================================================================

void ResponseQueryBuildingPlacement::InitAsDefaultInstance() {
}
class ResponseQueryBuildingPlacement::_Internal {
 public:
  using HasBits = decltype(std::declval<ResponseQueryBuildingPlacement>()._has_bits_);
  static void set_has_result(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

ResponseQueryBuildingPlacement::ResponseQueryBuildingPlacement()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ResponseQueryBuildingPlacement)
}
ResponseQueryBuildingPlacement::ResponseQueryBuildingPlacement(const ResponseQueryBuildingPlacement& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  result_ = from.result_;
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ResponseQueryBuildingPlacement)
}

void ResponseQueryBuildingPlacement::SharedCtor() {
  result_ = 1;
}

ResponseQueryBuildingPlacement::~ResponseQueryBuildingPlacement() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ResponseQueryBuildingPlacement)
  SharedDtor();
}

void ResponseQueryBuildingPlacement::SharedDtor() {
}

void ResponseQueryBuildingPlacement::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ResponseQueryBuildingPlacement& ResponseQueryBuildingPlacement::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ResponseQueryBuildingPlacement_s2clientprotocol_2fquery_2eproto.base);
  return *internal_default_instance();
}


void ResponseQueryBuildingPlacement::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ResponseQueryBuildingPlacement)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  result_ = 1;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ResponseQueryBuildingPlacement::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional .SC2APIProtocol.ActionResult result = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::SC2APIProtocol::ActionResult_IsValid(val))) {
            _internal_set_result(static_cast<::SC2APIProtocol::ActionResult>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(1, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ResponseQueryBuildingPlacement::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ResponseQueryBuildingPlacement)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .SC2APIProtocol.ActionResult result = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      1, this->_internal_result(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ResponseQueryBuildingPlacement)
  return target;
}

size_t ResponseQueryBuildingPlacement::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ResponseQueryBuildingPlacement)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // optional .SC2APIProtocol.ActionResult result = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_result());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ResponseQueryBuildingPlacement::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ResponseQueryBuildingPlacement)
  GOOGLE_DCHECK_NE(&from, this);
  const ResponseQueryBuildingPlacement* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ResponseQueryBuildingPlacement>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ResponseQueryBuildingPlacement)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ResponseQueryBuildingPlacement)
    MergeFrom(*source);
  }
}

void ResponseQueryBuildingPlacement::MergeFrom(const ResponseQueryBuildingPlacement& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ResponseQueryBuildingPlacement)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_result()) {
    _internal_set_result(from._internal_result());
  }
}

void ResponseQueryBuildingPlacement::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ResponseQueryBuildingPlacement)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ResponseQueryBuildingPlacement::CopyFrom(const ResponseQueryBuildingPlacement& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.ResponseQueryBuildingPlacement)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ResponseQueryBuildingPlacement::IsInitialized() const {
  return true;
}

void ResponseQueryBuildingPlacement::InternalSwap(ResponseQueryBuildingPlacement* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(result_, other->result_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ResponseQueryBuildingPlacement::GetMetadata() const {
  return GetMetadataStatic();
}


// @@protoc_insertion_point(namespace_scope)
}  // namespace SC2APIProtocol
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::RequestQuery* Arena::CreateMaybeMessage< ::SC2APIProtocol::RequestQuery >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::RequestQuery >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ResponseQuery* Arena::CreateMaybeMessage< ::SC2APIProtocol::ResponseQuery >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ResponseQuery >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::RequestQueryPathing* Arena::CreateMaybeMessage< ::SC2APIProtocol::RequestQueryPathing >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::RequestQueryPathing >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ResponseQueryPathing* Arena::CreateMaybeMessage< ::SC2APIProtocol::ResponseQueryPathing >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ResponseQueryPathing >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::RequestQueryAvailableAbilities* Arena::CreateMaybeMessage< ::SC2APIProtocol::RequestQueryAvailableAbilities >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::RequestQueryAvailableAbilities >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ResponseQueryAvailableAbilities* Arena::CreateMaybeMessage< ::SC2APIProtocol::ResponseQueryAvailableAbilities >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ResponseQueryAvailableAbilities >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::RequestQueryBuildingPlacement* Arena::CreateMaybeMessage< ::SC2APIProtocol::RequestQueryBuildingPlacement >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::RequestQueryBuildingPlacement >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ResponseQueryBuildingPlacement* Arena::CreateMaybeMessage< ::SC2APIProtocol::ResponseQueryBuildingPlacement >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ResponseQueryBuildingPlacement >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>
