// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: client/v3beta/dto/group/event/group_event.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto

#include <limits>
#include <string>


#include <herogoogle/protobuf/stubs/common.h>
#if GOOGLE_PROTOBUF_VERSION < 3018000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3018000 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif


#include <herogoogle/protobuf/io/coded_stream.h>
#include <herogoogle/protobuf/arena.h>
#include <herogoogle/protobuf/arenastring.h>
#include <herogoogle/protobuf/generated_message_table_driven.h>
#include <herogoogle/protobuf/generated_message_util.h>
#include <herogoogle/protobuf/metadata_lite.h>
#include <herogoogle/protobuf/generated_message_reflection.h>
#include <herogoogle/protobuf/message.h>
#include <herogoogle/protobuf/repeated_field.h>  // IWYU pragma: export
#include <herogoogle/protobuf/extension_set.h>  // IWYU pragma: export
#include <herogoogle/protobuf/generated_enum_reflection.h>
#include <herogoogle/protobuf/unknown_field_set.h>
#include "client/v3beta/dto/user/model/user_model.pb.h"
#include "client/v3beta/dto/group/model/group_model.pb.h"
// @@protoc_insertion_point(includes)

#define PROTOBUF_INTERNAL_EXPORT_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto {
  static const ::herogoogle::protobuf::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::herogoogle::protobuf::internal::AuxiliaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::herogoogle::protobuf::internal::ParseTable schema[8]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::herogoogle::protobuf::internal::FieldMetadata field_metadata[];
  static const ::herogoogle::protobuf::internal::SerializationTable serialization_table[];
  static const ::herogoogle::protobuf::uint32 offsets[];
};
extern const ::herogoogle::protobuf::internal::DescriptorTable descriptor_table_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto;
namespace heroim {
namespace client {
namespace v3beta {
namespace dto {
namespace group {
namespace model {
namespace event {
class GroupCreatedEvent;
struct GroupCreatedEventDefaultTypeInternal;
extern GroupCreatedEventDefaultTypeInternal _GroupCreatedEvent_default_instance_;
class GroupDismissedEvent;
struct GroupDismissedEventDefaultTypeInternal;
extern GroupDismissedEventDefaultTypeInternal _GroupDismissedEvent_default_instance_;
class GroupJoinApplyEvent;
struct GroupJoinApplyEventDefaultTypeInternal;
extern GroupJoinApplyEventDefaultTypeInternal _GroupJoinApplyEvent_default_instance_;
class GroupJoinInviteEvent;
struct GroupJoinInviteEventDefaultTypeInternal;
extern GroupJoinInviteEventDefaultTypeInternal _GroupJoinInviteEvent_default_instance_;
class GroupJoinedEvent;
struct GroupJoinedEventDefaultTypeInternal;
extern GroupJoinedEventDefaultTypeInternal _GroupJoinedEvent_default_instance_;
class GroupMemberRemovedEvent;
struct GroupMemberRemovedEventDefaultTypeInternal;
extern GroupMemberRemovedEventDefaultTypeInternal _GroupMemberRemovedEvent_default_instance_;
class GroupProfileChangedEvent;
struct GroupProfileChangedEventDefaultTypeInternal;
extern GroupProfileChangedEventDefaultTypeInternal _GroupProfileChangedEvent_default_instance_;
class GroupQuitedEvent;
struct GroupQuitedEventDefaultTypeInternal;
extern GroupQuitedEventDefaultTypeInternal _GroupQuitedEvent_default_instance_;
}  // namespace event
}  // namespace model
}  // namespace group
}  // namespace dto
}  // namespace v3beta
}  // namespace client
}  // namespace heroim
PROTOBUF_NAMESPACE_OPEN
template<> ::heroim::client::v3beta::dto::group::model::event::GroupCreatedEvent* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::event::GroupCreatedEvent>(Arena*);
template<> ::heroim::client::v3beta::dto::group::model::event::GroupDismissedEvent* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::event::GroupDismissedEvent>(Arena*);
template<> ::heroim::client::v3beta::dto::group::model::event::GroupJoinApplyEvent* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::event::GroupJoinApplyEvent>(Arena*);
template<> ::heroim::client::v3beta::dto::group::model::event::GroupJoinInviteEvent* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::event::GroupJoinInviteEvent>(Arena*);
template<> ::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent>(Arena*);
template<> ::heroim::client::v3beta::dto::group::model::event::GroupMemberRemovedEvent* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::event::GroupMemberRemovedEvent>(Arena*);
template<> ::heroim::client::v3beta::dto::group::model::event::GroupProfileChangedEvent* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::event::GroupProfileChangedEvent>(Arena*);
template<> ::heroim::client::v3beta::dto::group::model::event::GroupQuitedEvent* Arena::CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::event::GroupQuitedEvent>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace heroim {
namespace client {
namespace v3beta {
namespace dto {
namespace group {
namespace model {
namespace event {

enum GroupJoinedEvent_SourceType : int {
  GroupJoinedEvent_SourceType_System = 0,
  GroupJoinedEvent_SourceType_Join = 1,
  GroupJoinedEvent_SourceType_Apply = 2,
  GroupJoinedEvent_SourceType_Invite = 3,
  GroupJoinedEvent_SourceType_GroupJoinedEvent_SourceType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::herogoogle::protobuf::int32>::min(),
  GroupJoinedEvent_SourceType_GroupJoinedEvent_SourceType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::herogoogle::protobuf::int32>::max()
};
bool GroupJoinedEvent_SourceType_IsValid(int value);
constexpr GroupJoinedEvent_SourceType GroupJoinedEvent_SourceType_SourceType_MIN = GroupJoinedEvent_SourceType_System;
constexpr GroupJoinedEvent_SourceType GroupJoinedEvent_SourceType_SourceType_MAX = GroupJoinedEvent_SourceType_Invite;
constexpr int GroupJoinedEvent_SourceType_SourceType_ARRAYSIZE = GroupJoinedEvent_SourceType_SourceType_MAX + 1;

const ::herogoogle::protobuf::EnumDescriptor* GroupJoinedEvent_SourceType_descriptor();
template<typename T>
inline const std::string& GroupJoinedEvent_SourceType_Name(T enum_t_value) {
  static_assert(::std::is_same<T, GroupJoinedEvent_SourceType>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function GroupJoinedEvent_SourceType_Name.");
  return ::herogoogle::protobuf::internal::NameOfEnum(
    GroupJoinedEvent_SourceType_descriptor(), enum_t_value);
}
inline bool GroupJoinedEvent_SourceType_Parse(
    ::herogoogle::protobuf::ConstStringParam name, GroupJoinedEvent_SourceType* value) {
  return ::herogoogle::protobuf::internal::ParseNamedEnum<GroupJoinedEvent_SourceType>(
    GroupJoinedEvent_SourceType_descriptor(), name, value);
}
// ===================================================================

class GroupCreatedEvent final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent) */ {
 public:
  inline GroupCreatedEvent() : GroupCreatedEvent(nullptr) {}
  ~GroupCreatedEvent() override;
  explicit constexpr GroupCreatedEvent(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline GroupCreatedEvent& operator=(const GroupCreatedEvent& from) {
    CopyFrom(from);
    return *this;
  }
  inline GroupCreatedEvent& operator=(GroupCreatedEvent&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GroupCreatedEvent& default_instance() {
    return *internal_default_instance();
  }
  static inline const GroupCreatedEvent* internal_default_instance() {
    return reinterpret_cast<const GroupCreatedEvent*>(
               &_GroupCreatedEvent_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(GroupCreatedEvent& a, GroupCreatedEvent& b) {
    a.Swap(&b);
  }
  inline void Swap(GroupCreatedEvent* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GroupCreatedEvent* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline GroupCreatedEvent* New() const final {
    return new GroupCreatedEvent();
  }

  GroupCreatedEvent* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<GroupCreatedEvent>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const GroupCreatedEvent& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const GroupCreatedEvent& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(GroupCreatedEvent* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent";
  }
  protected:
  explicit GroupCreatedEvent(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kProductIdFieldNumber = 1,
    kUserFieldNumber = 2,
    kGroupFieldNumber = 3,
  };
  // string productId = 1;
  void clear_productid();
  const std::string& productid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_productid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_productid();
  PROTOBUF_MUST_USE_RESULT std::string* release_productid();
  void set_allocated_productid(std::string* productid);
  private:
  const std::string& _internal_productid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_productid(const std::string& value);
  std::string* _internal_mutable_productid();
  public:

  // .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
  bool has_user() const;
  private:
  bool _internal_has_user() const;
  public:
  void clear_user();
  const ::heroim::client::v3beta::dto::user::model::UserSimple& user() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::user::model::UserSimple* release_user();
  ::heroim::client::v3beta::dto::user::model::UserSimple* mutable_user();
  void set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user);
  private:
  const ::heroim::client::v3beta::dto::user::model::UserSimple& _internal_user() const;
  ::heroim::client::v3beta::dto::user::model::UserSimple* _internal_mutable_user();
  public:
  void unsafe_arena_set_allocated_user(
      ::heroim::client::v3beta::dto::user::model::UserSimple* user);
  ::heroim::client::v3beta::dto::user::model::UserSimple* unsafe_arena_release_user();

  // .heroim.client.v3beta.dto.group.model.GroupSimple group = 3;
  bool has_group() const;
  private:
  bool _internal_has_group() const;
  public:
  void clear_group();
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& group() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::group::model::GroupSimple* release_group();
  ::heroim::client::v3beta::dto::group::model::GroupSimple* mutable_group();
  void set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  private:
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& _internal_group() const;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _internal_mutable_group();
  public:
  void unsafe_arena_set_allocated_group(
      ::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  ::heroim::client::v3beta::dto::group::model::GroupSimple* unsafe_arena_release_group();

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::internal::ArenaStringPtr productid_;
  ::heroim::client::v3beta::dto::user::model::UserSimple* user_;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* group_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto;
};
// -------------------------------------------------------------------

class GroupJoinApplyEvent final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent) */ {
 public:
  inline GroupJoinApplyEvent() : GroupJoinApplyEvent(nullptr) {}
  ~GroupJoinApplyEvent() override;
  explicit constexpr GroupJoinApplyEvent(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline GroupJoinApplyEvent& operator=(const GroupJoinApplyEvent& from) {
    CopyFrom(from);
    return *this;
  }
  inline GroupJoinApplyEvent& operator=(GroupJoinApplyEvent&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GroupJoinApplyEvent& default_instance() {
    return *internal_default_instance();
  }
  static inline const GroupJoinApplyEvent* internal_default_instance() {
    return reinterpret_cast<const GroupJoinApplyEvent*>(
               &_GroupJoinApplyEvent_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(GroupJoinApplyEvent& a, GroupJoinApplyEvent& b) {
    a.Swap(&b);
  }
  inline void Swap(GroupJoinApplyEvent* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GroupJoinApplyEvent* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline GroupJoinApplyEvent* New() const final {
    return new GroupJoinApplyEvent();
  }

  GroupJoinApplyEvent* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<GroupJoinApplyEvent>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const GroupJoinApplyEvent& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const GroupJoinApplyEvent& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(GroupJoinApplyEvent* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent";
  }
  protected:
  explicit GroupJoinApplyEvent(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kProductIdFieldNumber = 1,
    kActTokenFieldNumber = 4,
    kUserFieldNumber = 2,
    kGroupFieldNumber = 3,
  };
  // string productId = 1;
  void clear_productid();
  const std::string& productid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_productid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_productid();
  PROTOBUF_MUST_USE_RESULT std::string* release_productid();
  void set_allocated_productid(std::string* productid);
  private:
  const std::string& _internal_productid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_productid(const std::string& value);
  std::string* _internal_mutable_productid();
  public:

  // string actToken = 4;
  void clear_acttoken();
  const std::string& acttoken() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_acttoken(ArgT0&& arg0, ArgT... args);
  std::string* mutable_acttoken();
  PROTOBUF_MUST_USE_RESULT std::string* release_acttoken();
  void set_allocated_acttoken(std::string* acttoken);
  private:
  const std::string& _internal_acttoken() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_acttoken(const std::string& value);
  std::string* _internal_mutable_acttoken();
  public:

  // .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
  bool has_user() const;
  private:
  bool _internal_has_user() const;
  public:
  void clear_user();
  const ::heroim::client::v3beta::dto::user::model::UserSimple& user() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::user::model::UserSimple* release_user();
  ::heroim::client::v3beta::dto::user::model::UserSimple* mutable_user();
  void set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user);
  private:
  const ::heroim::client::v3beta::dto::user::model::UserSimple& _internal_user() const;
  ::heroim::client::v3beta::dto::user::model::UserSimple* _internal_mutable_user();
  public:
  void unsafe_arena_set_allocated_user(
      ::heroim::client::v3beta::dto::user::model::UserSimple* user);
  ::heroim::client::v3beta::dto::user::model::UserSimple* unsafe_arena_release_user();

  // .heroim.client.v3beta.dto.group.model.GroupSimple group = 3;
  bool has_group() const;
  private:
  bool _internal_has_group() const;
  public:
  void clear_group();
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& group() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::group::model::GroupSimple* release_group();
  ::heroim::client::v3beta::dto::group::model::GroupSimple* mutable_group();
  void set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  private:
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& _internal_group() const;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _internal_mutable_group();
  public:
  void unsafe_arena_set_allocated_group(
      ::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  ::heroim::client::v3beta::dto::group::model::GroupSimple* unsafe_arena_release_group();

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::internal::ArenaStringPtr productid_;
  ::herogoogle::protobuf::internal::ArenaStringPtr acttoken_;
  ::heroim::client::v3beta::dto::user::model::UserSimple* user_;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* group_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto;
};
// -------------------------------------------------------------------

class GroupJoinInviteEvent final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent) */ {
 public:
  inline GroupJoinInviteEvent() : GroupJoinInviteEvent(nullptr) {}
  ~GroupJoinInviteEvent() override;
  explicit constexpr GroupJoinInviteEvent(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline GroupJoinInviteEvent& operator=(const GroupJoinInviteEvent& from) {
    CopyFrom(from);
    return *this;
  }
  inline GroupJoinInviteEvent& operator=(GroupJoinInviteEvent&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GroupJoinInviteEvent& default_instance() {
    return *internal_default_instance();
  }
  static inline const GroupJoinInviteEvent* internal_default_instance() {
    return reinterpret_cast<const GroupJoinInviteEvent*>(
               &_GroupJoinInviteEvent_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(GroupJoinInviteEvent& a, GroupJoinInviteEvent& b) {
    a.Swap(&b);
  }
  inline void Swap(GroupJoinInviteEvent* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GroupJoinInviteEvent* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline GroupJoinInviteEvent* New() const final {
    return new GroupJoinInviteEvent();
  }

  GroupJoinInviteEvent* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<GroupJoinInviteEvent>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const GroupJoinInviteEvent& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const GroupJoinInviteEvent& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(GroupJoinInviteEvent* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent";
  }
  protected:
  explicit GroupJoinInviteEvent(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kProductIdFieldNumber = 1,
    kActTokenFieldNumber = 5,
    kUserFieldNumber = 2,
    kDistUserFieldNumber = 3,
    kGroupFieldNumber = 4,
  };
  // string productId = 1;
  void clear_productid();
  const std::string& productid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_productid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_productid();
  PROTOBUF_MUST_USE_RESULT std::string* release_productid();
  void set_allocated_productid(std::string* productid);
  private:
  const std::string& _internal_productid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_productid(const std::string& value);
  std::string* _internal_mutable_productid();
  public:

  // string actToken = 5;
  void clear_acttoken();
  const std::string& acttoken() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_acttoken(ArgT0&& arg0, ArgT... args);
  std::string* mutable_acttoken();
  PROTOBUF_MUST_USE_RESULT std::string* release_acttoken();
  void set_allocated_acttoken(std::string* acttoken);
  private:
  const std::string& _internal_acttoken() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_acttoken(const std::string& value);
  std::string* _internal_mutable_acttoken();
  public:

  // .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
  bool has_user() const;
  private:
  bool _internal_has_user() const;
  public:
  void clear_user();
  const ::heroim::client::v3beta::dto::user::model::UserSimple& user() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::user::model::UserSimple* release_user();
  ::heroim::client::v3beta::dto::user::model::UserSimple* mutable_user();
  void set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user);
  private:
  const ::heroim::client::v3beta::dto::user::model::UserSimple& _internal_user() const;
  ::heroim::client::v3beta::dto::user::model::UserSimple* _internal_mutable_user();
  public:
  void unsafe_arena_set_allocated_user(
      ::heroim::client::v3beta::dto::user::model::UserSimple* user);
  ::heroim::client::v3beta::dto::user::model::UserSimple* unsafe_arena_release_user();

  // .heroim.client.v3beta.dto.user.model.UserSimple distUser = 3;
  bool has_distuser() const;
  private:
  bool _internal_has_distuser() const;
  public:
  void clear_distuser();
  const ::heroim::client::v3beta::dto::user::model::UserSimple& distuser() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::user::model::UserSimple* release_distuser();
  ::heroim::client::v3beta::dto::user::model::UserSimple* mutable_distuser();
  void set_allocated_distuser(::heroim::client::v3beta::dto::user::model::UserSimple* distuser);
  private:
  const ::heroim::client::v3beta::dto::user::model::UserSimple& _internal_distuser() const;
  ::heroim::client::v3beta::dto::user::model::UserSimple* _internal_mutable_distuser();
  public:
  void unsafe_arena_set_allocated_distuser(
      ::heroim::client::v3beta::dto::user::model::UserSimple* distuser);
  ::heroim::client::v3beta::dto::user::model::UserSimple* unsafe_arena_release_distuser();

  // .heroim.client.v3beta.dto.group.model.GroupSimple group = 4;
  bool has_group() const;
  private:
  bool _internal_has_group() const;
  public:
  void clear_group();
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& group() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::group::model::GroupSimple* release_group();
  ::heroim::client::v3beta::dto::group::model::GroupSimple* mutable_group();
  void set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  private:
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& _internal_group() const;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _internal_mutable_group();
  public:
  void unsafe_arena_set_allocated_group(
      ::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  ::heroim::client::v3beta::dto::group::model::GroupSimple* unsafe_arena_release_group();

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::internal::ArenaStringPtr productid_;
  ::herogoogle::protobuf::internal::ArenaStringPtr acttoken_;
  ::heroim::client::v3beta::dto::user::model::UserSimple* user_;
  ::heroim::client::v3beta::dto::user::model::UserSimple* distuser_;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* group_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto;
};
// -------------------------------------------------------------------

class GroupQuitedEvent final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent) */ {
 public:
  inline GroupQuitedEvent() : GroupQuitedEvent(nullptr) {}
  ~GroupQuitedEvent() override;
  explicit constexpr GroupQuitedEvent(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline GroupQuitedEvent& operator=(const GroupQuitedEvent& from) {
    CopyFrom(from);
    return *this;
  }
  inline GroupQuitedEvent& operator=(GroupQuitedEvent&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GroupQuitedEvent& default_instance() {
    return *internal_default_instance();
  }
  static inline const GroupQuitedEvent* internal_default_instance() {
    return reinterpret_cast<const GroupQuitedEvent*>(
               &_GroupQuitedEvent_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(GroupQuitedEvent& a, GroupQuitedEvent& b) {
    a.Swap(&b);
  }
  inline void Swap(GroupQuitedEvent* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GroupQuitedEvent* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline GroupQuitedEvent* New() const final {
    return new GroupQuitedEvent();
  }

  GroupQuitedEvent* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<GroupQuitedEvent>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const GroupQuitedEvent& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const GroupQuitedEvent& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(GroupQuitedEvent* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent";
  }
  protected:
  explicit GroupQuitedEvent(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kProductIdFieldNumber = 1,
    kUserFieldNumber = 2,
    kGroupFieldNumber = 3,
  };
  // string productId = 1;
  void clear_productid();
  const std::string& productid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_productid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_productid();
  PROTOBUF_MUST_USE_RESULT std::string* release_productid();
  void set_allocated_productid(std::string* productid);
  private:
  const std::string& _internal_productid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_productid(const std::string& value);
  std::string* _internal_mutable_productid();
  public:

  // .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
  bool has_user() const;
  private:
  bool _internal_has_user() const;
  public:
  void clear_user();
  const ::heroim::client::v3beta::dto::user::model::UserSimple& user() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::user::model::UserSimple* release_user();
  ::heroim::client::v3beta::dto::user::model::UserSimple* mutable_user();
  void set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user);
  private:
  const ::heroim::client::v3beta::dto::user::model::UserSimple& _internal_user() const;
  ::heroim::client::v3beta::dto::user::model::UserSimple* _internal_mutable_user();
  public:
  void unsafe_arena_set_allocated_user(
      ::heroim::client::v3beta::dto::user::model::UserSimple* user);
  ::heroim::client::v3beta::dto::user::model::UserSimple* unsafe_arena_release_user();

  // .heroim.client.v3beta.dto.group.model.GroupSimple group = 3;
  bool has_group() const;
  private:
  bool _internal_has_group() const;
  public:
  void clear_group();
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& group() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::group::model::GroupSimple* release_group();
  ::heroim::client::v3beta::dto::group::model::GroupSimple* mutable_group();
  void set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  private:
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& _internal_group() const;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _internal_mutable_group();
  public:
  void unsafe_arena_set_allocated_group(
      ::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  ::heroim::client::v3beta::dto::group::model::GroupSimple* unsafe_arena_release_group();

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::internal::ArenaStringPtr productid_;
  ::heroim::client::v3beta::dto::user::model::UserSimple* user_;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* group_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto;
};
// -------------------------------------------------------------------

class GroupJoinedEvent final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent) */ {
 public:
  inline GroupJoinedEvent() : GroupJoinedEvent(nullptr) {}
  ~GroupJoinedEvent() override;
  explicit constexpr GroupJoinedEvent(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline GroupJoinedEvent& operator=(const GroupJoinedEvent& from) {
    CopyFrom(from);
    return *this;
  }
  inline GroupJoinedEvent& operator=(GroupJoinedEvent&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GroupJoinedEvent& default_instance() {
    return *internal_default_instance();
  }
  static inline const GroupJoinedEvent* internal_default_instance() {
    return reinterpret_cast<const GroupJoinedEvent*>(
               &_GroupJoinedEvent_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(GroupJoinedEvent& a, GroupJoinedEvent& b) {
    a.Swap(&b);
  }
  inline void Swap(GroupJoinedEvent* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GroupJoinedEvent* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline GroupJoinedEvent* New() const final {
    return new GroupJoinedEvent();
  }

  GroupJoinedEvent* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<GroupJoinedEvent>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const GroupJoinedEvent& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const GroupJoinedEvent& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(GroupJoinedEvent* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent";
  }
  protected:
  explicit GroupJoinedEvent(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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

  typedef GroupJoinedEvent_SourceType SourceType;
  static constexpr SourceType System =
    GroupJoinedEvent_SourceType_System;
  static constexpr SourceType Join =
    GroupJoinedEvent_SourceType_Join;
  static constexpr SourceType Apply =
    GroupJoinedEvent_SourceType_Apply;
  static constexpr SourceType Invite =
    GroupJoinedEvent_SourceType_Invite;
  static inline bool SourceType_IsValid(int value) {
    return GroupJoinedEvent_SourceType_IsValid(value);
  }
  static constexpr SourceType SourceType_MIN =
    GroupJoinedEvent_SourceType_SourceType_MIN;
  static constexpr SourceType SourceType_MAX =
    GroupJoinedEvent_SourceType_SourceType_MAX;
  static constexpr int SourceType_ARRAYSIZE =
    GroupJoinedEvent_SourceType_SourceType_ARRAYSIZE;
  static inline const ::herogoogle::protobuf::EnumDescriptor*
  SourceType_descriptor() {
    return GroupJoinedEvent_SourceType_descriptor();
  }
  template<typename T>
  static inline const std::string& SourceType_Name(T enum_t_value) {
    static_assert(::std::is_same<T, SourceType>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function SourceType_Name.");
    return GroupJoinedEvent_SourceType_Name(enum_t_value);
  }
  static inline bool SourceType_Parse(::herogoogle::protobuf::ConstStringParam name,
      SourceType* value) {
    return GroupJoinedEvent_SourceType_Parse(name, value);
  }

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

  enum : int {
    kProductIdFieldNumber = 1,
    kUserFieldNumber = 2,
    kGroupFieldNumber = 3,
    kSourceFieldNumber = 4,
  };
  // string productId = 1;
  void clear_productid();
  const std::string& productid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_productid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_productid();
  PROTOBUF_MUST_USE_RESULT std::string* release_productid();
  void set_allocated_productid(std::string* productid);
  private:
  const std::string& _internal_productid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_productid(const std::string& value);
  std::string* _internal_mutable_productid();
  public:

  // .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
  bool has_user() const;
  private:
  bool _internal_has_user() const;
  public:
  void clear_user();
  const ::heroim::client::v3beta::dto::user::model::UserSimple& user() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::user::model::UserSimple* release_user();
  ::heroim::client::v3beta::dto::user::model::UserSimple* mutable_user();
  void set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user);
  private:
  const ::heroim::client::v3beta::dto::user::model::UserSimple& _internal_user() const;
  ::heroim::client::v3beta::dto::user::model::UserSimple* _internal_mutable_user();
  public:
  void unsafe_arena_set_allocated_user(
      ::heroim::client::v3beta::dto::user::model::UserSimple* user);
  ::heroim::client::v3beta::dto::user::model::UserSimple* unsafe_arena_release_user();

  // .heroim.client.v3beta.dto.group.model.GroupSimple group = 3;
  bool has_group() const;
  private:
  bool _internal_has_group() const;
  public:
  void clear_group();
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& group() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::group::model::GroupSimple* release_group();
  ::heroim::client::v3beta::dto::group::model::GroupSimple* mutable_group();
  void set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  private:
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& _internal_group() const;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _internal_mutable_group();
  public:
  void unsafe_arena_set_allocated_group(
      ::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  ::heroim::client::v3beta::dto::group::model::GroupSimple* unsafe_arena_release_group();

  // .heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.SourceType source = 4;
  void clear_source();
  ::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType source() const;
  void set_source(::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType value);
  private:
  ::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType _internal_source() const;
  void _internal_set_source(::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType value);
  public:

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::internal::ArenaStringPtr productid_;
  ::heroim::client::v3beta::dto::user::model::UserSimple* user_;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* group_;
  int source_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto;
};
// -------------------------------------------------------------------

class GroupMemberRemovedEvent final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent) */ {
 public:
  inline GroupMemberRemovedEvent() : GroupMemberRemovedEvent(nullptr) {}
  ~GroupMemberRemovedEvent() override;
  explicit constexpr GroupMemberRemovedEvent(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline GroupMemberRemovedEvent& operator=(const GroupMemberRemovedEvent& from) {
    CopyFrom(from);
    return *this;
  }
  inline GroupMemberRemovedEvent& operator=(GroupMemberRemovedEvent&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GroupMemberRemovedEvent& default_instance() {
    return *internal_default_instance();
  }
  static inline const GroupMemberRemovedEvent* internal_default_instance() {
    return reinterpret_cast<const GroupMemberRemovedEvent*>(
               &_GroupMemberRemovedEvent_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(GroupMemberRemovedEvent& a, GroupMemberRemovedEvent& b) {
    a.Swap(&b);
  }
  inline void Swap(GroupMemberRemovedEvent* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GroupMemberRemovedEvent* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline GroupMemberRemovedEvent* New() const final {
    return new GroupMemberRemovedEvent();
  }

  GroupMemberRemovedEvent* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<GroupMemberRemovedEvent>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const GroupMemberRemovedEvent& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const GroupMemberRemovedEvent& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(GroupMemberRemovedEvent* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent";
  }
  protected:
  explicit GroupMemberRemovedEvent(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kProductIdFieldNumber = 1,
    kUserFieldNumber = 2,
    kDistUserFieldNumber = 3,
    kGroupFieldNumber = 4,
  };
  // string productId = 1;
  void clear_productid();
  const std::string& productid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_productid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_productid();
  PROTOBUF_MUST_USE_RESULT std::string* release_productid();
  void set_allocated_productid(std::string* productid);
  private:
  const std::string& _internal_productid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_productid(const std::string& value);
  std::string* _internal_mutable_productid();
  public:

  // .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
  bool has_user() const;
  private:
  bool _internal_has_user() const;
  public:
  void clear_user();
  const ::heroim::client::v3beta::dto::user::model::UserSimple& user() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::user::model::UserSimple* release_user();
  ::heroim::client::v3beta::dto::user::model::UserSimple* mutable_user();
  void set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user);
  private:
  const ::heroim::client::v3beta::dto::user::model::UserSimple& _internal_user() const;
  ::heroim::client::v3beta::dto::user::model::UserSimple* _internal_mutable_user();
  public:
  void unsafe_arena_set_allocated_user(
      ::heroim::client::v3beta::dto::user::model::UserSimple* user);
  ::heroim::client::v3beta::dto::user::model::UserSimple* unsafe_arena_release_user();

  // .heroim.client.v3beta.dto.user.model.UserSimple distUser = 3;
  bool has_distuser() const;
  private:
  bool _internal_has_distuser() const;
  public:
  void clear_distuser();
  const ::heroim::client::v3beta::dto::user::model::UserSimple& distuser() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::user::model::UserSimple* release_distuser();
  ::heroim::client::v3beta::dto::user::model::UserSimple* mutable_distuser();
  void set_allocated_distuser(::heroim::client::v3beta::dto::user::model::UserSimple* distuser);
  private:
  const ::heroim::client::v3beta::dto::user::model::UserSimple& _internal_distuser() const;
  ::heroim::client::v3beta::dto::user::model::UserSimple* _internal_mutable_distuser();
  public:
  void unsafe_arena_set_allocated_distuser(
      ::heroim::client::v3beta::dto::user::model::UserSimple* distuser);
  ::heroim::client::v3beta::dto::user::model::UserSimple* unsafe_arena_release_distuser();

  // .heroim.client.v3beta.dto.group.model.GroupSimple group = 4;
  bool has_group() const;
  private:
  bool _internal_has_group() const;
  public:
  void clear_group();
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& group() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::group::model::GroupSimple* release_group();
  ::heroim::client::v3beta::dto::group::model::GroupSimple* mutable_group();
  void set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  private:
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& _internal_group() const;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _internal_mutable_group();
  public:
  void unsafe_arena_set_allocated_group(
      ::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  ::heroim::client::v3beta::dto::group::model::GroupSimple* unsafe_arena_release_group();

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::internal::ArenaStringPtr productid_;
  ::heroim::client::v3beta::dto::user::model::UserSimple* user_;
  ::heroim::client::v3beta::dto::user::model::UserSimple* distuser_;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* group_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto;
};
// -------------------------------------------------------------------

class GroupDismissedEvent final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent) */ {
 public:
  inline GroupDismissedEvent() : GroupDismissedEvent(nullptr) {}
  ~GroupDismissedEvent() override;
  explicit constexpr GroupDismissedEvent(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline GroupDismissedEvent& operator=(const GroupDismissedEvent& from) {
    CopyFrom(from);
    return *this;
  }
  inline GroupDismissedEvent& operator=(GroupDismissedEvent&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GroupDismissedEvent& default_instance() {
    return *internal_default_instance();
  }
  static inline const GroupDismissedEvent* internal_default_instance() {
    return reinterpret_cast<const GroupDismissedEvent*>(
               &_GroupDismissedEvent_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(GroupDismissedEvent& a, GroupDismissedEvent& b) {
    a.Swap(&b);
  }
  inline void Swap(GroupDismissedEvent* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GroupDismissedEvent* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline GroupDismissedEvent* New() const final {
    return new GroupDismissedEvent();
  }

  GroupDismissedEvent* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<GroupDismissedEvent>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const GroupDismissedEvent& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const GroupDismissedEvent& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(GroupDismissedEvent* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent";
  }
  protected:
  explicit GroupDismissedEvent(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kProductIdFieldNumber = 1,
    kGroupFieldNumber = 2,
    kUserFieldNumber = 3,
  };
  // string productId = 1;
  void clear_productid();
  const std::string& productid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_productid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_productid();
  PROTOBUF_MUST_USE_RESULT std::string* release_productid();
  void set_allocated_productid(std::string* productid);
  private:
  const std::string& _internal_productid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_productid(const std::string& value);
  std::string* _internal_mutable_productid();
  public:

  // .heroim.client.v3beta.dto.group.model.GroupSimple group = 2;
  bool has_group() const;
  private:
  bool _internal_has_group() const;
  public:
  void clear_group();
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& group() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::group::model::GroupSimple* release_group();
  ::heroim::client::v3beta::dto::group::model::GroupSimple* mutable_group();
  void set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  private:
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& _internal_group() const;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _internal_mutable_group();
  public:
  void unsafe_arena_set_allocated_group(
      ::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  ::heroim::client::v3beta::dto::group::model::GroupSimple* unsafe_arena_release_group();

  // .heroim.client.v3beta.dto.user.model.UserSimple user = 3;
  bool has_user() const;
  private:
  bool _internal_has_user() const;
  public:
  void clear_user();
  const ::heroim::client::v3beta::dto::user::model::UserSimple& user() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::user::model::UserSimple* release_user();
  ::heroim::client::v3beta::dto::user::model::UserSimple* mutable_user();
  void set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user);
  private:
  const ::heroim::client::v3beta::dto::user::model::UserSimple& _internal_user() const;
  ::heroim::client::v3beta::dto::user::model::UserSimple* _internal_mutable_user();
  public:
  void unsafe_arena_set_allocated_user(
      ::heroim::client::v3beta::dto::user::model::UserSimple* user);
  ::heroim::client::v3beta::dto::user::model::UserSimple* unsafe_arena_release_user();

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::internal::ArenaStringPtr productid_;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* group_;
  ::heroim::client::v3beta::dto::user::model::UserSimple* user_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto;
};
// -------------------------------------------------------------------

class GroupProfileChangedEvent final :
    public ::herogoogle::protobuf::Message /* @@protoc_insertion_point(class_definition:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent) */ {
 public:
  inline GroupProfileChangedEvent() : GroupProfileChangedEvent(nullptr) {}
  ~GroupProfileChangedEvent() override;
  explicit constexpr GroupProfileChangedEvent(::herogoogle::protobuf::internal::ConstantInitialized);

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

  inline GroupProfileChangedEvent& operator=(const GroupProfileChangedEvent& from) {
    CopyFrom(from);
    return *this;
  }
  inline GroupProfileChangedEvent& operator=(GroupProfileChangedEvent&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::herogoogle::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::herogoogle::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::herogoogle::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GroupProfileChangedEvent& default_instance() {
    return *internal_default_instance();
  }
  static inline const GroupProfileChangedEvent* internal_default_instance() {
    return reinterpret_cast<const GroupProfileChangedEvent*>(
               &_GroupProfileChangedEvent_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  friend void swap(GroupProfileChangedEvent& a, GroupProfileChangedEvent& b) {
    a.Swap(&b);
  }
  inline void Swap(GroupProfileChangedEvent* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::herogoogle::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GroupProfileChangedEvent* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline GroupProfileChangedEvent* New() const final {
    return new GroupProfileChangedEvent();
  }

  GroupProfileChangedEvent* New(::herogoogle::protobuf::Arena* arena) const final {
    return CreateMaybeMessage<GroupProfileChangedEvent>(arena);
  }
  using ::herogoogle::protobuf::Message::CopyFrom;
  void CopyFrom(const GroupProfileChangedEvent& from);
  using ::herogoogle::protobuf::Message::MergeFrom;
  void MergeFrom(const GroupProfileChangedEvent& from);
  private:
  static void MergeImpl(::herogoogle::protobuf::Message* to, const ::herogoogle::protobuf::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(GroupProfileChangedEvent* other);
  friend class ::herogoogle::protobuf::internal::AnyMetadata;
  static ::herogoogle::protobuf::StringPiece FullMessageName() {
    return "heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent";
  }
  protected:
  explicit GroupProfileChangedEvent(::herogoogle::protobuf::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::herogoogle::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::herogoogle::protobuf::Message::ClassData*GetClassData() const final;

  ::herogoogle::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kProductIdFieldNumber = 1,
    kGroupFieldNumber = 2,
    kUserFieldNumber = 3,
  };
  // string productId = 1;
  void clear_productid();
  const std::string& productid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_productid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_productid();
  PROTOBUF_MUST_USE_RESULT std::string* release_productid();
  void set_allocated_productid(std::string* productid);
  private:
  const std::string& _internal_productid() const;
  inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE void _internal_set_productid(const std::string& value);
  std::string* _internal_mutable_productid();
  public:

  // .heroim.client.v3beta.dto.group.model.GroupSimple group = 2;
  bool has_group() const;
  private:
  bool _internal_has_group() const;
  public:
  void clear_group();
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& group() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::group::model::GroupSimple* release_group();
  ::heroim::client::v3beta::dto::group::model::GroupSimple* mutable_group();
  void set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  private:
  const ::heroim::client::v3beta::dto::group::model::GroupSimple& _internal_group() const;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _internal_mutable_group();
  public:
  void unsafe_arena_set_allocated_group(
      ::heroim::client::v3beta::dto::group::model::GroupSimple* group);
  ::heroim::client::v3beta::dto::group::model::GroupSimple* unsafe_arena_release_group();

  // .heroim.client.v3beta.dto.user.model.UserSimple user = 3;
  bool has_user() const;
  private:
  bool _internal_has_user() const;
  public:
  void clear_user();
  const ::heroim::client::v3beta::dto::user::model::UserSimple& user() const;
  PROTOBUF_MUST_USE_RESULT ::heroim::client::v3beta::dto::user::model::UserSimple* release_user();
  ::heroim::client::v3beta::dto::user::model::UserSimple* mutable_user();
  void set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user);
  private:
  const ::heroim::client::v3beta::dto::user::model::UserSimple& _internal_user() const;
  ::heroim::client::v3beta::dto::user::model::UserSimple* _internal_mutable_user();
  public:
  void unsafe_arena_set_allocated_user(
      ::heroim::client::v3beta::dto::user::model::UserSimple* user);
  ::heroim::client::v3beta::dto::user::model::UserSimple* unsafe_arena_release_user();

  // @@protoc_insertion_point(class_scope:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent)
 private:
  class _Internal;

  template <typename T> friend class ::herogoogle::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::herogoogle::protobuf::internal::ArenaStringPtr productid_;
  ::heroim::client::v3beta::dto::group::model::GroupSimple* group_;
  ::heroim::client::v3beta::dto::user::model::UserSimple* user_;
  mutable ::herogoogle::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto;
};
// ===================================================================


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

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

// string productId = 1;
inline void GroupCreatedEvent::clear_productid() {
  productid_.ClearToEmpty();
}
inline const std::string& GroupCreatedEvent::productid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.productId)
  return _internal_productid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void GroupCreatedEvent::set_productid(ArgT0&& arg0, ArgT... args) {
 
 productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.productId)
}
inline std::string* GroupCreatedEvent::mutable_productid() {
  std::string* _s = _internal_mutable_productid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.productId)
  return _s;
}
inline const std::string& GroupCreatedEvent::_internal_productid() const {
  return productid_.Get();
}
inline void GroupCreatedEvent::_internal_set_productid(const std::string& value) {
  
  productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GroupCreatedEvent::_internal_mutable_productid() {
  
  return productid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GroupCreatedEvent::release_productid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.productId)
  return productid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GroupCreatedEvent::set_allocated_productid(std::string* productid) {
  if (productid != nullptr) {
    
  } else {
    
  }
  productid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), productid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.productId)
}

// .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
inline bool GroupCreatedEvent::_internal_has_user() const {
  return this != internal_default_instance() && user_ != nullptr;
}
inline bool GroupCreatedEvent::has_user() const {
  return _internal_has_user();
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupCreatedEvent::_internal_user() const {
  const ::heroim::client::v3beta::dto::user::model::UserSimple* p = user_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::user::model::UserSimple&>(
      ::heroim::client::v3beta::dto::user::model::_UserSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupCreatedEvent::user() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.user)
  return _internal_user();
}
inline void GroupCreatedEvent::unsafe_arena_set_allocated_user(
    ::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user_);
  }
  user_ = user;
  if (user) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.user)
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupCreatedEvent::release_user() {
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupCreatedEvent::unsafe_arena_release_user() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.user)
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupCreatedEvent::_internal_mutable_user() {
  
  if (user_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::user::model::UserSimple>(GetArenaForAllocation());
    user_ = p;
  }
  return user_;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupCreatedEvent::mutable_user() {
  ::heroim::client::v3beta::dto::user::model::UserSimple* _msg = _internal_mutable_user();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.user)
  return _msg;
}
inline void GroupCreatedEvent::set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(user_);
  }
  if (user) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user));
    if (message_arena != submessage_arena) {
      user = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, user, submessage_arena);
    }
    
  } else {
    
  }
  user_ = user;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.user)
}

// .heroim.client.v3beta.dto.group.model.GroupSimple group = 3;
inline bool GroupCreatedEvent::_internal_has_group() const {
  return this != internal_default_instance() && group_ != nullptr;
}
inline bool GroupCreatedEvent::has_group() const {
  return _internal_has_group();
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupCreatedEvent::_internal_group() const {
  const ::heroim::client::v3beta::dto::group::model::GroupSimple* p = group_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::group::model::GroupSimple&>(
      ::heroim::client::v3beta::dto::group::model::_GroupSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupCreatedEvent::group() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.group)
  return _internal_group();
}
inline void GroupCreatedEvent::unsafe_arena_set_allocated_group(
    ::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group_);
  }
  group_ = group;
  if (group) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.group)
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupCreatedEvent::release_group() {
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupCreatedEvent::unsafe_arena_release_group() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.group)
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupCreatedEvent::_internal_mutable_group() {
  
  if (group_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::GroupSimple>(GetArenaForAllocation());
    group_ = p;
  }
  return group_;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupCreatedEvent::mutable_group() {
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _msg = _internal_mutable_group();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.group)
  return _msg;
}
inline void GroupCreatedEvent::set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(group_);
  }
  if (group) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group));
    if (message_arena != submessage_arena) {
      group = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, group, submessage_arena);
    }
    
  } else {
    
  }
  group_ = group;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupCreatedEvent.group)
}

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

// GroupJoinApplyEvent

// string productId = 1;
inline void GroupJoinApplyEvent::clear_productid() {
  productid_.ClearToEmpty();
}
inline const std::string& GroupJoinApplyEvent::productid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.productId)
  return _internal_productid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void GroupJoinApplyEvent::set_productid(ArgT0&& arg0, ArgT... args) {
 
 productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.productId)
}
inline std::string* GroupJoinApplyEvent::mutable_productid() {
  std::string* _s = _internal_mutable_productid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.productId)
  return _s;
}
inline const std::string& GroupJoinApplyEvent::_internal_productid() const {
  return productid_.Get();
}
inline void GroupJoinApplyEvent::_internal_set_productid(const std::string& value) {
  
  productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GroupJoinApplyEvent::_internal_mutable_productid() {
  
  return productid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GroupJoinApplyEvent::release_productid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.productId)
  return productid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GroupJoinApplyEvent::set_allocated_productid(std::string* productid) {
  if (productid != nullptr) {
    
  } else {
    
  }
  productid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), productid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.productId)
}

// .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
inline bool GroupJoinApplyEvent::_internal_has_user() const {
  return this != internal_default_instance() && user_ != nullptr;
}
inline bool GroupJoinApplyEvent::has_user() const {
  return _internal_has_user();
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupJoinApplyEvent::_internal_user() const {
  const ::heroim::client::v3beta::dto::user::model::UserSimple* p = user_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::user::model::UserSimple&>(
      ::heroim::client::v3beta::dto::user::model::_UserSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupJoinApplyEvent::user() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.user)
  return _internal_user();
}
inline void GroupJoinApplyEvent::unsafe_arena_set_allocated_user(
    ::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user_);
  }
  user_ = user;
  if (user) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.user)
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinApplyEvent::release_user() {
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinApplyEvent::unsafe_arena_release_user() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.user)
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinApplyEvent::_internal_mutable_user() {
  
  if (user_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::user::model::UserSimple>(GetArenaForAllocation());
    user_ = p;
  }
  return user_;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinApplyEvent::mutable_user() {
  ::heroim::client::v3beta::dto::user::model::UserSimple* _msg = _internal_mutable_user();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.user)
  return _msg;
}
inline void GroupJoinApplyEvent::set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(user_);
  }
  if (user) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user));
    if (message_arena != submessage_arena) {
      user = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, user, submessage_arena);
    }
    
  } else {
    
  }
  user_ = user;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.user)
}

// .heroim.client.v3beta.dto.group.model.GroupSimple group = 3;
inline bool GroupJoinApplyEvent::_internal_has_group() const {
  return this != internal_default_instance() && group_ != nullptr;
}
inline bool GroupJoinApplyEvent::has_group() const {
  return _internal_has_group();
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupJoinApplyEvent::_internal_group() const {
  const ::heroim::client::v3beta::dto::group::model::GroupSimple* p = group_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::group::model::GroupSimple&>(
      ::heroim::client::v3beta::dto::group::model::_GroupSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupJoinApplyEvent::group() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.group)
  return _internal_group();
}
inline void GroupJoinApplyEvent::unsafe_arena_set_allocated_group(
    ::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group_);
  }
  group_ = group;
  if (group) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.group)
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinApplyEvent::release_group() {
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinApplyEvent::unsafe_arena_release_group() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.group)
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinApplyEvent::_internal_mutable_group() {
  
  if (group_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::GroupSimple>(GetArenaForAllocation());
    group_ = p;
  }
  return group_;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinApplyEvent::mutable_group() {
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _msg = _internal_mutable_group();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.group)
  return _msg;
}
inline void GroupJoinApplyEvent::set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(group_);
  }
  if (group) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group));
    if (message_arena != submessage_arena) {
      group = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, group, submessage_arena);
    }
    
  } else {
    
  }
  group_ = group;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.group)
}

// string actToken = 4;
inline void GroupJoinApplyEvent::clear_acttoken() {
  acttoken_.ClearToEmpty();
}
inline const std::string& GroupJoinApplyEvent::acttoken() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.actToken)
  return _internal_acttoken();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void GroupJoinApplyEvent::set_acttoken(ArgT0&& arg0, ArgT... args) {
 
 acttoken_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.actToken)
}
inline std::string* GroupJoinApplyEvent::mutable_acttoken() {
  std::string* _s = _internal_mutable_acttoken();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.actToken)
  return _s;
}
inline const std::string& GroupJoinApplyEvent::_internal_acttoken() const {
  return acttoken_.Get();
}
inline void GroupJoinApplyEvent::_internal_set_acttoken(const std::string& value) {
  
  acttoken_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GroupJoinApplyEvent::_internal_mutable_acttoken() {
  
  return acttoken_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GroupJoinApplyEvent::release_acttoken() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.actToken)
  return acttoken_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GroupJoinApplyEvent::set_allocated_acttoken(std::string* acttoken) {
  if (acttoken != nullptr) {
    
  } else {
    
  }
  acttoken_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), acttoken,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinApplyEvent.actToken)
}

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

