// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: userinput.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_userinput_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_userinput_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3021000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3021012 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/message_lite.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_userinput_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_userinput_2eproto {
  static const uint32_t offsets[];
};
namespace ClientBuffers {
class Instruction;
struct InstructionDefaultTypeInternal;
extern InstructionDefaultTypeInternal _Instruction_default_instance_;
class Keystroke;
struct KeystrokeDefaultTypeInternal;
extern KeystrokeDefaultTypeInternal _Keystroke_default_instance_;
class ResizeMessage;
struct ResizeMessageDefaultTypeInternal;
extern ResizeMessageDefaultTypeInternal _ResizeMessage_default_instance_;
class UserMessage;
struct UserMessageDefaultTypeInternal;
extern UserMessageDefaultTypeInternal _UserMessage_default_instance_;
}  // namespace ClientBuffers
PROTOBUF_NAMESPACE_OPEN
template<> ::ClientBuffers::Instruction* Arena::CreateMaybeMessage<::ClientBuffers::Instruction>(Arena*);
template<> ::ClientBuffers::Keystroke* Arena::CreateMaybeMessage<::ClientBuffers::Keystroke>(Arena*);
template<> ::ClientBuffers::ResizeMessage* Arena::CreateMaybeMessage<::ClientBuffers::ResizeMessage>(Arena*);
template<> ::ClientBuffers::UserMessage* Arena::CreateMaybeMessage<::ClientBuffers::UserMessage>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace ClientBuffers {

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

class UserMessage final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:ClientBuffers.UserMessage) */ {
 public:
  inline UserMessage() : UserMessage(nullptr) {}
  ~UserMessage() override;
  explicit PROTOBUF_CONSTEXPR UserMessage(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

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

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

  static const UserMessage& default_instance() {
    return *internal_default_instance();
  }
  static inline const UserMessage* internal_default_instance() {
    return reinterpret_cast<const UserMessage*>(
               &_UserMessage_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(UserMessage& a, UserMessage& b) {
    a.Swap(&b);
  }
  inline void Swap(UserMessage* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(UserMessage* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  UserMessage* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<UserMessage>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const UserMessage& from);
  void MergeFrom(const UserMessage& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(UserMessage* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "ClientBuffers.UserMessage";
  }
  protected:
  explicit UserMessage(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  std::string GetTypeName() const final;

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

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

  enum : int {
    kInstructionFieldNumber = 1,
  };
  // repeated .ClientBuffers.Instruction instruction = 1;
  int instruction_size() const;
  private:
  int _internal_instruction_size() const;
  public:
  void clear_instruction();
  ::ClientBuffers::Instruction* mutable_instruction(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::ClientBuffers::Instruction >*
      mutable_instruction();
  private:
  const ::ClientBuffers::Instruction& _internal_instruction(int index) const;
  ::ClientBuffers::Instruction* _internal_add_instruction();
  public:
  const ::ClientBuffers::Instruction& instruction(int index) const;
  ::ClientBuffers::Instruction* add_instruction();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::ClientBuffers::Instruction >&
      instruction() const;

  // @@protoc_insertion_point(class_scope:ClientBuffers.UserMessage)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::ClientBuffers::Instruction > instruction_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_userinput_2eproto;
};
// -------------------------------------------------------------------

class Instruction final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:ClientBuffers.Instruction) */ {
 public:
  inline Instruction() : Instruction(nullptr) {}
  ~Instruction() override;
  explicit PROTOBUF_CONSTEXPR Instruction(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

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

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

  static const Instruction& default_instance() {
    return *internal_default_instance();
  }
  static inline const Instruction* internal_default_instance() {
    return reinterpret_cast<const Instruction*>(
               &_Instruction_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(Instruction& a, Instruction& b) {
    a.Swap(&b);
  }
  inline void Swap(Instruction* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Instruction* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  Instruction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Instruction>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const Instruction& from);
  void MergeFrom(const Instruction& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(Instruction* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "ClientBuffers.Instruction";
  }
  protected:
  explicit Instruction(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  std::string GetTypeName() const final;

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

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


  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline bool HasExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _impl_._extensions_.Has(id.number());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void ClearExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id) {
    _impl_._extensions_.ClearExtension(id.number());

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline int ExtensionSize(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _impl_._extensions_.ExtensionSize(id.number());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _proto_TypeTraits::Get(id.number(), _impl_._extensions_,
                                  id.default_value());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::Mutable(id.number(), _field_type,
                                      &_impl_._extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::ConstType value) {
    _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetAllocatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::MutableType value) {
    _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                    &_impl_._extensions_);

  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void UnsafeArenaSetAllocatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::MutableType value) {
    _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                               value, &_impl_._extensions_);

  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  PROTOBUF_NODISCARD inline
      typename _proto_TypeTraits::Singular::MutableType
      ReleaseExtension(
          const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
              Instruction, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::Release(id.number(), _field_type,
                                      &_impl_._extensions_);
  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::MutableType
  UnsafeArenaReleaseExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                 &_impl_._extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index) const {

    return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index) {

    return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index, typename _proto_TypeTraits::Repeated::ConstType value) {
    _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id) {
    typename _proto_TypeTraits::Repeated::MutableType to_add =
        _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);

    return to_add;
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void AddExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Repeated::ConstType value) {
    _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                           &_impl_._extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
  GetRepeatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
  MutableRepeatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Instruction, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                              _is_packed, &_impl_._extensions_);
  }

  // @@protoc_insertion_point(class_scope:ClientBuffers.Instruction)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;

    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_userinput_2eproto;
};
// -------------------------------------------------------------------

class Keystroke final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:ClientBuffers.Keystroke) */ {
 public:
  inline Keystroke() : Keystroke(nullptr) {}
  ~Keystroke() override;
  explicit PROTOBUF_CONSTEXPR Keystroke(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

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

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

  static const Keystroke& default_instance() {
    return *internal_default_instance();
  }
  static inline const Keystroke* internal_default_instance() {
    return reinterpret_cast<const Keystroke*>(
               &_Keystroke_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(Keystroke& a, Keystroke& b) {
    a.Swap(&b);
  }
  inline void Swap(Keystroke* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Keystroke* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  Keystroke* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Keystroke>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const Keystroke& from);
  void MergeFrom(const Keystroke& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(Keystroke* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "ClientBuffers.Keystroke";
  }
  protected:
  explicit Keystroke(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  std::string GetTypeName() const final;

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

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

  enum : int {
    kKeysFieldNumber = 4,
  };
  // optional bytes keys = 4;
  bool has_keys() const;
  private:
  bool _internal_has_keys() const;
  public:
  void clear_keys();
  const std::string& keys() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_keys(ArgT0&& arg0, ArgT... args);
  std::string* mutable_keys();
  PROTOBUF_NODISCARD std::string* release_keys();
  void set_allocated_keys(std::string* keys);
  private:
  const std::string& _internal_keys() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_keys(const std::string& value);
  std::string* _internal_mutable_keys();
  public:

  // @@protoc_insertion_point(class_scope:ClientBuffers.Keystroke)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr keys_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_userinput_2eproto;
};
// -------------------------------------------------------------------

class ResizeMessage final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:ClientBuffers.ResizeMessage) */ {
 public:
  inline ResizeMessage() : ResizeMessage(nullptr) {}
  ~ResizeMessage() override;
  explicit PROTOBUF_CONSTEXPR ResizeMessage(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

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

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

  static const ResizeMessage& default_instance() {
    return *internal_default_instance();
  }
  static inline const ResizeMessage* internal_default_instance() {
    return reinterpret_cast<const ResizeMessage*>(
               &_ResizeMessage_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(ResizeMessage& a, ResizeMessage& b) {
    a.Swap(&b);
  }
  inline void Swap(ResizeMessage* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ResizeMessage* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  ResizeMessage* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ResizeMessage>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const ResizeMessage& from);
  void MergeFrom(const ResizeMessage& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(ResizeMessage* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "ClientBuffers.ResizeMessage";
  }
  protected:
  explicit ResizeMessage(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  std::string GetTypeName() const final;

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

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

  enum : int {
    kWidthFieldNumber = 5,
    kHeightFieldNumber = 6,
  };
  // optional int32 width = 5;
  bool has_width() const;
  private:
  bool _internal_has_width() const;
  public:
  void clear_width();
  int32_t width() const;
  void set_width(int32_t value);
  private:
  int32_t _internal_width() const;
  void _internal_set_width(int32_t value);
  public:

  // optional int32 height = 6;
  bool has_height() const;
  private:
  bool _internal_has_height() const;
  public:
  void clear_height();
  int32_t height() const;
  void set_height(int32_t value);
  private:
  int32_t _internal_height() const;
  void _internal_set_height(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:ClientBuffers.ResizeMessage)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    int32_t width_;
    int32_t height_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_userinput_2eproto;
};
// ===================================================================

static const int kKeystrokeFieldNumber = 2;
extern ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::ClientBuffers::Instruction,
    ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::ClientBuffers::Keystroke >, 11, false >
  keystroke;
static const int kResizeFieldNumber = 3;
extern ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier< ::ClientBuffers::Instruction,
    ::PROTOBUF_NAMESPACE_ID::internal::MessageTypeTraits< ::ClientBuffers::ResizeMessage >, 11, false >
  resize;

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

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

// repeated .ClientBuffers.Instruction instruction = 1;
inline int UserMessage::_internal_instruction_size() const {
  return _impl_.instruction_.size();
}
inline int UserMessage::instruction_size() const {
  return _internal_instruction_size();
}
inline void UserMessage::clear_instruction() {
  _impl_.instruction_.Clear();
}
inline ::ClientBuffers::Instruction* UserMessage::mutable_instruction(int index) {
  // @@protoc_insertion_point(field_mutable:ClientBuffers.UserMessage.instruction)
  return _impl_.instruction_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::ClientBuffers::Instruction >*
UserMessage::mutable_instruction() {
  // @@protoc_insertion_point(field_mutable_list:ClientBuffers.UserMessage.instruction)
  return &_impl_.instruction_;
}
inline const ::ClientBuffers::Instruction& UserMessage::_internal_instruction(int index) const {
  return _impl_.instruction_.Get(index);
}
inline const ::ClientBuffers::Instruction& UserMessage::instruction(int index) const {
  // @@protoc_insertion_point(field_get:ClientBuffers.UserMessage.instruction)
  return _internal_instruction(index);
}
inline ::ClientBuffers::Instruction* UserMessage::_internal_add_instruction() {
  return _impl_.instruction_.Add();
}
inline ::ClientBuffers::Instruction* UserMessage::add_instruction() {
  ::ClientBuffers::Instruction* _add = _internal_add_instruction();
  // @@protoc_insertion_point(field_add:ClientBuffers.UserMessage.instruction)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::ClientBuffers::Instruction >&
UserMessage::instruction() const {
  // @@protoc_insertion_point(field_list:ClientBuffers.UserMessage.instruction)
  return _impl_.instruction_;
}

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

// Instruction

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

// Keystroke

// optional bytes keys = 4;
inline bool Keystroke::_internal_has_keys() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool Keystroke::has_keys() const {
  return _internal_has_keys();
}
inline void Keystroke::clear_keys() {
  _impl_.keys_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& Keystroke::keys() const {
  // @@protoc_insertion_point(field_get:ClientBuffers.Keystroke.keys)
  return _internal_keys();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void Keystroke::set_keys(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.keys_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:ClientBuffers.Keystroke.keys)
}
inline std::string* Keystroke::mutable_keys() {
  std::string* _s = _internal_mutable_keys();
  // @@protoc_insertion_point(field_mutable:ClientBuffers.Keystroke.keys)
  return _s;
}
inline const std::string& Keystroke::_internal_keys() const {
  return _impl_.keys_.Get();
}
inline void Keystroke::_internal_set_keys(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.keys_.Set(value, GetArenaForAllocation());
}
inline std::string* Keystroke::_internal_mutable_keys() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.keys_.Mutable(GetArenaForAllocation());
}
inline std::string* Keystroke::release_keys() {
  // @@protoc_insertion_point(field_release:ClientBuffers.Keystroke.keys)
  if (!_internal_has_keys()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.keys_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.keys_.IsDefault()) {
    _impl_.keys_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void Keystroke::set_allocated_keys(std::string* keys) {
  if (keys != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.keys_.SetAllocated(keys, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.keys_.IsDefault()) {
    _impl_.keys_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:ClientBuffers.Keystroke.keys)
}

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

// ResizeMessage

// optional int32 width = 5;
inline bool ResizeMessage::_internal_has_width() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ResizeMessage::has_width() const {
  return _internal_has_width();
}
inline void ResizeMessage::clear_width() {
  _impl_.width_ = 0;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline int32_t ResizeMessage::_internal_width() const {
  return _impl_.width_;
}
inline int32_t ResizeMessage::width() const {
  // @@protoc_insertion_point(field_get:ClientBuffers.ResizeMessage.width)
  return _internal_width();
}
inline void ResizeMessage::_internal_set_width(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.width_ = value;
}
inline void ResizeMessage::set_width(int32_t value) {
  _internal_set_width(value);
  // @@protoc_insertion_point(field_set:ClientBuffers.ResizeMessage.width)
}

// optional int32 height = 6;
inline bool ResizeMessage::_internal_has_height() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool ResizeMessage::has_height() const {
  return _internal_has_height();
}
inline void ResizeMessage::clear_height() {
  _impl_.height_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline int32_t ResizeMessage::_internal_height() const {
  return _impl_.height_;
}
inline int32_t ResizeMessage::height() const {
  // @@protoc_insertion_point(field_get:ClientBuffers.ResizeMessage.height)
  return _internal_height();
}
inline void ResizeMessage::_internal_set_height(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.height_ = value;
}
inline void ResizeMessage::set_height(int32_t value) {
  _internal_set_height(value);
  // @@protoc_insertion_point(field_set:ClientBuffers.ResizeMessage.height)
}

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace ClientBuffers

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_userinput_2eproto
