// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: keyapis/exchange/v1/keyapis_exchange_message_v1.proto

#include "keyapis/exchange/v1/keyapis_exchange_message_v1.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/io/zero_copy_stream_impl_lite.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"
PROTOBUF_PRAGMA_INIT_SEG
namespace _pb = ::PROTOBUF_NAMESPACE_ID;
namespace _pbi = ::PROTOBUF_NAMESPACE_ID::internal;
namespace keyapis {
namespace exchange {
namespace v1 {
template <typename>
PROTOBUF_CONSTEXPR PostMessageFullDuplexRequest::PostMessageFullDuplexRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.request_id_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.task_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostMessageFullDuplexRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostMessageFullDuplexRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostMessageFullDuplexRequestDefaultTypeInternal() {}
  union {
    PostMessageFullDuplexRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostMessageFullDuplexRequestDefaultTypeInternal _PostMessageFullDuplexRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostMessageFullDuplexResponse::PostMessageFullDuplexResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.request_id_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.event_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostMessageFullDuplexResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostMessageFullDuplexResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostMessageFullDuplexResponseDefaultTypeInternal() {}
  union {
    PostMessageFullDuplexResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostMessageFullDuplexResponseDefaultTypeInternal _PostMessageFullDuplexResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR MessagePushCall_Message::MessagePushCall_Message(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.title_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.sip_server_host_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.sip_account_login_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.sip_account_password_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.device_title_)*/nullptr
  , /*decltype(_impl_.device_camera_id_)*/nullptr
  , /*decltype(_impl_.call_created_at_)*/nullptr
  , /*decltype(_impl_.device_id_)*/ 0

  , /*decltype(_impl_.sip_server_port_)*/ 0
} {}
struct MessagePushCall_MessageDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MessagePushCall_MessageDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~MessagePushCall_MessageDefaultTypeInternal() {}
  union {
    MessagePushCall_Message _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MessagePushCall_MessageDefaultTypeInternal _MessagePushCall_Message_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR MessagePushCall_PushCall::MessagePushCall_PushCall(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.token_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.type_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct MessagePushCall_PushCallDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MessagePushCall_PushCallDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~MessagePushCall_PushCallDefaultTypeInternal() {}
  union {
    MessagePushCall_PushCall _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MessagePushCall_PushCallDefaultTypeInternal _MessagePushCall_PushCall_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR MessagePushCall::MessagePushCall(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.message_)*/nullptr
  , /*decltype(_impl_.push_call_)*/nullptr} {}
struct MessagePushCallDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MessagePushCallDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~MessagePushCallDefaultTypeInternal() {}
  union {
    MessagePushCall _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MessagePushCallDefaultTypeInternal _MessagePushCall_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR MessageMobilePushCall_Message::MessageMobilePushCall_Message(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.title_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.sip_token_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.device_title_)*/nullptr
  , /*decltype(_impl_.device_camera_id_)*/nullptr
  , /*decltype(_impl_.sip_server_host_)*/nullptr
  , /*decltype(_impl_.sip_server_port_)*/nullptr
  , /*decltype(_impl_.sip_account_login_)*/nullptr
  , /*decltype(_impl_.sip_account_password_)*/nullptr
  , /*decltype(_impl_.stun_server_host_)*/nullptr
  , /*decltype(_impl_.stun_server_port_)*/nullptr
  , /*decltype(_impl_.call_created_at_)*/nullptr
  , /*decltype(_impl_.device_id_)*/ 0
} {}
struct MessageMobilePushCall_MessageDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MessageMobilePushCall_MessageDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~MessageMobilePushCall_MessageDefaultTypeInternal() {}
  union {
    MessageMobilePushCall_Message _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MessageMobilePushCall_MessageDefaultTypeInternal _MessageMobilePushCall_Message_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR MessageMobilePushCall_PushCall::MessageMobilePushCall_PushCall(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.token_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.type_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct MessageMobilePushCall_PushCallDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MessageMobilePushCall_PushCallDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~MessageMobilePushCall_PushCallDefaultTypeInternal() {}
  union {
    MessageMobilePushCall_PushCall _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MessageMobilePushCall_PushCallDefaultTypeInternal _MessageMobilePushCall_PushCall_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR MessageMobilePushCall::MessageMobilePushCall(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.message_)*/nullptr
  , /*decltype(_impl_.push_call_)*/nullptr} {}
struct MessageMobilePushCallDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MessageMobilePushCallDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~MessageMobilePushCallDefaultTypeInternal() {}
  union {
    MessageMobilePushCall _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MessageMobilePushCallDefaultTypeInternal _MessageMobilePushCall_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostMessagePushCallRequest::PostMessagePushCallRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/nullptr} {}
struct PostMessagePushCallRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostMessagePushCallRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostMessagePushCallRequestDefaultTypeInternal() {}
  union {
    PostMessagePushCallRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostMessagePushCallRequestDefaultTypeInternal _PostMessagePushCallRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostMessagePushCallResponse::PostMessagePushCallResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PostMessagePushCallResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostMessagePushCallResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostMessagePushCallResponseDefaultTypeInternal() {}
  union {
    PostMessagePushCallResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostMessagePushCallResponseDefaultTypeInternal _PostMessagePushCallResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostMessageMobilePushCallRequest::PostMessageMobilePushCallRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/nullptr} {}
struct PostMessageMobilePushCallRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostMessageMobilePushCallRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostMessageMobilePushCallRequestDefaultTypeInternal() {}
  union {
    PostMessageMobilePushCallRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostMessageMobilePushCallRequestDefaultTypeInternal _PostMessageMobilePushCallRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostMessageMobilePushCallResponse::PostMessageMobilePushCallResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PostMessageMobilePushCallResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostMessageMobilePushCallResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostMessageMobilePushCallResponseDefaultTypeInternal() {}
  union {
    PostMessageMobilePushCallResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostMessageMobilePushCallResponseDefaultTypeInternal _PostMessageMobilePushCallResponse_default_instance_;
}  // namespace v1
}  // namespace exchange
}  // namespace keyapis
namespace keyapis {
namespace exchange {
namespace v1 {
bool MessagePushCall_PushCall_Type_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    MessagePushCall_PushCall_Type_strings[3] = {};

static const char MessagePushCall_PushCall_Type_names[] = {
    "PWA_APNS"
    "PWA_FCM"
    "TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry MessagePushCall_PushCall_Type_entries[] =
    {
        {{&MessagePushCall_PushCall_Type_names[0], 8}, 2},
        {{&MessagePushCall_PushCall_Type_names[8], 7}, 1},
        {{&MessagePushCall_PushCall_Type_names[15], 12}, 0},
};

static const int MessagePushCall_PushCall_Type_entries_by_number[] = {
    2,  // 0 -> TYPE_UNKNOWN
    1,  // 1 -> PWA_FCM
    0,  // 2 -> PWA_APNS
};

const std::string& MessagePushCall_PushCall_Type_Name(MessagePushCall_PushCall_Type value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          MessagePushCall_PushCall_Type_entries, MessagePushCall_PushCall_Type_entries_by_number,
          3, MessagePushCall_PushCall_Type_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      MessagePushCall_PushCall_Type_entries, MessagePushCall_PushCall_Type_entries_by_number, 3,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : MessagePushCall_PushCall_Type_strings[idx].get();
}

bool MessagePushCall_PushCall_Type_Parse(absl::string_view name, MessagePushCall_PushCall_Type* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      MessagePushCall_PushCall_Type_entries, 3, name, &int_value);
  if (success) {
    *value = static_cast<MessagePushCall_PushCall_Type>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr MessagePushCall_PushCall_Type MessagePushCall_PushCall::TYPE_UNKNOWN;
constexpr MessagePushCall_PushCall_Type MessagePushCall_PushCall::PWA_FCM;
constexpr MessagePushCall_PushCall_Type MessagePushCall_PushCall::PWA_APNS;
constexpr MessagePushCall_PushCall_Type MessagePushCall_PushCall::Type_MIN;
constexpr MessagePushCall_PushCall_Type MessagePushCall_PushCall::Type_MAX;
constexpr int MessagePushCall_PushCall::Type_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool MessageMobilePushCall_PushCall_Type_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    MessageMobilePushCall_PushCall_Type_strings[6] = {};

static const char MessageMobilePushCall_PushCall_Type_names[] = {
    "MOBILE_APNS_CALL"
    "MOBILE_APNS_TEXT"
    "MOBILE_FCM"
    "MOBILE_HMS"
    "MOBILE_RUSTORE"
    "TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry MessageMobilePushCall_PushCall_Type_entries[] =
    {
        {{&MessageMobilePushCall_PushCall_Type_names[0], 16}, 4},
        {{&MessageMobilePushCall_PushCall_Type_names[16], 16}, 3},
        {{&MessageMobilePushCall_PushCall_Type_names[32], 10}, 1},
        {{&MessageMobilePushCall_PushCall_Type_names[42], 10}, 2},
        {{&MessageMobilePushCall_PushCall_Type_names[52], 14}, 5},
        {{&MessageMobilePushCall_PushCall_Type_names[66], 12}, 0},
};

static const int MessageMobilePushCall_PushCall_Type_entries_by_number[] = {
    5,  // 0 -> TYPE_UNKNOWN
    2,  // 1 -> MOBILE_FCM
    3,  // 2 -> MOBILE_HMS
    1,  // 3 -> MOBILE_APNS_TEXT
    0,  // 4 -> MOBILE_APNS_CALL
    4,  // 5 -> MOBILE_RUSTORE
};

const std::string& MessageMobilePushCall_PushCall_Type_Name(MessageMobilePushCall_PushCall_Type value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          MessageMobilePushCall_PushCall_Type_entries, MessageMobilePushCall_PushCall_Type_entries_by_number,
          6, MessageMobilePushCall_PushCall_Type_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      MessageMobilePushCall_PushCall_Type_entries, MessageMobilePushCall_PushCall_Type_entries_by_number, 6,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : MessageMobilePushCall_PushCall_Type_strings[idx].get();
}

bool MessageMobilePushCall_PushCall_Type_Parse(absl::string_view name, MessageMobilePushCall_PushCall_Type* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      MessageMobilePushCall_PushCall_Type_entries, 6, name, &int_value);
  if (success) {
    *value = static_cast<MessageMobilePushCall_PushCall_Type>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr MessageMobilePushCall_PushCall_Type MessageMobilePushCall_PushCall::TYPE_UNKNOWN;
constexpr MessageMobilePushCall_PushCall_Type MessageMobilePushCall_PushCall::MOBILE_FCM;
constexpr MessageMobilePushCall_PushCall_Type MessageMobilePushCall_PushCall::MOBILE_HMS;
constexpr MessageMobilePushCall_PushCall_Type MessageMobilePushCall_PushCall::MOBILE_APNS_TEXT;
constexpr MessageMobilePushCall_PushCall_Type MessageMobilePushCall_PushCall::MOBILE_APNS_CALL;
constexpr MessageMobilePushCall_PushCall_Type MessageMobilePushCall_PushCall::MOBILE_RUSTORE;
constexpr MessageMobilePushCall_PushCall_Type MessageMobilePushCall_PushCall::Type_MIN;
constexpr MessageMobilePushCall_PushCall_Type MessageMobilePushCall_PushCall::Type_MAX;
constexpr int MessageMobilePushCall_PushCall::Type_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
// ===================================================================

class PostMessageFullDuplexRequest::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::exchange::v1::PostMessageFullDuplexRequest, _impl_._oneof_case_);
  static const ::keyapis::exchange::v1::PostMessagePushCallRequest& post_message_push_call(const PostMessageFullDuplexRequest* msg);
};

const ::keyapis::exchange::v1::PostMessagePushCallRequest&
PostMessageFullDuplexRequest::_Internal::post_message_push_call(const PostMessageFullDuplexRequest* msg) {
  return *msg->_impl_.task_.post_message_push_call_;
}
void PostMessageFullDuplexRequest::set_allocated_post_message_push_call(::keyapis::exchange::v1::PostMessagePushCallRequest* post_message_push_call) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_task();
  if (post_message_push_call) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(post_message_push_call);
    if (message_arena != submessage_arena) {
      post_message_push_call = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, post_message_push_call, submessage_arena);
    }
    set_has_post_message_push_call();
    _impl_.task_.post_message_push_call_ = post_message_push_call;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.exchange.v1.PostMessageFullDuplexRequest.post_message_push_call)
}
PostMessageFullDuplexRequest::PostMessageFullDuplexRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.PostMessageFullDuplexRequest)
}
PostMessageFullDuplexRequest::PostMessageFullDuplexRequest(const PostMessageFullDuplexRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostMessageFullDuplexRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.request_id_) {}

    , decltype(_impl_.task_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.request_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.request_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_request_id().empty()) {
    _this->_impl_.request_id_.Set(from._internal_request_id(), _this->GetArenaForAllocation());
  }
  clear_has_task();
  switch (from.task_case()) {
    case kPostMessagePushCall: {
      _this->_internal_mutable_post_message_push_call()->::keyapis::exchange::v1::PostMessagePushCallRequest::MergeFrom(
          from._internal_post_message_push_call());
      break;
    }
    case TASK_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.PostMessageFullDuplexRequest)
}

inline void PostMessageFullDuplexRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.request_id_) {}

    , decltype(_impl_.task_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  _impl_.request_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.request_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  clear_has_task();
}

PostMessageFullDuplexRequest::~PostMessageFullDuplexRequest() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.PostMessageFullDuplexRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostMessageFullDuplexRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.request_id_.Destroy();
  if (has_task()) {
    clear_task();
  }
}

void PostMessageFullDuplexRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostMessageFullDuplexRequest::clear_task() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.exchange.v1.PostMessageFullDuplexRequest)
  switch (task_case()) {
    case kPostMessagePushCall: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.task_.post_message_push_call_;
      }
      break;
    }
    case TASK_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TASK_NOT_SET;
}


void PostMessageFullDuplexRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.PostMessageFullDuplexRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.request_id_.ClearToEmpty();
  clear_task();
  _internal_metadata_.Clear<std::string>();
}

const char* PostMessageFullDuplexRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_request_id();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.exchange.v1.PostMessagePushCallRequest post_message_push_call = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_post_message_push_call(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostMessageFullDuplexRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.PostMessageFullDuplexRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_request_id().empty()) {
    const std::string& _s = this->_internal_request_id();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.exchange.v1.PostMessageFullDuplexRequest.request_id");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // .keyapis.exchange.v1.PostMessagePushCallRequest post_message_push_call = 2;
  if (task_case() == kPostMessagePushCall) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::post_message_push_call(this),
        _Internal::post_message_push_call(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.PostMessageFullDuplexRequest)
  return target;
}

::size_t PostMessageFullDuplexRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.PostMessageFullDuplexRequest)
  ::size_t total_size = 0;

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

  // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_request_id().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_request_id());
  }

  switch (task_case()) {
    // .keyapis.exchange.v1.PostMessagePushCallRequest post_message_push_call = 2;
    case kPostMessagePushCall: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.task_.post_message_push_call_);
      break;
    }
    case TASK_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostMessageFullDuplexRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostMessageFullDuplexRequest*>(
      &from));
}