// GroupJoinInviteEvent

// string productId = 1;
inline void GroupJoinInviteEvent::clear_productid() {
  productid_.ClearToEmpty();
}
inline const std::string& GroupJoinInviteEvent::productid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.productId)
  return _internal_productid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void GroupJoinInviteEvent::set_productid(ArgT0&& arg0, ArgT... args) {
 
 productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.productId)
}
inline std::string* GroupJoinInviteEvent::mutable_productid() {
  std::string* _s = _internal_mutable_productid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.productId)
  return _s;
}
inline const std::string& GroupJoinInviteEvent::_internal_productid() const {
  return productid_.Get();
}
inline void GroupJoinInviteEvent::_internal_set_productid(const std::string& value) {
  
  productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GroupJoinInviteEvent::_internal_mutable_productid() {
  
  return productid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GroupJoinInviteEvent::release_productid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.productId)
  return productid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GroupJoinInviteEvent::set_allocated_productid(std::string* productid) {
  if (productid != nullptr) {
    
  } else {
    
  }
  productid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), productid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.productId)
}

// .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
inline bool GroupJoinInviteEvent::_internal_has_user() const {
  return this != internal_default_instance() && user_ != nullptr;
}
inline bool GroupJoinInviteEvent::has_user() const {
  return _internal_has_user();
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupJoinInviteEvent::_internal_user() const {
  const ::heroim::client::v3beta::dto::user::model::UserSimple* p = user_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::user::model::UserSimple&>(
      ::heroim::client::v3beta::dto::user::model::_UserSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupJoinInviteEvent::user() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.user)
  return _internal_user();
}
inline void GroupJoinInviteEvent::unsafe_arena_set_allocated_user(
    ::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user_);
  }
  user_ = user;
  if (user) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.user)
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinInviteEvent::release_user() {
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinInviteEvent::unsafe_arena_release_user() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.user)
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinInviteEvent::_internal_mutable_user() {
  
  if (user_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::user::model::UserSimple>(GetArenaForAllocation());
    user_ = p;
  }
  return user_;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinInviteEvent::mutable_user() {
  ::heroim::client::v3beta::dto::user::model::UserSimple* _msg = _internal_mutable_user();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.user)
  return _msg;
}
inline void GroupJoinInviteEvent::set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(user_);
  }
  if (user) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user));
    if (message_arena != submessage_arena) {
      user = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, user, submessage_arena);
    }
    
  } else {
    
  }
  user_ = user;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.user)
}

