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

#ifndef GOOGLE_PROTOBUF_INCLUDED_s2clientprotocol_2fquery_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_s2clientprotocol_2fquery_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3011000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3011002 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/inlined_string_field.h>
#include <google/protobuf/metadata.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/unknown_field_set.h>
#include "s2clientprotocol/common.pb.h"
#include "s2clientprotocol/error.pb.h"
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fquery_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_s2clientprotocol_2fquery_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[8]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_s2clientprotocol_2fquery_2eproto;
namespace SC2APIProtocol {
class RequestQuery;
class RequestQueryDefaultTypeInternal;
extern RequestQueryDefaultTypeInternal _RequestQuery_default_instance_;
class RequestQueryAvailableAbilities;
class RequestQueryAvailableAbilitiesDefaultTypeInternal;
extern RequestQueryAvailableAbilitiesDefaultTypeInternal _RequestQueryAvailableAbilities_default_instance_;
class RequestQueryBuildingPlacement;
class RequestQueryBuildingPlacementDefaultTypeInternal;
extern RequestQueryBuildingPlacementDefaultTypeInternal _RequestQueryBuildingPlacement_default_instance_;
class RequestQueryPathing;
class RequestQueryPathingDefaultTypeInternal;
extern RequestQueryPathingDefaultTypeInternal _RequestQueryPathing_default_instance_;
class ResponseQuery;
class ResponseQueryDefaultTypeInternal;
extern ResponseQueryDefaultTypeInternal _ResponseQuery_default_instance_;
class ResponseQueryAvailableAbilities;
class ResponseQueryAvailableAbilitiesDefaultTypeInternal;
extern ResponseQueryAvailableAbilitiesDefaultTypeInternal _ResponseQueryAvailableAbilities_default_instance_;
class ResponseQueryBuildingPlacement;
class ResponseQueryBuildingPlacementDefaultTypeInternal;
extern ResponseQueryBuildingPlacementDefaultTypeInternal _ResponseQueryBuildingPlacement_default_instance_;
class ResponseQueryPathing;
class ResponseQueryPathingDefaultTypeInternal;
extern ResponseQueryPathingDefaultTypeInternal _ResponseQueryPathing_default_instance_;
}  // namespace SC2APIProtocol
PROTOBUF_NAMESPACE_OPEN
template<> ::SC2APIProtocol::RequestQuery* Arena::CreateMaybeMessage<::SC2APIProtocol::RequestQuery>(Arena*);
template<> ::SC2APIProtocol::RequestQueryAvailableAbilities* Arena::CreateMaybeMessage<::SC2APIProtocol::RequestQueryAvailableAbilities>(Arena*);
template<> ::SC2APIProtocol::RequestQueryBuildingPlacement* Arena::CreateMaybeMessage<::SC2APIProtocol::RequestQueryBuildingPlacement>(Arena*);
template<> ::SC2APIProtocol::RequestQueryPathing* Arena::CreateMaybeMessage<::SC2APIProtocol::RequestQueryPathing>(Arena*);
template<> ::SC2APIProtocol::ResponseQuery* Arena::CreateMaybeMessage<::SC2APIProtocol::ResponseQuery>(Arena*);
template<> ::SC2APIProtocol::ResponseQueryAvailableAbilities* Arena::CreateMaybeMessage<::SC2APIProtocol::ResponseQueryAvailableAbilities>(Arena*);
template<> ::SC2APIProtocol::ResponseQueryBuildingPlacement* Arena::CreateMaybeMessage<::SC2APIProtocol::ResponseQueryBuildingPlacement>(Arena*);
template<> ::SC2APIProtocol::ResponseQueryPathing* Arena::CreateMaybeMessage<::SC2APIProtocol::ResponseQueryPathing>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace SC2APIProtocol {

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

class RequestQuery :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.RequestQuery) */ {
 public:
  RequestQuery();
  virtual ~RequestQuery();

  RequestQuery(const RequestQuery& from);
  RequestQuery(RequestQuery&& from) noexcept
    : RequestQuery() {
    *this = ::std::move(from);
  }

