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

#ifndef messages_2eproto_2epb_2eh
#define messages_2eproto_2epb_2eh

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

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 6033000
#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_bases.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/generated_message_reflection.h"
#include "google/protobuf/message.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/map.h"  // IWYU pragma: export
#include "google/protobuf/map_type_handler.h"  // IWYU pragma: export
#include "google/protobuf/map_entry.h"
#include "google/protobuf/map_field.h"
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_messages_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_messages_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
extern const ::google::protobuf::internal::DescriptorTable descriptor_table_messages_2eproto;
}  // extern "C"
namespace saengra_api {
enum ApplyUpdatesResponse_Status : int;
extern const uint32_t ApplyUpdatesResponse_Status_internal_data_[];
enum ApplyUpdates_Update_UpdateKind : int;
extern const uint32_t ApplyUpdates_Update_UpdateKind_internal_data_[];
enum CommitResponse_Observation_ObservationType : int;
extern const uint32_t CommitResponse_Observation_ObservationType_internal_data_[];
enum CommitResponse_Status : int;
extern const uint32_t CommitResponse_Status_internal_data_[];
enum ConnectResponse_Status : int;
extern const uint32_t ConnectResponse_Status_internal_data_[];
enum FindResponse_Status : int;
extern const uint32_t FindResponse_Status_internal_data_[];
enum MatchResponse_Status : int;
extern const uint32_t MatchResponse_Status_internal_data_[];
enum ObserveResponse_Status : int;
extern const uint32_t ObserveResponse_Status_internal_data_[];
enum Position_PositionKind : int;
extern const uint32_t Position_PositionKind_internal_data_[];
enum RollbackResponse_Status : int;
extern const uint32_t RollbackResponse_Status_internal_data_[];
class ApplyUpdates;
struct ApplyUpdatesDefaultTypeInternal;
extern ApplyUpdatesDefaultTypeInternal _ApplyUpdates_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ApplyUpdates_class_data_;
class ApplyUpdatesResponse;
struct ApplyUpdatesResponseDefaultTypeInternal;
extern ApplyUpdatesResponseDefaultTypeInternal _ApplyUpdatesResponse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ApplyUpdatesResponse_class_data_;
class ApplyUpdates_Update;
struct ApplyUpdates_UpdateDefaultTypeInternal;
extern ApplyUpdates_UpdateDefaultTypeInternal _ApplyUpdates_Update_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ApplyUpdates_Update_class_data_;
class Commit;
struct CommitDefaultTypeInternal;
extern CommitDefaultTypeInternal _Commit_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Commit_class_data_;
class CommitResponse;
struct CommitResponseDefaultTypeInternal;
extern CommitResponseDefaultTypeInternal _CommitResponse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull CommitResponse_class_data_;
class CommitResponse_Observation;
struct CommitResponse_ObservationDefaultTypeInternal;
extern CommitResponse_ObservationDefaultTypeInternal _CommitResponse_Observation_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull CommitResponse_Observation_class_data_;
class CommitResponse_Observation_VariablesEntry_DoNotUse;
struct CommitResponse_Observation_VariablesEntry_DoNotUseDefaultTypeInternal;
extern CommitResponse_Observation_VariablesEntry_DoNotUseDefaultTypeInternal _CommitResponse_Observation_VariablesEntry_DoNotUse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull CommitResponse_Observation_VariablesEntry_DoNotUse_class_data_;
class Connect;
struct ConnectDefaultTypeInternal;
extern ConnectDefaultTypeInternal _Connect_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Connect_class_data_;
class ConnectResponse;
struct ConnectResponseDefaultTypeInternal;
extern ConnectResponseDefaultTypeInternal _ConnectResponse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ConnectResponse_class_data_;
class Edge;
struct EdgeDefaultTypeInternal;
extern EdgeDefaultTypeInternal _Edge_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Edge_class_data_;
class Find;
struct FindDefaultTypeInternal;
extern FindDefaultTypeInternal _Find_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Find_class_data_;
class FindResponse;
struct FindResponseDefaultTypeInternal;
extern FindResponseDefaultTypeInternal _FindResponse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull FindResponse_class_data_;
class Match;
struct MatchDefaultTypeInternal;
extern MatchDefaultTypeInternal _Match_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Match_class_data_;
class MatchResponse;
struct MatchResponseDefaultTypeInternal;
extern MatchResponseDefaultTypeInternal _MatchResponse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull MatchResponse_class_data_;
class Observe;
struct ObserveDefaultTypeInternal;
extern ObserveDefaultTypeInternal _Observe_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Observe_class_data_;
class ObserveResponse;
struct ObserveResponseDefaultTypeInternal;
extern ObserveResponseDefaultTypeInternal _ObserveResponse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ObserveResponse_class_data_;
class Observe_Observer;
struct Observe_ObserverDefaultTypeInternal;
extern Observe_ObserverDefaultTypeInternal _Observe_Observer_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Observe_Observer_class_data_;
class Position;
struct PositionDefaultTypeInternal;
extern PositionDefaultTypeInternal _Position_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Position_class_data_;
class Request;
struct RequestDefaultTypeInternal;
extern RequestDefaultTypeInternal _Request_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Request_class_data_;
class Response;
struct ResponseDefaultTypeInternal;
extern ResponseDefaultTypeInternal _Response_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Response_class_data_;
class Rollback;
struct RollbackDefaultTypeInternal;
extern RollbackDefaultTypeInternal _Rollback_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Rollback_class_data_;
class RollbackResponse;
struct RollbackResponseDefaultTypeInternal;
extern RollbackResponseDefaultTypeInternal _RollbackResponse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull RollbackResponse_class_data_;
class Subgraph;
struct SubgraphDefaultTypeInternal;
extern SubgraphDefaultTypeInternal _Subgraph_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Subgraph_class_data_;
class Subgraph_RefsEntry_DoNotUse;
struct Subgraph_RefsEntry_DoNotUseDefaultTypeInternal;
extern Subgraph_RefsEntry_DoNotUseDefaultTypeInternal _Subgraph_RefsEntry_DoNotUse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Subgraph_RefsEntry_DoNotUse_class_data_;
class Vertex;
struct VertexDefaultTypeInternal;
extern VertexDefaultTypeInternal _Vertex_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Vertex_class_data_;
}  // namespace saengra_api
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::saengra_api::ApplyUpdatesResponse_Status_internal_data_>
    internal::EnumTraitsImpl::value<::saengra_api::ApplyUpdatesResponse_Status>;
template <>
internal::EnumTraitsT<::saengra_api::ApplyUpdates_Update_UpdateKind_internal_data_>
    internal::EnumTraitsImpl::value<::saengra_api::ApplyUpdates_Update_UpdateKind>;
template <>
internal::EnumTraitsT<::saengra_api::CommitResponse_Observation_ObservationType_internal_data_>
    internal::EnumTraitsImpl::value<::saengra_api::CommitResponse_Observation_ObservationType>;
template <>
internal::EnumTraitsT<::saengra_api::CommitResponse_Status_internal_data_>
    internal::EnumTraitsImpl::value<::saengra_api::CommitResponse_Status>;
template <>
internal::EnumTraitsT<::saengra_api::ConnectResponse_Status_internal_data_>
    internal::EnumTraitsImpl::value<::saengra_api::ConnectResponse_Status>;
template <>
internal::EnumTraitsT<::saengra_api::FindResponse_Status_internal_data_>
    internal::EnumTraitsImpl::value<::saengra_api::FindResponse_Status>;
template <>
internal::EnumTraitsT<::saengra_api::MatchResponse_Status_internal_data_>
    internal::EnumTraitsImpl::value<::saengra_api::MatchResponse_Status>;
template <>
internal::EnumTraitsT<::saengra_api::ObserveResponse_Status_internal_data_>
    internal::EnumTraitsImpl::value<::saengra_api::ObserveResponse_Status>;
template <>
internal::EnumTraitsT<::saengra_api::Position_PositionKind_internal_data_>
    internal::EnumTraitsImpl::value<::saengra_api::Position_PositionKind>;
template <>
internal::EnumTraitsT<::saengra_api::RollbackResponse_Status_internal_data_>
    internal::EnumTraitsImpl::value<::saengra_api::RollbackResponse_Status>;
}  // namespace protobuf
}  // namespace google

