// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: components/sync/protocol/entity_metadata.proto
// Protobuf C++ Version: 7.35.1

#ifndef components_2fsync_2fprotocol_2fentity_5fmetadata_2eproto_2epb_2eh
#define components_2fsync_2fprotocol_2fentity_5fmetadata_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>
#include <utility>

// clang-format off
#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 7035001
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "components/sync/protocol/deletion_origin.pb.h"
#include "components/sync/protocol/entity_specifics.pb.h"
#include "components/sync/protocol/unique_position.pb.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_components_2fsync_2fprotocol_2fentity_5fmetadata_2eproto

namespace google {
namespace protobuf {
namespace internal {
template <typename T>
::absl::string_view GetAnyMessageName();
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct TableStruct_components_2fsync_2fprotocol_2fentity_5fmetadata_2eproto {
  static const ::uint32_t offsets[];
};
namespace sync_pb {
class EntityMetadata;
struct EntityMetadataGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EntityMetadataGlobalsTypeInternal EntityMetadata_globals_;
extern const ::google::protobuf::internal::ClassDataLite EntityMetadata_class_data_;
#else
extern const EntityMetadataGlobalsTypeInternal EntityMetadata_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EntityMetadata_CollaborationMetadata;
struct EntityMetadata_CollaborationMetadataGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EntityMetadata_CollaborationMetadataGlobalsTypeInternal EntityMetadata_CollaborationMetadata_globals_;
extern const ::google::protobuf::internal::ClassDataLite EntityMetadata_CollaborationMetadata_class_data_;
#else
extern const EntityMetadata_CollaborationMetadataGlobalsTypeInternal EntityMetadata_CollaborationMetadata_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EntityMetadata_CollaborationMetadata_Attribution;
struct EntityMetadata_CollaborationMetadata_AttributionGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EntityMetadata_CollaborationMetadata_AttributionGlobalsTypeInternal EntityMetadata_CollaborationMetadata_Attribution_globals_;
extern const ::google::protobuf::internal::ClassDataLite EntityMetadata_CollaborationMetadata_Attribution_class_data_;
#else
extern const EntityMetadata_CollaborationMetadata_AttributionGlobalsTypeInternal EntityMetadata_CollaborationMetadata_Attribution_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
}  // namespace sync_pb
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace sync_pb {

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


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

class  EntityMetadata_CollaborationMetadata_Attribution final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:sync_pb.EntityMetadata.CollaborationMetadata.Attribution) */ {
 public:
  inline EntityMetadata_CollaborationMetadata_Attribution() : EntityMetadata_CollaborationMetadata_Attribution(nullptr) {}
  ~EntityMetadata_CollaborationMetadata_Attribution() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EntityMetadata_CollaborationMetadata_Attribution));
  }
#endif

