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

#ifndef components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto_2epb_2eh
#define components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_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 "google/protobuf/generated_enum_util.h"
#include "components/optimization_guide/proto/features/common_quality_data.pb.h"
#include "components/optimization_guide/proto/model_quality_metadata.pb.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_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_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto {
  static const ::uint32_t offsets[];
};
namespace optimization_guide {
namespace proto {
enum BrowserBasedTodosResponse_GroupType : int;
extern const uint32_t BrowserBasedTodosResponse_GroupType_internal_data_[];
enum ChatHistoryTurn_Role : int;
extern const uint32_t ChatHistoryTurn_Role_internal_data_[];
enum ContextHubAutoTodoItem_Status : int;
extern const uint32_t ContextHubAutoTodoItem_Status_internal_data_[];
enum ContextHubRequestType : int;
extern const uint32_t ContextHubRequestType_internal_data_[];
enum MemoryBankType : int;
extern const uint32_t MemoryBankType_internal_data_[];
class AutoTodosDeduplicationRequest;
struct AutoTodosDeduplicationRequestGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern AutoTodosDeduplicationRequestGlobalsTypeInternal AutoTodosDeduplicationRequest_globals_;
extern const ::google::protobuf::internal::ClassDataLite AutoTodosDeduplicationRequest_class_data_;
#else
extern const AutoTodosDeduplicationRequestGlobalsTypeInternal AutoTodosDeduplicationRequest_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class AutoTodosDeduplicationResponse;
struct AutoTodosDeduplicationResponseGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern AutoTodosDeduplicationResponseGlobalsTypeInternal AutoTodosDeduplicationResponse_globals_;
extern const ::google::protobuf::internal::ClassDataLite AutoTodosDeduplicationResponse_class_data_;
#else
extern const AutoTodosDeduplicationResponseGlobalsTypeInternal AutoTodosDeduplicationResponse_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class BrowserBasedTodosResponse;
struct BrowserBasedTodosResponseGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern BrowserBasedTodosResponseGlobalsTypeInternal BrowserBasedTodosResponse_globals_;
extern const ::google::protobuf::internal::ClassDataLite BrowserBasedTodosResponse_class_data_;
#else
extern const BrowserBasedTodosResponseGlobalsTypeInternal BrowserBasedTodosResponse_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ChatHistoryTurn;
struct ChatHistoryTurnGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ChatHistoryTurnGlobalsTypeInternal ChatHistoryTurn_globals_;
extern const ::google::protobuf::internal::ClassDataLite ChatHistoryTurn_class_data_;
#else
extern const ChatHistoryTurnGlobalsTypeInternal ChatHistoryTurn_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ContextHubAutoTodoItem;
struct ContextHubAutoTodoItemGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ContextHubAutoTodoItemGlobalsTypeInternal ContextHubAutoTodoItem_globals_;
extern const ::google::protobuf::internal::ClassDataLite ContextHubAutoTodoItem_class_data_;
#else
extern const ContextHubAutoTodoItemGlobalsTypeInternal ContextHubAutoTodoItem_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ContextHubLoggingData;
struct ContextHubLoggingDataGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ContextHubLoggingDataGlobalsTypeInternal ContextHubLoggingData_globals_;
extern const ::google::protobuf::internal::ClassDataLite ContextHubLoggingData_class_data_;
#else
extern const ContextHubLoggingDataGlobalsTypeInternal ContextHubLoggingData_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ContextHubRequest;
struct ContextHubRequestGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ContextHubRequestGlobalsTypeInternal ContextHubRequest_globals_;
extern const ::google::protobuf::internal::ClassDataLite ContextHubRequest_class_data_;
#else
extern const ContextHubRequestGlobalsTypeInternal ContextHubRequest_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ContextHubResponse;
struct ContextHubResponseGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ContextHubResponseGlobalsTypeInternal ContextHubResponse_globals_;
extern const ::google::protobuf::internal::ClassDataLite ContextHubResponse_class_data_;
#else
extern const ContextHubResponseGlobalsTypeInternal ContextHubResponse_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EntryItem;
struct EntryItemGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EntryItemGlobalsTypeInternal EntryItem_globals_;
extern const ::google::protobuf::internal::ClassDataLite EntryItem_class_data_;
#else
extern const EntryItemGlobalsTypeInternal EntryItem_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class GroupResponse;
struct GroupResponseGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern GroupResponseGlobalsTypeInternal GroupResponse_globals_;
extern const ::google::protobuf::internal::ClassDataLite GroupResponse_class_data_;
#else
extern const GroupResponseGlobalsTypeInternal GroupResponse_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class MemoryBankChatResponse;
struct MemoryBankChatResponseGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern MemoryBankChatResponseGlobalsTypeInternal MemoryBankChatResponse_globals_;
extern const ::google::protobuf::internal::ClassDataLite MemoryBankChatResponse_class_data_;
#else
extern const MemoryBankChatResponseGlobalsTypeInternal MemoryBankChatResponse_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class MemoryBankEntry;
struct MemoryBankEntryGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern MemoryBankEntryGlobalsTypeInternal MemoryBankEntry_globals_;
extern const ::google::protobuf::internal::ClassDataLite MemoryBankEntry_class_data_;
#else
extern const MemoryBankEntryGlobalsTypeInternal MemoryBankEntry_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
}  // namespace proto
}  // namespace optimization_guide
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::optimization_guide::proto::BrowserBasedTodosResponse_GroupType_internal_data_>
    internal::EnumTraitsImpl::value<::optimization_guide::proto::BrowserBasedTodosResponse_GroupType>;
template <>
internal::EnumTraitsT<::optimization_guide::proto::ChatHistoryTurn_Role_internal_data_>
    internal::EnumTraitsImpl::value<::optimization_guide::proto::ChatHistoryTurn_Role>;
template <>
internal::EnumTraitsT<::optimization_guide::proto::ContextHubAutoTodoItem_Status_internal_data_>
    internal::EnumTraitsImpl::value<::optimization_guide::proto::ContextHubAutoTodoItem_Status>;
template <>
internal::EnumTraitsT<::optimization_guide::proto::ContextHubRequestType_internal_data_>
    internal::EnumTraitsImpl::value<::optimization_guide::proto::ContextHubRequestType>;
template <>
internal::EnumTraitsT<::optimization_guide::proto::MemoryBankType_internal_data_>
    internal::EnumTraitsImpl::value<::optimization_guide::proto::MemoryBankType>;
}  // namespace protobuf
}  // namespace google

