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

#ifndef osmformat_2eproto_2epb_2eh
#define osmformat_2eproto_2epb_2eh

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

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 6033001
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/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/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_osmformat_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_osmformat_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
extern const ::google::protobuf::internal::DescriptorTable descriptor_table_osmformat_2eproto;
}  // extern "C"
namespace OSMPBF {
enum Relation_MemberType : int;
extern const uint32_t Relation_MemberType_internal_data_[];
class ChangeSet;
struct ChangeSetDefaultTypeInternal;
extern ChangeSetDefaultTypeInternal _ChangeSet_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ChangeSet_class_data_;
class DenseInfo;
struct DenseInfoDefaultTypeInternal;
extern DenseInfoDefaultTypeInternal _DenseInfo_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull DenseInfo_class_data_;
class DenseNodes;
struct DenseNodesDefaultTypeInternal;
extern DenseNodesDefaultTypeInternal _DenseNodes_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull DenseNodes_class_data_;
class HeaderBBox;
struct HeaderBBoxDefaultTypeInternal;
extern HeaderBBoxDefaultTypeInternal _HeaderBBox_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull HeaderBBox_class_data_;
class HeaderBlock;
struct HeaderBlockDefaultTypeInternal;
extern HeaderBlockDefaultTypeInternal _HeaderBlock_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull HeaderBlock_class_data_;
class Info;
struct InfoDefaultTypeInternal;
extern InfoDefaultTypeInternal _Info_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Info_class_data_;
class Node;
struct NodeDefaultTypeInternal;
extern NodeDefaultTypeInternal _Node_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Node_class_data_;
class PrimitiveBlock;
struct PrimitiveBlockDefaultTypeInternal;
extern PrimitiveBlockDefaultTypeInternal _PrimitiveBlock_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull PrimitiveBlock_class_data_;
class PrimitiveGroup;
struct PrimitiveGroupDefaultTypeInternal;
extern PrimitiveGroupDefaultTypeInternal _PrimitiveGroup_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull PrimitiveGroup_class_data_;
class Relation;
struct RelationDefaultTypeInternal;
extern RelationDefaultTypeInternal _Relation_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Relation_class_data_;
class StringTable;
struct StringTableDefaultTypeInternal;
extern StringTableDefaultTypeInternal _StringTable_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull StringTable_class_data_;
class Way;
struct WayDefaultTypeInternal;
extern WayDefaultTypeInternal _Way_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Way_class_data_;
}  // namespace OSMPBF
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::OSMPBF::Relation_MemberType_internal_data_>
    internal::EnumTraitsImpl::value<::OSMPBF::Relation_MemberType>;
}  // namespace protobuf
}  // namespace google