// .heroim.client.v3beta.dto.user.model.UserSimple distUser = 3;
inline bool GroupJoinInviteEvent::_internal_has_distuser() const {
  return this != internal_default_instance() && distuser_ != nullptr;
}
inline bool GroupJoinInviteEvent::has_distuser() const {
  return _internal_has_distuser();
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupJoinInviteEvent::_internal_distuser() const {
  const ::heroim::client::v3beta::dto::user::model::UserSimple* p = distuser_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::user::model::UserSimple&>(
      ::heroim::client::v3beta::dto::user::model::_UserSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupJoinInviteEvent::distuser() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.distUser)
  return _internal_distuser();
}
inline void GroupJoinInviteEvent::unsafe_arena_set_allocated_distuser(
    ::heroim::client::v3beta::dto::user::model::UserSimple* distuser) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(distuser_);
  }
  distuser_ = distuser;
  if (distuser) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.distUser)
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinInviteEvent::release_distuser() {
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = distuser_;
  distuser_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinInviteEvent::unsafe_arena_release_distuser() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.distUser)
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = distuser_;
  distuser_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinInviteEvent::_internal_mutable_distuser() {
  
  if (distuser_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::user::model::UserSimple>(GetArenaForAllocation());
    distuser_ = p;
  }
  return distuser_;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinInviteEvent::mutable_distuser() {
  ::heroim::client::v3beta::dto::user::model::UserSimple* _msg = _internal_mutable_distuser();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.distUser)
  return _msg;
}
inline void GroupJoinInviteEvent::set_allocated_distuser(::heroim::client::v3beta::dto::user::model::UserSimple* distuser) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(distuser_);
  }
  if (distuser) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(distuser));
    if (message_arena != submessage_arena) {
      distuser = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, distuser, submessage_arena);
    }
    
  } else {
    
  }
  distuser_ = distuser;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.distUser)
}