namespace optimization_guide {
namespace proto {
enum ChatHistoryTurn_Role : int {
  ChatHistoryTurn_Role_ROLE_UNSPECIFIED = 0,
  ChatHistoryTurn_Role_ROLE_USER = 1,
  ChatHistoryTurn_Role_ROLE_ASSISTANT = 2,
  ChatHistoryTurn_Role_ChatHistoryTurn_Role_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ChatHistoryTurn_Role_ChatHistoryTurn_Role_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t ChatHistoryTurn_Role_internal_data_[];
inline constexpr ChatHistoryTurn_Role ChatHistoryTurn_Role_Role_MIN =
    static_cast<ChatHistoryTurn_Role>(0);
inline constexpr ChatHistoryTurn_Role ChatHistoryTurn_Role_Role_MAX =
    static_cast<ChatHistoryTurn_Role>(2);
inline bool ChatHistoryTurn_Role_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int ChatHistoryTurn_Role_Role_ARRAYSIZE = 2 + 1;
const ::std::string& ChatHistoryTurn_Role_Name(ChatHistoryTurn_Role value);
template <typename T>
const ::std::string& ChatHistoryTurn_Role_Name(T value) {
  static_assert(::std::is_same<T, ChatHistoryTurn_Role>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Role_Name().");
  return ChatHistoryTurn_Role_Name(static_cast<ChatHistoryTurn_Role>(value));
}
bool ChatHistoryTurn_Role_Parse(
    ::absl::string_view name, ChatHistoryTurn_Role* PROTOBUF_NONNULL value);
enum ContextHubAutoTodoItem_Status : int {
  ContextHubAutoTodoItem_Status_STATUS_UNSPECIFIED = 0,
  ContextHubAutoTodoItem_Status_STATUS_ACTIVE = 1,
  ContextHubAutoTodoItem_Status_STATUS_COMPLETED = 2,
  ContextHubAutoTodoItem_Status_STATUS_DISMISSED = 3,
  ContextHubAutoTodoItem_Status_ContextHubAutoTodoItem_Status_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ContextHubAutoTodoItem_Status_ContextHubAutoTodoItem_Status_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t ContextHubAutoTodoItem_Status_internal_data_[];
inline constexpr ContextHubAutoTodoItem_Status ContextHubAutoTodoItem_Status_Status_MIN =
    static_cast<ContextHubAutoTodoItem_Status>(0);
inline constexpr ContextHubAutoTodoItem_Status ContextHubAutoTodoItem_Status_Status_MAX =
    static_cast<ContextHubAutoTodoItem_Status>(3);
inline bool ContextHubAutoTodoItem_Status_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int ContextHubAutoTodoItem_Status_Status_ARRAYSIZE = 3 + 1;
const ::std::string& ContextHubAutoTodoItem_Status_Name(ContextHubAutoTodoItem_Status value);
template <typename T>
const ::std::string& ContextHubAutoTodoItem_Status_Name(T value) {
  static_assert(::std::is_same<T, ContextHubAutoTodoItem_Status>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Status_Name().");
  return ContextHubAutoTodoItem_Status_Name(static_cast<ContextHubAutoTodoItem_Status>(value));
}
bool ContextHubAutoTodoItem_Status_Parse(
    ::absl::string_view name, ContextHubAutoTodoItem_Status* PROTOBUF_NONNULL value);
enum BrowserBasedTodosResponse_GroupType : int {
  BrowserBasedTodosResponse_GroupType_GROUP_TYPE_UNSPECIFIED = 0,
  BrowserBasedTodosResponse_GroupType_GROUP_TYPE_READING_LIST = 1,
  BrowserBasedTodosResponse_GroupType_GROUP_TYPE_NUDGE_TO_CLOSE = 2,
  BrowserBasedTodosResponse_GroupType_GROUP_TYPE_UNFINISHED = 3,
  BrowserBasedTodosResponse_GroupType_GROUP_TYPE_SHOPPING_CART = 4,
  BrowserBasedTodosResponse_GroupType_BrowserBasedTodosResponse_GroupType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  BrowserBasedTodosResponse_GroupType_BrowserBasedTodosResponse_GroupType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t BrowserBasedTodosResponse_GroupType_internal_data_[];
inline constexpr BrowserBasedTodosResponse_GroupType BrowserBasedTodosResponse_GroupType_GroupType_MIN =
    static_cast<BrowserBasedTodosResponse_GroupType>(0);
inline constexpr BrowserBasedTodosResponse_GroupType BrowserBasedTodosResponse_GroupType_GroupType_MAX =
    static_cast<BrowserBasedTodosResponse_GroupType>(4);
inline bool BrowserBasedTodosResponse_GroupType_IsValid(int value) {
  return 0 <= value && value <= 4;
}
inline constexpr int BrowserBasedTodosResponse_GroupType_GroupType_ARRAYSIZE = 4 + 1;
const ::std::string& BrowserBasedTodosResponse_GroupType_Name(BrowserBasedTodosResponse_GroupType value);
template <typename T>
const ::std::string& BrowserBasedTodosResponse_GroupType_Name(T value) {
  static_assert(::std::is_same<T, BrowserBasedTodosResponse_GroupType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to GroupType_Name().");
  return BrowserBasedTodosResponse_GroupType_Name(static_cast<BrowserBasedTodosResponse_GroupType>(value));
}
bool BrowserBasedTodosResponse_GroupType_Parse(
    ::absl::string_view name, BrowserBasedTodosResponse_GroupType* PROTOBUF_NONNULL value);
enum ContextHubRequestType : int {
  CONTEXT_HUB_REQUEST_TYPE_UNSPECIFIED = 0,
  CONTEXT_HUB_REQUEST_TYPE_GROUPING = 1,
  CONTEXT_HUB_REQUEST_TYPE_MEMORY_BANK_CHAT = 2,
  CONTEXT_HUB_REQUEST_TYPE_BROWSER_BASED_TODOS = 3,
  CONTEXT_HUB_REQUEST_TYPE_AUTO_TODOS_DEDUPLICATION = 4,
  ContextHubRequestType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ContextHubRequestType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t ContextHubRequestType_internal_data_[];
inline constexpr ContextHubRequestType ContextHubRequestType_MIN =
    static_cast<ContextHubRequestType>(0);
inline constexpr ContextHubRequestType ContextHubRequestType_MAX =
    static_cast<ContextHubRequestType>(4);
inline bool ContextHubRequestType_IsValid(int value) {
  return 0 <= value && value <= 4;
}
inline constexpr int ContextHubRequestType_ARRAYSIZE = 4 + 1;
const ::std::string& ContextHubRequestType_Name(ContextHubRequestType value);
template <typename T>
const ::std::string& ContextHubRequestType_Name(T value) {
  static_assert(::std::is_same<T, ContextHubRequestType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ContextHubRequestType_Name().");
  return ContextHubRequestType_Name(static_cast<ContextHubRequestType>(value));
}
bool ContextHubRequestType_Parse(
    ::absl::string_view name, ContextHubRequestType* PROTOBUF_NONNULL value);
enum MemoryBankType : int {
  MEMORY_BANK_TYPE_UNSPECIFIED = 0,
  MEMORY_BANK_TYPE_TAB = 1,
  MEMORY_BANK_TYPE_TEXT_SELECTION = 2,
  MemoryBankType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  MemoryBankType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t MemoryBankType_internal_data_[];
inline constexpr MemoryBankType MemoryBankType_MIN =
    static_cast<MemoryBankType>(0);
inline constexpr MemoryBankType MemoryBankType_MAX =
    static_cast<MemoryBankType>(2);
inline bool MemoryBankType_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int MemoryBankType_ARRAYSIZE = 2 + 1;
const ::std::string& MemoryBankType_Name(MemoryBankType value);
template <typename T>
const ::std::string& MemoryBankType_Name(T value) {
  static_assert(::std::is_same<T, MemoryBankType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to MemoryBankType_Name().");
  return MemoryBankType_Name(static_cast<MemoryBankType>(value));
}
bool MemoryBankType_Parse(
    ::absl::string_view name, MemoryBankType* PROTOBUF_NONNULL value);
using ::google::protobuf::internal::generated_enum::AbslParseFlag;
using ::google::protobuf::internal::generated_enum::AbslUnparseFlag;

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


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

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

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

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

  inline MemoryBankEntry(const MemoryBankEntry& from) : MemoryBankEntry(nullptr, from) {}
  inline MemoryBankEntry(MemoryBankEntry&& from) noexcept : MemoryBankEntry(nullptr, ::std::move(from)) {}
  inline MemoryBankEntry& operator=(const MemoryBankEntry& from) {
    CopyFrom(from);
    return *this;
  }
  inline MemoryBankEntry& operator=(MemoryBankEntry&& 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 MemoryBankEntry& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<MemoryBankEntry>(&MemoryBankEntry_globals_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(MemoryBankEntry& a, MemoryBankEntry& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(MemoryBankEntry* 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(MemoryBankEntry* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  MemoryBankEntry* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<MemoryBankEntry>(arena);
  }
  void CopyFrom(const MemoryBankEntry& from);
  void MergeFrom(const MemoryBankEntry& from) { MemoryBankEntry::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(MemoryBankEntry* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.MemoryBankEntry"; }

  explicit MemoryBankEntry(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MemoryBankEntry(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MemoryBankEntry& from);
  MemoryBankEntry(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MemoryBankEntry&& from) noexcept
      : MemoryBankEntry(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 {
    kTagsFieldNumber = 7,
    kUrlFieldNumber = 4,
    kTabTitleFieldNumber = 5,
    kSelectedTextFieldNumber = 6,
    kIdFieldNumber = 1,
    kTimestampMsFieldNumber = 3,
    kTypeFieldNumber = 2,
  };
  // repeated string tags = 7;
  int tags_size()
      const;
  private:
  int _internal_tags_size() const;

  public:
  void clear_tags() ;
  const ::std::string& tags(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_tags(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_tags(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_tags();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_tags(Arg_&& value, Args_... args);
  const
      ::google::protobuf::RepeatedPtrField<::std::string>&
      tags() const;
  ::google::protobuf::RepeatedPtrField<::std::string>*
      PROTOBUF_NONNULL
      mutable_tags();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_tags() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_tags();

  public:
  // string url = 4 [features = {
  bool has_url()
      const;
  void clear_url() ;
  const ::std::string& url() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_url(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_url();
  ::std::string* PROTOBUF_NULLABLE release_url();
  void set_allocated_url(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_url() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_url(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_url();

  public:
  // string tab_title = 5 [features = {
  bool has_tab_title()
      const;
  void clear_tab_title() ;
  const ::std::string& tab_title() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_tab_title(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_tab_title();
  ::std::string* PROTOBUF_NULLABLE release_tab_title();
  void set_allocated_tab_title(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_tab_title() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_tab_title(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_tab_title();

  public:
  // string selected_text = 6 [features = {
  bool has_selected_text()
      const;
  void clear_selected_text() ;
  const ::std::string& selected_text() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_selected_text(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_selected_text();
  ::std::string* PROTOBUF_NULLABLE release_selected_text();
  void set_allocated_selected_text(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_selected_text() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_selected_text(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_selected_text();

  public:
  // int64 id = 1 [features = {
  bool has_id()
      const;
  void clear_id() ;
  ::int64_t id() const;
  void set_id(::int64_t value);

  private:
  ::int64_t _internal_id() const;
  void _internal_set_id(::int64_t value);

  public:
  // int64 timestamp_ms = 3 [features = {
  bool has_timestamp_ms()
      const;
  void clear_timestamp_ms() ;
  ::int64_t timestamp_ms() const;
  void set_timestamp_ms(::int64_t value);

  private:
  ::int64_t _internal_timestamp_ms() const;
  void _internal_set_timestamp_ms(::int64_t value);

  public:
  // .optimization_guide.proto.MemoryBankType type = 2 [features = {
  bool has_type()
      const;
  void clear_type() ;
  ::optimization_guide::proto::MemoryBankType type() const;
  void set_type(::optimization_guide::proto::MemoryBankType value);

  private:
  ::optimization_guide::proto::MemoryBankType _internal_type() const;
  void _internal_set_type(::optimization_guide::proto::MemoryBankType value);

  public:
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.MemoryBankEntry)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 7,
                          0, 78,
                          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 MemoryBankEntry& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> tags_;
    ::google::protobuf::internal::ArenaStringPtr url_;
    ::google::protobuf::internal::ArenaStringPtr tab_title_;
    ::google::protobuf::internal::ArenaStringPtr selected_text_;
    ::int64_t id_;
    ::int64_t timestamp_ms_;
    int type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};
// -------------------------------------------------------------------

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

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

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

  inline MemoryBankChatResponse(const MemoryBankChatResponse& from) : MemoryBankChatResponse(nullptr, from) {}
  inline MemoryBankChatResponse(MemoryBankChatResponse&& from) noexcept : MemoryBankChatResponse(nullptr, ::std::move(from)) {}
  inline MemoryBankChatResponse& operator=(const MemoryBankChatResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline MemoryBankChatResponse& operator=(MemoryBankChatResponse&& 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 MemoryBankChatResponse& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<MemoryBankChatResponse>(&MemoryBankChatResponse_globals_);
  }
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(MemoryBankChatResponse& a, MemoryBankChatResponse& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(MemoryBankChatResponse* 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(MemoryBankChatResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  MemoryBankChatResponse* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<MemoryBankChatResponse>(arena);
  }
  void CopyFrom(const MemoryBankChatResponse& from);
  void MergeFrom(const MemoryBankChatResponse& from) { MemoryBankChatResponse::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(MemoryBankChatResponse* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.MemoryBankChatResponse"; }

  explicit MemoryBankChatResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MemoryBankChatResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MemoryBankChatResponse& from);
  MemoryBankChatResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MemoryBankChatResponse&& from) noexcept
      : MemoryBankChatResponse(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 {
    kTextResponseFieldNumber = 1,
  };
  // string text_response = 1 [features = {
  bool has_text_response()
      const;
  void clear_text_response() ;
  const ::std::string& text_response() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_text_response(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_text_response();
  ::std::string* PROTOBUF_NULLABLE release_text_response();
  void set_allocated_text_response(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_text_response() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_text_response(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_text_response();

  public:
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.MemoryBankChatResponse)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 69,
                          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 MemoryBankChatResponse& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr text_response_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};
// -------------------------------------------------------------------

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

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

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

  inline ContextHubAutoTodoItem(const ContextHubAutoTodoItem& from) : ContextHubAutoTodoItem(nullptr, from) {}
  inline ContextHubAutoTodoItem(ContextHubAutoTodoItem&& from) noexcept : ContextHubAutoTodoItem(nullptr, ::std::move(from)) {}
  inline ContextHubAutoTodoItem& operator=(const ContextHubAutoTodoItem& from) {
    CopyFrom(from);
    return *this;
  }
  inline ContextHubAutoTodoItem& operator=(ContextHubAutoTodoItem&& 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 ContextHubAutoTodoItem& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ContextHubAutoTodoItem>(&ContextHubAutoTodoItem_globals_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(ContextHubAutoTodoItem& a, ContextHubAutoTodoItem& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ContextHubAutoTodoItem* 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(ContextHubAutoTodoItem* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ContextHubAutoTodoItem* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ContextHubAutoTodoItem>(arena);
  }
  void CopyFrom(const ContextHubAutoTodoItem& from);
  void MergeFrom(const ContextHubAutoTodoItem& from) { ContextHubAutoTodoItem::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(ContextHubAutoTodoItem* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.ContextHubAutoTodoItem"; }

  explicit ContextHubAutoTodoItem(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ContextHubAutoTodoItem(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ContextHubAutoTodoItem& from);
  ContextHubAutoTodoItem(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ContextHubAutoTodoItem&& from) noexcept
      : ContextHubAutoTodoItem(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 Status = ContextHubAutoTodoItem_Status;
  static constexpr Status STATUS_UNSPECIFIED = ContextHubAutoTodoItem_Status_STATUS_UNSPECIFIED;
  static constexpr Status STATUS_ACTIVE = ContextHubAutoTodoItem_Status_STATUS_ACTIVE;
  static constexpr Status STATUS_COMPLETED = ContextHubAutoTodoItem_Status_STATUS_COMPLETED;
  static constexpr Status STATUS_DISMISSED = ContextHubAutoTodoItem_Status_STATUS_DISMISSED;
  static inline bool Status_IsValid(int value) {
    return ContextHubAutoTodoItem_Status_IsValid(value);
  }
  static constexpr Status Status_MIN = ContextHubAutoTodoItem_Status_Status_MIN;
  static constexpr Status Status_MAX = ContextHubAutoTodoItem_Status_Status_MAX;
  static constexpr int Status_ARRAYSIZE = ContextHubAutoTodoItem_Status_Status_ARRAYSIZE;
  template <typename T>
  static inline const ::std::string& Status_Name(T value) {
    return ContextHubAutoTodoItem_Status_Name(value);
  }
  static inline bool Status_Parse(
      ::absl::string_view name, Status* PROTOBUF_NONNULL value) {
    return ContextHubAutoTodoItem_Status_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kTodoIdsMergedsFieldNumber = 7,
    kTitleFieldNumber = 1,
    kDescriptionFieldNumber = 2,
    kActionableUrlFieldNumber = 3,
    kIdFieldNumber = 6,
    kImportanceScoreFieldNumber = 4,
    kStatusFieldNumber = 5,
  };
  // repeated string todo_ids_mergeds = 7;
  int todo_ids_mergeds_size()
      const;
  private:
  int _internal_todo_ids_mergeds_size() const;

  public:
  void clear_todo_ids_mergeds() ;
  const ::std::string& todo_ids_mergeds(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_todo_ids_mergeds(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_todo_ids_mergeds(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_todo_ids_mergeds();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_todo_ids_mergeds(Arg_&& value, Args_... args);
  const
      ::google::protobuf::RepeatedPtrField<::std::string>&
      todo_ids_mergeds() const;
  ::google::protobuf::RepeatedPtrField<::std::string>*
      PROTOBUF_NONNULL
      mutable_todo_ids_mergeds();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_todo_ids_mergeds() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_todo_ids_mergeds();

  public:
  // string title = 1 [features = {
  bool has_title()
      const;
  void clear_title() ;
  const ::std::string& title() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_title(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_title();
  ::std::string* PROTOBUF_NULLABLE release_title();
  void set_allocated_title(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_title() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_title(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_title();

  public:
  // string description = 2 [features = {
  bool has_description()
      const;
  void clear_description() ;
  const ::std::string& description() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_description(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_description();
  ::std::string* PROTOBUF_NULLABLE release_description();
  void set_allocated_description(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_description() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_description(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_description();

  public:
  // string actionable_url = 3 [features = {
  bool has_actionable_url()
      const;
  void clear_actionable_url() ;
  const ::std::string& actionable_url() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_actionable_url(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_actionable_url();
  ::std::string* PROTOBUF_NULLABLE release_actionable_url();
  void set_allocated_actionable_url(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_actionable_url() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_actionable_url(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_actionable_url();

  public:
  // string id = 6 [features = {
  bool has_id()
      const;
  void clear_id() ;
  const ::std::string& id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_id();
  ::std::string* PROTOBUF_NULLABLE release_id();
  void set_allocated_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_id();

  public:
  // float importance_score = 4 [features = {
  bool has_importance_score()
      const;
  void clear_importance_score() ;
  float importance_score() const;
  void set_importance_score(float value);

  private:
  float _internal_importance_score() const;
  void _internal_set_importance_score(float value);

  public:
  // .optimization_guide.proto.ContextHubAutoTodoItem.Status status = 5 [features = {
  bool has_status()
      const;
  void clear_status() ;
  ::optimization_guide::proto::ContextHubAutoTodoItem_Status status() const;
  void set_status(::optimization_guide::proto::ContextHubAutoTodoItem_Status value);

  private:
  ::optimization_guide::proto::ContextHubAutoTodoItem_Status _internal_status() const;
  void _internal_set_status(::optimization_guide::proto::ContextHubAutoTodoItem_Status value);

  public:
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.ContextHubAutoTodoItem)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 7,
                          0, 104,
                          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 ContextHubAutoTodoItem& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> todo_ids_mergeds_;
    ::google::protobuf::internal::ArenaStringPtr title_;
    ::google::protobuf::internal::ArenaStringPtr description_;
    ::google::protobuf::internal::ArenaStringPtr actionable_url_;
    ::google::protobuf::internal::ArenaStringPtr id_;
    float importance_score_;
    int status_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};
// -------------------------------------------------------------------

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

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

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

  inline ChatHistoryTurn(const ChatHistoryTurn& from) : ChatHistoryTurn(nullptr, from) {}
  inline ChatHistoryTurn(ChatHistoryTurn&& from) noexcept : ChatHistoryTurn(nullptr, ::std::move(from)) {}
  inline ChatHistoryTurn& operator=(const ChatHistoryTurn& from) {
    CopyFrom(from);
    return *this;
  }
  inline ChatHistoryTurn& operator=(ChatHistoryTurn&& 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 ChatHistoryTurn& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ChatHistoryTurn>(&ChatHistoryTurn_globals_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(ChatHistoryTurn& a, ChatHistoryTurn& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ChatHistoryTurn* 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(ChatHistoryTurn* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ChatHistoryTurn* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ChatHistoryTurn>(arena);
  }
  void CopyFrom(const ChatHistoryTurn& from);
  void MergeFrom(const ChatHistoryTurn& from) { ChatHistoryTurn::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(ChatHistoryTurn* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.ChatHistoryTurn"; }

  explicit ChatHistoryTurn(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ChatHistoryTurn(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ChatHistoryTurn& from);
  ChatHistoryTurn(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ChatHistoryTurn&& from) noexcept
      : ChatHistoryTurn(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 Role = ChatHistoryTurn_Role;
  static constexpr Role ROLE_UNSPECIFIED = ChatHistoryTurn_Role_ROLE_UNSPECIFIED;
  static constexpr Role ROLE_USER = ChatHistoryTurn_Role_ROLE_USER;
  static constexpr Role ROLE_ASSISTANT = ChatHistoryTurn_Role_ROLE_ASSISTANT;
  static inline bool Role_IsValid(int value) {
    return ChatHistoryTurn_Role_IsValid(value);
  }
  static constexpr Role Role_MIN = ChatHistoryTurn_Role_Role_MIN;
  static constexpr Role Role_MAX = ChatHistoryTurn_Role_Role_MAX;
  static constexpr int Role_ARRAYSIZE = ChatHistoryTurn_Role_Role_ARRAYSIZE;
  template <typename T>
  static inline const ::std::string& Role_Name(T value) {
    return ChatHistoryTurn_Role_Name(value);
  }
  static inline bool Role_Parse(
      ::absl::string_view name, Role* PROTOBUF_NONNULL value) {
    return ChatHistoryTurn_Role_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kMessageContentFieldNumber = 2,
    kTimestampMsFieldNumber = 3,
    kRoleFieldNumber = 1,
  };
  // string message_content = 2 [features = {
  bool has_message_content()
      const;
  void clear_message_content() ;
  const ::std::string& message_content() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_message_content(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_message_content();
  ::std::string* PROTOBUF_NULLABLE release_message_content();
  void set_allocated_message_content(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_message_content() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_message_content(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_message_content();

  public:
  // int64 timestamp_ms = 3 [features = {
  bool has_timestamp_ms()
      const;
  void clear_timestamp_ms() ;
  ::int64_t timestamp_ms() const;
  void set_timestamp_ms(::int64_t value);

  private:
  ::int64_t _internal_timestamp_ms() const;
  void _internal_set_timestamp_ms(::int64_t value);

  public:
  // .optimization_guide.proto.ChatHistoryTurn.Role role = 1 [features = {
  bool has_role()
      const;
  void clear_role() ;
  ::optimization_guide::proto::ChatHistoryTurn_Role role() const;
  void set_role(::optimization_guide::proto::ChatHistoryTurn_Role value);

  private:
  ::optimization_guide::proto::ChatHistoryTurn_Role _internal_role() const;
  void _internal_set_role(::optimization_guide::proto::ChatHistoryTurn_Role value);

  public:
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.ChatHistoryTurn)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 64,
                          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 ChatHistoryTurn& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr message_content_;
    ::int64_t timestamp_ms_;
    int role_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};
// -------------------------------------------------------------------

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

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

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

  inline BrowserBasedTodosResponse(const BrowserBasedTodosResponse& from) : BrowserBasedTodosResponse(nullptr, from) {}
  inline BrowserBasedTodosResponse(BrowserBasedTodosResponse&& from) noexcept : BrowserBasedTodosResponse(nullptr, ::std::move(from)) {}
  inline BrowserBasedTodosResponse& operator=(const BrowserBasedTodosResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline BrowserBasedTodosResponse& operator=(BrowserBasedTodosResponse&& 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 BrowserBasedTodosResponse& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<BrowserBasedTodosResponse>(&BrowserBasedTodosResponse_globals_);
  }
  static constexpr int kIndexInFileMessages = 10;
  friend void swap(BrowserBasedTodosResponse& a, BrowserBasedTodosResponse& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(BrowserBasedTodosResponse* 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(BrowserBasedTodosResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  BrowserBasedTodosResponse* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<BrowserBasedTodosResponse>(arena);
  }
  void CopyFrom(const BrowserBasedTodosResponse& from);
  void MergeFrom(const BrowserBasedTodosResponse& from) { BrowserBasedTodosResponse::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(BrowserBasedTodosResponse* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.BrowserBasedTodosResponse"; }

  explicit BrowserBasedTodosResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  BrowserBasedTodosResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const BrowserBasedTodosResponse& from);
  BrowserBasedTodosResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, BrowserBasedTodosResponse&& from) noexcept
      : BrowserBasedTodosResponse(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 GroupType = BrowserBasedTodosResponse_GroupType;
  static constexpr GroupType GROUP_TYPE_UNSPECIFIED = BrowserBasedTodosResponse_GroupType_GROUP_TYPE_UNSPECIFIED;
  static constexpr GroupType GROUP_TYPE_READING_LIST = BrowserBasedTodosResponse_GroupType_GROUP_TYPE_READING_LIST;
  static constexpr GroupType GROUP_TYPE_NUDGE_TO_CLOSE = BrowserBasedTodosResponse_GroupType_GROUP_TYPE_NUDGE_TO_CLOSE;
  static constexpr GroupType GROUP_TYPE_UNFINISHED = BrowserBasedTodosResponse_GroupType_GROUP_TYPE_UNFINISHED;
  static constexpr GroupType GROUP_TYPE_SHOPPING_CART = BrowserBasedTodosResponse_GroupType_GROUP_TYPE_SHOPPING_CART;
  static inline bool GroupType_IsValid(int value) {
    return BrowserBasedTodosResponse_GroupType_IsValid(value);
  }
  static constexpr GroupType GroupType_MIN = BrowserBasedTodosResponse_GroupType_GroupType_MIN;
  static constexpr GroupType GroupType_MAX = BrowserBasedTodosResponse_GroupType_GroupType_MAX;
  static constexpr int GroupType_ARRAYSIZE = BrowserBasedTodosResponse_GroupType_GroupType_ARRAYSIZE;
  template <typename T>
  static inline const ::std::string& GroupType_Name(T value) {
    return BrowserBasedTodosResponse_GroupType_Name(value);
  }
  static inline bool GroupType_Parse(
      ::absl::string_view name, GroupType* PROTOBUF_NONNULL value) {
    return BrowserBasedTodosResponse_GroupType_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kTodoTitleFieldNumber = 3,
    kTodoDescriptionFieldNumber = 4,
    kTabIdFieldNumber = 1,
    kGroupTypeFieldNumber = 2,
  };
  // string todo_title = 3 [features = {
  bool has_todo_title()
      const;
  void clear_todo_title() ;
  const ::std::string& todo_title() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_todo_title(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_todo_title();
  ::std::string* PROTOBUF_NULLABLE release_todo_title();
  void set_allocated_todo_title(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_todo_title() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_todo_title(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_todo_title();

  public:
  // string todo_description = 4 [features = {
  bool has_todo_description()
      const;
  void clear_todo_description() ;
  const ::std::string& todo_description() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_todo_description(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_todo_description();
  ::std::string* PROTOBUF_NULLABLE release_todo_description();
  void set_allocated_todo_description(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_todo_description() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_todo_description(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_todo_description();

  public:
  // int64 tab_id = 1 [features = {
  bool has_tab_id()
      const;
  void clear_tab_id() ;
  ::int64_t tab_id() const;
  void set_tab_id(::int64_t value);

  private:
  ::int64_t _internal_tab_id() const;
  void _internal_set_tab_id(::int64_t value);

  public:
  // .optimization_guide.proto.BrowserBasedTodosResponse.GroupType group_type = 2 [features = {
  bool has_group_type()
      const;
  void clear_group_type() ;
  ::optimization_guide::proto::BrowserBasedTodosResponse_GroupType group_type() const;
  void set_group_type(::optimization_guide::proto::BrowserBasedTodosResponse_GroupType value);

  private:
  ::optimization_guide::proto::BrowserBasedTodosResponse_GroupType _internal_group_type() const;
  void _internal_set_group_type(::optimization_guide::proto::BrowserBasedTodosResponse_GroupType value);

  public:
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.BrowserBasedTodosResponse)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 85,
                          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 BrowserBasedTodosResponse& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr todo_title_;
    ::google::protobuf::internal::ArenaStringPtr todo_description_;
    ::int64_t tab_id_;
    int group_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};
// -------------------------------------------------------------------

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

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

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

  inline AutoTodosDeduplicationResponse(const AutoTodosDeduplicationResponse& from) : AutoTodosDeduplicationResponse(nullptr, from) {}
  inline AutoTodosDeduplicationResponse(AutoTodosDeduplicationResponse&& from) noexcept : AutoTodosDeduplicationResponse(nullptr, ::std::move(from)) {}
  inline AutoTodosDeduplicationResponse& operator=(const AutoTodosDeduplicationResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline AutoTodosDeduplicationResponse& operator=(AutoTodosDeduplicationResponse&& 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 AutoTodosDeduplicationResponse& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<AutoTodosDeduplicationResponse>(&AutoTodosDeduplicationResponse_globals_);
  }
  static constexpr int kIndexInFileMessages = 11;
  friend void swap(AutoTodosDeduplicationResponse& a, AutoTodosDeduplicationResponse& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(AutoTodosDeduplicationResponse* 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(AutoTodosDeduplicationResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  AutoTodosDeduplicationResponse* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<AutoTodosDeduplicationResponse>(arena);
  }
  void CopyFrom(const AutoTodosDeduplicationResponse& from);
  void MergeFrom(const AutoTodosDeduplicationResponse& from) { AutoTodosDeduplicationResponse::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(AutoTodosDeduplicationResponse* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.AutoTodosDeduplicationResponse"; }

  explicit AutoTodosDeduplicationResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AutoTodosDeduplicationResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AutoTodosDeduplicationResponse& from);
  AutoTodosDeduplicationResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AutoTodosDeduplicationResponse&& from) noexcept
      : AutoTodosDeduplicationResponse(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 {
    kDeduplicatedTodosFieldNumber = 1,
  };
  // repeated .optimization_guide.proto.ContextHubAutoTodoItem deduplicated_todos = 1;
  int deduplicated_todos_size()
      const;
  private:
  int _internal_deduplicated_todos_size() const;

  public:
  void clear_deduplicated_todos() ;
  const ::optimization_guide::proto::ContextHubAutoTodoItem& deduplicated_todos(int index) const;
  ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL mutable_deduplicated_todos(int index);
  ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL add_deduplicated_todos();
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>&
  deduplicated_todos() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL
  mutable_deduplicated_todos();

  private:
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>& _internal_deduplicated_todos() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL _internal_mutable_deduplicated_todos();

  public:
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.AutoTodosDeduplicationResponse)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 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 AutoTodosDeduplicationResponse& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::optimization_guide::proto::ContextHubAutoTodoItem > deduplicated_todos_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};
// -------------------------------------------------------------------

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

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

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

  inline AutoTodosDeduplicationRequest(const AutoTodosDeduplicationRequest& from) : AutoTodosDeduplicationRequest(nullptr, from) {}
  inline AutoTodosDeduplicationRequest(AutoTodosDeduplicationRequest&& from) noexcept : AutoTodosDeduplicationRequest(nullptr, ::std::move(from)) {}
  inline AutoTodosDeduplicationRequest& operator=(const AutoTodosDeduplicationRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline AutoTodosDeduplicationRequest& operator=(AutoTodosDeduplicationRequest&& 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 AutoTodosDeduplicationRequest& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<AutoTodosDeduplicationRequest>(&AutoTodosDeduplicationRequest_globals_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(AutoTodosDeduplicationRequest& a, AutoTodosDeduplicationRequest& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(AutoTodosDeduplicationRequest* 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(AutoTodosDeduplicationRequest* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  AutoTodosDeduplicationRequest* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<AutoTodosDeduplicationRequest>(arena);
  }
  void CopyFrom(const AutoTodosDeduplicationRequest& from);
  void MergeFrom(const AutoTodosDeduplicationRequest& from) { AutoTodosDeduplicationRequest::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(AutoTodosDeduplicationRequest* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.AutoTodosDeduplicationRequest"; }

  explicit AutoTodosDeduplicationRequest(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AutoTodosDeduplicationRequest(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AutoTodosDeduplicationRequest& from);
  AutoTodosDeduplicationRequest(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AutoTodosDeduplicationRequest&& from) noexcept
      : AutoTodosDeduplicationRequest(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 {
    kExistingTodosFieldNumber = 1,
    kNewTodosFieldNumber = 2,
  };
  // repeated .optimization_guide.proto.ContextHubAutoTodoItem existing_todos = 1;
  int existing_todos_size()
      const;
  private:
  int _internal_existing_todos_size() const;

  public:
  void clear_existing_todos() ;
  const ::optimization_guide::proto::ContextHubAutoTodoItem& existing_todos(int index) const;
  ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL mutable_existing_todos(int index);
  ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL add_existing_todos();
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>&
  existing_todos() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL
  mutable_existing_todos();

  private:
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>& _internal_existing_todos() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL _internal_mutable_existing_todos();

  public:
  // repeated .optimization_guide.proto.ContextHubAutoTodoItem new_todos = 2;
  int new_todos_size()
      const;
  private:
  int _internal_new_todos_size() const;

  public:
  void clear_new_todos() ;
  const ::optimization_guide::proto::ContextHubAutoTodoItem& new_todos(int index) const;
  ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL mutable_new_todos(int index);
  ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL add_new_todos();
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>&
  new_todos() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL
  mutable_new_todos();

  private:
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>& _internal_new_todos() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL _internal_mutable_new_todos();

  public:
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.AutoTodosDeduplicationRequest)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          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 AutoTodosDeduplicationRequest& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::optimization_guide::proto::ContextHubAutoTodoItem > existing_todos_;
    ::google::protobuf::RepeatedPtrField< ::optimization_guide::proto::ContextHubAutoTodoItem > new_todos_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};
// -------------------------------------------------------------------

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

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

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

  inline EntryItem(const EntryItem& from) : EntryItem(nullptr, from) {}
  inline EntryItem(EntryItem&& from) noexcept : EntryItem(nullptr, ::std::move(from)) {}
  inline EntryItem& operator=(const EntryItem& from) {
    CopyFrom(from);
    return *this;
  }
  inline EntryItem& operator=(EntryItem&& 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 EntryItem& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EntryItem>(&EntryItem_globals_);
  }
  enum ItemCase {
    kTab = 1,
    kMemoryBankEntry = 2,
    ITEM_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(EntryItem& a, EntryItem& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(EntryItem* 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(EntryItem* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  EntryItem* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<EntryItem>(arena);
  }
  void CopyFrom(const EntryItem& from);
  void MergeFrom(const EntryItem& from) { EntryItem::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(EntryItem* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.EntryItem"; }

  explicit EntryItem(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EntryItem(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EntryItem& from);
  EntryItem(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EntryItem&& from) noexcept
      : EntryItem(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 {
    kTabFieldNumber = 1,
    kMemoryBankEntryFieldNumber = 2,
  };
  // .optimization_guide.proto.Tab tab = 1;
  bool has_tab()
      const;
  private:
  bool _internal_has_tab() const;

  public:
  void clear_tab() ;
  const ::optimization_guide::proto::Tab& tab() const;
  ::optimization_guide::proto::Tab* PROTOBUF_NULLABLE release_tab();
  ::optimization_guide::proto::Tab* PROTOBUF_NONNULL mutable_tab();
  void set_allocated_tab(::optimization_guide::proto::Tab* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_tab(::optimization_guide::proto::Tab* PROTOBUF_NULLABLE value);
  ::optimization_guide::proto::Tab* PROTOBUF_NULLABLE unsafe_arena_release_tab();

  private:
  const ::optimization_guide::proto::Tab& _internal_tab() const;
  ::optimization_guide::proto::Tab* PROTOBUF_NONNULL _internal_mutable_tab();

  public:
  // .optimization_guide.proto.MemoryBankEntry memory_bank_entry = 2;
  bool has_memory_bank_entry()
      const;
  private:
  bool _internal_has_memory_bank_entry() const;

  public:
  void clear_memory_bank_entry() ;
  const ::optimization_guide::proto::MemoryBankEntry& memory_bank_entry() const;
  ::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NULLABLE release_memory_bank_entry();
  ::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NONNULL mutable_memory_bank_entry();
  void set_allocated_memory_bank_entry(::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_memory_bank_entry(::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NULLABLE value);
  ::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NULLABLE unsafe_arena_release_memory_bank_entry();

  private:
  const ::optimization_guide::proto::MemoryBankEntry& _internal_memory_bank_entry() const;
  ::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NONNULL _internal_mutable_memory_bank_entry();

  public:
  void clear_item();
  ItemCase item_case() const;
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.EntryItem)
 private:
  class _Internal;
  void set_has_tab();
  void set_has_memory_bank_entry();
  inline bool has_item() const;
  inline void clear_has_item();
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 2,
                          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 EntryItem& from_msg);
    union ItemUnion {
      constexpr ItemUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::optimization_guide::proto::Tab* PROTOBUF_NULLABLE tab_;
      ::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NULLABLE memory_bank_entry_;
    } item_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};
// -------------------------------------------------------------------

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

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

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

  inline GroupResponse(const GroupResponse& from) : GroupResponse(nullptr, from) {}
  inline GroupResponse(GroupResponse&& from) noexcept : GroupResponse(nullptr, ::std::move(from)) {}
  inline GroupResponse& operator=(const GroupResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GroupResponse& operator=(GroupResponse&& 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 GroupResponse& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<GroupResponse>(&GroupResponse_globals_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(GroupResponse& a, GroupResponse& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(GroupResponse* 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(GroupResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GroupResponse* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<GroupResponse>(arena);
  }
  void CopyFrom(const GroupResponse& from);
  void MergeFrom(const GroupResponse& from) { GroupResponse::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(GroupResponse* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.GroupResponse"; }

  explicit GroupResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  GroupResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GroupResponse& from);
  GroupResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, GroupResponse&& from) noexcept
      : GroupResponse(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 {
    kTabGroupsFieldNumber = 1,
    kMinimalTabGroupsFieldNumber = 2,
    kUngroupedTabIdsFieldNumber = 3,
    kTextResponseFieldNumber = 4,
  };
  // repeated .optimization_guide.proto.TabGroup tab_groups = 1;
  int tab_groups_size()
      const;
  private:
  int _internal_tab_groups_size() const;

  public:
  void clear_tab_groups() ;
  const ::optimization_guide::proto::TabGroup& tab_groups(int index) const;
  ::optimization_guide::proto::TabGroup* PROTOBUF_NONNULL mutable_tab_groups(int index);
  ::optimization_guide::proto::TabGroup* PROTOBUF_NONNULL add_tab_groups();
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroup>&
  tab_groups() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroup>* PROTOBUF_NONNULL
  mutable_tab_groups();

  private:
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroup>& _internal_tab_groups() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroup>* PROTOBUF_NONNULL _internal_mutable_tab_groups();

  public:
  // repeated .optimization_guide.proto.TabGroupMinimal minimal_tab_groups = 2;
  int minimal_tab_groups_size()
      const;
  private:
  int _internal_minimal_tab_groups_size() const;

  public:
  void clear_minimal_tab_groups() ;
  const ::optimization_guide::proto::TabGroupMinimal& minimal_tab_groups(int index) const;
  ::optimization_guide::proto::TabGroupMinimal* PROTOBUF_NONNULL mutable_minimal_tab_groups(int index);
  ::optimization_guide::proto::TabGroupMinimal* PROTOBUF_NONNULL add_minimal_tab_groups();
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>&
  minimal_tab_groups() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>* PROTOBUF_NONNULL
  mutable_minimal_tab_groups();

  private:
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>& _internal_minimal_tab_groups() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>* PROTOBUF_NONNULL _internal_mutable_minimal_tab_groups();

  public:
  // repeated int64 ungrouped_tab_ids = 3;
  int ungrouped_tab_ids_size()
      const;
  private:
  int _internal_ungrouped_tab_ids_size() const;

  public:
  void clear_ungrouped_tab_ids() ;
  ::int64_t ungrouped_tab_ids(int index) const;
  void set_ungrouped_tab_ids(int index, ::int64_t value);
  void add_ungrouped_tab_ids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& ungrouped_tab_ids()
      const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_ungrouped_tab_ids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_ungrouped_tab_ids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_ungrouped_tab_ids();

  public:
  // string text_response = 4 [features = {
  bool has_text_response()
      const;
  void clear_text_response() ;
  const ::std::string& text_response() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_text_response(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_text_response();
  ::std::string* PROTOBUF_NULLABLE release_text_response();
  void set_allocated_text_response(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_text_response() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_text_response(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_text_response();

  public:
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.GroupResponse)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          2, 60,
                          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 GroupResponse& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::optimization_guide::proto::TabGroup > tab_groups_;
    ::google::protobuf::RepeatedPtrField< ::optimization_guide::proto::TabGroupMinimal > minimal_tab_groups_;
    ::google::protobuf::RepeatedField<::int64_t> ungrouped_tab_ids_;
    ::google::protobuf::internal::CachedSize _ungrouped_tab_ids_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr text_response_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};
// -------------------------------------------------------------------

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

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

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

  inline ContextHubRequest(const ContextHubRequest& from) : ContextHubRequest(nullptr, from) {}
  inline ContextHubRequest(ContextHubRequest&& from) noexcept : ContextHubRequest(nullptr, ::std::move(from)) {}
  inline ContextHubRequest& operator=(const ContextHubRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline ContextHubRequest& operator=(ContextHubRequest&& 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 ContextHubRequest& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ContextHubRequest>(&ContextHubRequest_globals_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(ContextHubRequest& a, ContextHubRequest& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ContextHubRequest* 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(ContextHubRequest* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ContextHubRequest* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ContextHubRequest>(arena);
  }
  void CopyFrom(const ContextHubRequest& from);
  void MergeFrom(const ContextHubRequest& from) { ContextHubRequest::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(ContextHubRequest* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.ContextHubRequest"; }

  explicit ContextHubRequest(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ContextHubRequest(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ContextHubRequest& from);
  ContextHubRequest(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ContextHubRequest&& from) noexcept
      : ContextHubRequest(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 {
    kEntryItemsFieldNumber = 2,
    kPreExistingTabGroupsFieldNumber = 3,
    kChatHistoryFieldNumber = 5,
    kUserCommandFieldNumber = 4,
    kAutoTodosDeduplicationRequestFieldNumber = 6,
    kRequestTypeFieldNumber = 1,
  };
  // repeated .optimization_guide.proto.EntryItem entry_items = 2;
  int entry_items_size()
      const;
  private:
  int _internal_entry_items_size() const;

  public:
  void clear_entry_items() ;
  const ::optimization_guide::proto::EntryItem& entry_items(int index) const;
  ::optimization_guide::proto::EntryItem* PROTOBUF_NONNULL mutable_entry_items(int index);
  ::optimization_guide::proto::EntryItem* PROTOBUF_NONNULL add_entry_items();
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::EntryItem>&
  entry_items() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::EntryItem>* PROTOBUF_NONNULL
  mutable_entry_items();

  private:
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::EntryItem>& _internal_entry_items() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::EntryItem>* PROTOBUF_NONNULL _internal_mutable_entry_items();

  public:
  // repeated .optimization_guide.proto.TabGroupMinimal pre_existing_tab_groups = 3;
  int pre_existing_tab_groups_size()
      const;
  private:
  int _internal_pre_existing_tab_groups_size() const;

  public:
  void clear_pre_existing_tab_groups() ;
  const ::optimization_guide::proto::TabGroupMinimal& pre_existing_tab_groups(int index) const;
  ::optimization_guide::proto::TabGroupMinimal* PROTOBUF_NONNULL mutable_pre_existing_tab_groups(int index);
  ::optimization_guide::proto::TabGroupMinimal* PROTOBUF_NONNULL add_pre_existing_tab_groups();
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>&
  pre_existing_tab_groups() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>* PROTOBUF_NONNULL
  mutable_pre_existing_tab_groups();

  private:
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>& _internal_pre_existing_tab_groups() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>* PROTOBUF_NONNULL _internal_mutable_pre_existing_tab_groups();

  public:
  // repeated .optimization_guide.proto.ChatHistoryTurn chat_history = 5;
  int chat_history_size()
      const;
  private:
  int _internal_chat_history_size() const;

  public:
  void clear_chat_history() ;
  const ::optimization_guide::proto::ChatHistoryTurn& chat_history(int index) const;
  ::optimization_guide::proto::ChatHistoryTurn* PROTOBUF_NONNULL mutable_chat_history(int index);
  ::optimization_guide::proto::ChatHistoryTurn* PROTOBUF_NONNULL add_chat_history();
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ChatHistoryTurn>&
  chat_history() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ChatHistoryTurn>* PROTOBUF_NONNULL
  mutable_chat_history();

  private:
  const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ChatHistoryTurn>& _internal_chat_history() const;
  ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ChatHistoryTurn>* PROTOBUF_NONNULL _internal_mutable_chat_history();

  public:
  // string user_command = 4 [features = {
  bool has_user_command()
      const;
  void clear_user_command() ;
  const ::std::string& user_command() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_user_command(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_user_command();
  ::std::string* PROTOBUF_NULLABLE release_user_command();
  void set_allocated_user_command(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_user_command() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_user_command(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_user_command();

  public:
  // .optimization_guide.proto.AutoTodosDeduplicationRequest auto_todos_deduplication_request = 6 [features = {
  bool has_auto_todos_deduplication_request()
      const;
  void clear_auto_todos_deduplication_request() ;
  const ::optimization_guide::proto::AutoTodosDeduplicationRequest& auto_todos_deduplication_request() const;
  ::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NULLABLE release_auto_todos_deduplication_request();
  ::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NONNULL mutable_auto_todos_deduplication_request();
  void set_allocated_auto_todos_deduplication_request(::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_auto_todos_deduplication_request(::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NULLABLE value);
  ::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NULLABLE unsafe_arena_release_auto_todos_deduplication_request();

  private:
  const ::optimization_guide::proto::AutoTodosDeduplicationRequest& _internal_auto_todos_deduplication_request() const;
  ::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NONNULL _internal_mutable_auto_todos_deduplication_request();

  public:
  // .optimization_guide.proto.ContextHubRequestType request_type = 1 [features = {
  bool has_request_type()
      const;
  void clear_request_type() ;
  ::optimization_guide::proto::ContextHubRequestType request_type() const;
  void set_request_type(::optimization_guide::proto::ContextHubRequestType value);

  private:
  ::optimization_guide::proto::ContextHubRequestType _internal_request_type() const;
  void _internal_set_request_type(::optimization_guide::proto::ContextHubRequestType value);

  public:
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.ContextHubRequest)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 6,
                          4, 63,
                          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 ContextHubRequest& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::optimization_guide::proto::EntryItem > entry_items_;
    ::google::protobuf::RepeatedPtrField< ::optimization_guide::proto::TabGroupMinimal > pre_existing_tab_groups_;
    ::google::protobuf::RepeatedPtrField< ::optimization_guide::proto::ChatHistoryTurn > chat_history_;
    ::google::protobuf::internal::ArenaStringPtr user_command_;
    ::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NULLABLE auto_todos_deduplication_request_;
    int request_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};
// -------------------------------------------------------------------

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

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

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

  inline ContextHubResponse(const ContextHubResponse& from) : ContextHubResponse(nullptr, from) {}
  inline ContextHubResponse(ContextHubResponse&& from) noexcept : ContextHubResponse(nullptr, ::std::move(from)) {}
  inline ContextHubResponse& operator=(const ContextHubResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline ContextHubResponse& operator=(ContextHubResponse&& 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 ContextHubResponse& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ContextHubResponse>(&ContextHubResponse_globals_);
  }
  enum FeatureResponseCase {
    kGroupResponse = 1,
    kMemoryBankChatResponse = 2,
    kBrowserBasedTodosResponse = 3,
    kAutoTodosDeduplicationResponse = 4,
    FEATURE_RESPONSE_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(ContextHubResponse& a, ContextHubResponse& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ContextHubResponse* 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(ContextHubResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ContextHubResponse* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ContextHubResponse>(arena);
  }
  void CopyFrom(const ContextHubResponse& from);
  void MergeFrom(const ContextHubResponse& from) { ContextHubResponse::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(ContextHubResponse* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.ContextHubResponse"; }

  explicit ContextHubResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ContextHubResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ContextHubResponse& from);
  ContextHubResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ContextHubResponse&& from) noexcept
      : ContextHubResponse(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 {
    kGroupResponseFieldNumber = 1,
    kMemoryBankChatResponseFieldNumber = 2,
    kBrowserBasedTodosResponseFieldNumber = 3,
    kAutoTodosDeduplicationResponseFieldNumber = 4,
  };
  // .optimization_guide.proto.GroupResponse group_response = 1;
  bool has_group_response()
      const;
  private:
  bool _internal_has_group_response() const;

  public:
  void clear_group_response() ;
  const ::optimization_guide::proto::GroupResponse& group_response() const;
  ::optimization_guide::proto::GroupResponse* PROTOBUF_NULLABLE release_group_response();
  ::optimization_guide::proto::GroupResponse* PROTOBUF_NONNULL mutable_group_response();
  void set_allocated_group_response(::optimization_guide::proto::GroupResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_group_response(::optimization_guide::proto::GroupResponse* PROTOBUF_NULLABLE value);
  ::optimization_guide::proto::GroupResponse* PROTOBUF_NULLABLE unsafe_arena_release_group_response();

  private:
  const ::optimization_guide::proto::GroupResponse& _internal_group_response() const;
  ::optimization_guide::proto::GroupResponse* PROTOBUF_NONNULL _internal_mutable_group_response();

  public:
  // .optimization_guide.proto.MemoryBankChatResponse memory_bank_chat_response = 2;
  bool has_memory_bank_chat_response()
      const;
  private:
  bool _internal_has_memory_bank_chat_response() const;

  public:
  void clear_memory_bank_chat_response() ;
  const ::optimization_guide::proto::MemoryBankChatResponse& memory_bank_chat_response() const;
  ::optimization_guide::proto::MemoryBankChatResponse* PROTOBUF_NULLABLE release_memory_bank_chat_response();
  ::optimization_guide::proto::MemoryBankChatResponse* PROTOBUF_NONNULL mutable_memory_bank_chat_response();
  void set_allocated_memory_bank_chat_response(::optimization_guide::proto::MemoryBankChatResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_memory_bank_chat_response(::optimization_guide::proto::MemoryBankChatResponse* PROTOBUF_NULLABLE value);
  ::optimization_guide::proto::MemoryBankChatResponse* PROTOBUF_NULLABLE unsafe_arena_release_memory_bank_chat_response();

  private:
  const ::optimization_guide::proto::MemoryBankChatResponse& _internal_memory_bank_chat_response() const;
  ::optimization_guide::proto::MemoryBankChatResponse* PROTOBUF_NONNULL _internal_mutable_memory_bank_chat_response();

  public:
  // .optimization_guide.proto.BrowserBasedTodosResponse browser_based_todos_response = 3;
  bool has_browser_based_todos_response()
      const;
  private:
  bool _internal_has_browser_based_todos_response() const;

  public:
  void clear_browser_based_todos_response() ;
  const ::optimization_guide::proto::BrowserBasedTodosResponse& browser_based_todos_response() const;
  ::optimization_guide::proto::BrowserBasedTodosResponse* PROTOBUF_NULLABLE release_browser_based_todos_response();
  ::optimization_guide::proto::BrowserBasedTodosResponse* PROTOBUF_NONNULL mutable_browser_based_todos_response();
  void set_allocated_browser_based_todos_response(::optimization_guide::proto::BrowserBasedTodosResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_browser_based_todos_response(::optimization_guide::proto::BrowserBasedTodosResponse* PROTOBUF_NULLABLE value);
  ::optimization_guide::proto::BrowserBasedTodosResponse* PROTOBUF_NULLABLE unsafe_arena_release_browser_based_todos_response();

  private:
  const ::optimization_guide::proto::BrowserBasedTodosResponse& _internal_browser_based_todos_response() const;
  ::optimization_guide::proto::BrowserBasedTodosResponse* PROTOBUF_NONNULL _internal_mutable_browser_based_todos_response();

  public:
  // .optimization_guide.proto.AutoTodosDeduplicationResponse auto_todos_deduplication_response = 4;
  bool has_auto_todos_deduplication_response()
      const;
  private:
  bool _internal_has_auto_todos_deduplication_response() const;

  public:
  void clear_auto_todos_deduplication_response() ;
  const ::optimization_guide::proto::AutoTodosDeduplicationResponse& auto_todos_deduplication_response() const;
  ::optimization_guide::proto::AutoTodosDeduplicationResponse* PROTOBUF_NULLABLE release_auto_todos_deduplication_response();
  ::optimization_guide::proto::AutoTodosDeduplicationResponse* PROTOBUF_NONNULL mutable_auto_todos_deduplication_response();
  void set_allocated_auto_todos_deduplication_response(::optimization_guide::proto::AutoTodosDeduplicationResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_auto_todos_deduplication_response(::optimization_guide::proto::AutoTodosDeduplicationResponse* PROTOBUF_NULLABLE value);
  ::optimization_guide::proto::AutoTodosDeduplicationResponse* PROTOBUF_NULLABLE unsafe_arena_release_auto_todos_deduplication_response();

  private:
  const ::optimization_guide::proto::AutoTodosDeduplicationResponse& _internal_auto_todos_deduplication_response() const;
  ::optimization_guide::proto::AutoTodosDeduplicationResponse* PROTOBUF_NONNULL _internal_mutable_auto_todos_deduplication_response();

  public:
  void clear_feature_response();
  FeatureResponseCase feature_response_case() const;
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.ContextHubResponse)
 private:
  class _Internal;
  void set_has_group_response();
  void set_has_memory_bank_chat_response();
  void set_has_browser_based_todos_response();
  void set_has_auto_todos_deduplication_response();
  inline bool has_feature_response() const;
  inline void clear_has_feature_response();
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 4,
                          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 ContextHubResponse& from_msg);
    union FeatureResponseUnion {
      constexpr FeatureResponseUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::MessageLite* PROTOBUF_NULLABLE group_response_;
      ::google::protobuf::MessageLite* PROTOBUF_NULLABLE memory_bank_chat_response_;
      ::google::protobuf::MessageLite* PROTOBUF_NULLABLE browser_based_todos_response_;
      ::google::protobuf::MessageLite* PROTOBUF_NULLABLE auto_todos_deduplication_response_;
    } feature_response_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};
// -------------------------------------------------------------------

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

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

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

  inline ContextHubLoggingData(const ContextHubLoggingData& from) : ContextHubLoggingData(nullptr, from) {}
  inline ContextHubLoggingData(ContextHubLoggingData&& from) noexcept : ContextHubLoggingData(nullptr, ::std::move(from)) {}
  inline ContextHubLoggingData& operator=(const ContextHubLoggingData& from) {
    CopyFrom(from);
    return *this;
  }
  inline ContextHubLoggingData& operator=(ContextHubLoggingData&& 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 ContextHubLoggingData& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ContextHubLoggingData>(&ContextHubLoggingData_globals_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(ContextHubLoggingData& a, ContextHubLoggingData& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ContextHubLoggingData* 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(ContextHubLoggingData* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ContextHubLoggingData* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ContextHubLoggingData>(arena);
  }
  void CopyFrom(const ContextHubLoggingData& from);
  void MergeFrom(const ContextHubLoggingData& from) { ContextHubLoggingData::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(ContextHubLoggingData* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "optimization_guide.proto.ContextHubLoggingData"; }

  explicit ContextHubLoggingData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ContextHubLoggingData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ContextHubLoggingData& from);
  ContextHubLoggingData(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ContextHubLoggingData&& from) noexcept
      : ContextHubLoggingData(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 {
    kRequestFieldNumber = 1,
    kResponseFieldNumber = 2,
    kModelExecutionInfoFieldNumber = 3,
  };
  // .optimization_guide.proto.ContextHubRequest request = 1 [features = {
  bool has_request()
      const;
  void clear_request() ;
  const ::optimization_guide::proto::ContextHubRequest& request() const;
  ::optimization_guide::proto::ContextHubRequest* PROTOBUF_NULLABLE release_request();
  ::optimization_guide::proto::ContextHubRequest* PROTOBUF_NONNULL mutable_request();
  void set_allocated_request(::optimization_guide::proto::ContextHubRequest* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_request(::optimization_guide::proto::ContextHubRequest* PROTOBUF_NULLABLE value);
  ::optimization_guide::proto::ContextHubRequest* PROTOBUF_NULLABLE unsafe_arena_release_request();

  private:
  const ::optimization_guide::proto::ContextHubRequest& _internal_request() const;
  ::optimization_guide::proto::ContextHubRequest* PROTOBUF_NONNULL _internal_mutable_request();

  public:
  // .optimization_guide.proto.ContextHubResponse response = 2 [features = {
  bool has_response()
      const;
  void clear_response() ;
  const ::optimization_guide::proto::ContextHubResponse& response() const;
  ::optimization_guide::proto::ContextHubResponse* PROTOBUF_NULLABLE release_response();
  ::optimization_guide::proto::ContextHubResponse* PROTOBUF_NONNULL mutable_response();
  void set_allocated_response(::optimization_guide::proto::ContextHubResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_response(::optimization_guide::proto::ContextHubResponse* PROTOBUF_NULLABLE value);
  ::optimization_guide::proto::ContextHubResponse* PROTOBUF_NULLABLE unsafe_arena_release_response();

  private:
  const ::optimization_guide::proto::ContextHubResponse& _internal_response() const;
  ::optimization_guide::proto::ContextHubResponse* PROTOBUF_NONNULL _internal_mutable_response();

  public:
  // .optimization_guide.proto.ModelExecutionInfo model_execution_info = 3 [features = {
  bool has_model_execution_info()
      const;
  void clear_model_execution_info() ;
  const ::optimization_guide::proto::ModelExecutionInfo& model_execution_info() const;
  ::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NULLABLE release_model_execution_info();
  ::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NONNULL mutable_model_execution_info();
  void set_allocated_model_execution_info(::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_model_execution_info(::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NULLABLE value);
  ::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NULLABLE unsafe_arena_release_model_execution_info();

  private:
  const ::optimization_guide::proto::ModelExecutionInfo& _internal_model_execution_info() const;
  ::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NONNULL _internal_mutable_model_execution_info();

  public:
  // @@protoc_insertion_point(class_scope:optimization_guide.proto.ContextHubLoggingData)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          3, 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 ContextHubLoggingData& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::optimization_guide::proto::ContextHubRequest* PROTOBUF_NULLABLE request_;
    ::optimization_guide::proto::ContextHubResponse* PROTOBUF_NULLABLE response_;
    ::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NULLABLE model_execution_info_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto;
};

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




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


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

// ContextHubLoggingData

// .optimization_guide.proto.ContextHubRequest request = 1 [features = {
inline bool ContextHubLoggingData::has_request() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.request_ != nullptr);
  return value;
}
inline void ContextHubLoggingData::clear_request() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.request_ != nullptr) _impl_.request_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::optimization_guide::proto::ContextHubRequest& ContextHubLoggingData::_internal_request() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::optimization_guide::proto::ContextHubRequest* p = _impl_.request_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::optimization_guide::proto::ContextHubRequest>(&::optimization_guide::proto::ContextHubRequest_globals_);
}
inline const ::optimization_guide::proto::ContextHubRequest& ContextHubLoggingData::request() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubLoggingData.request)
  return _internal_request();
}
inline void ContextHubLoggingData::unsafe_arena_set_allocated_request(
    ::optimization_guide::proto::ContextHubRequest* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.request_);
  }
  _impl_.request_ = reinterpret_cast<::optimization_guide::proto::ContextHubRequest*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:optimization_guide.proto.ContextHubLoggingData.request)
}
inline ::optimization_guide::proto::ContextHubRequest* PROTOBUF_NULLABLE ContextHubLoggingData::release_request() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::optimization_guide::proto::ContextHubRequest* released = _impl_.request_;
  _impl_.request_ = 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 ::optimization_guide::proto::ContextHubRequest* PROTOBUF_NULLABLE ContextHubLoggingData::unsafe_arena_release_request() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubLoggingData.request)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::optimization_guide::proto::ContextHubRequest* temp = _impl_.request_;
  _impl_.request_ = nullptr;
  return temp;
}
inline ::optimization_guide::proto::ContextHubRequest* PROTOBUF_NONNULL ContextHubLoggingData::_internal_mutable_request() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.request_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::optimization_guide::proto::ContextHubRequest>(GetArena());
    _impl_.request_ = reinterpret_cast<::optimization_guide::proto::ContextHubRequest*>(p);
  }
  return _impl_.request_;
}
inline ::optimization_guide::proto::ContextHubRequest* PROTOBUF_NONNULL ContextHubLoggingData::mutable_request()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::optimization_guide::proto::ContextHubRequest* _msg = _internal_mutable_request();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubLoggingData.request)
  return _msg;
}
inline void ContextHubLoggingData::set_allocated_request(::optimization_guide::proto::ContextHubRequest* 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_.request_);
  }

  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], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.request_ = reinterpret_cast<::optimization_guide::proto::ContextHubRequest*>(value);
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.ContextHubLoggingData.request)
}

// .optimization_guide.proto.ContextHubResponse response = 2 [features = {
inline bool ContextHubLoggingData::has_response() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.response_ != nullptr);
  return value;
}
inline void ContextHubLoggingData::clear_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.response_ != nullptr) _impl_.response_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::optimization_guide::proto::ContextHubResponse& ContextHubLoggingData::_internal_response() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::optimization_guide::proto::ContextHubResponse* p = _impl_.response_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::optimization_guide::proto::ContextHubResponse>(&::optimization_guide::proto::ContextHubResponse_globals_);
}
inline const ::optimization_guide::proto::ContextHubResponse& ContextHubLoggingData::response() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubLoggingData.response)
  return _internal_response();
}
inline void ContextHubLoggingData::unsafe_arena_set_allocated_response(
    ::optimization_guide::proto::ContextHubResponse* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.response_);
  }
  _impl_.response_ = reinterpret_cast<::optimization_guide::proto::ContextHubResponse*>(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:optimization_guide.proto.ContextHubLoggingData.response)
}
inline ::optimization_guide::proto::ContextHubResponse* PROTOBUF_NULLABLE ContextHubLoggingData::release_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::optimization_guide::proto::ContextHubResponse* released = _impl_.response_;
  _impl_.response_ = 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 ::optimization_guide::proto::ContextHubResponse* PROTOBUF_NULLABLE ContextHubLoggingData::unsafe_arena_release_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubLoggingData.response)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::optimization_guide::proto::ContextHubResponse* temp = _impl_.response_;
  _impl_.response_ = nullptr;
  return temp;
}
inline ::optimization_guide::proto::ContextHubResponse* PROTOBUF_NONNULL ContextHubLoggingData::_internal_mutable_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.response_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::optimization_guide::proto::ContextHubResponse>(GetArena());
    _impl_.response_ = reinterpret_cast<::optimization_guide::proto::ContextHubResponse*>(p);
  }
  return _impl_.response_;
}
inline ::optimization_guide::proto::ContextHubResponse* PROTOBUF_NONNULL ContextHubLoggingData::mutable_response()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::optimization_guide::proto::ContextHubResponse* _msg = _internal_mutable_response();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubLoggingData.response)
  return _msg;
}
inline void ContextHubLoggingData::set_allocated_response(::optimization_guide::proto::ContextHubResponse* 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_.response_);
  }

  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_.response_ = reinterpret_cast<::optimization_guide::proto::ContextHubResponse*>(value);
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.ContextHubLoggingData.response)
}

// .optimization_guide.proto.ModelExecutionInfo model_execution_info = 3 [features = {
inline bool ContextHubLoggingData::has_model_execution_info() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.model_execution_info_ != nullptr);
  return value;
}
inline const ::optimization_guide::proto::ModelExecutionInfo& ContextHubLoggingData::_internal_model_execution_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::optimization_guide::proto::ModelExecutionInfo* p = _impl_.model_execution_info_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::optimization_guide::proto::ModelExecutionInfo>(&::optimization_guide::proto::ModelExecutionInfo_globals_);
}
inline const ::optimization_guide::proto::ModelExecutionInfo& ContextHubLoggingData::model_execution_info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubLoggingData.model_execution_info)
  return _internal_model_execution_info();
}
inline void ContextHubLoggingData::unsafe_arena_set_allocated_model_execution_info(
    ::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.model_execution_info_);
  }
  _impl_.model_execution_info_ = reinterpret_cast<::optimization_guide::proto::ModelExecutionInfo*>(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:optimization_guide.proto.ContextHubLoggingData.model_execution_info)
}
inline ::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NULLABLE ContextHubLoggingData::release_model_execution_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::optimization_guide::proto::ModelExecutionInfo* released = _impl_.model_execution_info_;
  _impl_.model_execution_info_ = 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 ::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NULLABLE ContextHubLoggingData::unsafe_arena_release_model_execution_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubLoggingData.model_execution_info)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::optimization_guide::proto::ModelExecutionInfo* temp = _impl_.model_execution_info_;
  _impl_.model_execution_info_ = nullptr;
  return temp;
}
inline ::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NONNULL ContextHubLoggingData::_internal_mutable_model_execution_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.model_execution_info_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::optimization_guide::proto::ModelExecutionInfo>(GetArena());
    _impl_.model_execution_info_ = reinterpret_cast<::optimization_guide::proto::ModelExecutionInfo*>(p);
  }
  return _impl_.model_execution_info_;
}
inline ::optimization_guide::proto::ModelExecutionInfo* PROTOBUF_NONNULL ContextHubLoggingData::mutable_model_execution_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::optimization_guide::proto::ModelExecutionInfo* _msg = _internal_mutable_model_execution_info();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubLoggingData.model_execution_info)
  return _msg;
}
inline void ContextHubLoggingData::set_allocated_model_execution_info(::optimization_guide::proto::ModelExecutionInfo* 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_.model_execution_info_);
  }

  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], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.model_execution_info_ = reinterpret_cast<::optimization_guide::proto::ModelExecutionInfo*>(value);
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.ContextHubLoggingData.model_execution_info)
}

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

// ContextHubRequest

// .optimization_guide.proto.ContextHubRequestType request_type = 1 [features = {
inline bool ContextHubRequest::has_request_type() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void ContextHubRequest::clear_request_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.request_type_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline ::optimization_guide::proto::ContextHubRequestType ContextHubRequest::request_type() const {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubRequest.request_type)
  return _internal_request_type();
}
inline void ContextHubRequest::set_request_type(::optimization_guide::proto::ContextHubRequestType value) {
  _internal_set_request_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ContextHubRequest.request_type)
}
inline ::optimization_guide::proto::ContextHubRequestType ContextHubRequest::_internal_request_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::optimization_guide::proto::ContextHubRequestType>(_impl_.request_type_);
}
inline void ContextHubRequest::_internal_set_request_type(::optimization_guide::proto::ContextHubRequestType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.request_type_ = value;
}

// repeated .optimization_guide.proto.EntryItem entry_items = 2;
inline int ContextHubRequest::_internal_entry_items_size() const {
  return _internal_entry_items().size();
}
inline int ContextHubRequest::entry_items_size() const {
  return _internal_entry_items_size();
}
inline void ContextHubRequest::clear_entry_items() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entry_items_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::optimization_guide::proto::EntryItem& ContextHubRequest::entry_items(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubRequest.entry_items)
  return _internal_entry_items().Get(index);
}
inline ::optimization_guide::proto::EntryItem* PROTOBUF_NONNULL ContextHubRequest::mutable_entry_items(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubRequest.entry_items)
  return _internal_mutable_entry_items()->Mutable(index);
}
inline ::optimization_guide::proto::EntryItem* PROTOBUF_NONNULL ContextHubRequest::add_entry_items()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::optimization_guide::proto::EntryItem* _add =
      _internal_mutable_entry_items()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:optimization_guide.proto.ContextHubRequest.entry_items)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::EntryItem>& ContextHubRequest::entry_items() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:optimization_guide.proto.ContextHubRequest.entry_items)
  return _internal_entry_items();
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::EntryItem>* PROTOBUF_NONNULL
ContextHubRequest::mutable_entry_items() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:optimization_guide.proto.ContextHubRequest.entry_items)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_entry_items();
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::EntryItem>&
ContextHubRequest::_internal_entry_items() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.entry_items_;
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::EntryItem>* PROTOBUF_NONNULL
ContextHubRequest::_internal_mutable_entry_items() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.entry_items_;
}

// repeated .optimization_guide.proto.TabGroupMinimal pre_existing_tab_groups = 3;
inline int ContextHubRequest::_internal_pre_existing_tab_groups_size() const {
  return _internal_pre_existing_tab_groups().size();
}
inline int ContextHubRequest::pre_existing_tab_groups_size() const {
  return _internal_pre_existing_tab_groups_size();
}
inline const ::optimization_guide::proto::TabGroupMinimal& ContextHubRequest::pre_existing_tab_groups(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubRequest.pre_existing_tab_groups)
  return _internal_pre_existing_tab_groups().Get(index);
}
inline ::optimization_guide::proto::TabGroupMinimal* PROTOBUF_NONNULL ContextHubRequest::mutable_pre_existing_tab_groups(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubRequest.pre_existing_tab_groups)
  return _internal_mutable_pre_existing_tab_groups()->Mutable(index);
}
inline ::optimization_guide::proto::TabGroupMinimal* PROTOBUF_NONNULL ContextHubRequest::add_pre_existing_tab_groups()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::optimization_guide::proto::TabGroupMinimal* _add =
      _internal_mutable_pre_existing_tab_groups()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:optimization_guide.proto.ContextHubRequest.pre_existing_tab_groups)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>& ContextHubRequest::pre_existing_tab_groups() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:optimization_guide.proto.ContextHubRequest.pre_existing_tab_groups)
  return _internal_pre_existing_tab_groups();
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>* PROTOBUF_NONNULL
ContextHubRequest::mutable_pre_existing_tab_groups() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:optimization_guide.proto.ContextHubRequest.pre_existing_tab_groups)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_pre_existing_tab_groups();
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>&
ContextHubRequest::_internal_pre_existing_tab_groups() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pre_existing_tab_groups_;
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>* PROTOBUF_NONNULL
ContextHubRequest::_internal_mutable_pre_existing_tab_groups() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.pre_existing_tab_groups_;
}

// string user_command = 4 [features = {
inline bool ContextHubRequest::has_user_command() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void ContextHubRequest::clear_user_command() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.user_command_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& ContextHubRequest::user_command() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubRequest.user_command)
  return _internal_user_command();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ContextHubRequest::set_user_command(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.user_command_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ContextHubRequest.user_command)
}
inline ::std::string* PROTOBUF_NONNULL ContextHubRequest::mutable_user_command()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_user_command();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubRequest.user_command)
  return _s;
}
inline const ::std::string& ContextHubRequest::_internal_user_command() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.user_command_.Get();
}
inline void ContextHubRequest::_internal_set_user_command(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.user_command_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ContextHubRequest::_internal_mutable_user_command() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.user_command_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ContextHubRequest::release_user_command() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubRequest.user_command)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.user_command_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.user_command_.Set("", GetArena());
  }
  return released;
}
inline void ContextHubRequest::set_allocated_user_command(::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_.user_command_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.user_command_.IsDefault()) {
    _impl_.user_command_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.ContextHubRequest.user_command)
}

// repeated .optimization_guide.proto.ChatHistoryTurn chat_history = 5;
inline int ContextHubRequest::_internal_chat_history_size() const {
  return _internal_chat_history().size();
}
inline int ContextHubRequest::chat_history_size() const {
  return _internal_chat_history_size();
}
inline void ContextHubRequest::clear_chat_history() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.chat_history_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::optimization_guide::proto::ChatHistoryTurn& ContextHubRequest::chat_history(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubRequest.chat_history)
  return _internal_chat_history().Get(index);
}
inline ::optimization_guide::proto::ChatHistoryTurn* PROTOBUF_NONNULL ContextHubRequest::mutable_chat_history(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubRequest.chat_history)
  return _internal_mutable_chat_history()->Mutable(index);
}
inline ::optimization_guide::proto::ChatHistoryTurn* PROTOBUF_NONNULL ContextHubRequest::add_chat_history()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::optimization_guide::proto::ChatHistoryTurn* _add =
      _internal_mutable_chat_history()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:optimization_guide.proto.ContextHubRequest.chat_history)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ChatHistoryTurn>& ContextHubRequest::chat_history() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:optimization_guide.proto.ContextHubRequest.chat_history)
  return _internal_chat_history();
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ChatHistoryTurn>* PROTOBUF_NONNULL
ContextHubRequest::mutable_chat_history() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:optimization_guide.proto.ContextHubRequest.chat_history)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_chat_history();
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ChatHistoryTurn>&
ContextHubRequest::_internal_chat_history() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.chat_history_;
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ChatHistoryTurn>* PROTOBUF_NONNULL
ContextHubRequest::_internal_mutable_chat_history() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.chat_history_;
}

// .optimization_guide.proto.AutoTodosDeduplicationRequest auto_todos_deduplication_request = 6 [features = {
inline bool ContextHubRequest::has_auto_todos_deduplication_request() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  PROTOBUF_ASSUME(!value || _impl_.auto_todos_deduplication_request_ != nullptr);
  return value;
}
inline void ContextHubRequest::clear_auto_todos_deduplication_request() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.auto_todos_deduplication_request_ != nullptr) _impl_.auto_todos_deduplication_request_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline const ::optimization_guide::proto::AutoTodosDeduplicationRequest& ContextHubRequest::_internal_auto_todos_deduplication_request() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::optimization_guide::proto::AutoTodosDeduplicationRequest* p = _impl_.auto_todos_deduplication_request_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::optimization_guide::proto::AutoTodosDeduplicationRequest>(&::optimization_guide::proto::AutoTodosDeduplicationRequest_globals_);
}
inline const ::optimization_guide::proto::AutoTodosDeduplicationRequest& ContextHubRequest::auto_todos_deduplication_request() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubRequest.auto_todos_deduplication_request)
  return _internal_auto_todos_deduplication_request();
}
inline void ContextHubRequest::unsafe_arena_set_allocated_auto_todos_deduplication_request(
    ::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.auto_todos_deduplication_request_);
  }
  _impl_.auto_todos_deduplication_request_ = reinterpret_cast<::optimization_guide::proto::AutoTodosDeduplicationRequest*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:optimization_guide.proto.ContextHubRequest.auto_todos_deduplication_request)
}
inline ::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NULLABLE ContextHubRequest::release_auto_todos_deduplication_request() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::optimization_guide::proto::AutoTodosDeduplicationRequest* released = _impl_.auto_todos_deduplication_request_;
  _impl_.auto_todos_deduplication_request_ = 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 ::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NULLABLE ContextHubRequest::unsafe_arena_release_auto_todos_deduplication_request() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubRequest.auto_todos_deduplication_request)

  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::optimization_guide::proto::AutoTodosDeduplicationRequest* temp = _impl_.auto_todos_deduplication_request_;
  _impl_.auto_todos_deduplication_request_ = nullptr;
  return temp;
}
inline ::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NONNULL ContextHubRequest::_internal_mutable_auto_todos_deduplication_request() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.auto_todos_deduplication_request_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::optimization_guide::proto::AutoTodosDeduplicationRequest>(GetArena());
    _impl_.auto_todos_deduplication_request_ = reinterpret_cast<::optimization_guide::proto::AutoTodosDeduplicationRequest*>(p);
  }
  return _impl_.auto_todos_deduplication_request_;
}
inline ::optimization_guide::proto::AutoTodosDeduplicationRequest* PROTOBUF_NONNULL ContextHubRequest::mutable_auto_todos_deduplication_request()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::optimization_guide::proto::AutoTodosDeduplicationRequest* _msg = _internal_mutable_auto_todos_deduplication_request();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubRequest.auto_todos_deduplication_request)
  return _msg;
}
inline void ContextHubRequest::set_allocated_auto_todos_deduplication_request(::optimization_guide::proto::AutoTodosDeduplicationRequest* 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_.auto_todos_deduplication_request_);
  }

  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], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }

  _impl_.auto_todos_deduplication_request_ = reinterpret_cast<::optimization_guide::proto::AutoTodosDeduplicationRequest*>(value);
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.ContextHubRequest.auto_todos_deduplication_request)
}

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

// EntryItem

// .optimization_guide.proto.Tab tab = 1;
inline bool EntryItem::has_tab() const {
  return item_case() == kTab;
}
inline bool EntryItem::_internal_has_tab() const {
  return item_case() == kTab;
}
inline void EntryItem::set_has_tab() {
  _impl_._oneof_case_[0] = kTab;
}
inline ::optimization_guide::proto::Tab* PROTOBUF_NULLABLE EntryItem::release_tab() {
  // @@protoc_insertion_point(field_release:optimization_guide.proto.EntryItem.tab)
  if (item_case() == kTab) {
    clear_has_item();
    auto* temp = _impl_.item_.tab_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.item_.tab_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::optimization_guide::proto::Tab& EntryItem::_internal_tab() const {
  return item_case() == kTab ? static_cast<const ::optimization_guide::proto::Tab&>(*_impl_.item_.tab_)
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::optimization_guide::proto::Tab>(&::optimization_guide::proto::Tab_globals_);
}
inline const ::optimization_guide::proto::Tab& EntryItem::tab() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.EntryItem.tab)
  return _internal_tab();
}
inline ::optimization_guide::proto::Tab* PROTOBUF_NULLABLE EntryItem::unsafe_arena_release_tab() {
  // @@protoc_insertion_point(field_unsafe_arena_release:optimization_guide.proto.EntryItem.tab)
  if (item_case() == kTab) {
    clear_has_item();
    auto* temp = _impl_.item_.tab_;
    _impl_.item_.tab_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void EntryItem::unsafe_arena_set_allocated_tab(
    ::optimization_guide::proto::Tab* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_item();
  if (value) {
    set_has_tab();
    _impl_.item_.tab_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:optimization_guide.proto.EntryItem.tab)
}
inline ::optimization_guide::proto::Tab* PROTOBUF_NONNULL EntryItem::_internal_mutable_tab() {
  if (item_case() != kTab) {
    clear_item();
    set_has_tab();
    _impl_.item_.tab_ = 
        ::google::protobuf::MessageLite::DefaultConstruct<::optimization_guide::proto::Tab>(GetArena());
  }
  return _impl_.item_.tab_;
}
inline ::optimization_guide::proto::Tab* PROTOBUF_NONNULL EntryItem::mutable_tab()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::optimization_guide::proto::Tab* _msg = _internal_mutable_tab();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.EntryItem.tab)
  return _msg;
}

// .optimization_guide.proto.MemoryBankEntry memory_bank_entry = 2;
inline bool EntryItem::has_memory_bank_entry() const {
  return item_case() == kMemoryBankEntry;
}
inline bool EntryItem::_internal_has_memory_bank_entry() const {
  return item_case() == kMemoryBankEntry;
}
inline void EntryItem::set_has_memory_bank_entry() {
  _impl_._oneof_case_[0] = kMemoryBankEntry;
}
inline void EntryItem::clear_memory_bank_entry() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (item_case() == kMemoryBankEntry) {
    if (GetArena() == nullptr) {
      delete _impl_.item_.memory_bank_entry_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      if (_impl_.item_.memory_bank_entry_ != nullptr) {
        _impl_.item_.memory_bank_entry_->Clear();
      }
    }
    clear_has_item();
  }
}
inline ::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NULLABLE EntryItem::release_memory_bank_entry() {
  // @@protoc_insertion_point(field_release:optimization_guide.proto.EntryItem.memory_bank_entry)
  if (item_case() == kMemoryBankEntry) {
    clear_has_item();
    auto* temp = _impl_.item_.memory_bank_entry_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.item_.memory_bank_entry_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::optimization_guide::proto::MemoryBankEntry& EntryItem::_internal_memory_bank_entry() const {
  return item_case() == kMemoryBankEntry ? static_cast<const ::optimization_guide::proto::MemoryBankEntry&>(*_impl_.item_.memory_bank_entry_)
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::optimization_guide::proto::MemoryBankEntry>(&::optimization_guide::proto::MemoryBankEntry_globals_);
}
inline const ::optimization_guide::proto::MemoryBankEntry& EntryItem::memory_bank_entry() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.EntryItem.memory_bank_entry)
  return _internal_memory_bank_entry();
}
inline ::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NULLABLE EntryItem::unsafe_arena_release_memory_bank_entry() {
  // @@protoc_insertion_point(field_unsafe_arena_release:optimization_guide.proto.EntryItem.memory_bank_entry)
  if (item_case() == kMemoryBankEntry) {
    clear_has_item();
    auto* temp = _impl_.item_.memory_bank_entry_;
    _impl_.item_.memory_bank_entry_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void EntryItem::unsafe_arena_set_allocated_memory_bank_entry(
    ::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_item();
  if (value) {
    set_has_memory_bank_entry();
    _impl_.item_.memory_bank_entry_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:optimization_guide.proto.EntryItem.memory_bank_entry)
}
inline ::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NONNULL EntryItem::_internal_mutable_memory_bank_entry() {
  if (item_case() != kMemoryBankEntry) {
    clear_item();
    set_has_memory_bank_entry();
    _impl_.item_.memory_bank_entry_ = 
        ::google::protobuf::MessageLite::DefaultConstruct<::optimization_guide::proto::MemoryBankEntry>(GetArena());
  }
  return _impl_.item_.memory_bank_entry_;
}
inline ::optimization_guide::proto::MemoryBankEntry* PROTOBUF_NONNULL EntryItem::mutable_memory_bank_entry()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::optimization_guide::proto::MemoryBankEntry* _msg = _internal_mutable_memory_bank_entry();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.EntryItem.memory_bank_entry)
  return _msg;
}

inline bool EntryItem::has_item() const {
  return item_case() != ITEM_NOT_SET;
}
inline void EntryItem::clear_has_item() {
  _impl_._oneof_case_[0] = ITEM_NOT_SET;
}
inline EntryItem::ItemCase EntryItem::item_case() const {
  return EntryItem::ItemCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// MemoryBankEntry

// int64 id = 1 [features = {
inline bool MemoryBankEntry::has_id() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void MemoryBankEntry::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::int64_t MemoryBankEntry::id() const {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.MemoryBankEntry.id)
  return _internal_id();
}
inline void MemoryBankEntry::set_id(::int64_t value) {
  _internal_set_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:optimization_guide.proto.MemoryBankEntry.id)
}
inline ::int64_t MemoryBankEntry::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_;
}
inline void MemoryBankEntry::_internal_set_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = value;
}

// .optimization_guide.proto.MemoryBankType type = 2 [features = {
inline bool MemoryBankEntry::has_type() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  return value;
}
inline void MemoryBankEntry::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline ::optimization_guide::proto::MemoryBankType MemoryBankEntry::type() const {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.MemoryBankEntry.type)
  return _internal_type();
}
inline void MemoryBankEntry::set_type(::optimization_guide::proto::MemoryBankType value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:optimization_guide.proto.MemoryBankEntry.type)
}
inline ::optimization_guide::proto::MemoryBankType MemoryBankEntry::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::optimization_guide::proto::MemoryBankType>(_impl_.type_);
}
inline void MemoryBankEntry::_internal_set_type(::optimization_guide::proto::MemoryBankType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// int64 timestamp_ms = 3 [features = {
inline bool MemoryBankEntry::has_timestamp_ms() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void MemoryBankEntry::clear_timestamp_ms() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.timestamp_ms_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline ::int64_t MemoryBankEntry::timestamp_ms() const {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.MemoryBankEntry.timestamp_ms)
  return _internal_timestamp_ms();
}
inline void MemoryBankEntry::set_timestamp_ms(::int64_t value) {
  _internal_set_timestamp_ms(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:optimization_guide.proto.MemoryBankEntry.timestamp_ms)
}
inline ::int64_t MemoryBankEntry::_internal_timestamp_ms() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.timestamp_ms_;
}
inline void MemoryBankEntry::_internal_set_timestamp_ms(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.timestamp_ms_ = value;
}

// string url = 4 [features = {
inline bool MemoryBankEntry::has_url() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void MemoryBankEntry::clear_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.url_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& MemoryBankEntry::url() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.MemoryBankEntry.url)
  return _internal_url();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void MemoryBankEntry::set_url(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.url_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.MemoryBankEntry.url)
}
inline ::std::string* PROTOBUF_NONNULL MemoryBankEntry::mutable_url()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_url();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.MemoryBankEntry.url)
  return _s;
}
inline const ::std::string& MemoryBankEntry::_internal_url() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.url_.Get();
}
inline void MemoryBankEntry::_internal_set_url(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.url_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL MemoryBankEntry::_internal_mutable_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.url_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE MemoryBankEntry::release_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.MemoryBankEntry.url)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.url_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.url_.Set("", GetArena());
  }
  return released;
}
inline void MemoryBankEntry::set_allocated_url(::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_.url_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.url_.IsDefault()) {
    _impl_.url_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.MemoryBankEntry.url)
}