namespace OSMPBF {
enum Relation_MemberType : int {
  Relation_MemberType_NODE = 0,
  Relation_MemberType_WAY = 1,
  Relation_MemberType_RELATION = 2,
};

extern const uint32_t Relation_MemberType_internal_data_[];
inline constexpr Relation_MemberType Relation_MemberType_MemberType_MIN =
    static_cast<Relation_MemberType>(0);
inline constexpr Relation_MemberType Relation_MemberType_MemberType_MAX =
    static_cast<Relation_MemberType>(2);
inline bool Relation_MemberType_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int Relation_MemberType_MemberType_ARRAYSIZE = 2 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Relation_MemberType_descriptor();
template <typename T>
const ::std::string& Relation_MemberType_Name(T value) {
  static_assert(::std::is_same<T, Relation_MemberType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to MemberType_Name().");
  return Relation_MemberType_Name(static_cast<Relation_MemberType>(value));
}
template <>
inline const ::std::string& Relation_MemberType_Name(Relation_MemberType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<Relation_MemberType_descriptor, 0, 2>(
      static_cast<int>(value));
}
inline bool Relation_MemberType_Parse(
    ::absl::string_view name, Relation_MemberType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<Relation_MemberType>(Relation_MemberType_descriptor(), name,
                                           value);
}

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


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

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

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

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

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

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

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

  explicit StringTable(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  StringTable(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const StringTable& from);
  StringTable(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, StringTable&& from) noexcept
      : StringTable(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 {
    kSFieldNumber = 1,
  };
  // repeated bytes s = 1;
  int s_size() const;
  private:
  int _internal_s_size() const;

  public:
  void clear_s() ;
  const ::std::string& s(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_s(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_s(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_s();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_s(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& s() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_s();

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

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.StringTable)
 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 StringTable& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> s_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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

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

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

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

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

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

  explicit Info(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Info(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Info& from);
  Info(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Info&& from) noexcept
      : Info(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 {
    kTimestampFieldNumber = 2,
    kChangesetFieldNumber = 3,
    kUidFieldNumber = 4,
    kUserSidFieldNumber = 5,
    kVisibleFieldNumber = 6,
    kVersionFieldNumber = 1,
  };
  // optional int64 timestamp = 2;
  bool has_timestamp() const;
  void clear_timestamp() ;
  ::int64_t timestamp() const;
  void set_timestamp(::int64_t value);

  private:
  ::int64_t _internal_timestamp() const;
  void _internal_set_timestamp(::int64_t value);

  public:
  // optional int64 changeset = 3;
  bool has_changeset() const;
  void clear_changeset() ;
  ::int64_t changeset() const;
  void set_changeset(::int64_t value);

  private:
  ::int64_t _internal_changeset() const;
  void _internal_set_changeset(::int64_t value);

  public:
  // optional int32 uid = 4;
  bool has_uid() const;
  void clear_uid() ;
  ::int32_t uid() const;
  void set_uid(::int32_t value);

  private:
  ::int32_t _internal_uid() const;
  void _internal_set_uid(::int32_t value);

  public:
  // optional uint32 user_sid = 5;
  bool has_user_sid() const;
  void clear_user_sid() ;
  ::uint32_t user_sid() const;
  void set_user_sid(::uint32_t value);

  private:
  ::uint32_t _internal_user_sid() const;
  void _internal_set_user_sid(::uint32_t value);

  public:
  // optional bool visible = 6;
  bool has_visible() const;
  void clear_visible() ;
  bool visible() const;
  void set_visible(bool value);

  private:
  bool _internal_visible() const;
  void _internal_set_visible(bool value);

  public:
  // optional int32 version = 1 [default = -1];
  bool has_version() const;
  void clear_version() ;
  ::int32_t version() const;
  void set_version(::int32_t value);

  private:
  ::int32_t _internal_version() const;
  void _internal_set_version(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.Info)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 6,
                                   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 Info& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t timestamp_;
    ::int64_t changeset_;
    ::int32_t uid_;
    ::uint32_t user_sid_;
    bool visible_;
    ::int32_t version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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

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

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

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

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

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

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

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  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(HeaderBBox* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "OSMPBF.HeaderBBox"; }

  explicit HeaderBBox(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  HeaderBBox(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const HeaderBBox& from);
  HeaderBBox(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, HeaderBBox&& from) noexcept
      : HeaderBBox(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 {
    kLeftFieldNumber = 1,
    kRightFieldNumber = 2,
    kTopFieldNumber = 3,
    kBottomFieldNumber = 4,
  };
  // required sint64 left = 1;
  bool has_left() const;
  void clear_left() ;
  ::int64_t left() const;
  void set_left(::int64_t value);

  private:
  ::int64_t _internal_left() const;
  void _internal_set_left(::int64_t value);

  public:
  // required sint64 right = 2;
  bool has_right() const;
  void clear_right() ;
  ::int64_t right() const;
  void set_right(::int64_t value);

  private:
  ::int64_t _internal_right() const;
  void _internal_set_right(::int64_t value);

  public:
  // required sint64 top = 3;
  bool has_top() const;
  void clear_top() ;
  ::int64_t top() const;
  void set_top(::int64_t value);

  private:
  ::int64_t _internal_top() const;
  void _internal_set_top(::int64_t value);

  public:
  // required sint64 bottom = 4;
  bool has_bottom() const;
  void clear_bottom() ;
  ::int64_t bottom() const;
  void set_bottom(::int64_t value);

  private:
  ::int64_t _internal_bottom() const;
  void _internal_set_bottom(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.HeaderBBox)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 4,
                                   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 HeaderBBox& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t left_;
    ::int64_t right_;
    ::int64_t top_;
    ::int64_t bottom_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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

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

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

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

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

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

  explicit DenseInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DenseInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DenseInfo& from);
  DenseInfo(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DenseInfo&& from) noexcept
      : DenseInfo(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 {
    kVersionFieldNumber = 1,
    kTimestampFieldNumber = 2,
    kChangesetFieldNumber = 3,
    kUidFieldNumber = 4,
    kUserSidFieldNumber = 5,
    kVisibleFieldNumber = 6,
  };
  // repeated int32 version = 1 [packed = true];
  int version_size() const;
  private:
  int _internal_version_size() const;

  public:
  void clear_version() ;
  ::int32_t version(int index) const;
  void set_version(int index, ::int32_t value);
  void add_version(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& version() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_version();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_version() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_version();

  public:
  // repeated sint64 timestamp = 2 [packed = true];
  int timestamp_size() const;
  private:
  int _internal_timestamp_size() const;

  public:
  void clear_timestamp() ;
  ::int64_t timestamp(int index) const;
  void set_timestamp(int index, ::int64_t value);
  void add_timestamp(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& timestamp() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_timestamp();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_timestamp() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_timestamp();

  public:
  // repeated sint64 changeset = 3 [packed = true];
  int changeset_size() const;
  private:
  int _internal_changeset_size() const;

  public:
  void clear_changeset() ;
  ::int64_t changeset(int index) const;
  void set_changeset(int index, ::int64_t value);
  void add_changeset(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& changeset() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_changeset();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_changeset() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_changeset();

  public:
  // repeated sint32 uid = 4 [packed = true];
  int uid_size() const;
  private:
  int _internal_uid_size() const;

  public:
  void clear_uid() ;
  ::int32_t uid(int index) const;
  void set_uid(int index, ::int32_t value);
  void add_uid(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& uid() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_uid();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_uid() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_uid();

  public:
  // repeated sint32 user_sid = 5 [packed = true];
  int user_sid_size() const;
  private:
  int _internal_user_sid_size() const;

  public:
  void clear_user_sid() ;
  ::int32_t user_sid(int index) const;
  void set_user_sid(int index, ::int32_t value);
  void add_user_sid(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& user_sid() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_user_sid();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_user_sid() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_user_sid();

  public:
  // repeated bool visible = 6 [packed = true];
  int visible_size() const;
  private:
  int _internal_visible_size() const;

  public:
  void clear_visible() ;
  bool visible(int index) const;
  void set_visible(int index, bool value);
  void add_visible(bool value);
  const ::google::protobuf::RepeatedField<bool>& visible() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL mutable_visible();

  private:
  const ::google::protobuf::RepeatedField<bool>& _internal_visible() const;
  ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL _internal_mutable_visible();

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.DenseInfo)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 6,
                                   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 DenseInfo& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int32_t> version_;
    ::google::protobuf::internal::CachedSize _version_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> timestamp_;
    ::google::protobuf::internal::CachedSize _timestamp_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> changeset_;
    ::google::protobuf::internal::CachedSize _changeset_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int32_t> uid_;
    ::google::protobuf::internal::CachedSize _uid_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int32_t> user_sid_;
    ::google::protobuf::internal::CachedSize _user_sid_cached_byte_size_;
    ::google::protobuf::RepeatedField<bool> visible_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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

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

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

  inline ChangeSet(const ChangeSet& from) : ChangeSet(nullptr, from) {}
  inline ChangeSet(ChangeSet&& from) noexcept
      : ChangeSet(nullptr, ::std::move(from)) {}
  inline ChangeSet& operator=(const ChangeSet& from) {
    CopyFrom(from);
    return *this;
  }
  inline ChangeSet& operator=(ChangeSet&& 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 ChangeSet& default_instance() {
    return *reinterpret_cast<const ChangeSet*>(
        &_ChangeSet_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(ChangeSet& a, ChangeSet& b) { a.Swap(&b); }
  inline void Swap(ChangeSet* 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(ChangeSet* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  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(ChangeSet* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "OSMPBF.ChangeSet"; }

  explicit ChangeSet(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ChangeSet(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ChangeSet& from);
  ChangeSet(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ChangeSet&& from) noexcept
      : ChangeSet(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 {
    kIdFieldNumber = 1,
  };
  // required int64 id = 1;
  bool has_id() const;
  void clear_id() ;
  ::int64_t id() const;
  void set_id(::int64_t value);

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

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.ChangeSet)
 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 ChangeSet& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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

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

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

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

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

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

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

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  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(Way* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "OSMPBF.Way"; }

  explicit Way(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Way(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Way& from);
  Way(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Way&& from) noexcept
      : Way(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 {
    kKeysFieldNumber = 2,
    kValsFieldNumber = 3,
    kRefsFieldNumber = 8,
    kInfoFieldNumber = 4,
    kIdFieldNumber = 1,
    kLatFieldNumber = 9,
    kLonFieldNumber = 10,
  };
  // repeated uint32 keys = 2 [packed = true];
  int keys_size() const;
  private:
  int _internal_keys_size() const;

  public:
  void clear_keys() ;
  ::uint32_t keys(int index) const;
  void set_keys(int index, ::uint32_t value);
  void add_keys(::uint32_t value);
  const ::google::protobuf::RepeatedField<::uint32_t>& keys() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_keys();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_keys() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_keys();

  public:
  // repeated uint32 vals = 3 [packed = true];
  int vals_size() const;
  private:
  int _internal_vals_size() const;

  public:
  void clear_vals() ;
  ::uint32_t vals(int index) const;
  void set_vals(int index, ::uint32_t value);
  void add_vals(::uint32_t value);
  const ::google::protobuf::RepeatedField<::uint32_t>& vals() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_vals();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_vals() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_vals();

  public:
  // repeated sint64 refs = 8 [packed = true];
  int refs_size() const;
  private:
  int _internal_refs_size() const;

  public:
  void clear_refs() ;
  ::int64_t refs(int index) const;
  void set_refs(int index, ::int64_t value);
  void add_refs(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& refs() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_refs();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_refs() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_refs();

  public:
  // optional .OSMPBF.Info info = 4;
  bool has_info() const;
  void clear_info() ;
  const ::OSMPBF::Info& info() const;
  [[nodiscard]] ::OSMPBF::Info* PROTOBUF_NULLABLE release_info();
  ::OSMPBF::Info* PROTOBUF_NONNULL mutable_info();
  void set_allocated_info(::OSMPBF::Info* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_info(::OSMPBF::Info* PROTOBUF_NULLABLE value);
  ::OSMPBF::Info* PROTOBUF_NULLABLE unsafe_arena_release_info();

  private:
  const ::OSMPBF::Info& _internal_info() const;
  ::OSMPBF::Info* PROTOBUF_NONNULL _internal_mutable_info();

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

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

  public:
  // repeated sint64 lat = 9 [packed = true];
  int lat_size() const;
  private:
  int _internal_lat_size() const;

  public:
  void clear_lat() ;
  ::int64_t lat(int index) const;
  void set_lat(int index, ::int64_t value);
  void add_lat(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& lat() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_lat();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_lat() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_lat();

  public:
  // repeated sint64 lon = 10 [packed = true];
  int lon_size() const;
  private:
  int _internal_lon_size() const;

  public:
  void clear_lon() ;
  ::int64_t lon(int index) const;
  void set_lon(int index, ::int64_t value);
  void add_lon(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& lon() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_lon();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_lon() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_lon();

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.Way)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 7,
                                   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 Way& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::uint32_t> keys_;
    ::google::protobuf::internal::CachedSize _keys_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint32_t> vals_;
    ::google::protobuf::internal::CachedSize _vals_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> refs_;
    ::google::protobuf::internal::CachedSize _refs_cached_byte_size_;
    ::OSMPBF::Info* PROTOBUF_NULLABLE info_;
    ::int64_t id_;
    ::google::protobuf::RepeatedField<::int64_t> lat_;
    ::google::protobuf::internal::CachedSize _lat_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> lon_;
    ::google::protobuf::internal::CachedSize _lon_cached_byte_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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

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

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

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

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

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

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

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  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(Relation* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "OSMPBF.Relation"; }

  explicit Relation(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Relation(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Relation& from);
  Relation(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Relation&& from) noexcept
      : Relation(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 MemberType = Relation_MemberType;
  static constexpr MemberType NODE = Relation_MemberType_NODE;
  static constexpr MemberType WAY = Relation_MemberType_WAY;
  static constexpr MemberType RELATION = Relation_MemberType_RELATION;
  static inline bool MemberType_IsValid(int value) {
    return Relation_MemberType_IsValid(value);
  }
  static constexpr MemberType MemberType_MIN = Relation_MemberType_MemberType_MIN;
  static constexpr MemberType MemberType_MAX = Relation_MemberType_MemberType_MAX;
  static constexpr int MemberType_ARRAYSIZE = Relation_MemberType_MemberType_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL MemberType_descriptor() {
    return Relation_MemberType_descriptor();
  }
  template <typename T>
  static inline const ::std::string& MemberType_Name(T value) {
    return Relation_MemberType_Name(value);
  }
  static inline bool MemberType_Parse(
      ::absl::string_view name, MemberType* PROTOBUF_NONNULL value) {
    return Relation_MemberType_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kKeysFieldNumber = 2,
    kValsFieldNumber = 3,
    kRolesSidFieldNumber = 8,
    kInfoFieldNumber = 4,
    kIdFieldNumber = 1,
    kMemidsFieldNumber = 9,
    kTypesFieldNumber = 10,
  };
  // repeated uint32 keys = 2 [packed = true];
  int keys_size() const;
  private:
  int _internal_keys_size() const;

  public:
  void clear_keys() ;
  ::uint32_t keys(int index) const;
  void set_keys(int index, ::uint32_t value);
  void add_keys(::uint32_t value);
  const ::google::protobuf::RepeatedField<::uint32_t>& keys() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_keys();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_keys() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_keys();

  public:
  // repeated uint32 vals = 3 [packed = true];
  int vals_size() const;
  private:
  int _internal_vals_size() const;

  public:
  void clear_vals() ;
  ::uint32_t vals(int index) const;
  void set_vals(int index, ::uint32_t value);
  void add_vals(::uint32_t value);
  const ::google::protobuf::RepeatedField<::uint32_t>& vals() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_vals();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_vals() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_vals();

  public:
  // repeated int32 roles_sid = 8 [packed = true];
  int roles_sid_size() const;
  private:
  int _internal_roles_sid_size() const;

  public:
  void clear_roles_sid() ;
  ::int32_t roles_sid(int index) const;
  void set_roles_sid(int index, ::int32_t value);
  void add_roles_sid(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& roles_sid() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_roles_sid();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_roles_sid() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_roles_sid();

  public:
  // optional .OSMPBF.Info info = 4;
  bool has_info() const;
  void clear_info() ;
  const ::OSMPBF::Info& info() const;
  [[nodiscard]] ::OSMPBF::Info* PROTOBUF_NULLABLE release_info();
  ::OSMPBF::Info* PROTOBUF_NONNULL mutable_info();
  void set_allocated_info(::OSMPBF::Info* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_info(::OSMPBF::Info* PROTOBUF_NULLABLE value);
  ::OSMPBF::Info* PROTOBUF_NULLABLE unsafe_arena_release_info();

  private:
  const ::OSMPBF::Info& _internal_info() const;
  ::OSMPBF::Info* PROTOBUF_NONNULL _internal_mutable_info();

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

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

  public:
  // repeated sint64 memids = 9 [packed = true];
  int memids_size() const;
  private:
  int _internal_memids_size() const;

  public:
  void clear_memids() ;
  ::int64_t memids(int index) const;
  void set_memids(int index, ::int64_t value);
  void add_memids(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& memids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_memids();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_memids() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_memids();

  public:
  // repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];
  int types_size() const;
  private:
  int _internal_types_size() const;

  public:
  void clear_types() ;
  public:
  ::OSMPBF::Relation_MemberType types(int index) const;
  void set_types(int index, ::OSMPBF::Relation_MemberType value);
  void add_types(::OSMPBF::Relation_MemberType value);
  const ::google::protobuf::RepeatedField<int>& types() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL mutable_types();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_types() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL _internal_mutable_types();

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.Relation)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 7,
                                   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 Relation& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::uint32_t> keys_;
    ::google::protobuf::internal::CachedSize _keys_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint32_t> vals_;
    ::google::protobuf::internal::CachedSize _vals_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int32_t> roles_sid_;
    ::google::protobuf::internal::CachedSize _roles_sid_cached_byte_size_;
    ::OSMPBF::Info* PROTOBUF_NULLABLE info_;
    ::int64_t id_;
    ::google::protobuf::RepeatedField<::int64_t> memids_;
    ::google::protobuf::internal::CachedSize _memids_cached_byte_size_;
    ::google::protobuf::RepeatedField<int> types_;
    ::google::protobuf::internal::CachedSize _types_cached_byte_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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

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

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

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

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

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

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

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  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(Node* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "OSMPBF.Node"; }

  explicit Node(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Node(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Node& from);
  Node(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Node&& from) noexcept
      : Node(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 {
    kKeysFieldNumber = 2,
    kValsFieldNumber = 3,
    kInfoFieldNumber = 4,
    kIdFieldNumber = 1,
    kLatFieldNumber = 8,
    kLonFieldNumber = 9,
  };
  // repeated uint32 keys = 2 [packed = true];
  int keys_size() const;
  private:
  int _internal_keys_size() const;

  public:
  void clear_keys() ;
  ::uint32_t keys(int index) const;
  void set_keys(int index, ::uint32_t value);
  void add_keys(::uint32_t value);
  const ::google::protobuf::RepeatedField<::uint32_t>& keys() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_keys();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_keys() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_keys();

  public:
  // repeated uint32 vals = 3 [packed = true];
  int vals_size() const;
  private:
  int _internal_vals_size() const;

  public:
  void clear_vals() ;
  ::uint32_t vals(int index) const;
  void set_vals(int index, ::uint32_t value);
  void add_vals(::uint32_t value);
  const ::google::protobuf::RepeatedField<::uint32_t>& vals() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_vals();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_vals() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_vals();

  public:
  // optional .OSMPBF.Info info = 4;
  bool has_info() const;
  void clear_info() ;
  const ::OSMPBF::Info& info() const;
  [[nodiscard]] ::OSMPBF::Info* PROTOBUF_NULLABLE release_info();
  ::OSMPBF::Info* PROTOBUF_NONNULL mutable_info();
  void set_allocated_info(::OSMPBF::Info* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_info(::OSMPBF::Info* PROTOBUF_NULLABLE value);
  ::OSMPBF::Info* PROTOBUF_NULLABLE unsafe_arena_release_info();

  private:
  const ::OSMPBF::Info& _internal_info() const;
  ::OSMPBF::Info* PROTOBUF_NONNULL _internal_mutable_info();

  public:
  // required sint64 id = 1;
  bool has_id() const;
  void clear_id() ;
  ::int64_t id() const;
  void set_id(::int64_t value);

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

  public:
  // required sint64 lat = 8;
  bool has_lat() const;
  void clear_lat() ;
  ::int64_t lat() const;
  void set_lat(::int64_t value);

  private:
  ::int64_t _internal_lat() const;
  void _internal_set_lat(::int64_t value);

  public:
  // required sint64 lon = 9;
  bool has_lon() const;
  void clear_lon() ;
  ::int64_t lon() const;
  void set_lon(::int64_t value);

  private:
  ::int64_t _internal_lon() const;
  void _internal_set_lon(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.Node)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 6,
                                   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 Node& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::uint32_t> keys_;
    ::google::protobuf::internal::CachedSize _keys_cached_byte_size_;
    ::google::protobuf::RepeatedField<::uint32_t> vals_;
    ::google::protobuf::internal::CachedSize _vals_cached_byte_size_;
    ::OSMPBF::Info* PROTOBUF_NULLABLE info_;
    ::int64_t id_;
    ::int64_t lat_;
    ::int64_t lon_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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

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

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

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

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

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

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

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  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(HeaderBlock* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "OSMPBF.HeaderBlock"; }

  explicit HeaderBlock(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  HeaderBlock(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const HeaderBlock& from);
  HeaderBlock(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, HeaderBlock&& from) noexcept
      : HeaderBlock(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 {
    kRequiredFeaturesFieldNumber = 4,
    kOptionalFeaturesFieldNumber = 5,
    kWritingprogramFieldNumber = 16,
    kSourceFieldNumber = 17,
    kOsmosisReplicationBaseUrlFieldNumber = 34,
    kBboxFieldNumber = 1,
    kOsmosisReplicationTimestampFieldNumber = 32,
    kOsmosisReplicationSequenceNumberFieldNumber = 33,
  };
  // repeated string required_features = 4;
  int required_features_size() const;
  private:
  int _internal_required_features_size() const;

  public:
  void clear_required_features() ;
  const ::std::string& required_features(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_required_features(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_required_features(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_required_features();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_required_features(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& required_features() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_required_features();

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

  public:
  // repeated string optional_features = 5;
  int optional_features_size() const;
  private:
  int _internal_optional_features_size() const;

  public:
  void clear_optional_features() ;
  const ::std::string& optional_features(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_optional_features(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_optional_features(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_optional_features();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_optional_features(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& optional_features() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_optional_features();

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

  public:
  // optional string writingprogram = 16;
  bool has_writingprogram() const;
  void clear_writingprogram() ;
  const ::std::string& writingprogram() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_writingprogram(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_writingprogram();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_writingprogram();
  void set_allocated_writingprogram(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_writingprogram() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_writingprogram(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_writingprogram();

  public:
  // optional string source = 17;
  bool has_source() const;
  void clear_source() ;
  const ::std::string& source() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_source(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_source();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_source();
  void set_allocated_source(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_source() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_source(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_source();

  public:
  // optional string osmosis_replication_base_url = 34;
  bool has_osmosis_replication_base_url() const;
  void clear_osmosis_replication_base_url() ;
  const ::std::string& osmosis_replication_base_url() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_osmosis_replication_base_url(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_osmosis_replication_base_url();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_osmosis_replication_base_url();
  void set_allocated_osmosis_replication_base_url(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_osmosis_replication_base_url() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_osmosis_replication_base_url(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_osmosis_replication_base_url();

  public:
  // optional .OSMPBF.HeaderBBox bbox = 1;
  bool has_bbox() const;
  void clear_bbox() ;
  const ::OSMPBF::HeaderBBox& bbox() const;
  [[nodiscard]] ::OSMPBF::HeaderBBox* PROTOBUF_NULLABLE release_bbox();
  ::OSMPBF::HeaderBBox* PROTOBUF_NONNULL mutable_bbox();
  void set_allocated_bbox(::OSMPBF::HeaderBBox* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_bbox(::OSMPBF::HeaderBBox* PROTOBUF_NULLABLE value);
  ::OSMPBF::HeaderBBox* PROTOBUF_NULLABLE unsafe_arena_release_bbox();

  private:
  const ::OSMPBF::HeaderBBox& _internal_bbox() const;
  ::OSMPBF::HeaderBBox* PROTOBUF_NONNULL _internal_mutable_bbox();

  public:
  // optional int64 osmosis_replication_timestamp = 32;
  bool has_osmosis_replication_timestamp() const;
  void clear_osmosis_replication_timestamp() ;
  ::int64_t osmosis_replication_timestamp() const;
  void set_osmosis_replication_timestamp(::int64_t value);

  private:
  ::int64_t _internal_osmosis_replication_timestamp() const;
  void _internal_set_osmosis_replication_timestamp(::int64_t value);

  public:
  // optional int64 osmosis_replication_sequence_number = 33;
  bool has_osmosis_replication_sequence_number() const;
  void clear_osmosis_replication_sequence_number() ;
  ::int64_t osmosis_replication_sequence_number() const;
  void set_osmosis_replication_sequence_number(::int64_t value);

  private:
  ::int64_t _internal_osmosis_replication_sequence_number() const;
  void _internal_set_osmosis_replication_sequence_number(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.HeaderBlock)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 8,
                                   1, 0,
                                   7>
      _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 HeaderBlock& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> required_features_;
    ::google::protobuf::RepeatedPtrField<::std::string> optional_features_;
    ::google::protobuf::internal::ArenaStringPtr writingprogram_;
    ::google::protobuf::internal::ArenaStringPtr source_;
    ::google::protobuf::internal::ArenaStringPtr osmosis_replication_base_url_;
    ::OSMPBF::HeaderBBox* PROTOBUF_NULLABLE bbox_;
    ::int64_t osmosis_replication_timestamp_;
    ::int64_t osmosis_replication_sequence_number_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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

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

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

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

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

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

  explicit DenseNodes(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DenseNodes(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DenseNodes& from);
  DenseNodes(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DenseNodes&& from) noexcept
      : DenseNodes(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 {
    kIdFieldNumber = 1,
    kLatFieldNumber = 8,
    kKeysValsFieldNumber = 10,
    kDenseinfoFieldNumber = 5,
    kLonFieldNumber = 9,
  };
  // repeated sint64 id = 1 [packed = true];
  int id_size() const;
  private:
  int _internal_id_size() const;

  public:
  void clear_id() ;
  ::int64_t id(int index) const;
  void set_id(int index, ::int64_t value);
  void add_id(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& id() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_id();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_id() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_id();

  public:
  // repeated sint64 lat = 8 [packed = true];
  int lat_size() const;
  private:
  int _internal_lat_size() const;

  public:
  void clear_lat() ;
  ::int64_t lat(int index) const;
  void set_lat(int index, ::int64_t value);
  void add_lat(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& lat() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_lat();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_lat() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_lat();

  public:
  // repeated int32 keys_vals = 10 [packed = true];
  int keys_vals_size() const;
  private:
  int _internal_keys_vals_size() const;

  public:
  void clear_keys_vals() ;
  ::int32_t keys_vals(int index) const;
  void set_keys_vals(int index, ::int32_t value);
  void add_keys_vals(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& keys_vals() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_keys_vals();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_keys_vals() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_keys_vals();

  public:
  // optional .OSMPBF.DenseInfo denseinfo = 5;
  bool has_denseinfo() const;
  void clear_denseinfo() ;
  const ::OSMPBF::DenseInfo& denseinfo() const;
  [[nodiscard]] ::OSMPBF::DenseInfo* PROTOBUF_NULLABLE release_denseinfo();
  ::OSMPBF::DenseInfo* PROTOBUF_NONNULL mutable_denseinfo();
  void set_allocated_denseinfo(::OSMPBF::DenseInfo* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_denseinfo(::OSMPBF::DenseInfo* PROTOBUF_NULLABLE value);
  ::OSMPBF::DenseInfo* PROTOBUF_NULLABLE unsafe_arena_release_denseinfo();

  private:
  const ::OSMPBF::DenseInfo& _internal_denseinfo() const;
  ::OSMPBF::DenseInfo* PROTOBUF_NONNULL _internal_mutable_denseinfo();

  public:
  // repeated sint64 lon = 9 [packed = true];
  int lon_size() const;
  private:
  int _internal_lon_size() const;

  public:
  void clear_lon() ;
  ::int64_t lon(int index) const;
  void set_lon(int index, ::int64_t value);
  void add_lon(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& lon() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_lon();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_lon() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_lon();

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.DenseNodes)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 5,
                                   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 DenseNodes& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> id_;
    ::google::protobuf::internal::CachedSize _id_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int64_t> lat_;
    ::google::protobuf::internal::CachedSize _lat_cached_byte_size_;
    ::google::protobuf::RepeatedField<::int32_t> keys_vals_;
    ::google::protobuf::internal::CachedSize _keys_vals_cached_byte_size_;
    ::OSMPBF::DenseInfo* PROTOBUF_NULLABLE denseinfo_;
    ::google::protobuf::RepeatedField<::int64_t> lon_;
    ::google::protobuf::internal::CachedSize _lon_cached_byte_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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

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

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

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

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

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

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

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  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(PrimitiveGroup* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "OSMPBF.PrimitiveGroup"; }

  explicit PrimitiveGroup(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  PrimitiveGroup(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PrimitiveGroup& from);
  PrimitiveGroup(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, PrimitiveGroup&& from) noexcept
      : PrimitiveGroup(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 {
    kNodesFieldNumber = 1,
    kWaysFieldNumber = 3,
    kRelationsFieldNumber = 4,
    kChangesetsFieldNumber = 5,
    kDenseFieldNumber = 2,
  };
  // repeated .OSMPBF.Node nodes = 1;
  int nodes_size() const;
  private:
  int _internal_nodes_size() const;

  public:
  void clear_nodes() ;
  ::OSMPBF::Node* PROTOBUF_NONNULL mutable_nodes(int index);
  ::google::protobuf::RepeatedPtrField<::OSMPBF::Node>* PROTOBUF_NONNULL mutable_nodes();

  private:
  const ::google::protobuf::RepeatedPtrField<::OSMPBF::Node>& _internal_nodes() const;
  ::google::protobuf::RepeatedPtrField<::OSMPBF::Node>* PROTOBUF_NONNULL _internal_mutable_nodes();
  public:
  const ::OSMPBF::Node& nodes(int index) const;
  ::OSMPBF::Node* PROTOBUF_NONNULL add_nodes();
  const ::google::protobuf::RepeatedPtrField<::OSMPBF::Node>& nodes() const;
  // repeated .OSMPBF.Way ways = 3;
  int ways_size() const;
  private:
  int _internal_ways_size() const;

  public:
  void clear_ways() ;
  ::OSMPBF::Way* PROTOBUF_NONNULL mutable_ways(int index);
  ::google::protobuf::RepeatedPtrField<::OSMPBF::Way>* PROTOBUF_NONNULL mutable_ways();

  private:
  const ::google::protobuf::RepeatedPtrField<::OSMPBF::Way>& _internal_ways() const;
  ::google::protobuf::RepeatedPtrField<::OSMPBF::Way>* PROTOBUF_NONNULL _internal_mutable_ways();
  public:
  const ::OSMPBF::Way& ways(int index) const;
  ::OSMPBF::Way* PROTOBUF_NONNULL add_ways();
  const ::google::protobuf::RepeatedPtrField<::OSMPBF::Way>& ways() const;
  // repeated .OSMPBF.Relation relations = 4;
  int relations_size() const;
  private:
  int _internal_relations_size() const;

  public:
  void clear_relations() ;
  ::OSMPBF::Relation* PROTOBUF_NONNULL mutable_relations(int index);
  ::google::protobuf::RepeatedPtrField<::OSMPBF::Relation>* PROTOBUF_NONNULL mutable_relations();

  private:
  const ::google::protobuf::RepeatedPtrField<::OSMPBF::Relation>& _internal_relations() const;
  ::google::protobuf::RepeatedPtrField<::OSMPBF::Relation>* PROTOBUF_NONNULL _internal_mutable_relations();
  public:
  const ::OSMPBF::Relation& relations(int index) const;
  ::OSMPBF::Relation* PROTOBUF_NONNULL add_relations();
  const ::google::protobuf::RepeatedPtrField<::OSMPBF::Relation>& relations() const;
  // repeated .OSMPBF.ChangeSet changesets = 5;
  int changesets_size() const;
  private:
  int _internal_changesets_size() const;

  public:
  void clear_changesets() ;
  ::OSMPBF::ChangeSet* PROTOBUF_NONNULL mutable_changesets(int index);
  ::google::protobuf::RepeatedPtrField<::OSMPBF::ChangeSet>* PROTOBUF_NONNULL mutable_changesets();

  private:
  const ::google::protobuf::RepeatedPtrField<::OSMPBF::ChangeSet>& _internal_changesets() const;
  ::google::protobuf::RepeatedPtrField<::OSMPBF::ChangeSet>* PROTOBUF_NONNULL _internal_mutable_changesets();
  public:
  const ::OSMPBF::ChangeSet& changesets(int index) const;
  ::OSMPBF::ChangeSet* PROTOBUF_NONNULL add_changesets();
  const ::google::protobuf::RepeatedPtrField<::OSMPBF::ChangeSet>& changesets() const;
  // optional .OSMPBF.DenseNodes dense = 2;
  bool has_dense() const;
  void clear_dense() ;
  const ::OSMPBF::DenseNodes& dense() const;
  [[nodiscard]] ::OSMPBF::DenseNodes* PROTOBUF_NULLABLE release_dense();
  ::OSMPBF::DenseNodes* PROTOBUF_NONNULL mutable_dense();
  void set_allocated_dense(::OSMPBF::DenseNodes* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dense(::OSMPBF::DenseNodes* PROTOBUF_NULLABLE value);
  ::OSMPBF::DenseNodes* PROTOBUF_NULLABLE unsafe_arena_release_dense();

  private:
  const ::OSMPBF::DenseNodes& _internal_dense() const;
  ::OSMPBF::DenseNodes* PROTOBUF_NONNULL _internal_mutable_dense();

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.PrimitiveGroup)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 5,
                                   5, 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 PrimitiveGroup& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::OSMPBF::Node > nodes_;
    ::google::protobuf::RepeatedPtrField< ::OSMPBF::Way > ways_;
    ::google::protobuf::RepeatedPtrField< ::OSMPBF::Relation > relations_;
    ::google::protobuf::RepeatedPtrField< ::OSMPBF::ChangeSet > changesets_;
    ::OSMPBF::DenseNodes* PROTOBUF_NULLABLE dense_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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

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

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

  inline PrimitiveBlock(const PrimitiveBlock& from) : PrimitiveBlock(nullptr, from) {}
  inline PrimitiveBlock(PrimitiveBlock&& from) noexcept
      : PrimitiveBlock(nullptr, ::std::move(from)) {}
  inline PrimitiveBlock& operator=(const PrimitiveBlock& from) {
    CopyFrom(from);
    return *this;
  }
  inline PrimitiveBlock& operator=(PrimitiveBlock&& 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 PrimitiveBlock& default_instance() {
    return *reinterpret_cast<const PrimitiveBlock*>(
        &_PrimitiveBlock_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(PrimitiveBlock& a, PrimitiveBlock& b) { a.Swap(&b); }
  inline void Swap(PrimitiveBlock* 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(PrimitiveBlock* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  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(PrimitiveBlock* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "OSMPBF.PrimitiveBlock"; }

  explicit PrimitiveBlock(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  PrimitiveBlock(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PrimitiveBlock& from);
  PrimitiveBlock(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, PrimitiveBlock&& from) noexcept
      : PrimitiveBlock(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 {
    kPrimitivegroupFieldNumber = 2,
    kStringtableFieldNumber = 1,
    kLatOffsetFieldNumber = 19,
    kLonOffsetFieldNumber = 20,
    kGranularityFieldNumber = 17,
    kDateGranularityFieldNumber = 18,
  };
  // repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;
  int primitivegroup_size() const;
  private:
  int _internal_primitivegroup_size() const;

  public:
  void clear_primitivegroup() ;
  ::OSMPBF::PrimitiveGroup* PROTOBUF_NONNULL mutable_primitivegroup(int index);
  ::google::protobuf::RepeatedPtrField<::OSMPBF::PrimitiveGroup>* PROTOBUF_NONNULL mutable_primitivegroup();

  private:
  const ::google::protobuf::RepeatedPtrField<::OSMPBF::PrimitiveGroup>& _internal_primitivegroup() const;
  ::google::protobuf::RepeatedPtrField<::OSMPBF::PrimitiveGroup>* PROTOBUF_NONNULL _internal_mutable_primitivegroup();
  public:
  const ::OSMPBF::PrimitiveGroup& primitivegroup(int index) const;
  ::OSMPBF::PrimitiveGroup* PROTOBUF_NONNULL add_primitivegroup();
  const ::google::protobuf::RepeatedPtrField<::OSMPBF::PrimitiveGroup>& primitivegroup() const;
  // required .OSMPBF.StringTable stringtable = 1;
  bool has_stringtable() const;
  void clear_stringtable() ;
  const ::OSMPBF::StringTable& stringtable() const;
  [[nodiscard]] ::OSMPBF::StringTable* PROTOBUF_NULLABLE release_stringtable();
  ::OSMPBF::StringTable* PROTOBUF_NONNULL mutable_stringtable();
  void set_allocated_stringtable(::OSMPBF::StringTable* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_stringtable(::OSMPBF::StringTable* PROTOBUF_NULLABLE value);
  ::OSMPBF::StringTable* PROTOBUF_NULLABLE unsafe_arena_release_stringtable();

  private:
  const ::OSMPBF::StringTable& _internal_stringtable() const;
  ::OSMPBF::StringTable* PROTOBUF_NONNULL _internal_mutable_stringtable();

  public:
  // optional int64 lat_offset = 19 [default = 0];
  bool has_lat_offset() const;
  void clear_lat_offset() ;
  ::int64_t lat_offset() const;
  void set_lat_offset(::int64_t value);

  private:
  ::int64_t _internal_lat_offset() const;
  void _internal_set_lat_offset(::int64_t value);

  public:
  // optional int64 lon_offset = 20 [default = 0];
  bool has_lon_offset() const;
  void clear_lon_offset() ;
  ::int64_t lon_offset() const;
  void set_lon_offset(::int64_t value);

  private:
  ::int64_t _internal_lon_offset() const;
  void _internal_set_lon_offset(::int64_t value);

  public:
  // optional int32 granularity = 17 [default = 100];
  bool has_granularity() const;
  void clear_granularity() ;
  ::int32_t granularity() const;
  void set_granularity(::int32_t value);

  private:
  ::int32_t _internal_granularity() const;
  void _internal_set_granularity(::int32_t value);

  public:
  // optional int32 date_granularity = 18 [default = 1000];
  bool has_date_granularity() const;
  void clear_date_granularity() ;
  ::int32_t date_granularity() const;
  void set_date_granularity(::int32_t value);

  private:
  ::int32_t _internal_date_granularity() const;
  void _internal_set_date_granularity(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:OSMPBF.PrimitiveBlock)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 6,
                                   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 PrimitiveBlock& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::OSMPBF::PrimitiveGroup > primitivegroup_;
    ::OSMPBF::StringTable* PROTOBUF_NULLABLE stringtable_;
    ::int64_t lat_offset_;
    ::int64_t lon_offset_;
    ::int32_t granularity_;
    ::int32_t date_granularity_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_osmformat_2eproto;
};

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

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




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


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

// HeaderBlock

// optional .OSMPBF.HeaderBBox bbox = 1;
inline bool HeaderBlock::has_bbox() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  PROTOBUF_ASSUME(!value || _impl_.bbox_ != nullptr);
  return value;
}
inline void HeaderBlock::clear_bbox() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bbox_ != nullptr) _impl_.bbox_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000020U);
}
inline const ::OSMPBF::HeaderBBox& HeaderBlock::_internal_bbox() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::OSMPBF::HeaderBBox* p = _impl_.bbox_;
  return p != nullptr ? *p : reinterpret_cast<const ::OSMPBF::HeaderBBox&>(::OSMPBF::_HeaderBBox_default_instance_);
}
inline const ::OSMPBF::HeaderBBox& HeaderBlock::bbox() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBlock.bbox)
  return _internal_bbox();
}
inline void HeaderBlock::unsafe_arena_set_allocated_bbox(
    ::OSMPBF::HeaderBBox* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bbox_);
  }
  _impl_.bbox_ = reinterpret_cast<::OSMPBF::HeaderBBox*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:OSMPBF.HeaderBlock.bbox)
}
inline ::OSMPBF::HeaderBBox* PROTOBUF_NULLABLE HeaderBlock::release_bbox() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::OSMPBF::HeaderBBox* released = _impl_.bbox_;
  _impl_.bbox_ = 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 ::OSMPBF::HeaderBBox* PROTOBUF_NULLABLE HeaderBlock::unsafe_arena_release_bbox() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:OSMPBF.HeaderBlock.bbox)

  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::OSMPBF::HeaderBBox* temp = _impl_.bbox_;
  _impl_.bbox_ = nullptr;
  return temp;
}
inline ::OSMPBF::HeaderBBox* PROTOBUF_NONNULL HeaderBlock::_internal_mutable_bbox() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bbox_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::OSMPBF::HeaderBBox>(GetArena());
    _impl_.bbox_ = reinterpret_cast<::OSMPBF::HeaderBBox*>(p);
  }
  return _impl_.bbox_;
}
inline ::OSMPBF::HeaderBBox* PROTOBUF_NONNULL HeaderBlock::mutable_bbox()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::OSMPBF::HeaderBBox* _msg = _internal_mutable_bbox();
  // @@protoc_insertion_point(field_mutable:OSMPBF.HeaderBlock.bbox)
  return _msg;
}
inline void HeaderBlock::set_allocated_bbox(::OSMPBF::HeaderBBox* 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_.bbox_);
  }

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

  _impl_.bbox_ = reinterpret_cast<::OSMPBF::HeaderBBox*>(value);
  // @@protoc_insertion_point(field_set_allocated:OSMPBF.HeaderBlock.bbox)
}

// repeated string required_features = 4;
inline int HeaderBlock::_internal_required_features_size() const {
  return _internal_required_features().size();
}
inline int HeaderBlock::required_features_size() const {
  return _internal_required_features_size();
}
inline void HeaderBlock::clear_required_features() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.required_features_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL HeaderBlock::add_required_features()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_required_features()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:OSMPBF.HeaderBlock.required_features)
  return _s;
}
inline const ::std::string& HeaderBlock::required_features(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBlock.required_features)
  return _internal_required_features().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL HeaderBlock::mutable_required_features(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:OSMPBF.HeaderBlock.required_features)
  return _internal_mutable_required_features()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void HeaderBlock::set_required_features(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_required_features()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:OSMPBF.HeaderBlock.required_features)
}
template <typename Arg_, typename... Args_>
inline void HeaderBlock::add_required_features(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_required_features(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:OSMPBF.HeaderBlock.required_features)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& HeaderBlock::required_features()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.HeaderBlock.required_features)
  return _internal_required_features();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
HeaderBlock::mutable_required_features() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.HeaderBlock.required_features)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_required_features();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
HeaderBlock::_internal_required_features() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.required_features_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
HeaderBlock::_internal_mutable_required_features() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.required_features_;
}

// repeated string optional_features = 5;
inline int HeaderBlock::_internal_optional_features_size() const {
  return _internal_optional_features().size();
}
inline int HeaderBlock::optional_features_size() const {
  return _internal_optional_features_size();
}
inline void HeaderBlock::clear_optional_features() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.optional_features_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::std::string* PROTOBUF_NONNULL HeaderBlock::add_optional_features()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_optional_features()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add_mutable:OSMPBF.HeaderBlock.optional_features)
  return _s;
}
inline const ::std::string& HeaderBlock::optional_features(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBlock.optional_features)
  return _internal_optional_features().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL HeaderBlock::mutable_optional_features(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:OSMPBF.HeaderBlock.optional_features)
  return _internal_mutable_optional_features()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void HeaderBlock::set_optional_features(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_optional_features()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:OSMPBF.HeaderBlock.optional_features)
}
template <typename Arg_, typename... Args_>
inline void HeaderBlock::add_optional_features(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_optional_features(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:OSMPBF.HeaderBlock.optional_features)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& HeaderBlock::optional_features()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.HeaderBlock.optional_features)
  return _internal_optional_features();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
HeaderBlock::mutable_optional_features() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.HeaderBlock.optional_features)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_optional_features();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
HeaderBlock::_internal_optional_features() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.optional_features_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
HeaderBlock::_internal_mutable_optional_features() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.optional_features_;
}

// optional string writingprogram = 16;
inline bool HeaderBlock::has_writingprogram() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void HeaderBlock::clear_writingprogram() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.writingprogram_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::std::string& HeaderBlock::writingprogram() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBlock.writingprogram)
  return _internal_writingprogram();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void HeaderBlock::set_writingprogram(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.writingprogram_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:OSMPBF.HeaderBlock.writingprogram)
}
inline ::std::string* PROTOBUF_NONNULL HeaderBlock::mutable_writingprogram()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_writingprogram();
  // @@protoc_insertion_point(field_mutable:OSMPBF.HeaderBlock.writingprogram)
  return _s;
}
inline const ::std::string& HeaderBlock::_internal_writingprogram() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.writingprogram_.Get();
}
inline void HeaderBlock::_internal_set_writingprogram(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.writingprogram_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HeaderBlock::_internal_mutable_writingprogram() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.writingprogram_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HeaderBlock::release_writingprogram() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:OSMPBF.HeaderBlock.writingprogram)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.writingprogram_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.writingprogram_.Set("", GetArena());
  }
  return released;
}
inline void HeaderBlock::set_allocated_writingprogram(::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_.writingprogram_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.writingprogram_.IsDefault()) {
    _impl_.writingprogram_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:OSMPBF.HeaderBlock.writingprogram)
}

// optional string source = 17;
inline bool HeaderBlock::has_source() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void HeaderBlock::clear_source() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline const ::std::string& HeaderBlock::source() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBlock.source)
  return _internal_source();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void HeaderBlock::set_source(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.source_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:OSMPBF.HeaderBlock.source)
}
inline ::std::string* PROTOBUF_NONNULL HeaderBlock::mutable_source()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_source();
  // @@protoc_insertion_point(field_mutable:OSMPBF.HeaderBlock.source)
  return _s;
}
inline const ::std::string& HeaderBlock::_internal_source() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.source_.Get();
}
inline void HeaderBlock::_internal_set_source(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.source_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HeaderBlock::_internal_mutable_source() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.source_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HeaderBlock::release_source() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:OSMPBF.HeaderBlock.source)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.source_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.source_.Set("", GetArena());
  }
  return released;
}
inline void HeaderBlock::set_allocated_source(::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_.source_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.source_.IsDefault()) {
    _impl_.source_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:OSMPBF.HeaderBlock.source)
}

// optional int64 osmosis_replication_timestamp = 32;
inline bool HeaderBlock::has_osmosis_replication_timestamp() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  return value;
}
inline void HeaderBlock::clear_osmosis_replication_timestamp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.osmosis_replication_timestamp_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000040U);
}
inline ::int64_t HeaderBlock::osmosis_replication_timestamp() const {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBlock.osmosis_replication_timestamp)
  return _internal_osmosis_replication_timestamp();
}
inline void HeaderBlock::set_osmosis_replication_timestamp(::int64_t value) {
  _internal_set_osmosis_replication_timestamp(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:OSMPBF.HeaderBlock.osmosis_replication_timestamp)
}
inline ::int64_t HeaderBlock::_internal_osmosis_replication_timestamp() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.osmosis_replication_timestamp_;
}
inline void HeaderBlock::_internal_set_osmosis_replication_timestamp(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.osmosis_replication_timestamp_ = value;
}

// optional int64 osmosis_replication_sequence_number = 33;
inline bool HeaderBlock::has_osmosis_replication_sequence_number() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000080U);
  return value;
}
inline void HeaderBlock::clear_osmosis_replication_sequence_number() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.osmosis_replication_sequence_number_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000080U);
}
inline ::int64_t HeaderBlock::osmosis_replication_sequence_number() const {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBlock.osmosis_replication_sequence_number)
  return _internal_osmosis_replication_sequence_number();
}
inline void HeaderBlock::set_osmosis_replication_sequence_number(::int64_t value) {
  _internal_set_osmosis_replication_sequence_number(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  // @@protoc_insertion_point(field_set:OSMPBF.HeaderBlock.osmosis_replication_sequence_number)
}
inline ::int64_t HeaderBlock::_internal_osmosis_replication_sequence_number() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.osmosis_replication_sequence_number_;
}
inline void HeaderBlock::_internal_set_osmosis_replication_sequence_number(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.osmosis_replication_sequence_number_ = value;
}

// optional string osmosis_replication_base_url = 34;
inline bool HeaderBlock::has_osmosis_replication_base_url() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void HeaderBlock::clear_osmosis_replication_base_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.osmosis_replication_base_url_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline const ::std::string& HeaderBlock::osmosis_replication_base_url() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBlock.osmosis_replication_base_url)
  return _internal_osmosis_replication_base_url();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void HeaderBlock::set_osmosis_replication_base_url(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  _impl_.osmosis_replication_base_url_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:OSMPBF.HeaderBlock.osmosis_replication_base_url)
}
inline ::std::string* PROTOBUF_NONNULL HeaderBlock::mutable_osmosis_replication_base_url()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::std::string* _s = _internal_mutable_osmosis_replication_base_url();
  // @@protoc_insertion_point(field_mutable:OSMPBF.HeaderBlock.osmosis_replication_base_url)
  return _s;
}
inline const ::std::string& HeaderBlock::_internal_osmosis_replication_base_url() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.osmosis_replication_base_url_.Get();
}
inline void HeaderBlock::_internal_set_osmosis_replication_base_url(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.osmosis_replication_base_url_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HeaderBlock::_internal_mutable_osmosis_replication_base_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.osmosis_replication_base_url_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HeaderBlock::release_osmosis_replication_base_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:OSMPBF.HeaderBlock.osmosis_replication_base_url)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000010U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  auto* released = _impl_.osmosis_replication_base_url_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.osmosis_replication_base_url_.Set("", GetArena());
  }
  return released;
}
inline void HeaderBlock::set_allocated_osmosis_replication_base_url(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }
  _impl_.osmosis_replication_base_url_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.osmosis_replication_base_url_.IsDefault()) {
    _impl_.osmosis_replication_base_url_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:OSMPBF.HeaderBlock.osmosis_replication_base_url)
}

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

// HeaderBBox

// required sint64 left = 1;
inline bool HeaderBBox::has_left() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void HeaderBBox::clear_left() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.left_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::int64_t HeaderBBox::left() const {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBBox.left)
  return _internal_left();
}
inline void HeaderBBox::set_left(::int64_t value) {
  _internal_set_left(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:OSMPBF.HeaderBBox.left)
}
inline ::int64_t HeaderBBox::_internal_left() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.left_;
}
inline void HeaderBBox::_internal_set_left(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.left_ = value;
}

// required sint64 right = 2;
inline bool HeaderBBox::has_right() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void HeaderBBox::clear_right() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.right_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::int64_t HeaderBBox::right() const {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBBox.right)
  return _internal_right();
}
inline void HeaderBBox::set_right(::int64_t value) {
  _internal_set_right(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:OSMPBF.HeaderBBox.right)
}
inline ::int64_t HeaderBBox::_internal_right() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.right_;
}
inline void HeaderBBox::_internal_set_right(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.right_ = value;
}

// required sint64 top = 3;
inline bool HeaderBBox::has_top() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void HeaderBBox::clear_top() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.top_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::int64_t HeaderBBox::top() const {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBBox.top)
  return _internal_top();
}
inline void HeaderBBox::set_top(::int64_t value) {
  _internal_set_top(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:OSMPBF.HeaderBBox.top)
}
inline ::int64_t HeaderBBox::_internal_top() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.top_;
}
inline void HeaderBBox::_internal_set_top(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.top_ = value;
}

// required sint64 bottom = 4;
inline bool HeaderBBox::has_bottom() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void HeaderBBox::clear_bottom() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bottom_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline ::int64_t HeaderBBox::bottom() const {
  // @@protoc_insertion_point(field_get:OSMPBF.HeaderBBox.bottom)
  return _internal_bottom();
}
inline void HeaderBBox::set_bottom(::int64_t value) {
  _internal_set_bottom(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:OSMPBF.HeaderBBox.bottom)
}
inline ::int64_t HeaderBBox::_internal_bottom() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bottom_;
}
inline void HeaderBBox::_internal_set_bottom(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bottom_ = value;
}

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

// PrimitiveBlock

// required .OSMPBF.StringTable stringtable = 1;
inline bool PrimitiveBlock::has_stringtable() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.stringtable_ != nullptr);
  return value;
}
inline void PrimitiveBlock::clear_stringtable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.stringtable_ != nullptr) _impl_.stringtable_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline const ::OSMPBF::StringTable& PrimitiveBlock::_internal_stringtable() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::OSMPBF::StringTable* p = _impl_.stringtable_;
  return p != nullptr ? *p : reinterpret_cast<const ::OSMPBF::StringTable&>(::OSMPBF::_StringTable_default_instance_);
}
inline const ::OSMPBF::StringTable& PrimitiveBlock::stringtable() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.PrimitiveBlock.stringtable)
  return _internal_stringtable();
}
inline void PrimitiveBlock::unsafe_arena_set_allocated_stringtable(
    ::OSMPBF::StringTable* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.stringtable_);
  }
  _impl_.stringtable_ = reinterpret_cast<::OSMPBF::StringTable*>(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:OSMPBF.PrimitiveBlock.stringtable)
}
inline ::OSMPBF::StringTable* PROTOBUF_NULLABLE PrimitiveBlock::release_stringtable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::OSMPBF::StringTable* released = _impl_.stringtable_;
  _impl_.stringtable_ = 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 ::OSMPBF::StringTable* PROTOBUF_NULLABLE PrimitiveBlock::unsafe_arena_release_stringtable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:OSMPBF.PrimitiveBlock.stringtable)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::OSMPBF::StringTable* temp = _impl_.stringtable_;
  _impl_.stringtable_ = nullptr;
  return temp;
}
inline ::OSMPBF::StringTable* PROTOBUF_NONNULL PrimitiveBlock::_internal_mutable_stringtable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.stringtable_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::OSMPBF::StringTable>(GetArena());
    _impl_.stringtable_ = reinterpret_cast<::OSMPBF::StringTable*>(p);
  }
  return _impl_.stringtable_;
}
inline ::OSMPBF::StringTable* PROTOBUF_NONNULL PrimitiveBlock::mutable_stringtable()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::OSMPBF::StringTable* _msg = _internal_mutable_stringtable();
  // @@protoc_insertion_point(field_mutable:OSMPBF.PrimitiveBlock.stringtable)
  return _msg;
}
inline void PrimitiveBlock::set_allocated_stringtable(::OSMPBF::StringTable* 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_.stringtable_);
  }

  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_.stringtable_ = reinterpret_cast<::OSMPBF::StringTable*>(value);
  // @@protoc_insertion_point(field_set_allocated:OSMPBF.PrimitiveBlock.stringtable)
}

// repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;
inline int PrimitiveBlock::_internal_primitivegroup_size() const {
  return _internal_primitivegroup().size();
}
inline int PrimitiveBlock::primitivegroup_size() const {
  return _internal_primitivegroup_size();
}
inline void PrimitiveBlock::clear_primitivegroup() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.primitivegroup_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::OSMPBF::PrimitiveGroup* PROTOBUF_NONNULL PrimitiveBlock::mutable_primitivegroup(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:OSMPBF.PrimitiveBlock.primitivegroup)
  return _internal_mutable_primitivegroup()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::OSMPBF::PrimitiveGroup>* PROTOBUF_NONNULL PrimitiveBlock::mutable_primitivegroup()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.PrimitiveBlock.primitivegroup)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_primitivegroup();
}
inline const ::OSMPBF::PrimitiveGroup& PrimitiveBlock::primitivegroup(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.PrimitiveBlock.primitivegroup)
  return _internal_primitivegroup().Get(index);
}
inline ::OSMPBF::PrimitiveGroup* PROTOBUF_NONNULL PrimitiveBlock::add_primitivegroup()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::OSMPBF::PrimitiveGroup* _add =
      _internal_mutable_primitivegroup()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:OSMPBF.PrimitiveBlock.primitivegroup)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::OSMPBF::PrimitiveGroup>& PrimitiveBlock::primitivegroup() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.PrimitiveBlock.primitivegroup)
  return _internal_primitivegroup();
}
inline const ::google::protobuf::RepeatedPtrField<::OSMPBF::PrimitiveGroup>&
PrimitiveBlock::_internal_primitivegroup() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.primitivegroup_;
}
inline ::google::protobuf::RepeatedPtrField<::OSMPBF::PrimitiveGroup>* PROTOBUF_NONNULL
PrimitiveBlock::_internal_mutable_primitivegroup() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.primitivegroup_;
}