namespace saengra_api {
enum Position_PositionKind : int {
  Position_PositionKind_CORE = 0,
  Position_PositionKind_ORBIT = 1,
  Position_PositionKind_Position_PositionKind_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  Position_PositionKind_Position_PositionKind_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t Position_PositionKind_internal_data_[];
inline constexpr Position_PositionKind Position_PositionKind_PositionKind_MIN =
    static_cast<Position_PositionKind>(0);
inline constexpr Position_PositionKind Position_PositionKind_PositionKind_MAX =
    static_cast<Position_PositionKind>(1);
inline bool Position_PositionKind_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int Position_PositionKind_PositionKind_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Position_PositionKind_descriptor();
template <typename T>
const ::std::string& Position_PositionKind_Name(T value) {
  static_assert(::std::is_same<T, Position_PositionKind>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to PositionKind_Name().");
  return Position_PositionKind_Name(static_cast<Position_PositionKind>(value));
}
template <>
inline const ::std::string& Position_PositionKind_Name(Position_PositionKind value) {
  return ::google::protobuf::internal::NameOfDenseEnum<Position_PositionKind_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool Position_PositionKind_Parse(
    ::absl::string_view name, Position_PositionKind* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<Position_PositionKind>(Position_PositionKind_descriptor(), name,
                                           value);
}
enum ApplyUpdates_Update_UpdateKind : int {
  ApplyUpdates_Update_UpdateKind_ADD_VERTEX = 0,
  ApplyUpdates_Update_UpdateKind_ADD_EDGE = 1,
  ApplyUpdates_Update_UpdateKind_REMOVE_VERTEX = 2,
  ApplyUpdates_Update_UpdateKind_REMOVE_EDGE = 3,
  ApplyUpdates_Update_UpdateKind_REMOVE_EDGES_TO_ALL = 4,
  ApplyUpdates_Update_UpdateKind_ApplyUpdates_Update_UpdateKind_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ApplyUpdates_Update_UpdateKind_ApplyUpdates_Update_UpdateKind_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t ApplyUpdates_Update_UpdateKind_internal_data_[];
inline constexpr ApplyUpdates_Update_UpdateKind ApplyUpdates_Update_UpdateKind_UpdateKind_MIN =
    static_cast<ApplyUpdates_Update_UpdateKind>(0);
inline constexpr ApplyUpdates_Update_UpdateKind ApplyUpdates_Update_UpdateKind_UpdateKind_MAX =
    static_cast<ApplyUpdates_Update_UpdateKind>(4);
inline bool ApplyUpdates_Update_UpdateKind_IsValid(int value) {
  return 0 <= value && value <= 4;
}
inline constexpr int ApplyUpdates_Update_UpdateKind_UpdateKind_ARRAYSIZE = 4 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ApplyUpdates_Update_UpdateKind_descriptor();
template <typename T>
const ::std::string& ApplyUpdates_Update_UpdateKind_Name(T value) {
  static_assert(::std::is_same<T, ApplyUpdates_Update_UpdateKind>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to UpdateKind_Name().");
  return ApplyUpdates_Update_UpdateKind_Name(static_cast<ApplyUpdates_Update_UpdateKind>(value));
}
template <>
inline const ::std::string& ApplyUpdates_Update_UpdateKind_Name(ApplyUpdates_Update_UpdateKind value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ApplyUpdates_Update_UpdateKind_descriptor, 0, 4>(
      static_cast<int>(value));
}
inline bool ApplyUpdates_Update_UpdateKind_Parse(
    ::absl::string_view name, ApplyUpdates_Update_UpdateKind* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ApplyUpdates_Update_UpdateKind>(ApplyUpdates_Update_UpdateKind_descriptor(), name,
                                           value);
}
enum ConnectResponse_Status : int {
  ConnectResponse_Status_OK = 0,
  ConnectResponse_Status_NOT_CONNECTED = 1,
  ConnectResponse_Status_ConnectResponse_Status_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ConnectResponse_Status_ConnectResponse_Status_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t ConnectResponse_Status_internal_data_[];
inline constexpr ConnectResponse_Status ConnectResponse_Status_Status_MIN =
    static_cast<ConnectResponse_Status>(0);
inline constexpr ConnectResponse_Status ConnectResponse_Status_Status_MAX =
    static_cast<ConnectResponse_Status>(1);
inline bool ConnectResponse_Status_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int ConnectResponse_Status_Status_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ConnectResponse_Status_descriptor();
template <typename T>
const ::std::string& ConnectResponse_Status_Name(T value) {
  static_assert(::std::is_same<T, ConnectResponse_Status>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Status_Name().");
  return ConnectResponse_Status_Name(static_cast<ConnectResponse_Status>(value));
}
template <>
inline const ::std::string& ConnectResponse_Status_Name(ConnectResponse_Status value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ConnectResponse_Status_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool ConnectResponse_Status_Parse(
    ::absl::string_view name, ConnectResponse_Status* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ConnectResponse_Status>(ConnectResponse_Status_descriptor(), name,
                                           value);
}
enum ApplyUpdatesResponse_Status : int {
  ApplyUpdatesResponse_Status_OK = 0,
  ApplyUpdatesResponse_Status_NOT_CONNECTED = 1,
  ApplyUpdatesResponse_Status_ApplyUpdatesResponse_Status_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ApplyUpdatesResponse_Status_ApplyUpdatesResponse_Status_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t ApplyUpdatesResponse_Status_internal_data_[];
inline constexpr ApplyUpdatesResponse_Status ApplyUpdatesResponse_Status_Status_MIN =
    static_cast<ApplyUpdatesResponse_Status>(0);
inline constexpr ApplyUpdatesResponse_Status ApplyUpdatesResponse_Status_Status_MAX =
    static_cast<ApplyUpdatesResponse_Status>(1);
inline bool ApplyUpdatesResponse_Status_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int ApplyUpdatesResponse_Status_Status_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ApplyUpdatesResponse_Status_descriptor();
template <typename T>
const ::std::string& ApplyUpdatesResponse_Status_Name(T value) {
  static_assert(::std::is_same<T, ApplyUpdatesResponse_Status>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Status_Name().");
  return ApplyUpdatesResponse_Status_Name(static_cast<ApplyUpdatesResponse_Status>(value));
}
template <>
inline const ::std::string& ApplyUpdatesResponse_Status_Name(ApplyUpdatesResponse_Status value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ApplyUpdatesResponse_Status_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool ApplyUpdatesResponse_Status_Parse(
    ::absl::string_view name, ApplyUpdatesResponse_Status* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ApplyUpdatesResponse_Status>(ApplyUpdatesResponse_Status_descriptor(), name,
                                           value);
}
enum CommitResponse_Observation_ObservationType : int {
  CommitResponse_Observation_ObservationType_ON_CREATE = 0,
  CommitResponse_Observation_ObservationType_ON_CHANGE = 1,
  CommitResponse_Observation_ObservationType_ON_DELETE = 2,
  CommitResponse_Observation_ObservationType_CommitResponse_Observation_ObservationType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  CommitResponse_Observation_ObservationType_CommitResponse_Observation_ObservationType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t CommitResponse_Observation_ObservationType_internal_data_[];
inline constexpr CommitResponse_Observation_ObservationType CommitResponse_Observation_ObservationType_ObservationType_MIN =
    static_cast<CommitResponse_Observation_ObservationType>(0);
inline constexpr CommitResponse_Observation_ObservationType CommitResponse_Observation_ObservationType_ObservationType_MAX =
    static_cast<CommitResponse_Observation_ObservationType>(2);
inline bool CommitResponse_Observation_ObservationType_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int CommitResponse_Observation_ObservationType_ObservationType_ARRAYSIZE = 2 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL CommitResponse_Observation_ObservationType_descriptor();
template <typename T>
const ::std::string& CommitResponse_Observation_ObservationType_Name(T value) {
  static_assert(::std::is_same<T, CommitResponse_Observation_ObservationType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ObservationType_Name().");
  return CommitResponse_Observation_ObservationType_Name(static_cast<CommitResponse_Observation_ObservationType>(value));
}
template <>
inline const ::std::string& CommitResponse_Observation_ObservationType_Name(CommitResponse_Observation_ObservationType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<CommitResponse_Observation_ObservationType_descriptor, 0, 2>(
      static_cast<int>(value));
}
inline bool CommitResponse_Observation_ObservationType_Parse(
    ::absl::string_view name, CommitResponse_Observation_ObservationType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<CommitResponse_Observation_ObservationType>(CommitResponse_Observation_ObservationType_descriptor(), name,
                                           value);
}
enum CommitResponse_Status : int {
  CommitResponse_Status_OK = 0,
  CommitResponse_Status_NOT_CONNECTED = 1,
  CommitResponse_Status_REQUIRES_REPEATED_COMMIT = 2,
  CommitResponse_Status_CommitResponse_Status_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  CommitResponse_Status_CommitResponse_Status_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t CommitResponse_Status_internal_data_[];
inline constexpr CommitResponse_Status CommitResponse_Status_Status_MIN =
    static_cast<CommitResponse_Status>(0);
inline constexpr CommitResponse_Status CommitResponse_Status_Status_MAX =
    static_cast<CommitResponse_Status>(2);
inline bool CommitResponse_Status_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int CommitResponse_Status_Status_ARRAYSIZE = 2 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL CommitResponse_Status_descriptor();
template <typename T>
const ::std::string& CommitResponse_Status_Name(T value) {
  static_assert(::std::is_same<T, CommitResponse_Status>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Status_Name().");
  return CommitResponse_Status_Name(static_cast<CommitResponse_Status>(value));
}
template <>
inline const ::std::string& CommitResponse_Status_Name(CommitResponse_Status value) {
  return ::google::protobuf::internal::NameOfDenseEnum<CommitResponse_Status_descriptor, 0, 2>(
      static_cast<int>(value));
}
inline bool CommitResponse_Status_Parse(
    ::absl::string_view name, CommitResponse_Status* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<CommitResponse_Status>(CommitResponse_Status_descriptor(), name,
                                           value);
}
enum RollbackResponse_Status : int {
  RollbackResponse_Status_OK = 0,
  RollbackResponse_Status_NOT_CONNECTED = 1,
  RollbackResponse_Status_RollbackResponse_Status_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  RollbackResponse_Status_RollbackResponse_Status_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t RollbackResponse_Status_internal_data_[];
inline constexpr RollbackResponse_Status RollbackResponse_Status_Status_MIN =
    static_cast<RollbackResponse_Status>(0);
inline constexpr RollbackResponse_Status RollbackResponse_Status_Status_MAX =
    static_cast<RollbackResponse_Status>(1);
inline bool RollbackResponse_Status_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int RollbackResponse_Status_Status_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL RollbackResponse_Status_descriptor();
template <typename T>
const ::std::string& RollbackResponse_Status_Name(T value) {
  static_assert(::std::is_same<T, RollbackResponse_Status>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Status_Name().");
  return RollbackResponse_Status_Name(static_cast<RollbackResponse_Status>(value));
}
template <>
inline const ::std::string& RollbackResponse_Status_Name(RollbackResponse_Status value) {
  return ::google::protobuf::internal::NameOfDenseEnum<RollbackResponse_Status_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool RollbackResponse_Status_Parse(
    ::absl::string_view name, RollbackResponse_Status* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<RollbackResponse_Status>(RollbackResponse_Status_descriptor(), name,
                                           value);
}
enum ObserveResponse_Status : int {
  ObserveResponse_Status_OK = 0,
  ObserveResponse_Status_NOT_CONNECTED = 1,
  ObserveResponse_Status_ObserveResponse_Status_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ObserveResponse_Status_ObserveResponse_Status_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t ObserveResponse_Status_internal_data_[];
inline constexpr ObserveResponse_Status ObserveResponse_Status_Status_MIN =
    static_cast<ObserveResponse_Status>(0);
inline constexpr ObserveResponse_Status ObserveResponse_Status_Status_MAX =
    static_cast<ObserveResponse_Status>(1);
inline bool ObserveResponse_Status_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int ObserveResponse_Status_Status_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ObserveResponse_Status_descriptor();
template <typename T>
const ::std::string& ObserveResponse_Status_Name(T value) {
  static_assert(::std::is_same<T, ObserveResponse_Status>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Status_Name().");
  return ObserveResponse_Status_Name(static_cast<ObserveResponse_Status>(value));
}
template <>
inline const ::std::string& ObserveResponse_Status_Name(ObserveResponse_Status value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ObserveResponse_Status_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool ObserveResponse_Status_Parse(
    ::absl::string_view name, ObserveResponse_Status* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ObserveResponse_Status>(ObserveResponse_Status_descriptor(), name,
                                           value);
}
enum FindResponse_Status : int {
  FindResponse_Status_OK = 0,
  FindResponse_Status_NOT_CONNECTED = 1,
  FindResponse_Status_FindResponse_Status_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  FindResponse_Status_FindResponse_Status_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t FindResponse_Status_internal_data_[];
inline constexpr FindResponse_Status FindResponse_Status_Status_MIN =
    static_cast<FindResponse_Status>(0);
inline constexpr FindResponse_Status FindResponse_Status_Status_MAX =
    static_cast<FindResponse_Status>(1);
inline bool FindResponse_Status_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int FindResponse_Status_Status_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL FindResponse_Status_descriptor();
template <typename T>
const ::std::string& FindResponse_Status_Name(T value) {
  static_assert(::std::is_same<T, FindResponse_Status>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Status_Name().");
  return FindResponse_Status_Name(static_cast<FindResponse_Status>(value));
}
template <>
inline const ::std::string& FindResponse_Status_Name(FindResponse_Status value) {
  return ::google::protobuf::internal::NameOfDenseEnum<FindResponse_Status_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool FindResponse_Status_Parse(
    ::absl::string_view name, FindResponse_Status* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<FindResponse_Status>(FindResponse_Status_descriptor(), name,
                                           value);
}
enum MatchResponse_Status : int {
  MatchResponse_Status_OK = 0,
  MatchResponse_Status_NOT_CONNECTED = 1,
  MatchResponse_Status_MatchResponse_Status_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  MatchResponse_Status_MatchResponse_Status_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t MatchResponse_Status_internal_data_[];
inline constexpr MatchResponse_Status MatchResponse_Status_Status_MIN =
    static_cast<MatchResponse_Status>(0);
inline constexpr MatchResponse_Status MatchResponse_Status_Status_MAX =
    static_cast<MatchResponse_Status>(1);
inline bool MatchResponse_Status_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int MatchResponse_Status_Status_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL MatchResponse_Status_descriptor();
template <typename T>
const ::std::string& MatchResponse_Status_Name(T value) {
  static_assert(::std::is_same<T, MatchResponse_Status>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Status_Name().");
  return MatchResponse_Status_Name(static_cast<MatchResponse_Status>(value));
}
template <>
inline const ::std::string& MatchResponse_Status_Name(MatchResponse_Status value) {
  return ::google::protobuf::internal::NameOfDenseEnum<MatchResponse_Status_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool MatchResponse_Status_Parse(
    ::absl::string_view name, MatchResponse_Status* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<MatchResponse_Status>(MatchResponse_Status_descriptor(), name,
                                           value);
}

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


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

class Vertex final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.Vertex) */ {
 public:
  inline Vertex() : Vertex(nullptr) {}
  ~Vertex() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Vertex(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Vertex& default_instance() {
    return *reinterpret_cast<const Vertex*>(
        &_Vertex_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(Vertex& a, Vertex& b) { a.Swap(&b); }
  inline void Swap(Vertex* 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(Vertex* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit Vertex(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Vertex(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Vertex& from);
  Vertex(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Vertex&& from) noexcept
      : Vertex(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeNameFieldNumber = 1,
    kValueFieldNumber = 2,
  };
  // bytes type_name = 1;
  void clear_type_name() ;
  const ::std::string& type_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_type_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_type_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_type_name();
  void set_allocated_type_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_type_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_type_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_type_name();

  public:
  // bytes value = 2;
  void clear_value() ;
  const ::std::string& value() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_value(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_value();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_value();
  void set_allocated_value(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_value() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_value(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.Vertex)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 Vertex& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr type_name_;
    ::google::protobuf::internal::ArenaStringPtr value_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Vertex_class_data_;
// -------------------------------------------------------------------

class RollbackResponse final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.RollbackResponse) */ {
 public:
  inline RollbackResponse() : RollbackResponse(nullptr) {}
  ~RollbackResponse() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR RollbackResponse(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const RollbackResponse& default_instance() {
    return *reinterpret_cast<const RollbackResponse*>(
        &_RollbackResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 21;
  friend void swap(RollbackResponse& a, RollbackResponse& b) { a.Swap(&b); }
  inline void Swap(RollbackResponse* 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(RollbackResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit RollbackResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  RollbackResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RollbackResponse& from);
  RollbackResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, RollbackResponse&& from) noexcept
      : RollbackResponse(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Status = RollbackResponse_Status;
  static constexpr Status OK = RollbackResponse_Status_OK;
  static constexpr Status NOT_CONNECTED = RollbackResponse_Status_NOT_CONNECTED;
  static inline bool Status_IsValid(int value) {
    return RollbackResponse_Status_IsValid(value);
  }
  static constexpr Status Status_MIN = RollbackResponse_Status_Status_MIN;
  static constexpr Status Status_MAX = RollbackResponse_Status_Status_MAX;
  static constexpr int Status_ARRAYSIZE = RollbackResponse_Status_Status_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Status_descriptor() {
    return RollbackResponse_Status_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Status_Name(T value) {
    return RollbackResponse_Status_Name(value);
  }
  static inline bool Status_Parse(
      ::absl::string_view name, Status* PROTOBUF_NONNULL value) {
    return RollbackResponse_Status_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kStatusFieldNumber = 1,
  };
  // .saengra_api.RollbackResponse.Status status = 1;
  void clear_status() ;
  ::saengra_api::RollbackResponse_Status status() const;
  void set_status(::saengra_api::RollbackResponse_Status value);

  private:
  ::saengra_api::RollbackResponse_Status _internal_status() const;
  void _internal_set_status(::saengra_api::RollbackResponse_Status value);

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.RollbackResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 RollbackResponse& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    int status_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull RollbackResponse_class_data_;
// -------------------------------------------------------------------

class Rollback final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:saengra_api.Rollback) */ {
 public:
  inline Rollback() : Rollback(nullptr) {}

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Rollback(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Rollback& default_instance() {
    return *reinterpret_cast<const Rollback*>(
        &_Rollback_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 10;
  friend void swap(Rollback& a, Rollback& b) { a.Swap(&b); }
  inline void Swap(Rollback* 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(Rollback* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  Rollback* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<Rollback>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const Rollback& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const Rollback& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
  bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "saengra_api.Rollback"; }

  explicit Rollback(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Rollback(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Rollback& from);
  Rollback(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Rollback&& from) noexcept
      : Rollback(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:saengra_api.Rollback)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 0,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Rollback_class_data_;
// -------------------------------------------------------------------

class ObserveResponse final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.ObserveResponse) */ {
 public:
  inline ObserveResponse() : ObserveResponse(nullptr) {}
  ~ObserveResponse() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ObserveResponse(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ObserveResponse& default_instance() {
    return *reinterpret_cast<const ObserveResponse*>(
        &_ObserveResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 22;
  friend void swap(ObserveResponse& a, ObserveResponse& b) { a.Swap(&b); }
  inline void Swap(ObserveResponse* 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(ObserveResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit ObserveResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ObserveResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ObserveResponse& from);
  ObserveResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ObserveResponse&& from) noexcept
      : ObserveResponse(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Status = ObserveResponse_Status;
  static constexpr Status OK = ObserveResponse_Status_OK;
  static constexpr Status NOT_CONNECTED = ObserveResponse_Status_NOT_CONNECTED;
  static inline bool Status_IsValid(int value) {
    return ObserveResponse_Status_IsValid(value);
  }
  static constexpr Status Status_MIN = ObserveResponse_Status_Status_MIN;
  static constexpr Status Status_MAX = ObserveResponse_Status_Status_MAX;
  static constexpr int Status_ARRAYSIZE = ObserveResponse_Status_Status_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Status_descriptor() {
    return ObserveResponse_Status_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Status_Name(T value) {
    return ObserveResponse_Status_Name(value);
  }
  static inline bool Status_Parse(
      ::absl::string_view name, Status* PROTOBUF_NONNULL value) {
    return ObserveResponse_Status_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kStatusFieldNumber = 1,
  };
  // .saengra_api.ObserveResponse.Status status = 1;
  void clear_status() ;
  ::saengra_api::ObserveResponse_Status status() const;
  void set_status(::saengra_api::ObserveResponse_Status value);

  private:
  ::saengra_api::ObserveResponse_Status _internal_status() const;
  void _internal_set_status(::saengra_api::ObserveResponse_Status value);

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.ObserveResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ObserveResponse& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    int status_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ObserveResponse_class_data_;
// -------------------------------------------------------------------

class ConnectResponse final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.ConnectResponse) */ {
 public:
  inline ConnectResponse() : ConnectResponse(nullptr) {}
  ~ConnectResponse() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ConnectResponse(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ConnectResponse& default_instance() {
    return *reinterpret_cast<const ConnectResponse*>(
        &_ConnectResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 16;
  friend void swap(ConnectResponse& a, ConnectResponse& b) { a.Swap(&b); }
  inline void Swap(ConnectResponse* 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(ConnectResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit ConnectResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ConnectResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ConnectResponse& from);
  ConnectResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ConnectResponse&& from) noexcept
      : ConnectResponse(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Status = ConnectResponse_Status;
  static constexpr Status OK = ConnectResponse_Status_OK;
  static constexpr Status NOT_CONNECTED = ConnectResponse_Status_NOT_CONNECTED;
  static inline bool Status_IsValid(int value) {
    return ConnectResponse_Status_IsValid(value);
  }
  static constexpr Status Status_MIN = ConnectResponse_Status_Status_MIN;
  static constexpr Status Status_MAX = ConnectResponse_Status_Status_MAX;
  static constexpr int Status_ARRAYSIZE = ConnectResponse_Status_Status_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Status_descriptor() {
    return ConnectResponse_Status_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Status_Name(T value) {
    return ConnectResponse_Status_Name(value);
  }
  static inline bool Status_Parse(
      ::absl::string_view name, Status* PROTOBUF_NONNULL value) {
    return ConnectResponse_Status_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kStatusFieldNumber = 1,
    kCreatedFieldNumber = 2,
  };
  // .saengra_api.ConnectResponse.Status status = 1;
  void clear_status() ;
  ::saengra_api::ConnectResponse_Status status() const;
  void set_status(::saengra_api::ConnectResponse_Status value);

  private:
  ::saengra_api::ConnectResponse_Status _internal_status() const;
  void _internal_set_status(::saengra_api::ConnectResponse_Status value);

  public:
  // bool created = 2;
  void clear_created() ;
  bool created() const;
  void set_created(bool value);

  private:
  bool _internal_created() const;
  void _internal_set_created(bool value);

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.ConnectResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ConnectResponse& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    int status_;
    bool created_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ConnectResponse_class_data_;
// -------------------------------------------------------------------

class Connect final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.Connect) */ {
 public:
  inline Connect() : Connect(nullptr) {}
  ~Connect() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Connect(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Connect& default_instance() {
    return *reinterpret_cast<const Connect*>(
        &_Connect_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(Connect& a, Connect& b) { a.Swap(&b); }
  inline void Swap(Connect* 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(Connect* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit Connect(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Connect(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Connect& from);
  Connect(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Connect&& from) noexcept
      : Connect(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kGraphIdFieldNumber = 1,
  };
  // string graph_id = 1;
  void clear_graph_id() ;
  const ::std::string& graph_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_graph_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_graph_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_graph_id();
  void set_allocated_graph_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_graph_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_graph_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_graph_id();

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.Connect)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 36,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 Connect& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr graph_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Connect_class_data_;
// -------------------------------------------------------------------

class Commit final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:saengra_api.Commit) */ {
 public:
  inline Commit() : Commit(nullptr) {}

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Commit(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Commit& default_instance() {
    return *reinterpret_cast<const Commit*>(
        &_Commit_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(Commit& a, Commit& b) { a.Swap(&b); }
  inline void Swap(Commit* 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(Commit* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  Commit* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<Commit>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const Commit& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const Commit& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
  bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "saengra_api.Commit"; }

  explicit Commit(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Commit(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Commit& from);
  Commit(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Commit&& from) noexcept
      : Commit(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:saengra_api.Commit)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 0,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Commit_class_data_;
// -------------------------------------------------------------------

class ApplyUpdatesResponse final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.ApplyUpdatesResponse) */ {
 public:
  inline ApplyUpdatesResponse() : ApplyUpdatesResponse(nullptr) {}
  ~ApplyUpdatesResponse() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ApplyUpdatesResponse(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ApplyUpdatesResponse& default_instance() {
    return *reinterpret_cast<const ApplyUpdatesResponse*>(
        &_ApplyUpdatesResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 17;
  friend void swap(ApplyUpdatesResponse& a, ApplyUpdatesResponse& b) { a.Swap(&b); }
  inline void Swap(ApplyUpdatesResponse* 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(ApplyUpdatesResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit ApplyUpdatesResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ApplyUpdatesResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ApplyUpdatesResponse& from);
  ApplyUpdatesResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ApplyUpdatesResponse&& from) noexcept
      : ApplyUpdatesResponse(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Status = ApplyUpdatesResponse_Status;
  static constexpr Status OK = ApplyUpdatesResponse_Status_OK;
  static constexpr Status NOT_CONNECTED = ApplyUpdatesResponse_Status_NOT_CONNECTED;
  static inline bool Status_IsValid(int value) {
    return ApplyUpdatesResponse_Status_IsValid(value);
  }
  static constexpr Status Status_MIN = ApplyUpdatesResponse_Status_Status_MIN;
  static constexpr Status Status_MAX = ApplyUpdatesResponse_Status_Status_MAX;
  static constexpr int Status_ARRAYSIZE = ApplyUpdatesResponse_Status_Status_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Status_descriptor() {
    return ApplyUpdatesResponse_Status_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Status_Name(T value) {
    return ApplyUpdatesResponse_Status_Name(value);
  }
  static inline bool Status_Parse(
      ::absl::string_view name, Status* PROTOBUF_NONNULL value) {
    return ApplyUpdatesResponse_Status_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kStatusFieldNumber = 1,
  };
  // .saengra_api.ApplyUpdatesResponse.Status status = 1;
  void clear_status() ;
  ::saengra_api::ApplyUpdatesResponse_Status status() const;
  void set_status(::saengra_api::ApplyUpdatesResponse_Status value);

  private:
  ::saengra_api::ApplyUpdatesResponse_Status _internal_status() const;
  void _internal_set_status(::saengra_api::ApplyUpdatesResponse_Status value);

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.ApplyUpdatesResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ApplyUpdatesResponse& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    int status_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ApplyUpdatesResponse_class_data_;
// -------------------------------------------------------------------

class Subgraph_RefsEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<::std::string, ::google::protobuf::Message,
                             ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                             ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<::std::string, ::google::protobuf::Message,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>;
  Subgraph_RefsEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Subgraph_RefsEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized);
  explicit Subgraph_RefsEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_default_instance() {
    return &_Subgraph_RefsEntry_DoNotUse_default_instance_;
  }


  static constexpr auto InternalGenerateClassData_();

 private:
  friend class ::google::protobuf::MessageLite;
  friend struct ::TableStruct_messages_2eproto;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 42,
                                   2>
      _table_;

  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_();
};
extern const ::google::protobuf::internal::ClassDataFull Subgraph_RefsEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

class Position final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.Position) */ {
 public:
  inline Position() : Position(nullptr) {}
  ~Position() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Position(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Position& default_instance() {
    return *reinterpret_cast<const Position*>(
        &_Position_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(Position& a, Position& b) { a.Swap(&b); }
  inline void Swap(Position* 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(Position* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit Position(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Position(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Position& from);
  Position(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Position&& from) noexcept
      : Position(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using PositionKind = Position_PositionKind;
  static constexpr PositionKind CORE = Position_PositionKind_CORE;
  static constexpr PositionKind ORBIT = Position_PositionKind_ORBIT;
  static inline bool PositionKind_IsValid(int value) {
    return Position_PositionKind_IsValid(value);
  }
  static constexpr PositionKind PositionKind_MIN = Position_PositionKind_PositionKind_MIN;
  static constexpr PositionKind PositionKind_MAX = Position_PositionKind_PositionKind_MAX;
  static constexpr int PositionKind_ARRAYSIZE = Position_PositionKind_PositionKind_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL PositionKind_descriptor() {
    return Position_PositionKind_descriptor();
  }
  template <typename T>
  static inline const ::std::string& PositionKind_Name(T value) {
    return Position_PositionKind_Name(value);
  }
  static inline bool PositionKind_Parse(
      ::absl::string_view name, PositionKind* PROTOBUF_NONNULL value) {
    return Position_PositionKind_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kVertexFieldNumber = 1,
    kKindFieldNumber = 2,
  };
  // .saengra_api.Vertex vertex = 1;
  bool has_vertex() const;
  void clear_vertex() ;
  const ::saengra_api::Vertex& vertex() const;
  [[nodiscard]] ::saengra_api::Vertex* PROTOBUF_NULLABLE release_vertex();
  ::saengra_api::Vertex* PROTOBUF_NONNULL mutable_vertex();
  void set_allocated_vertex(::saengra_api::Vertex* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_vertex(::saengra_api::Vertex* PROTOBUF_NULLABLE value);
  ::saengra_api::Vertex* PROTOBUF_NULLABLE unsafe_arena_release_vertex();

  private:
  const ::saengra_api::Vertex& _internal_vertex() const;
  ::saengra_api::Vertex* PROTOBUF_NONNULL _internal_mutable_vertex();

  public:
  // .saengra_api.Position.PositionKind kind = 2;
  void clear_kind() ;
  ::saengra_api::Position_PositionKind kind() const;
  void set_kind(::saengra_api::Position_PositionKind value);

  private:
  ::saengra_api::Position_PositionKind _internal_kind() const;
  void _internal_set_kind(::saengra_api::Position_PositionKind value);

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.Position)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 Position& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::saengra_api::Vertex* PROTOBUF_NULLABLE vertex_;
    int kind_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Position_class_data_;
// -------------------------------------------------------------------

class Observe_Observer final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.Observe.Observer) */ {
 public:
  inline Observe_Observer() : Observe_Observer(nullptr) {}
  ~Observe_Observer() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Observe_Observer(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Observe_Observer& default_instance() {
    return *reinterpret_cast<const Observe_Observer*>(
        &_Observe_Observer_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 11;
  friend void swap(Observe_Observer& a, Observe_Observer& b) { a.Swap(&b); }
  inline void Swap(Observe_Observer* 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(Observe_Observer* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit Observe_Observer(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Observe_Observer(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Observe_Observer& from);
  Observe_Observer(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Observe_Observer&& from) noexcept
      : Observe_Observer(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPlaceholderValuesFieldNumber = 3,
    kIdFieldNumber = 1,
    kExpressionFieldNumber = 2,
    kOnCreateFieldNumber = 4,
    kOnChangeFieldNumber = 5,
    kOnDeleteFieldNumber = 6,
  };
  // repeated .saengra_api.Vertex placeholder_values = 3;
  int placeholder_values_size() const;
  private:
  int _internal_placeholder_values_size() const;

  public:
  void clear_placeholder_values() ;
  ::saengra_api::Vertex* PROTOBUF_NONNULL mutable_placeholder_values(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL mutable_placeholder_values();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& _internal_placeholder_values() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL _internal_mutable_placeholder_values();
  public:
  const ::saengra_api::Vertex& placeholder_values(int index) const;
  ::saengra_api::Vertex* PROTOBUF_NONNULL add_placeholder_values();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& placeholder_values() const;
  // string id = 1;
  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();
  [[nodiscard]] ::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:
  // string expression = 2;
  void clear_expression() ;
  const ::std::string& expression() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_expression(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_expression();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_expression();
  void set_allocated_expression(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_expression() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_expression(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_expression();

  public:
  // bool on_create = 4;
  void clear_on_create() ;
  bool on_create() const;
  void set_on_create(bool value);

  private:
  bool _internal_on_create() const;
  void _internal_set_on_create(bool value);

  public:
  // bool on_change = 5;
  void clear_on_change() ;
  bool on_change() const;
  void set_on_change(bool value);

  private:
  bool _internal_on_change() const;
  void _internal_set_on_change(bool value);

  public:
  // bool on_delete = 6;
  void clear_on_delete() ;
  bool on_delete() const;
  void set_on_delete(bool value);

  private:
  bool _internal_on_delete() const;
  void _internal_set_on_delete(bool value);

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.Observe.Observer)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 6,
                                   1, 49,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 Observe_Observer& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::Vertex > placeholder_values_;
    ::google::protobuf::internal::ArenaStringPtr id_;
    ::google::protobuf::internal::ArenaStringPtr expression_;
    bool on_create_;
    bool on_change_;
    bool on_delete_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Observe_Observer_class_data_;
// -------------------------------------------------------------------

class Match final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.Match) */ {
 public:
  inline Match() : Match(nullptr) {}
  ~Match() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Match(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Match& default_instance() {
    return *reinterpret_cast<const Match*>(
        &_Match_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 14;
  friend void swap(Match& a, Match& b) { a.Swap(&b); }
  inline void Swap(Match* 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(Match* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit Match(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Match(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Match& from);
  Match(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Match&& from) noexcept
      : Match(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPlaceholderValuesFieldNumber = 2,
    kExpressionFieldNumber = 1,
  };
  // repeated .saengra_api.Vertex placeholder_values = 2;
  int placeholder_values_size() const;
  private:
  int _internal_placeholder_values_size() const;

  public:
  void clear_placeholder_values() ;
  ::saengra_api::Vertex* PROTOBUF_NONNULL mutable_placeholder_values(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL mutable_placeholder_values();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& _internal_placeholder_values() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL _internal_mutable_placeholder_values();
  public:
  const ::saengra_api::Vertex& placeholder_values(int index) const;
  ::saengra_api::Vertex* PROTOBUF_NONNULL add_placeholder_values();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& placeholder_values() const;
  // string expression = 1;
  void clear_expression() ;
  const ::std::string& expression() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_expression(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_expression();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_expression();
  void set_allocated_expression(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_expression() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_expression(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_expression();

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.Match)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 36,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 Match& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::Vertex > placeholder_values_;
    ::google::protobuf::internal::ArenaStringPtr expression_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Match_class_data_;
// -------------------------------------------------------------------

class Find final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.Find) */ {
 public:
  inline Find() : Find(nullptr) {}
  ~Find() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Find(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Find& default_instance() {
    return *reinterpret_cast<const Find*>(
        &_Find_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 13;
  friend void swap(Find& a, Find& b) { a.Swap(&b); }
  inline void Swap(Find* 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(Find* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit Find(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Find(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Find& from);
  Find(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Find&& from) noexcept
      : Find(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kToFieldNumber = 5,
    kFromFieldNumber = 6,
    kWithTypeNameFieldNumber = 2,
    kWithLabelFieldNumber = 4,
    kVerticesFieldNumber = 1,
    kEdgesFieldNumber = 3,
  };
  // repeated .saengra_api.Vertex to = 5;
  int to_size() const;
  private:
  int _internal_to_size() const;

  public:
  void clear_to() ;
  ::saengra_api::Vertex* PROTOBUF_NONNULL mutable_to(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL mutable_to();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& _internal_to() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL _internal_mutable_to();
  public:
  const ::saengra_api::Vertex& to(int index) const;
  ::saengra_api::Vertex* PROTOBUF_NONNULL add_to();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& to() const;
  // repeated .saengra_api.Vertex from = 6;
  int from_size() const;
  private:
  int _internal_from_size() const;

  public:
  void clear_from() ;
  ::saengra_api::Vertex* PROTOBUF_NONNULL mutable_from(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL mutable_from();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& _internal_from() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL _internal_mutable_from();
  public:
  const ::saengra_api::Vertex& from(int index) const;
  ::saengra_api::Vertex* PROTOBUF_NONNULL add_from();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& from() const;
  // optional string with_type_name = 2;
  bool has_with_type_name() const;
  void clear_with_type_name() ;
  const ::std::string& with_type_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_with_type_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_with_type_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_with_type_name();
  void set_allocated_with_type_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_with_type_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_with_type_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_with_type_name();

  public:
  // optional string with_label = 4;
  bool has_with_label() const;
  void clear_with_label() ;
  const ::std::string& with_label() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_with_label(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_with_label();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_with_label();
  void set_allocated_with_label(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_with_label() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_with_label(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_with_label();

  public:
  // bool vertices = 1;
  void clear_vertices() ;
  bool vertices() const;
  void set_vertices(bool value);

  private:
  bool _internal_vertices() const;
  void _internal_set_vertices(bool value);

  public:
  // bool edges = 3;
  void clear_edges() ;
  bool edges() const;
  void set_edges(bool value);

  private:
  bool _internal_edges() const;
  void _internal_set_edges(bool value);

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.Find)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 6,
                                   2, 49,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 Find& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::Vertex > to_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::Vertex > from_;
    ::google::protobuf::internal::ArenaStringPtr with_type_name_;
    ::google::protobuf::internal::ArenaStringPtr with_label_;
    bool vertices_;
    bool edges_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Find_class_data_;
// -------------------------------------------------------------------

class Edge final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.Edge) */ {
 public:
  inline Edge() : Edge(nullptr) {}
  ~Edge() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Edge(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Edge& default_instance() {
    return *reinterpret_cast<const Edge*>(
        &_Edge_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(Edge& a, Edge& b) { a.Swap(&b); }
  inline void Swap(Edge* 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(Edge* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit Edge(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Edge(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Edge& from);
  Edge(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Edge&& from) noexcept
      : Edge(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLabelFieldNumber = 2,
    kFromFieldNumber = 1,
    kToFieldNumber = 3,
  };
  // bytes label = 2;
  void clear_label() ;
  const ::std::string& label() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_label(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_label();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_label();
  void set_allocated_label(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_label() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_label(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_label();

  public:
  // .saengra_api.Vertex from = 1;
  bool has_from() const;
  void clear_from() ;
  const ::saengra_api::Vertex& from() const;
  [[nodiscard]] ::saengra_api::Vertex* PROTOBUF_NULLABLE release_from();
  ::saengra_api::Vertex* PROTOBUF_NONNULL mutable_from();
  void set_allocated_from(::saengra_api::Vertex* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_from(::saengra_api::Vertex* PROTOBUF_NULLABLE value);
  ::saengra_api::Vertex* PROTOBUF_NULLABLE unsafe_arena_release_from();

  private:
  const ::saengra_api::Vertex& _internal_from() const;
  ::saengra_api::Vertex* PROTOBUF_NONNULL _internal_mutable_from();

  public:
  // .saengra_api.Vertex to = 3;
  bool has_to() const;
  void clear_to() ;
  const ::saengra_api::Vertex& to() const;
  [[nodiscard]] ::saengra_api::Vertex* PROTOBUF_NULLABLE release_to();
  ::saengra_api::Vertex* PROTOBUF_NONNULL mutable_to();
  void set_allocated_to(::saengra_api::Vertex* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_to(::saengra_api::Vertex* PROTOBUF_NULLABLE value);
  ::saengra_api::Vertex* PROTOBUF_NULLABLE unsafe_arena_release_to();

  private:
  const ::saengra_api::Vertex& _internal_to() const;
  ::saengra_api::Vertex* PROTOBUF_NONNULL _internal_mutable_to();

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.Edge)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 3,
                                   2, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 Edge& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr label_;
    ::saengra_api::Vertex* PROTOBUF_NULLABLE from_;
    ::saengra_api::Vertex* PROTOBUF_NULLABLE to_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Edge_class_data_;
// -------------------------------------------------------------------

class CommitResponse_Observation_VariablesEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<::std::string, ::google::protobuf::Message,
                             ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                             ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<::std::string, ::google::protobuf::Message,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>;
  CommitResponse_Observation_VariablesEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR CommitResponse_Observation_VariablesEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized);
  explicit CommitResponse_Observation_VariablesEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_default_instance() {
    return &_CommitResponse_Observation_VariablesEntry_DoNotUse_default_instance_;
  }


  static constexpr auto InternalGenerateClassData_();

 private:
  friend class ::google::protobuf::MessageLite;
  friend struct ::TableStruct_messages_2eproto;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 65,
                                   2>
      _table_;

  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_();
};
extern const ::google::protobuf::internal::ClassDataFull CommitResponse_Observation_VariablesEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

class ApplyUpdates_Update final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.ApplyUpdates.Update) */ {
 public:
  inline ApplyUpdates_Update() : ApplyUpdates_Update(nullptr) {}
  ~ApplyUpdates_Update() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ApplyUpdates_Update(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ApplyUpdates_Update& default_instance() {
    return *reinterpret_cast<const ApplyUpdates_Update*>(
        &_ApplyUpdates_Update_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(ApplyUpdates_Update& a, ApplyUpdates_Update& b) { a.Swap(&b); }
  inline void Swap(ApplyUpdates_Update* 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(ApplyUpdates_Update* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit ApplyUpdates_Update(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ApplyUpdates_Update(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ApplyUpdates_Update& from);
  ApplyUpdates_Update(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ApplyUpdates_Update&& from) noexcept
      : ApplyUpdates_Update(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using UpdateKind = ApplyUpdates_Update_UpdateKind;
  static constexpr UpdateKind ADD_VERTEX = ApplyUpdates_Update_UpdateKind_ADD_VERTEX;
  static constexpr UpdateKind ADD_EDGE = ApplyUpdates_Update_UpdateKind_ADD_EDGE;
  static constexpr UpdateKind REMOVE_VERTEX = ApplyUpdates_Update_UpdateKind_REMOVE_VERTEX;
  static constexpr UpdateKind REMOVE_EDGE = ApplyUpdates_Update_UpdateKind_REMOVE_EDGE;
  static constexpr UpdateKind REMOVE_EDGES_TO_ALL = ApplyUpdates_Update_UpdateKind_REMOVE_EDGES_TO_ALL;
  static inline bool UpdateKind_IsValid(int value) {
    return ApplyUpdates_Update_UpdateKind_IsValid(value);
  }
  static constexpr UpdateKind UpdateKind_MIN = ApplyUpdates_Update_UpdateKind_UpdateKind_MIN;
  static constexpr UpdateKind UpdateKind_MAX = ApplyUpdates_Update_UpdateKind_UpdateKind_MAX;
  static constexpr int UpdateKind_ARRAYSIZE = ApplyUpdates_Update_UpdateKind_UpdateKind_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL UpdateKind_descriptor() {
    return ApplyUpdates_Update_UpdateKind_descriptor();
  }
  template <typename T>
  static inline const ::std::string& UpdateKind_Name(T value) {
    return ApplyUpdates_Update_UpdateKind_Name(value);
  }
  static inline bool UpdateKind_Parse(
      ::absl::string_view name, UpdateKind* PROTOBUF_NONNULL value) {
    return ApplyUpdates_Update_UpdateKind_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kLabelFieldNumber = 3,
    kFromFieldNumber = 2,
    kToFieldNumber = 4,
    kKindFieldNumber = 1,
  };
  // optional string label = 3;
  bool has_label() const;
  void clear_label() ;
  const ::std::string& label() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_label(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_label();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_label();
  void set_allocated_label(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_label() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_label(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_label();

  public:
  // .saengra_api.Vertex from = 2;
  bool has_from() const;
  void clear_from() ;
  const ::saengra_api::Vertex& from() const;
  [[nodiscard]] ::saengra_api::Vertex* PROTOBUF_NULLABLE release_from();
  ::saengra_api::Vertex* PROTOBUF_NONNULL mutable_from();
  void set_allocated_from(::saengra_api::Vertex* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_from(::saengra_api::Vertex* PROTOBUF_NULLABLE value);
  ::saengra_api::Vertex* PROTOBUF_NULLABLE unsafe_arena_release_from();

  private:
  const ::saengra_api::Vertex& _internal_from() const;
  ::saengra_api::Vertex* PROTOBUF_NONNULL _internal_mutable_from();

  public:
  // optional .saengra_api.Vertex to = 4;
  bool has_to() const;
  void clear_to() ;
  const ::saengra_api::Vertex& to() const;
  [[nodiscard]] ::saengra_api::Vertex* PROTOBUF_NULLABLE release_to();
  ::saengra_api::Vertex* PROTOBUF_NONNULL mutable_to();
  void set_allocated_to(::saengra_api::Vertex* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_to(::saengra_api::Vertex* PROTOBUF_NULLABLE value);
  ::saengra_api::Vertex* PROTOBUF_NULLABLE unsafe_arena_release_to();

  private:
  const ::saengra_api::Vertex& _internal_to() const;
  ::saengra_api::Vertex* PROTOBUF_NONNULL _internal_mutable_to();

  public:
  // .saengra_api.ApplyUpdates.Update.UpdateKind kind = 1;
  void clear_kind() ;
  ::saengra_api::ApplyUpdates_Update_UpdateKind kind() const;
  void set_kind(::saengra_api::ApplyUpdates_Update_UpdateKind value);

  private:
  ::saengra_api::ApplyUpdates_Update_UpdateKind _internal_kind() const;
  void _internal_set_kind(::saengra_api::ApplyUpdates_Update_UpdateKind value);

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.ApplyUpdates.Update)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 4,
                                   2, 45,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ApplyUpdates_Update& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr label_;
    ::saengra_api::Vertex* PROTOBUF_NULLABLE from_;
    ::saengra_api::Vertex* PROTOBUF_NULLABLE to_;
    int kind_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ApplyUpdates_Update_class_data_;
// -------------------------------------------------------------------

class Subgraph final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.Subgraph) */ {
 public:
  inline Subgraph() : Subgraph(nullptr) {}
  ~Subgraph() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Subgraph(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Subgraph& default_instance() {
    return *reinterpret_cast<const Subgraph*>(
        &_Subgraph_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(Subgraph& a, Subgraph& b) { a.Swap(&b); }
  inline void Swap(Subgraph* 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(Subgraph* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit Subgraph(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Subgraph(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Subgraph& from);
  Subgraph(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Subgraph&& from) noexcept
      : Subgraph(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kEndPositionsFieldNumber = 2,
    kVerticesFieldNumber = 3,
    kEdgesFieldNumber = 4,
    kStartPositionFieldNumber = 1,
    kRefsFieldNumber = 5,
  };
  // repeated .saengra_api.Position end_positions = 2;
  int end_positions_size() const;
  private:
  int _internal_end_positions_size() const;

  public:
  void clear_end_positions() ;
  ::saengra_api::Position* PROTOBUF_NONNULL mutable_end_positions(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::Position>* PROTOBUF_NONNULL mutable_end_positions();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Position>& _internal_end_positions() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::Position>* PROTOBUF_NONNULL _internal_mutable_end_positions();
  public:
  const ::saengra_api::Position& end_positions(int index) const;
  ::saengra_api::Position* PROTOBUF_NONNULL add_end_positions();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Position>& end_positions() const;
  // repeated .saengra_api.Vertex vertices = 3;
  int vertices_size() const;
  private:
  int _internal_vertices_size() const;

  public:
  void clear_vertices() ;
  ::saengra_api::Vertex* PROTOBUF_NONNULL mutable_vertices(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL mutable_vertices();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& _internal_vertices() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL _internal_mutable_vertices();
  public:
  const ::saengra_api::Vertex& vertices(int index) const;
  ::saengra_api::Vertex* PROTOBUF_NONNULL add_vertices();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& vertices() const;
  // repeated .saengra_api.Edge edges = 4;
  int edges_size() const;
  private:
  int _internal_edges_size() const;

  public:
  void clear_edges() ;
  ::saengra_api::Edge* PROTOBUF_NONNULL mutable_edges(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>* PROTOBUF_NONNULL mutable_edges();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>& _internal_edges() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>* PROTOBUF_NONNULL _internal_mutable_edges();
  public:
  const ::saengra_api::Edge& edges(int index) const;
  ::saengra_api::Edge* PROTOBUF_NONNULL add_edges();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>& edges() const;
  // .saengra_api.Position start_position = 1;
  bool has_start_position() const;
  void clear_start_position() ;
  const ::saengra_api::Position& start_position() const;
  [[nodiscard]] ::saengra_api::Position* PROTOBUF_NULLABLE release_start_position();
  ::saengra_api::Position* PROTOBUF_NONNULL mutable_start_position();
  void set_allocated_start_position(::saengra_api::Position* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_start_position(::saengra_api::Position* PROTOBUF_NULLABLE value);
  ::saengra_api::Position* PROTOBUF_NULLABLE unsafe_arena_release_start_position();

  private:
  const ::saengra_api::Position& _internal_start_position() const;
  ::saengra_api::Position* PROTOBUF_NONNULL _internal_mutable_start_position();

  public:
  // map<string, .saengra_api.Vertex> refs = 5;
  int refs_size() const;
  private:
  int _internal_refs_size() const;

  public:
  void clear_refs() ;
  const ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>& refs() const;
  ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>* PROTOBUF_NONNULL mutable_refs();

  private:
  const ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>& _internal_refs() const;
  ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>* PROTOBUF_NONNULL _internal_mutable_refs();

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.Subgraph)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 5,
                                   6, 33,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 Subgraph& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::Position > end_positions_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::Vertex > vertices_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::Edge > edges_;
    ::saengra_api::Position* PROTOBUF_NULLABLE start_position_;
    ::google::protobuf::internal::MapField<Subgraph_RefsEntry_DoNotUse, ::std::string, ::saengra_api::Vertex,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>
        refs_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Subgraph_class_data_;
// -------------------------------------------------------------------

class Observe final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.Observe) */ {
 public:
  inline Observe() : Observe(nullptr) {}
  ~Observe() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Observe(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Observe& default_instance() {
    return *reinterpret_cast<const Observe*>(
        &_Observe_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 12;
  friend void swap(Observe& a, Observe& b) { a.Swap(&b); }
  inline void Swap(Observe* 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(Observe* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit Observe(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Observe(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Observe& from);
  Observe(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Observe&& from) noexcept
      : Observe(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Observer = Observe_Observer;

  // accessors -------------------------------------------------------
  enum : int {
    kObserversFieldNumber = 1,
  };
  // repeated .saengra_api.Observe.Observer observers = 1;
  int observers_size() const;
  private:
  int _internal_observers_size() const;

  public:
  void clear_observers() ;
  ::saengra_api::Observe_Observer* PROTOBUF_NONNULL mutable_observers(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::Observe_Observer>* PROTOBUF_NONNULL mutable_observers();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Observe_Observer>& _internal_observers() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::Observe_Observer>* PROTOBUF_NONNULL _internal_mutable_observers();
  public:
  const ::saengra_api::Observe_Observer& observers(int index) const;
  ::saengra_api::Observe_Observer* PROTOBUF_NONNULL add_observers();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Observe_Observer>& observers() const;
  // @@protoc_insertion_point(class_scope:saengra_api.Observe)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 Observe& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::Observe_Observer > observers_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Observe_class_data_;
// -------------------------------------------------------------------

class FindResponse final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.FindResponse) */ {
 public:
  inline FindResponse() : FindResponse(nullptr) {}
  ~FindResponse() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR FindResponse(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const FindResponse& default_instance() {
    return *reinterpret_cast<const FindResponse*>(
        &_FindResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 23;
  friend void swap(FindResponse& a, FindResponse& b) { a.Swap(&b); }
  inline void Swap(FindResponse* 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(FindResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit FindResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FindResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FindResponse& from);
  FindResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FindResponse&& from) noexcept
      : FindResponse(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Status = FindResponse_Status;
  static constexpr Status OK = FindResponse_Status_OK;
  static constexpr Status NOT_CONNECTED = FindResponse_Status_NOT_CONNECTED;
  static inline bool Status_IsValid(int value) {
    return FindResponse_Status_IsValid(value);
  }
  static constexpr Status Status_MIN = FindResponse_Status_Status_MIN;
  static constexpr Status Status_MAX = FindResponse_Status_Status_MAX;
  static constexpr int Status_ARRAYSIZE = FindResponse_Status_Status_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Status_descriptor() {
    return FindResponse_Status_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Status_Name(T value) {
    return FindResponse_Status_Name(value);
  }
  static inline bool Status_Parse(
      ::absl::string_view name, Status* PROTOBUF_NONNULL value) {
    return FindResponse_Status_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kVerticesFieldNumber = 2,
    kEdgesFieldNumber = 3,
    kStatusFieldNumber = 1,
  };
  // repeated .saengra_api.Vertex vertices = 2;
  int vertices_size() const;
  private:
  int _internal_vertices_size() const;

  public:
  void clear_vertices() ;
  ::saengra_api::Vertex* PROTOBUF_NONNULL mutable_vertices(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL mutable_vertices();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& _internal_vertices() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL _internal_mutable_vertices();
  public:
  const ::saengra_api::Vertex& vertices(int index) const;
  ::saengra_api::Vertex* PROTOBUF_NONNULL add_vertices();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& vertices() const;
  // repeated .saengra_api.Edge edges = 3;
  int edges_size() const;
  private:
  int _internal_edges_size() const;

  public:
  void clear_edges() ;
  ::saengra_api::Edge* PROTOBUF_NONNULL mutable_edges(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>* PROTOBUF_NONNULL mutable_edges();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>& _internal_edges() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>* PROTOBUF_NONNULL _internal_mutable_edges();
  public:
  const ::saengra_api::Edge& edges(int index) const;
  ::saengra_api::Edge* PROTOBUF_NONNULL add_edges();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>& edges() const;
  // .saengra_api.FindResponse.Status status = 1;
  void clear_status() ;
  ::saengra_api::FindResponse_Status status() const;
  void set_status(::saengra_api::FindResponse_Status value);

  private:
  ::saengra_api::FindResponse_Status _internal_status() const;
  void _internal_set_status(::saengra_api::FindResponse_Status value);

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.FindResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 3,
                                   2, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 FindResponse& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::Vertex > vertices_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::Edge > edges_;
    int status_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull FindResponse_class_data_;
// -------------------------------------------------------------------

class CommitResponse_Observation final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.CommitResponse.Observation) */ {
 public:
  inline CommitResponse_Observation() : CommitResponse_Observation(nullptr) {}
  ~CommitResponse_Observation() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR CommitResponse_Observation(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CommitResponse_Observation& default_instance() {
    return *reinterpret_cast<const CommitResponse_Observation*>(
        &_CommitResponse_Observation_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 19;
  friend void swap(CommitResponse_Observation& a, CommitResponse_Observation& b) { a.Swap(&b); }
  inline void Swap(CommitResponse_Observation* 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(CommitResponse_Observation* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit CommitResponse_Observation(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  CommitResponse_Observation(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CommitResponse_Observation& from);
  CommitResponse_Observation(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CommitResponse_Observation&& from) noexcept
      : CommitResponse_Observation(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using ObservationType = CommitResponse_Observation_ObservationType;
  static constexpr ObservationType ON_CREATE = CommitResponse_Observation_ObservationType_ON_CREATE;
  static constexpr ObservationType ON_CHANGE = CommitResponse_Observation_ObservationType_ON_CHANGE;
  static constexpr ObservationType ON_DELETE = CommitResponse_Observation_ObservationType_ON_DELETE;
  static inline bool ObservationType_IsValid(int value) {
    return CommitResponse_Observation_ObservationType_IsValid(value);
  }
  static constexpr ObservationType ObservationType_MIN = CommitResponse_Observation_ObservationType_ObservationType_MIN;
  static constexpr ObservationType ObservationType_MAX = CommitResponse_Observation_ObservationType_ObservationType_MAX;
  static constexpr int ObservationType_ARRAYSIZE = CommitResponse_Observation_ObservationType_ObservationType_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ObservationType_descriptor() {
    return CommitResponse_Observation_ObservationType_descriptor();
  }
  template <typename T>
  static inline const ::std::string& ObservationType_Name(T value) {
    return CommitResponse_Observation_ObservationType_Name(value);
  }
  static inline bool ObservationType_Parse(
      ::absl::string_view name, ObservationType* PROTOBUF_NONNULL value) {
    return CommitResponse_Observation_ObservationType_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kObserverIdFieldNumber = 1,
    kTypeFieldNumber = 2,
    kVariablesFieldNumber = 3,
  };
  // string observer_id = 1;
  void clear_observer_id() ;
  const ::std::string& observer_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_observer_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_observer_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_observer_id();
  void set_allocated_observer_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_observer_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_observer_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_observer_id();

  public:
  // .saengra_api.CommitResponse.Observation.ObservationType type = 2;
  void clear_type() ;
  ::saengra_api::CommitResponse_Observation_ObservationType type() const;
  void set_type(::saengra_api::CommitResponse_Observation_ObservationType value);

  private:
  ::saengra_api::CommitResponse_Observation_ObservationType _internal_type() const;
  void _internal_set_type(::saengra_api::CommitResponse_Observation_ObservationType value);

  public:
  // map<string, .saengra_api.Vertex> variables = 3;
  int variables_size() const;
  private:
  int _internal_variables_size() const;

  public:
  void clear_variables() ;
  const ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>& variables() const;
  ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>* PROTOBUF_NONNULL mutable_variables();

  private:
  const ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>& _internal_variables() const;
  ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>* PROTOBUF_NONNULL _internal_mutable_variables();

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.CommitResponse.Observation)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 3,
                                   2, 67,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 CommitResponse_Observation& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr observer_id_;
    int type_;
    ::google::protobuf::internal::MapField<CommitResponse_Observation_VariablesEntry_DoNotUse, ::std::string, ::saengra_api::Vertex,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>
        variables_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull CommitResponse_Observation_class_data_;
// -------------------------------------------------------------------

class ApplyUpdates final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.ApplyUpdates) */ {
 public:
  inline ApplyUpdates() : ApplyUpdates(nullptr) {}
  ~ApplyUpdates() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ApplyUpdates(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ApplyUpdates& default_instance() {
    return *reinterpret_cast<const ApplyUpdates*>(
        &_ApplyUpdates_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(ApplyUpdates& a, ApplyUpdates& b) { a.Swap(&b); }
  inline void Swap(ApplyUpdates* 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(ApplyUpdates* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit ApplyUpdates(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ApplyUpdates(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ApplyUpdates& from);
  ApplyUpdates(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ApplyUpdates&& from) noexcept
      : ApplyUpdates(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Update = ApplyUpdates_Update;

  // accessors -------------------------------------------------------
  enum : int {
    kUpdatesFieldNumber = 1,
  };
  // repeated .saengra_api.ApplyUpdates.Update updates = 1;
  int updates_size() const;
  private:
  int _internal_updates_size() const;

  public:
  void clear_updates() ;
  ::saengra_api::ApplyUpdates_Update* PROTOBUF_NONNULL mutable_updates(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::ApplyUpdates_Update>* PROTOBUF_NONNULL mutable_updates();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::ApplyUpdates_Update>& _internal_updates() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::ApplyUpdates_Update>* PROTOBUF_NONNULL _internal_mutable_updates();
  public:
  const ::saengra_api::ApplyUpdates_Update& updates(int index) const;
  ::saengra_api::ApplyUpdates_Update* PROTOBUF_NONNULL add_updates();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::ApplyUpdates_Update>& updates() const;
  // @@protoc_insertion_point(class_scope:saengra_api.ApplyUpdates)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ApplyUpdates& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::ApplyUpdates_Update > updates_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ApplyUpdates_class_data_;
// -------------------------------------------------------------------

class Request final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.Request) */ {
 public:
  inline Request() : Request(nullptr) {}
  ~Request() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Request(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Request& default_instance() {
    return *reinterpret_cast<const Request*>(
        &_Request_default_instance_);
  }
  enum RequestCase {
    kConnect = 1,
    kApplyUpdates = 2,
    kCommit = 3,
    kRollback = 4,
    kObserve = 5,
    kFind = 6,
    kMatch = 7,
    REQUEST_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(Request& a, Request& b) { a.Swap(&b); }
  inline void Swap(Request* 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(Request* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit Request(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Request(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Request& from);
  Request(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Request&& from) noexcept
      : Request(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kConnectFieldNumber = 1,
    kApplyUpdatesFieldNumber = 2,
    kCommitFieldNumber = 3,
    kRollbackFieldNumber = 4,
    kObserveFieldNumber = 5,
    kFindFieldNumber = 6,
    kMatchFieldNumber = 7,
  };
  // .saengra_api.Connect connect = 1;
  bool has_connect() const;
  private:
  bool _internal_has_connect() const;

  public:
  void clear_connect() ;
  const ::saengra_api::Connect& connect() const;
  [[nodiscard]] ::saengra_api::Connect* PROTOBUF_NULLABLE release_connect();
  ::saengra_api::Connect* PROTOBUF_NONNULL mutable_connect();
  void set_allocated_connect(::saengra_api::Connect* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_connect(::saengra_api::Connect* PROTOBUF_NULLABLE value);
  ::saengra_api::Connect* PROTOBUF_NULLABLE unsafe_arena_release_connect();

  private:
  const ::saengra_api::Connect& _internal_connect() const;
  ::saengra_api::Connect* PROTOBUF_NONNULL _internal_mutable_connect();

  public:
  // .saengra_api.ApplyUpdates apply_updates = 2;
  bool has_apply_updates() const;
  private:
  bool _internal_has_apply_updates() const;

  public:
  void clear_apply_updates() ;
  const ::saengra_api::ApplyUpdates& apply_updates() const;
  [[nodiscard]] ::saengra_api::ApplyUpdates* PROTOBUF_NULLABLE release_apply_updates();
  ::saengra_api::ApplyUpdates* PROTOBUF_NONNULL mutable_apply_updates();
  void set_allocated_apply_updates(::saengra_api::ApplyUpdates* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_apply_updates(::saengra_api::ApplyUpdates* PROTOBUF_NULLABLE value);
  ::saengra_api::ApplyUpdates* PROTOBUF_NULLABLE unsafe_arena_release_apply_updates();

  private:
  const ::saengra_api::ApplyUpdates& _internal_apply_updates() const;
  ::saengra_api::ApplyUpdates* PROTOBUF_NONNULL _internal_mutable_apply_updates();

  public:
  // .saengra_api.Commit commit = 3;
  bool has_commit() const;
  private:
  bool _internal_has_commit() const;

  public:
  void clear_commit() ;
  const ::saengra_api::Commit& commit() const;
  [[nodiscard]] ::saengra_api::Commit* PROTOBUF_NULLABLE release_commit();
  ::saengra_api::Commit* PROTOBUF_NONNULL mutable_commit();
  void set_allocated_commit(::saengra_api::Commit* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_commit(::saengra_api::Commit* PROTOBUF_NULLABLE value);
  ::saengra_api::Commit* PROTOBUF_NULLABLE unsafe_arena_release_commit();

  private:
  const ::saengra_api::Commit& _internal_commit() const;
  ::saengra_api::Commit* PROTOBUF_NONNULL _internal_mutable_commit();

  public:
  // .saengra_api.Rollback rollback = 4;
  bool has_rollback() const;
  private:
  bool _internal_has_rollback() const;

  public:
  void clear_rollback() ;
  const ::saengra_api::Rollback& rollback() const;
  [[nodiscard]] ::saengra_api::Rollback* PROTOBUF_NULLABLE release_rollback();
  ::saengra_api::Rollback* PROTOBUF_NONNULL mutable_rollback();
  void set_allocated_rollback(::saengra_api::Rollback* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rollback(::saengra_api::Rollback* PROTOBUF_NULLABLE value);
  ::saengra_api::Rollback* PROTOBUF_NULLABLE unsafe_arena_release_rollback();

  private:
  const ::saengra_api::Rollback& _internal_rollback() const;
  ::saengra_api::Rollback* PROTOBUF_NONNULL _internal_mutable_rollback();

  public:
  // .saengra_api.Observe observe = 5;
  bool has_observe() const;
  private:
  bool _internal_has_observe() const;

  public:
  void clear_observe() ;
  const ::saengra_api::Observe& observe() const;
  [[nodiscard]] ::saengra_api::Observe* PROTOBUF_NULLABLE release_observe();
  ::saengra_api::Observe* PROTOBUF_NONNULL mutable_observe();
  void set_allocated_observe(::saengra_api::Observe* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_observe(::saengra_api::Observe* PROTOBUF_NULLABLE value);
  ::saengra_api::Observe* PROTOBUF_NULLABLE unsafe_arena_release_observe();

  private:
  const ::saengra_api::Observe& _internal_observe() const;
  ::saengra_api::Observe* PROTOBUF_NONNULL _internal_mutable_observe();

  public:
  // .saengra_api.Find find = 6;
  bool has_find() const;
  private:
  bool _internal_has_find() const;

  public:
  void clear_find() ;
  const ::saengra_api::Find& find() const;
  [[nodiscard]] ::saengra_api::Find* PROTOBUF_NULLABLE release_find();
  ::saengra_api::Find* PROTOBUF_NONNULL mutable_find();
  void set_allocated_find(::saengra_api::Find* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_find(::saengra_api::Find* PROTOBUF_NULLABLE value);
  ::saengra_api::Find* PROTOBUF_NULLABLE unsafe_arena_release_find();

  private:
  const ::saengra_api::Find& _internal_find() const;
  ::saengra_api::Find* PROTOBUF_NONNULL _internal_mutable_find();

  public:
  // .saengra_api.Match match = 7;
  bool has_match() const;
  private:
  bool _internal_has_match() const;

  public:
  void clear_match() ;
  const ::saengra_api::Match& match() const;
  [[nodiscard]] ::saengra_api::Match* PROTOBUF_NULLABLE release_match();
  ::saengra_api::Match* PROTOBUF_NONNULL mutable_match();
  void set_allocated_match(::saengra_api::Match* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_match(::saengra_api::Match* PROTOBUF_NULLABLE value);
  ::saengra_api::Match* PROTOBUF_NULLABLE unsafe_arena_release_match();

  private:
  const ::saengra_api::Match& _internal_match() const;
  ::saengra_api::Match* PROTOBUF_NONNULL _internal_mutable_match();

  public:
  void clear_request();
  RequestCase request_case() const;
  // @@protoc_insertion_point(class_scope:saengra_api.Request)
 private:
  class _Internal;
  void set_has_connect();
  void set_has_apply_updates();
  void set_has_commit();
  void set_has_rollback();
  void set_has_observe();
  void set_has_find();
  void set_has_match();
  inline bool has_request() const;
  inline void clear_has_request();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 7,
                                   7, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 Request& from_msg);
    union RequestUnion {
      constexpr RequestUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE connect_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE apply_updates_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE commit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE rollback_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE observe_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE find_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE match_;
    } request_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Request_class_data_;
// -------------------------------------------------------------------

class MatchResponse final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.MatchResponse) */ {
 public:
  inline MatchResponse() : MatchResponse(nullptr) {}
  ~MatchResponse() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR MatchResponse(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const MatchResponse& default_instance() {
    return *reinterpret_cast<const MatchResponse*>(
        &_MatchResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 24;
  friend void swap(MatchResponse& a, MatchResponse& b) { a.Swap(&b); }
  inline void Swap(MatchResponse* 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(MatchResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit MatchResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MatchResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MatchResponse& from);
  MatchResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MatchResponse&& from) noexcept
      : MatchResponse(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Status = MatchResponse_Status;
  static constexpr Status OK = MatchResponse_Status_OK;
  static constexpr Status NOT_CONNECTED = MatchResponse_Status_NOT_CONNECTED;
  static inline bool Status_IsValid(int value) {
    return MatchResponse_Status_IsValid(value);
  }
  static constexpr Status Status_MIN = MatchResponse_Status_Status_MIN;
  static constexpr Status Status_MAX = MatchResponse_Status_Status_MAX;
  static constexpr int Status_ARRAYSIZE = MatchResponse_Status_Status_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Status_descriptor() {
    return MatchResponse_Status_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Status_Name(T value) {
    return MatchResponse_Status_Name(value);
  }
  static inline bool Status_Parse(
      ::absl::string_view name, Status* PROTOBUF_NONNULL value) {
    return MatchResponse_Status_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kSubgraphsFieldNumber = 2,
    kStatusFieldNumber = 1,
  };
  // repeated .saengra_api.Subgraph subgraphs = 2;
  int subgraphs_size() const;
  private:
  int _internal_subgraphs_size() const;

  public:
  void clear_subgraphs() ;
  ::saengra_api::Subgraph* PROTOBUF_NONNULL mutable_subgraphs(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::Subgraph>* PROTOBUF_NONNULL mutable_subgraphs();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Subgraph>& _internal_subgraphs() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::Subgraph>* PROTOBUF_NONNULL _internal_mutable_subgraphs();
  public:
  const ::saengra_api::Subgraph& subgraphs(int index) const;
  ::saengra_api::Subgraph* PROTOBUF_NONNULL add_subgraphs();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::Subgraph>& subgraphs() const;
  // .saengra_api.MatchResponse.Status status = 1;
  void clear_status() ;
  ::saengra_api::MatchResponse_Status status() const;
  void set_status(::saengra_api::MatchResponse_Status value);

  private:
  ::saengra_api::MatchResponse_Status _internal_status() const;
  void _internal_set_status(::saengra_api::MatchResponse_Status value);

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.MatchResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 MatchResponse& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::Subgraph > subgraphs_;
    int status_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull MatchResponse_class_data_;
// -------------------------------------------------------------------

class CommitResponse final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.CommitResponse) */ {
 public:
  inline CommitResponse() : CommitResponse(nullptr) {}
  ~CommitResponse() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR CommitResponse(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CommitResponse& default_instance() {
    return *reinterpret_cast<const CommitResponse*>(
        &_CommitResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 20;
  friend void swap(CommitResponse& a, CommitResponse& b) { a.Swap(&b); }
  inline void Swap(CommitResponse* 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(CommitResponse* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit CommitResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  CommitResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CommitResponse& from);
  CommitResponse(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CommitResponse&& from) noexcept
      : CommitResponse(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Observation = CommitResponse_Observation;
  using Status = CommitResponse_Status;
  static constexpr Status OK = CommitResponse_Status_OK;
  static constexpr Status NOT_CONNECTED = CommitResponse_Status_NOT_CONNECTED;
  static constexpr Status REQUIRES_REPEATED_COMMIT = CommitResponse_Status_REQUIRES_REPEATED_COMMIT;
  static inline bool Status_IsValid(int value) {
    return CommitResponse_Status_IsValid(value);
  }
  static constexpr Status Status_MIN = CommitResponse_Status_Status_MIN;
  static constexpr Status Status_MAX = CommitResponse_Status_Status_MAX;
  static constexpr int Status_ARRAYSIZE = CommitResponse_Status_Status_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Status_descriptor() {
    return CommitResponse_Status_descriptor();
  }
  template <typename T>
  static inline const ::std::string& Status_Name(T value) {
    return CommitResponse_Status_Name(value);
  }
  static inline bool Status_Parse(
      ::absl::string_view name, Status* PROTOBUF_NONNULL value) {
    return CommitResponse_Status_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kObservationFieldNumber = 2,
    kStatusFieldNumber = 1,
  };
  // repeated .saengra_api.CommitResponse.Observation observation = 2;
  int observation_size() const;
  private:
  int _internal_observation_size() const;

  public:
  void clear_observation() ;
  ::saengra_api::CommitResponse_Observation* PROTOBUF_NONNULL mutable_observation(int index);
  ::google::protobuf::RepeatedPtrField<::saengra_api::CommitResponse_Observation>* PROTOBUF_NONNULL mutable_observation();

  private:
  const ::google::protobuf::RepeatedPtrField<::saengra_api::CommitResponse_Observation>& _internal_observation() const;
  ::google::protobuf::RepeatedPtrField<::saengra_api::CommitResponse_Observation>* PROTOBUF_NONNULL _internal_mutable_observation();
  public:
  const ::saengra_api::CommitResponse_Observation& observation(int index) const;
  ::saengra_api::CommitResponse_Observation* PROTOBUF_NONNULL add_observation();
  const ::google::protobuf::RepeatedPtrField<::saengra_api::CommitResponse_Observation>& observation() const;
  // .saengra_api.CommitResponse.Status status = 1;
  void clear_status() ;
  ::saengra_api::CommitResponse_Status status() const;
  void set_status(::saengra_api::CommitResponse_Status value);

  private:
  ::saengra_api::CommitResponse_Status _internal_status() const;
  void _internal_set_status(::saengra_api::CommitResponse_Status value);

  public:
  // @@protoc_insertion_point(class_scope:saengra_api.CommitResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 CommitResponse& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::saengra_api::CommitResponse_Observation > observation_;
    int status_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull CommitResponse_class_data_;
// -------------------------------------------------------------------

class Response final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:saengra_api.Response) */ {
 public:
  inline Response() : Response(nullptr) {}
  ~Response() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Response(::google::protobuf::internal::ConstantInitialized);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Response& default_instance() {
    return *reinterpret_cast<const Response*>(
        &_Response_default_instance_);
  }
  enum ResponseCase {
    kConnect = 1,
    kApplyUpdates = 2,
    kCommit = 3,
    kRollback = 4,
    kObserve = 5,
    kFind = 6,
    kMatch = 7,
    RESPONSE_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 15;
  friend void swap(Response& a, Response& b) { a.Swap(&b); }
  inline void Swap(Response* 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(Response* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

  explicit Response(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Response(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Response& from);
  Response(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Response&& from) noexcept
      : Response(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kConnectFieldNumber = 1,
    kApplyUpdatesFieldNumber = 2,
    kCommitFieldNumber = 3,
    kRollbackFieldNumber = 4,
    kObserveFieldNumber = 5,
    kFindFieldNumber = 6,
    kMatchFieldNumber = 7,
  };
  // .saengra_api.ConnectResponse connect = 1;
  bool has_connect() const;
  private:
  bool _internal_has_connect() const;

  public:
  void clear_connect() ;
  const ::saengra_api::ConnectResponse& connect() const;
  [[nodiscard]] ::saengra_api::ConnectResponse* PROTOBUF_NULLABLE release_connect();
  ::saengra_api::ConnectResponse* PROTOBUF_NONNULL mutable_connect();
  void set_allocated_connect(::saengra_api::ConnectResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_connect(::saengra_api::ConnectResponse* PROTOBUF_NULLABLE value);
  ::saengra_api::ConnectResponse* PROTOBUF_NULLABLE unsafe_arena_release_connect();

  private:
  const ::saengra_api::ConnectResponse& _internal_connect() const;
  ::saengra_api::ConnectResponse* PROTOBUF_NONNULL _internal_mutable_connect();

  public:
  // .saengra_api.ApplyUpdatesResponse apply_updates = 2;
  bool has_apply_updates() const;
  private:
  bool _internal_has_apply_updates() const;

  public:
  void clear_apply_updates() ;
  const ::saengra_api::ApplyUpdatesResponse& apply_updates() const;
  [[nodiscard]] ::saengra_api::ApplyUpdatesResponse* PROTOBUF_NULLABLE release_apply_updates();
  ::saengra_api::ApplyUpdatesResponse* PROTOBUF_NONNULL mutable_apply_updates();
  void set_allocated_apply_updates(::saengra_api::ApplyUpdatesResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_apply_updates(::saengra_api::ApplyUpdatesResponse* PROTOBUF_NULLABLE value);
  ::saengra_api::ApplyUpdatesResponse* PROTOBUF_NULLABLE unsafe_arena_release_apply_updates();

  private:
  const ::saengra_api::ApplyUpdatesResponse& _internal_apply_updates() const;
  ::saengra_api::ApplyUpdatesResponse* PROTOBUF_NONNULL _internal_mutable_apply_updates();

  public:
  // .saengra_api.CommitResponse commit = 3;
  bool has_commit() const;
  private:
  bool _internal_has_commit() const;

  public:
  void clear_commit() ;
  const ::saengra_api::CommitResponse& commit() const;
  [[nodiscard]] ::saengra_api::CommitResponse* PROTOBUF_NULLABLE release_commit();
  ::saengra_api::CommitResponse* PROTOBUF_NONNULL mutable_commit();
  void set_allocated_commit(::saengra_api::CommitResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_commit(::saengra_api::CommitResponse* PROTOBUF_NULLABLE value);
  ::saengra_api::CommitResponse* PROTOBUF_NULLABLE unsafe_arena_release_commit();

  private:
  const ::saengra_api::CommitResponse& _internal_commit() const;
  ::saengra_api::CommitResponse* PROTOBUF_NONNULL _internal_mutable_commit();

  public:
  // .saengra_api.RollbackResponse rollback = 4;
  bool has_rollback() const;
  private:
  bool _internal_has_rollback() const;

  public:
  void clear_rollback() ;
  const ::saengra_api::RollbackResponse& rollback() const;
  [[nodiscard]] ::saengra_api::RollbackResponse* PROTOBUF_NULLABLE release_rollback();
  ::saengra_api::RollbackResponse* PROTOBUF_NONNULL mutable_rollback();
  void set_allocated_rollback(::saengra_api::RollbackResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rollback(::saengra_api::RollbackResponse* PROTOBUF_NULLABLE value);
  ::saengra_api::RollbackResponse* PROTOBUF_NULLABLE unsafe_arena_release_rollback();

  private:
  const ::saengra_api::RollbackResponse& _internal_rollback() const;
  ::saengra_api::RollbackResponse* PROTOBUF_NONNULL _internal_mutable_rollback();

  public:
  // .saengra_api.ObserveResponse observe = 5;
  bool has_observe() const;
  private:
  bool _internal_has_observe() const;

  public:
  void clear_observe() ;
  const ::saengra_api::ObserveResponse& observe() const;
  [[nodiscard]] ::saengra_api::ObserveResponse* PROTOBUF_NULLABLE release_observe();
  ::saengra_api::ObserveResponse* PROTOBUF_NONNULL mutable_observe();
  void set_allocated_observe(::saengra_api::ObserveResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_observe(::saengra_api::ObserveResponse* PROTOBUF_NULLABLE value);
  ::saengra_api::ObserveResponse* PROTOBUF_NULLABLE unsafe_arena_release_observe();

  private:
  const ::saengra_api::ObserveResponse& _internal_observe() const;
  ::saengra_api::ObserveResponse* PROTOBUF_NONNULL _internal_mutable_observe();

  public:
  // .saengra_api.FindResponse find = 6;
  bool has_find() const;
  private:
  bool _internal_has_find() const;

  public:
  void clear_find() ;
  const ::saengra_api::FindResponse& find() const;
  [[nodiscard]] ::saengra_api::FindResponse* PROTOBUF_NULLABLE release_find();
  ::saengra_api::FindResponse* PROTOBUF_NONNULL mutable_find();
  void set_allocated_find(::saengra_api::FindResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_find(::saengra_api::FindResponse* PROTOBUF_NULLABLE value);
  ::saengra_api::FindResponse* PROTOBUF_NULLABLE unsafe_arena_release_find();

  private:
  const ::saengra_api::FindResponse& _internal_find() const;
  ::saengra_api::FindResponse* PROTOBUF_NONNULL _internal_mutable_find();

  public:
  // .saengra_api.MatchResponse match = 7;
  bool has_match() const;
  private:
  bool _internal_has_match() const;

  public:
  void clear_match() ;
  const ::saengra_api::MatchResponse& match() const;
  [[nodiscard]] ::saengra_api::MatchResponse* PROTOBUF_NULLABLE release_match();
  ::saengra_api::MatchResponse* PROTOBUF_NONNULL mutable_match();
  void set_allocated_match(::saengra_api::MatchResponse* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_match(::saengra_api::MatchResponse* PROTOBUF_NULLABLE value);
  ::saengra_api::MatchResponse* PROTOBUF_NULLABLE unsafe_arena_release_match();

  private:
  const ::saengra_api::MatchResponse& _internal_match() const;
  ::saengra_api::MatchResponse* PROTOBUF_NONNULL _internal_mutable_match();

  public:
  void clear_response();
  ResponseCase response_case() const;
  // @@protoc_insertion_point(class_scope:saengra_api.Response)
 private:
  class _Internal;
  void set_has_connect();
  void set_has_apply_updates();
  void set_has_commit();
  void set_has_rollback();
  void set_has_observe();
  void set_has_find();
  void set_has_match();
  inline bool has_response() const;
  inline void clear_has_response();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 7,
                                   7, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 Response& from_msg);
    union ResponseUnion {
      constexpr ResponseUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE connect_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE apply_updates_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE commit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE rollback_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE observe_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE find_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE match_;
    } response_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_messages_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Response_class_data_;

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




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


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

// Vertex

// bytes type_name = 1;
inline void Vertex::clear_type_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& Vertex::type_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Vertex.type_name)
  return _internal_type_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Vertex::set_type_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.type_name_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:saengra_api.Vertex.type_name)
}
inline ::std::string* PROTOBUF_NONNULL Vertex::mutable_type_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_type_name();
  // @@protoc_insertion_point(field_mutable:saengra_api.Vertex.type_name)
  return _s;
}
inline const ::std::string& Vertex::_internal_type_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_name_.Get();
}
inline void Vertex::_internal_set_type_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Vertex::_internal_mutable_type_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.type_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Vertex::release_type_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Vertex.type_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.type_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.type_name_.Set("", GetArena());
  }
  return released;
}
inline void Vertex::set_allocated_type_name(::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_.type_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.type_name_.IsDefault()) {
    _impl_.type_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Vertex.type_name)
}

// bytes value = 2;
inline void Vertex::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline const ::std::string& Vertex::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Vertex.value)
  return _internal_value();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Vertex::set_value(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.value_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:saengra_api.Vertex.value)
}
inline ::std::string* PROTOBUF_NONNULL Vertex::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:saengra_api.Vertex.value)
  return _s;
}
inline const ::std::string& Vertex::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_.Get();
}
inline void Vertex::_internal_set_value(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Vertex::_internal_mutable_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.value_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Vertex::release_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Vertex.value)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.value_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.value_.Set("", GetArena());
  }
  return released;
}
inline void Vertex::set_allocated_value(::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_.value_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.value_.IsDefault()) {
    _impl_.value_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Vertex.value)
}

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

// Edge

// .saengra_api.Vertex from = 1;
inline bool Edge::has_from() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.from_ != nullptr);
  return value;
}
inline void Edge::clear_from() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.from_ != nullptr) _impl_.from_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline const ::saengra_api::Vertex& Edge::_internal_from() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::saengra_api::Vertex* p = _impl_.from_;
  return p != nullptr ? *p : reinterpret_cast<const ::saengra_api::Vertex&>(::saengra_api::_Vertex_default_instance_);
}
inline const ::saengra_api::Vertex& Edge::from() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Edge.from)
  return _internal_from();
}
inline void Edge::unsafe_arena_set_allocated_from(
    ::saengra_api::Vertex* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.from_);
  }
  _impl_.from_ = reinterpret_cast<::saengra_api::Vertex*>(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:saengra_api.Edge.from)
}
inline ::saengra_api::Vertex* PROTOBUF_NULLABLE Edge::release_from() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::saengra_api::Vertex* released = _impl_.from_;
  _impl_.from_ = 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 ::saengra_api::Vertex* PROTOBUF_NULLABLE Edge::unsafe_arena_release_from() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Edge.from)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::saengra_api::Vertex* temp = _impl_.from_;
  _impl_.from_ = nullptr;
  return temp;
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Edge::_internal_mutable_from() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.from_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::saengra_api::Vertex>(GetArena());
    _impl_.from_ = reinterpret_cast<::saengra_api::Vertex*>(p);
  }
  return _impl_.from_;
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Edge::mutable_from()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::saengra_api::Vertex* _msg = _internal_mutable_from();
  // @@protoc_insertion_point(field_mutable:saengra_api.Edge.from)
  return _msg;
}
inline void Edge::set_allocated_from(::saengra_api::Vertex* 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_.from_);
  }

  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_.from_ = reinterpret_cast<::saengra_api::Vertex*>(value);
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Edge.from)
}

// bytes label = 2;
inline void Edge::clear_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& Edge::label() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Edge.label)
  return _internal_label();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Edge::set_label(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.label_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:saengra_api.Edge.label)
}
inline ::std::string* PROTOBUF_NONNULL Edge::mutable_label()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_label();
  // @@protoc_insertion_point(field_mutable:saengra_api.Edge.label)
  return _s;
}
inline const ::std::string& Edge::_internal_label() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.label_.Get();
}
inline void Edge::_internal_set_label(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Edge::_internal_mutable_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.label_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Edge::release_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Edge.label)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.label_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.label_.Set("", GetArena());
  }
  return released;
}
inline void Edge::set_allocated_label(::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_.label_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.label_.IsDefault()) {
    _impl_.label_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Edge.label)
}

// .saengra_api.Vertex to = 3;
inline bool Edge::has_to() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.to_ != nullptr);
  return value;
}
inline void Edge::clear_to() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.to_ != nullptr) _impl_.to_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::saengra_api::Vertex& Edge::_internal_to() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::saengra_api::Vertex* p = _impl_.to_;
  return p != nullptr ? *p : reinterpret_cast<const ::saengra_api::Vertex&>(::saengra_api::_Vertex_default_instance_);
}
inline const ::saengra_api::Vertex& Edge::to() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Edge.to)
  return _internal_to();
}
inline void Edge::unsafe_arena_set_allocated_to(
    ::saengra_api::Vertex* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.to_);
  }
  _impl_.to_ = reinterpret_cast<::saengra_api::Vertex*>(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:saengra_api.Edge.to)
}
inline ::saengra_api::Vertex* PROTOBUF_NULLABLE Edge::release_to() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::saengra_api::Vertex* released = _impl_.to_;
  _impl_.to_ = 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 ::saengra_api::Vertex* PROTOBUF_NULLABLE Edge::unsafe_arena_release_to() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Edge.to)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::saengra_api::Vertex* temp = _impl_.to_;
  _impl_.to_ = nullptr;
  return temp;
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Edge::_internal_mutable_to() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.to_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::saengra_api::Vertex>(GetArena());
    _impl_.to_ = reinterpret_cast<::saengra_api::Vertex*>(p);
  }
  return _impl_.to_;
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Edge::mutable_to()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::saengra_api::Vertex* _msg = _internal_mutable_to();
  // @@protoc_insertion_point(field_mutable:saengra_api.Edge.to)
  return _msg;
}
inline void Edge::set_allocated_to(::saengra_api::Vertex* 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_.to_);
  }

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

  _impl_.to_ = reinterpret_cast<::saengra_api::Vertex*>(value);
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Edge.to)
}

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

// Position

// .saengra_api.Vertex vertex = 1;
inline bool Position::has_vertex() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.vertex_ != nullptr);
  return value;
}
inline void Position::clear_vertex() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.vertex_ != nullptr) _impl_.vertex_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::saengra_api::Vertex& Position::_internal_vertex() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::saengra_api::Vertex* p = _impl_.vertex_;
  return p != nullptr ? *p : reinterpret_cast<const ::saengra_api::Vertex&>(::saengra_api::_Vertex_default_instance_);
}
inline const ::saengra_api::Vertex& Position::vertex() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Position.vertex)
  return _internal_vertex();
}
inline void Position::unsafe_arena_set_allocated_vertex(
    ::saengra_api::Vertex* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.vertex_);
  }
  _impl_.vertex_ = reinterpret_cast<::saengra_api::Vertex*>(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:saengra_api.Position.vertex)
}
inline ::saengra_api::Vertex* PROTOBUF_NULLABLE Position::release_vertex() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::saengra_api::Vertex* released = _impl_.vertex_;
  _impl_.vertex_ = 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 ::saengra_api::Vertex* PROTOBUF_NULLABLE Position::unsafe_arena_release_vertex() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Position.vertex)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::saengra_api::Vertex* temp = _impl_.vertex_;
  _impl_.vertex_ = nullptr;
  return temp;
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Position::_internal_mutable_vertex() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.vertex_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::saengra_api::Vertex>(GetArena());
    _impl_.vertex_ = reinterpret_cast<::saengra_api::Vertex*>(p);
  }
  return _impl_.vertex_;
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Position::mutable_vertex()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::saengra_api::Vertex* _msg = _internal_mutable_vertex();
  // @@protoc_insertion_point(field_mutable:saengra_api.Position.vertex)
  return _msg;
}
inline void Position::set_allocated_vertex(::saengra_api::Vertex* 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_.vertex_);
  }

  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_.vertex_ = reinterpret_cast<::saengra_api::Vertex*>(value);
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Position.vertex)
}

// .saengra_api.Position.PositionKind kind = 2;
inline void Position::clear_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kind_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::saengra_api::Position_PositionKind Position::kind() const {
  // @@protoc_insertion_point(field_get:saengra_api.Position.kind)
  return _internal_kind();
}
inline void Position::set_kind(::saengra_api::Position_PositionKind value) {
  _internal_set_kind(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:saengra_api.Position.kind)
}
inline ::saengra_api::Position_PositionKind Position::_internal_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::saengra_api::Position_PositionKind>(_impl_.kind_);
}
inline void Position::_internal_set_kind(::saengra_api::Position_PositionKind value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kind_ = value;
}

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

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

// Subgraph

// .saengra_api.Position start_position = 1;
inline bool Subgraph::has_start_position() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  PROTOBUF_ASSUME(!value || _impl_.start_position_ != nullptr);
  return value;
}
inline void Subgraph::clear_start_position() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.start_position_ != nullptr) _impl_.start_position_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline const ::saengra_api::Position& Subgraph::_internal_start_position() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::saengra_api::Position* p = _impl_.start_position_;
  return p != nullptr ? *p : reinterpret_cast<const ::saengra_api::Position&>(::saengra_api::_Position_default_instance_);
}
inline const ::saengra_api::Position& Subgraph::start_position() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Subgraph.start_position)
  return _internal_start_position();
}
inline void Subgraph::unsafe_arena_set_allocated_start_position(
    ::saengra_api::Position* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.start_position_);
  }
  _impl_.start_position_ = reinterpret_cast<::saengra_api::Position*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Subgraph.start_position)
}
inline ::saengra_api::Position* PROTOBUF_NULLABLE Subgraph::release_start_position() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::saengra_api::Position* released = _impl_.start_position_;
  _impl_.start_position_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::saengra_api::Position* PROTOBUF_NULLABLE Subgraph::unsafe_arena_release_start_position() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Subgraph.start_position)

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::saengra_api::Position* temp = _impl_.start_position_;
  _impl_.start_position_ = nullptr;
  return temp;
}
inline ::saengra_api::Position* PROTOBUF_NONNULL Subgraph::_internal_mutable_start_position() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.start_position_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::saengra_api::Position>(GetArena());
    _impl_.start_position_ = reinterpret_cast<::saengra_api::Position*>(p);
  }
  return _impl_.start_position_;
}
inline ::saengra_api::Position* PROTOBUF_NONNULL Subgraph::mutable_start_position()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::saengra_api::Position* _msg = _internal_mutable_start_position();
  // @@protoc_insertion_point(field_mutable:saengra_api.Subgraph.start_position)
  return _msg;
}
inline void Subgraph::set_allocated_start_position(::saengra_api::Position* 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_.start_position_);
  }

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

  _impl_.start_position_ = reinterpret_cast<::saengra_api::Position*>(value);
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Subgraph.start_position)
}

// repeated .saengra_api.Position end_positions = 2;
inline int Subgraph::_internal_end_positions_size() const {
  return _internal_end_positions().size();
}
inline int Subgraph::end_positions_size() const {
  return _internal_end_positions_size();
}
inline void Subgraph::clear_end_positions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.end_positions_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::Position* PROTOBUF_NONNULL Subgraph::mutable_end_positions(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.Subgraph.end_positions)
  return _internal_mutable_end_positions()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Position>* PROTOBUF_NONNULL Subgraph::mutable_end_positions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.Subgraph.end_positions)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_end_positions();
}
inline const ::saengra_api::Position& Subgraph::end_positions(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Subgraph.end_positions)
  return _internal_end_positions().Get(index);
}
inline ::saengra_api::Position* PROTOBUF_NONNULL Subgraph::add_end_positions()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::Position* _add =
      _internal_mutable_end_positions()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:saengra_api.Subgraph.end_positions)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Position>& Subgraph::end_positions() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.Subgraph.end_positions)
  return _internal_end_positions();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Position>&
Subgraph::_internal_end_positions() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.end_positions_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Position>* PROTOBUF_NONNULL
Subgraph::_internal_mutable_end_positions() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.end_positions_;
}

// repeated .saengra_api.Vertex vertices = 3;
inline int Subgraph::_internal_vertices_size() const {
  return _internal_vertices().size();
}
inline int Subgraph::vertices_size() const {
  return _internal_vertices_size();
}
inline void Subgraph::clear_vertices() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vertices_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Subgraph::mutable_vertices(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.Subgraph.vertices)
  return _internal_mutable_vertices()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL Subgraph::mutable_vertices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.Subgraph.vertices)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_vertices();
}
inline const ::saengra_api::Vertex& Subgraph::vertices(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Subgraph.vertices)
  return _internal_vertices().Get(index);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Subgraph::add_vertices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::Vertex* _add =
      _internal_mutable_vertices()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:saengra_api.Subgraph.vertices)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& Subgraph::vertices() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.Subgraph.vertices)
  return _internal_vertices();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>&
Subgraph::_internal_vertices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.vertices_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL
Subgraph::_internal_mutable_vertices() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.vertices_;
}

// repeated .saengra_api.Edge edges = 4;
inline int Subgraph::_internal_edges_size() const {
  return _internal_edges().size();
}
inline int Subgraph::edges_size() const {
  return _internal_edges_size();
}
inline void Subgraph::clear_edges() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.edges_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::saengra_api::Edge* PROTOBUF_NONNULL Subgraph::mutable_edges(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.Subgraph.edges)
  return _internal_mutable_edges()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>* PROTOBUF_NONNULL Subgraph::mutable_edges()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.Subgraph.edges)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_edges();
}
inline const ::saengra_api::Edge& Subgraph::edges(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Subgraph.edges)
  return _internal_edges().Get(index);
}
inline ::saengra_api::Edge* PROTOBUF_NONNULL Subgraph::add_edges()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::Edge* _add =
      _internal_mutable_edges()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:saengra_api.Subgraph.edges)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>& Subgraph::edges() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.Subgraph.edges)
  return _internal_edges();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>&
Subgraph::_internal_edges() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.edges_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>* PROTOBUF_NONNULL
Subgraph::_internal_mutable_edges() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.edges_;
}

// map<string, .saengra_api.Vertex> refs = 5;
inline int Subgraph::_internal_refs_size() const {
  return _internal_refs().size();
}
inline int Subgraph::refs_size() const {
  return _internal_refs_size();
}
inline void Subgraph::clear_refs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.refs_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000010U);
}
inline const ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>& Subgraph::_internal_refs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.refs_.GetMap();
}
inline const ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>& Subgraph::refs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:saengra_api.Subgraph.refs)
  return _internal_refs();
}
inline ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>* PROTOBUF_NONNULL Subgraph::_internal_mutable_refs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.refs_.MutableMap();
}
inline ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>* PROTOBUF_NONNULL Subgraph::mutable_refs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_mutable_map:saengra_api.Subgraph.refs)
  return _internal_mutable_refs();
}

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

// Request

// .saengra_api.Connect connect = 1;
inline bool Request::has_connect() const {
  return request_case() == kConnect;
}
inline bool Request::_internal_has_connect() const {
  return request_case() == kConnect;
}
inline void Request::set_has_connect() {
  _impl_._oneof_case_[0] = kConnect;
}
inline void Request::clear_connect() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (request_case() == kConnect) {
    if (GetArena() == nullptr) {
      delete _impl_.request_.connect_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.request_.connect_);
    }
    clear_has_request();
  }
}
inline ::saengra_api::Connect* PROTOBUF_NULLABLE Request::release_connect() {
  // @@protoc_insertion_point(field_release:saengra_api.Request.connect)
  if (request_case() == kConnect) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Connect*>(_impl_.request_.connect_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.request_.connect_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::Connect& Request::_internal_connect() const {
  return request_case() == kConnect ? static_cast<const ::saengra_api::Connect&>(*reinterpret_cast<::saengra_api::Connect*>(_impl_.request_.connect_))
                     : reinterpret_cast<const ::saengra_api::Connect&>(::saengra_api::_Connect_default_instance_);
}
inline const ::saengra_api::Connect& Request::connect() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Request.connect)
  return _internal_connect();
}
inline ::saengra_api::Connect* PROTOBUF_NULLABLE Request::unsafe_arena_release_connect() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Request.connect)
  if (request_case() == kConnect) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Connect*>(_impl_.request_.connect_);
    _impl_.request_.connect_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Request::unsafe_arena_set_allocated_connect(
    ::saengra_api::Connect* 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_request();
  if (value) {
    set_has_connect();
    _impl_.request_.connect_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Request.connect)
}
inline ::saengra_api::Connect* PROTOBUF_NONNULL Request::_internal_mutable_connect() {
  if (request_case() != kConnect) {
    clear_request();
    set_has_connect();
    _impl_.request_.connect_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::Connect>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::Connect*>(_impl_.request_.connect_);
}
inline ::saengra_api::Connect* PROTOBUF_NONNULL Request::mutable_connect()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::Connect* _msg = _internal_mutable_connect();
  // @@protoc_insertion_point(field_mutable:saengra_api.Request.connect)
  return _msg;
}

// .saengra_api.ApplyUpdates apply_updates = 2;
inline bool Request::has_apply_updates() const {
  return request_case() == kApplyUpdates;
}
inline bool Request::_internal_has_apply_updates() const {
  return request_case() == kApplyUpdates;
}
inline void Request::set_has_apply_updates() {
  _impl_._oneof_case_[0] = kApplyUpdates;
}
inline void Request::clear_apply_updates() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (request_case() == kApplyUpdates) {
    if (GetArena() == nullptr) {
      delete _impl_.request_.apply_updates_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.request_.apply_updates_);
    }
    clear_has_request();
  }
}
inline ::saengra_api::ApplyUpdates* PROTOBUF_NULLABLE Request::release_apply_updates() {
  // @@protoc_insertion_point(field_release:saengra_api.Request.apply_updates)
  if (request_case() == kApplyUpdates) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::ApplyUpdates*>(_impl_.request_.apply_updates_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.request_.apply_updates_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::ApplyUpdates& Request::_internal_apply_updates() const {
  return request_case() == kApplyUpdates ? static_cast<const ::saengra_api::ApplyUpdates&>(*reinterpret_cast<::saengra_api::ApplyUpdates*>(_impl_.request_.apply_updates_))
                     : reinterpret_cast<const ::saengra_api::ApplyUpdates&>(::saengra_api::_ApplyUpdates_default_instance_);
}
inline const ::saengra_api::ApplyUpdates& Request::apply_updates() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Request.apply_updates)
  return _internal_apply_updates();
}
inline ::saengra_api::ApplyUpdates* PROTOBUF_NULLABLE Request::unsafe_arena_release_apply_updates() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Request.apply_updates)
  if (request_case() == kApplyUpdates) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::ApplyUpdates*>(_impl_.request_.apply_updates_);
    _impl_.request_.apply_updates_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Request::unsafe_arena_set_allocated_apply_updates(
    ::saengra_api::ApplyUpdates* 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_request();
  if (value) {
    set_has_apply_updates();
    _impl_.request_.apply_updates_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Request.apply_updates)
}
inline ::saengra_api::ApplyUpdates* PROTOBUF_NONNULL Request::_internal_mutable_apply_updates() {
  if (request_case() != kApplyUpdates) {
    clear_request();
    set_has_apply_updates();
    _impl_.request_.apply_updates_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::ApplyUpdates>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::ApplyUpdates*>(_impl_.request_.apply_updates_);
}
inline ::saengra_api::ApplyUpdates* PROTOBUF_NONNULL Request::mutable_apply_updates()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::ApplyUpdates* _msg = _internal_mutable_apply_updates();
  // @@protoc_insertion_point(field_mutable:saengra_api.Request.apply_updates)
  return _msg;
}

// .saengra_api.Commit commit = 3;
inline bool Request::has_commit() const {
  return request_case() == kCommit;
}
inline bool Request::_internal_has_commit() const {
  return request_case() == kCommit;
}
inline void Request::set_has_commit() {
  _impl_._oneof_case_[0] = kCommit;
}
inline void Request::clear_commit() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (request_case() == kCommit) {
    if (GetArena() == nullptr) {
      delete _impl_.request_.commit_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.request_.commit_);
    }
    clear_has_request();
  }
}
inline ::saengra_api::Commit* PROTOBUF_NULLABLE Request::release_commit() {
  // @@protoc_insertion_point(field_release:saengra_api.Request.commit)
  if (request_case() == kCommit) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Commit*>(_impl_.request_.commit_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.request_.commit_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::Commit& Request::_internal_commit() const {
  return request_case() == kCommit ? static_cast<const ::saengra_api::Commit&>(*reinterpret_cast<::saengra_api::Commit*>(_impl_.request_.commit_))
                     : reinterpret_cast<const ::saengra_api::Commit&>(::saengra_api::_Commit_default_instance_);
}
inline const ::saengra_api::Commit& Request::commit() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Request.commit)
  return _internal_commit();
}
inline ::saengra_api::Commit* PROTOBUF_NULLABLE Request::unsafe_arena_release_commit() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Request.commit)
  if (request_case() == kCommit) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Commit*>(_impl_.request_.commit_);
    _impl_.request_.commit_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Request::unsafe_arena_set_allocated_commit(
    ::saengra_api::Commit* 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_request();
  if (value) {
    set_has_commit();
    _impl_.request_.commit_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Request.commit)
}
inline ::saengra_api::Commit* PROTOBUF_NONNULL Request::_internal_mutable_commit() {
  if (request_case() != kCommit) {
    clear_request();
    set_has_commit();
    _impl_.request_.commit_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::Commit>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::Commit*>(_impl_.request_.commit_);
}
inline ::saengra_api::Commit* PROTOBUF_NONNULL Request::mutable_commit()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::Commit* _msg = _internal_mutable_commit();
  // @@protoc_insertion_point(field_mutable:saengra_api.Request.commit)
  return _msg;
}

// .saengra_api.Rollback rollback = 4;
inline bool Request::has_rollback() const {
  return request_case() == kRollback;
}
inline bool Request::_internal_has_rollback() const {
  return request_case() == kRollback;
}
inline void Request::set_has_rollback() {
  _impl_._oneof_case_[0] = kRollback;
}
inline void Request::clear_rollback() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (request_case() == kRollback) {
    if (GetArena() == nullptr) {
      delete _impl_.request_.rollback_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.request_.rollback_);
    }
    clear_has_request();
  }
}
inline ::saengra_api::Rollback* PROTOBUF_NULLABLE Request::release_rollback() {
  // @@protoc_insertion_point(field_release:saengra_api.Request.rollback)
  if (request_case() == kRollback) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Rollback*>(_impl_.request_.rollback_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.request_.rollback_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::Rollback& Request::_internal_rollback() const {
  return request_case() == kRollback ? static_cast<const ::saengra_api::Rollback&>(*reinterpret_cast<::saengra_api::Rollback*>(_impl_.request_.rollback_))
                     : reinterpret_cast<const ::saengra_api::Rollback&>(::saengra_api::_Rollback_default_instance_);
}
inline const ::saengra_api::Rollback& Request::rollback() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Request.rollback)
  return _internal_rollback();
}
inline ::saengra_api::Rollback* PROTOBUF_NULLABLE Request::unsafe_arena_release_rollback() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Request.rollback)
  if (request_case() == kRollback) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Rollback*>(_impl_.request_.rollback_);
    _impl_.request_.rollback_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Request::unsafe_arena_set_allocated_rollback(
    ::saengra_api::Rollback* 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_request();
  if (value) {
    set_has_rollback();
    _impl_.request_.rollback_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Request.rollback)
}
inline ::saengra_api::Rollback* PROTOBUF_NONNULL Request::_internal_mutable_rollback() {
  if (request_case() != kRollback) {
    clear_request();
    set_has_rollback();
    _impl_.request_.rollback_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::Rollback>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::Rollback*>(_impl_.request_.rollback_);
}
inline ::saengra_api::Rollback* PROTOBUF_NONNULL Request::mutable_rollback()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::Rollback* _msg = _internal_mutable_rollback();
  // @@protoc_insertion_point(field_mutable:saengra_api.Request.rollback)
  return _msg;
}

// .saengra_api.Observe observe = 5;
inline bool Request::has_observe() const {
  return request_case() == kObserve;
}
inline bool Request::_internal_has_observe() const {
  return request_case() == kObserve;
}
inline void Request::set_has_observe() {
  _impl_._oneof_case_[0] = kObserve;
}
inline void Request::clear_observe() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (request_case() == kObserve) {
    if (GetArena() == nullptr) {
      delete _impl_.request_.observe_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.request_.observe_);
    }
    clear_has_request();
  }
}
inline ::saengra_api::Observe* PROTOBUF_NULLABLE Request::release_observe() {
  // @@protoc_insertion_point(field_release:saengra_api.Request.observe)
  if (request_case() == kObserve) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Observe*>(_impl_.request_.observe_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.request_.observe_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::Observe& Request::_internal_observe() const {
  return request_case() == kObserve ? static_cast<const ::saengra_api::Observe&>(*reinterpret_cast<::saengra_api::Observe*>(_impl_.request_.observe_))
                     : reinterpret_cast<const ::saengra_api::Observe&>(::saengra_api::_Observe_default_instance_);
}
inline const ::saengra_api::Observe& Request::observe() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Request.observe)
  return _internal_observe();
}
inline ::saengra_api::Observe* PROTOBUF_NULLABLE Request::unsafe_arena_release_observe() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Request.observe)
  if (request_case() == kObserve) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Observe*>(_impl_.request_.observe_);
    _impl_.request_.observe_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Request::unsafe_arena_set_allocated_observe(
    ::saengra_api::Observe* 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_request();
  if (value) {
    set_has_observe();
    _impl_.request_.observe_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Request.observe)
}
inline ::saengra_api::Observe* PROTOBUF_NONNULL Request::_internal_mutable_observe() {
  if (request_case() != kObserve) {
    clear_request();
    set_has_observe();
    _impl_.request_.observe_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::Observe>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::Observe*>(_impl_.request_.observe_);
}
inline ::saengra_api::Observe* PROTOBUF_NONNULL Request::mutable_observe()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::Observe* _msg = _internal_mutable_observe();
  // @@protoc_insertion_point(field_mutable:saengra_api.Request.observe)
  return _msg;
}

// .saengra_api.Find find = 6;
inline bool Request::has_find() const {
  return request_case() == kFind;
}
inline bool Request::_internal_has_find() const {
  return request_case() == kFind;
}
inline void Request::set_has_find() {
  _impl_._oneof_case_[0] = kFind;
}
inline void Request::clear_find() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (request_case() == kFind) {
    if (GetArena() == nullptr) {
      delete _impl_.request_.find_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.request_.find_);
    }
    clear_has_request();
  }
}
inline ::saengra_api::Find* PROTOBUF_NULLABLE Request::release_find() {
  // @@protoc_insertion_point(field_release:saengra_api.Request.find)
  if (request_case() == kFind) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Find*>(_impl_.request_.find_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.request_.find_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::Find& Request::_internal_find() const {
  return request_case() == kFind ? static_cast<const ::saengra_api::Find&>(*reinterpret_cast<::saengra_api::Find*>(_impl_.request_.find_))
                     : reinterpret_cast<const ::saengra_api::Find&>(::saengra_api::_Find_default_instance_);
}
inline const ::saengra_api::Find& Request::find() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Request.find)
  return _internal_find();
}
inline ::saengra_api::Find* PROTOBUF_NULLABLE Request::unsafe_arena_release_find() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Request.find)
  if (request_case() == kFind) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Find*>(_impl_.request_.find_);
    _impl_.request_.find_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Request::unsafe_arena_set_allocated_find(
    ::saengra_api::Find* 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_request();
  if (value) {
    set_has_find();
    _impl_.request_.find_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Request.find)
}
inline ::saengra_api::Find* PROTOBUF_NONNULL Request::_internal_mutable_find() {
  if (request_case() != kFind) {
    clear_request();
    set_has_find();
    _impl_.request_.find_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::Find>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::Find*>(_impl_.request_.find_);
}
inline ::saengra_api::Find* PROTOBUF_NONNULL Request::mutable_find()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::Find* _msg = _internal_mutable_find();
  // @@protoc_insertion_point(field_mutable:saengra_api.Request.find)
  return _msg;
}

// .saengra_api.Match match = 7;
inline bool Request::has_match() const {
  return request_case() == kMatch;
}
inline bool Request::_internal_has_match() const {
  return request_case() == kMatch;
}
inline void Request::set_has_match() {
  _impl_._oneof_case_[0] = kMatch;
}
inline void Request::clear_match() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (request_case() == kMatch) {
    if (GetArena() == nullptr) {
      delete _impl_.request_.match_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.request_.match_);
    }
    clear_has_request();
  }
}
inline ::saengra_api::Match* PROTOBUF_NULLABLE Request::release_match() {
  // @@protoc_insertion_point(field_release:saengra_api.Request.match)
  if (request_case() == kMatch) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Match*>(_impl_.request_.match_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.request_.match_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::Match& Request::_internal_match() const {
  return request_case() == kMatch ? static_cast<const ::saengra_api::Match&>(*reinterpret_cast<::saengra_api::Match*>(_impl_.request_.match_))
                     : reinterpret_cast<const ::saengra_api::Match&>(::saengra_api::_Match_default_instance_);
}
inline const ::saengra_api::Match& Request::match() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Request.match)
  return _internal_match();
}
inline ::saengra_api::Match* PROTOBUF_NULLABLE Request::unsafe_arena_release_match() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Request.match)
  if (request_case() == kMatch) {
    clear_has_request();
    auto* temp = reinterpret_cast<::saengra_api::Match*>(_impl_.request_.match_);
    _impl_.request_.match_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Request::unsafe_arena_set_allocated_match(
    ::saengra_api::Match* 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_request();
  if (value) {
    set_has_match();
    _impl_.request_.match_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Request.match)
}
inline ::saengra_api::Match* PROTOBUF_NONNULL Request::_internal_mutable_match() {
  if (request_case() != kMatch) {
    clear_request();
    set_has_match();
    _impl_.request_.match_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::Match>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::Match*>(_impl_.request_.match_);
}
inline ::saengra_api::Match* PROTOBUF_NONNULL Request::mutable_match()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::Match* _msg = _internal_mutable_match();
  // @@protoc_insertion_point(field_mutable:saengra_api.Request.match)
  return _msg;
}

inline bool Request::has_request() const {
  return request_case() != REQUEST_NOT_SET;
}
inline void Request::clear_has_request() {
  _impl_._oneof_case_[0] = REQUEST_NOT_SET;
}
inline Request::RequestCase Request::request_case() const {
  return Request::RequestCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// Connect

// string graph_id = 1;
inline void Connect::clear_graph_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.graph_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& Connect::graph_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Connect.graph_id)
  return _internal_graph_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Connect::set_graph_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.graph_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:saengra_api.Connect.graph_id)
}
inline ::std::string* PROTOBUF_NONNULL Connect::mutable_graph_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_graph_id();
  // @@protoc_insertion_point(field_mutable:saengra_api.Connect.graph_id)
  return _s;
}
inline const ::std::string& Connect::_internal_graph_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.graph_id_.Get();
}
inline void Connect::_internal_set_graph_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.graph_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Connect::_internal_mutable_graph_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.graph_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Connect::release_graph_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Connect.graph_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.graph_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.graph_id_.Set("", GetArena());
  }
  return released;
}
inline void Connect::set_allocated_graph_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.graph_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.graph_id_.IsDefault()) {
    _impl_.graph_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Connect.graph_id)
}

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

// ApplyUpdates_Update

// .saengra_api.ApplyUpdates.Update.UpdateKind kind = 1;
inline void ApplyUpdates_Update::clear_kind() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kind_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline ::saengra_api::ApplyUpdates_Update_UpdateKind ApplyUpdates_Update::kind() const {
  // @@protoc_insertion_point(field_get:saengra_api.ApplyUpdates.Update.kind)
  return _internal_kind();
}
inline void ApplyUpdates_Update::set_kind(::saengra_api::ApplyUpdates_Update_UpdateKind value) {
  _internal_set_kind(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:saengra_api.ApplyUpdates.Update.kind)
}
inline ::saengra_api::ApplyUpdates_Update_UpdateKind ApplyUpdates_Update::_internal_kind() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::saengra_api::ApplyUpdates_Update_UpdateKind>(_impl_.kind_);
}
inline void ApplyUpdates_Update::_internal_set_kind(::saengra_api::ApplyUpdates_Update_UpdateKind value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.kind_ = value;
}

// .saengra_api.Vertex from = 2;
inline bool ApplyUpdates_Update::has_from() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.from_ != nullptr);
  return value;
}
inline void ApplyUpdates_Update::clear_from() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.from_ != nullptr) _impl_.from_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline const ::saengra_api::Vertex& ApplyUpdates_Update::_internal_from() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::saengra_api::Vertex* p = _impl_.from_;
  return p != nullptr ? *p : reinterpret_cast<const ::saengra_api::Vertex&>(::saengra_api::_Vertex_default_instance_);
}
inline const ::saengra_api::Vertex& ApplyUpdates_Update::from() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.ApplyUpdates.Update.from)
  return _internal_from();
}
inline void ApplyUpdates_Update::unsafe_arena_set_allocated_from(
    ::saengra_api::Vertex* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.from_);
  }
  _impl_.from_ = reinterpret_cast<::saengra_api::Vertex*>(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:saengra_api.ApplyUpdates.Update.from)
}
inline ::saengra_api::Vertex* PROTOBUF_NULLABLE ApplyUpdates_Update::release_from() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::saengra_api::Vertex* released = _impl_.from_;
  _impl_.from_ = 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 ::saengra_api::Vertex* PROTOBUF_NULLABLE ApplyUpdates_Update::unsafe_arena_release_from() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.ApplyUpdates.Update.from)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::saengra_api::Vertex* temp = _impl_.from_;
  _impl_.from_ = nullptr;
  return temp;
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL ApplyUpdates_Update::_internal_mutable_from() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.from_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::saengra_api::Vertex>(GetArena());
    _impl_.from_ = reinterpret_cast<::saengra_api::Vertex*>(p);
  }
  return _impl_.from_;
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL ApplyUpdates_Update::mutable_from()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::saengra_api::Vertex* _msg = _internal_mutable_from();
  // @@protoc_insertion_point(field_mutable:saengra_api.ApplyUpdates.Update.from)
  return _msg;
}
inline void ApplyUpdates_Update::set_allocated_from(::saengra_api::Vertex* 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_.from_);
  }

  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_.from_ = reinterpret_cast<::saengra_api::Vertex*>(value);
  // @@protoc_insertion_point(field_set_allocated:saengra_api.ApplyUpdates.Update.from)
}

// optional string label = 3;
inline bool ApplyUpdates_Update::has_label() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void ApplyUpdates_Update::clear_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& ApplyUpdates_Update::label() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.ApplyUpdates.Update.label)
  return _internal_label();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ApplyUpdates_Update::set_label(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.label_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:saengra_api.ApplyUpdates.Update.label)
}
inline ::std::string* PROTOBUF_NONNULL ApplyUpdates_Update::mutable_label()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_label();
  // @@protoc_insertion_point(field_mutable:saengra_api.ApplyUpdates.Update.label)
  return _s;
}
inline const ::std::string& ApplyUpdates_Update::_internal_label() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.label_.Get();
}
inline void ApplyUpdates_Update::_internal_set_label(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ApplyUpdates_Update::_internal_mutable_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.label_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ApplyUpdates_Update::release_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.ApplyUpdates.Update.label)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.label_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.label_.Set("", GetArena());
  }
  return released;
}
inline void ApplyUpdates_Update::set_allocated_label(::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_.label_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.label_.IsDefault()) {
    _impl_.label_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:saengra_api.ApplyUpdates.Update.label)
}

// optional .saengra_api.Vertex to = 4;
inline bool ApplyUpdates_Update::has_to() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.to_ != nullptr);
  return value;
}
inline void ApplyUpdates_Update::clear_to() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.to_ != nullptr) _impl_.to_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::saengra_api::Vertex& ApplyUpdates_Update::_internal_to() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::saengra_api::Vertex* p = _impl_.to_;
  return p != nullptr ? *p : reinterpret_cast<const ::saengra_api::Vertex&>(::saengra_api::_Vertex_default_instance_);
}
inline const ::saengra_api::Vertex& ApplyUpdates_Update::to() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.ApplyUpdates.Update.to)
  return _internal_to();
}
inline void ApplyUpdates_Update::unsafe_arena_set_allocated_to(
    ::saengra_api::Vertex* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.to_);
  }
  _impl_.to_ = reinterpret_cast<::saengra_api::Vertex*>(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:saengra_api.ApplyUpdates.Update.to)
}
inline ::saengra_api::Vertex* PROTOBUF_NULLABLE ApplyUpdates_Update::release_to() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::saengra_api::Vertex* released = _impl_.to_;
  _impl_.to_ = 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 ::saengra_api::Vertex* PROTOBUF_NULLABLE ApplyUpdates_Update::unsafe_arena_release_to() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.ApplyUpdates.Update.to)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::saengra_api::Vertex* temp = _impl_.to_;
  _impl_.to_ = nullptr;
  return temp;
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL ApplyUpdates_Update::_internal_mutable_to() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.to_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::saengra_api::Vertex>(GetArena());
    _impl_.to_ = reinterpret_cast<::saengra_api::Vertex*>(p);
  }
  return _impl_.to_;
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL ApplyUpdates_Update::mutable_to()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::saengra_api::Vertex* _msg = _internal_mutable_to();
  // @@protoc_insertion_point(field_mutable:saengra_api.ApplyUpdates.Update.to)
  return _msg;
}
inline void ApplyUpdates_Update::set_allocated_to(::saengra_api::Vertex* 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_.to_);
  }

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

  _impl_.to_ = reinterpret_cast<::saengra_api::Vertex*>(value);
  // @@protoc_insertion_point(field_set_allocated:saengra_api.ApplyUpdates.Update.to)
}

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

// ApplyUpdates

// repeated .saengra_api.ApplyUpdates.Update updates = 1;
inline int ApplyUpdates::_internal_updates_size() const {
  return _internal_updates().size();
}
inline int ApplyUpdates::updates_size() const {
  return _internal_updates_size();
}
inline void ApplyUpdates::clear_updates() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.updates_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::ApplyUpdates_Update* PROTOBUF_NONNULL ApplyUpdates::mutable_updates(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.ApplyUpdates.updates)
  return _internal_mutable_updates()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::ApplyUpdates_Update>* PROTOBUF_NONNULL ApplyUpdates::mutable_updates()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.ApplyUpdates.updates)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_updates();
}
inline const ::saengra_api::ApplyUpdates_Update& ApplyUpdates::updates(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.ApplyUpdates.updates)
  return _internal_updates().Get(index);
}
inline ::saengra_api::ApplyUpdates_Update* PROTOBUF_NONNULL ApplyUpdates::add_updates()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::ApplyUpdates_Update* _add =
      _internal_mutable_updates()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:saengra_api.ApplyUpdates.updates)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::ApplyUpdates_Update>& ApplyUpdates::updates() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.ApplyUpdates.updates)
  return _internal_updates();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::ApplyUpdates_Update>&
ApplyUpdates::_internal_updates() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.updates_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::ApplyUpdates_Update>* PROTOBUF_NONNULL
ApplyUpdates::_internal_mutable_updates() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.updates_;
}

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

// Commit

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

// Rollback

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

// Observe_Observer

// string id = 1;
inline void Observe_Observer::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline const ::std::string& Observe_Observer::id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Observe.Observer.id)
  return _internal_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Observe_Observer::set_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:saengra_api.Observe.Observer.id)
}
inline ::std::string* PROTOBUF_NONNULL Observe_Observer::mutable_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_id();
  // @@protoc_insertion_point(field_mutable:saengra_api.Observe.Observer.id)
  return _s;
}
inline const ::std::string& Observe_Observer::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_.Get();
}
inline void Observe_Observer::_internal_set_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Observe_Observer::_internal_mutable_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Observe_Observer::release_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Observe.Observer.id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.id_.Set("", GetArena());
  }
  return released;
}
inline void Observe_Observer::set_allocated_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.id_.IsDefault()) {
    _impl_.id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Observe.Observer.id)
}

// string expression = 2;
inline void Observe_Observer::clear_expression() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.expression_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::std::string& Observe_Observer::expression() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Observe.Observer.expression)
  return _internal_expression();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Observe_Observer::set_expression(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.expression_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:saengra_api.Observe.Observer.expression)
}
inline ::std::string* PROTOBUF_NONNULL Observe_Observer::mutable_expression()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_expression();
  // @@protoc_insertion_point(field_mutable:saengra_api.Observe.Observer.expression)
  return _s;
}
inline const ::std::string& Observe_Observer::_internal_expression() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.expression_.Get();
}
inline void Observe_Observer::_internal_set_expression(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.expression_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Observe_Observer::_internal_mutable_expression() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.expression_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Observe_Observer::release_expression() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Observe.Observer.expression)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.expression_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.expression_.Set("", GetArena());
  }
  return released;
}
inline void Observe_Observer::set_allocated_expression(::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_.expression_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.expression_.IsDefault()) {
    _impl_.expression_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Observe.Observer.expression)
}

// repeated .saengra_api.Vertex placeholder_values = 3;
inline int Observe_Observer::_internal_placeholder_values_size() const {
  return _internal_placeholder_values().size();
}
inline int Observe_Observer::placeholder_values_size() const {
  return _internal_placeholder_values_size();
}
inline void Observe_Observer::clear_placeholder_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.placeholder_values_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Observe_Observer::mutable_placeholder_values(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.Observe.Observer.placeholder_values)
  return _internal_mutable_placeholder_values()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL Observe_Observer::mutable_placeholder_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.Observe.Observer.placeholder_values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_placeholder_values();
}
inline const ::saengra_api::Vertex& Observe_Observer::placeholder_values(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Observe.Observer.placeholder_values)
  return _internal_placeholder_values().Get(index);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Observe_Observer::add_placeholder_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::Vertex* _add =
      _internal_mutable_placeholder_values()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:saengra_api.Observe.Observer.placeholder_values)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& Observe_Observer::placeholder_values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.Observe.Observer.placeholder_values)
  return _internal_placeholder_values();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>&