// string tab_title = 5 [features = {
inline bool MemoryBankEntry::has_tab_title() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void MemoryBankEntry::clear_tab_title() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tab_title_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::std::string& MemoryBankEntry::tab_title() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.MemoryBankEntry.tab_title)
  return _internal_tab_title();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void MemoryBankEntry::set_tab_title(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.tab_title_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.MemoryBankEntry.tab_title)
}
inline ::std::string* PROTOBUF_NONNULL MemoryBankEntry::mutable_tab_title()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_tab_title();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.MemoryBankEntry.tab_title)
  return _s;
}
inline const ::std::string& MemoryBankEntry::_internal_tab_title() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tab_title_.Get();
}
inline void MemoryBankEntry::_internal_set_tab_title(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tab_title_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL MemoryBankEntry::_internal_mutable_tab_title() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.tab_title_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE MemoryBankEntry::release_tab_title() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.MemoryBankEntry.tab_title)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.tab_title_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.tab_title_.Set("", GetArena());
  }
  return released;
}
inline void MemoryBankEntry::set_allocated_tab_title(::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_.tab_title_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.tab_title_.IsDefault()) {
    _impl_.tab_title_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.MemoryBankEntry.tab_title)
}

// string selected_text = 6 [features = {
inline bool MemoryBankEntry::has_selected_text() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void MemoryBankEntry::clear_selected_text() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.selected_text_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& MemoryBankEntry::selected_text() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.MemoryBankEntry.selected_text)
  return _internal_selected_text();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void MemoryBankEntry::set_selected_text(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.selected_text_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.MemoryBankEntry.selected_text)
}
inline ::std::string* PROTOBUF_NONNULL MemoryBankEntry::mutable_selected_text()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_selected_text();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.MemoryBankEntry.selected_text)
  return _s;
}
inline const ::std::string& MemoryBankEntry::_internal_selected_text() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.selected_text_.Get();
}
inline void MemoryBankEntry::_internal_set_selected_text(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.selected_text_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL MemoryBankEntry::_internal_mutable_selected_text() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.selected_text_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE MemoryBankEntry::release_selected_text() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.MemoryBankEntry.selected_text)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.selected_text_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.selected_text_.Set("", GetArena());
  }
  return released;
}
inline void MemoryBankEntry::set_allocated_selected_text(::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_.selected_text_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.selected_text_.IsDefault()) {
    _impl_.selected_text_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.MemoryBankEntry.selected_text)
}