  template <typename = void>
  explicit constexpr EntityMetadata_CollaborationMetadata_Attribution(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EntityMetadata_CollaborationMetadata_Attribution(const EntityMetadata_CollaborationMetadata_Attribution& from) : EntityMetadata_CollaborationMetadata_Attribution(nullptr, from) {}
  inline EntityMetadata_CollaborationMetadata_Attribution(EntityMetadata_CollaborationMetadata_Attribution&& from) noexcept : EntityMetadata_CollaborationMetadata_Attribution(nullptr, ::std::move(from)) {}
  inline EntityMetadata_CollaborationMetadata_Attribution& operator=(const EntityMetadata_CollaborationMetadata_Attribution& from) {
    CopyFrom(from);
    return *this;
  }
  inline EntityMetadata_CollaborationMetadata_Attribution& operator=(EntityMetadata_CollaborationMetadata_Attribution&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const EntityMetadata_CollaborationMetadata_Attribution& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EntityMetadata_CollaborationMetadata_Attribution>(&EntityMetadata_CollaborationMetadata_Attribution_globals_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(EntityMetadata_CollaborationMetadata_Attribution& a, EntityMetadata_CollaborationMetadata_Attribution& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<EntityMetadata_CollaborationMetadata_Attribution>(arena);
  }
  void CopyFrom(const EntityMetadata_CollaborationMetadata_Attribution& from);
  void MergeFrom(const EntityMetadata_CollaborationMetadata_Attribution& from) { EntityMetadata_CollaborationMetadata_Attribution::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "sync_pb.EntityMetadata.CollaborationMetadata.Attribution"; }

  explicit EntityMetadata_CollaborationMetadata_Attribution(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EntityMetadata_CollaborationMetadata_Attribution(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EntityMetadata_CollaborationMetadata_Attribution& from);
  EntityMetadata_CollaborationMetadata_Attribution(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EntityMetadata_CollaborationMetadata_Attribution&& from) noexcept
      : EntityMetadata_CollaborationMetadata_Attribution(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

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

  // accessors -------------------------------------------------------
  enum : int {
    kObfuscatedGaiaIdFieldNumber = 1,
  };
  // optional string obfuscated_gaia_id = 1;
  bool has_obfuscated_gaia_id()
      const;
  void clear_obfuscated_gaia_id() ;
  const ::std::string& obfuscated_gaia_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_obfuscated_gaia_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_obfuscated_gaia_id();
  ::std::string* PROTOBUF_NULLABLE release_obfuscated_gaia_id();
  void set_allocated_obfuscated_gaia_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_obfuscated_gaia_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_obfuscated_gaia_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_obfuscated_gaia_id();

  public:
  // @@protoc_insertion_point(class_scope:sync_pb.EntityMetadata.CollaborationMetadata.Attribution)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EntityMetadata_CollaborationMetadata_Attribution& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr obfuscated_gaia_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fsync_2fprotocol_2fentity_5fmetadata_2eproto;
};
// -------------------------------------------------------------------

class  EntityMetadata_CollaborationMetadata final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:sync_pb.EntityMetadata.CollaborationMetadata) */ {
 public:
  inline EntityMetadata_CollaborationMetadata() : EntityMetadata_CollaborationMetadata(nullptr) {}
  ~EntityMetadata_CollaborationMetadata() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EntityMetadata_CollaborationMetadata* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EntityMetadata_CollaborationMetadata));
  }
#endif

  template <typename = void>
  explicit constexpr EntityMetadata_CollaborationMetadata(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EntityMetadata_CollaborationMetadata(const EntityMetadata_CollaborationMetadata& from) : EntityMetadata_CollaborationMetadata(nullptr, from) {}
  inline EntityMetadata_CollaborationMetadata(EntityMetadata_CollaborationMetadata&& from) noexcept : EntityMetadata_CollaborationMetadata(nullptr, ::std::move(from)) {}
  inline EntityMetadata_CollaborationMetadata& operator=(const EntityMetadata_CollaborationMetadata& from) {
    CopyFrom(from);
    return *this;
  }
  inline EntityMetadata_CollaborationMetadata& operator=(EntityMetadata_CollaborationMetadata&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const EntityMetadata_CollaborationMetadata& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EntityMetadata_CollaborationMetadata>(&EntityMetadata_CollaborationMetadata_globals_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(EntityMetadata_CollaborationMetadata& a, EntityMetadata_CollaborationMetadata& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(EntityMetadata_CollaborationMetadata* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EntityMetadata_CollaborationMetadata* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  EntityMetadata_CollaborationMetadata* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<EntityMetadata_CollaborationMetadata>(arena);
  }
  void CopyFrom(const EntityMetadata_CollaborationMetadata& from);
  void MergeFrom(const EntityMetadata_CollaborationMetadata& from) { EntityMetadata_CollaborationMetadata::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EntityMetadata_CollaborationMetadata* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "sync_pb.EntityMetadata.CollaborationMetadata"; }

  explicit EntityMetadata_CollaborationMetadata(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EntityMetadata_CollaborationMetadata(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EntityMetadata_CollaborationMetadata& from);
  EntityMetadata_CollaborationMetadata(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EntityMetadata_CollaborationMetadata&& from) noexcept
      : EntityMetadata_CollaborationMetadata(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------
  using Attribution = EntityMetadata_CollaborationMetadata_Attribution;

  // accessors -------------------------------------------------------
  enum : int {
    kCollaborationIdFieldNumber = 1,
    kCreationAttributionFieldNumber = 2,
    kLastUpdateAttributionFieldNumber = 3,
  };
  // optional string collaboration_id = 1;
  bool has_collaboration_id()
      const;
  void clear_collaboration_id() ;
  const ::std::string& collaboration_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_collaboration_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_collaboration_id();
  ::std::string* PROTOBUF_NULLABLE release_collaboration_id();
  void set_allocated_collaboration_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_collaboration_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_collaboration_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_collaboration_id();

  public:
  // optional .sync_pb.EntityMetadata.CollaborationMetadata.Attribution creation_attribution = 2;
  bool has_creation_attribution()
      const;
  void clear_creation_attribution() ;
  const ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution& creation_attribution() const;
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE release_creation_attribution();
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL mutable_creation_attribution();
  void set_allocated_creation_attribution(::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_creation_attribution(::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE value);
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE unsafe_arena_release_creation_attribution();

  private:
  const ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution& _internal_creation_attribution() const;
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL _internal_mutable_creation_attribution();

  public:
  // optional .sync_pb.EntityMetadata.CollaborationMetadata.Attribution last_update_attribution = 3;
  bool has_last_update_attribution()
      const;
  void clear_last_update_attribution() ;
  const ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution& last_update_attribution() const;
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE release_last_update_attribution();
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL mutable_last_update_attribution();
  void set_allocated_last_update_attribution(::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_last_update_attribution(::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE value);
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE unsafe_arena_release_last_update_attribution();

  private:
  const ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution& _internal_last_update_attribution() const;
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL _internal_mutable_last_update_attribution();

  public:
  // @@protoc_insertion_point(class_scope:sync_pb.EntityMetadata.CollaborationMetadata)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EntityMetadata_CollaborationMetadata& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr collaboration_id_;
    ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE creation_attribution_;
    ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE last_update_attribution_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fsync_2fprotocol_2fentity_5fmetadata_2eproto;
};
// -------------------------------------------------------------------

class  EntityMetadata final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:sync_pb.EntityMetadata) */ {
 public:
  inline EntityMetadata() : EntityMetadata(nullptr) {}
  ~EntityMetadata() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EntityMetadata* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EntityMetadata));
  }
#endif

  template <typename = void>
  explicit constexpr EntityMetadata(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EntityMetadata(const EntityMetadata& from) : EntityMetadata(nullptr, from) {}
  inline EntityMetadata(EntityMetadata&& from) noexcept : EntityMetadata(nullptr, ::std::move(from)) {}
  inline EntityMetadata& operator=(const EntityMetadata& from) {
    CopyFrom(from);
    return *this;
  }
  inline EntityMetadata& operator=(EntityMetadata&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const EntityMetadata& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EntityMetadata>(&EntityMetadata_globals_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(EntityMetadata& a, EntityMetadata& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(EntityMetadata* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EntityMetadata* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  EntityMetadata* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<EntityMetadata>(arena);
  }
  void CopyFrom(const EntityMetadata& from);
  void MergeFrom(const EntityMetadata& from) { EntityMetadata::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EntityMetadata* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "sync_pb.EntityMetadata"; }

  explicit EntityMetadata(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EntityMetadata(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EntityMetadata& from);
  EntityMetadata(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EntityMetadata&& from) noexcept
      : EntityMetadata(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------
  using CollaborationMetadata = EntityMetadata_CollaborationMetadata;

  // accessors -------------------------------------------------------
  enum : int {
    kClientTagHashFieldNumber = 1,
    kServerIdFieldNumber = 2,
    kSpecificsHashFieldNumber = 9,
    kBaseSpecificsHashFieldNumber = 10,
    kDeletedByVersionFieldNumber = 14,
    kUniquePositionFieldNumber = 11,
    kPossiblyTrimmedBaseSpecificsFieldNumber = 13,
    kCollaborationFieldNumber = 15,
    kDeletionOriginFieldNumber = 16,
    kSequenceNumberFieldNumber = 4,
    kAckedSequenceNumberFieldNumber = 5,
    kCreationTimeFieldNumber = 7,
    kIsDeletedFieldNumber = 3,
    kBookmarkFaviconHashFieldNumber = 12,
    kModificationTimeFieldNumber = 8,
    kServerVersionFieldNumber = 6,
  };
  // optional string client_tag_hash = 1;
  bool has_client_tag_hash()
      const;
  void clear_client_tag_hash() ;
  const ::std::string& client_tag_hash() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_client_tag_hash(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_client_tag_hash();
  ::std::string* PROTOBUF_NULLABLE release_client_tag_hash();
  void set_allocated_client_tag_hash(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_client_tag_hash() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_client_tag_hash(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_client_tag_hash();

  public:
  // optional string server_id = 2;
  bool has_server_id()
      const;
  void clear_server_id() ;
  const ::std::string& server_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_server_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_server_id();
  ::std::string* PROTOBUF_NULLABLE release_server_id();
  void set_allocated_server_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_server_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_server_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_server_id();

  public:
  // optional string specifics_hash = 9;
  bool has_specifics_hash()
      const;
  void clear_specifics_hash() ;
  const ::std::string& specifics_hash() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_specifics_hash(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_specifics_hash();
  ::std::string* PROTOBUF_NULLABLE release_specifics_hash();
  void set_allocated_specifics_hash(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_specifics_hash() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_specifics_hash(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_specifics_hash();

  public:
  // optional string base_specifics_hash = 10;
  bool has_base_specifics_hash()
      const;
  void clear_base_specifics_hash() ;
  const ::std::string& base_specifics_hash() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_base_specifics_hash(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_base_specifics_hash();
  ::std::string* PROTOBUF_NULLABLE release_base_specifics_hash();
  void set_allocated_base_specifics_hash(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_base_specifics_hash() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_base_specifics_hash(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_base_specifics_hash();

  public:
  // optional string deleted_by_version = 14;
  bool has_deleted_by_version()
      const;
  void clear_deleted_by_version() ;
  const ::std::string& deleted_by_version() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_deleted_by_version(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_deleted_by_version();
  ::std::string* PROTOBUF_NULLABLE release_deleted_by_version();
  void set_allocated_deleted_by_version(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_deleted_by_version() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_deleted_by_version(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_deleted_by_version();

  public:
  // optional .sync_pb.UniquePosition unique_position = 11;
  bool has_unique_position()
      const;
  void clear_unique_position() ;
  const ::sync_pb::UniquePosition& unique_position() const;
  ::sync_pb::UniquePosition* PROTOBUF_NULLABLE release_unique_position();
  ::sync_pb::UniquePosition* PROTOBUF_NONNULL mutable_unique_position();
  void set_allocated_unique_position(::sync_pb::UniquePosition* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_unique_position(::sync_pb::UniquePosition* PROTOBUF_NULLABLE value);
  ::sync_pb::UniquePosition* PROTOBUF_NULLABLE unsafe_arena_release_unique_position();

  private:
  const ::sync_pb::UniquePosition& _internal_unique_position() const;
  ::sync_pb::UniquePosition* PROTOBUF_NONNULL _internal_mutable_unique_position();

  public:
  // optional .sync_pb.EntitySpecifics possibly_trimmed_base_specifics = 13;
  bool has_possibly_trimmed_base_specifics()
      const;
  void clear_possibly_trimmed_base_specifics() ;
  const ::sync_pb::EntitySpecifics& possibly_trimmed_base_specifics() const;
  ::sync_pb::EntitySpecifics* PROTOBUF_NULLABLE release_possibly_trimmed_base_specifics();
  ::sync_pb::EntitySpecifics* PROTOBUF_NONNULL mutable_possibly_trimmed_base_specifics();
  void set_allocated_possibly_trimmed_base_specifics(::sync_pb::EntitySpecifics* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_possibly_trimmed_base_specifics(::sync_pb::EntitySpecifics* PROTOBUF_NULLABLE value);
  ::sync_pb::EntitySpecifics* PROTOBUF_NULLABLE unsafe_arena_release_possibly_trimmed_base_specifics();

  private:
  const ::sync_pb::EntitySpecifics& _internal_possibly_trimmed_base_specifics() const;
  ::sync_pb::EntitySpecifics* PROTOBUF_NONNULL _internal_mutable_possibly_trimmed_base_specifics();

  public:
  // optional .sync_pb.EntityMetadata.CollaborationMetadata collaboration = 15;
  bool has_collaboration()
      const;
  void clear_collaboration() ;
  const ::sync_pb::EntityMetadata_CollaborationMetadata& collaboration() const;
  ::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NULLABLE release_collaboration();
  ::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NONNULL mutable_collaboration();
  void set_allocated_collaboration(::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_collaboration(::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NULLABLE value);
  ::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NULLABLE unsafe_arena_release_collaboration();

  private:
  const ::sync_pb::EntityMetadata_CollaborationMetadata& _internal_collaboration() const;
  ::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NONNULL _internal_mutable_collaboration();

  public:
  // optional .sync_pb.DeletionOrigin deletion_origin = 16;
  bool has_deletion_origin()
      const;
  void clear_deletion_origin() ;
  const ::sync_pb::DeletionOrigin& deletion_origin() const;
  ::sync_pb::DeletionOrigin* PROTOBUF_NULLABLE release_deletion_origin();
  ::sync_pb::DeletionOrigin* PROTOBUF_NONNULL mutable_deletion_origin();
  void set_allocated_deletion_origin(::sync_pb::DeletionOrigin* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_deletion_origin(::sync_pb::DeletionOrigin* PROTOBUF_NULLABLE value);
  ::sync_pb::DeletionOrigin* PROTOBUF_NULLABLE unsafe_arena_release_deletion_origin();

  private:
  const ::sync_pb::DeletionOrigin& _internal_deletion_origin() const;
  ::sync_pb::DeletionOrigin* PROTOBUF_NONNULL _internal_mutable_deletion_origin();

  public:
  // optional int64 sequence_number = 4;
  bool has_sequence_number()
      const;
  void clear_sequence_number() ;
  ::int64_t sequence_number() const;
  void set_sequence_number(::int64_t value);

  private:
  ::int64_t _internal_sequence_number() const;
  void _internal_set_sequence_number(::int64_t value);

  public:
  // optional int64 acked_sequence_number = 5;
  bool has_acked_sequence_number()
      const;
  void clear_acked_sequence_number() ;
  ::int64_t acked_sequence_number() const;
  void set_acked_sequence_number(::int64_t value);

  private:
  ::int64_t _internal_acked_sequence_number() const;
  void _internal_set_acked_sequence_number(::int64_t value);

  public:
  // optional int64 creation_time = 7;
  bool has_creation_time()
      const;
  void clear_creation_time() ;
  ::int64_t creation_time() const;
  void set_creation_time(::int64_t value);

  private:
  ::int64_t _internal_creation_time() const;
  void _internal_set_creation_time(::int64_t value);

  public:
  // optional bool is_deleted = 3;
  bool has_is_deleted()
      const;
  void clear_is_deleted() ;
  bool is_deleted() const;
  void set_is_deleted(bool value);

  private:
  bool _internal_is_deleted() const;
  void _internal_set_is_deleted(bool value);

  public:
  // optional fixed32 bookmark_favicon_hash = 12;
  bool has_bookmark_favicon_hash()
      const;
  void clear_bookmark_favicon_hash() ;
  ::uint32_t bookmark_favicon_hash() const;
  void set_bookmark_favicon_hash(::uint32_t value);

  private:
  ::uint32_t _internal_bookmark_favicon_hash() const;
  void _internal_set_bookmark_favicon_hash(::uint32_t value);

  public:
  // optional int64 modification_time = 8;
  bool has_modification_time()
      const;
  void clear_modification_time() ;
  ::int64_t modification_time() const;
  void set_modification_time(::int64_t value);

  private:
  ::int64_t _internal_modification_time() const;
  void _internal_set_modification_time(::int64_t value);

  public:
  // optional int64 server_version = 6 [default = -1];
  bool has_server_version()
      const;
  void clear_server_version() ;
  ::int64_t server_version() const;
  void set_server_version(::int64_t value);

  private:
  ::int64_t _internal_server_version() const;
  void _internal_set_server_version(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:sync_pb.EntityMetadata)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<4, 16,
                          4, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EntityMetadata& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr client_tag_hash_;
    ::google::protobuf::internal::ArenaStringPtr server_id_;
    ::google::protobuf::internal::ArenaStringPtr specifics_hash_;
    ::google::protobuf::internal::ArenaStringPtr base_specifics_hash_;
    ::google::protobuf::internal::ArenaStringPtr deleted_by_version_;
    ::sync_pb::UniquePosition* PROTOBUF_NULLABLE unique_position_;
    ::sync_pb::EntitySpecifics* PROTOBUF_NULLABLE possibly_trimmed_base_specifics_;
    ::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NULLABLE collaboration_;
    ::sync_pb::DeletionOrigin* PROTOBUF_NULLABLE deletion_origin_;
    ::int64_t sequence_number_;
    ::int64_t acked_sequence_number_;
    ::int64_t creation_time_;
    bool is_deleted_;
    ::uint32_t bookmark_favicon_hash_;
    ::int64_t modification_time_;
    ::int64_t server_version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fsync_2fprotocol_2fentity_5fmetadata_2eproto;
};

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




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


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

// EntityMetadata_CollaborationMetadata_Attribution

// optional string obfuscated_gaia_id = 1;
inline bool EntityMetadata_CollaborationMetadata_Attribution::has_obfuscated_gaia_id() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void EntityMetadata_CollaborationMetadata_Attribution::clear_obfuscated_gaia_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.obfuscated_gaia_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& EntityMetadata_CollaborationMetadata_Attribution::obfuscated_gaia_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.CollaborationMetadata.Attribution.obfuscated_gaia_id)
  return _internal_obfuscated_gaia_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EntityMetadata_CollaborationMetadata_Attribution::set_obfuscated_gaia_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.obfuscated_gaia_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.CollaborationMetadata.Attribution.obfuscated_gaia_id)
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata_CollaborationMetadata_Attribution::mutable_obfuscated_gaia_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_obfuscated_gaia_id();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.CollaborationMetadata.Attribution.obfuscated_gaia_id)
  return _s;
}
inline const ::std::string& EntityMetadata_CollaborationMetadata_Attribution::_internal_obfuscated_gaia_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.obfuscated_gaia_id_.Get();
}
inline void EntityMetadata_CollaborationMetadata_Attribution::_internal_set_obfuscated_gaia_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.obfuscated_gaia_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata_CollaborationMetadata_Attribution::_internal_mutable_obfuscated_gaia_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.obfuscated_gaia_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EntityMetadata_CollaborationMetadata_Attribution::release_obfuscated_gaia_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.CollaborationMetadata.Attribution.obfuscated_gaia_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.obfuscated_gaia_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.obfuscated_gaia_id_.Set("", GetArena());
  }
  return released;
}
inline void EntityMetadata_CollaborationMetadata_Attribution::set_allocated_obfuscated_gaia_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.obfuscated_gaia_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.obfuscated_gaia_id_.IsDefault()) {
    _impl_.obfuscated_gaia_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.CollaborationMetadata.Attribution.obfuscated_gaia_id)
}

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

// EntityMetadata_CollaborationMetadata

// optional string collaboration_id = 1;
inline bool EntityMetadata_CollaborationMetadata::has_collaboration_id() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void EntityMetadata_CollaborationMetadata::clear_collaboration_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.collaboration_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& EntityMetadata_CollaborationMetadata::collaboration_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.CollaborationMetadata.collaboration_id)
  return _internal_collaboration_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EntityMetadata_CollaborationMetadata::set_collaboration_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.collaboration_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.CollaborationMetadata.collaboration_id)
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata_CollaborationMetadata::mutable_collaboration_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_collaboration_id();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.CollaborationMetadata.collaboration_id)
  return _s;
}
inline const ::std::string& EntityMetadata_CollaborationMetadata::_internal_collaboration_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.collaboration_id_.Get();
}
inline void EntityMetadata_CollaborationMetadata::_internal_set_collaboration_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.collaboration_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata_CollaborationMetadata::_internal_mutable_collaboration_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.collaboration_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EntityMetadata_CollaborationMetadata::release_collaboration_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.CollaborationMetadata.collaboration_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.collaboration_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.collaboration_id_.Set("", GetArena());
  }
  return released;
}
inline void EntityMetadata_CollaborationMetadata::set_allocated_collaboration_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.collaboration_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.collaboration_id_.IsDefault()) {
    _impl_.collaboration_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.CollaborationMetadata.collaboration_id)
}

// optional .sync_pb.EntityMetadata.CollaborationMetadata.Attribution creation_attribution = 2;
inline bool EntityMetadata_CollaborationMetadata::has_creation_attribution() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.creation_attribution_ != nullptr);
  return value;
}
inline void EntityMetadata_CollaborationMetadata::clear_creation_attribution() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.creation_attribution_ != nullptr) _impl_.creation_attribution_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution& EntityMetadata_CollaborationMetadata::_internal_creation_attribution() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* p = _impl_.creation_attribution_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::sync_pb::EntityMetadata_CollaborationMetadata_Attribution>(&::sync_pb::EntityMetadata_CollaborationMetadata_Attribution_globals_);
}
inline const ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution& EntityMetadata_CollaborationMetadata::creation_attribution() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.CollaborationMetadata.creation_attribution)
  return _internal_creation_attribution();
}
inline void EntityMetadata_CollaborationMetadata::unsafe_arena_set_allocated_creation_attribution(
    ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.creation_attribution_);
  }
  _impl_.creation_attribution_ = reinterpret_cast<::sync_pb::EntityMetadata_CollaborationMetadata_Attribution*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:sync_pb.EntityMetadata.CollaborationMetadata.creation_attribution)
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE EntityMetadata_CollaborationMetadata::release_creation_attribution() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* released = _impl_.creation_attribution_;
  _impl_.creation_attribution_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE EntityMetadata_CollaborationMetadata::unsafe_arena_release_creation_attribution() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.CollaborationMetadata.creation_attribution)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* temp = _impl_.creation_attribution_;
  _impl_.creation_attribution_ = nullptr;
  return temp;
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL EntityMetadata_CollaborationMetadata::_internal_mutable_creation_attribution() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.creation_attribution_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::sync_pb::EntityMetadata_CollaborationMetadata_Attribution>(GetArena());
    _impl_.creation_attribution_ = reinterpret_cast<::sync_pb::EntityMetadata_CollaborationMetadata_Attribution*>(p);
  }
  return _impl_.creation_attribution_;
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL EntityMetadata_CollaborationMetadata::mutable_creation_attribution()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* _msg = _internal_mutable_creation_attribution();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.CollaborationMetadata.creation_attribution)
  return _msg;
}
inline void EntityMetadata_CollaborationMetadata::set_allocated_creation_attribution(::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.creation_attribution_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.creation_attribution_ = reinterpret_cast<::sync_pb::EntityMetadata_CollaborationMetadata_Attribution*>(value);
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.CollaborationMetadata.creation_attribution)
}