  inline RequestQuery& operator=(const RequestQuery& from) {
    CopyFrom(from);
    return *this;
  }
  inline RequestQuery& operator=(RequestQuery&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const RequestQuery& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const RequestQuery* internal_default_instance() {
    return reinterpret_cast<const RequestQuery*>(
               &_RequestQuery_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(RequestQuery& a, RequestQuery& b) {
    a.Swap(&b);
  }
  inline void Swap(RequestQuery* other) {
    if (other == this) return;
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline RequestQuery* New() const final {
    return CreateMaybeMessage<RequestQuery>(nullptr);
  }

  RequestQuery* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<RequestQuery>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const RequestQuery& from);
  void MergeFrom(const RequestQuery& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(RequestQuery* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.RequestQuery";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fquery_2eproto);
    return ::descriptor_table_s2clientprotocol_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kPathingFieldNumber = 1,
    kAbilitiesFieldNumber = 2,
    kPlacementsFieldNumber = 3,
    kIgnoreResourceRequirementsFieldNumber = 4,
  };
  // repeated .SC2APIProtocol.RequestQueryPathing pathing = 1;
  int pathing_size() const;
  private:
  int _internal_pathing_size() const;
  public:
  void clear_pathing();
  ::SC2APIProtocol::RequestQueryPathing* mutable_pathing(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryPathing >*
      mutable_pathing();
  private:
  const ::SC2APIProtocol::RequestQueryPathing& _internal_pathing(int index) const;
  ::SC2APIProtocol::RequestQueryPathing* _internal_add_pathing();
  public:
  const ::SC2APIProtocol::RequestQueryPathing& pathing(int index) const;
  ::SC2APIProtocol::RequestQueryPathing* add_pathing();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryPathing >&
      pathing() const;

  // repeated .SC2APIProtocol.RequestQueryAvailableAbilities abilities = 2;
  int abilities_size() const;
  private:
  int _internal_abilities_size() const;
  public:
  void clear_abilities();
  ::SC2APIProtocol::RequestQueryAvailableAbilities* mutable_abilities(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryAvailableAbilities >*
      mutable_abilities();
  private:
  const ::SC2APIProtocol::RequestQueryAvailableAbilities& _internal_abilities(int index) const;
  ::SC2APIProtocol::RequestQueryAvailableAbilities* _internal_add_abilities();
  public:
  const ::SC2APIProtocol::RequestQueryAvailableAbilities& abilities(int index) const;
  ::SC2APIProtocol::RequestQueryAvailableAbilities* add_abilities();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryAvailableAbilities >&
      abilities() const;

  // repeated .SC2APIProtocol.RequestQueryBuildingPlacement placements = 3;
  int placements_size() const;
  private:
  int _internal_placements_size() const;
  public:
  void clear_placements();
  ::SC2APIProtocol::RequestQueryBuildingPlacement* mutable_placements(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryBuildingPlacement >*
      mutable_placements();
  private:
  const ::SC2APIProtocol::RequestQueryBuildingPlacement& _internal_placements(int index) const;
  ::SC2APIProtocol::RequestQueryBuildingPlacement* _internal_add_placements();
  public:
  const ::SC2APIProtocol::RequestQueryBuildingPlacement& placements(int index) const;
  ::SC2APIProtocol::RequestQueryBuildingPlacement* add_placements();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryBuildingPlacement >&
      placements() const;

  // optional bool ignore_resource_requirements = 4;
  bool has_ignore_resource_requirements() const;
  private:
  bool _internal_has_ignore_resource_requirements() const;
  public:
  void clear_ignore_resource_requirements();
  bool ignore_resource_requirements() const;
  void set_ignore_resource_requirements(bool value);
  private:
  bool _internal_ignore_resource_requirements() const;
  void _internal_set_ignore_resource_requirements(bool value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.RequestQuery)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryPathing > pathing_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryAvailableAbilities > abilities_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryBuildingPlacement > placements_;
  bool ignore_resource_requirements_;
  friend struct ::TableStruct_s2clientprotocol_2fquery_2eproto;
};
// -------------------------------------------------------------------

class ResponseQuery :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ResponseQuery) */ {
 public:
  ResponseQuery();
  virtual ~ResponseQuery();

  ResponseQuery(const ResponseQuery& from);
  ResponseQuery(ResponseQuery&& from) noexcept
    : ResponseQuery() {
    *this = ::std::move(from);
  }

  inline ResponseQuery& operator=(const ResponseQuery& from) {
    CopyFrom(from);
    return *this;
  }
  inline ResponseQuery& operator=(ResponseQuery&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ResponseQuery& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ResponseQuery* internal_default_instance() {
    return reinterpret_cast<const ResponseQuery*>(
               &_ResponseQuery_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(ResponseQuery& a, ResponseQuery& b) {
    a.Swap(&b);
  }
  inline void Swap(ResponseQuery* other) {
    if (other == this) return;
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ResponseQuery* New() const final {
    return CreateMaybeMessage<ResponseQuery>(nullptr);
  }

  ResponseQuery* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ResponseQuery>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ResponseQuery& from);
  void MergeFrom(const ResponseQuery& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ResponseQuery* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ResponseQuery";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fquery_2eproto);
    return ::descriptor_table_s2clientprotocol_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kPathingFieldNumber = 1,
    kAbilitiesFieldNumber = 2,
    kPlacementsFieldNumber = 3,
  };
  // repeated .SC2APIProtocol.ResponseQueryPathing pathing = 1;
  int pathing_size() const;
  private:
  int _internal_pathing_size() const;
  public:
  void clear_pathing();
  ::SC2APIProtocol::ResponseQueryPathing* mutable_pathing(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryPathing >*
      mutable_pathing();
  private:
  const ::SC2APIProtocol::ResponseQueryPathing& _internal_pathing(int index) const;
  ::SC2APIProtocol::ResponseQueryPathing* _internal_add_pathing();
  public:
  const ::SC2APIProtocol::ResponseQueryPathing& pathing(int index) const;
  ::SC2APIProtocol::ResponseQueryPathing* add_pathing();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryPathing >&
      pathing() const;

  // repeated .SC2APIProtocol.ResponseQueryAvailableAbilities abilities = 2;
  int abilities_size() const;
  private:
  int _internal_abilities_size() const;
  public:
  void clear_abilities();
  ::SC2APIProtocol::ResponseQueryAvailableAbilities* mutable_abilities(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryAvailableAbilities >*
      mutable_abilities();
  private:
  const ::SC2APIProtocol::ResponseQueryAvailableAbilities& _internal_abilities(int index) const;
  ::SC2APIProtocol::ResponseQueryAvailableAbilities* _internal_add_abilities();
  public:
  const ::SC2APIProtocol::ResponseQueryAvailableAbilities& abilities(int index) const;
  ::SC2APIProtocol::ResponseQueryAvailableAbilities* add_abilities();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryAvailableAbilities >&
      abilities() const;

  // repeated .SC2APIProtocol.ResponseQueryBuildingPlacement placements = 3;
  int placements_size() const;
  private:
  int _internal_placements_size() const;
  public:
  void clear_placements();
  ::SC2APIProtocol::ResponseQueryBuildingPlacement* mutable_placements(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryBuildingPlacement >*
      mutable_placements();
  private:
  const ::SC2APIProtocol::ResponseQueryBuildingPlacement& _internal_placements(int index) const;
  ::SC2APIProtocol::ResponseQueryBuildingPlacement* _internal_add_placements();
  public:
  const ::SC2APIProtocol::ResponseQueryBuildingPlacement& placements(int index) const;
  ::SC2APIProtocol::ResponseQueryBuildingPlacement* add_placements();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryBuildingPlacement >&
      placements() const;

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ResponseQuery)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryPathing > pathing_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryAvailableAbilities > abilities_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryBuildingPlacement > placements_;
  friend struct ::TableStruct_s2clientprotocol_2fquery_2eproto;
};
// -------------------------------------------------------------------

class RequestQueryPathing :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.RequestQueryPathing) */ {
 public:
  RequestQueryPathing();
  virtual ~RequestQueryPathing();

  RequestQueryPathing(const RequestQueryPathing& from);
  RequestQueryPathing(RequestQueryPathing&& from) noexcept
    : RequestQueryPathing() {
    *this = ::std::move(from);
  }

  inline RequestQueryPathing& operator=(const RequestQueryPathing& from) {
    CopyFrom(from);
    return *this;
  }
  inline RequestQueryPathing& operator=(RequestQueryPathing&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const RequestQueryPathing& default_instance();

  enum StartCase {
    kStartPos = 1,
    kUnitTag = 2,
    START_NOT_SET = 0,
  };

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const RequestQueryPathing* internal_default_instance() {
    return reinterpret_cast<const RequestQueryPathing*>(
               &_RequestQueryPathing_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(RequestQueryPathing& a, RequestQueryPathing& b) {
    a.Swap(&b);
  }
  inline void Swap(RequestQueryPathing* other) {
    if (other == this) return;
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline RequestQueryPathing* New() const final {
    return CreateMaybeMessage<RequestQueryPathing>(nullptr);
  }

  RequestQueryPathing* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<RequestQueryPathing>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const RequestQueryPathing& from);
  void MergeFrom(const RequestQueryPathing& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(RequestQueryPathing* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.RequestQueryPathing";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fquery_2eproto);
    return ::descriptor_table_s2clientprotocol_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kEndPosFieldNumber = 3,
    kStartPosFieldNumber = 1,
    kUnitTagFieldNumber = 2,
  };
  // optional .SC2APIProtocol.Point2D end_pos = 3;
  bool has_end_pos() const;
  private:
  bool _internal_has_end_pos() const;
  public:
  void clear_end_pos();
  const ::SC2APIProtocol::Point2D& end_pos() const;
  ::SC2APIProtocol::Point2D* release_end_pos();
  ::SC2APIProtocol::Point2D* mutable_end_pos();
  void set_allocated_end_pos(::SC2APIProtocol::Point2D* end_pos);
  private:
  const ::SC2APIProtocol::Point2D& _internal_end_pos() const;
  ::SC2APIProtocol::Point2D* _internal_mutable_end_pos();
  public:

  // optional .SC2APIProtocol.Point2D start_pos = 1;
  bool has_start_pos() const;
  private:
  bool _internal_has_start_pos() const;
  public:
  void clear_start_pos();
  const ::SC2APIProtocol::Point2D& start_pos() const;
  ::SC2APIProtocol::Point2D* release_start_pos();
  ::SC2APIProtocol::Point2D* mutable_start_pos();
  void set_allocated_start_pos(::SC2APIProtocol::Point2D* start_pos);
  private:
  const ::SC2APIProtocol::Point2D& _internal_start_pos() const;
  ::SC2APIProtocol::Point2D* _internal_mutable_start_pos();
  public:

  // optional uint64 unit_tag = 2;
  bool has_unit_tag() const;
  private:
  bool _internal_has_unit_tag() const;
  public:
  void clear_unit_tag();
  ::PROTOBUF_NAMESPACE_ID::uint64 unit_tag() const;
  void set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint64 _internal_unit_tag() const;
  void _internal_set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value);
  public:

  void clear_start();
  StartCase start_case() const;
  // @@protoc_insertion_point(class_scope:SC2APIProtocol.RequestQueryPathing)
 private:
  class _Internal;
  void set_has_start_pos();
  void set_has_unit_tag();

  inline bool has_start() const;
  inline void clear_has_start();

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::SC2APIProtocol::Point2D* end_pos_;
  union StartUnion {
    StartUnion() {}
    ::SC2APIProtocol::Point2D* start_pos_;
    ::PROTOBUF_NAMESPACE_ID::uint64 unit_tag_;
  } start_;
  ::PROTOBUF_NAMESPACE_ID::uint32 _oneof_case_[1];

  friend struct ::TableStruct_s2clientprotocol_2fquery_2eproto;
};
// -------------------------------------------------------------------

class ResponseQueryPathing :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ResponseQueryPathing) */ {
 public:
  ResponseQueryPathing();
  virtual ~ResponseQueryPathing();

  ResponseQueryPathing(const ResponseQueryPathing& from);
  ResponseQueryPathing(ResponseQueryPathing&& from) noexcept
    : ResponseQueryPathing() {
    *this = ::std::move(from);
  }

  inline ResponseQueryPathing& operator=(const ResponseQueryPathing& from) {
    CopyFrom(from);
    return *this;
  }
  inline ResponseQueryPathing& operator=(ResponseQueryPathing&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ResponseQueryPathing& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ResponseQueryPathing* internal_default_instance() {
    return reinterpret_cast<const ResponseQueryPathing*>(
               &_ResponseQueryPathing_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(ResponseQueryPathing& a, ResponseQueryPathing& b) {
    a.Swap(&b);
  }
  inline void Swap(ResponseQueryPathing* other) {
    if (other == this) return;
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ResponseQueryPathing* New() const final {
    return CreateMaybeMessage<ResponseQueryPathing>(nullptr);
  }

  ResponseQueryPathing* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ResponseQueryPathing>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ResponseQueryPathing& from);
  void MergeFrom(const ResponseQueryPathing& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ResponseQueryPathing* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ResponseQueryPathing";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fquery_2eproto);
    return ::descriptor_table_s2clientprotocol_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDistanceFieldNumber = 1,
  };
  // optional float distance = 1;
  bool has_distance() const;
  private:
  bool _internal_has_distance() const;
  public:
  void clear_distance();
  float distance() const;
  void set_distance(float value);
  private:
  float _internal_distance() const;
  void _internal_set_distance(float value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ResponseQueryPathing)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  float distance_;
  friend struct ::TableStruct_s2clientprotocol_2fquery_2eproto;
};
// -------------------------------------------------------------------

class RequestQueryAvailableAbilities :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.RequestQueryAvailableAbilities) */ {
 public:
  RequestQueryAvailableAbilities();
  virtual ~RequestQueryAvailableAbilities();

  RequestQueryAvailableAbilities(const RequestQueryAvailableAbilities& from);
  RequestQueryAvailableAbilities(RequestQueryAvailableAbilities&& from) noexcept
    : RequestQueryAvailableAbilities() {
    *this = ::std::move(from);
  }

  inline RequestQueryAvailableAbilities& operator=(const RequestQueryAvailableAbilities& from) {
    CopyFrom(from);
    return *this;
  }
  inline RequestQueryAvailableAbilities& operator=(RequestQueryAvailableAbilities&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const RequestQueryAvailableAbilities& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const RequestQueryAvailableAbilities* internal_default_instance() {
    return reinterpret_cast<const RequestQueryAvailableAbilities*>(
               &_RequestQueryAvailableAbilities_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(RequestQueryAvailableAbilities& a, RequestQueryAvailableAbilities& b) {
    a.Swap(&b);
  }
  inline void Swap(RequestQueryAvailableAbilities* other) {
    if (other == this) return;
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline RequestQueryAvailableAbilities* New() const final {
    return CreateMaybeMessage<RequestQueryAvailableAbilities>(nullptr);
  }

  RequestQueryAvailableAbilities* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<RequestQueryAvailableAbilities>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const RequestQueryAvailableAbilities& from);
  void MergeFrom(const RequestQueryAvailableAbilities& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(RequestQueryAvailableAbilities* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.RequestQueryAvailableAbilities";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fquery_2eproto);
    return ::descriptor_table_s2clientprotocol_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kUnitTagFieldNumber = 1,
  };
  // optional uint64 unit_tag = 1;
  bool has_unit_tag() const;
  private:
  bool _internal_has_unit_tag() const;
  public:
  void clear_unit_tag();
  ::PROTOBUF_NAMESPACE_ID::uint64 unit_tag() const;
  void set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint64 _internal_unit_tag() const;
  void _internal_set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.RequestQueryAvailableAbilities)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::uint64 unit_tag_;
  friend struct ::TableStruct_s2clientprotocol_2fquery_2eproto;
};
// -------------------------------------------------------------------

class ResponseQueryAvailableAbilities :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ResponseQueryAvailableAbilities) */ {
 public:
  ResponseQueryAvailableAbilities();
  virtual ~ResponseQueryAvailableAbilities();

  ResponseQueryAvailableAbilities(const ResponseQueryAvailableAbilities& from);
  ResponseQueryAvailableAbilities(ResponseQueryAvailableAbilities&& from) noexcept
    : ResponseQueryAvailableAbilities() {
    *this = ::std::move(from);
  }

  inline ResponseQueryAvailableAbilities& operator=(const ResponseQueryAvailableAbilities& from) {
    CopyFrom(from);
    return *this;
  }
  inline ResponseQueryAvailableAbilities& operator=(ResponseQueryAvailableAbilities&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ResponseQueryAvailableAbilities& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ResponseQueryAvailableAbilities* internal_default_instance() {
    return reinterpret_cast<const ResponseQueryAvailableAbilities*>(
               &_ResponseQueryAvailableAbilities_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(ResponseQueryAvailableAbilities& a, ResponseQueryAvailableAbilities& b) {
    a.Swap(&b);
  }
  inline void Swap(ResponseQueryAvailableAbilities* other) {
    if (other == this) return;
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ResponseQueryAvailableAbilities* New() const final {
    return CreateMaybeMessage<ResponseQueryAvailableAbilities>(nullptr);
  }

  ResponseQueryAvailableAbilities* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ResponseQueryAvailableAbilities>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ResponseQueryAvailableAbilities& from);
  void MergeFrom(const ResponseQueryAvailableAbilities& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ResponseQueryAvailableAbilities* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ResponseQueryAvailableAbilities";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fquery_2eproto);
    return ::descriptor_table_s2clientprotocol_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kAbilitiesFieldNumber = 1,
    kUnitTagFieldNumber = 2,
    kUnitTypeIdFieldNumber = 3,
  };
  // repeated .SC2APIProtocol.AvailableAbility abilities = 1;
  int abilities_size() const;
  private:
  int _internal_abilities_size() const;
  public:
  void clear_abilities();
  ::SC2APIProtocol::AvailableAbility* mutable_abilities(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::AvailableAbility >*
      mutable_abilities();
  private:
  const ::SC2APIProtocol::AvailableAbility& _internal_abilities(int index) const;
  ::SC2APIProtocol::AvailableAbility* _internal_add_abilities();
  public:
  const ::SC2APIProtocol::AvailableAbility& abilities(int index) const;
  ::SC2APIProtocol::AvailableAbility* add_abilities();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::AvailableAbility >&
      abilities() const;

  // optional uint64 unit_tag = 2;
  bool has_unit_tag() const;
  private:
  bool _internal_has_unit_tag() const;
  public:
  void clear_unit_tag();
  ::PROTOBUF_NAMESPACE_ID::uint64 unit_tag() const;
  void set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint64 _internal_unit_tag() const;
  void _internal_set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value);
  public:

  // optional uint32 unit_type_id = 3;
  bool has_unit_type_id() const;
  private:
  bool _internal_has_unit_type_id() const;
  public:
  void clear_unit_type_id();
  ::PROTOBUF_NAMESPACE_ID::uint32 unit_type_id() const;
  void set_unit_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_unit_type_id() const;
  void _internal_set_unit_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ResponseQueryAvailableAbilities)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::AvailableAbility > abilities_;
  ::PROTOBUF_NAMESPACE_ID::uint64 unit_tag_;
  ::PROTOBUF_NAMESPACE_ID::uint32 unit_type_id_;
  friend struct ::TableStruct_s2clientprotocol_2fquery_2eproto;
};
// -------------------------------------------------------------------

class RequestQueryBuildingPlacement :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.RequestQueryBuildingPlacement) */ {
 public:
  RequestQueryBuildingPlacement();
  virtual ~RequestQueryBuildingPlacement();

  RequestQueryBuildingPlacement(const RequestQueryBuildingPlacement& from);
  RequestQueryBuildingPlacement(RequestQueryBuildingPlacement&& from) noexcept
    : RequestQueryBuildingPlacement() {
    *this = ::std::move(from);
  }

  inline RequestQueryBuildingPlacement& operator=(const RequestQueryBuildingPlacement& from) {
    CopyFrom(from);
    return *this;
  }
  inline RequestQueryBuildingPlacement& operator=(RequestQueryBuildingPlacement&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const RequestQueryBuildingPlacement& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const RequestQueryBuildingPlacement* internal_default_instance() {
    return reinterpret_cast<const RequestQueryBuildingPlacement*>(
               &_RequestQueryBuildingPlacement_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(RequestQueryBuildingPlacement& a, RequestQueryBuildingPlacement& b) {
    a.Swap(&b);
  }
  inline void Swap(RequestQueryBuildingPlacement* other) {
    if (other == this) return;
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline RequestQueryBuildingPlacement* New() const final {
    return CreateMaybeMessage<RequestQueryBuildingPlacement>(nullptr);
  }

  RequestQueryBuildingPlacement* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<RequestQueryBuildingPlacement>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const RequestQueryBuildingPlacement& from);
  void MergeFrom(const RequestQueryBuildingPlacement& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(RequestQueryBuildingPlacement* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.RequestQueryBuildingPlacement";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fquery_2eproto);
    return ::descriptor_table_s2clientprotocol_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kTargetPosFieldNumber = 2,
    kPlacingUnitTagFieldNumber = 3,
    kAbilityIdFieldNumber = 1,
  };
  // optional .SC2APIProtocol.Point2D target_pos = 2;
  bool has_target_pos() const;
  private:
  bool _internal_has_target_pos() const;
  public:
  void clear_target_pos();
  const ::SC2APIProtocol::Point2D& target_pos() const;
  ::SC2APIProtocol::Point2D* release_target_pos();
  ::SC2APIProtocol::Point2D* mutable_target_pos();
  void set_allocated_target_pos(::SC2APIProtocol::Point2D* target_pos);
  private:
  const ::SC2APIProtocol::Point2D& _internal_target_pos() const;
  ::SC2APIProtocol::Point2D* _internal_mutable_target_pos();
  public:

  // optional uint64 placing_unit_tag = 3;
  bool has_placing_unit_tag() const;
  private:
  bool _internal_has_placing_unit_tag() const;
  public:
  void clear_placing_unit_tag();
  ::PROTOBUF_NAMESPACE_ID::uint64 placing_unit_tag() const;
  void set_placing_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint64 _internal_placing_unit_tag() const;
  void _internal_set_placing_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value);
  public:

  // optional int32 ability_id = 1;
  bool has_ability_id() const;
  private:
  bool _internal_has_ability_id() const;
  public:
  void clear_ability_id();
  ::PROTOBUF_NAMESPACE_ID::int32 ability_id() const;
  void set_ability_id(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_ability_id() const;
  void _internal_set_ability_id(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.RequestQueryBuildingPlacement)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::SC2APIProtocol::Point2D* target_pos_;
  ::PROTOBUF_NAMESPACE_ID::uint64 placing_unit_tag_;
  ::PROTOBUF_NAMESPACE_ID::int32 ability_id_;
  friend struct ::TableStruct_s2clientprotocol_2fquery_2eproto;
};
// -------------------------------------------------------------------

class ResponseQueryBuildingPlacement :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ResponseQueryBuildingPlacement) */ {
 public:
  ResponseQueryBuildingPlacement();
  virtual ~ResponseQueryBuildingPlacement();

  ResponseQueryBuildingPlacement(const ResponseQueryBuildingPlacement& from);
  ResponseQueryBuildingPlacement(ResponseQueryBuildingPlacement&& from) noexcept
    : ResponseQueryBuildingPlacement() {
    *this = ::std::move(from);
  }

  inline ResponseQueryBuildingPlacement& operator=(const ResponseQueryBuildingPlacement& from) {
    CopyFrom(from);
    return *this;
  }
  inline ResponseQueryBuildingPlacement& operator=(ResponseQueryBuildingPlacement&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ResponseQueryBuildingPlacement& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ResponseQueryBuildingPlacement* internal_default_instance() {
    return reinterpret_cast<const ResponseQueryBuildingPlacement*>(
               &_ResponseQueryBuildingPlacement_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  friend void swap(ResponseQueryBuildingPlacement& a, ResponseQueryBuildingPlacement& b) {
    a.Swap(&b);
  }
  inline void Swap(ResponseQueryBuildingPlacement* other) {
    if (other == this) return;
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ResponseQueryBuildingPlacement* New() const final {
    return CreateMaybeMessage<ResponseQueryBuildingPlacement>(nullptr);
  }

  ResponseQueryBuildingPlacement* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ResponseQueryBuildingPlacement>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ResponseQueryBuildingPlacement& from);
  void MergeFrom(const ResponseQueryBuildingPlacement& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ResponseQueryBuildingPlacement* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ResponseQueryBuildingPlacement";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fquery_2eproto);
    return ::descriptor_table_s2clientprotocol_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kResultFieldNumber = 1,
  };
  // optional .SC2APIProtocol.ActionResult result = 1;
  bool has_result() const;
  private:
  bool _internal_has_result() const;
  public:
  void clear_result();
  ::SC2APIProtocol::ActionResult result() const;
  void set_result(::SC2APIProtocol::ActionResult value);
  private:
  ::SC2APIProtocol::ActionResult _internal_result() const;
  void _internal_set_result(::SC2APIProtocol::ActionResult value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ResponseQueryBuildingPlacement)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  int result_;
  friend struct ::TableStruct_s2clientprotocol_2fquery_2eproto;
};
// ===================================================================


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

#ifdef __GNUC__
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// RequestQuery

// repeated .SC2APIProtocol.RequestQueryPathing pathing = 1;
inline int RequestQuery::_internal_pathing_size() const {
  return pathing_.size();
}
inline int RequestQuery::pathing_size() const {
  return _internal_pathing_size();
}
inline void RequestQuery::clear_pathing() {
  pathing_.Clear();
}
inline ::SC2APIProtocol::RequestQueryPathing* RequestQuery::mutable_pathing(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.RequestQuery.pathing)
  return pathing_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryPathing >*
RequestQuery::mutable_pathing() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.RequestQuery.pathing)
  return &pathing_;
}
inline const ::SC2APIProtocol::RequestQueryPathing& RequestQuery::_internal_pathing(int index) const {
  return pathing_.Get(index);
}
inline const ::SC2APIProtocol::RequestQueryPathing& RequestQuery::pathing(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.RequestQuery.pathing)
  return _internal_pathing(index);
}
inline ::SC2APIProtocol::RequestQueryPathing* RequestQuery::_internal_add_pathing() {
  return pathing_.Add();
}
inline ::SC2APIProtocol::RequestQueryPathing* RequestQuery::add_pathing() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.RequestQuery.pathing)
  return _internal_add_pathing();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryPathing >&
RequestQuery::pathing() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.RequestQuery.pathing)
  return pathing_;
}

// repeated .SC2APIProtocol.RequestQueryAvailableAbilities abilities = 2;
inline int RequestQuery::_internal_abilities_size() const {
  return abilities_.size();
}
inline int RequestQuery::abilities_size() const {
  return _internal_abilities_size();
}
inline void RequestQuery::clear_abilities() {
  abilities_.Clear();
}
inline ::SC2APIProtocol::RequestQueryAvailableAbilities* RequestQuery::mutable_abilities(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.RequestQuery.abilities)
  return abilities_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryAvailableAbilities >*
RequestQuery::mutable_abilities() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.RequestQuery.abilities)
  return &abilities_;
}
inline const ::SC2APIProtocol::RequestQueryAvailableAbilities& RequestQuery::_internal_abilities(int index) const {
  return abilities_.Get(index);
}
inline const ::SC2APIProtocol::RequestQueryAvailableAbilities& RequestQuery::abilities(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.RequestQuery.abilities)
  return _internal_abilities(index);
}
inline ::SC2APIProtocol::RequestQueryAvailableAbilities* RequestQuery::_internal_add_abilities() {
  return abilities_.Add();
}
inline ::SC2APIProtocol::RequestQueryAvailableAbilities* RequestQuery::add_abilities() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.RequestQuery.abilities)
  return _internal_add_abilities();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryAvailableAbilities >&
RequestQuery::abilities() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.RequestQuery.abilities)
  return abilities_;
}

// repeated .SC2APIProtocol.RequestQueryBuildingPlacement placements = 3;
inline int RequestQuery::_internal_placements_size() const {
  return placements_.size();
}
inline int RequestQuery::placements_size() const {
  return _internal_placements_size();
}
inline void RequestQuery::clear_placements() {
  placements_.Clear();
}
inline ::SC2APIProtocol::RequestQueryBuildingPlacement* RequestQuery::mutable_placements(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.RequestQuery.placements)
  return placements_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryBuildingPlacement >*
RequestQuery::mutable_placements() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.RequestQuery.placements)
  return &placements_;
}
inline const ::SC2APIProtocol::RequestQueryBuildingPlacement& RequestQuery::_internal_placements(int index) const {
  return placements_.Get(index);
}
inline const ::SC2APIProtocol::RequestQueryBuildingPlacement& RequestQuery::placements(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.RequestQuery.placements)
  return _internal_placements(index);
}
inline ::SC2APIProtocol::RequestQueryBuildingPlacement* RequestQuery::_internal_add_placements() {
  return placements_.Add();
}
inline ::SC2APIProtocol::RequestQueryBuildingPlacement* RequestQuery::add_placements() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.RequestQuery.placements)
  return _internal_add_placements();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::RequestQueryBuildingPlacement >&
RequestQuery::placements() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.RequestQuery.placements)
  return placements_;
}

// optional bool ignore_resource_requirements = 4;
inline bool RequestQuery::_internal_has_ignore_resource_requirements() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool RequestQuery::has_ignore_resource_requirements() const {
  return _internal_has_ignore_resource_requirements();
}
inline void RequestQuery::clear_ignore_resource_requirements() {
  ignore_resource_requirements_ = false;
  _has_bits_[0] &= ~0x00000001u;
}
inline bool RequestQuery::_internal_ignore_resource_requirements() const {
  return ignore_resource_requirements_;
}
inline bool RequestQuery::ignore_resource_requirements() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.RequestQuery.ignore_resource_requirements)
  return _internal_ignore_resource_requirements();
}
inline void RequestQuery::_internal_set_ignore_resource_requirements(bool value) {
  _has_bits_[0] |= 0x00000001u;
  ignore_resource_requirements_ = value;
}
inline void RequestQuery::set_ignore_resource_requirements(bool value) {
  _internal_set_ignore_resource_requirements(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.RequestQuery.ignore_resource_requirements)
}

// -------------------------------------------------------------------

// ResponseQuery

// repeated .SC2APIProtocol.ResponseQueryPathing pathing = 1;
inline int ResponseQuery::_internal_pathing_size() const {
  return pathing_.size();
}
inline int ResponseQuery::pathing_size() const {
  return _internal_pathing_size();
}
inline void ResponseQuery::clear_pathing() {
  pathing_.Clear();
}
inline ::SC2APIProtocol::ResponseQueryPathing* ResponseQuery::mutable_pathing(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ResponseQuery.pathing)
  return pathing_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryPathing >*
ResponseQuery::mutable_pathing() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.ResponseQuery.pathing)
  return &pathing_;
}
inline const ::SC2APIProtocol::ResponseQueryPathing& ResponseQuery::_internal_pathing(int index) const {
  return pathing_.Get(index);
}
inline const ::SC2APIProtocol::ResponseQueryPathing& ResponseQuery::pathing(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ResponseQuery.pathing)
  return _internal_pathing(index);
}
inline ::SC2APIProtocol::ResponseQueryPathing* ResponseQuery::_internal_add_pathing() {
  return pathing_.Add();
}
inline ::SC2APIProtocol::ResponseQueryPathing* ResponseQuery::add_pathing() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.ResponseQuery.pathing)
  return _internal_add_pathing();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryPathing >&