// repeated string tags = 7;
inline int MemoryBankEntry::_internal_tags_size() const {
  return _internal_tags().size();
}
inline int MemoryBankEntry::tags_size() const {
  return _internal_tags_size();
}
inline void MemoryBankEntry::clear_tags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tags_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL MemoryBankEntry::add_tags()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_tags()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:optimization_guide.proto.MemoryBankEntry.tags)
  return _s;
}
inline const ::std::string& MemoryBankEntry::tags(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.MemoryBankEntry.tags)
  return _internal_tags().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL MemoryBankEntry::mutable_tags(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.MemoryBankEntry.tags)
  return _internal_mutable_tags()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void MemoryBankEntry::set_tags(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_tags()->Mutable(index),
      ::std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:optimization_guide.proto.MemoryBankEntry.tags)
}
template <typename Arg_, typename... Args_>
inline void MemoryBankEntry::add_tags(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_tags(), ::std::forward<Arg_>(value),
      args... );
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:optimization_guide.proto.MemoryBankEntry.tags)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& MemoryBankEntry::tags()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:optimization_guide.proto.MemoryBankEntry.tags)
  return _internal_tags();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
MemoryBankEntry::mutable_tags() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:optimization_guide.proto.MemoryBankEntry.tags)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tags();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
MemoryBankEntry::_internal_tags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tags_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
MemoryBankEntry::_internal_mutable_tags() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tags_;
}

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