// optional .sync_pb.EntityMetadata.CollaborationMetadata.Attribution last_update_attribution = 3;
inline bool EntityMetadata_CollaborationMetadata::has_last_update_attribution() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.last_update_attribution_ != nullptr);
  return value;
}
inline void EntityMetadata_CollaborationMetadata::clear_last_update_attribution() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.last_update_attribution_ != nullptr) _impl_.last_update_attribution_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution& EntityMetadata_CollaborationMetadata::_internal_last_update_attribution() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* p = _impl_.last_update_attribution_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::sync_pb::EntityMetadata_CollaborationMetadata_Attribution>(&::sync_pb::EntityMetadata_CollaborationMetadata_Attribution_globals_);
}
inline const ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution& EntityMetadata_CollaborationMetadata::last_update_attribution() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.CollaborationMetadata.last_update_attribution)
  return _internal_last_update_attribution();
}
inline void EntityMetadata_CollaborationMetadata::unsafe_arena_set_allocated_last_update_attribution(
    ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.last_update_attribution_);
  }
  _impl_.last_update_attribution_ = reinterpret_cast<::sync_pb::EntityMetadata_CollaborationMetadata_Attribution*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:sync_pb.EntityMetadata.CollaborationMetadata.last_update_attribution)
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE EntityMetadata_CollaborationMetadata::release_last_update_attribution() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* released = _impl_.last_update_attribution_;
  _impl_.last_update_attribution_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE EntityMetadata_CollaborationMetadata::unsafe_arena_release_last_update_attribution() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.CollaborationMetadata.last_update_attribution)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* temp = _impl_.last_update_attribution_;
  _impl_.last_update_attribution_ = nullptr;
  return temp;
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL EntityMetadata_CollaborationMetadata::_internal_mutable_last_update_attribution() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.last_update_attribution_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::sync_pb::EntityMetadata_CollaborationMetadata_Attribution>(GetArena());
    _impl_.last_update_attribution_ = reinterpret_cast<::sync_pb::EntityMetadata_CollaborationMetadata_Attribution*>(p);
  }
  return _impl_.last_update_attribution_;
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NONNULL EntityMetadata_CollaborationMetadata::mutable_last_update_attribution()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* _msg = _internal_mutable_last_update_attribution();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.CollaborationMetadata.last_update_attribution)
  return _msg;
}
inline void EntityMetadata_CollaborationMetadata::set_allocated_last_update_attribution(::sync_pb::EntityMetadata_CollaborationMetadata_Attribution* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.last_update_attribution_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.last_update_attribution_ = reinterpret_cast<::sync_pb::EntityMetadata_CollaborationMetadata_Attribution*>(value);
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.CollaborationMetadata.last_update_attribution)
}

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