Observe_Observer::_internal_placeholder_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.placeholder_values_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL
Observe_Observer::_internal_mutable_placeholder_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.placeholder_values_;
}

// bool on_create = 4;
inline void Observe_Observer::clear_on_create() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.on_create_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline bool Observe_Observer::on_create() const {
  // @@protoc_insertion_point(field_get:saengra_api.Observe.Observer.on_create)
  return _internal_on_create();
}
inline void Observe_Observer::set_on_create(bool value) {
  _internal_set_on_create(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:saengra_api.Observe.Observer.on_create)
}
inline bool Observe_Observer::_internal_on_create() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.on_create_;
}
inline void Observe_Observer::_internal_set_on_create(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.on_create_ = value;
}

// bool on_change = 5;
inline void Observe_Observer::clear_on_change() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.on_change_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline bool Observe_Observer::on_change() const {
  // @@protoc_insertion_point(field_get:saengra_api.Observe.Observer.on_change)
  return _internal_on_change();
}
inline void Observe_Observer::set_on_change(bool value) {
  _internal_set_on_change(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:saengra_api.Observe.Observer.on_change)
}
inline bool Observe_Observer::_internal_on_change() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.on_change_;
}
inline void Observe_Observer::_internal_set_on_change(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.on_change_ = value;
}