// .heroim.client.v3beta.dto.group.model.GroupSimple group = 4;
inline bool GroupJoinInviteEvent::_internal_has_group() const {
  return this != internal_default_instance() && group_ != nullptr;
}
inline bool GroupJoinInviteEvent::has_group() const {
  return _internal_has_group();
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupJoinInviteEvent::_internal_group() const {
  const ::heroim::client::v3beta::dto::group::model::GroupSimple* p = group_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::group::model::GroupSimple&>(
      ::heroim::client::v3beta::dto::group::model::_GroupSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupJoinInviteEvent::group() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.group)
  return _internal_group();
}
inline void GroupJoinInviteEvent::unsafe_arena_set_allocated_group(
    ::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group_);
  }
  group_ = group;
  if (group) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.group)
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinInviteEvent::release_group() {
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinInviteEvent::unsafe_arena_release_group() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.group)
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinInviteEvent::_internal_mutable_group() {
  
  if (group_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::GroupSimple>(GetArenaForAllocation());
    group_ = p;
  }
  return group_;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinInviteEvent::mutable_group() {
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _msg = _internal_mutable_group();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.group)
  return _msg;
}
inline void GroupJoinInviteEvent::set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(group_);
  }
  if (group) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group));
    if (message_arena != submessage_arena) {
      group = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, group, submessage_arena);
    }
    
  } else {
    
  }
  group_ = group;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.group)
}