// EntityMetadata

// optional string client_tag_hash = 1;
inline bool EntityMetadata::has_client_tag_hash() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void EntityMetadata::clear_client_tag_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.client_tag_hash_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& EntityMetadata::client_tag_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.client_tag_hash)
  return _internal_client_tag_hash();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EntityMetadata::set_client_tag_hash(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.client_tag_hash_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.client_tag_hash)
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata::mutable_client_tag_hash()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_client_tag_hash();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.client_tag_hash)
  return _s;
}
inline const ::std::string& EntityMetadata::_internal_client_tag_hash() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.client_tag_hash_.Get();
}
inline void EntityMetadata::_internal_set_client_tag_hash(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.client_tag_hash_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata::_internal_mutable_client_tag_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.client_tag_hash_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EntityMetadata::release_client_tag_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.client_tag_hash)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.client_tag_hash_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.client_tag_hash_.Set("", GetArena());
  }
  return released;
}
inline void EntityMetadata::set_allocated_client_tag_hash(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.client_tag_hash_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.client_tag_hash_.IsDefault()) {
    _impl_.client_tag_hash_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.client_tag_hash)
}

// optional string server_id = 2;
inline bool EntityMetadata::has_server_id() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void EntityMetadata::clear_server_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.server_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& EntityMetadata::server_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.server_id)
  return _internal_server_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EntityMetadata::set_server_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.server_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.server_id)
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata::mutable_server_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_server_id();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.server_id)
  return _s;
}
inline const ::std::string& EntityMetadata::_internal_server_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.server_id_.Get();
}
inline void EntityMetadata::_internal_set_server_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.server_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata::_internal_mutable_server_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.server_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EntityMetadata::release_server_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.server_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.server_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.server_id_.Set("", GetArena());
  }
  return released;
}
inline void EntityMetadata::set_allocated_server_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.server_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.server_id_.IsDefault()) {
    _impl_.server_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.server_id)
}