// bool on_delete = 6;
inline void Observe_Observer::clear_on_delete() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.on_delete_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000020U);
}
inline bool Observe_Observer::on_delete() const {
  // @@protoc_insertion_point(field_get:saengra_api.Observe.Observer.on_delete)
  return _internal_on_delete();
}
inline void Observe_Observer::set_on_delete(bool value) {
  _internal_set_on_delete(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:saengra_api.Observe.Observer.on_delete)
}
inline bool Observe_Observer::_internal_on_delete() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.on_delete_;
}
inline void Observe_Observer::_internal_set_on_delete(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.on_delete_ = value;
}

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

// Observe

// repeated .saengra_api.Observe.Observer observers = 1;
inline int Observe::_internal_observers_size() const {
  return _internal_observers().size();
}
inline int Observe::observers_size() const {
  return _internal_observers_size();
}
inline void Observe::clear_observers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.observers_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::Observe_Observer* PROTOBUF_NONNULL Observe::mutable_observers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.Observe.observers)
  return _internal_mutable_observers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Observe_Observer>* PROTOBUF_NONNULL Observe::mutable_observers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.Observe.observers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_observers();
}
inline const ::saengra_api::Observe_Observer& Observe::observers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Observe.observers)
  return _internal_observers().Get(index);
}
inline ::saengra_api::Observe_Observer* PROTOBUF_NONNULL Observe::add_observers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::Observe_Observer* _add =
      _internal_mutable_observers()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:saengra_api.Observe.observers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Observe_Observer>& Observe::observers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.Observe.observers)
  return _internal_observers();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Observe_Observer>&