void PostMessageFullDuplexRequest::MergeFrom(const PostMessageFullDuplexRequest& from) {
  PostMessageFullDuplexRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.PostMessageFullDuplexRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_request_id().empty()) {
    _this->_internal_set_request_id(from._internal_request_id());
  }
  switch (from.task_case()) {
    case kPostMessagePushCall: {
      _this->_internal_mutable_post_message_push_call()->::keyapis::exchange::v1::PostMessagePushCallRequest::MergeFrom(
          from._internal_post_message_push_call());
      break;
    }
    case TASK_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostMessageFullDuplexRequest::CopyFrom(const PostMessageFullDuplexRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.PostMessageFullDuplexRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void PostMessageFullDuplexRequest::InternalSwap(PostMessageFullDuplexRequest* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.request_id_, lhs_arena,
                                       &other->_impl_.request_id_, rhs_arena);
  swap(_impl_.task_, other->_impl_.task_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostMessageFullDuplexRequest::GetTypeName() const {
  return "keyapis.exchange.v1.PostMessageFullDuplexRequest";
}

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

class PostMessageFullDuplexResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::exchange::v1::PostMessageFullDuplexResponse, _impl_._oneof_case_);
  static const ::keyapis::exchange::v1::PostMessagePushCallResponse& post_message_push_call(const PostMessageFullDuplexResponse* msg);
};

const ::keyapis::exchange::v1::PostMessagePushCallResponse&
PostMessageFullDuplexResponse::_Internal::post_message_push_call(const PostMessageFullDuplexResponse* msg) {
  return *msg->_impl_.event_.post_message_push_call_;
}
void PostMessageFullDuplexResponse::set_allocated_post_message_push_call(::keyapis::exchange::v1::PostMessagePushCallResponse* post_message_push_call) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_event();
  if (post_message_push_call) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(post_message_push_call);
    if (message_arena != submessage_arena) {
      post_message_push_call = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, post_message_push_call, submessage_arena);
    }
    set_has_post_message_push_call();
    _impl_.event_.post_message_push_call_ = post_message_push_call;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.exchange.v1.PostMessageFullDuplexResponse.post_message_push_call)
}
PostMessageFullDuplexResponse::PostMessageFullDuplexResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.PostMessageFullDuplexResponse)
}
PostMessageFullDuplexResponse::PostMessageFullDuplexResponse(const PostMessageFullDuplexResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostMessageFullDuplexResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.request_id_) {}

    , decltype(_impl_.event_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.request_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.request_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_request_id().empty()) {
    _this->_impl_.request_id_.Set(from._internal_request_id(), _this->GetArenaForAllocation());
  }
  clear_has_event();
  switch (from.event_case()) {
    case kPostMessagePushCall: {
      _this->_internal_mutable_post_message_push_call()->::keyapis::exchange::v1::PostMessagePushCallResponse::MergeFrom(
          from._internal_post_message_push_call());
      break;
    }
    case EVENT_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.PostMessageFullDuplexResponse)
}