ResponseQuery::pathing() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.ResponseQuery.pathing)
  return pathing_;
}

// repeated .SC2APIProtocol.ResponseQueryAvailableAbilities abilities = 2;
inline int ResponseQuery::_internal_abilities_size() const {
  return abilities_.size();
}
inline int ResponseQuery::abilities_size() const {
  return _internal_abilities_size();
}
inline void ResponseQuery::clear_abilities() {
  abilities_.Clear();
}
inline ::SC2APIProtocol::ResponseQueryAvailableAbilities* ResponseQuery::mutable_abilities(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ResponseQuery.abilities)
  return abilities_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryAvailableAbilities >*
ResponseQuery::mutable_abilities() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.ResponseQuery.abilities)
  return &abilities_;
}
inline const ::SC2APIProtocol::ResponseQueryAvailableAbilities& ResponseQuery::_internal_abilities(int index) const {
  return abilities_.Get(index);
}
inline const ::SC2APIProtocol::ResponseQueryAvailableAbilities& ResponseQuery::abilities(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ResponseQuery.abilities)
  return _internal_abilities(index);
}
inline ::SC2APIProtocol::ResponseQueryAvailableAbilities* ResponseQuery::_internal_add_abilities() {
  return abilities_.Add();
}
inline ::SC2APIProtocol::ResponseQueryAvailableAbilities* ResponseQuery::add_abilities() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.ResponseQuery.abilities)
  return _internal_add_abilities();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryAvailableAbilities >&