// string actToken = 5;
inline void GroupJoinInviteEvent::clear_acttoken() {
  acttoken_.ClearToEmpty();
}
inline const std::string& GroupJoinInviteEvent::acttoken() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.actToken)
  return _internal_acttoken();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void GroupJoinInviteEvent::set_acttoken(ArgT0&& arg0, ArgT... args) {
 
 acttoken_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.actToken)
}
inline std::string* GroupJoinInviteEvent::mutable_acttoken() {
  std::string* _s = _internal_mutable_acttoken();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.actToken)
  return _s;
}
inline const std::string& GroupJoinInviteEvent::_internal_acttoken() const {
  return acttoken_.Get();
}
inline void GroupJoinInviteEvent::_internal_set_acttoken(const std::string& value) {
  
  acttoken_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GroupJoinInviteEvent::_internal_mutable_acttoken() {
  
  return acttoken_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GroupJoinInviteEvent::release_acttoken() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.actToken)
  return acttoken_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GroupJoinInviteEvent::set_allocated_acttoken(std::string* acttoken) {
  if (acttoken != nullptr) {
    
  } else {
    
  }
  acttoken_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), acttoken,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinInviteEvent.actToken)
}

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

// GroupQuitedEvent

// string productId = 1;
inline void GroupQuitedEvent::clear_productid() {
  productid_.ClearToEmpty();
}
inline const std::string& GroupQuitedEvent::productid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.productId)
  return _internal_productid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void GroupQuitedEvent::set_productid(ArgT0&& arg0, ArgT... args) {
 
 productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.productId)
}
inline std::string* GroupQuitedEvent::mutable_productid() {
  std::string* _s = _internal_mutable_productid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.productId)
  return _s;
}
inline const std::string& GroupQuitedEvent::_internal_productid() const {
  return productid_.Get();
}
inline void GroupQuitedEvent::_internal_set_productid(const std::string& value) {
  
  productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GroupQuitedEvent::_internal_mutable_productid() {
  
  return productid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GroupQuitedEvent::release_productid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.productId)
  return productid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GroupQuitedEvent::set_allocated_productid(std::string* productid) {
  if (productid != nullptr) {
    
  } else {
    
  }
  productid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), productid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.productId)
}