// optional int32 granularity = 17 [default = 100];
inline bool PrimitiveBlock::has_granularity() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void PrimitiveBlock::clear_granularity() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.granularity_ = 100;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline ::int32_t PrimitiveBlock::granularity() const {
  // @@protoc_insertion_point(field_get:OSMPBF.PrimitiveBlock.granularity)
  return _internal_granularity();
}
inline void PrimitiveBlock::set_granularity(::int32_t value) {
  _internal_set_granularity(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:OSMPBF.PrimitiveBlock.granularity)
}
inline ::int32_t PrimitiveBlock::_internal_granularity() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.granularity_;
}
inline void PrimitiveBlock::_internal_set_granularity(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.granularity_ = value;
}

// optional int64 lat_offset = 19 [default = 0];
inline bool PrimitiveBlock::has_lat_offset() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void PrimitiveBlock::clear_lat_offset() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lat_offset_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::int64_t PrimitiveBlock::lat_offset() const {
  // @@protoc_insertion_point(field_get:OSMPBF.PrimitiveBlock.lat_offset)
  return _internal_lat_offset();
}
inline void PrimitiveBlock::set_lat_offset(::int64_t value) {
  _internal_set_lat_offset(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:OSMPBF.PrimitiveBlock.lat_offset)
}
inline ::int64_t PrimitiveBlock::_internal_lat_offset() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lat_offset_;
}
inline void PrimitiveBlock::_internal_set_lat_offset(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lat_offset_ = value;
}