// ChatHistoryTurn

// .optimization_guide.proto.ChatHistoryTurn.Role role = 1 [features = {
inline bool ChatHistoryTurn::has_role() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void ChatHistoryTurn::clear_role() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.role_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::optimization_guide::proto::ChatHistoryTurn_Role ChatHistoryTurn::role() const {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ChatHistoryTurn.role)
  return _internal_role();
}
inline void ChatHistoryTurn::set_role(::optimization_guide::proto::ChatHistoryTurn_Role value) {
  _internal_set_role(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ChatHistoryTurn.role)
}
inline ::optimization_guide::proto::ChatHistoryTurn_Role ChatHistoryTurn::_internal_role() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::optimization_guide::proto::ChatHistoryTurn_Role>(_impl_.role_);
}
inline void ChatHistoryTurn::_internal_set_role(::optimization_guide::proto::ChatHistoryTurn_Role value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.role_ = value;
}

// string message_content = 2 [features = {
inline bool ChatHistoryTurn::has_message_content() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void ChatHistoryTurn::clear_message_content() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.message_content_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& ChatHistoryTurn::message_content() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ChatHistoryTurn.message_content)
  return _internal_message_content();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ChatHistoryTurn::set_message_content(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.message_content_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ChatHistoryTurn.message_content)
}
inline ::std::string* PROTOBUF_NONNULL ChatHistoryTurn::mutable_message_content()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_message_content();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ChatHistoryTurn.message_content)
  return _s;
}
inline const ::std::string& ChatHistoryTurn::_internal_message_content() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.message_content_.Get();
}
inline void ChatHistoryTurn::_internal_set_message_content(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.message_content_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ChatHistoryTurn::_internal_mutable_message_content() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.message_content_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ChatHistoryTurn::release_message_content() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ChatHistoryTurn.message_content)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.message_content_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.message_content_.Set("", GetArena());
  }
  return released;
}
inline void ChatHistoryTurn::set_allocated_message_content(::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_.message_content_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.message_content_.IsDefault()) {
    _impl_.message_content_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.ChatHistoryTurn.message_content)
}