// .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
inline bool GroupQuitedEvent::_internal_has_user() const {
  return this != internal_default_instance() && user_ != nullptr;
}
inline bool GroupQuitedEvent::has_user() const {
  return _internal_has_user();
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupQuitedEvent::_internal_user() const {
  const ::heroim::client::v3beta::dto::user::model::UserSimple* p = user_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::user::model::UserSimple&>(
      ::heroim::client::v3beta::dto::user::model::_UserSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupQuitedEvent::user() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.user)
  return _internal_user();
}
inline void GroupQuitedEvent::unsafe_arena_set_allocated_user(
    ::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user_);
  }
  user_ = user;
  if (user) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.user)
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupQuitedEvent::release_user() {
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupQuitedEvent::unsafe_arena_release_user() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.user)
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupQuitedEvent::_internal_mutable_user() {
  
  if (user_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::user::model::UserSimple>(GetArenaForAllocation());
    user_ = p;
  }
  return user_;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupQuitedEvent::mutable_user() {
  ::heroim::client::v3beta::dto::user::model::UserSimple* _msg = _internal_mutable_user();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.user)
  return _msg;
}
inline void GroupQuitedEvent::set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(user_);
  }
  if (user) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user));
    if (message_arena != submessage_arena) {
      user = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, user, submessage_arena);
    }
    
  } else {
    
  }
  user_ = user;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.user)
}

// .heroim.client.v3beta.dto.group.model.GroupSimple group = 3;
inline bool GroupQuitedEvent::_internal_has_group() const {
  return this != internal_default_instance() && group_ != nullptr;
}
inline bool GroupQuitedEvent::has_group() const {
  return _internal_has_group();
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupQuitedEvent::_internal_group() const {
  const ::heroim::client::v3beta::dto::group::model::GroupSimple* p = group_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::group::model::GroupSimple&>(
      ::heroim::client::v3beta::dto::group::model::_GroupSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupQuitedEvent::group() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.group)
  return _internal_group();
}
inline void GroupQuitedEvent::unsafe_arena_set_allocated_group(
    ::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group_);
  }
  group_ = group;
  if (group) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.group)
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupQuitedEvent::release_group() {
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupQuitedEvent::unsafe_arena_release_group() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.group)
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupQuitedEvent::_internal_mutable_group() {
  
  if (group_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::GroupSimple>(GetArenaForAllocation());
    group_ = p;
  }
  return group_;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupQuitedEvent::mutable_group() {
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _msg = _internal_mutable_group();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.group)
  return _msg;
}
inline void GroupQuitedEvent::set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(group_);
  }
  if (group) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group));
    if (message_arena != submessage_arena) {
      group = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, group, submessage_arena);
    }
    
  } else {
    
  }
  group_ = group;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupQuitedEvent.group)
}

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

// GroupJoinedEvent

// string productId = 1;
inline void GroupJoinedEvent::clear_productid() {
  productid_.ClearToEmpty();
}
inline const std::string& GroupJoinedEvent::productid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.productId)
  return _internal_productid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void GroupJoinedEvent::set_productid(ArgT0&& arg0, ArgT... args) {
 
 productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.productId)
}
inline std::string* GroupJoinedEvent::mutable_productid() {
  std::string* _s = _internal_mutable_productid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.productId)
  return _s;
}
inline const std::string& GroupJoinedEvent::_internal_productid() const {
  return productid_.Get();
}
inline void GroupJoinedEvent::_internal_set_productid(const std::string& value) {
  
  productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GroupJoinedEvent::_internal_mutable_productid() {
  
  return productid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GroupJoinedEvent::release_productid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.productId)
  return productid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GroupJoinedEvent::set_allocated_productid(std::string* productid) {
  if (productid != nullptr) {
    
  } else {
    
  }
  productid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), productid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.productId)
}