// optional bool is_deleted = 3;
inline bool EntityMetadata::has_is_deleted() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00001000U);
  return value;
}
inline void EntityMetadata::clear_is_deleted() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_deleted_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00001000U);
}
inline bool EntityMetadata::is_deleted() const {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.is_deleted)
  return _internal_is_deleted();
}
inline void EntityMetadata::set_is_deleted(bool value) {
  _internal_set_is_deleted(value);
  SetHasBit(_impl_._has_bits_[0], 0x00001000U);
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.is_deleted)
}
inline bool EntityMetadata::_internal_is_deleted() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_deleted_;
}
inline void EntityMetadata::_internal_set_is_deleted(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_deleted_ = value;
}

// optional int64 sequence_number = 4;
inline bool EntityMetadata::has_sequence_number() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000200U);
  return value;
}
inline void EntityMetadata::clear_sequence_number() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sequence_number_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000200U);
}
inline ::int64_t EntityMetadata::sequence_number() const {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.sequence_number)
  return _internal_sequence_number();
}
inline void EntityMetadata::set_sequence_number(::int64_t value) {
  _internal_set_sequence_number(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000200U);
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.sequence_number)
}
inline ::int64_t EntityMetadata::_internal_sequence_number() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sequence_number_;
}
inline void EntityMetadata::_internal_set_sequence_number(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sequence_number_ = value;
}