inline void PostMessageFullDuplexResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.request_id_) {}

    , decltype(_impl_.event_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  _impl_.request_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.request_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  clear_has_event();
}

PostMessageFullDuplexResponse::~PostMessageFullDuplexResponse() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.PostMessageFullDuplexResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostMessageFullDuplexResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.request_id_.Destroy();
  if (has_event()) {
    clear_event();
  }
}

void PostMessageFullDuplexResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostMessageFullDuplexResponse::clear_event() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.exchange.v1.PostMessageFullDuplexResponse)
  switch (event_case()) {
    case kPostMessagePushCall: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.event_.post_message_push_call_;
      }
      break;
    }
    case EVENT_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = EVENT_NOT_SET;
}


void PostMessageFullDuplexResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.PostMessageFullDuplexResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.request_id_.ClearToEmpty();
  clear_event();
  _internal_metadata_.Clear<std::string>();
}

const char* PostMessageFullDuplexResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_request_id();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.exchange.v1.PostMessagePushCallResponse post_message_push_call = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_post_message_push_call(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostMessageFullDuplexResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.PostMessageFullDuplexResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_request_id().empty()) {
    const std::string& _s = this->_internal_request_id();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.exchange.v1.PostMessageFullDuplexResponse.request_id");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // .keyapis.exchange.v1.PostMessagePushCallResponse post_message_push_call = 2;
  if (event_case() == kPostMessagePushCall) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::post_message_push_call(this),
        _Internal::post_message_push_call(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.PostMessageFullDuplexResponse)
  return target;
}

::size_t PostMessageFullDuplexResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.PostMessageFullDuplexResponse)
  ::size_t total_size = 0;

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

  // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_request_id().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_request_id());
  }

  switch (event_case()) {
    // .keyapis.exchange.v1.PostMessagePushCallResponse post_message_push_call = 2;
    case kPostMessagePushCall: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.event_.post_message_push_call_);
      break;
    }
    case EVENT_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostMessageFullDuplexResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostMessageFullDuplexResponse*>(
      &from));
}

void PostMessageFullDuplexResponse::MergeFrom(const PostMessageFullDuplexResponse& from) {
  PostMessageFullDuplexResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.PostMessageFullDuplexResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_request_id().empty()) {
    _this->_internal_set_request_id(from._internal_request_id());
  }
  switch (from.event_case()) {
    case kPostMessagePushCall: {
      _this->_internal_mutable_post_message_push_call()->::keyapis::exchange::v1::PostMessagePushCallResponse::MergeFrom(
          from._internal_post_message_push_call());
      break;
    }
    case EVENT_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostMessageFullDuplexResponse::CopyFrom(const PostMessageFullDuplexResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.PostMessageFullDuplexResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void PostMessageFullDuplexResponse::InternalSwap(PostMessageFullDuplexResponse* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.request_id_, lhs_arena,
                                       &other->_impl_.request_id_, rhs_arena);
  swap(_impl_.event_, other->_impl_.event_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostMessageFullDuplexResponse::GetTypeName() const {
  return "keyapis.exchange.v1.PostMessageFullDuplexResponse";
}

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

class MessagePushCall_Message::_Internal {
 public:
  using HasBits = decltype(std::declval<MessagePushCall_Message>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(MessagePushCall_Message, _impl_._has_bits_);
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& device_title(const MessagePushCall_Message* msg);
  static void set_has_device_title(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& device_camera_id(const MessagePushCall_Message* msg);
  static void set_has_device_camera_id(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& call_created_at(const MessagePushCall_Message* msg);
  static void set_has_call_created_at(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
};

const ::PROTOBUF_NAMESPACE_ID::StringValue&
MessagePushCall_Message::_Internal::device_title(const MessagePushCall_Message* msg) {
  return *msg->_impl_.device_title_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
MessagePushCall_Message::_Internal::device_camera_id(const MessagePushCall_Message* msg) {
  return *msg->_impl_.device_camera_id_;
}
const ::PROTOBUF_NAMESPACE_ID::Timestamp&
MessagePushCall_Message::_Internal::call_created_at(const MessagePushCall_Message* msg) {
  return *msg->_impl_.call_created_at_;
}
void MessagePushCall_Message::clear_device_title() {
  if (_impl_.device_title_ != nullptr) _impl_.device_title_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
void MessagePushCall_Message::clear_device_camera_id() {
  if (_impl_.device_camera_id_ != nullptr) _impl_.device_camera_id_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
void MessagePushCall_Message::clear_call_created_at() {
  if (_impl_.call_created_at_ != nullptr) _impl_.call_created_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
MessagePushCall_Message::MessagePushCall_Message(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.MessagePushCall.Message)
}
MessagePushCall_Message::MessagePushCall_Message(const MessagePushCall_Message& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  MessagePushCall_Message* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.title_) {}

    , decltype(_impl_.sip_server_host_) {}

    , decltype(_impl_.sip_account_login_) {}

    , decltype(_impl_.sip_account_password_) {}

    , decltype(_impl_.device_title_){nullptr}
    , decltype(_impl_.device_camera_id_){nullptr}
    , decltype(_impl_.call_created_at_){nullptr}
    , decltype(_impl_.device_id_) {}

    , decltype(_impl_.sip_server_port_) {}
  };

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.title_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.title_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_title().empty()) {
    _this->_impl_.title_.Set(from._internal_title(), _this->GetArenaForAllocation());
  }
  _impl_.sip_server_host_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.sip_server_host_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_sip_server_host().empty()) {
    _this->_impl_.sip_server_host_.Set(from._internal_sip_server_host(), _this->GetArenaForAllocation());
  }
  _impl_.sip_account_login_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.sip_account_login_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_sip_account_login().empty()) {
    _this->_impl_.sip_account_login_.Set(from._internal_sip_account_login(), _this->GetArenaForAllocation());
  }
  _impl_.sip_account_password_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.sip_account_password_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_sip_account_password().empty()) {
    _this->_impl_.sip_account_password_.Set(from._internal_sip_account_password(), _this->GetArenaForAllocation());
  }
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.device_title_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.device_title_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000002u) != 0) {
    _this->_impl_.device_camera_id_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.device_camera_id_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000004u) != 0) {
    _this->_impl_.call_created_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.call_created_at_);
  }
  ::memcpy(&_impl_.device_id_, &from._impl_.device_id_,
    static_cast<::size_t>(reinterpret_cast<char*>(&_impl_.sip_server_port_) -
    reinterpret_cast<char*>(&_impl_.device_id_)) + sizeof(_impl_.sip_server_port_));
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.MessagePushCall.Message)
}

inline void MessagePushCall_Message::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.title_) {}

    , decltype(_impl_.sip_server_host_) {}

    , decltype(_impl_.sip_account_login_) {}

    , decltype(_impl_.sip_account_password_) {}

    , decltype(_impl_.device_title_){nullptr}
    , decltype(_impl_.device_camera_id_){nullptr}
    , decltype(_impl_.call_created_at_){nullptr}
    , decltype(_impl_.device_id_) { 0 }

    , decltype(_impl_.sip_server_port_) { 0 }

  };
  _impl_.title_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.title_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.sip_server_host_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.sip_server_host_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.sip_account_login_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.sip_account_login_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.sip_account_password_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.sip_account_password_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

MessagePushCall_Message::~MessagePushCall_Message() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.MessagePushCall.Message)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MessagePushCall_Message::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.title_.Destroy();
  _impl_.sip_server_host_.Destroy();
  _impl_.sip_account_login_.Destroy();
  _impl_.sip_account_password_.Destroy();
  if (this != internal_default_instance()) delete _impl_.device_title_;
  if (this != internal_default_instance()) delete _impl_.device_camera_id_;
  if (this != internal_default_instance()) delete _impl_.call_created_at_;
}