// int64 timestamp_ms = 3 [features = {
inline bool ChatHistoryTurn::has_timestamp_ms() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void ChatHistoryTurn::clear_timestamp_ms() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.timestamp_ms_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::int64_t ChatHistoryTurn::timestamp_ms() const {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ChatHistoryTurn.timestamp_ms)
  return _internal_timestamp_ms();
}
inline void ChatHistoryTurn::set_timestamp_ms(::int64_t value) {
  _internal_set_timestamp_ms(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ChatHistoryTurn.timestamp_ms)
}
inline ::int64_t ChatHistoryTurn::_internal_timestamp_ms() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.timestamp_ms_;
}
inline void ChatHistoryTurn::_internal_set_timestamp_ms(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.timestamp_ms_ = value;
}

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

// AutoTodosDeduplicationRequest

// repeated .optimization_guide.proto.ContextHubAutoTodoItem existing_todos = 1;
inline int AutoTodosDeduplicationRequest::_internal_existing_todos_size() const {
  return _internal_existing_todos().size();
}
inline int AutoTodosDeduplicationRequest::existing_todos_size() const {
  return _internal_existing_todos_size();
}
inline void AutoTodosDeduplicationRequest::clear_existing_todos() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.existing_todos_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::optimization_guide::proto::ContextHubAutoTodoItem& AutoTodosDeduplicationRequest::existing_todos(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.AutoTodosDeduplicationRequest.existing_todos)
  return _internal_existing_todos().Get(index);
}
inline ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL AutoTodosDeduplicationRequest::mutable_existing_todos(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.AutoTodosDeduplicationRequest.existing_todos)
  return _internal_mutable_existing_todos()->Mutable(index);
}
inline ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL AutoTodosDeduplicationRequest::add_existing_todos()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::optimization_guide::proto::ContextHubAutoTodoItem* _add =
      _internal_mutable_existing_todos()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:optimization_guide.proto.AutoTodosDeduplicationRequest.existing_todos)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>& AutoTodosDeduplicationRequest::existing_todos() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:optimization_guide.proto.AutoTodosDeduplicationRequest.existing_todos)
  return _internal_existing_todos();
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL
AutoTodosDeduplicationRequest::mutable_existing_todos() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:optimization_guide.proto.AutoTodosDeduplicationRequest.existing_todos)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_existing_todos();
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>&
AutoTodosDeduplicationRequest::_internal_existing_todos() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.existing_todos_;
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL
AutoTodosDeduplicationRequest::_internal_mutable_existing_todos() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.existing_todos_;
}

// repeated .optimization_guide.proto.ContextHubAutoTodoItem new_todos = 2;
inline int AutoTodosDeduplicationRequest::_internal_new_todos_size() const {
  return _internal_new_todos().size();
}
inline int AutoTodosDeduplicationRequest::new_todos_size() const {
  return _internal_new_todos_size();
}
inline void AutoTodosDeduplicationRequest::clear_new_todos() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.new_todos_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::optimization_guide::proto::ContextHubAutoTodoItem& AutoTodosDeduplicationRequest::new_todos(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.AutoTodosDeduplicationRequest.new_todos)
  return _internal_new_todos().Get(index);
}
inline ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL AutoTodosDeduplicationRequest::mutable_new_todos(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.AutoTodosDeduplicationRequest.new_todos)
  return _internal_mutable_new_todos()->Mutable(index);
}
inline ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL AutoTodosDeduplicationRequest::add_new_todos()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::optimization_guide::proto::ContextHubAutoTodoItem* _add =
      _internal_mutable_new_todos()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:optimization_guide.proto.AutoTodosDeduplicationRequest.new_todos)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>& AutoTodosDeduplicationRequest::new_todos() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:optimization_guide.proto.AutoTodosDeduplicationRequest.new_todos)
  return _internal_new_todos();
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL
AutoTodosDeduplicationRequest::mutable_new_todos() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:optimization_guide.proto.AutoTodosDeduplicationRequest.new_todos)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_new_todos();
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>&
AutoTodosDeduplicationRequest::_internal_new_todos() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.new_todos_;
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL
AutoTodosDeduplicationRequest::_internal_mutable_new_todos() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.new_todos_;
}

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

// ContextHubAutoTodoItem

// string title = 1 [features = {
inline bool ContextHubAutoTodoItem::has_title() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void ContextHubAutoTodoItem::clear_title() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.title_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& ContextHubAutoTodoItem::title() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubAutoTodoItem.title)
  return _internal_title();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ContextHubAutoTodoItem::set_title(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.title_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ContextHubAutoTodoItem.title)
}
inline ::std::string* PROTOBUF_NONNULL ContextHubAutoTodoItem::mutable_title()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_title();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubAutoTodoItem.title)
  return _s;
}
inline const ::std::string& ContextHubAutoTodoItem::_internal_title() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.title_.Get();
}
inline void ContextHubAutoTodoItem::_internal_set_title(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.title_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ContextHubAutoTodoItem::_internal_mutable_title() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.title_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ContextHubAutoTodoItem::release_title() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubAutoTodoItem.title)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.title_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.title_.Set("", GetArena());
  }
  return released;
}
inline void ContextHubAutoTodoItem::set_allocated_title(::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_.title_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.title_.IsDefault()) {
    _impl_.title_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.ContextHubAutoTodoItem.title)
}

// string description = 2 [features = {
inline bool ContextHubAutoTodoItem::has_description() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void ContextHubAutoTodoItem::clear_description() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.description_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::std::string& ContextHubAutoTodoItem::description() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubAutoTodoItem.description)
  return _internal_description();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ContextHubAutoTodoItem::set_description(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.description_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ContextHubAutoTodoItem.description)
}
inline ::std::string* PROTOBUF_NONNULL ContextHubAutoTodoItem::mutable_description()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_description();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubAutoTodoItem.description)
  return _s;
}
inline const ::std::string& ContextHubAutoTodoItem::_internal_description() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.description_.Get();
}
inline void ContextHubAutoTodoItem::_internal_set_description(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.description_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ContextHubAutoTodoItem::_internal_mutable_description() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.description_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ContextHubAutoTodoItem::release_description() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubAutoTodoItem.description)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.description_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.description_.Set("", GetArena());
  }
  return released;
}
inline void ContextHubAutoTodoItem::set_allocated_description(::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_.description_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.description_.IsDefault()) {
    _impl_.description_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.ContextHubAutoTodoItem.description)
}

// string actionable_url = 3 [features = {
inline bool ContextHubAutoTodoItem::has_actionable_url() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void ContextHubAutoTodoItem::clear_actionable_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.actionable_url_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& ContextHubAutoTodoItem::actionable_url() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubAutoTodoItem.actionable_url)
  return _internal_actionable_url();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ContextHubAutoTodoItem::set_actionable_url(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.actionable_url_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ContextHubAutoTodoItem.actionable_url)
}
inline ::std::string* PROTOBUF_NONNULL ContextHubAutoTodoItem::mutable_actionable_url()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_actionable_url();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubAutoTodoItem.actionable_url)
  return _s;
}
inline const ::std::string& ContextHubAutoTodoItem::_internal_actionable_url() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.actionable_url_.Get();
}
inline void ContextHubAutoTodoItem::_internal_set_actionable_url(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.actionable_url_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ContextHubAutoTodoItem::_internal_mutable_actionable_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.actionable_url_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ContextHubAutoTodoItem::release_actionable_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubAutoTodoItem.actionable_url)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.actionable_url_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.actionable_url_.Set("", GetArena());
  }
  return released;
}
inline void ContextHubAutoTodoItem::set_allocated_actionable_url(::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_.actionable_url_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.actionable_url_.IsDefault()) {
    _impl_.actionable_url_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.ContextHubAutoTodoItem.actionable_url)
}

// float importance_score = 4 [features = {
inline bool ContextHubAutoTodoItem::has_importance_score() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void ContextHubAutoTodoItem::clear_importance_score() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.importance_score_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline float ContextHubAutoTodoItem::importance_score() const {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubAutoTodoItem.importance_score)
  return _internal_importance_score();
}
inline void ContextHubAutoTodoItem::set_importance_score(float value) {
  _internal_set_importance_score(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ContextHubAutoTodoItem.importance_score)
}
inline float ContextHubAutoTodoItem::_internal_importance_score() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.importance_score_;
}
inline void ContextHubAutoTodoItem::_internal_set_importance_score(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.importance_score_ = value;
}

// .optimization_guide.proto.ContextHubAutoTodoItem.Status status = 5 [features = {
inline bool ContextHubAutoTodoItem::has_status() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  return value;
}
inline void ContextHubAutoTodoItem::clear_status() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline ::optimization_guide::proto::ContextHubAutoTodoItem_Status ContextHubAutoTodoItem::status() const {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubAutoTodoItem.status)
  return _internal_status();
}
inline void ContextHubAutoTodoItem::set_status(::optimization_guide::proto::ContextHubAutoTodoItem_Status value) {
  _internal_set_status(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ContextHubAutoTodoItem.status)
}
inline ::optimization_guide::proto::ContextHubAutoTodoItem_Status ContextHubAutoTodoItem::_internal_status() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::optimization_guide::proto::ContextHubAutoTodoItem_Status>(_impl_.status_);
}
inline void ContextHubAutoTodoItem::_internal_set_status(::optimization_guide::proto::ContextHubAutoTodoItem_Status value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = value;
}

// string id = 6 [features = {
inline bool ContextHubAutoTodoItem::has_id() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void ContextHubAutoTodoItem::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline const ::std::string& ContextHubAutoTodoItem::id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubAutoTodoItem.id)
  return _internal_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ContextHubAutoTodoItem::set_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  _impl_.id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ContextHubAutoTodoItem.id)
}
inline ::std::string* PROTOBUF_NONNULL ContextHubAutoTodoItem::mutable_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::std::string* _s = _internal_mutable_id();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubAutoTodoItem.id)
  return _s;
}
inline const ::std::string& ContextHubAutoTodoItem::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_.Get();
}
inline void ContextHubAutoTodoItem::_internal_set_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ContextHubAutoTodoItem::_internal_mutable_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ContextHubAutoTodoItem::release_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubAutoTodoItem.id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000010U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  auto* released = _impl_.id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.id_.Set("", GetArena());
  }
  return released;
}
inline void ContextHubAutoTodoItem::set_allocated_id(::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_.id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.id_.IsDefault()) {
    _impl_.id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.ContextHubAutoTodoItem.id)
}