// optional int64 acked_sequence_number = 5;
inline bool EntityMetadata::has_acked_sequence_number() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000400U);
  return value;
}
inline void EntityMetadata::clear_acked_sequence_number() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.acked_sequence_number_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000400U);
}
inline ::int64_t EntityMetadata::acked_sequence_number() const {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.acked_sequence_number)
  return _internal_acked_sequence_number();
}
inline void EntityMetadata::set_acked_sequence_number(::int64_t value) {
  _internal_set_acked_sequence_number(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000400U);
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.acked_sequence_number)
}
inline ::int64_t EntityMetadata::_internal_acked_sequence_number() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.acked_sequence_number_;
}
inline void EntityMetadata::_internal_set_acked_sequence_number(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.acked_sequence_number_ = value;
}

// optional int64 server_version = 6 [default = -1];
inline bool EntityMetadata::has_server_version() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00008000U);
  return value;
}
inline void EntityMetadata::clear_server_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.server_version_ = ::int64_t{-1};
  ClearHasBit(_impl_._has_bits_[0], 0x00008000U);
}
inline ::int64_t EntityMetadata::server_version() const {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.server_version)
  return _internal_server_version();
}
inline void EntityMetadata::set_server_version(::int64_t value) {
  _internal_set_server_version(value);
  SetHasBit(_impl_._has_bits_[0], 0x00008000U);
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.server_version)
}
inline ::int64_t EntityMetadata::_internal_server_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.server_version_;
}
inline void EntityMetadata::_internal_set_server_version(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.server_version_ = value;
}

// optional int64 creation_time = 7;
inline bool EntityMetadata::has_creation_time() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000800U);
  return value;
}
inline void EntityMetadata::clear_creation_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.creation_time_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000800U);
}
inline ::int64_t EntityMetadata::creation_time() const {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.creation_time)
  return _internal_creation_time();
}
inline void EntityMetadata::set_creation_time(::int64_t value) {
  _internal_set_creation_time(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000800U);
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.creation_time)
}
inline ::int64_t EntityMetadata::_internal_creation_time() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.creation_time_;
}
inline void EntityMetadata::_internal_set_creation_time(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.creation_time_ = value;
}

// optional int64 modification_time = 8;
inline bool EntityMetadata::has_modification_time() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00004000U);
  return value;
}
inline void EntityMetadata::clear_modification_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.modification_time_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00004000U);
}
inline ::int64_t EntityMetadata::modification_time() const {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.modification_time)
  return _internal_modification_time();
}
inline void EntityMetadata::set_modification_time(::int64_t value) {
  _internal_set_modification_time(value);
  SetHasBit(_impl_._has_bits_[0], 0x00004000U);
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.modification_time)
}
inline ::int64_t EntityMetadata::_internal_modification_time() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.modification_time_;
}
inline void EntityMetadata::_internal_set_modification_time(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.modification_time_ = value;
}

// optional string specifics_hash = 9;
inline bool EntityMetadata::has_specifics_hash() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void EntityMetadata::clear_specifics_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.specifics_hash_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::std::string& EntityMetadata::specifics_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.specifics_hash)
  return _internal_specifics_hash();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EntityMetadata::set_specifics_hash(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.specifics_hash_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.specifics_hash)
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata::mutable_specifics_hash()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_specifics_hash();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.specifics_hash)
  return _s;
}
inline const ::std::string& EntityMetadata::_internal_specifics_hash() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.specifics_hash_.Get();
}
inline void EntityMetadata::_internal_set_specifics_hash(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.specifics_hash_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata::_internal_mutable_specifics_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.specifics_hash_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EntityMetadata::release_specifics_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.specifics_hash)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.specifics_hash_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.specifics_hash_.Set("", GetArena());
  }
  return released;
}
inline void EntityMetadata::set_allocated_specifics_hash(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.specifics_hash_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.specifics_hash_.IsDefault()) {
    _impl_.specifics_hash_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.specifics_hash)
}

// optional string base_specifics_hash = 10;
inline bool EntityMetadata::has_base_specifics_hash() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void EntityMetadata::clear_base_specifics_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.base_specifics_hash_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& EntityMetadata::base_specifics_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.base_specifics_hash)
  return _internal_base_specifics_hash();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EntityMetadata::set_base_specifics_hash(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.base_specifics_hash_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.base_specifics_hash)
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata::mutable_base_specifics_hash()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_base_specifics_hash();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.base_specifics_hash)
  return _s;
}
inline const ::std::string& EntityMetadata::_internal_base_specifics_hash() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.base_specifics_hash_.Get();
}
inline void EntityMetadata::_internal_set_base_specifics_hash(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.base_specifics_hash_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata::_internal_mutable_base_specifics_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.base_specifics_hash_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EntityMetadata::release_base_specifics_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.base_specifics_hash)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.base_specifics_hash_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.base_specifics_hash_.Set("", GetArena());
  }
  return released;
}
inline void EntityMetadata::set_allocated_base_specifics_hash(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  _impl_.base_specifics_hash_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.base_specifics_hash_.IsDefault()) {
    _impl_.base_specifics_hash_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.base_specifics_hash)
}