ResponseQuery::abilities() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.ResponseQuery.abilities)
  return abilities_;
}

// repeated .SC2APIProtocol.ResponseQueryBuildingPlacement placements = 3;
inline int ResponseQuery::_internal_placements_size() const {
  return placements_.size();
}
inline int ResponseQuery::placements_size() const {
  return _internal_placements_size();
}
inline void ResponseQuery::clear_placements() {
  placements_.Clear();
}
inline ::SC2APIProtocol::ResponseQueryBuildingPlacement* ResponseQuery::mutable_placements(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ResponseQuery.placements)
  return placements_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryBuildingPlacement >*
ResponseQuery::mutable_placements() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.ResponseQuery.placements)
  return &placements_;
}
inline const ::SC2APIProtocol::ResponseQueryBuildingPlacement& ResponseQuery::_internal_placements(int index) const {
  return placements_.Get(index);
}
inline const ::SC2APIProtocol::ResponseQueryBuildingPlacement& ResponseQuery::placements(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ResponseQuery.placements)
  return _internal_placements(index);
}
inline ::SC2APIProtocol::ResponseQueryBuildingPlacement* ResponseQuery::_internal_add_placements() {
  return placements_.Add();
}
inline ::SC2APIProtocol::ResponseQueryBuildingPlacement* ResponseQuery::add_placements() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.ResponseQuery.placements)
  return _internal_add_placements();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ResponseQueryBuildingPlacement >&