// optional int64 lon_offset = 20 [default = 0];
inline bool PrimitiveBlock::has_lon_offset() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void PrimitiveBlock::clear_lon_offset() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lon_offset_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline ::int64_t PrimitiveBlock::lon_offset() const {
  // @@protoc_insertion_point(field_get:OSMPBF.PrimitiveBlock.lon_offset)
  return _internal_lon_offset();
}
inline void PrimitiveBlock::set_lon_offset(::int64_t value) {
  _internal_set_lon_offset(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:OSMPBF.PrimitiveBlock.lon_offset)
}
inline ::int64_t PrimitiveBlock::_internal_lon_offset() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lon_offset_;
}
inline void PrimitiveBlock::_internal_set_lon_offset(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lon_offset_ = value;
}

// optional int32 date_granularity = 18 [default = 1000];
inline bool PrimitiveBlock::has_date_granularity() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void PrimitiveBlock::clear_date_granularity() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.date_granularity_ = 1000;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000020U);
}
inline ::int32_t PrimitiveBlock::date_granularity() const {
  // @@protoc_insertion_point(field_get:OSMPBF.PrimitiveBlock.date_granularity)
  return _internal_date_granularity();
}
inline void PrimitiveBlock::set_date_granularity(::int32_t value) {
  _internal_set_date_granularity(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:OSMPBF.PrimitiveBlock.date_granularity)
}
inline ::int32_t PrimitiveBlock::_internal_date_granularity() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.date_granularity_;
}
inline void PrimitiveBlock::_internal_set_date_granularity(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.date_granularity_ = value;
}

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

// PrimitiveGroup

// repeated .OSMPBF.Node nodes = 1;
inline int PrimitiveGroup::_internal_nodes_size() const {
  return _internal_nodes().size();
}
inline int PrimitiveGroup::nodes_size() const {
  return _internal_nodes_size();
}
inline void PrimitiveGroup::clear_nodes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nodes_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::OSMPBF::Node* PROTOBUF_NONNULL PrimitiveGroup::mutable_nodes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:OSMPBF.PrimitiveGroup.nodes)
  return _internal_mutable_nodes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::OSMPBF::Node>* PROTOBUF_NONNULL PrimitiveGroup::mutable_nodes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.PrimitiveGroup.nodes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_nodes();
}
inline const ::OSMPBF::Node& PrimitiveGroup::nodes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.PrimitiveGroup.nodes)
  return _internal_nodes().Get(index);
}
inline ::OSMPBF::Node* PROTOBUF_NONNULL PrimitiveGroup::add_nodes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::OSMPBF::Node* _add =
      _internal_mutable_nodes()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:OSMPBF.PrimitiveGroup.nodes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::OSMPBF::Node>& PrimitiveGroup::nodes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.PrimitiveGroup.nodes)
  return _internal_nodes();
}
inline const ::google::protobuf::RepeatedPtrField<::OSMPBF::Node>&
PrimitiveGroup::_internal_nodes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.nodes_;
}
inline ::google::protobuf::RepeatedPtrField<::OSMPBF::Node>* PROTOBUF_NONNULL
PrimitiveGroup::_internal_mutable_nodes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.nodes_;
}

// optional .OSMPBF.DenseNodes dense = 2;
inline bool PrimitiveGroup::has_dense() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  PROTOBUF_ASSUME(!value || _impl_.dense_ != nullptr);
  return value;
}
inline void PrimitiveGroup::clear_dense() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.dense_ != nullptr) _impl_.dense_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline const ::OSMPBF::DenseNodes& PrimitiveGroup::_internal_dense() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::OSMPBF::DenseNodes* p = _impl_.dense_;
  return p != nullptr ? *p : reinterpret_cast<const ::OSMPBF::DenseNodes&>(::OSMPBF::_DenseNodes_default_instance_);
}
inline const ::OSMPBF::DenseNodes& PrimitiveGroup::dense() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.PrimitiveGroup.dense)
  return _internal_dense();
}
inline void PrimitiveGroup::unsafe_arena_set_allocated_dense(
    ::OSMPBF::DenseNodes* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.dense_);
  }
  _impl_.dense_ = reinterpret_cast<::OSMPBF::DenseNodes*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:OSMPBF.PrimitiveGroup.dense)
}
inline ::OSMPBF::DenseNodes* PROTOBUF_NULLABLE PrimitiveGroup::release_dense() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::OSMPBF::DenseNodes* released = _impl_.dense_;
  _impl_.dense_ = 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 ::OSMPBF::DenseNodes* PROTOBUF_NULLABLE PrimitiveGroup::unsafe_arena_release_dense() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:OSMPBF.PrimitiveGroup.dense)

  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::OSMPBF::DenseNodes* temp = _impl_.dense_;
  _impl_.dense_ = nullptr;
  return temp;
}
inline ::OSMPBF::DenseNodes* PROTOBUF_NONNULL PrimitiveGroup::_internal_mutable_dense() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.dense_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::OSMPBF::DenseNodes>(GetArena());
    _impl_.dense_ = reinterpret_cast<::OSMPBF::DenseNodes*>(p);
  }
  return _impl_.dense_;
}
inline ::OSMPBF::DenseNodes* PROTOBUF_NONNULL PrimitiveGroup::mutable_dense()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::OSMPBF::DenseNodes* _msg = _internal_mutable_dense();
  // @@protoc_insertion_point(field_mutable:OSMPBF.PrimitiveGroup.dense)
  return _msg;
}
inline void PrimitiveGroup::set_allocated_dense(::OSMPBF::DenseNodes* 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_.dense_);
  }

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

  _impl_.dense_ = reinterpret_cast<::OSMPBF::DenseNodes*>(value);
  // @@protoc_insertion_point(field_set_allocated:OSMPBF.PrimitiveGroup.dense)
}