Observe::_internal_observers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.observers_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Observe_Observer>* PROTOBUF_NONNULL
Observe::_internal_mutable_observers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.observers_;
}

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

// Find

// bool vertices = 1;
inline void Find::clear_vertices() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vertices_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline bool Find::vertices() const {
  // @@protoc_insertion_point(field_get:saengra_api.Find.vertices)
  return _internal_vertices();
}
inline void Find::set_vertices(bool value) {
  _internal_set_vertices(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:saengra_api.Find.vertices)
}
inline bool Find::_internal_vertices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.vertices_;
}
inline void Find::_internal_set_vertices(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vertices_ = value;
}

// optional string with_type_name = 2;
inline bool Find::has_with_type_name() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void Find::clear_with_type_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.with_type_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::std::string& Find::with_type_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Find.with_type_name)
  return _internal_with_type_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Find::set_with_type_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.with_type_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:saengra_api.Find.with_type_name)
}
inline ::std::string* PROTOBUF_NONNULL Find::mutable_with_type_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_with_type_name();
  // @@protoc_insertion_point(field_mutable:saengra_api.Find.with_type_name)
  return _s;
}
inline const ::std::string& Find::_internal_with_type_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.with_type_name_.Get();
}
inline void Find::_internal_set_with_type_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.with_type_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Find::_internal_mutable_with_type_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.with_type_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Find::release_with_type_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Find.with_type_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.with_type_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.with_type_name_.Set("", GetArena());
  }
  return released;
}
inline void Find::set_allocated_with_type_name(::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_.with_type_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.with_type_name_.IsDefault()) {
    _impl_.with_type_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Find.with_type_name)
}