ResponseQuery::placements() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.ResponseQuery.placements)
  return placements_;
}

// -------------------------------------------------------------------

// RequestQueryPathing

// optional .SC2APIProtocol.Point2D start_pos = 1;
inline bool RequestQueryPathing::_internal_has_start_pos() const {
  return start_case() == kStartPos;
}
inline bool RequestQueryPathing::has_start_pos() const {
  return _internal_has_start_pos();
}
inline void RequestQueryPathing::set_has_start_pos() {
  _oneof_case_[0] = kStartPos;
}
inline ::SC2APIProtocol::Point2D* RequestQueryPathing::release_start_pos() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.RequestQueryPathing.start_pos)
  if (_internal_has_start_pos()) {
    clear_has_start();
      ::SC2APIProtocol::Point2D* temp = start_.start_pos_;
    start_.start_pos_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::Point2D& RequestQueryPathing::_internal_start_pos() const {
  return _internal_has_start_pos()
      ? *start_.start_pos_
      : *reinterpret_cast< ::SC2APIProtocol::Point2D*>(&::SC2APIProtocol::_Point2D_default_instance_);
}
inline const ::SC2APIProtocol::Point2D& RequestQueryPathing::start_pos() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.RequestQueryPathing.start_pos)
  return _internal_start_pos();
}
inline ::SC2APIProtocol::Point2D* RequestQueryPathing::_internal_mutable_start_pos() {
  if (!_internal_has_start_pos()) {
    clear_start();
    set_has_start_pos();
    start_.start_pos_ = CreateMaybeMessage< ::SC2APIProtocol::Point2D >(
        GetArenaNoVirtual());
  }
  return start_.start_pos_;
}
inline ::SC2APIProtocol::Point2D* RequestQueryPathing::mutable_start_pos() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.RequestQueryPathing.start_pos)
  return _internal_mutable_start_pos();
}