// repeated string todo_ids_mergeds = 7;
inline int ContextHubAutoTodoItem::_internal_todo_ids_mergeds_size() const {
  return _internal_todo_ids_mergeds().size();
}
inline int ContextHubAutoTodoItem::todo_ids_mergeds_size() const {
  return _internal_todo_ids_mergeds_size();
}
inline void ContextHubAutoTodoItem::clear_todo_ids_mergeds() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.todo_ids_mergeds_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL ContextHubAutoTodoItem::add_todo_ids_mergeds()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_todo_ids_mergeds()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:optimization_guide.proto.ContextHubAutoTodoItem.todo_ids_mergeds)
  return _s;
}
inline const ::std::string& ContextHubAutoTodoItem::todo_ids_mergeds(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubAutoTodoItem.todo_ids_mergeds)
  return _internal_todo_ids_mergeds().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL ContextHubAutoTodoItem::mutable_todo_ids_mergeds(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubAutoTodoItem.todo_ids_mergeds)
  return _internal_mutable_todo_ids_mergeds()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void ContextHubAutoTodoItem::set_todo_ids_mergeds(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_todo_ids_mergeds()->Mutable(index),
      ::std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:optimization_guide.proto.ContextHubAutoTodoItem.todo_ids_mergeds)
}
template <typename Arg_, typename... Args_>
inline void ContextHubAutoTodoItem::add_todo_ids_mergeds(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_todo_ids_mergeds(), ::std::forward<Arg_>(value),
      args... );
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:optimization_guide.proto.ContextHubAutoTodoItem.todo_ids_mergeds)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& ContextHubAutoTodoItem::todo_ids_mergeds()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:optimization_guide.proto.ContextHubAutoTodoItem.todo_ids_mergeds)
  return _internal_todo_ids_mergeds();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
ContextHubAutoTodoItem::mutable_todo_ids_mergeds() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:optimization_guide.proto.ContextHubAutoTodoItem.todo_ids_mergeds)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_todo_ids_mergeds();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
ContextHubAutoTodoItem::_internal_todo_ids_mergeds() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.todo_ids_mergeds_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
ContextHubAutoTodoItem::_internal_mutable_todo_ids_mergeds() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.todo_ids_mergeds_;
}

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

// ContextHubResponse

// .optimization_guide.proto.GroupResponse group_response = 1;
inline bool ContextHubResponse::has_group_response() const {
  return feature_response_case() == kGroupResponse;
}
inline bool ContextHubResponse::_internal_has_group_response() const {
  return feature_response_case() == kGroupResponse;
}
inline void ContextHubResponse::set_has_group_response() {
  _impl_._oneof_case_[0] = kGroupResponse;
}
inline void ContextHubResponse::clear_group_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (feature_response_case() == kGroupResponse) {
    if (GetArena() == nullptr) {
      delete _impl_.feature_response_.group_response_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      if (_impl_.feature_response_.group_response_ != nullptr) {
        _impl_.feature_response_.group_response_->Clear();
      }
    }
    clear_has_feature_response();
  }
}
inline ::optimization_guide::proto::GroupResponse* PROTOBUF_NULLABLE ContextHubResponse::release_group_response() {
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubResponse.group_response)
  if (feature_response_case() == kGroupResponse) {
    clear_has_feature_response();
    auto* temp = reinterpret_cast<::optimization_guide::proto::GroupResponse*>(_impl_.feature_response_.group_response_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.feature_response_.group_response_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::optimization_guide::proto::GroupResponse& ContextHubResponse::_internal_group_response() const {
  return feature_response_case() == kGroupResponse ? static_cast<const ::optimization_guide::proto::GroupResponse&>(*reinterpret_cast<::optimization_guide::proto::GroupResponse*>(_impl_.feature_response_.group_response_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::optimization_guide::proto::GroupResponse>(&::optimization_guide::proto::GroupResponse_globals_);
}
inline const ::optimization_guide::proto::GroupResponse& ContextHubResponse::group_response() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubResponse.group_response)
  return _internal_group_response();
}
inline ::optimization_guide::proto::GroupResponse* PROTOBUF_NULLABLE ContextHubResponse::unsafe_arena_release_group_response() {
  // @@protoc_insertion_point(field_unsafe_arena_release:optimization_guide.proto.ContextHubResponse.group_response)
  if (feature_response_case() == kGroupResponse) {
    clear_has_feature_response();
    auto* temp = reinterpret_cast<::optimization_guide::proto::GroupResponse*>(_impl_.feature_response_.group_response_);
    _impl_.feature_response_.group_response_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ContextHubResponse::unsafe_arena_set_allocated_group_response(
    ::optimization_guide::proto::GroupResponse* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_feature_response();
  if (value) {
    set_has_group_response();
    _impl_.feature_response_.group_response_ = reinterpret_cast<::google::protobuf::MessageLite*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:optimization_guide.proto.ContextHubResponse.group_response)
}
inline ::optimization_guide::proto::GroupResponse* PROTOBUF_NONNULL ContextHubResponse::_internal_mutable_group_response() {
  if (feature_response_case() != kGroupResponse) {
    clear_feature_response();
    set_has_group_response();
    _impl_.feature_response_.group_response_ = reinterpret_cast<::google::protobuf::MessageLite*>(
        ::google::protobuf::MessageLite::DefaultConstruct<::optimization_guide::proto::GroupResponse>(GetArena()));
  }
  return reinterpret_cast<::optimization_guide::proto::GroupResponse*>(_impl_.feature_response_.group_response_);
}
inline ::optimization_guide::proto::GroupResponse* PROTOBUF_NONNULL ContextHubResponse::mutable_group_response()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::optimization_guide::proto::GroupResponse* _msg = _internal_mutable_group_response();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubResponse.group_response)
  return _msg;
}

// .optimization_guide.proto.MemoryBankChatResponse memory_bank_chat_response = 2;
inline bool ContextHubResponse::has_memory_bank_chat_response() const {
  return feature_response_case() == kMemoryBankChatResponse;
}
inline bool ContextHubResponse::_internal_has_memory_bank_chat_response() const {
  return feature_response_case() == kMemoryBankChatResponse;
}
inline void ContextHubResponse::set_has_memory_bank_chat_response() {
  _impl_._oneof_case_[0] = kMemoryBankChatResponse;
}
inline void ContextHubResponse::clear_memory_bank_chat_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (feature_response_case() == kMemoryBankChatResponse) {
    if (GetArena() == nullptr) {
      delete _impl_.feature_response_.memory_bank_chat_response_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      if (_impl_.feature_response_.memory_bank_chat_response_ != nullptr) {
        _impl_.feature_response_.memory_bank_chat_response_->Clear();
      }
    }
    clear_has_feature_response();
  }
}
inline ::optimization_guide::proto::MemoryBankChatResponse* PROTOBUF_NULLABLE ContextHubResponse::release_memory_bank_chat_response() {
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubResponse.memory_bank_chat_response)
  if (feature_response_case() == kMemoryBankChatResponse) {
    clear_has_feature_response();
    auto* temp = reinterpret_cast<::optimization_guide::proto::MemoryBankChatResponse*>(_impl_.feature_response_.memory_bank_chat_response_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.feature_response_.memory_bank_chat_response_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::optimization_guide::proto::MemoryBankChatResponse& ContextHubResponse::_internal_memory_bank_chat_response() const {
  return feature_response_case() == kMemoryBankChatResponse ? static_cast<const ::optimization_guide::proto::MemoryBankChatResponse&>(*reinterpret_cast<::optimization_guide::proto::MemoryBankChatResponse*>(_impl_.feature_response_.memory_bank_chat_response_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::optimization_guide::proto::MemoryBankChatResponse>(&::optimization_guide::proto::MemoryBankChatResponse_globals_);
}
inline const ::optimization_guide::proto::MemoryBankChatResponse& ContextHubResponse::memory_bank_chat_response() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubResponse.memory_bank_chat_response)
  return _internal_memory_bank_chat_response();
}
inline ::optimization_guide::proto::MemoryBankChatResponse* PROTOBUF_NULLABLE ContextHubResponse::unsafe_arena_release_memory_bank_chat_response() {
  // @@protoc_insertion_point(field_unsafe_arena_release:optimization_guide.proto.ContextHubResponse.memory_bank_chat_response)
  if (feature_response_case() == kMemoryBankChatResponse) {
    clear_has_feature_response();
    auto* temp = reinterpret_cast<::optimization_guide::proto::MemoryBankChatResponse*>(_impl_.feature_response_.memory_bank_chat_response_);
    _impl_.feature_response_.memory_bank_chat_response_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ContextHubResponse::unsafe_arena_set_allocated_memory_bank_chat_response(
    ::optimization_guide::proto::MemoryBankChatResponse* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_feature_response();
  if (value) {
    set_has_memory_bank_chat_response();
    _impl_.feature_response_.memory_bank_chat_response_ = reinterpret_cast<::google::protobuf::MessageLite*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:optimization_guide.proto.ContextHubResponse.memory_bank_chat_response)
}
inline ::optimization_guide::proto::MemoryBankChatResponse* PROTOBUF_NONNULL ContextHubResponse::_internal_mutable_memory_bank_chat_response() {
  if (feature_response_case() != kMemoryBankChatResponse) {
    clear_feature_response();
    set_has_memory_bank_chat_response();
    _impl_.feature_response_.memory_bank_chat_response_ = reinterpret_cast<::google::protobuf::MessageLite*>(
        ::google::protobuf::MessageLite::DefaultConstruct<::optimization_guide::proto::MemoryBankChatResponse>(GetArena()));
  }
  return reinterpret_cast<::optimization_guide::proto::MemoryBankChatResponse*>(_impl_.feature_response_.memory_bank_chat_response_);
}
inline ::optimization_guide::proto::MemoryBankChatResponse* PROTOBUF_NONNULL ContextHubResponse::mutable_memory_bank_chat_response()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::optimization_guide::proto::MemoryBankChatResponse* _msg = _internal_mutable_memory_bank_chat_response();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubResponse.memory_bank_chat_response)
  return _msg;
}

// .optimization_guide.proto.BrowserBasedTodosResponse browser_based_todos_response = 3;
inline bool ContextHubResponse::has_browser_based_todos_response() const {
  return feature_response_case() == kBrowserBasedTodosResponse;
}
inline bool ContextHubResponse::_internal_has_browser_based_todos_response() const {
  return feature_response_case() == kBrowserBasedTodosResponse;
}
inline void ContextHubResponse::set_has_browser_based_todos_response() {
  _impl_._oneof_case_[0] = kBrowserBasedTodosResponse;
}
inline void ContextHubResponse::clear_browser_based_todos_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (feature_response_case() == kBrowserBasedTodosResponse) {
    if (GetArena() == nullptr) {
      delete _impl_.feature_response_.browser_based_todos_response_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      if (_impl_.feature_response_.browser_based_todos_response_ != nullptr) {
        _impl_.feature_response_.browser_based_todos_response_->Clear();
      }
    }
    clear_has_feature_response();
  }
}
inline ::optimization_guide::proto::BrowserBasedTodosResponse* PROTOBUF_NULLABLE ContextHubResponse::release_browser_based_todos_response() {
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubResponse.browser_based_todos_response)
  if (feature_response_case() == kBrowserBasedTodosResponse) {
    clear_has_feature_response();
    auto* temp = reinterpret_cast<::optimization_guide::proto::BrowserBasedTodosResponse*>(_impl_.feature_response_.browser_based_todos_response_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.feature_response_.browser_based_todos_response_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::optimization_guide::proto::BrowserBasedTodosResponse& ContextHubResponse::_internal_browser_based_todos_response() const {
  return feature_response_case() == kBrowserBasedTodosResponse ? static_cast<const ::optimization_guide::proto::BrowserBasedTodosResponse&>(*reinterpret_cast<::optimization_guide::proto::BrowserBasedTodosResponse*>(_impl_.feature_response_.browser_based_todos_response_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::optimization_guide::proto::BrowserBasedTodosResponse>(&::optimization_guide::proto::BrowserBasedTodosResponse_globals_);
}
inline const ::optimization_guide::proto::BrowserBasedTodosResponse& ContextHubResponse::browser_based_todos_response() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubResponse.browser_based_todos_response)
  return _internal_browser_based_todos_response();
}
inline ::optimization_guide::proto::BrowserBasedTodosResponse* PROTOBUF_NULLABLE ContextHubResponse::unsafe_arena_release_browser_based_todos_response() {
  // @@protoc_insertion_point(field_unsafe_arena_release:optimization_guide.proto.ContextHubResponse.browser_based_todos_response)
  if (feature_response_case() == kBrowserBasedTodosResponse) {
    clear_has_feature_response();
    auto* temp = reinterpret_cast<::optimization_guide::proto::BrowserBasedTodosResponse*>(_impl_.feature_response_.browser_based_todos_response_);
    _impl_.feature_response_.browser_based_todos_response_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ContextHubResponse::unsafe_arena_set_allocated_browser_based_todos_response(
    ::optimization_guide::proto::BrowserBasedTodosResponse* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_feature_response();
  if (value) {
    set_has_browser_based_todos_response();
    _impl_.feature_response_.browser_based_todos_response_ = reinterpret_cast<::google::protobuf::MessageLite*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:optimization_guide.proto.ContextHubResponse.browser_based_todos_response)
}
inline ::optimization_guide::proto::BrowserBasedTodosResponse* PROTOBUF_NONNULL ContextHubResponse::_internal_mutable_browser_based_todos_response() {
  if (feature_response_case() != kBrowserBasedTodosResponse) {
    clear_feature_response();
    set_has_browser_based_todos_response();
    _impl_.feature_response_.browser_based_todos_response_ = reinterpret_cast<::google::protobuf::MessageLite*>(
        ::google::protobuf::MessageLite::DefaultConstruct<::optimization_guide::proto::BrowserBasedTodosResponse>(GetArena()));
  }
  return reinterpret_cast<::optimization_guide::proto::BrowserBasedTodosResponse*>(_impl_.feature_response_.browser_based_todos_response_);
}
inline ::optimization_guide::proto::BrowserBasedTodosResponse* PROTOBUF_NONNULL ContextHubResponse::mutable_browser_based_todos_response()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::optimization_guide::proto::BrowserBasedTodosResponse* _msg = _internal_mutable_browser_based_todos_response();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubResponse.browser_based_todos_response)
  return _msg;
}

// .optimization_guide.proto.AutoTodosDeduplicationResponse auto_todos_deduplication_response = 4;
inline bool ContextHubResponse::has_auto_todos_deduplication_response() const {
  return feature_response_case() == kAutoTodosDeduplicationResponse;
}
inline bool ContextHubResponse::_internal_has_auto_todos_deduplication_response() const {
  return feature_response_case() == kAutoTodosDeduplicationResponse;
}
inline void ContextHubResponse::set_has_auto_todos_deduplication_response() {
  _impl_._oneof_case_[0] = kAutoTodosDeduplicationResponse;
}
inline void ContextHubResponse::clear_auto_todos_deduplication_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (feature_response_case() == kAutoTodosDeduplicationResponse) {
    if (GetArena() == nullptr) {
      delete _impl_.feature_response_.auto_todos_deduplication_response_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      if (_impl_.feature_response_.auto_todos_deduplication_response_ != nullptr) {
        _impl_.feature_response_.auto_todos_deduplication_response_->Clear();
      }
    }
    clear_has_feature_response();
  }
}
inline ::optimization_guide::proto::AutoTodosDeduplicationResponse* PROTOBUF_NULLABLE ContextHubResponse::release_auto_todos_deduplication_response() {
  // @@protoc_insertion_point(field_release:optimization_guide.proto.ContextHubResponse.auto_todos_deduplication_response)
  if (feature_response_case() == kAutoTodosDeduplicationResponse) {
    clear_has_feature_response();
    auto* temp = reinterpret_cast<::optimization_guide::proto::AutoTodosDeduplicationResponse*>(_impl_.feature_response_.auto_todos_deduplication_response_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.feature_response_.auto_todos_deduplication_response_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::optimization_guide::proto::AutoTodosDeduplicationResponse& ContextHubResponse::_internal_auto_todos_deduplication_response() const {
  return feature_response_case() == kAutoTodosDeduplicationResponse ? static_cast<const ::optimization_guide::proto::AutoTodosDeduplicationResponse&>(*reinterpret_cast<::optimization_guide::proto::AutoTodosDeduplicationResponse*>(_impl_.feature_response_.auto_todos_deduplication_response_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::optimization_guide::proto::AutoTodosDeduplicationResponse>(&::optimization_guide::proto::AutoTodosDeduplicationResponse_globals_);
}
inline const ::optimization_guide::proto::AutoTodosDeduplicationResponse& ContextHubResponse::auto_todos_deduplication_response() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.ContextHubResponse.auto_todos_deduplication_response)
  return _internal_auto_todos_deduplication_response();
}
inline ::optimization_guide::proto::AutoTodosDeduplicationResponse* PROTOBUF_NULLABLE ContextHubResponse::unsafe_arena_release_auto_todos_deduplication_response() {
  // @@protoc_insertion_point(field_unsafe_arena_release:optimization_guide.proto.ContextHubResponse.auto_todos_deduplication_response)
  if (feature_response_case() == kAutoTodosDeduplicationResponse) {
    clear_has_feature_response();
    auto* temp = reinterpret_cast<::optimization_guide::proto::AutoTodosDeduplicationResponse*>(_impl_.feature_response_.auto_todos_deduplication_response_);
    _impl_.feature_response_.auto_todos_deduplication_response_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ContextHubResponse::unsafe_arena_set_allocated_auto_todos_deduplication_response(
    ::optimization_guide::proto::AutoTodosDeduplicationResponse* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_feature_response();
  if (value) {
    set_has_auto_todos_deduplication_response();
    _impl_.feature_response_.auto_todos_deduplication_response_ = reinterpret_cast<::google::protobuf::MessageLite*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:optimization_guide.proto.ContextHubResponse.auto_todos_deduplication_response)
}
inline ::optimization_guide::proto::AutoTodosDeduplicationResponse* PROTOBUF_NONNULL ContextHubResponse::_internal_mutable_auto_todos_deduplication_response() {
  if (feature_response_case() != kAutoTodosDeduplicationResponse) {
    clear_feature_response();
    set_has_auto_todos_deduplication_response();
    _impl_.feature_response_.auto_todos_deduplication_response_ = reinterpret_cast<::google::protobuf::MessageLite*>(
        ::google::protobuf::MessageLite::DefaultConstruct<::optimization_guide::proto::AutoTodosDeduplicationResponse>(GetArena()));
  }
  return reinterpret_cast<::optimization_guide::proto::AutoTodosDeduplicationResponse*>(_impl_.feature_response_.auto_todos_deduplication_response_);
}
inline ::optimization_guide::proto::AutoTodosDeduplicationResponse* PROTOBUF_NONNULL ContextHubResponse::mutable_auto_todos_deduplication_response()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::optimization_guide::proto::AutoTodosDeduplicationResponse* _msg = _internal_mutable_auto_todos_deduplication_response();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.ContextHubResponse.auto_todos_deduplication_response)
  return _msg;
}

inline bool ContextHubResponse::has_feature_response() const {
  return feature_response_case() != FEATURE_RESPONSE_NOT_SET;
}
inline void ContextHubResponse::clear_has_feature_response() {
  _impl_._oneof_case_[0] = FEATURE_RESPONSE_NOT_SET;
}
inline ContextHubResponse::FeatureResponseCase ContextHubResponse::feature_response_case() const {
  return ContextHubResponse::FeatureResponseCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// GroupResponse

// repeated .optimization_guide.proto.TabGroup tab_groups = 1;
inline int GroupResponse::_internal_tab_groups_size() const {
  return _internal_tab_groups().size();
}
inline int GroupResponse::tab_groups_size() const {
  return _internal_tab_groups_size();
}
inline const ::optimization_guide::proto::TabGroup& GroupResponse::tab_groups(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.GroupResponse.tab_groups)
  return _internal_tab_groups().Get(index);
}
inline ::optimization_guide::proto::TabGroup* PROTOBUF_NONNULL GroupResponse::mutable_tab_groups(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.GroupResponse.tab_groups)
  return _internal_mutable_tab_groups()->Mutable(index);
}
inline ::optimization_guide::proto::TabGroup* PROTOBUF_NONNULL GroupResponse::add_tab_groups()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::optimization_guide::proto::TabGroup* _add =
      _internal_mutable_tab_groups()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:optimization_guide.proto.GroupResponse.tab_groups)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroup>& GroupResponse::tab_groups() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:optimization_guide.proto.GroupResponse.tab_groups)
  return _internal_tab_groups();
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroup>* PROTOBUF_NONNULL
GroupResponse::mutable_tab_groups() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:optimization_guide.proto.GroupResponse.tab_groups)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tab_groups();
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroup>&
GroupResponse::_internal_tab_groups() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tab_groups_;
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroup>* PROTOBUF_NONNULL
GroupResponse::_internal_mutable_tab_groups() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tab_groups_;
}

// repeated .optimization_guide.proto.TabGroupMinimal minimal_tab_groups = 2;
inline int GroupResponse::_internal_minimal_tab_groups_size() const {
  return _internal_minimal_tab_groups().size();
}
inline int GroupResponse::minimal_tab_groups_size() const {
  return _internal_minimal_tab_groups_size();
}
inline const ::optimization_guide::proto::TabGroupMinimal& GroupResponse::minimal_tab_groups(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.GroupResponse.minimal_tab_groups)
  return _internal_minimal_tab_groups().Get(index);
}
inline ::optimization_guide::proto::TabGroupMinimal* PROTOBUF_NONNULL GroupResponse::mutable_minimal_tab_groups(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.GroupResponse.minimal_tab_groups)
  return _internal_mutable_minimal_tab_groups()->Mutable(index);
}
inline ::optimization_guide::proto::TabGroupMinimal* PROTOBUF_NONNULL GroupResponse::add_minimal_tab_groups()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::optimization_guide::proto::TabGroupMinimal* _add =
      _internal_mutable_minimal_tab_groups()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:optimization_guide.proto.GroupResponse.minimal_tab_groups)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>& GroupResponse::minimal_tab_groups() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:optimization_guide.proto.GroupResponse.minimal_tab_groups)
  return _internal_minimal_tab_groups();
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>* PROTOBUF_NONNULL
GroupResponse::mutable_minimal_tab_groups() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:optimization_guide.proto.GroupResponse.minimal_tab_groups)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_minimal_tab_groups();
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>&
GroupResponse::_internal_minimal_tab_groups() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.minimal_tab_groups_;
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::TabGroupMinimal>* PROTOBUF_NONNULL
GroupResponse::_internal_mutable_minimal_tab_groups() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.minimal_tab_groups_;
}