// bool edges = 3;
inline void Find::clear_edges() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.edges_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000020U);
}
inline bool Find::edges() const {
  // @@protoc_insertion_point(field_get:saengra_api.Find.edges)
  return _internal_edges();
}
inline void Find::set_edges(bool value) {
  _internal_set_edges(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:saengra_api.Find.edges)
}
inline bool Find::_internal_edges() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.edges_;
}
inline void Find::_internal_set_edges(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.edges_ = value;
}

// optional string with_label = 4;
inline bool Find::has_with_label() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void Find::clear_with_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.with_label_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline const ::std::string& Find::with_label() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Find.with_label)
  return _internal_with_label();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Find::set_with_label(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.with_label_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:saengra_api.Find.with_label)
}
inline ::std::string* PROTOBUF_NONNULL Find::mutable_with_label()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_with_label();
  // @@protoc_insertion_point(field_mutable:saengra_api.Find.with_label)
  return _s;
}
inline const ::std::string& Find::_internal_with_label() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.with_label_.Get();
}
inline void Find::_internal_set_with_label(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.with_label_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Find::_internal_mutable_with_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.with_label_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Find::release_with_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Find.with_label)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.with_label_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.with_label_.Set("", GetArena());
  }
  return released;
}
inline void Find::set_allocated_with_label(::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_.with_label_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.with_label_.IsDefault()) {
    _impl_.with_label_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Find.with_label)
}