// optional uint64 unit_tag = 2;
inline bool RequestQueryPathing::_internal_has_unit_tag() const {
  return start_case() == kUnitTag;
}
inline bool RequestQueryPathing::has_unit_tag() const {
  return _internal_has_unit_tag();
}
inline void RequestQueryPathing::set_has_unit_tag() {
  _oneof_case_[0] = kUnitTag;
}
inline void RequestQueryPathing::clear_unit_tag() {
  if (_internal_has_unit_tag()) {
    start_.unit_tag_ = PROTOBUF_ULONGLONG(0);
    clear_has_start();
  }
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 RequestQueryPathing::_internal_unit_tag() const {
  if (_internal_has_unit_tag()) {
    return start_.unit_tag_;
  }
  return PROTOBUF_ULONGLONG(0);
}
inline void RequestQueryPathing::_internal_set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  if (!_internal_has_unit_tag()) {
    clear_start();
    set_has_unit_tag();
  }
  start_.unit_tag_ = value;
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 RequestQueryPathing::unit_tag() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.RequestQueryPathing.unit_tag)
  return _internal_unit_tag();
}
inline void RequestQueryPathing::set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  _internal_set_unit_tag(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.RequestQueryPathing.unit_tag)
}

// optional .SC2APIProtocol.Point2D end_pos = 3;
inline bool RequestQueryPathing::_internal_has_end_pos() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || end_pos_ != nullptr);
  return value;
}
inline bool RequestQueryPathing::has_end_pos() const {
  return _internal_has_end_pos();
}
inline const ::SC2APIProtocol::Point2D& RequestQueryPathing::_internal_end_pos() const {
  const ::SC2APIProtocol::Point2D* p = end_pos_;
  return p != nullptr ? *p : *reinterpret_cast<const ::SC2APIProtocol::Point2D*>(
      &::SC2APIProtocol::_Point2D_default_instance_);
}
inline const ::SC2APIProtocol::Point2D& RequestQueryPathing::end_pos() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.RequestQueryPathing.end_pos)
  return _internal_end_pos();
}
inline ::SC2APIProtocol::Point2D* RequestQueryPathing::release_end_pos() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.RequestQueryPathing.end_pos)
  _has_bits_[0] &= ~0x00000001u;
  ::SC2APIProtocol::Point2D* temp = end_pos_;
  end_pos_ = nullptr;
  return temp;
}
inline ::SC2APIProtocol::Point2D* RequestQueryPathing::_internal_mutable_end_pos() {
  _has_bits_[0] |= 0x00000001u;
  if (end_pos_ == nullptr) {
    auto* p = CreateMaybeMessage<::SC2APIProtocol::Point2D>(GetArenaNoVirtual());
    end_pos_ = p;
  }
  return end_pos_;
}
inline ::SC2APIProtocol::Point2D* RequestQueryPathing::mutable_end_pos() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.RequestQueryPathing.end_pos)
  return _internal_mutable_end_pos();
}
inline void RequestQueryPathing::set_allocated_end_pos(::SC2APIProtocol::Point2D* end_pos) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(end_pos_);
  }
  if (end_pos) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      end_pos = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, end_pos, submessage_arena);
    }
    _has_bits_[0] |= 0x00000001u;
  } else {
    _has_bits_[0] &= ~0x00000001u;
  }
  end_pos_ = end_pos;
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.RequestQueryPathing.end_pos)
}