// repeated int64 ungrouped_tab_ids = 3;
inline int GroupResponse::_internal_ungrouped_tab_ids_size() const {
  return _internal_ungrouped_tab_ids().size();
}
inline int GroupResponse::ungrouped_tab_ids_size() const {
  return _internal_ungrouped_tab_ids_size();
}
inline void GroupResponse::clear_ungrouped_tab_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ungrouped_tab_ids_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::int64_t GroupResponse::ungrouped_tab_ids(int index) const {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.GroupResponse.ungrouped_tab_ids)
  return _internal_ungrouped_tab_ids().Get(index);
}
inline void GroupResponse::set_ungrouped_tab_ids(int index, ::int64_t value) {
  _internal_mutable_ungrouped_tab_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:optimization_guide.proto.GroupResponse.ungrouped_tab_ids)
}
inline void GroupResponse::add_ungrouped_tab_ids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_ungrouped_tab_ids()
      ->InternalAddWithArena<const ::google::protobuf::MessageLite*>(
          internal_visibility(), this, value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:optimization_guide.proto.GroupResponse.ungrouped_tab_ids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& GroupResponse::ungrouped_tab_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:optimization_guide.proto.GroupResponse.ungrouped_tab_ids)
  return _internal_ungrouped_tab_ids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL GroupResponse::mutable_ungrouped_tab_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:optimization_guide.proto.GroupResponse.ungrouped_tab_ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_ungrouped_tab_ids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
GroupResponse::_internal_ungrouped_tab_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ungrouped_tab_ids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
GroupResponse::_internal_mutable_ungrouped_tab_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.ungrouped_tab_ids_;
}

// string text_response = 4 [features = {
inline bool GroupResponse::has_text_response() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void GroupResponse::clear_text_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.text_response_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& GroupResponse::text_response() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.GroupResponse.text_response)
  return _internal_text_response();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void GroupResponse::set_text_response(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.text_response_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.GroupResponse.text_response)
}
inline ::std::string* PROTOBUF_NONNULL GroupResponse::mutable_text_response()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_text_response();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.GroupResponse.text_response)
  return _s;
}
inline const ::std::string& GroupResponse::_internal_text_response() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.text_response_.Get();
}
inline void GroupResponse::_internal_set_text_response(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.text_response_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL GroupResponse::_internal_mutable_text_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.text_response_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE GroupResponse::release_text_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.GroupResponse.text_response)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.text_response_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.text_response_.Set("", GetArena());
  }
  return released;
}
inline void GroupResponse::set_allocated_text_response(::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_.text_response_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.text_response_.IsDefault()) {
    _impl_.text_response_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.GroupResponse.text_response)
}

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

// MemoryBankChatResponse

// string text_response = 1 [features = {
inline bool MemoryBankChatResponse::has_text_response() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void MemoryBankChatResponse::clear_text_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.text_response_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& MemoryBankChatResponse::text_response() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.MemoryBankChatResponse.text_response)
  return _internal_text_response();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void MemoryBankChatResponse::set_text_response(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.text_response_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.MemoryBankChatResponse.text_response)
}
inline ::std::string* PROTOBUF_NONNULL MemoryBankChatResponse::mutable_text_response()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_text_response();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.MemoryBankChatResponse.text_response)
  return _s;
}
inline const ::std::string& MemoryBankChatResponse::_internal_text_response() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.text_response_.Get();
}
inline void MemoryBankChatResponse::_internal_set_text_response(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.text_response_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL MemoryBankChatResponse::_internal_mutable_text_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.text_response_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE MemoryBankChatResponse::release_text_response() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.MemoryBankChatResponse.text_response)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.text_response_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.text_response_.Set("", GetArena());
  }
  return released;
}
inline void MemoryBankChatResponse::set_allocated_text_response(::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_.text_response_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.text_response_.IsDefault()) {
    _impl_.text_response_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.MemoryBankChatResponse.text_response)
}

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

// BrowserBasedTodosResponse

// int64 tab_id = 1 [features = {
inline bool BrowserBasedTodosResponse::has_tab_id() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void BrowserBasedTodosResponse::clear_tab_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tab_id_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::int64_t BrowserBasedTodosResponse::tab_id() const {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.BrowserBasedTodosResponse.tab_id)
  return _internal_tab_id();
}
inline void BrowserBasedTodosResponse::set_tab_id(::int64_t value) {
  _internal_set_tab_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:optimization_guide.proto.BrowserBasedTodosResponse.tab_id)
}
inline ::int64_t BrowserBasedTodosResponse::_internal_tab_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tab_id_;
}
inline void BrowserBasedTodosResponse::_internal_set_tab_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tab_id_ = value;
}

// .optimization_guide.proto.BrowserBasedTodosResponse.GroupType group_type = 2 [features = {
inline bool BrowserBasedTodosResponse::has_group_type() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void BrowserBasedTodosResponse::clear_group_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.group_type_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::optimization_guide::proto::BrowserBasedTodosResponse_GroupType BrowserBasedTodosResponse::group_type() const {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.BrowserBasedTodosResponse.group_type)
  return _internal_group_type();
}
inline void BrowserBasedTodosResponse::set_group_type(::optimization_guide::proto::BrowserBasedTodosResponse_GroupType value) {
  _internal_set_group_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:optimization_guide.proto.BrowserBasedTodosResponse.group_type)
}
inline ::optimization_guide::proto::BrowserBasedTodosResponse_GroupType BrowserBasedTodosResponse::_internal_group_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::optimization_guide::proto::BrowserBasedTodosResponse_GroupType>(_impl_.group_type_);
}
inline void BrowserBasedTodosResponse::_internal_set_group_type(::optimization_guide::proto::BrowserBasedTodosResponse_GroupType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.group_type_ = value;
}

// string todo_title = 3 [features = {
inline bool BrowserBasedTodosResponse::has_todo_title() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void BrowserBasedTodosResponse::clear_todo_title() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.todo_title_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& BrowserBasedTodosResponse::todo_title() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.BrowserBasedTodosResponse.todo_title)
  return _internal_todo_title();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void BrowserBasedTodosResponse::set_todo_title(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.todo_title_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.BrowserBasedTodosResponse.todo_title)
}
inline ::std::string* PROTOBUF_NONNULL BrowserBasedTodosResponse::mutable_todo_title()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_todo_title();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.BrowserBasedTodosResponse.todo_title)
  return _s;
}
inline const ::std::string& BrowserBasedTodosResponse::_internal_todo_title() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.todo_title_.Get();
}
inline void BrowserBasedTodosResponse::_internal_set_todo_title(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.todo_title_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL BrowserBasedTodosResponse::_internal_mutable_todo_title() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.todo_title_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE BrowserBasedTodosResponse::release_todo_title() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.BrowserBasedTodosResponse.todo_title)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.todo_title_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.todo_title_.Set("", GetArena());
  }
  return released;
}
inline void BrowserBasedTodosResponse::set_allocated_todo_title(::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_.todo_title_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.todo_title_.IsDefault()) {
    _impl_.todo_title_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.BrowserBasedTodosResponse.todo_title)
}

// string todo_description = 4 [features = {
inline bool BrowserBasedTodosResponse::has_todo_description() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void BrowserBasedTodosResponse::clear_todo_description() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.todo_description_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& BrowserBasedTodosResponse::todo_description() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.BrowserBasedTodosResponse.todo_description)
  return _internal_todo_description();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void BrowserBasedTodosResponse::set_todo_description(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.todo_description_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:optimization_guide.proto.BrowserBasedTodosResponse.todo_description)
}
inline ::std::string* PROTOBUF_NONNULL BrowserBasedTodosResponse::mutable_todo_description()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_todo_description();
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.BrowserBasedTodosResponse.todo_description)
  return _s;
}
inline const ::std::string& BrowserBasedTodosResponse::_internal_todo_description() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.todo_description_.Get();
}
inline void BrowserBasedTodosResponse::_internal_set_todo_description(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.todo_description_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL BrowserBasedTodosResponse::_internal_mutable_todo_description() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.todo_description_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE BrowserBasedTodosResponse::release_todo_description() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:optimization_guide.proto.BrowserBasedTodosResponse.todo_description)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.todo_description_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.todo_description_.Set("", GetArena());
  }
  return released;
}
inline void BrowserBasedTodosResponse::set_allocated_todo_description(::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_.todo_description_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.todo_description_.IsDefault()) {
    _impl_.todo_description_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:optimization_guide.proto.BrowserBasedTodosResponse.todo_description)
}

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

// AutoTodosDeduplicationResponse

// repeated .optimization_guide.proto.ContextHubAutoTodoItem deduplicated_todos = 1;
inline int AutoTodosDeduplicationResponse::_internal_deduplicated_todos_size() const {
  return _internal_deduplicated_todos().size();
}
inline int AutoTodosDeduplicationResponse::deduplicated_todos_size() const {
  return _internal_deduplicated_todos_size();
}
inline void AutoTodosDeduplicationResponse::clear_deduplicated_todos() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.deduplicated_todos_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::optimization_guide::proto::ContextHubAutoTodoItem& AutoTodosDeduplicationResponse::deduplicated_todos(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:optimization_guide.proto.AutoTodosDeduplicationResponse.deduplicated_todos)
  return _internal_deduplicated_todos().Get(index);
}
inline ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL AutoTodosDeduplicationResponse::mutable_deduplicated_todos(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:optimization_guide.proto.AutoTodosDeduplicationResponse.deduplicated_todos)
  return _internal_mutable_deduplicated_todos()->Mutable(index);
}
inline ::optimization_guide::proto::ContextHubAutoTodoItem* PROTOBUF_NONNULL AutoTodosDeduplicationResponse::add_deduplicated_todos()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::optimization_guide::proto::ContextHubAutoTodoItem* _add =
      _internal_mutable_deduplicated_todos()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:optimization_guide.proto.AutoTodosDeduplicationResponse.deduplicated_todos)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>& AutoTodosDeduplicationResponse::deduplicated_todos() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:optimization_guide.proto.AutoTodosDeduplicationResponse.deduplicated_todos)
  return _internal_deduplicated_todos();
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL
AutoTodosDeduplicationResponse::mutable_deduplicated_todos() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:optimization_guide.proto.AutoTodosDeduplicationResponse.deduplicated_todos)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_deduplicated_todos();
}
inline const ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>&
AutoTodosDeduplicationResponse::_internal_deduplicated_todos() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.deduplicated_todos_;
}
inline ::google::protobuf::RepeatedPtrField<::optimization_guide::proto::ContextHubAutoTodoItem>* PROTOBUF_NONNULL
AutoTodosDeduplicationResponse::_internal_mutable_deduplicated_todos() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.deduplicated_todos_;
}

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

// @@protoc_insertion_point(namespace_scope)
}  // namespace proto
}  // namespace optimization_guide


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::optimization_guide::proto::ChatHistoryTurn_Role> : std::true_type {};
template <>
struct internal::LiteEnumFuncs<::optimization_guide::proto::ChatHistoryTurn_Role> {
  static constexpr bool kIsDefined = true;
  static constexpr auto kParseFunc = ::optimization_guide::proto::ChatHistoryTurn_Role_Parse;
  static constexpr auto kNameFunc = ::optimization_guide::proto::ChatHistoryTurn_Role_Name<int>;
};
template <>
struct is_proto_enum<::optimization_guide::proto::ContextHubAutoTodoItem_Status> : std::true_type {};
template <>
struct internal::LiteEnumFuncs<::optimization_guide::proto::ContextHubAutoTodoItem_Status> {
  static constexpr bool kIsDefined = true;
  static constexpr auto kParseFunc = ::optimization_guide::proto::ContextHubAutoTodoItem_Status_Parse;
  static constexpr auto kNameFunc = ::optimization_guide::proto::ContextHubAutoTodoItem_Status_Name<int>;
};
template <>
struct is_proto_enum<::optimization_guide::proto::BrowserBasedTodosResponse_GroupType> : std::true_type {};
template <>
struct internal::LiteEnumFuncs<::optimization_guide::proto::BrowserBasedTodosResponse_GroupType> {
  static constexpr bool kIsDefined = true;
  static constexpr auto kParseFunc = ::optimization_guide::proto::BrowserBasedTodosResponse_GroupType_Parse;
  static constexpr auto kNameFunc = ::optimization_guide::proto::BrowserBasedTodosResponse_GroupType_Name<int>;
};
template <>
struct is_proto_enum<::optimization_guide::proto::ContextHubRequestType> : std::true_type {};
template <>
struct internal::LiteEnumFuncs<::optimization_guide::proto::ContextHubRequestType> {
  static constexpr bool kIsDefined = true;
  static constexpr auto kParseFunc = ::optimization_guide::proto::ContextHubRequestType_Parse;
  static constexpr auto kNameFunc = ::optimization_guide::proto::ContextHubRequestType_Name<int>;
};
template <>
struct is_proto_enum<::optimization_guide::proto::MemoryBankType> : std::true_type {};
template <>
struct internal::LiteEnumFuncs<::optimization_guide::proto::MemoryBankType> {
  static constexpr bool kIsDefined = true;
  static constexpr auto kParseFunc = ::optimization_guide::proto::MemoryBankType_Parse;
  static constexpr auto kNameFunc = ::optimization_guide::proto::MemoryBankType_Name<int>;
};

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

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

#endif  // components_2foptimization_5fguide_2fproto_2ffeatures_2fcontext_5fhub_2eproto_2epb_2eh