// .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
inline bool GroupJoinedEvent::_internal_has_user() const {
  return this != internal_default_instance() && user_ != nullptr;
}
inline bool GroupJoinedEvent::has_user() const {
  return _internal_has_user();
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupJoinedEvent::_internal_user() const {
  const ::heroim::client::v3beta::dto::user::model::UserSimple* p = user_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::user::model::UserSimple&>(
      ::heroim::client::v3beta::dto::user::model::_UserSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupJoinedEvent::user() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.user)
  return _internal_user();
}
inline void GroupJoinedEvent::unsafe_arena_set_allocated_user(
    ::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user_);
  }
  user_ = user;
  if (user) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.user)
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinedEvent::release_user() {
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinedEvent::unsafe_arena_release_user() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.user)
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinedEvent::_internal_mutable_user() {
  
  if (user_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::user::model::UserSimple>(GetArenaForAllocation());
    user_ = p;
  }
  return user_;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupJoinedEvent::mutable_user() {
  ::heroim::client::v3beta::dto::user::model::UserSimple* _msg = _internal_mutable_user();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.user)
  return _msg;
}
inline void GroupJoinedEvent::set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(user_);
  }
  if (user) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user));
    if (message_arena != submessage_arena) {
      user = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, user, submessage_arena);
    }
    
  } else {
    
  }
  user_ = user;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.user)
}

// .heroim.client.v3beta.dto.group.model.GroupSimple group = 3;
inline bool GroupJoinedEvent::_internal_has_group() const {
  return this != internal_default_instance() && group_ != nullptr;
}
inline bool GroupJoinedEvent::has_group() const {
  return _internal_has_group();
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupJoinedEvent::_internal_group() const {
  const ::heroim::client::v3beta::dto::group::model::GroupSimple* p = group_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::group::model::GroupSimple&>(
      ::heroim::client::v3beta::dto::group::model::_GroupSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupJoinedEvent::group() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.group)
  return _internal_group();
}
inline void GroupJoinedEvent::unsafe_arena_set_allocated_group(
    ::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group_);
  }
  group_ = group;
  if (group) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.group)
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinedEvent::release_group() {
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinedEvent::unsafe_arena_release_group() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.group)
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinedEvent::_internal_mutable_group() {
  
  if (group_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::GroupSimple>(GetArenaForAllocation());
    group_ = p;
  }
  return group_;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupJoinedEvent::mutable_group() {
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _msg = _internal_mutable_group();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.group)
  return _msg;
}
inline void GroupJoinedEvent::set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(group_);
  }
  if (group) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group));
    if (message_arena != submessage_arena) {
      group = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, group, submessage_arena);
    }
    
  } else {
    
  }
  group_ = group;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.group)
}

// .heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.SourceType source = 4;
inline void GroupJoinedEvent::clear_source() {
  source_ = 0;
}
inline ::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType GroupJoinedEvent::_internal_source() const {
  return static_cast< ::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType >(source_);
}
inline ::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType GroupJoinedEvent::source() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.source)
  return _internal_source();
}
inline void GroupJoinedEvent::_internal_set_source(::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType value) {
  
  source_ = value;
}
inline void GroupJoinedEvent::set_source(::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType value) {
  _internal_set_source(value);
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.group.model.event.GroupJoinedEvent.source)
}

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

// GroupMemberRemovedEvent

// string productId = 1;
inline void GroupMemberRemovedEvent::clear_productid() {
  productid_.ClearToEmpty();
}
inline const std::string& GroupMemberRemovedEvent::productid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.productId)
  return _internal_productid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void GroupMemberRemovedEvent::set_productid(ArgT0&& arg0, ArgT... args) {
 
 productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.productId)
}
inline std::string* GroupMemberRemovedEvent::mutable_productid() {
  std::string* _s = _internal_mutable_productid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.productId)
  return _s;
}
inline const std::string& GroupMemberRemovedEvent::_internal_productid() const {
  return productid_.Get();
}
inline void GroupMemberRemovedEvent::_internal_set_productid(const std::string& value) {
  
  productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GroupMemberRemovedEvent::_internal_mutable_productid() {
  
  return productid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GroupMemberRemovedEvent::release_productid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.productId)
  return productid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GroupMemberRemovedEvent::set_allocated_productid(std::string* productid) {
  if (productid != nullptr) {
    
  } else {
    
  }
  productid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), productid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.productId)
}

// .heroim.client.v3beta.dto.user.model.UserSimple user = 2;
inline bool GroupMemberRemovedEvent::_internal_has_user() const {
  return this != internal_default_instance() && user_ != nullptr;
}
inline bool GroupMemberRemovedEvent::has_user() const {
  return _internal_has_user();
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupMemberRemovedEvent::_internal_user() const {
  const ::heroim::client::v3beta::dto::user::model::UserSimple* p = user_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::user::model::UserSimple&>(
      ::heroim::client::v3beta::dto::user::model::_UserSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupMemberRemovedEvent::user() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.user)
  return _internal_user();
}
inline void GroupMemberRemovedEvent::unsafe_arena_set_allocated_user(
    ::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user_);
  }
  user_ = user;
  if (user) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.user)
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupMemberRemovedEvent::release_user() {
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupMemberRemovedEvent::unsafe_arena_release_user() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.user)
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupMemberRemovedEvent::_internal_mutable_user() {
  
  if (user_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::user::model::UserSimple>(GetArenaForAllocation());
    user_ = p;
  }
  return user_;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupMemberRemovedEvent::mutable_user() {
  ::heroim::client::v3beta::dto::user::model::UserSimple* _msg = _internal_mutable_user();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.user)
  return _msg;
}
inline void GroupMemberRemovedEvent::set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(user_);
  }
  if (user) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user));
    if (message_arena != submessage_arena) {
      user = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, user, submessage_arena);
    }
    
  } else {
    
  }
  user_ = user;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.user)
}

// .heroim.client.v3beta.dto.user.model.UserSimple distUser = 3;
inline bool GroupMemberRemovedEvent::_internal_has_distuser() const {
  return this != internal_default_instance() && distuser_ != nullptr;
}
inline bool GroupMemberRemovedEvent::has_distuser() const {
  return _internal_has_distuser();
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupMemberRemovedEvent::_internal_distuser() const {
  const ::heroim::client::v3beta::dto::user::model::UserSimple* p = distuser_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::user::model::UserSimple&>(
      ::heroim::client::v3beta::dto::user::model::_UserSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupMemberRemovedEvent::distuser() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.distUser)
  return _internal_distuser();
}
inline void GroupMemberRemovedEvent::unsafe_arena_set_allocated_distuser(
    ::heroim::client::v3beta::dto::user::model::UserSimple* distuser) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(distuser_);
  }
  distuser_ = distuser;
  if (distuser) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.distUser)
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupMemberRemovedEvent::release_distuser() {
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = distuser_;
  distuser_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupMemberRemovedEvent::unsafe_arena_release_distuser() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.distUser)
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = distuser_;
  distuser_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupMemberRemovedEvent::_internal_mutable_distuser() {
  
  if (distuser_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::user::model::UserSimple>(GetArenaForAllocation());
    distuser_ = p;
  }
  return distuser_;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupMemberRemovedEvent::mutable_distuser() {
  ::heroim::client::v3beta::dto::user::model::UserSimple* _msg = _internal_mutable_distuser();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.distUser)
  return _msg;
}
inline void GroupMemberRemovedEvent::set_allocated_distuser(::heroim::client::v3beta::dto::user::model::UserSimple* distuser) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(distuser_);
  }
  if (distuser) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(distuser));
    if (message_arena != submessage_arena) {
      distuser = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, distuser, submessage_arena);
    }
    
  } else {
    
  }
  distuser_ = distuser;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.distUser)
}

// .heroim.client.v3beta.dto.group.model.GroupSimple group = 4;
inline bool GroupMemberRemovedEvent::_internal_has_group() const {
  return this != internal_default_instance() && group_ != nullptr;
}
inline bool GroupMemberRemovedEvent::has_group() const {
  return _internal_has_group();
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupMemberRemovedEvent::_internal_group() const {
  const ::heroim::client::v3beta::dto::group::model::GroupSimple* p = group_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::group::model::GroupSimple&>(
      ::heroim::client::v3beta::dto::group::model::_GroupSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupMemberRemovedEvent::group() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.group)
  return _internal_group();
}
inline void GroupMemberRemovedEvent::unsafe_arena_set_allocated_group(
    ::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group_);
  }
  group_ = group;
  if (group) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.group)
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupMemberRemovedEvent::release_group() {
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupMemberRemovedEvent::unsafe_arena_release_group() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.group)
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupMemberRemovedEvent::_internal_mutable_group() {
  
  if (group_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::GroupSimple>(GetArenaForAllocation());
    group_ = p;
  }
  return group_;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupMemberRemovedEvent::mutable_group() {
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _msg = _internal_mutable_group();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.group)
  return _msg;
}
inline void GroupMemberRemovedEvent::set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(group_);
  }
  if (group) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group));
    if (message_arena != submessage_arena) {
      group = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, group, submessage_arena);
    }
    
  } else {
    
  }
  group_ = group;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupMemberRemovedEvent.group)
}

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

// GroupDismissedEvent