inline bool RequestQueryPathing::has_start() const {
  return start_case() != START_NOT_SET;
}
inline void RequestQueryPathing::clear_has_start() {
  _oneof_case_[0] = START_NOT_SET;
}
inline RequestQueryPathing::StartCase RequestQueryPathing::start_case() const {
  return RequestQueryPathing::StartCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// ResponseQueryPathing

// optional float distance = 1;
inline bool ResponseQueryPathing::_internal_has_distance() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ResponseQueryPathing::has_distance() const {
  return _internal_has_distance();
}
inline void ResponseQueryPathing::clear_distance() {
  distance_ = 0;
  _has_bits_[0] &= ~0x00000001u;
}
inline float ResponseQueryPathing::_internal_distance() const {
  return distance_;
}
inline float ResponseQueryPathing::distance() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ResponseQueryPathing.distance)
  return _internal_distance();
}
inline void ResponseQueryPathing::_internal_set_distance(float value) {
  _has_bits_[0] |= 0x00000001u;
  distance_ = value;
}
inline void ResponseQueryPathing::set_distance(float value) {
  _internal_set_distance(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ResponseQueryPathing.distance)
}

// -------------------------------------------------------------------

// RequestQueryAvailableAbilities

// optional uint64 unit_tag = 1;
inline bool RequestQueryAvailableAbilities::_internal_has_unit_tag() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool RequestQueryAvailableAbilities::has_unit_tag() const {
  return _internal_has_unit_tag();
}
inline void RequestQueryAvailableAbilities::clear_unit_tag() {
  unit_tag_ = PROTOBUF_ULONGLONG(0);
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 RequestQueryAvailableAbilities::_internal_unit_tag() const {
  return unit_tag_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 RequestQueryAvailableAbilities::unit_tag() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.RequestQueryAvailableAbilities.unit_tag)
  return _internal_unit_tag();
}
inline void RequestQueryAvailableAbilities::_internal_set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  _has_bits_[0] |= 0x00000001u;
  unit_tag_ = value;
}
inline void RequestQueryAvailableAbilities::set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  _internal_set_unit_tag(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.RequestQueryAvailableAbilities.unit_tag)
}

// -------------------------------------------------------------------

// ResponseQueryAvailableAbilities

// repeated .SC2APIProtocol.AvailableAbility abilities = 1;
inline int ResponseQueryAvailableAbilities::_internal_abilities_size() const {
  return abilities_.size();
}
inline int ResponseQueryAvailableAbilities::abilities_size() const {
  return _internal_abilities_size();
}
inline ::SC2APIProtocol::AvailableAbility* ResponseQueryAvailableAbilities::mutable_abilities(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ResponseQueryAvailableAbilities.abilities)
  return abilities_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::AvailableAbility >*
ResponseQueryAvailableAbilities::mutable_abilities() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.ResponseQueryAvailableAbilities.abilities)
  return &abilities_;
}
inline const ::SC2APIProtocol::AvailableAbility& ResponseQueryAvailableAbilities::_internal_abilities(int index) const {
  return abilities_.Get(index);
}
inline const ::SC2APIProtocol::AvailableAbility& ResponseQueryAvailableAbilities::abilities(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ResponseQueryAvailableAbilities.abilities)
  return _internal_abilities(index);
}
inline ::SC2APIProtocol::AvailableAbility* ResponseQueryAvailableAbilities::_internal_add_abilities() {
  return abilities_.Add();
}
inline ::SC2APIProtocol::AvailableAbility* ResponseQueryAvailableAbilities::add_abilities() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.ResponseQueryAvailableAbilities.abilities)
  return _internal_add_abilities();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::AvailableAbility >&
ResponseQueryAvailableAbilities::abilities() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.ResponseQueryAvailableAbilities.abilities)
  return abilities_;
}

// optional uint64 unit_tag = 2;
inline bool ResponseQueryAvailableAbilities::_internal_has_unit_tag() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ResponseQueryAvailableAbilities::has_unit_tag() const {
  return _internal_has_unit_tag();
}
inline void ResponseQueryAvailableAbilities::clear_unit_tag() {
  unit_tag_ = PROTOBUF_ULONGLONG(0);
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 ResponseQueryAvailableAbilities::_internal_unit_tag() const {
  return unit_tag_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 ResponseQueryAvailableAbilities::unit_tag() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ResponseQueryAvailableAbilities.unit_tag)
  return _internal_unit_tag();
}
inline void ResponseQueryAvailableAbilities::_internal_set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  _has_bits_[0] |= 0x00000001u;
  unit_tag_ = value;
}
inline void ResponseQueryAvailableAbilities::set_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  _internal_set_unit_tag(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ResponseQueryAvailableAbilities.unit_tag)
}