void MessagePushCall_Message::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MessagePushCall_Message::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.MessagePushCall.Message)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.title_.ClearToEmpty();
  _impl_.sip_server_host_.ClearToEmpty();
  _impl_.sip_account_login_.ClearToEmpty();
  _impl_.sip_account_password_.ClearToEmpty();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(_impl_.device_title_ != nullptr);
      _impl_.device_title_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(_impl_.device_camera_id_ != nullptr);
      _impl_.device_camera_id_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      ABSL_DCHECK(_impl_.call_created_at_ != nullptr);
      _impl_.call_created_at_->Clear();
    }
  }
  ::memset(&_impl_.device_id_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.sip_server_port_) -
      reinterpret_cast<char*>(&_impl_.device_id_)) + sizeof(_impl_.sip_server_port_));
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* MessagePushCall_Message::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string title = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_title();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
          _impl_.device_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue device_title = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_title(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue device_camera_id = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_camera_id(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // string sip_server_host = 5 [(.google.api.field_behavior) = REQUIRED];
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
          auto str = _internal_mutable_sip_server_host();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 sip_server_port = 6 [(.google.api.field_behavior) = REQUIRED];
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 48)) {
          _impl_.sip_server_port_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // string sip_account_login = 7 [(.google.api.field_behavior) = REQUIRED];
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
          auto str = _internal_mutable_sip_account_login();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // string sip_account_password = 8 [(.google.api.field_behavior) = REQUIRED];
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 66)) {
          auto str = _internal_mutable_sip_account_password();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp call_created_at = 9 [(.google.api.field_behavior) = REQUIRED];
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 74)) {
          ptr = ctx->ParseMessage(_internal_mutable_call_created_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* MessagePushCall_Message::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.MessagePushCall.Message)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string title = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_title().empty()) {
    const std::string& _s = this->_internal_title();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.exchange.v1.MessagePushCall.Message.title");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_device_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        2, this->_internal_device_id(), target);
  }

  cached_has_bits = _impl_._has_bits_[0];
  // .google.protobuf.StringValue device_title = 3;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(3, _Internal::device_title(this),
        _Internal::device_title(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue device_camera_id = 4;
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::device_camera_id(this),
        _Internal::device_camera_id(this).GetCachedSize(), target, stream);
  }

  // string sip_server_host = 5 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_sip_server_host().empty()) {
    const std::string& _s = this->_internal_sip_server_host();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.exchange.v1.MessagePushCall.Message.sip_server_host");
    target = stream->WriteStringMaybeAliased(5, _s, target);
  }

  // int32 sip_server_port = 6 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_sip_server_port() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        6, this->_internal_sip_server_port(), target);
  }

  // string sip_account_login = 7 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_sip_account_login().empty()) {
    const std::string& _s = this->_internal_sip_account_login();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.exchange.v1.MessagePushCall.Message.sip_account_login");
    target = stream->WriteStringMaybeAliased(7, _s, target);
  }

  // string sip_account_password = 8 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_sip_account_password().empty()) {
    const std::string& _s = this->_internal_sip_account_password();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.exchange.v1.MessagePushCall.Message.sip_account_password");
    target = stream->WriteStringMaybeAliased(8, _s, target);
  }

  // .google.protobuf.Timestamp call_created_at = 9 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000004u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(9, _Internal::call_created_at(this),
        _Internal::call_created_at(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.MessagePushCall.Message)
  return target;
}

::size_t MessagePushCall_Message::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.MessagePushCall.Message)
  ::size_t total_size = 0;

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

  // string title = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_title().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_title());
  }

  // string sip_server_host = 5 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_sip_server_host().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_sip_server_host());
  }

  // string sip_account_login = 7 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_sip_account_login().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_sip_account_login());
  }

  // string sip_account_password = 8 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_sip_account_password().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_sip_account_password());
  }

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // .google.protobuf.StringValue device_title = 3;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.device_title_);
    }

    // .google.protobuf.StringValue device_camera_id = 4;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.device_camera_id_);
    }

    // .google.protobuf.Timestamp call_created_at = 9 [(.google.api.field_behavior) = REQUIRED];
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.call_created_at_);
    }

  }
  // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_device_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_device_id());
  }

  // int32 sip_server_port = 6 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_sip_server_port() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_sip_server_port());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void MessagePushCall_Message::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const MessagePushCall_Message*>(
      &from));
}

void MessagePushCall_Message::MergeFrom(const MessagePushCall_Message& from) {
  MessagePushCall_Message* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.MessagePushCall.Message)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_title().empty()) {
    _this->_internal_set_title(from._internal_title());
  }
  if (!from._internal_sip_server_host().empty()) {
    _this->_internal_set_sip_server_host(from._internal_sip_server_host());
  }
  if (!from._internal_sip_account_login().empty()) {
    _this->_internal_set_sip_account_login(from._internal_sip_account_login());
  }
  if (!from._internal_sip_account_password().empty()) {
    _this->_internal_set_sip_account_password(from._internal_sip_account_password());
  }
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_mutable_device_title()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_device_title());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_device_camera_id()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_device_camera_id());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_internal_mutable_call_created_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
          from._internal_call_created_at());
    }
  }
  if (from._internal_device_id() != 0) {
    _this->_internal_set_device_id(from._internal_device_id());
  }
  if (from._internal_sip_server_port() != 0) {
    _this->_internal_set_sip_server_port(from._internal_sip_server_port());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void MessagePushCall_Message::CopyFrom(const MessagePushCall_Message& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.MessagePushCall.Message)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MessagePushCall_Message::InternalSwap(MessagePushCall_Message* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.title_, lhs_arena,
                                       &other->_impl_.title_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.sip_server_host_, lhs_arena,
                                       &other->_impl_.sip_server_host_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.sip_account_login_, lhs_arena,
                                       &other->_impl_.sip_account_login_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.sip_account_password_, lhs_arena,
                                       &other->_impl_.sip_account_password_, rhs_arena);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MessagePushCall_Message, _impl_.sip_server_port_)
      + sizeof(MessagePushCall_Message::_impl_.sip_server_port_)
      - PROTOBUF_FIELD_OFFSET(MessagePushCall_Message, _impl_.device_title_)>(
          reinterpret_cast<char*>(&_impl_.device_title_),
          reinterpret_cast<char*>(&other->_impl_.device_title_));
}

std::string MessagePushCall_Message::GetTypeName() const {
  return "keyapis.exchange.v1.MessagePushCall.Message";
}

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

class MessagePushCall_PushCall::_Internal {
 public:
};

MessagePushCall_PushCall::MessagePushCall_PushCall(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.MessagePushCall.PushCall)
}
MessagePushCall_PushCall::MessagePushCall_PushCall(const MessagePushCall_PushCall& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  MessagePushCall_PushCall* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.token_) {}

    , decltype(_impl_.type_) {}

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.token_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.token_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_token().empty()) {
    _this->_impl_.token_.Set(from._internal_token(), _this->GetArenaForAllocation());
  }
  _this->_impl_.type_ = from._impl_.type_;
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.MessagePushCall.PushCall)
}

inline void MessagePushCall_PushCall::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.token_) {}

    , decltype(_impl_.type_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.token_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.token_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

MessagePushCall_PushCall::~MessagePushCall_PushCall() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.MessagePushCall.PushCall)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MessagePushCall_PushCall::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.token_.Destroy();
}

void MessagePushCall_PushCall::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MessagePushCall_PushCall::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.MessagePushCall.PushCall)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.token_.ClearToEmpty();
  _impl_.type_ = 0;
  _internal_metadata_.Clear<std::string>();
}

const char* MessagePushCall_PushCall::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string token = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_token();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.exchange.v1.MessagePushCall.PushCall.Type type = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_type(static_cast<::keyapis::exchange::v1::MessagePushCall_PushCall_Type>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* MessagePushCall_PushCall::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.MessagePushCall.PushCall)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string token = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_token().empty()) {
    const std::string& _s = this->_internal_token();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.exchange.v1.MessagePushCall.PushCall.token");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // .keyapis.exchange.v1.MessagePushCall.PushCall.Type type = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        2, this->_internal_type(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.MessagePushCall.PushCall)
  return target;
}

::size_t MessagePushCall_PushCall::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.MessagePushCall.PushCall)
  ::size_t total_size = 0;

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

  // string token = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_token().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_token());
  }

  // .keyapis.exchange.v1.MessagePushCall.PushCall.Type type = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_type());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void MessagePushCall_PushCall::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const MessagePushCall_PushCall*>(
      &from));
}

void MessagePushCall_PushCall::MergeFrom(const MessagePushCall_PushCall& from) {
  MessagePushCall_PushCall* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.MessagePushCall.PushCall)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_token().empty()) {
    _this->_internal_set_token(from._internal_token());
  }
  if (from._internal_type() != 0) {
    _this->_internal_set_type(from._internal_type());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void MessagePushCall_PushCall::CopyFrom(const MessagePushCall_PushCall& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.MessagePushCall.PushCall)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MessagePushCall_PushCall::InternalSwap(MessagePushCall_PushCall* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.token_, lhs_arena,
                                       &other->_impl_.token_, rhs_arena);
  swap(_impl_.type_, other->_impl_.type_);
}

std::string MessagePushCall_PushCall::GetTypeName() const {
  return "keyapis.exchange.v1.MessagePushCall.PushCall";
}

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

class MessagePushCall::_Internal {
 public:
  using HasBits = decltype(std::declval<MessagePushCall>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(MessagePushCall, _impl_._has_bits_);
  static const ::keyapis::exchange::v1::MessagePushCall_Message& message(const MessagePushCall* msg);
  static void set_has_message(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::keyapis::exchange::v1::MessagePushCall_PushCall& push_call(const MessagePushCall* msg);
  static void set_has_push_call(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::keyapis::exchange::v1::MessagePushCall_Message&
MessagePushCall::_Internal::message(const MessagePushCall* msg) {
  return *msg->_impl_.message_;
}
const ::keyapis::exchange::v1::MessagePushCall_PushCall&
MessagePushCall::_Internal::push_call(const MessagePushCall* msg) {
  return *msg->_impl_.push_call_;
}
MessagePushCall::MessagePushCall(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.MessagePushCall)
}
MessagePushCall::MessagePushCall(const MessagePushCall& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  MessagePushCall* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.message_){nullptr}
    , decltype(_impl_.push_call_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.message_ = new ::keyapis::exchange::v1::MessagePushCall_Message(*from._impl_.message_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000002u) != 0) {
    _this->_impl_.push_call_ = new ::keyapis::exchange::v1::MessagePushCall_PushCall(*from._impl_.push_call_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.MessagePushCall)
}

inline void MessagePushCall::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.message_){nullptr}
    , decltype(_impl_.push_call_){nullptr}
  };
}