// repeated .saengra_api.Vertex from = 6;
inline int Find::_internal_from_size() const {
  return _internal_from().size();
}
inline int Find::from_size() const {
  return _internal_from_size();
}
inline void Find::clear_from() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.from_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Find::mutable_from(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.Find.from)
  return _internal_mutable_from()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL Find::mutable_from()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.Find.from)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_from();
}
inline const ::saengra_api::Vertex& Find::from(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Find.from)
  return _internal_from().Get(index);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Find::add_from()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::Vertex* _add =
      _internal_mutable_from()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:saengra_api.Find.from)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& Find::from() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.Find.from)
  return _internal_from();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>&
Find::_internal_from() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.from_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL
Find::_internal_mutable_from() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.from_;
}

// repeated .saengra_api.Vertex to = 5;
inline int Find::_internal_to_size() const {
  return _internal_to().size();
}
inline int Find::to_size() const {
  return _internal_to_size();
}
inline void Find::clear_to() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.to_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Find::mutable_to(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.Find.to)
  return _internal_mutable_to()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL Find::mutable_to()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.Find.to)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_to();
}
inline const ::saengra_api::Vertex& Find::to(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Find.to)
  return _internal_to().Get(index);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Find::add_to()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::Vertex* _add =
      _internal_mutable_to()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:saengra_api.Find.to)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& Find::to() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.Find.to)
  return _internal_to();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>&
Find::_internal_to() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.to_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL
Find::_internal_mutable_to() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.to_;
}

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

// Match

// string expression = 1;
inline void Match::clear_expression() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.expression_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline const ::std::string& Match::expression() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Match.expression)
  return _internal_expression();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Match::set_expression(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.expression_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:saengra_api.Match.expression)
}
inline ::std::string* PROTOBUF_NONNULL Match::mutable_expression()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_expression();
  // @@protoc_insertion_point(field_mutable:saengra_api.Match.expression)
  return _s;
}
inline const ::std::string& Match::_internal_expression() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.expression_.Get();
}
inline void Match::_internal_set_expression(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.expression_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Match::_internal_mutable_expression() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.expression_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Match::release_expression() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.Match.expression)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.expression_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.expression_.Set("", GetArena());
  }
  return released;
}
inline void Match::set_allocated_expression(::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_.expression_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.expression_.IsDefault()) {
    _impl_.expression_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:saengra_api.Match.expression)
}

// repeated .saengra_api.Vertex placeholder_values = 2;
inline int Match::_internal_placeholder_values_size() const {
  return _internal_placeholder_values().size();
}
inline int Match::placeholder_values_size() const {
  return _internal_placeholder_values_size();
}
inline void Match::clear_placeholder_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.placeholder_values_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Match::mutable_placeholder_values(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.Match.placeholder_values)
  return _internal_mutable_placeholder_values()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL Match::mutable_placeholder_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.Match.placeholder_values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_placeholder_values();
}
inline const ::saengra_api::Vertex& Match::placeholder_values(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Match.placeholder_values)
  return _internal_placeholder_values().Get(index);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL Match::add_placeholder_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::Vertex* _add =
      _internal_mutable_placeholder_values()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:saengra_api.Match.placeholder_values)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& Match::placeholder_values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.Match.placeholder_values)
  return _internal_placeholder_values();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>&
Match::_internal_placeholder_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.placeholder_values_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL
Match::_internal_mutable_placeholder_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.placeholder_values_;
}

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

// Response

// .saengra_api.ConnectResponse connect = 1;
inline bool Response::has_connect() const {
  return response_case() == kConnect;
}
inline bool Response::_internal_has_connect() const {
  return response_case() == kConnect;
}
inline void Response::set_has_connect() {
  _impl_._oneof_case_[0] = kConnect;
}
inline void Response::clear_connect() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (response_case() == kConnect) {
    if (GetArena() == nullptr) {
      delete _impl_.response_.connect_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.response_.connect_);
    }
    clear_has_response();
  }
}
inline ::saengra_api::ConnectResponse* PROTOBUF_NULLABLE Response::release_connect() {
  // @@protoc_insertion_point(field_release:saengra_api.Response.connect)
  if (response_case() == kConnect) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::ConnectResponse*>(_impl_.response_.connect_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_.connect_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::ConnectResponse& Response::_internal_connect() const {
  return response_case() == kConnect ? static_cast<const ::saengra_api::ConnectResponse&>(*reinterpret_cast<::saengra_api::ConnectResponse*>(_impl_.response_.connect_))
                     : reinterpret_cast<const ::saengra_api::ConnectResponse&>(::saengra_api::_ConnectResponse_default_instance_);
}
inline const ::saengra_api::ConnectResponse& Response::connect() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Response.connect)
  return _internal_connect();
}
inline ::saengra_api::ConnectResponse* PROTOBUF_NULLABLE Response::unsafe_arena_release_connect() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Response.connect)
  if (response_case() == kConnect) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::ConnectResponse*>(_impl_.response_.connect_);
    _impl_.response_.connect_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Response::unsafe_arena_set_allocated_connect(
    ::saengra_api::ConnectResponse* 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_response();
  if (value) {
    set_has_connect();
    _impl_.response_.connect_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Response.connect)
}
inline ::saengra_api::ConnectResponse* PROTOBUF_NONNULL Response::_internal_mutable_connect() {
  if (response_case() != kConnect) {
    clear_response();
    set_has_connect();
    _impl_.response_.connect_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::ConnectResponse>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::ConnectResponse*>(_impl_.response_.connect_);
}
inline ::saengra_api::ConnectResponse* PROTOBUF_NONNULL Response::mutable_connect()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::ConnectResponse* _msg = _internal_mutable_connect();
  // @@protoc_insertion_point(field_mutable:saengra_api.Response.connect)
  return _msg;
}

// .saengra_api.ApplyUpdatesResponse apply_updates = 2;
inline bool Response::has_apply_updates() const {
  return response_case() == kApplyUpdates;
}
inline bool Response::_internal_has_apply_updates() const {
  return response_case() == kApplyUpdates;
}
inline void Response::set_has_apply_updates() {
  _impl_._oneof_case_[0] = kApplyUpdates;
}
inline void Response::clear_apply_updates() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (response_case() == kApplyUpdates) {
    if (GetArena() == nullptr) {
      delete _impl_.response_.apply_updates_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.response_.apply_updates_);
    }
    clear_has_response();
  }
}
inline ::saengra_api::ApplyUpdatesResponse* PROTOBUF_NULLABLE Response::release_apply_updates() {
  // @@protoc_insertion_point(field_release:saengra_api.Response.apply_updates)
  if (response_case() == kApplyUpdates) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::ApplyUpdatesResponse*>(_impl_.response_.apply_updates_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_.apply_updates_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::ApplyUpdatesResponse& Response::_internal_apply_updates() const {
  return response_case() == kApplyUpdates ? static_cast<const ::saengra_api::ApplyUpdatesResponse&>(*reinterpret_cast<::saengra_api::ApplyUpdatesResponse*>(_impl_.response_.apply_updates_))
                     : reinterpret_cast<const ::saengra_api::ApplyUpdatesResponse&>(::saengra_api::_ApplyUpdatesResponse_default_instance_);
}
inline const ::saengra_api::ApplyUpdatesResponse& Response::apply_updates() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Response.apply_updates)
  return _internal_apply_updates();
}
inline ::saengra_api::ApplyUpdatesResponse* PROTOBUF_NULLABLE Response::unsafe_arena_release_apply_updates() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Response.apply_updates)
  if (response_case() == kApplyUpdates) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::ApplyUpdatesResponse*>(_impl_.response_.apply_updates_);
    _impl_.response_.apply_updates_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Response::unsafe_arena_set_allocated_apply_updates(
    ::saengra_api::ApplyUpdatesResponse* 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_response();
  if (value) {
    set_has_apply_updates();
    _impl_.response_.apply_updates_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Response.apply_updates)
}
inline ::saengra_api::ApplyUpdatesResponse* PROTOBUF_NONNULL Response::_internal_mutable_apply_updates() {
  if (response_case() != kApplyUpdates) {
    clear_response();
    set_has_apply_updates();
    _impl_.response_.apply_updates_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::ApplyUpdatesResponse>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::ApplyUpdatesResponse*>(_impl_.response_.apply_updates_);
}
inline ::saengra_api::ApplyUpdatesResponse* PROTOBUF_NONNULL Response::mutable_apply_updates()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::ApplyUpdatesResponse* _msg = _internal_mutable_apply_updates();
  // @@protoc_insertion_point(field_mutable:saengra_api.Response.apply_updates)
  return _msg;
}

// .saengra_api.CommitResponse commit = 3;
inline bool Response::has_commit() const {
  return response_case() == kCommit;
}
inline bool Response::_internal_has_commit() const {
  return response_case() == kCommit;
}
inline void Response::set_has_commit() {
  _impl_._oneof_case_[0] = kCommit;
}
inline void Response::clear_commit() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (response_case() == kCommit) {
    if (GetArena() == nullptr) {
      delete _impl_.response_.commit_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.response_.commit_);
    }
    clear_has_response();
  }
}
inline ::saengra_api::CommitResponse* PROTOBUF_NULLABLE Response::release_commit() {
  // @@protoc_insertion_point(field_release:saengra_api.Response.commit)
  if (response_case() == kCommit) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::CommitResponse*>(_impl_.response_.commit_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_.commit_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::CommitResponse& Response::_internal_commit() const {
  return response_case() == kCommit ? static_cast<const ::saengra_api::CommitResponse&>(*reinterpret_cast<::saengra_api::CommitResponse*>(_impl_.response_.commit_))
                     : reinterpret_cast<const ::saengra_api::CommitResponse&>(::saengra_api::_CommitResponse_default_instance_);
}
inline const ::saengra_api::CommitResponse& Response::commit() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Response.commit)
  return _internal_commit();
}
inline ::saengra_api::CommitResponse* PROTOBUF_NULLABLE Response::unsafe_arena_release_commit() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Response.commit)
  if (response_case() == kCommit) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::CommitResponse*>(_impl_.response_.commit_);
    _impl_.response_.commit_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Response::unsafe_arena_set_allocated_commit(
    ::saengra_api::CommitResponse* 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_response();
  if (value) {
    set_has_commit();
    _impl_.response_.commit_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Response.commit)
}
inline ::saengra_api::CommitResponse* PROTOBUF_NONNULL Response::_internal_mutable_commit() {
  if (response_case() != kCommit) {
    clear_response();
    set_has_commit();
    _impl_.response_.commit_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::CommitResponse>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::CommitResponse*>(_impl_.response_.commit_);
}
inline ::saengra_api::CommitResponse* PROTOBUF_NONNULL Response::mutable_commit()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::CommitResponse* _msg = _internal_mutable_commit();
  // @@protoc_insertion_point(field_mutable:saengra_api.Response.commit)
  return _msg;
}

// .saengra_api.RollbackResponse rollback = 4;
inline bool Response::has_rollback() const {
  return response_case() == kRollback;
}
inline bool Response::_internal_has_rollback() const {
  return response_case() == kRollback;
}
inline void Response::set_has_rollback() {
  _impl_._oneof_case_[0] = kRollback;
}
inline void Response::clear_rollback() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (response_case() == kRollback) {
    if (GetArena() == nullptr) {
      delete _impl_.response_.rollback_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.response_.rollback_);
    }
    clear_has_response();
  }
}
inline ::saengra_api::RollbackResponse* PROTOBUF_NULLABLE Response::release_rollback() {
  // @@protoc_insertion_point(field_release:saengra_api.Response.rollback)
  if (response_case() == kRollback) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::RollbackResponse*>(_impl_.response_.rollback_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_.rollback_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::RollbackResponse& Response::_internal_rollback() const {
  return response_case() == kRollback ? static_cast<const ::saengra_api::RollbackResponse&>(*reinterpret_cast<::saengra_api::RollbackResponse*>(_impl_.response_.rollback_))
                     : reinterpret_cast<const ::saengra_api::RollbackResponse&>(::saengra_api::_RollbackResponse_default_instance_);
}
inline const ::saengra_api::RollbackResponse& Response::rollback() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Response.rollback)
  return _internal_rollback();
}
inline ::saengra_api::RollbackResponse* PROTOBUF_NULLABLE Response::unsafe_arena_release_rollback() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Response.rollback)
  if (response_case() == kRollback) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::RollbackResponse*>(_impl_.response_.rollback_);
    _impl_.response_.rollback_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Response::unsafe_arena_set_allocated_rollback(
    ::saengra_api::RollbackResponse* 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_response();
  if (value) {
    set_has_rollback();
    _impl_.response_.rollback_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Response.rollback)
}
inline ::saengra_api::RollbackResponse* PROTOBUF_NONNULL Response::_internal_mutable_rollback() {
  if (response_case() != kRollback) {
    clear_response();
    set_has_rollback();
    _impl_.response_.rollback_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::RollbackResponse>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::RollbackResponse*>(_impl_.response_.rollback_);
}
inline ::saengra_api::RollbackResponse* PROTOBUF_NONNULL Response::mutable_rollback()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::RollbackResponse* _msg = _internal_mutable_rollback();
  // @@protoc_insertion_point(field_mutable:saengra_api.Response.rollback)
  return _msg;
}

// .saengra_api.ObserveResponse observe = 5;
inline bool Response::has_observe() const {
  return response_case() == kObserve;
}
inline bool Response::_internal_has_observe() const {
  return response_case() == kObserve;
}
inline void Response::set_has_observe() {
  _impl_._oneof_case_[0] = kObserve;
}
inline void Response::clear_observe() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (response_case() == kObserve) {
    if (GetArena() == nullptr) {
      delete _impl_.response_.observe_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.response_.observe_);
    }
    clear_has_response();
  }
}
inline ::saengra_api::ObserveResponse* PROTOBUF_NULLABLE Response::release_observe() {
  // @@protoc_insertion_point(field_release:saengra_api.Response.observe)
  if (response_case() == kObserve) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::ObserveResponse*>(_impl_.response_.observe_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_.observe_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::ObserveResponse& Response::_internal_observe() const {
  return response_case() == kObserve ? static_cast<const ::saengra_api::ObserveResponse&>(*reinterpret_cast<::saengra_api::ObserveResponse*>(_impl_.response_.observe_))
                     : reinterpret_cast<const ::saengra_api::ObserveResponse&>(::saengra_api::_ObserveResponse_default_instance_);
}
inline const ::saengra_api::ObserveResponse& Response::observe() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Response.observe)
  return _internal_observe();
}
inline ::saengra_api::ObserveResponse* PROTOBUF_NULLABLE Response::unsafe_arena_release_observe() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Response.observe)
  if (response_case() == kObserve) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::ObserveResponse*>(_impl_.response_.observe_);
    _impl_.response_.observe_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Response::unsafe_arena_set_allocated_observe(
    ::saengra_api::ObserveResponse* 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_response();
  if (value) {
    set_has_observe();
    _impl_.response_.observe_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Response.observe)
}
inline ::saengra_api::ObserveResponse* PROTOBUF_NONNULL Response::_internal_mutable_observe() {
  if (response_case() != kObserve) {
    clear_response();
    set_has_observe();
    _impl_.response_.observe_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::ObserveResponse>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::ObserveResponse*>(_impl_.response_.observe_);
}
inline ::saengra_api::ObserveResponse* PROTOBUF_NONNULL Response::mutable_observe()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::ObserveResponse* _msg = _internal_mutable_observe();
  // @@protoc_insertion_point(field_mutable:saengra_api.Response.observe)
  return _msg;
}