// optional .sync_pb.UniquePosition unique_position = 11;
inline bool EntityMetadata::has_unique_position() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  PROTOBUF_ASSUME(!value || _impl_.unique_position_ != nullptr);
  return value;
}
inline const ::sync_pb::UniquePosition& EntityMetadata::_internal_unique_position() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::sync_pb::UniquePosition* p = _impl_.unique_position_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::sync_pb::UniquePosition>(&::sync_pb::UniquePosition_globals_);
}
inline const ::sync_pb::UniquePosition& EntityMetadata::unique_position() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.unique_position)
  return _internal_unique_position();
}
inline void EntityMetadata::unsafe_arena_set_allocated_unique_position(
    ::sync_pb::UniquePosition* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.unique_position_);
  }
  _impl_.unique_position_ = reinterpret_cast<::sync_pb::UniquePosition*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:sync_pb.EntityMetadata.unique_position)
}
inline ::sync_pb::UniquePosition* PROTOBUF_NULLABLE EntityMetadata::release_unique_position() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::sync_pb::UniquePosition* released = _impl_.unique_position_;
  _impl_.unique_position_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::sync_pb::UniquePosition* PROTOBUF_NULLABLE EntityMetadata::unsafe_arena_release_unique_position() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.unique_position)

  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::sync_pb::UniquePosition* temp = _impl_.unique_position_;
  _impl_.unique_position_ = nullptr;
  return temp;
}
inline ::sync_pb::UniquePosition* PROTOBUF_NONNULL EntityMetadata::_internal_mutable_unique_position() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.unique_position_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::sync_pb::UniquePosition>(GetArena());
    _impl_.unique_position_ = reinterpret_cast<::sync_pb::UniquePosition*>(p);
  }
  return _impl_.unique_position_;
}
inline ::sync_pb::UniquePosition* PROTOBUF_NONNULL EntityMetadata::mutable_unique_position()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::sync_pb::UniquePosition* _msg = _internal_mutable_unique_position();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.unique_position)
  return _msg;
}
inline void EntityMetadata::set_allocated_unique_position(::sync_pb::UniquePosition* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.unique_position_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  }

  _impl_.unique_position_ = reinterpret_cast<::sync_pb::UniquePosition*>(value);
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.unique_position)
}

// optional fixed32 bookmark_favicon_hash = 12;
inline bool EntityMetadata::has_bookmark_favicon_hash() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00002000U);
  return value;
}
inline void EntityMetadata::clear_bookmark_favicon_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bookmark_favicon_hash_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00002000U);
}
inline ::uint32_t EntityMetadata::bookmark_favicon_hash() const {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.bookmark_favicon_hash)
  return _internal_bookmark_favicon_hash();
}
inline void EntityMetadata::set_bookmark_favicon_hash(::uint32_t value) {
  _internal_set_bookmark_favicon_hash(value);
  SetHasBit(_impl_._has_bits_[0], 0x00002000U);
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.bookmark_favicon_hash)
}
inline ::uint32_t EntityMetadata::_internal_bookmark_favicon_hash() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bookmark_favicon_hash_;
}
inline void EntityMetadata::_internal_set_bookmark_favicon_hash(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bookmark_favicon_hash_ = value;
}

// optional .sync_pb.EntitySpecifics possibly_trimmed_base_specifics = 13;
inline bool EntityMetadata::has_possibly_trimmed_base_specifics() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  PROTOBUF_ASSUME(!value || _impl_.possibly_trimmed_base_specifics_ != nullptr);
  return value;
}
inline const ::sync_pb::EntitySpecifics& EntityMetadata::_internal_possibly_trimmed_base_specifics() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::sync_pb::EntitySpecifics* p = _impl_.possibly_trimmed_base_specifics_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::sync_pb::EntitySpecifics>(&::sync_pb::EntitySpecifics_globals_);
}
inline const ::sync_pb::EntitySpecifics& EntityMetadata::possibly_trimmed_base_specifics() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.possibly_trimmed_base_specifics)
  return _internal_possibly_trimmed_base_specifics();
}
inline void EntityMetadata::unsafe_arena_set_allocated_possibly_trimmed_base_specifics(
    ::sync_pb::EntitySpecifics* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.possibly_trimmed_base_specifics_);
  }
  _impl_.possibly_trimmed_base_specifics_ = reinterpret_cast<::sync_pb::EntitySpecifics*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:sync_pb.EntityMetadata.possibly_trimmed_base_specifics)
}
inline ::sync_pb::EntitySpecifics* PROTOBUF_NULLABLE EntityMetadata::release_possibly_trimmed_base_specifics() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::sync_pb::EntitySpecifics* released = _impl_.possibly_trimmed_base_specifics_;
  _impl_.possibly_trimmed_base_specifics_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::sync_pb::EntitySpecifics* PROTOBUF_NULLABLE EntityMetadata::unsafe_arena_release_possibly_trimmed_base_specifics() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.possibly_trimmed_base_specifics)

  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::sync_pb::EntitySpecifics* temp = _impl_.possibly_trimmed_base_specifics_;
  _impl_.possibly_trimmed_base_specifics_ = nullptr;
  return temp;
}
inline ::sync_pb::EntitySpecifics* PROTOBUF_NONNULL EntityMetadata::_internal_mutable_possibly_trimmed_base_specifics() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.possibly_trimmed_base_specifics_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::sync_pb::EntitySpecifics>(GetArena());
    _impl_.possibly_trimmed_base_specifics_ = reinterpret_cast<::sync_pb::EntitySpecifics*>(p);
  }
  return _impl_.possibly_trimmed_base_specifics_;
}
inline ::sync_pb::EntitySpecifics* PROTOBUF_NONNULL EntityMetadata::mutable_possibly_trimmed_base_specifics()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::sync_pb::EntitySpecifics* _msg = _internal_mutable_possibly_trimmed_base_specifics();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.possibly_trimmed_base_specifics)
  return _msg;
}
inline void EntityMetadata::set_allocated_possibly_trimmed_base_specifics(::sync_pb::EntitySpecifics* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.possibly_trimmed_base_specifics_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  }

  _impl_.possibly_trimmed_base_specifics_ = reinterpret_cast<::sync_pb::EntitySpecifics*>(value);
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.possibly_trimmed_base_specifics)
}