MessagePushCall::~MessagePushCall() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.MessagePushCall)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MessagePushCall::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.message_;
  if (this != internal_default_instance()) delete _impl_.push_call_;
}

void MessagePushCall::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MessagePushCall::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.MessagePushCall)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(_impl_.message_ != nullptr);
      _impl_.message_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(_impl_.push_call_ != nullptr);
      _impl_.push_call_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* MessagePushCall::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.exchange.v1.MessagePushCall.Message message = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_message(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.exchange.v1.MessagePushCall.PushCall push_call = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_push_call(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* MessagePushCall::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.MessagePushCall)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.exchange.v1.MessagePushCall.Message message = 1 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::message(this),
        _Internal::message(this).GetCachedSize(), target, stream);
  }

  // .keyapis.exchange.v1.MessagePushCall.PushCall push_call = 2 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::push_call(this),
        _Internal::push_call(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.MessagePushCall)
  return target;
}

::size_t MessagePushCall::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.MessagePushCall)
  ::size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // .keyapis.exchange.v1.MessagePushCall.Message message = 1 [(.google.api.field_behavior) = REQUIRED];
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.message_);
    }

    // .keyapis.exchange.v1.MessagePushCall.PushCall push_call = 2 [(.google.api.field_behavior) = REQUIRED];
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.push_call_);
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void MessagePushCall::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const MessagePushCall*>(
      &from));
}

void MessagePushCall::MergeFrom(const MessagePushCall& from) {
  MessagePushCall* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.MessagePushCall)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_mutable_message()->::keyapis::exchange::v1::MessagePushCall_Message::MergeFrom(
          from._internal_message());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_push_call()->::keyapis::exchange::v1::MessagePushCall_PushCall::MergeFrom(
          from._internal_push_call());
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void MessagePushCall::CopyFrom(const MessagePushCall& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.MessagePushCall)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MessagePushCall::InternalSwap(MessagePushCall* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MessagePushCall, _impl_.push_call_)
      + sizeof(MessagePushCall::_impl_.push_call_)
      - PROTOBUF_FIELD_OFFSET(MessagePushCall, _impl_.message_)>(
          reinterpret_cast<char*>(&_impl_.message_),
          reinterpret_cast<char*>(&other->_impl_.message_));
}

std::string MessagePushCall::GetTypeName() const {
  return "keyapis.exchange.v1.MessagePushCall";
}

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

class MessageMobilePushCall_Message::_Internal {
 public:
  using HasBits = decltype(std::declval<MessageMobilePushCall_Message>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(MessageMobilePushCall_Message, _impl_._has_bits_);
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& device_title(const MessageMobilePushCall_Message* msg);
  static void set_has_device_title(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& device_camera_id(const MessageMobilePushCall_Message* msg);
  static void set_has_device_camera_id(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& sip_server_host(const MessageMobilePushCall_Message* msg);
  static void set_has_sip_server_host(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Int32Value& sip_server_port(const MessageMobilePushCall_Message* msg);
  static void set_has_sip_server_port(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& sip_account_login(const MessageMobilePushCall_Message* msg);
  static void set_has_sip_account_login(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& sip_account_password(const MessageMobilePushCall_Message* msg);
  static void set_has_sip_account_password(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& stun_server_host(const MessageMobilePushCall_Message* msg);
  static void set_has_stun_server_host(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Int32Value& stun_server_port(const MessageMobilePushCall_Message* msg);
  static void set_has_stun_server_port(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& call_created_at(const MessageMobilePushCall_Message* msg);
  static void set_has_call_created_at(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
};

const ::PROTOBUF_NAMESPACE_ID::StringValue&
MessageMobilePushCall_Message::_Internal::device_title(const MessageMobilePushCall_Message* msg) {
  return *msg->_impl_.device_title_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
MessageMobilePushCall_Message::_Internal::device_camera_id(const MessageMobilePushCall_Message* msg) {
  return *msg->_impl_.device_camera_id_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
MessageMobilePushCall_Message::_Internal::sip_server_host(const MessageMobilePushCall_Message* msg) {
  return *msg->_impl_.sip_server_host_;
}
const ::PROTOBUF_NAMESPACE_ID::Int32Value&
MessageMobilePushCall_Message::_Internal::sip_server_port(const MessageMobilePushCall_Message* msg) {
  return *msg->_impl_.sip_server_port_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
MessageMobilePushCall_Message::_Internal::sip_account_login(const MessageMobilePushCall_Message* msg) {
  return *msg->_impl_.sip_account_login_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
MessageMobilePushCall_Message::_Internal::sip_account_password(const MessageMobilePushCall_Message* msg) {
  return *msg->_impl_.sip_account_password_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
MessageMobilePushCall_Message::_Internal::stun_server_host(const MessageMobilePushCall_Message* msg) {
  return *msg->_impl_.stun_server_host_;
}
const ::PROTOBUF_NAMESPACE_ID::Int32Value&
MessageMobilePushCall_Message::_Internal::stun_server_port(const MessageMobilePushCall_Message* msg) {
  return *msg->_impl_.stun_server_port_;
}
const ::PROTOBUF_NAMESPACE_ID::Timestamp&
MessageMobilePushCall_Message::_Internal::call_created_at(const MessageMobilePushCall_Message* msg) {
  return *msg->_impl_.call_created_at_;
}
void MessageMobilePushCall_Message::clear_device_title() {
  if (_impl_.device_title_ != nullptr) _impl_.device_title_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
void MessageMobilePushCall_Message::clear_device_camera_id() {
  if (_impl_.device_camera_id_ != nullptr) _impl_.device_camera_id_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
void MessageMobilePushCall_Message::clear_sip_server_host() {
  if (_impl_.sip_server_host_ != nullptr) _impl_.sip_server_host_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
void MessageMobilePushCall_Message::clear_sip_server_port() {
  if (_impl_.sip_server_port_ != nullptr) _impl_.sip_server_port_->Clear();
  _impl_._has_bits_[0] &= ~0x00000008u;
}
void MessageMobilePushCall_Message::clear_sip_account_login() {
  if (_impl_.sip_account_login_ != nullptr) _impl_.sip_account_login_->Clear();
  _impl_._has_bits_[0] &= ~0x00000010u;
}
void MessageMobilePushCall_Message::clear_sip_account_password() {
  if (_impl_.sip_account_password_ != nullptr) _impl_.sip_account_password_->Clear();
  _impl_._has_bits_[0] &= ~0x00000020u;
}
void MessageMobilePushCall_Message::clear_stun_server_host() {
  if (_impl_.stun_server_host_ != nullptr) _impl_.stun_server_host_->Clear();
  _impl_._has_bits_[0] &= ~0x00000040u;
}
void MessageMobilePushCall_Message::clear_stun_server_port() {
  if (_impl_.stun_server_port_ != nullptr) _impl_.stun_server_port_->Clear();
  _impl_._has_bits_[0] &= ~0x00000080u;
}
void MessageMobilePushCall_Message::clear_call_created_at() {
  if (_impl_.call_created_at_ != nullptr) _impl_.call_created_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000100u;
}
MessageMobilePushCall_Message::MessageMobilePushCall_Message(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.MessageMobilePushCall.Message)
}
MessageMobilePushCall_Message::MessageMobilePushCall_Message(const MessageMobilePushCall_Message& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  MessageMobilePushCall_Message* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.title_) {}

    , decltype(_impl_.sip_token_) {}

    , decltype(_impl_.device_title_){nullptr}
    , decltype(_impl_.device_camera_id_){nullptr}
    , decltype(_impl_.sip_server_host_){nullptr}
    , decltype(_impl_.sip_server_port_){nullptr}
    , decltype(_impl_.sip_account_login_){nullptr}
    , decltype(_impl_.sip_account_password_){nullptr}
    , decltype(_impl_.stun_server_host_){nullptr}
    , decltype(_impl_.stun_server_port_){nullptr}
    , decltype(_impl_.call_created_at_){nullptr}
    , decltype(_impl_.device_id_) {}
  };

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.title_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.title_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_title().empty()) {
    _this->_impl_.title_.Set(from._internal_title(), _this->GetArenaForAllocation());
  }
  _impl_.sip_token_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.sip_token_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_sip_token().empty()) {
    _this->_impl_.sip_token_.Set(from._internal_sip_token(), _this->GetArenaForAllocation());
  }
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.device_title_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.device_title_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000002u) != 0) {
    _this->_impl_.device_camera_id_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.device_camera_id_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000004u) != 0) {
    _this->_impl_.sip_server_host_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.sip_server_host_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000008u) != 0) {
    _this->_impl_.sip_server_port_ = new ::PROTOBUF_NAMESPACE_ID::Int32Value(*from._impl_.sip_server_port_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000010u) != 0) {
    _this->_impl_.sip_account_login_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.sip_account_login_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000020u) != 0) {
    _this->_impl_.sip_account_password_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.sip_account_password_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000040u) != 0) {
    _this->_impl_.stun_server_host_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.stun_server_host_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000080u) != 0) {
    _this->_impl_.stun_server_port_ = new ::PROTOBUF_NAMESPACE_ID::Int32Value(*from._impl_.stun_server_port_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000100u) != 0) {
    _this->_impl_.call_created_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.call_created_at_);
  }
  _this->_impl_.device_id_ = from._impl_.device_id_;
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.MessageMobilePushCall.Message)
}

inline void MessageMobilePushCall_Message::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.title_) {}

    , decltype(_impl_.sip_token_) {}

    , decltype(_impl_.device_title_){nullptr}
    , decltype(_impl_.device_camera_id_){nullptr}
    , decltype(_impl_.sip_server_host_){nullptr}
    , decltype(_impl_.sip_server_port_){nullptr}
    , decltype(_impl_.sip_account_login_){nullptr}
    , decltype(_impl_.sip_account_password_){nullptr}
    , decltype(_impl_.stun_server_host_){nullptr}
    , decltype(_impl_.stun_server_port_){nullptr}
    , decltype(_impl_.call_created_at_){nullptr}
    , decltype(_impl_.device_id_) { 0 }

  };
  _impl_.title_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.title_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.sip_token_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.sip_token_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

MessageMobilePushCall_Message::~MessageMobilePushCall_Message() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.MessageMobilePushCall.Message)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MessageMobilePushCall_Message::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.title_.Destroy();
  _impl_.sip_token_.Destroy();
  if (this != internal_default_instance()) delete _impl_.device_title_;
  if (this != internal_default_instance()) delete _impl_.device_camera_id_;
  if (this != internal_default_instance()) delete _impl_.sip_server_host_;
  if (this != internal_default_instance()) delete _impl_.sip_server_port_;
  if (this != internal_default_instance()) delete _impl_.sip_account_login_;
  if (this != internal_default_instance()) delete _impl_.sip_account_password_;
  if (this != internal_default_instance()) delete _impl_.stun_server_host_;
  if (this != internal_default_instance()) delete _impl_.stun_server_port_;
  if (this != internal_default_instance()) delete _impl_.call_created_at_;
}