// repeated .OSMPBF.Way ways = 3;
inline int PrimitiveGroup::_internal_ways_size() const {
  return _internal_ways().size();
}
inline int PrimitiveGroup::ways_size() const {
  return _internal_ways_size();
}
inline void PrimitiveGroup::clear_ways() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ways_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::OSMPBF::Way* PROTOBUF_NONNULL PrimitiveGroup::mutable_ways(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:OSMPBF.PrimitiveGroup.ways)
  return _internal_mutable_ways()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::OSMPBF::Way>* PROTOBUF_NONNULL PrimitiveGroup::mutable_ways()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.PrimitiveGroup.ways)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_ways();
}
inline const ::OSMPBF::Way& PrimitiveGroup::ways(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.PrimitiveGroup.ways)
  return _internal_ways().Get(index);
}
inline ::OSMPBF::Way* PROTOBUF_NONNULL PrimitiveGroup::add_ways()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::OSMPBF::Way* _add =
      _internal_mutable_ways()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:OSMPBF.PrimitiveGroup.ways)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::OSMPBF::Way>& PrimitiveGroup::ways() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.PrimitiveGroup.ways)
  return _internal_ways();
}
inline const ::google::protobuf::RepeatedPtrField<::OSMPBF::Way>&
PrimitiveGroup::_internal_ways() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ways_;
}
inline ::google::protobuf::RepeatedPtrField<::OSMPBF::Way>* PROTOBUF_NONNULL
PrimitiveGroup::_internal_mutable_ways() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.ways_;
}

// repeated .OSMPBF.Relation relations = 4;
inline int PrimitiveGroup::_internal_relations_size() const {
  return _internal_relations().size();
}
inline int PrimitiveGroup::relations_size() const {
  return _internal_relations_size();
}
inline void PrimitiveGroup::clear_relations() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.relations_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::OSMPBF::Relation* PROTOBUF_NONNULL PrimitiveGroup::mutable_relations(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:OSMPBF.PrimitiveGroup.relations)
  return _internal_mutable_relations()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::OSMPBF::Relation>* PROTOBUF_NONNULL PrimitiveGroup::mutable_relations()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.PrimitiveGroup.relations)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_relations();
}
inline const ::OSMPBF::Relation& PrimitiveGroup::relations(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.PrimitiveGroup.relations)
  return _internal_relations().Get(index);
}
inline ::OSMPBF::Relation* PROTOBUF_NONNULL PrimitiveGroup::add_relations()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::OSMPBF::Relation* _add =
      _internal_mutable_relations()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:OSMPBF.PrimitiveGroup.relations)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::OSMPBF::Relation>& PrimitiveGroup::relations() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.PrimitiveGroup.relations)
  return _internal_relations();
}
inline const ::google::protobuf::RepeatedPtrField<::OSMPBF::Relation>&
PrimitiveGroup::_internal_relations() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.relations_;
}
inline ::google::protobuf::RepeatedPtrField<::OSMPBF::Relation>* PROTOBUF_NONNULL
PrimitiveGroup::_internal_mutable_relations() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.relations_;
}

// repeated .OSMPBF.ChangeSet changesets = 5;
inline int PrimitiveGroup::_internal_changesets_size() const {
  return _internal_changesets().size();
}
inline int PrimitiveGroup::changesets_size() const {
  return _internal_changesets_size();
}
inline void PrimitiveGroup::clear_changesets() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.changesets_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000008U);
}
inline ::OSMPBF::ChangeSet* PROTOBUF_NONNULL PrimitiveGroup::mutable_changesets(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:OSMPBF.PrimitiveGroup.changesets)
  return _internal_mutable_changesets()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::OSMPBF::ChangeSet>* PROTOBUF_NONNULL PrimitiveGroup::mutable_changesets()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.PrimitiveGroup.changesets)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_changesets();
}
inline const ::OSMPBF::ChangeSet& PrimitiveGroup::changesets(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.PrimitiveGroup.changesets)
  return _internal_changesets().Get(index);
}
inline ::OSMPBF::ChangeSet* PROTOBUF_NONNULL PrimitiveGroup::add_changesets()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::OSMPBF::ChangeSet* _add =
      _internal_mutable_changesets()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_add:OSMPBF.PrimitiveGroup.changesets)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::OSMPBF::ChangeSet>& PrimitiveGroup::changesets() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.PrimitiveGroup.changesets)
  return _internal_changesets();
}
inline const ::google::protobuf::RepeatedPtrField<::OSMPBF::ChangeSet>&
PrimitiveGroup::_internal_changesets() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.changesets_;
}
inline ::google::protobuf::RepeatedPtrField<::OSMPBF::ChangeSet>* PROTOBUF_NONNULL
PrimitiveGroup::_internal_mutable_changesets() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.changesets_;
}

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

// StringTable

// repeated bytes s = 1;
inline int StringTable::_internal_s_size() const {
  return _internal_s().size();
}
inline int StringTable::s_size() const {
  return _internal_s_size();
}
inline void StringTable::clear_s() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL StringTable::add_s()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_s()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:OSMPBF.StringTable.s)
  return _s;
}
inline const ::std::string& StringTable::s(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.StringTable.s)
  return _internal_s().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL StringTable::mutable_s(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:OSMPBF.StringTable.s)
  return _internal_mutable_s()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void StringTable::set_s(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_s()->Mutable(index), ::std::forward<Arg_>(value),
                        args... , ::google::protobuf::internal::BytesTag{});
  // @@protoc_insertion_point(field_set:OSMPBF.StringTable.s)
}
template <typename Arg_, typename... Args_>
inline void StringTable::add_s(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_s(), ::std::forward<Arg_>(value),
      args... , ::google::protobuf::internal::BytesTag{});
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:OSMPBF.StringTable.s)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& StringTable::s()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.StringTable.s)
  return _internal_s();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
StringTable::mutable_s() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.StringTable.s)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_s();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
StringTable::_internal_s() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.s_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
StringTable::_internal_mutable_s() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.s_;
}

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

// Info

// optional int32 version = 1 [default = -1];
inline bool Info::has_version() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void Info::clear_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_ = -1;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000020U);
}
inline ::int32_t Info::version() const {
  // @@protoc_insertion_point(field_get:OSMPBF.Info.version)
  return _internal_version();
}
inline void Info::set_version(::int32_t value) {
  _internal_set_version(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:OSMPBF.Info.version)
}
inline ::int32_t Info::_internal_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.version_;
}
inline void Info::_internal_set_version(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_ = value;
}

// optional int64 timestamp = 2;
inline bool Info::has_timestamp() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void Info::clear_timestamp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.timestamp_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::int64_t Info::timestamp() const {
  // @@protoc_insertion_point(field_get:OSMPBF.Info.timestamp)
  return _internal_timestamp();
}
inline void Info::set_timestamp(::int64_t value) {
  _internal_set_timestamp(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:OSMPBF.Info.timestamp)
}
inline ::int64_t Info::_internal_timestamp() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.timestamp_;
}
inline void Info::_internal_set_timestamp(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.timestamp_ = value;
}

// optional int64 changeset = 3;
inline bool Info::has_changeset() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void Info::clear_changeset() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.changeset_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::int64_t Info::changeset() const {
  // @@protoc_insertion_point(field_get:OSMPBF.Info.changeset)
  return _internal_changeset();
}
inline void Info::set_changeset(::int64_t value) {
  _internal_set_changeset(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:OSMPBF.Info.changeset)
}
inline ::int64_t Info::_internal_changeset() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.changeset_;
}
inline void Info::_internal_set_changeset(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.changeset_ = value;
}

// optional int32 uid = 4;
inline bool Info::has_uid() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void Info::clear_uid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.uid_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::int32_t Info::uid() const {
  // @@protoc_insertion_point(field_get:OSMPBF.Info.uid)
  return _internal_uid();
}
inline void Info::set_uid(::int32_t value) {
  _internal_set_uid(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:OSMPBF.Info.uid)
}
inline ::int32_t Info::_internal_uid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.uid_;
}
inline void Info::_internal_set_uid(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.uid_ = value;
}

// optional uint32 user_sid = 5;
inline bool Info::has_user_sid() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void Info::clear_user_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.user_sid_ = 0u;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline ::uint32_t Info::user_sid() const {
  // @@protoc_insertion_point(field_get:OSMPBF.Info.user_sid)
  return _internal_user_sid();
}
inline void Info::set_user_sid(::uint32_t value) {
  _internal_set_user_sid(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:OSMPBF.Info.user_sid)
}
inline ::uint32_t Info::_internal_user_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.user_sid_;
}
inline void Info::_internal_set_user_sid(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.user_sid_ = value;
}

// optional bool visible = 6;
inline bool Info::has_visible() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void Info::clear_visible() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.visible_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline bool Info::visible() const {
  // @@protoc_insertion_point(field_get:OSMPBF.Info.visible)
  return _internal_visible();
}
inline void Info::set_visible(bool value) {
  _internal_set_visible(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:OSMPBF.Info.visible)
}
inline bool Info::_internal_visible() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.visible_;
}
inline void Info::_internal_set_visible(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.visible_ = value;
}

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

// DenseInfo

// repeated int32 version = 1 [packed = true];
inline int DenseInfo::_internal_version_size() const {
  return _internal_version().size();
}
inline int DenseInfo::version_size() const {
  return _internal_version_size();
}
inline void DenseInfo::clear_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::int32_t DenseInfo::version(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.DenseInfo.version)
  return _internal_version().Get(index);
}
inline void DenseInfo::set_version(int index, ::int32_t value) {
  _internal_mutable_version()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.DenseInfo.version)
}
inline void DenseInfo::add_version(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_version()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:OSMPBF.DenseInfo.version)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DenseInfo::version() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.DenseInfo.version)
  return _internal_version();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL DenseInfo::mutable_version()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.DenseInfo.version)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_version();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
DenseInfo::_internal_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.version_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
DenseInfo::_internal_mutable_version() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.version_;
}

// repeated sint64 timestamp = 2 [packed = true];
inline int DenseInfo::_internal_timestamp_size() const {
  return _internal_timestamp().size();
}
inline int DenseInfo::timestamp_size() const {
  return _internal_timestamp_size();
}
inline void DenseInfo::clear_timestamp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.timestamp_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::int64_t DenseInfo::timestamp(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.DenseInfo.timestamp)
  return _internal_timestamp().Get(index);
}
inline void DenseInfo::set_timestamp(int index, ::int64_t value) {
  _internal_mutable_timestamp()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.DenseInfo.timestamp)
}
inline void DenseInfo::add_timestamp(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_timestamp()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:OSMPBF.DenseInfo.timestamp)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& DenseInfo::timestamp() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.DenseInfo.timestamp)
  return _internal_timestamp();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL DenseInfo::mutable_timestamp()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.DenseInfo.timestamp)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_timestamp();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
DenseInfo::_internal_timestamp() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.timestamp_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
DenseInfo::_internal_mutable_timestamp() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.timestamp_;
}

// repeated sint64 changeset = 3 [packed = true];
inline int DenseInfo::_internal_changeset_size() const {
  return _internal_changeset().size();
}
inline int DenseInfo::changeset_size() const {
  return _internal_changeset_size();
}
inline void DenseInfo::clear_changeset() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.changeset_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::int64_t DenseInfo::changeset(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.DenseInfo.changeset)
  return _internal_changeset().Get(index);
}
inline void DenseInfo::set_changeset(int index, ::int64_t value) {
  _internal_mutable_changeset()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.DenseInfo.changeset)
}
inline void DenseInfo::add_changeset(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_changeset()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:OSMPBF.DenseInfo.changeset)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& DenseInfo::changeset() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.DenseInfo.changeset)
  return _internal_changeset();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL DenseInfo::mutable_changeset()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.DenseInfo.changeset)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_changeset();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
DenseInfo::_internal_changeset() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.changeset_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
DenseInfo::_internal_mutable_changeset() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.changeset_;
}

// repeated sint32 uid = 4 [packed = true];
inline int DenseInfo::_internal_uid_size() const {
  return _internal_uid().size();
}
inline int DenseInfo::uid_size() const {
  return _internal_uid_size();
}
inline void DenseInfo::clear_uid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.uid_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000008U);
}
inline ::int32_t DenseInfo::uid(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.DenseInfo.uid)
  return _internal_uid().Get(index);
}
inline void DenseInfo::set_uid(int index, ::int32_t value) {
  _internal_mutable_uid()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.DenseInfo.uid)
}
inline void DenseInfo::add_uid(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_uid()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_add:OSMPBF.DenseInfo.uid)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DenseInfo::uid() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.DenseInfo.uid)
  return _internal_uid();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL DenseInfo::mutable_uid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.DenseInfo.uid)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_uid();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