// .saengra_api.FindResponse find = 6;
inline bool Response::has_find() const {
  return response_case() == kFind;
}
inline bool Response::_internal_has_find() const {
  return response_case() == kFind;
}
inline void Response::set_has_find() {
  _impl_._oneof_case_[0] = kFind;
}
inline void Response::clear_find() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (response_case() == kFind) {
    if (GetArena() == nullptr) {
      delete _impl_.response_.find_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.response_.find_);
    }
    clear_has_response();
  }
}
inline ::saengra_api::FindResponse* PROTOBUF_NULLABLE Response::release_find() {
  // @@protoc_insertion_point(field_release:saengra_api.Response.find)
  if (response_case() == kFind) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::FindResponse*>(_impl_.response_.find_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_.find_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::FindResponse& Response::_internal_find() const {
  return response_case() == kFind ? static_cast<const ::saengra_api::FindResponse&>(*reinterpret_cast<::saengra_api::FindResponse*>(_impl_.response_.find_))
                     : reinterpret_cast<const ::saengra_api::FindResponse&>(::saengra_api::_FindResponse_default_instance_);
}
inline const ::saengra_api::FindResponse& Response::find() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Response.find)
  return _internal_find();
}
inline ::saengra_api::FindResponse* PROTOBUF_NULLABLE Response::unsafe_arena_release_find() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Response.find)
  if (response_case() == kFind) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::FindResponse*>(_impl_.response_.find_);
    _impl_.response_.find_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Response::unsafe_arena_set_allocated_find(
    ::saengra_api::FindResponse* 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_response();
  if (value) {
    set_has_find();
    _impl_.response_.find_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Response.find)
}
inline ::saengra_api::FindResponse* PROTOBUF_NONNULL Response::_internal_mutable_find() {
  if (response_case() != kFind) {
    clear_response();
    set_has_find();
    _impl_.response_.find_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::FindResponse>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::FindResponse*>(_impl_.response_.find_);
}
inline ::saengra_api::FindResponse* PROTOBUF_NONNULL Response::mutable_find()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::FindResponse* _msg = _internal_mutable_find();
  // @@protoc_insertion_point(field_mutable:saengra_api.Response.find)
  return _msg;
}

// .saengra_api.MatchResponse match = 7;
inline bool Response::has_match() const {
  return response_case() == kMatch;
}
inline bool Response::_internal_has_match() const {
  return response_case() == kMatch;
}
inline void Response::set_has_match() {
  _impl_._oneof_case_[0] = kMatch;
}
inline void Response::clear_match() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (response_case() == kMatch) {
    if (GetArena() == nullptr) {
      delete _impl_.response_.match_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.response_.match_);
    }
    clear_has_response();
  }
}
inline ::saengra_api::MatchResponse* PROTOBUF_NULLABLE Response::release_match() {
  // @@protoc_insertion_point(field_release:saengra_api.Response.match)
  if (response_case() == kMatch) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::MatchResponse*>(_impl_.response_.match_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_.match_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::saengra_api::MatchResponse& Response::_internal_match() const {
  return response_case() == kMatch ? static_cast<const ::saengra_api::MatchResponse&>(*reinterpret_cast<::saengra_api::MatchResponse*>(_impl_.response_.match_))
                     : reinterpret_cast<const ::saengra_api::MatchResponse&>(::saengra_api::_MatchResponse_default_instance_);
}
inline const ::saengra_api::MatchResponse& Response::match() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.Response.match)
  return _internal_match();
}
inline ::saengra_api::MatchResponse* PROTOBUF_NULLABLE Response::unsafe_arena_release_match() {
  // @@protoc_insertion_point(field_unsafe_arena_release:saengra_api.Response.match)
  if (response_case() == kMatch) {
    clear_has_response();
    auto* temp = reinterpret_cast<::saengra_api::MatchResponse*>(_impl_.response_.match_);
    _impl_.response_.match_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Response::unsafe_arena_set_allocated_match(
    ::saengra_api::MatchResponse* 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_response();
  if (value) {
    set_has_match();
    _impl_.response_.match_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:saengra_api.Response.match)
}
inline ::saengra_api::MatchResponse* PROTOBUF_NONNULL Response::_internal_mutable_match() {
  if (response_case() != kMatch) {
    clear_response();
    set_has_match();
    _impl_.response_.match_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::saengra_api::MatchResponse>(GetArena()));
  }
  return reinterpret_cast<::saengra_api::MatchResponse*>(_impl_.response_.match_);
}
inline ::saengra_api::MatchResponse* PROTOBUF_NONNULL Response::mutable_match()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::saengra_api::MatchResponse* _msg = _internal_mutable_match();
  // @@protoc_insertion_point(field_mutable:saengra_api.Response.match)
  return _msg;
}

inline bool Response::has_response() const {
  return response_case() != RESPONSE_NOT_SET;
}
inline void Response::clear_has_response() {
  _impl_._oneof_case_[0] = RESPONSE_NOT_SET;
}
inline Response::ResponseCase Response::response_case() const {
  return Response::ResponseCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// ConnectResponse

// .saengra_api.ConnectResponse.Status status = 1;
inline void ConnectResponse::clear_status() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::ConnectResponse_Status ConnectResponse::status() const {
  // @@protoc_insertion_point(field_get:saengra_api.ConnectResponse.status)
  return _internal_status();
}
inline void ConnectResponse::set_status(::saengra_api::ConnectResponse_Status value) {
  _internal_set_status(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:saengra_api.ConnectResponse.status)
}
inline ::saengra_api::ConnectResponse_Status ConnectResponse::_internal_status() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::saengra_api::ConnectResponse_Status>(_impl_.status_);
}
inline void ConnectResponse::_internal_set_status(::saengra_api::ConnectResponse_Status value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = value;
}

// bool created = 2;
inline void ConnectResponse::clear_created() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.created_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline bool ConnectResponse::created() const {
  // @@protoc_insertion_point(field_get:saengra_api.ConnectResponse.created)
  return _internal_created();
}
inline void ConnectResponse::set_created(bool value) {
  _internal_set_created(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:saengra_api.ConnectResponse.created)
}
inline bool ConnectResponse::_internal_created() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.created_;
}
inline void ConnectResponse::_internal_set_created(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.created_ = value;
}

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

// ApplyUpdatesResponse

// .saengra_api.ApplyUpdatesResponse.Status status = 1;
inline void ApplyUpdatesResponse::clear_status() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::ApplyUpdatesResponse_Status ApplyUpdatesResponse::status() const {
  // @@protoc_insertion_point(field_get:saengra_api.ApplyUpdatesResponse.status)
  return _internal_status();
}
inline void ApplyUpdatesResponse::set_status(::saengra_api::ApplyUpdatesResponse_Status value) {
  _internal_set_status(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:saengra_api.ApplyUpdatesResponse.status)
}
inline ::saengra_api::ApplyUpdatesResponse_Status ApplyUpdatesResponse::_internal_status() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::saengra_api::ApplyUpdatesResponse_Status>(_impl_.status_);
}
inline void ApplyUpdatesResponse::_internal_set_status(::saengra_api::ApplyUpdatesResponse_Status value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = value;
}

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

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

// CommitResponse_Observation

// string observer_id = 1;
inline void CommitResponse_Observation::clear_observer_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.observer_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& CommitResponse_Observation::observer_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.CommitResponse.Observation.observer_id)
  return _internal_observer_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void CommitResponse_Observation::set_observer_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.observer_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:saengra_api.CommitResponse.Observation.observer_id)
}
inline ::std::string* PROTOBUF_NONNULL CommitResponse_Observation::mutable_observer_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_observer_id();
  // @@protoc_insertion_point(field_mutable:saengra_api.CommitResponse.Observation.observer_id)
  return _s;
}
inline const ::std::string& CommitResponse_Observation::_internal_observer_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.observer_id_.Get();
}
inline void CommitResponse_Observation::_internal_set_observer_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.observer_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL CommitResponse_Observation::_internal_mutable_observer_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.observer_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE CommitResponse_Observation::release_observer_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:saengra_api.CommitResponse.Observation.observer_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.observer_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.observer_id_.Set("", GetArena());
  }
  return released;
}
inline void CommitResponse_Observation::set_allocated_observer_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.observer_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.observer_id_.IsDefault()) {
    _impl_.observer_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:saengra_api.CommitResponse.Observation.observer_id)
}

// .saengra_api.CommitResponse.Observation.ObservationType type = 2;
inline void CommitResponse_Observation::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::saengra_api::CommitResponse_Observation_ObservationType CommitResponse_Observation::type() const {
  // @@protoc_insertion_point(field_get:saengra_api.CommitResponse.Observation.type)
  return _internal_type();
}
inline void CommitResponse_Observation::set_type(::saengra_api::CommitResponse_Observation_ObservationType value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:saengra_api.CommitResponse.Observation.type)
}
inline ::saengra_api::CommitResponse_Observation_ObservationType CommitResponse_Observation::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::saengra_api::CommitResponse_Observation_ObservationType>(_impl_.type_);
}
inline void CommitResponse_Observation::_internal_set_type(::saengra_api::CommitResponse_Observation_ObservationType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// map<string, .saengra_api.Vertex> variables = 3;
inline int CommitResponse_Observation::_internal_variables_size() const {
  return _internal_variables().size();
}
inline int CommitResponse_Observation::variables_size() const {
  return _internal_variables_size();
}
inline void CommitResponse_Observation::clear_variables() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.variables_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>& CommitResponse_Observation::_internal_variables() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.variables_.GetMap();
}
inline const ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>& CommitResponse_Observation::variables() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:saengra_api.CommitResponse.Observation.variables)
  return _internal_variables();
}
inline ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>* PROTOBUF_NONNULL CommitResponse_Observation::_internal_mutable_variables() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.variables_.MutableMap();
}
inline ::google::protobuf::Map<::std::string, ::saengra_api::Vertex>* PROTOBUF_NONNULL CommitResponse_Observation::mutable_variables()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_map:saengra_api.CommitResponse.Observation.variables)
  return _internal_mutable_variables();
}

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

// CommitResponse

// .saengra_api.CommitResponse.Status status = 1;
inline void CommitResponse::clear_status() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::saengra_api::CommitResponse_Status CommitResponse::status() const {
  // @@protoc_insertion_point(field_get:saengra_api.CommitResponse.status)
  return _internal_status();
}
inline void CommitResponse::set_status(::saengra_api::CommitResponse_Status value) {
  _internal_set_status(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:saengra_api.CommitResponse.status)
}
inline ::saengra_api::CommitResponse_Status CommitResponse::_internal_status() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::saengra_api::CommitResponse_Status>(_impl_.status_);
}
inline void CommitResponse::_internal_set_status(::saengra_api::CommitResponse_Status value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = value;
}

// repeated .saengra_api.CommitResponse.Observation observation = 2;
inline int CommitResponse::_internal_observation_size() const {
  return _internal_observation().size();
}
inline int CommitResponse::observation_size() const {
  return _internal_observation_size();
}
inline void CommitResponse::clear_observation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.observation_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::CommitResponse_Observation* PROTOBUF_NONNULL CommitResponse::mutable_observation(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.CommitResponse.observation)
  return _internal_mutable_observation()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::CommitResponse_Observation>* PROTOBUF_NONNULL CommitResponse::mutable_observation()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.CommitResponse.observation)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_observation();
}
inline const ::saengra_api::CommitResponse_Observation& CommitResponse::observation(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.CommitResponse.observation)
  return _internal_observation().Get(index);
}
inline ::saengra_api::CommitResponse_Observation* PROTOBUF_NONNULL CommitResponse::add_observation()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::CommitResponse_Observation* _add =
      _internal_mutable_observation()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:saengra_api.CommitResponse.observation)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::CommitResponse_Observation>& CommitResponse::observation() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.CommitResponse.observation)
  return _internal_observation();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::CommitResponse_Observation>&
CommitResponse::_internal_observation() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.observation_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::CommitResponse_Observation>* PROTOBUF_NONNULL
CommitResponse::_internal_mutable_observation() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.observation_;
}

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

// RollbackResponse

// .saengra_api.RollbackResponse.Status status = 1;
inline void RollbackResponse::clear_status() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::RollbackResponse_Status RollbackResponse::status() const {
  // @@protoc_insertion_point(field_get:saengra_api.RollbackResponse.status)
  return _internal_status();
}
inline void RollbackResponse::set_status(::saengra_api::RollbackResponse_Status value) {
  _internal_set_status(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:saengra_api.RollbackResponse.status)
}
inline ::saengra_api::RollbackResponse_Status RollbackResponse::_internal_status() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::saengra_api::RollbackResponse_Status>(_impl_.status_);
}
inline void RollbackResponse::_internal_set_status(::saengra_api::RollbackResponse_Status value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = value;
}

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

// ObserveResponse

// .saengra_api.ObserveResponse.Status status = 1;
inline void ObserveResponse::clear_status() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::ObserveResponse_Status ObserveResponse::status() const {
  // @@protoc_insertion_point(field_get:saengra_api.ObserveResponse.status)
  return _internal_status();
}
inline void ObserveResponse::set_status(::saengra_api::ObserveResponse_Status value) {
  _internal_set_status(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:saengra_api.ObserveResponse.status)
}
inline ::saengra_api::ObserveResponse_Status ObserveResponse::_internal_status() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::saengra_api::ObserveResponse_Status>(_impl_.status_);
}
inline void ObserveResponse::_internal_set_status(::saengra_api::ObserveResponse_Status value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = value;
}

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

// FindResponse

// .saengra_api.FindResponse.Status status = 1;
inline void FindResponse::clear_status() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::saengra_api::FindResponse_Status FindResponse::status() const {
  // @@protoc_insertion_point(field_get:saengra_api.FindResponse.status)
  return _internal_status();
}
inline void FindResponse::set_status(::saengra_api::FindResponse_Status value) {
  _internal_set_status(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:saengra_api.FindResponse.status)
}
inline ::saengra_api::FindResponse_Status FindResponse::_internal_status() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::saengra_api::FindResponse_Status>(_impl_.status_);
}
inline void FindResponse::_internal_set_status(::saengra_api::FindResponse_Status value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = value;
}

// repeated .saengra_api.Vertex vertices = 2;
inline int FindResponse::_internal_vertices_size() const {
  return _internal_vertices().size();
}
inline int FindResponse::vertices_size() const {
  return _internal_vertices_size();
}
inline void FindResponse::clear_vertices() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vertices_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL FindResponse::mutable_vertices(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.FindResponse.vertices)
  return _internal_mutable_vertices()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL FindResponse::mutable_vertices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.FindResponse.vertices)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_vertices();
}
inline const ::saengra_api::Vertex& FindResponse::vertices(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.FindResponse.vertices)
  return _internal_vertices().Get(index);
}
inline ::saengra_api::Vertex* PROTOBUF_NONNULL FindResponse::add_vertices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::Vertex* _add =
      _internal_mutable_vertices()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:saengra_api.FindResponse.vertices)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>& FindResponse::vertices() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.FindResponse.vertices)
  return _internal_vertices();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>&
FindResponse::_internal_vertices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.vertices_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Vertex>* PROTOBUF_NONNULL
FindResponse::_internal_mutable_vertices() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.vertices_;
}

// repeated .saengra_api.Edge edges = 3;
inline int FindResponse::_internal_edges_size() const {
  return _internal_edges().size();
}
inline int FindResponse::edges_size() const {
  return _internal_edges_size();
}
inline void FindResponse::clear_edges() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.edges_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::saengra_api::Edge* PROTOBUF_NONNULL FindResponse::mutable_edges(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.FindResponse.edges)
  return _internal_mutable_edges()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>* PROTOBUF_NONNULL FindResponse::mutable_edges()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.FindResponse.edges)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_edges();
}
inline const ::saengra_api::Edge& FindResponse::edges(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.FindResponse.edges)
  return _internal_edges().Get(index);
}
inline ::saengra_api::Edge* PROTOBUF_NONNULL FindResponse::add_edges()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::Edge* _add =
      _internal_mutable_edges()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:saengra_api.FindResponse.edges)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>& FindResponse::edges() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.FindResponse.edges)
  return _internal_edges();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>&
FindResponse::_internal_edges() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.edges_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Edge>* PROTOBUF_NONNULL
FindResponse::_internal_mutable_edges() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.edges_;
}

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

// MatchResponse

// .saengra_api.MatchResponse.Status status = 1;
inline void MatchResponse::clear_status() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::saengra_api::MatchResponse_Status MatchResponse::status() const {
  // @@protoc_insertion_point(field_get:saengra_api.MatchResponse.status)
  return _internal_status();
}
inline void MatchResponse::set_status(::saengra_api::MatchResponse_Status value) {
  _internal_set_status(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:saengra_api.MatchResponse.status)
}
inline ::saengra_api::MatchResponse_Status MatchResponse::_internal_status() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::saengra_api::MatchResponse_Status>(_impl_.status_);
}
inline void MatchResponse::_internal_set_status(::saengra_api::MatchResponse_Status value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = value;
}

// repeated .saengra_api.Subgraph subgraphs = 2;
inline int MatchResponse::_internal_subgraphs_size() const {
  return _internal_subgraphs().size();
}
inline int MatchResponse::subgraphs_size() const {
  return _internal_subgraphs_size();
}
inline void MatchResponse::clear_subgraphs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.subgraphs_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::saengra_api::Subgraph* PROTOBUF_NONNULL MatchResponse::mutable_subgraphs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:saengra_api.MatchResponse.subgraphs)
  return _internal_mutable_subgraphs()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Subgraph>* PROTOBUF_NONNULL MatchResponse::mutable_subgraphs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:saengra_api.MatchResponse.subgraphs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_subgraphs();
}
inline const ::saengra_api::Subgraph& MatchResponse::subgraphs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:saengra_api.MatchResponse.subgraphs)
  return _internal_subgraphs().Get(index);
}
inline ::saengra_api::Subgraph* PROTOBUF_NONNULL MatchResponse::add_subgraphs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::saengra_api::Subgraph* _add =
      _internal_mutable_subgraphs()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:saengra_api.MatchResponse.subgraphs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Subgraph>& MatchResponse::subgraphs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:saengra_api.MatchResponse.subgraphs)
  return _internal_subgraphs();
}
inline const ::google::protobuf::RepeatedPtrField<::saengra_api::Subgraph>&
MatchResponse::_internal_subgraphs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.subgraphs_;
}
inline ::google::protobuf::RepeatedPtrField<::saengra_api::Subgraph>* PROTOBUF_NONNULL
MatchResponse::_internal_mutable_subgraphs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.subgraphs_;
}

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

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


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::saengra_api::Position_PositionKind> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::saengra_api::Position_PositionKind>() {
  return ::saengra_api::Position_PositionKind_descriptor();
}
template <>
struct is_proto_enum<::saengra_api::ApplyUpdates_Update_UpdateKind> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::saengra_api::ApplyUpdates_Update_UpdateKind>() {
  return ::saengra_api::ApplyUpdates_Update_UpdateKind_descriptor();
}
template <>
struct is_proto_enum<::saengra_api::ConnectResponse_Status> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::saengra_api::ConnectResponse_Status>() {
  return ::saengra_api::ConnectResponse_Status_descriptor();
}
template <>
struct is_proto_enum<::saengra_api::ApplyUpdatesResponse_Status> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::saengra_api::ApplyUpdatesResponse_Status>() {
  return ::saengra_api::ApplyUpdatesResponse_Status_descriptor();
}
template <>
struct is_proto_enum<::saengra_api::CommitResponse_Observation_ObservationType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::saengra_api::CommitResponse_Observation_ObservationType>() {
  return ::saengra_api::CommitResponse_Observation_ObservationType_descriptor();
}
template <>
struct is_proto_enum<::saengra_api::CommitResponse_Status> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::saengra_api::CommitResponse_Status>() {
  return ::saengra_api::CommitResponse_Status_descriptor();
}
template <>
struct is_proto_enum<::saengra_api::RollbackResponse_Status> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::saengra_api::RollbackResponse_Status>() {
  return ::saengra_api::RollbackResponse_Status_descriptor();
}
template <>
struct is_proto_enum<::saengra_api::ObserveResponse_Status> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::saengra_api::ObserveResponse_Status>() {
  return ::saengra_api::ObserveResponse_Status_descriptor();
}
template <>
struct is_proto_enum<::saengra_api::FindResponse_Status> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::saengra_api::FindResponse_Status>() {
  return ::saengra_api::FindResponse_Status_descriptor();
}
template <>
struct is_proto_enum<::saengra_api::MatchResponse_Status> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::saengra_api::MatchResponse_Status>() {
  return ::saengra_api::MatchResponse_Status_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // messages_2eproto_2epb_2eh