void MessageMobilePushCall_Message::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MessageMobilePushCall_Message::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.MessageMobilePushCall.Message)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.title_.ClearToEmpty();
  _impl_.sip_token_.ClearToEmpty();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(_impl_.device_title_ != nullptr);
      _impl_.device_title_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(_impl_.device_camera_id_ != nullptr);
      _impl_.device_camera_id_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      ABSL_DCHECK(_impl_.sip_server_host_ != nullptr);
      _impl_.sip_server_host_->Clear();
    }
    if (cached_has_bits & 0x00000008u) {
      ABSL_DCHECK(_impl_.sip_server_port_ != nullptr);
      _impl_.sip_server_port_->Clear();
    }
    if (cached_has_bits & 0x00000010u) {
      ABSL_DCHECK(_impl_.sip_account_login_ != nullptr);
      _impl_.sip_account_login_->Clear();
    }
    if (cached_has_bits & 0x00000020u) {
      ABSL_DCHECK(_impl_.sip_account_password_ != nullptr);
      _impl_.sip_account_password_->Clear();
    }
    if (cached_has_bits & 0x00000040u) {
      ABSL_DCHECK(_impl_.stun_server_host_ != nullptr);
      _impl_.stun_server_host_->Clear();
    }
    if (cached_has_bits & 0x00000080u) {
      ABSL_DCHECK(_impl_.stun_server_port_ != nullptr);
      _impl_.stun_server_port_->Clear();
    }
  }
  if (cached_has_bits & 0x00000100u) {
    ABSL_DCHECK(_impl_.call_created_at_ != nullptr);
    _impl_.call_created_at_->Clear();
  }
  _impl_.device_id_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* MessageMobilePushCall_Message::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string title = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_title();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
          _impl_.device_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue device_title = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_title(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue device_camera_id = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_camera_id(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // string sip_token = 5 [(.google.api.field_behavior) = REQUIRED];
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
          auto str = _internal_mutable_sip_token();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue sip_server_host = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_sip_server_host(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Int32Value sip_server_port = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_sip_server_port(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue sip_account_login = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_sip_account_login(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue sip_account_password = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 74)) {
          ptr = ctx->ParseMessage(_internal_mutable_sip_account_password(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue stun_server_host = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 82)) {
          ptr = ctx->ParseMessage(_internal_mutable_stun_server_host(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Int32Value stun_server_port = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 90)) {
          ptr = ctx->ParseMessage(_internal_mutable_stun_server_port(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp call_created_at = 12 [(.google.api.field_behavior) = REQUIRED];
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_call_created_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* MessageMobilePushCall_Message::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.MessageMobilePushCall.Message)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string title = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_title().empty()) {
    const std::string& _s = this->_internal_title();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.exchange.v1.MessageMobilePushCall.Message.title");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_device_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        2, this->_internal_device_id(), target);
  }

  cached_has_bits = _impl_._has_bits_[0];
  // .google.protobuf.StringValue device_title = 3;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(3, _Internal::device_title(this),
        _Internal::device_title(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue device_camera_id = 4;
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::device_camera_id(this),
        _Internal::device_camera_id(this).GetCachedSize(), target, stream);
  }

  // string sip_token = 5 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_sip_token().empty()) {
    const std::string& _s = this->_internal_sip_token();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.exchange.v1.MessageMobilePushCall.Message.sip_token");
    target = stream->WriteStringMaybeAliased(5, _s, target);
  }

  // .google.protobuf.StringValue sip_server_host = 6;
  if (cached_has_bits & 0x00000004u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(6, _Internal::sip_server_host(this),
        _Internal::sip_server_host(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Int32Value sip_server_port = 7;
  if (cached_has_bits & 0x00000008u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(7, _Internal::sip_server_port(this),
        _Internal::sip_server_port(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue sip_account_login = 8;
  if (cached_has_bits & 0x00000010u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(8, _Internal::sip_account_login(this),
        _Internal::sip_account_login(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue sip_account_password = 9;
  if (cached_has_bits & 0x00000020u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(9, _Internal::sip_account_password(this),
        _Internal::sip_account_password(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue stun_server_host = 10;
  if (cached_has_bits & 0x00000040u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(10, _Internal::stun_server_host(this),
        _Internal::stun_server_host(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Int32Value stun_server_port = 11;
  if (cached_has_bits & 0x00000080u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(11, _Internal::stun_server_port(this),
        _Internal::stun_server_port(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Timestamp call_created_at = 12 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000100u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(12, _Internal::call_created_at(this),
        _Internal::call_created_at(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.MessageMobilePushCall.Message)
  return target;
}

::size_t MessageMobilePushCall_Message::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.MessageMobilePushCall.Message)
  ::size_t total_size = 0;

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

  // string title = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_title().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_title());
  }

  // string sip_token = 5 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_sip_token().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_sip_token());
  }

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // .google.protobuf.StringValue device_title = 3;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.device_title_);
    }

    // .google.protobuf.StringValue device_camera_id = 4;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.device_camera_id_);
    }

    // .google.protobuf.StringValue sip_server_host = 6;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.sip_server_host_);
    }

    // .google.protobuf.Int32Value sip_server_port = 7;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.sip_server_port_);
    }

    // .google.protobuf.StringValue sip_account_login = 8;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.sip_account_login_);
    }

    // .google.protobuf.StringValue sip_account_password = 9;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.sip_account_password_);
    }

    // .google.protobuf.StringValue stun_server_host = 10;
    if (cached_has_bits & 0x00000040u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.stun_server_host_);
    }

    // .google.protobuf.Int32Value stun_server_port = 11;
    if (cached_has_bits & 0x00000080u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.stun_server_port_);
    }

  }
  // .google.protobuf.Timestamp call_created_at = 12 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000100u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.call_created_at_);
  }

  // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_device_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_device_id());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void MessageMobilePushCall_Message::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const MessageMobilePushCall_Message*>(
      &from));
}

void MessageMobilePushCall_Message::MergeFrom(const MessageMobilePushCall_Message& from) {
  MessageMobilePushCall_Message* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.MessageMobilePushCall.Message)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_title().empty()) {
    _this->_internal_set_title(from._internal_title());
  }
  if (!from._internal_sip_token().empty()) {
    _this->_internal_set_sip_token(from._internal_sip_token());
  }
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_mutable_device_title()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_device_title());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_device_camera_id()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_device_camera_id());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_internal_mutable_sip_server_host()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_sip_server_host());
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_internal_mutable_sip_server_port()->::PROTOBUF_NAMESPACE_ID::Int32Value::MergeFrom(
          from._internal_sip_server_port());
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_internal_mutable_sip_account_login()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_sip_account_login());
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_internal_mutable_sip_account_password()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_sip_account_password());
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_internal_mutable_stun_server_host()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_stun_server_host());
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_internal_mutable_stun_server_port()->::PROTOBUF_NAMESPACE_ID::Int32Value::MergeFrom(
          from._internal_stun_server_port());
    }
  }
  if (cached_has_bits & 0x00000100u) {
    _this->_internal_mutable_call_created_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
        from._internal_call_created_at());
  }
  if (from._internal_device_id() != 0) {
    _this->_internal_set_device_id(from._internal_device_id());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void MessageMobilePushCall_Message::CopyFrom(const MessageMobilePushCall_Message& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.MessageMobilePushCall.Message)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MessageMobilePushCall_Message::InternalSwap(MessageMobilePushCall_Message* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.title_, lhs_arena,
                                       &other->_impl_.title_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.sip_token_, lhs_arena,
                                       &other->_impl_.sip_token_, rhs_arena);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MessageMobilePushCall_Message, _impl_.device_id_)
      + sizeof(MessageMobilePushCall_Message::_impl_.device_id_)
      - PROTOBUF_FIELD_OFFSET(MessageMobilePushCall_Message, _impl_.device_title_)>(
          reinterpret_cast<char*>(&_impl_.device_title_),
          reinterpret_cast<char*>(&other->_impl_.device_title_));
}