// optional uint32 unit_type_id = 3;
inline bool ResponseQueryAvailableAbilities::_internal_has_unit_type_id() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool ResponseQueryAvailableAbilities::has_unit_type_id() const {
  return _internal_has_unit_type_id();
}
inline void ResponseQueryAvailableAbilities::clear_unit_type_id() {
  unit_type_id_ = 0u;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ResponseQueryAvailableAbilities::_internal_unit_type_id() const {
  return unit_type_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ResponseQueryAvailableAbilities::unit_type_id() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ResponseQueryAvailableAbilities.unit_type_id)
  return _internal_unit_type_id();
}
inline void ResponseQueryAvailableAbilities::_internal_set_unit_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _has_bits_[0] |= 0x00000002u;
  unit_type_id_ = value;
}
inline void ResponseQueryAvailableAbilities::set_unit_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_unit_type_id(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ResponseQueryAvailableAbilities.unit_type_id)
}

// -------------------------------------------------------------------

// RequestQueryBuildingPlacement

// optional int32 ability_id = 1;
inline bool RequestQueryBuildingPlacement::_internal_has_ability_id() const {
  bool value = (_has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool RequestQueryBuildingPlacement::has_ability_id() const {
  return _internal_has_ability_id();
}
inline void RequestQueryBuildingPlacement::clear_ability_id() {
  ability_id_ = 0;
  _has_bits_[0] &= ~0x00000004u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RequestQueryBuildingPlacement::_internal_ability_id() const {
  return ability_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RequestQueryBuildingPlacement::ability_id() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.RequestQueryBuildingPlacement.ability_id)
  return _internal_ability_id();
}
inline void RequestQueryBuildingPlacement::_internal_set_ability_id(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000004u;
  ability_id_ = value;
}
inline void RequestQueryBuildingPlacement::set_ability_id(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_ability_id(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.RequestQueryBuildingPlacement.ability_id)
}

// optional .SC2APIProtocol.Point2D target_pos = 2;
inline bool RequestQueryBuildingPlacement::_internal_has_target_pos() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || target_pos_ != nullptr);
  return value;
}
inline bool RequestQueryBuildingPlacement::has_target_pos() const {
  return _internal_has_target_pos();
}
inline const ::SC2APIProtocol::Point2D& RequestQueryBuildingPlacement::_internal_target_pos() const {
  const ::SC2APIProtocol::Point2D* p = target_pos_;
  return p != nullptr ? *p : *reinterpret_cast<const ::SC2APIProtocol::Point2D*>(
      &::SC2APIProtocol::_Point2D_default_instance_);
}
inline const ::SC2APIProtocol::Point2D& RequestQueryBuildingPlacement::target_pos() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.RequestQueryBuildingPlacement.target_pos)
  return _internal_target_pos();
}
inline ::SC2APIProtocol::Point2D* RequestQueryBuildingPlacement::release_target_pos() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.RequestQueryBuildingPlacement.target_pos)
  _has_bits_[0] &= ~0x00000001u;
  ::SC2APIProtocol::Point2D* temp = target_pos_;
  target_pos_ = nullptr;
  return temp;
}
inline ::SC2APIProtocol::Point2D* RequestQueryBuildingPlacement::_internal_mutable_target_pos() {
  _has_bits_[0] |= 0x00000001u;
  if (target_pos_ == nullptr) {
    auto* p = CreateMaybeMessage<::SC2APIProtocol::Point2D>(GetArenaNoVirtual());
    target_pos_ = p;
  }
  return target_pos_;
}
inline ::SC2APIProtocol::Point2D* RequestQueryBuildingPlacement::mutable_target_pos() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.RequestQueryBuildingPlacement.target_pos)
  return _internal_mutable_target_pos();
}
inline void RequestQueryBuildingPlacement::set_allocated_target_pos(::SC2APIProtocol::Point2D* target_pos) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(target_pos_);
  }
  if (target_pos) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      target_pos = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, target_pos, submessage_arena);
    }
    _has_bits_[0] |= 0x00000001u;
  } else {
    _has_bits_[0] &= ~0x00000001u;
  }
  target_pos_ = target_pos;
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.RequestQueryBuildingPlacement.target_pos)
}

// optional uint64 placing_unit_tag = 3;
inline bool RequestQueryBuildingPlacement::_internal_has_placing_unit_tag() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool RequestQueryBuildingPlacement::has_placing_unit_tag() const {
  return _internal_has_placing_unit_tag();
}
inline void RequestQueryBuildingPlacement::clear_placing_unit_tag() {
  placing_unit_tag_ = PROTOBUF_ULONGLONG(0);
  _has_bits_[0] &= ~0x00000002u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 RequestQueryBuildingPlacement::_internal_placing_unit_tag() const {
  return placing_unit_tag_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 RequestQueryBuildingPlacement::placing_unit_tag() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.RequestQueryBuildingPlacement.placing_unit_tag)
  return _internal_placing_unit_tag();
}
inline void RequestQueryBuildingPlacement::_internal_set_placing_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  _has_bits_[0] |= 0x00000002u;
  placing_unit_tag_ = value;
}
inline void RequestQueryBuildingPlacement::set_placing_unit_tag(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  _internal_set_placing_unit_tag(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.RequestQueryBuildingPlacement.placing_unit_tag)
}

// -------------------------------------------------------------------

// ResponseQueryBuildingPlacement

// optional .SC2APIProtocol.ActionResult result = 1;
inline bool ResponseQueryBuildingPlacement::_internal_has_result() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ResponseQueryBuildingPlacement::has_result() const {
  return _internal_has_result();
}
inline void ResponseQueryBuildingPlacement::clear_result() {
  result_ = 1;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::SC2APIProtocol::ActionResult ResponseQueryBuildingPlacement::_internal_result() const {
  return static_cast< ::SC2APIProtocol::ActionResult >(result_);
}
inline ::SC2APIProtocol::ActionResult ResponseQueryBuildingPlacement::result() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ResponseQueryBuildingPlacement.result)
  return _internal_result();
}
inline void ResponseQueryBuildingPlacement::_internal_set_result(::SC2APIProtocol::ActionResult value) {
  assert(::SC2APIProtocol::ActionResult_IsValid(value));
  _has_bits_[0] |= 0x00000001u;
  result_ = value;
}
inline void ResponseQueryBuildingPlacement::set_result(::SC2APIProtocol::ActionResult value) {
  _internal_set_result(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ResponseQueryBuildingPlacement.result)
}

#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__
// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------


// @@protoc_insertion_point(namespace_scope)

}  // namespace SC2APIProtocol

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_s2clientprotocol_2fquery_2eproto