DenseInfo::_internal_uid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.uid_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
DenseInfo::_internal_mutable_uid() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.uid_;
}

// repeated sint32 user_sid = 5 [packed = true];
inline int DenseInfo::_internal_user_sid_size() const {
  return _internal_user_sid().size();
}
inline int DenseInfo::user_sid_size() const {
  return _internal_user_sid_size();
}
inline void DenseInfo::clear_user_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.user_sid_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000010U);
}
inline ::int32_t DenseInfo::user_sid(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.DenseInfo.user_sid)
  return _internal_user_sid().Get(index);
}
inline void DenseInfo::set_user_sid(int index, ::int32_t value) {
  _internal_mutable_user_sid()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.DenseInfo.user_sid)
}
inline void DenseInfo::add_user_sid(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_user_sid()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_add:OSMPBF.DenseInfo.user_sid)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DenseInfo::user_sid() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.DenseInfo.user_sid)
  return _internal_user_sid();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL DenseInfo::mutable_user_sid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.DenseInfo.user_sid)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_user_sid();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
DenseInfo::_internal_user_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.user_sid_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
DenseInfo::_internal_mutable_user_sid() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.user_sid_;
}

// repeated bool visible = 6 [packed = true];
inline int DenseInfo::_internal_visible_size() const {
  return _internal_visible().size();
}
inline int DenseInfo::visible_size() const {
  return _internal_visible_size();
}
inline void DenseInfo::clear_visible() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.visible_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000020U);
}
inline bool DenseInfo::visible(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.DenseInfo.visible)
  return _internal_visible().Get(index);
}
inline void DenseInfo::set_visible(int index, bool value) {
  _internal_mutable_visible()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.DenseInfo.visible)
}
inline void DenseInfo::add_visible(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_visible()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_add:OSMPBF.DenseInfo.visible)
}
inline const ::google::protobuf::RepeatedField<bool>& DenseInfo::visible() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.DenseInfo.visible)
  return _internal_visible();
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL DenseInfo::mutable_visible()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.DenseInfo.visible)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_visible();
}
inline const ::google::protobuf::RepeatedField<bool>&
DenseInfo::_internal_visible() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.visible_;
}
inline ::google::protobuf::RepeatedField<bool>* PROTOBUF_NONNULL
DenseInfo::_internal_mutable_visible() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.visible_;
}

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

// ChangeSet

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

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

// Node

// required sint64 id = 1;
inline bool Node::has_id() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void Node::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline ::int64_t Node::id() const {
  // @@protoc_insertion_point(field_get:OSMPBF.Node.id)
  return _internal_id();
}
inline void Node::set_id(::int64_t value) {
  _internal_set_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:OSMPBF.Node.id)
}
inline ::int64_t Node::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_;
}
inline void Node::_internal_set_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = value;
}

// repeated uint32 keys = 2 [packed = true];
inline int Node::_internal_keys_size() const {
  return _internal_keys().size();
}
inline int Node::keys_size() const {
  return _internal_keys_size();
}
inline void Node::clear_keys() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.keys_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::uint32_t Node::keys(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Node.keys)
  return _internal_keys().Get(index);
}
inline void Node::set_keys(int index, ::uint32_t value) {
  _internal_mutable_keys()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Node.keys)
}
inline void Node::add_keys(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_keys()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:OSMPBF.Node.keys)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& Node::keys() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Node.keys)
  return _internal_keys();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL Node::mutable_keys()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Node.keys)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_keys();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
Node::_internal_keys() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.keys_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
Node::_internal_mutable_keys() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.keys_;
}

// repeated uint32 vals = 3 [packed = true];
inline int Node::_internal_vals_size() const {
  return _internal_vals().size();
}
inline int Node::vals_size() const {
  return _internal_vals_size();
}
inline void Node::clear_vals() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vals_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::uint32_t Node::vals(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Node.vals)
  return _internal_vals().Get(index);
}
inline void Node::set_vals(int index, ::uint32_t value) {
  _internal_mutable_vals()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Node.vals)
}
inline void Node::add_vals(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_vals()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:OSMPBF.Node.vals)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& Node::vals() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Node.vals)
  return _internal_vals();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL Node::mutable_vals()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Node.vals)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_vals();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
Node::_internal_vals() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.vals_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
Node::_internal_mutable_vals() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.vals_;
}

// optional .OSMPBF.Info info = 4;
inline bool Node::has_info() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.info_ != nullptr);
  return value;
}
inline void Node::clear_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.info_ != nullptr) _impl_.info_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::OSMPBF::Info& Node::_internal_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::OSMPBF::Info* p = _impl_.info_;
  return p != nullptr ? *p : reinterpret_cast<const ::OSMPBF::Info&>(::OSMPBF::_Info_default_instance_);
}
inline const ::OSMPBF::Info& Node::info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.Node.info)
  return _internal_info();
}
inline void Node::unsafe_arena_set_allocated_info(
    ::OSMPBF::Info* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.info_);
  }
  _impl_.info_ = reinterpret_cast<::OSMPBF::Info*>(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:OSMPBF.Node.info)
}
inline ::OSMPBF::Info* PROTOBUF_NULLABLE Node::release_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::OSMPBF::Info* released = _impl_.info_;
  _impl_.info_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::OSMPBF::Info* PROTOBUF_NULLABLE Node::unsafe_arena_release_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:OSMPBF.Node.info)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::OSMPBF::Info* temp = _impl_.info_;
  _impl_.info_ = nullptr;
  return temp;
}
inline ::OSMPBF::Info* PROTOBUF_NONNULL Node::_internal_mutable_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.info_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::OSMPBF::Info>(GetArena());
    _impl_.info_ = reinterpret_cast<::OSMPBF::Info*>(p);
  }
  return _impl_.info_;
}
inline ::OSMPBF::Info* PROTOBUF_NONNULL Node::mutable_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::OSMPBF::Info* _msg = _internal_mutable_info();
  // @@protoc_insertion_point(field_mutable:OSMPBF.Node.info)
  return _msg;
}
inline void Node::set_allocated_info(::OSMPBF::Info* 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_.info_);
  }

  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_.info_ = reinterpret_cast<::OSMPBF::Info*>(value);
  // @@protoc_insertion_point(field_set_allocated:OSMPBF.Node.info)
}

// required sint64 lat = 8;
inline bool Node::has_lat() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void Node::clear_lat() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lat_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline ::int64_t Node::lat() const {
  // @@protoc_insertion_point(field_get:OSMPBF.Node.lat)
  return _internal_lat();
}
inline void Node::set_lat(::int64_t value) {
  _internal_set_lat(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:OSMPBF.Node.lat)
}
inline ::int64_t Node::_internal_lat() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lat_;
}
inline void Node::_internal_set_lat(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lat_ = value;
}

// required sint64 lon = 9;
inline bool Node::has_lon() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void Node::clear_lon() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lon_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000020U);
}
inline ::int64_t Node::lon() const {
  // @@protoc_insertion_point(field_get:OSMPBF.Node.lon)
  return _internal_lon();
}
inline void Node::set_lon(::int64_t value) {
  _internal_set_lon(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:OSMPBF.Node.lon)
}
inline ::int64_t Node::_internal_lon() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lon_;
}
inline void Node::_internal_set_lon(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lon_ = value;
}

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

// DenseNodes

// repeated sint64 id = 1 [packed = true];
inline int DenseNodes::_internal_id_size() const {
  return _internal_id().size();
}
inline int DenseNodes::id_size() const {
  return _internal_id_size();
}
inline void DenseNodes::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::int64_t DenseNodes::id(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.DenseNodes.id)
  return _internal_id().Get(index);
}
inline void DenseNodes::set_id(int index, ::int64_t value) {
  _internal_mutable_id()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.DenseNodes.id)
}
inline void DenseNodes::add_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_id()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:OSMPBF.DenseNodes.id)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& DenseNodes::id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.DenseNodes.id)
  return _internal_id();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL DenseNodes::mutable_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.DenseNodes.id)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_id();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
DenseNodes::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
DenseNodes::_internal_mutable_id() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.id_;
}

// optional .OSMPBF.DenseInfo denseinfo = 5;
inline bool DenseNodes::has_denseinfo() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  PROTOBUF_ASSUME(!value || _impl_.denseinfo_ != nullptr);
  return value;
}
inline void DenseNodes::clear_denseinfo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.denseinfo_ != nullptr) _impl_.denseinfo_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline const ::OSMPBF::DenseInfo& DenseNodes::_internal_denseinfo() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::OSMPBF::DenseInfo* p = _impl_.denseinfo_;
  return p != nullptr ? *p : reinterpret_cast<const ::OSMPBF::DenseInfo&>(::OSMPBF::_DenseInfo_default_instance_);
}
inline const ::OSMPBF::DenseInfo& DenseNodes::denseinfo() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.DenseNodes.denseinfo)
  return _internal_denseinfo();
}
inline void DenseNodes::unsafe_arena_set_allocated_denseinfo(
    ::OSMPBF::DenseInfo* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.denseinfo_);
  }
  _impl_.denseinfo_ = reinterpret_cast<::OSMPBF::DenseInfo*>(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:OSMPBF.DenseNodes.denseinfo)
}
inline ::OSMPBF::DenseInfo* PROTOBUF_NULLABLE DenseNodes::release_denseinfo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::OSMPBF::DenseInfo* released = _impl_.denseinfo_;
  _impl_.denseinfo_ = 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 ::OSMPBF::DenseInfo* PROTOBUF_NULLABLE DenseNodes::unsafe_arena_release_denseinfo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:OSMPBF.DenseNodes.denseinfo)

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::OSMPBF::DenseInfo* temp = _impl_.denseinfo_;
  _impl_.denseinfo_ = nullptr;
  return temp;
}
inline ::OSMPBF::DenseInfo* PROTOBUF_NONNULL DenseNodes::_internal_mutable_denseinfo() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.denseinfo_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::OSMPBF::DenseInfo>(GetArena());
    _impl_.denseinfo_ = reinterpret_cast<::OSMPBF::DenseInfo*>(p);
  }
  return _impl_.denseinfo_;
}
inline ::OSMPBF::DenseInfo* PROTOBUF_NONNULL DenseNodes::mutable_denseinfo()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::OSMPBF::DenseInfo* _msg = _internal_mutable_denseinfo();
  // @@protoc_insertion_point(field_mutable:OSMPBF.DenseNodes.denseinfo)
  return _msg;
}
inline void DenseNodes::set_allocated_denseinfo(::OSMPBF::DenseInfo* 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_.denseinfo_);
  }

  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_.denseinfo_ = reinterpret_cast<::OSMPBF::DenseInfo*>(value);
  // @@protoc_insertion_point(field_set_allocated:OSMPBF.DenseNodes.denseinfo)
}

// repeated sint64 lat = 8 [packed = true];
inline int DenseNodes::_internal_lat_size() const {
  return _internal_lat().size();
}
inline int DenseNodes::lat_size() const {
  return _internal_lat_size();
}
inline void DenseNodes::clear_lat() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lat_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::int64_t DenseNodes::lat(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.DenseNodes.lat)
  return _internal_lat().Get(index);
}
inline void DenseNodes::set_lat(int index, ::int64_t value) {
  _internal_mutable_lat()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.DenseNodes.lat)
}
inline void DenseNodes::add_lat(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_lat()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:OSMPBF.DenseNodes.lat)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& DenseNodes::lat() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.DenseNodes.lat)
  return _internal_lat();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL DenseNodes::mutable_lat()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.DenseNodes.lat)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_lat();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
DenseNodes::_internal_lat() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lat_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
DenseNodes::_internal_mutable_lat() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.lat_;
}

// repeated sint64 lon = 9 [packed = true];
inline int DenseNodes::_internal_lon_size() const {
  return _internal_lon().size();
}
inline int DenseNodes::lon_size() const {
  return _internal_lon_size();
}
inline void DenseNodes::clear_lon() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lon_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000010U);
}
inline ::int64_t DenseNodes::lon(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.DenseNodes.lon)
  return _internal_lon().Get(index);
}
inline void DenseNodes::set_lon(int index, ::int64_t value) {
  _internal_mutable_lon()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.DenseNodes.lon)
}
inline void DenseNodes::add_lon(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_lon()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_add:OSMPBF.DenseNodes.lon)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& DenseNodes::lon() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.DenseNodes.lon)
  return _internal_lon();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL DenseNodes::mutable_lon()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.DenseNodes.lon)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_lon();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
DenseNodes::_internal_lon() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lon_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
DenseNodes::_internal_mutable_lon() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.lon_;
}

// repeated int32 keys_vals = 10 [packed = true];
inline int DenseNodes::_internal_keys_vals_size() const {
  return _internal_keys_vals().size();
}
inline int DenseNodes::keys_vals_size() const {
  return _internal_keys_vals_size();
}
inline void DenseNodes::clear_keys_vals() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.keys_vals_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::int32_t DenseNodes::keys_vals(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.DenseNodes.keys_vals)
  return _internal_keys_vals().Get(index);
}
inline void DenseNodes::set_keys_vals(int index, ::int32_t value) {
  _internal_mutable_keys_vals()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.DenseNodes.keys_vals)
}
inline void DenseNodes::add_keys_vals(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_keys_vals()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:OSMPBF.DenseNodes.keys_vals)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DenseNodes::keys_vals() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.DenseNodes.keys_vals)
  return _internal_keys_vals();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL DenseNodes::mutable_keys_vals()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.DenseNodes.keys_vals)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_keys_vals();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