std::string MessageMobilePushCall_Message::GetTypeName() const {
  return "keyapis.exchange.v1.MessageMobilePushCall.Message";
}

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

class MessageMobilePushCall_PushCall::_Internal {
 public:
};

MessageMobilePushCall_PushCall::MessageMobilePushCall_PushCall(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.MessageMobilePushCall.PushCall)
}
MessageMobilePushCall_PushCall::MessageMobilePushCall_PushCall(const MessageMobilePushCall_PushCall& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  MessageMobilePushCall_PushCall* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.token_) {}

    , decltype(_impl_.type_) {}

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.token_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.token_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_token().empty()) {
    _this->_impl_.token_.Set(from._internal_token(), _this->GetArenaForAllocation());
  }
  _this->_impl_.type_ = from._impl_.type_;
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.MessageMobilePushCall.PushCall)
}

inline void MessageMobilePushCall_PushCall::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.token_) {}

    , decltype(_impl_.type_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.token_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.token_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

MessageMobilePushCall_PushCall::~MessageMobilePushCall_PushCall() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.MessageMobilePushCall.PushCall)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MessageMobilePushCall_PushCall::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.token_.Destroy();
}

void MessageMobilePushCall_PushCall::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MessageMobilePushCall_PushCall::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.MessageMobilePushCall.PushCall)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.token_.ClearToEmpty();
  _impl_.type_ = 0;
  _internal_metadata_.Clear<std::string>();
}

const char* MessageMobilePushCall_PushCall::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string token = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_token();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.exchange.v1.MessageMobilePushCall.PushCall.Type type = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_type(static_cast<::keyapis::exchange::v1::MessageMobilePushCall_PushCall_Type>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* MessageMobilePushCall_PushCall::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.MessageMobilePushCall.PushCall)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string token = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_token().empty()) {
    const std::string& _s = this->_internal_token();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.exchange.v1.MessageMobilePushCall.PushCall.token");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // .keyapis.exchange.v1.MessageMobilePushCall.PushCall.Type type = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        2, this->_internal_type(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.MessageMobilePushCall.PushCall)
  return target;
}

::size_t MessageMobilePushCall_PushCall::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.MessageMobilePushCall.PushCall)
  ::size_t total_size = 0;

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

  // string token = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_token().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_token());
  }

  // .keyapis.exchange.v1.MessageMobilePushCall.PushCall.Type type = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_type());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void MessageMobilePushCall_PushCall::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const MessageMobilePushCall_PushCall*>(
      &from));
}

void MessageMobilePushCall_PushCall::MergeFrom(const MessageMobilePushCall_PushCall& from) {
  MessageMobilePushCall_PushCall* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.MessageMobilePushCall.PushCall)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_token().empty()) {
    _this->_internal_set_token(from._internal_token());
  }
  if (from._internal_type() != 0) {
    _this->_internal_set_type(from._internal_type());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void MessageMobilePushCall_PushCall::CopyFrom(const MessageMobilePushCall_PushCall& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.MessageMobilePushCall.PushCall)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MessageMobilePushCall_PushCall::InternalSwap(MessageMobilePushCall_PushCall* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.token_, lhs_arena,
                                       &other->_impl_.token_, rhs_arena);
  swap(_impl_.type_, other->_impl_.type_);
}

std::string MessageMobilePushCall_PushCall::GetTypeName() const {
  return "keyapis.exchange.v1.MessageMobilePushCall.PushCall";
}

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

class MessageMobilePushCall::_Internal {
 public:
  using HasBits = decltype(std::declval<MessageMobilePushCall>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(MessageMobilePushCall, _impl_._has_bits_);
  static const ::keyapis::exchange::v1::MessageMobilePushCall_Message& message(const MessageMobilePushCall* msg);
  static void set_has_message(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::keyapis::exchange::v1::MessageMobilePushCall_PushCall& push_call(const MessageMobilePushCall* msg);
  static void set_has_push_call(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::keyapis::exchange::v1::MessageMobilePushCall_Message&
MessageMobilePushCall::_Internal::message(const MessageMobilePushCall* msg) {
  return *msg->_impl_.message_;
}
const ::keyapis::exchange::v1::MessageMobilePushCall_PushCall&
MessageMobilePushCall::_Internal::push_call(const MessageMobilePushCall* msg) {
  return *msg->_impl_.push_call_;
}
MessageMobilePushCall::MessageMobilePushCall(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.MessageMobilePushCall)
}
MessageMobilePushCall::MessageMobilePushCall(const MessageMobilePushCall& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  MessageMobilePushCall* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.message_){nullptr}
    , decltype(_impl_.push_call_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.message_ = new ::keyapis::exchange::v1::MessageMobilePushCall_Message(*from._impl_.message_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000002u) != 0) {
    _this->_impl_.push_call_ = new ::keyapis::exchange::v1::MessageMobilePushCall_PushCall(*from._impl_.push_call_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.MessageMobilePushCall)
}

inline void MessageMobilePushCall::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.message_){nullptr}
    , decltype(_impl_.push_call_){nullptr}
  };
}

MessageMobilePushCall::~MessageMobilePushCall() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.MessageMobilePushCall)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MessageMobilePushCall::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.message_;
  if (this != internal_default_instance()) delete _impl_.push_call_;
}

void MessageMobilePushCall::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MessageMobilePushCall::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.MessageMobilePushCall)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(_impl_.message_ != nullptr);
      _impl_.message_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(_impl_.push_call_ != nullptr);
      _impl_.push_call_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* MessageMobilePushCall::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.exchange.v1.MessageMobilePushCall.Message message = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_message(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.exchange.v1.MessageMobilePushCall.PushCall push_call = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_push_call(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* MessageMobilePushCall::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.MessageMobilePushCall)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.exchange.v1.MessageMobilePushCall.Message message = 1 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::message(this),
        _Internal::message(this).GetCachedSize(), target, stream);
  }

  // .keyapis.exchange.v1.MessageMobilePushCall.PushCall push_call = 2 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::push_call(this),
        _Internal::push_call(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.MessageMobilePushCall)
  return target;
}

::size_t MessageMobilePushCall::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.MessageMobilePushCall)
  ::size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // .keyapis.exchange.v1.MessageMobilePushCall.Message message = 1 [(.google.api.field_behavior) = REQUIRED];
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.message_);
    }

    // .keyapis.exchange.v1.MessageMobilePushCall.PushCall push_call = 2 [(.google.api.field_behavior) = REQUIRED];
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.push_call_);
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void MessageMobilePushCall::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const MessageMobilePushCall*>(
      &from));
}

void MessageMobilePushCall::MergeFrom(const MessageMobilePushCall& from) {
  MessageMobilePushCall* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.MessageMobilePushCall)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_mutable_message()->::keyapis::exchange::v1::MessageMobilePushCall_Message::MergeFrom(
          from._internal_message());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_push_call()->::keyapis::exchange::v1::MessageMobilePushCall_PushCall::MergeFrom(
          from._internal_push_call());
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void MessageMobilePushCall::CopyFrom(const MessageMobilePushCall& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.MessageMobilePushCall)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void MessageMobilePushCall::InternalSwap(MessageMobilePushCall* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MessageMobilePushCall, _impl_.push_call_)
      + sizeof(MessageMobilePushCall::_impl_.push_call_)
      - PROTOBUF_FIELD_OFFSET(MessageMobilePushCall, _impl_.message_)>(
          reinterpret_cast<char*>(&_impl_.message_),
          reinterpret_cast<char*>(&other->_impl_.message_));
}

std::string MessageMobilePushCall::GetTypeName() const {
  return "keyapis.exchange.v1.MessageMobilePushCall";
}

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

class PostMessagePushCallRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<PostMessagePushCallRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(PostMessagePushCallRequest, _impl_._has_bits_);
  static const ::keyapis::exchange::v1::MessagePushCall& data(const PostMessagePushCallRequest* msg);
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::exchange::v1::MessagePushCall&
PostMessagePushCallRequest::_Internal::data(const PostMessagePushCallRequest* msg) {
  return *msg->_impl_.data_;
}
PostMessagePushCallRequest::PostMessagePushCallRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.PostMessagePushCallRequest)
}
PostMessagePushCallRequest::PostMessagePushCallRequest(const PostMessagePushCallRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostMessagePushCallRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.data_ = new ::keyapis::exchange::v1::MessagePushCall(*from._impl_.data_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.PostMessagePushCallRequest)
}

inline void PostMessagePushCallRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){nullptr}
  };
}