// string productId = 1;
inline void GroupDismissedEvent::clear_productid() {
  productid_.ClearToEmpty();
}
inline const std::string& GroupDismissedEvent::productid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.productId)
  return _internal_productid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void GroupDismissedEvent::set_productid(ArgT0&& arg0, ArgT... args) {
 
 productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.productId)
}
inline std::string* GroupDismissedEvent::mutable_productid() {
  std::string* _s = _internal_mutable_productid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.productId)
  return _s;
}
inline const std::string& GroupDismissedEvent::_internal_productid() const {
  return productid_.Get();
}
inline void GroupDismissedEvent::_internal_set_productid(const std::string& value) {
  
  productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GroupDismissedEvent::_internal_mutable_productid() {
  
  return productid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GroupDismissedEvent::release_productid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.productId)
  return productid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GroupDismissedEvent::set_allocated_productid(std::string* productid) {
  if (productid != nullptr) {
    
  } else {
    
  }
  productid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), productid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.productId)
}

// .heroim.client.v3beta.dto.group.model.GroupSimple group = 2;
inline bool GroupDismissedEvent::_internal_has_group() const {
  return this != internal_default_instance() && group_ != nullptr;
}
inline bool GroupDismissedEvent::has_group() const {
  return _internal_has_group();
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupDismissedEvent::_internal_group() const {
  const ::heroim::client::v3beta::dto::group::model::GroupSimple* p = group_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::group::model::GroupSimple&>(
      ::heroim::client::v3beta::dto::group::model::_GroupSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupDismissedEvent::group() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.group)
  return _internal_group();
}
inline void GroupDismissedEvent::unsafe_arena_set_allocated_group(
    ::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group_);
  }
  group_ = group;
  if (group) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.group)
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupDismissedEvent::release_group() {
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupDismissedEvent::unsafe_arena_release_group() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.group)
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupDismissedEvent::_internal_mutable_group() {
  
  if (group_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::GroupSimple>(GetArenaForAllocation());
    group_ = p;
  }
  return group_;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupDismissedEvent::mutable_group() {
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _msg = _internal_mutable_group();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.group)
  return _msg;
}
inline void GroupDismissedEvent::set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(group_);
  }
  if (group) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group));
    if (message_arena != submessage_arena) {
      group = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, group, submessage_arena);
    }
    
  } else {
    
  }
  group_ = group;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.group)
}

// .heroim.client.v3beta.dto.user.model.UserSimple user = 3;
inline bool GroupDismissedEvent::_internal_has_user() const {
  return this != internal_default_instance() && user_ != nullptr;
}
inline bool GroupDismissedEvent::has_user() const {
  return _internal_has_user();
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupDismissedEvent::_internal_user() const {
  const ::heroim::client::v3beta::dto::user::model::UserSimple* p = user_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::user::model::UserSimple&>(
      ::heroim::client::v3beta::dto::user::model::_UserSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupDismissedEvent::user() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.user)
  return _internal_user();
}
inline void GroupDismissedEvent::unsafe_arena_set_allocated_user(
    ::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user_);
  }
  user_ = user;
  if (user) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.user)
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupDismissedEvent::release_user() {
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupDismissedEvent::unsafe_arena_release_user() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.user)
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupDismissedEvent::_internal_mutable_user() {
  
  if (user_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::user::model::UserSimple>(GetArenaForAllocation());
    user_ = p;
  }
  return user_;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupDismissedEvent::mutable_user() {
  ::heroim::client::v3beta::dto::user::model::UserSimple* _msg = _internal_mutable_user();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.user)
  return _msg;
}
inline void GroupDismissedEvent::set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(user_);
  }
  if (user) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user));
    if (message_arena != submessage_arena) {
      user = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, user, submessage_arena);
    }
    
  } else {
    
  }
  user_ = user;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupDismissedEvent.user)
}

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

// GroupProfileChangedEvent

// string productId = 1;
inline void GroupProfileChangedEvent::clear_productid() {
  productid_.ClearToEmpty();
}
inline const std::string& GroupProfileChangedEvent::productid() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.productId)
  return _internal_productid();
}
template <typename ArgT0, typename... ArgT>
inline GOOGLE_PROTOBUF_ATTRIBUTE_ALWAYS_INLINE
void GroupProfileChangedEvent::set_productid(ArgT0&& arg0, ArgT... args) {
 
 productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.productId)
}
inline std::string* GroupProfileChangedEvent::mutable_productid() {
  std::string* _s = _internal_mutable_productid();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.productId)
  return _s;
}
inline const std::string& GroupProfileChangedEvent::_internal_productid() const {
  return productid_.Get();
}
inline void GroupProfileChangedEvent::_internal_set_productid(const std::string& value) {
  
  productid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GroupProfileChangedEvent::_internal_mutable_productid() {
  
  return productid_.Mutable(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GroupProfileChangedEvent::release_productid() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.productId)
  return productid_.Release(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GroupProfileChangedEvent::set_allocated_productid(std::string* productid) {
  if (productid != nullptr) {
    
  } else {
    
  }
  productid_.SetAllocated(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(), productid,
      GetArenaForAllocation());
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.productId)
}

// .heroim.client.v3beta.dto.group.model.GroupSimple group = 2;
inline bool GroupProfileChangedEvent::_internal_has_group() const {
  return this != internal_default_instance() && group_ != nullptr;
}
inline bool GroupProfileChangedEvent::has_group() const {
  return _internal_has_group();
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupProfileChangedEvent::_internal_group() const {
  const ::heroim::client::v3beta::dto::group::model::GroupSimple* p = group_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::group::model::GroupSimple&>(
      ::heroim::client::v3beta::dto::group::model::_GroupSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::group::model::GroupSimple& GroupProfileChangedEvent::group() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.group)
  return _internal_group();
}
inline void GroupProfileChangedEvent::unsafe_arena_set_allocated_group(
    ::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group_);
  }
  group_ = group;
  if (group) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.group)
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupProfileChangedEvent::release_group() {
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupProfileChangedEvent::unsafe_arena_release_group() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.group)
  
  ::heroim::client::v3beta::dto::group::model::GroupSimple* temp = group_;
  group_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupProfileChangedEvent::_internal_mutable_group() {
  
  if (group_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::group::model::GroupSimple>(GetArenaForAllocation());
    group_ = p;
  }
  return group_;
}
inline ::heroim::client::v3beta::dto::group::model::GroupSimple* GroupProfileChangedEvent::mutable_group() {
  ::heroim::client::v3beta::dto::group::model::GroupSimple* _msg = _internal_mutable_group();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.group)
  return _msg;
}
inline void GroupProfileChangedEvent::set_allocated_group(::heroim::client::v3beta::dto::group::model::GroupSimple* group) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(group_);
  }
  if (group) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(group));
    if (message_arena != submessage_arena) {
      group = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, group, submessage_arena);
    }
    
  } else {
    
  }
  group_ = group;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.group)
}

// .heroim.client.v3beta.dto.user.model.UserSimple user = 3;
inline bool GroupProfileChangedEvent::_internal_has_user() const {
  return this != internal_default_instance() && user_ != nullptr;
}
inline bool GroupProfileChangedEvent::has_user() const {
  return _internal_has_user();
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupProfileChangedEvent::_internal_user() const {
  const ::heroim::client::v3beta::dto::user::model::UserSimple* p = user_;
  return p != nullptr ? *p : reinterpret_cast<const ::heroim::client::v3beta::dto::user::model::UserSimple&>(
      ::heroim::client::v3beta::dto::user::model::_UserSimple_default_instance_);
}
inline const ::heroim::client::v3beta::dto::user::model::UserSimple& GroupProfileChangedEvent::user() const {
  // @@protoc_insertion_point(field_get:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.user)
  return _internal_user();
}
inline void GroupProfileChangedEvent::unsafe_arena_set_allocated_user(
    ::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user_);
  }
  user_ = user;
  if (user) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.user)
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupProfileChangedEvent::release_user() {
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::herogoogle::protobuf::MessageLite*>(temp);
  temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::herogoogle::protobuf::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupProfileChangedEvent::unsafe_arena_release_user() {
  // @@protoc_insertion_point(field_release:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.user)
  
  ::heroim::client::v3beta::dto::user::model::UserSimple* temp = user_;
  user_ = nullptr;
  return temp;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupProfileChangedEvent::_internal_mutable_user() {
  
  if (user_ == nullptr) {
    auto* p = CreateMaybeMessage<::heroim::client::v3beta::dto::user::model::UserSimple>(GetArenaForAllocation());
    user_ = p;
  }
  return user_;
}
inline ::heroim::client::v3beta::dto::user::model::UserSimple* GroupProfileChangedEvent::mutable_user() {
  ::heroim::client::v3beta::dto::user::model::UserSimple* _msg = _internal_mutable_user();
  // @@protoc_insertion_point(field_mutable:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.user)
  return _msg;
}
inline void GroupProfileChangedEvent::set_allocated_user(::heroim::client::v3beta::dto::user::model::UserSimple* user) {
  ::herogoogle::protobuf::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::herogoogle::protobuf::MessageLite*>(user_);
  }
  if (user) {
    ::herogoogle::protobuf::Arena* submessage_arena =
        ::herogoogle::protobuf::Arena::InternalHelper<
            ::herogoogle::protobuf::MessageLite>::GetOwningArena(
                reinterpret_cast<::herogoogle::protobuf::MessageLite*>(user));
    if (message_arena != submessage_arena) {
      user = ::herogoogle::protobuf::internal::GetOwnedMessage(
          message_arena, user, submessage_arena);
    }
    
  } else {
    
  }
  user_ = user;
  // @@protoc_insertion_point(field_set_allocated:heroim.client.v3beta.dto.group.model.event.GroupProfileChangedEvent.user)
}

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

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

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace event
}  // namespace model
}  // namespace group
}  // namespace dto
}  // namespace v3beta
}  // namespace client
}  // namespace heroim

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType>() {
  return ::heroim::client::v3beta::dto::group::model::event::GroupJoinedEvent_SourceType_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)


#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_client_2fv3beta_2fdto_2fgroup_2fevent_2fgroup_5fevent_2eproto