DenseNodes::_internal_keys_vals() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.keys_vals_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
DenseNodes::_internal_mutable_keys_vals() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.keys_vals_;
}

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

// Way

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

// repeated uint32 keys = 2 [packed = true];
inline int Way::_internal_keys_size() const {
  return _internal_keys().size();
}
inline int Way::keys_size() const {
  return _internal_keys_size();
}
inline void Way::clear_keys() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.keys_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::uint32_t Way::keys(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Way.keys)
  return _internal_keys().Get(index);
}
inline void Way::set_keys(int index, ::uint32_t value) {
  _internal_mutable_keys()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Way.keys)
}
inline void Way::add_keys(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_keys()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:OSMPBF.Way.keys)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& Way::keys() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Way.keys)
  return _internal_keys();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL Way::mutable_keys()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Way.keys)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_keys();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
Way::_internal_keys() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.keys_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
Way::_internal_mutable_keys() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.keys_;
}

// repeated uint32 vals = 3 [packed = true];
inline int Way::_internal_vals_size() const {
  return _internal_vals().size();
}
inline int Way::vals_size() const {
  return _internal_vals_size();
}
inline void Way::clear_vals() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vals_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::uint32_t Way::vals(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Way.vals)
  return _internal_vals().Get(index);
}
inline void Way::set_vals(int index, ::uint32_t value) {
  _internal_mutable_vals()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Way.vals)
}
inline void Way::add_vals(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_vals()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:OSMPBF.Way.vals)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& Way::vals() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Way.vals)
  return _internal_vals();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL Way::mutable_vals()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Way.vals)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_vals();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
Way::_internal_vals() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.vals_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
Way::_internal_mutable_vals() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.vals_;
}

// optional .OSMPBF.Info info = 4;
inline bool Way::has_info() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  PROTOBUF_ASSUME(!value || _impl_.info_ != nullptr);
  return value;
}
inline void Way::clear_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.info_ != nullptr) _impl_.info_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline const ::OSMPBF::Info& Way::_internal_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::OSMPBF::Info* p = _impl_.info_;
  return p != nullptr ? *p : reinterpret_cast<const ::OSMPBF::Info&>(::OSMPBF::_Info_default_instance_);
}
inline const ::OSMPBF::Info& Way::info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.Way.info)
  return _internal_info();
}
inline void Way::unsafe_arena_set_allocated_info(
    ::OSMPBF::Info* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.info_);
  }
  _impl_.info_ = reinterpret_cast<::OSMPBF::Info*>(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:OSMPBF.Way.info)
}
inline ::OSMPBF::Info* PROTOBUF_NULLABLE Way::release_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::OSMPBF::Info* released = _impl_.info_;
  _impl_.info_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::OSMPBF::Info* PROTOBUF_NULLABLE Way::unsafe_arena_release_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:OSMPBF.Way.info)

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::OSMPBF::Info* temp = _impl_.info_;
  _impl_.info_ = nullptr;
  return temp;
}
inline ::OSMPBF::Info* PROTOBUF_NONNULL Way::_internal_mutable_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.info_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::OSMPBF::Info>(GetArena());
    _impl_.info_ = reinterpret_cast<::OSMPBF::Info*>(p);
  }
  return _impl_.info_;
}
inline ::OSMPBF::Info* PROTOBUF_NONNULL Way::mutable_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::OSMPBF::Info* _msg = _internal_mutable_info();
  // @@protoc_insertion_point(field_mutable:OSMPBF.Way.info)
  return _msg;
}
inline void Way::set_allocated_info(::OSMPBF::Info* 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_.info_);
  }

  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_.info_ = reinterpret_cast<::OSMPBF::Info*>(value);
  // @@protoc_insertion_point(field_set_allocated:OSMPBF.Way.info)
}

// repeated sint64 refs = 8 [packed = true];
inline int Way::_internal_refs_size() const {
  return _internal_refs().size();
}
inline int Way::refs_size() const {
  return _internal_refs_size();
}
inline void Way::clear_refs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.refs_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::int64_t Way::refs(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Way.refs)
  return _internal_refs().Get(index);
}
inline void Way::set_refs(int index, ::int64_t value) {
  _internal_mutable_refs()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Way.refs)
}
inline void Way::add_refs(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_refs()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:OSMPBF.Way.refs)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& Way::refs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Way.refs)
  return _internal_refs();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL Way::mutable_refs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Way.refs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_refs();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
Way::_internal_refs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.refs_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
Way::_internal_mutable_refs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.refs_;
}

// repeated sint64 lat = 9 [packed = true];
inline int Way::_internal_lat_size() const {
  return _internal_lat().size();
}
inline int Way::lat_size() const {
  return _internal_lat_size();
}
inline void Way::clear_lat() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lat_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000020U);
}
inline ::int64_t Way::lat(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Way.lat)
  return _internal_lat().Get(index);
}
inline void Way::set_lat(int index, ::int64_t value) {
  _internal_mutable_lat()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Way.lat)
}
inline void Way::add_lat(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_lat()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_add:OSMPBF.Way.lat)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& Way::lat() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Way.lat)
  return _internal_lat();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL Way::mutable_lat()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Way.lat)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_lat();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
Way::_internal_lat() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lat_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
Way::_internal_mutable_lat() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.lat_;
}

// repeated sint64 lon = 10 [packed = true];
inline int Way::_internal_lon_size() const {
  return _internal_lon().size();
}
inline int Way::lon_size() const {
  return _internal_lon_size();
}
inline void Way::clear_lon() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lon_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000040U);
}
inline ::int64_t Way::lon(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Way.lon)
  return _internal_lon().Get(index);
}
inline void Way::set_lon(int index, ::int64_t value) {
  _internal_mutable_lon()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Way.lon)
}
inline void Way::add_lon(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_lon()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_add:OSMPBF.Way.lon)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& Way::lon() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Way.lon)
  return _internal_lon();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL Way::mutable_lon()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Way.lon)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_lon();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
Way::_internal_lon() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lon_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
Way::_internal_mutable_lon() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.lon_;
}

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

// Relation

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

// repeated uint32 keys = 2 [packed = true];
inline int Relation::_internal_keys_size() const {
  return _internal_keys().size();
}
inline int Relation::keys_size() const {
  return _internal_keys_size();
}
inline void Relation::clear_keys() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.keys_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::uint32_t Relation::keys(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Relation.keys)
  return _internal_keys().Get(index);
}
inline void Relation::set_keys(int index, ::uint32_t value) {
  _internal_mutable_keys()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Relation.keys)
}
inline void Relation::add_keys(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_keys()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:OSMPBF.Relation.keys)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& Relation::keys() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Relation.keys)
  return _internal_keys();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL Relation::mutable_keys()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Relation.keys)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_keys();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
Relation::_internal_keys() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.keys_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
Relation::_internal_mutable_keys() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.keys_;
}

// repeated uint32 vals = 3 [packed = true];
inline int Relation::_internal_vals_size() const {
  return _internal_vals().size();
}
inline int Relation::vals_size() const {
  return _internal_vals_size();
}
inline void Relation::clear_vals() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vals_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::uint32_t Relation::vals(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Relation.vals)
  return _internal_vals().Get(index);
}
inline void Relation::set_vals(int index, ::uint32_t value) {
  _internal_mutable_vals()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Relation.vals)
}
inline void Relation::add_vals(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_vals()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:OSMPBF.Relation.vals)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& Relation::vals() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Relation.vals)
  return _internal_vals();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL Relation::mutable_vals()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Relation.vals)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_vals();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
Relation::_internal_vals() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.vals_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
Relation::_internal_mutable_vals() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.vals_;
}

// optional .OSMPBF.Info info = 4;
inline bool Relation::has_info() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  PROTOBUF_ASSUME(!value || _impl_.info_ != nullptr);
  return value;
}
inline void Relation::clear_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.info_ != nullptr) _impl_.info_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline const ::OSMPBF::Info& Relation::_internal_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::OSMPBF::Info* p = _impl_.info_;
  return p != nullptr ? *p : reinterpret_cast<const ::OSMPBF::Info&>(::OSMPBF::_Info_default_instance_);
}
inline const ::OSMPBF::Info& Relation::info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:OSMPBF.Relation.info)
  return _internal_info();
}
inline void Relation::unsafe_arena_set_allocated_info(
    ::OSMPBF::Info* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.info_);
  }
  _impl_.info_ = reinterpret_cast<::OSMPBF::Info*>(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:OSMPBF.Relation.info)
}
inline ::OSMPBF::Info* PROTOBUF_NULLABLE Relation::release_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::OSMPBF::Info* released = _impl_.info_;
  _impl_.info_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::OSMPBF::Info* PROTOBUF_NULLABLE Relation::unsafe_arena_release_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:OSMPBF.Relation.info)

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::OSMPBF::Info* temp = _impl_.info_;
  _impl_.info_ = nullptr;
  return temp;
}
inline ::OSMPBF::Info* PROTOBUF_NONNULL Relation::_internal_mutable_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.info_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::OSMPBF::Info>(GetArena());
    _impl_.info_ = reinterpret_cast<::OSMPBF::Info*>(p);
  }
  return _impl_.info_;
}
inline ::OSMPBF::Info* PROTOBUF_NONNULL Relation::mutable_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::OSMPBF::Info* _msg = _internal_mutable_info();
  // @@protoc_insertion_point(field_mutable:OSMPBF.Relation.info)
  return _msg;
}
inline void Relation::set_allocated_info(::OSMPBF::Info* 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_.info_);
  }

  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_.info_ = reinterpret_cast<::OSMPBF::Info*>(value);
  // @@protoc_insertion_point(field_set_allocated:OSMPBF.Relation.info)
}

// repeated int32 roles_sid = 8 [packed = true];
inline int Relation::_internal_roles_sid_size() const {
  return _internal_roles_sid().size();
}
inline int Relation::roles_sid_size() const {
  return _internal_roles_sid_size();
}
inline void Relation::clear_roles_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.roles_sid_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::int32_t Relation::roles_sid(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Relation.roles_sid)
  return _internal_roles_sid().Get(index);
}
inline void Relation::set_roles_sid(int index, ::int32_t value) {
  _internal_mutable_roles_sid()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Relation.roles_sid)
}
inline void Relation::add_roles_sid(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_roles_sid()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:OSMPBF.Relation.roles_sid)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& Relation::roles_sid() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Relation.roles_sid)
  return _internal_roles_sid();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL Relation::mutable_roles_sid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Relation.roles_sid)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_roles_sid();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
Relation::_internal_roles_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.roles_sid_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
Relation::_internal_mutable_roles_sid() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.roles_sid_;
}

// repeated sint64 memids = 9 [packed = true];
inline int Relation::_internal_memids_size() const {
  return _internal_memids().size();
}
inline int Relation::memids_size() const {
  return _internal_memids_size();
}
inline void Relation::clear_memids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.memids_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000020U);
}
inline ::int64_t Relation::memids(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Relation.memids)
  return _internal_memids().Get(index);
}
inline void Relation::set_memids(int index, ::int64_t value) {
  _internal_mutable_memids()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Relation.memids)
}
inline void Relation::add_memids(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_memids()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_add:OSMPBF.Relation.memids)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& Relation::memids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Relation.memids)
  return _internal_memids();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL Relation::mutable_memids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Relation.memids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_memids();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
Relation::_internal_memids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.memids_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
Relation::_internal_mutable_memids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.memids_;
}

// repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];
inline int Relation::_internal_types_size() const {
  return _internal_types().size();
}
inline int Relation::types_size() const {
  return _internal_types_size();
}
inline void Relation::clear_types() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.types_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000040U);
}
inline ::OSMPBF::Relation_MemberType Relation::types(int index) const {
  // @@protoc_insertion_point(field_get:OSMPBF.Relation.types)
  return static_cast<::OSMPBF::Relation_MemberType>(_internal_types().Get(index));
}
inline void Relation::set_types(int index, ::OSMPBF::Relation_MemberType value) {

                                          assert(::google::protobuf::internal::ValidateEnum(
                                              value, ::OSMPBF::Relation_MemberType_internal_data_));
                                          _internal_mutable_types()->Set(index, value);
  // @@protoc_insertion_point(field_set:OSMPBF.Relation.types)
}
inline void Relation::add_types(::OSMPBF::Relation_MemberType value) {

                                          assert(::google::protobuf::internal::ValidateEnum(
                                              value, ::OSMPBF::Relation_MemberType_internal_data_));
                                          ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_types()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_add:OSMPBF.Relation.types)
}
inline const ::google::protobuf::RepeatedField<int>& Relation::types() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:OSMPBF.Relation.types)
  return _internal_types();
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL Relation::mutable_types()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_mutable_list:OSMPBF.Relation.types)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_types();
}
inline const ::google::protobuf::RepeatedField<int>& Relation::_internal_types()
    const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.types_;
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL
Relation::_internal_mutable_types() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.types_;
}

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

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


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::OSMPBF::Relation_MemberType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::OSMPBF::Relation_MemberType>() {
  return ::OSMPBF::Relation_MemberType_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // osmformat_2eproto_2epb_2eh