PostMessagePushCallRequest::~PostMessagePushCallRequest() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.PostMessagePushCallRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostMessagePushCallRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.data_;
}

void PostMessagePushCallRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostMessagePushCallRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.PostMessagePushCallRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.data_ != nullptr);
    _impl_.data_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* PostMessagePushCallRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.exchange.v1.MessagePushCall data = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostMessagePushCallRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.PostMessagePushCallRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.exchange.v1.MessagePushCall data = 1 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::data(this),
        _Internal::data(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.PostMessagePushCallRequest)
  return target;
}

::size_t PostMessagePushCallRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.PostMessagePushCallRequest)
  ::size_t total_size = 0;

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

  // .keyapis.exchange.v1.MessagePushCall data = 1 [(.google.api.field_behavior) = REQUIRED];
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.data_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostMessagePushCallRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostMessagePushCallRequest*>(
      &from));
}

void PostMessagePushCallRequest::MergeFrom(const PostMessagePushCallRequest& from) {
  PostMessagePushCallRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.PostMessagePushCallRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_data()->::keyapis::exchange::v1::MessagePushCall::MergeFrom(
        from._internal_data());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostMessagePushCallRequest::CopyFrom(const PostMessagePushCallRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.PostMessagePushCallRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void PostMessagePushCallRequest::InternalSwap(PostMessagePushCallRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.data_, other->_impl_.data_);
}

std::string PostMessagePushCallRequest::GetTypeName() const {
  return "keyapis.exchange.v1.PostMessagePushCallRequest";
}

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

class PostMessagePushCallResponse::_Internal {
 public:
};

PostMessagePushCallResponse::PostMessagePushCallResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.PostMessagePushCallResponse)
}
PostMessagePushCallResponse::PostMessagePushCallResponse(const PostMessagePushCallResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.PostMessagePushCallResponse)
}

inline void PostMessagePushCallResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PostMessagePushCallResponse::~PostMessagePushCallResponse() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.PostMessagePushCallResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostMessagePushCallResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PostMessagePushCallResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostMessagePushCallResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.PostMessagePushCallResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PostMessagePushCallResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostMessagePushCallResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.PostMessagePushCallResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.PostMessagePushCallResponse)
  return target;
}

::size_t PostMessagePushCallResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.PostMessagePushCallResponse)
  ::size_t total_size = 0;

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostMessagePushCallResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostMessagePushCallResponse*>(
      &from));
}

void PostMessagePushCallResponse::MergeFrom(const PostMessagePushCallResponse& from) {
  PostMessagePushCallResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.PostMessagePushCallResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostMessagePushCallResponse::CopyFrom(const PostMessagePushCallResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.PostMessagePushCallResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void PostMessagePushCallResponse::InternalSwap(PostMessagePushCallResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PostMessagePushCallResponse::GetTypeName() const {
  return "keyapis.exchange.v1.PostMessagePushCallResponse";
}

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

class PostMessageMobilePushCallRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<PostMessageMobilePushCallRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(PostMessageMobilePushCallRequest, _impl_._has_bits_);
  static const ::keyapis::exchange::v1::MessageMobilePushCall& data(const PostMessageMobilePushCallRequest* msg);
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::exchange::v1::MessageMobilePushCall&
PostMessageMobilePushCallRequest::_Internal::data(const PostMessageMobilePushCallRequest* msg) {
  return *msg->_impl_.data_;
}
PostMessageMobilePushCallRequest::PostMessageMobilePushCallRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.PostMessageMobilePushCallRequest)
}
PostMessageMobilePushCallRequest::PostMessageMobilePushCallRequest(const PostMessageMobilePushCallRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostMessageMobilePushCallRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.data_ = new ::keyapis::exchange::v1::MessageMobilePushCall(*from._impl_.data_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.PostMessageMobilePushCallRequest)
}

inline void PostMessageMobilePushCallRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){nullptr}
  };
}

PostMessageMobilePushCallRequest::~PostMessageMobilePushCallRequest() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.PostMessageMobilePushCallRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostMessageMobilePushCallRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.data_;
}

void PostMessageMobilePushCallRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostMessageMobilePushCallRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.PostMessageMobilePushCallRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.data_ != nullptr);
    _impl_.data_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* PostMessageMobilePushCallRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.exchange.v1.MessageMobilePushCall data = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostMessageMobilePushCallRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.PostMessageMobilePushCallRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.exchange.v1.MessageMobilePushCall data = 1 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::data(this),
        _Internal::data(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.PostMessageMobilePushCallRequest)
  return target;
}

::size_t PostMessageMobilePushCallRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.PostMessageMobilePushCallRequest)
  ::size_t total_size = 0;

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

  // .keyapis.exchange.v1.MessageMobilePushCall data = 1 [(.google.api.field_behavior) = REQUIRED];
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.data_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostMessageMobilePushCallRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostMessageMobilePushCallRequest*>(
      &from));
}

void PostMessageMobilePushCallRequest::MergeFrom(const PostMessageMobilePushCallRequest& from) {
  PostMessageMobilePushCallRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.PostMessageMobilePushCallRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_data()->::keyapis::exchange::v1::MessageMobilePushCall::MergeFrom(
        from._internal_data());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostMessageMobilePushCallRequest::CopyFrom(const PostMessageMobilePushCallRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.PostMessageMobilePushCallRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void PostMessageMobilePushCallRequest::InternalSwap(PostMessageMobilePushCallRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.data_, other->_impl_.data_);
}

std::string PostMessageMobilePushCallRequest::GetTypeName() const {
  return "keyapis.exchange.v1.PostMessageMobilePushCallRequest";
}

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

class PostMessageMobilePushCallResponse::_Internal {
 public:
};

PostMessageMobilePushCallResponse::PostMessageMobilePushCallResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.exchange.v1.PostMessageMobilePushCallResponse)
}
PostMessageMobilePushCallResponse::PostMessageMobilePushCallResponse(const PostMessageMobilePushCallResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.exchange.v1.PostMessageMobilePushCallResponse)
}

inline void PostMessageMobilePushCallResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PostMessageMobilePushCallResponse::~PostMessageMobilePushCallResponse() {
  // @@protoc_insertion_point(destructor:keyapis.exchange.v1.PostMessageMobilePushCallResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostMessageMobilePushCallResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PostMessageMobilePushCallResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostMessageMobilePushCallResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.exchange.v1.PostMessageMobilePushCallResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PostMessageMobilePushCallResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostMessageMobilePushCallResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.exchange.v1.PostMessageMobilePushCallResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.exchange.v1.PostMessageMobilePushCallResponse)
  return target;
}

::size_t PostMessageMobilePushCallResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.exchange.v1.PostMessageMobilePushCallResponse)
  ::size_t total_size = 0;

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostMessageMobilePushCallResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostMessageMobilePushCallResponse*>(
      &from));
}

void PostMessageMobilePushCallResponse::MergeFrom(const PostMessageMobilePushCallResponse& from) {
  PostMessageMobilePushCallResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.exchange.v1.PostMessageMobilePushCallResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostMessageMobilePushCallResponse::CopyFrom(const PostMessageMobilePushCallResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.exchange.v1.PostMessageMobilePushCallResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void PostMessageMobilePushCallResponse::InternalSwap(PostMessageMobilePushCallResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PostMessageMobilePushCallResponse::GetTypeName() const {
  return "keyapis.exchange.v1.PostMessageMobilePushCallResponse";
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace v1
}  // namespace exchange
}  // namespace keyapis
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::PostMessageFullDuplexRequest*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::PostMessageFullDuplexRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::PostMessageFullDuplexRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::PostMessageFullDuplexResponse*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::PostMessageFullDuplexResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::PostMessageFullDuplexResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::MessagePushCall_Message*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::MessagePushCall_Message >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::MessagePushCall_Message >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::MessagePushCall_PushCall*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::MessagePushCall_PushCall >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::MessagePushCall_PushCall >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::MessagePushCall*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::MessagePushCall >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::MessagePushCall >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::MessageMobilePushCall_Message*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::MessageMobilePushCall_Message >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::MessageMobilePushCall_Message >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::MessageMobilePushCall_PushCall*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::MessageMobilePushCall_PushCall >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::MessageMobilePushCall_PushCall >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::MessageMobilePushCall*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::MessageMobilePushCall >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::MessageMobilePushCall >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::PostMessagePushCallRequest*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::PostMessagePushCallRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::PostMessagePushCallRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::PostMessagePushCallResponse*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::PostMessagePushCallResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::PostMessagePushCallResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::PostMessageMobilePushCallRequest*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::PostMessageMobilePushCallRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::PostMessageMobilePushCallRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::exchange::v1::PostMessageMobilePushCallResponse*
Arena::CreateMaybeMessage< ::keyapis::exchange::v1::PostMessageMobilePushCallResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::exchange::v1::PostMessageMobilePushCallResponse >(arena);
}
PROTOBUF_NAMESPACE_CLOSE
// @@protoc_insertion_point(global_scope)
#include "google/protobuf/port_undef.inc"