// optional string deleted_by_version = 14;
inline bool EntityMetadata::has_deleted_by_version() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void EntityMetadata::clear_deleted_by_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.deleted_by_version_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline const ::std::string& EntityMetadata::deleted_by_version() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.deleted_by_version)
  return _internal_deleted_by_version();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EntityMetadata::set_deleted_by_version(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  _impl_.deleted_by_version_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:sync_pb.EntityMetadata.deleted_by_version)
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata::mutable_deleted_by_version()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::std::string* _s = _internal_mutable_deleted_by_version();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.deleted_by_version)
  return _s;
}
inline const ::std::string& EntityMetadata::_internal_deleted_by_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.deleted_by_version_.Get();
}
inline void EntityMetadata::_internal_set_deleted_by_version(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.deleted_by_version_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EntityMetadata::_internal_mutable_deleted_by_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.deleted_by_version_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EntityMetadata::release_deleted_by_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.deleted_by_version)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000010U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  auto* released = _impl_.deleted_by_version_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.deleted_by_version_.Set("", GetArena());
  }
  return released;
}
inline void EntityMetadata::set_allocated_deleted_by_version(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }
  _impl_.deleted_by_version_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.deleted_by_version_.IsDefault()) {
    _impl_.deleted_by_version_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.deleted_by_version)
}

// optional .sync_pb.EntityMetadata.CollaborationMetadata collaboration = 15;
inline bool EntityMetadata::has_collaboration() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000080U);
  PROTOBUF_ASSUME(!value || _impl_.collaboration_ != nullptr);
  return value;
}
inline void EntityMetadata::clear_collaboration() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collaboration_ != nullptr) _impl_.collaboration_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
}
inline const ::sync_pb::EntityMetadata_CollaborationMetadata& EntityMetadata::_internal_collaboration() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::sync_pb::EntityMetadata_CollaborationMetadata* p = _impl_.collaboration_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::sync_pb::EntityMetadata_CollaborationMetadata>(&::sync_pb::EntityMetadata_CollaborationMetadata_globals_);
}
inline const ::sync_pb::EntityMetadata_CollaborationMetadata& EntityMetadata::collaboration() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.collaboration)
  return _internal_collaboration();
}
inline void EntityMetadata::unsafe_arena_set_allocated_collaboration(
    ::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collaboration_);
  }
  _impl_.collaboration_ = reinterpret_cast<::sync_pb::EntityMetadata_CollaborationMetadata*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:sync_pb.EntityMetadata.collaboration)
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NULLABLE EntityMetadata::release_collaboration() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  ::sync_pb::EntityMetadata_CollaborationMetadata* released = _impl_.collaboration_;
  _impl_.collaboration_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NULLABLE EntityMetadata::unsafe_arena_release_collaboration() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.collaboration)

  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  ::sync_pb::EntityMetadata_CollaborationMetadata* temp = _impl_.collaboration_;
  _impl_.collaboration_ = nullptr;
  return temp;
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NONNULL EntityMetadata::_internal_mutable_collaboration() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.collaboration_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::sync_pb::EntityMetadata_CollaborationMetadata>(GetArena());
    _impl_.collaboration_ = reinterpret_cast<::sync_pb::EntityMetadata_CollaborationMetadata*>(p);
  }
  return _impl_.collaboration_;
}
inline ::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NONNULL EntityMetadata::mutable_collaboration()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  ::sync_pb::EntityMetadata_CollaborationMetadata* _msg = _internal_mutable_collaboration();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.collaboration)
  return _msg;
}
inline void EntityMetadata::set_allocated_collaboration(::sync_pb::EntityMetadata_CollaborationMetadata* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.collaboration_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  }

  _impl_.collaboration_ = reinterpret_cast<::sync_pb::EntityMetadata_CollaborationMetadata*>(value);
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.collaboration)
}

// optional .sync_pb.DeletionOrigin deletion_origin = 16;
inline bool EntityMetadata::has_deletion_origin() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000100U);
  PROTOBUF_ASSUME(!value || _impl_.deletion_origin_ != nullptr);
  return value;
}
inline const ::sync_pb::DeletionOrigin& EntityMetadata::_internal_deletion_origin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::sync_pb::DeletionOrigin* p = _impl_.deletion_origin_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::sync_pb::DeletionOrigin>(&::sync_pb::DeletionOrigin_globals_);
}
inline const ::sync_pb::DeletionOrigin& EntityMetadata::deletion_origin() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:sync_pb.EntityMetadata.deletion_origin)
  return _internal_deletion_origin();
}
inline void EntityMetadata::unsafe_arena_set_allocated_deletion_origin(
    ::sync_pb::DeletionOrigin* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.deletion_origin_);
  }
  _impl_.deletion_origin_ = reinterpret_cast<::sync_pb::DeletionOrigin*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:sync_pb.EntityMetadata.deletion_origin)
}
inline ::sync_pb::DeletionOrigin* PROTOBUF_NULLABLE EntityMetadata::release_deletion_origin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::sync_pb::DeletionOrigin* released = _impl_.deletion_origin_;
  _impl_.deletion_origin_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::sync_pb::DeletionOrigin* PROTOBUF_NULLABLE EntityMetadata::unsafe_arena_release_deletion_origin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:sync_pb.EntityMetadata.deletion_origin)

  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::sync_pb::DeletionOrigin* temp = _impl_.deletion_origin_;
  _impl_.deletion_origin_ = nullptr;
  return temp;
}
inline ::sync_pb::DeletionOrigin* PROTOBUF_NONNULL EntityMetadata::_internal_mutable_deletion_origin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.deletion_origin_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::sync_pb::DeletionOrigin>(GetArena());
    _impl_.deletion_origin_ = reinterpret_cast<::sync_pb::DeletionOrigin*>(p);
  }
  return _impl_.deletion_origin_;
}
inline ::sync_pb::DeletionOrigin* PROTOBUF_NONNULL EntityMetadata::mutable_deletion_origin()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::sync_pb::DeletionOrigin* _msg = _internal_mutable_deletion_origin();
  // @@protoc_insertion_point(field_mutable:sync_pb.EntityMetadata.deletion_origin)
  return _msg;
}
inline void EntityMetadata::set_allocated_deletion_origin(::sync_pb::DeletionOrigin* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.deletion_origin_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  }

  _impl_.deletion_origin_ = reinterpret_cast<::sync_pb::DeletionOrigin*>(value);
  // @@protoc_insertion_point(field_set_allocated:sync_pb.EntityMetadata.deletion_origin)
}

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

// @@protoc_insertion_point(namespace_scope)
}  // namespace sync_pb


// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"
// clang-format on

#endif  // components_2fsync_2fprotocol_2fentity_5fmetadata_2eproto_2epb_2eh
