openCACAO_CacaoBeacon/src/proto/Tek.cs
// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: tek.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace OpenCacao.CacaoBeacon {

  /// <summary>Holder for reflection information generated from tek.proto</summary>
  public static partial class TekReflection {

    #region Descriptor
    /// <summary>File descriptor for tek.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static TekReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Cgl0ZWsucHJvdG8i/gEKGlRlbXBvcmFyeUV4cG9zdXJlS2V5RXhwb3J0EhcK",
            "D3N0YXJ0X3RpbWVzdGFtcBgBIAEoBhIVCg1lbmRfdGltZXN0YW1wGAIgASgG",
            "Eg4KBnJlZ2lvbhgDIAEoCRIRCgliYXRjaF9udW0YBCABKAUSEgoKYmF0Y2hf",
            "c2l6ZRgFIAEoBRInCg9zaWduYXR1cmVfaW5mb3MYBiADKAsyDi5TaWduYXR1",
            "cmVJbmZvEiMKBGtleXMYByADKAsyFS5UZW1wb3JhcnlFeHBvc3VyZUtleRIr",
            "CgxyZXZpc2VkX2tleXMYCCADKAsyFS5UZW1wb3JhcnlFeHBvc3VyZUtleSKX",
            "AQoNU2lnbmF0dXJlSW5mbxIgChh2ZXJpZmljYXRpb25fa2V5X3ZlcnNpb24Y",
            "AyABKAkSGwoTdmVyaWZpY2F0aW9uX2tleV9pZBgEIAEoCRIbChNzaWduYXR1",
            "cmVfYWxnb3JpdGhtGAUgASgJSgQIARACSgQIAhADUg1hcHBfYnVuZGxlX2lk",
            "Ug9hbmRyb2lkX3BhY2thZ2Ui7AIKFFRlbXBvcmFyeUV4cG9zdXJlS2V5EhAK",
            "CGtleV9kYXRhGAEgASgMEiMKF3RyYW5zbWlzc2lvbl9yaXNrX2xldmVsGAIg",
            "ASgFQgIYARIlCh1yb2xsaW5nX3N0YXJ0X2ludGVydmFsX251bWJlchgDIAEo",
            "BRIbCg5yb2xsaW5nX3BlcmlvZBgEIAEoBToDMTQ0EjUKC3JlcG9ydF90eXBl",
            "GAUgASgOMiAuVGVtcG9yYXJ5RXhwb3N1cmVLZXkuUmVwb3J0VHlwZRIkChxk",
            "YXlzX3NpbmNlX29uc2V0X29mX3N5bXB0b21zGAYgASgRInwKClJlcG9ydFR5",
            "cGUSCwoHVU5LTk9XThAAEhIKDkNPTkZJUk1FRF9URVNUEAESIAocQ09ORklS",
            "TUVEX0NMSU5JQ0FMX0RJQUdOT1NJUxACEg8KC1NFTEZfUkVQT1JUEAMSDQoJ",
            "UkVDVVJTSVZFEAQSCwoHUkVWT0tFRBAFIjUKEFRFS1NpZ25hdHVyZUxpc3QS",
            "IQoKc2lnbmF0dXJlcxgBIAMoCzINLlRFS1NpZ25hdHVyZSJwCgxURUtTaWdu",
            "YXR1cmUSJgoOc2lnbmF0dXJlX2luZm8YASABKAsyDi5TaWduYXR1cmVJbmZv",
            "EhEKCWJhdGNoX251bRgCIAEoBRISCgpiYXRjaF9zaXplGAMgASgFEhEKCXNp",
            "Z25hdHVyZRgEIAEoDEIYqgIVT3BlbkNhY2FvLkNhY2FvQmVhY29u"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::OpenCacao.CacaoBeacon.TemporaryExposureKeyExport), global::OpenCacao.CacaoBeacon.TemporaryExposureKeyExport.Parser, new[]{ "StartTimestamp", "EndTimestamp", "Region", "BatchNum", "BatchSize", "SignatureInfos", "Keys", "RevisedKeys" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::OpenCacao.CacaoBeacon.SignatureInfo), global::OpenCacao.CacaoBeacon.SignatureInfo.Parser, new[]{ "VerificationKeyVersion", "VerificationKeyId", "SignatureAlgorithm" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::OpenCacao.CacaoBeacon.TemporaryExposureKey), global::OpenCacao.CacaoBeacon.TemporaryExposureKey.Parser, new[]{ "KeyData", "TransmissionRiskLevel", "RollingStartIntervalNumber", "RollingPeriod", "ReportType", "DaysSinceOnsetOfSymptoms" }, null, new[]{ typeof(global::OpenCacao.CacaoBeacon.TemporaryExposureKey.Types.ReportType) }, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::OpenCacao.CacaoBeacon.TEKSignatureList), global::OpenCacao.CacaoBeacon.TEKSignatureList.Parser, new[]{ "Signatures" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::OpenCacao.CacaoBeacon.TEKSignature), global::OpenCacao.CacaoBeacon.TEKSignature.Parser, new[]{ "SignatureInfo", "BatchNum", "BatchSize", "Signature" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  public sealed partial class TemporaryExposureKeyExport : pb::IMessage<TemporaryExposureKeyExport>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TemporaryExposureKeyExport> _parser = new pb::MessageParser<TemporaryExposureKeyExport>(() => new TemporaryExposureKeyExport());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TemporaryExposureKeyExport> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::OpenCacao.CacaoBeacon.TekReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TemporaryExposureKeyExport() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TemporaryExposureKeyExport(TemporaryExposureKeyExport other) : this() {
      _hasBits0 = other._hasBits0;
      startTimestamp_ = other.startTimestamp_;
      endTimestamp_ = other.endTimestamp_;
      region_ = other.region_;
      batchNum_ = other.batchNum_;
      batchSize_ = other.batchSize_;
      signatureInfos_ = other.signatureInfos_.Clone();
      keys_ = other.keys_.Clone();
      revisedKeys_ = other.revisedKeys_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TemporaryExposureKeyExport Clone() {
      return new TemporaryExposureKeyExport(this);
    }

    /// <summary>Field number for the "start_timestamp" field.</summary>
    public const int StartTimestampFieldNumber = 1;
    private readonly static ulong StartTimestampDefaultValue = 0UL;

    private ulong startTimestamp_;
    /// <summary>
    /// Time window of keys in this batch based on arrival to server, in UTC seconds.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong StartTimestamp {
      get { if ((_hasBits0 & 1) != 0) { return startTimestamp_; } else { return StartTimestampDefaultValue; } }
      set {
        _hasBits0 |= 1;
        startTimestamp_ = value;
      }
    }
    /// <summary>Gets whether the "start_timestamp" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasStartTimestamp {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "start_timestamp" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearStartTimestamp() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "end_timestamp" field.</summary>
    public const int EndTimestampFieldNumber = 2;
    private readonly static ulong EndTimestampDefaultValue = 0UL;

    private ulong endTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong EndTimestamp {
      get { if ((_hasBits0 & 2) != 0) { return endTimestamp_; } else { return EndTimestampDefaultValue; } }
      set {
        _hasBits0 |= 2;
        endTimestamp_ = value;
      }
    }
    /// <summary>Gets whether the "end_timestamp" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasEndTimestamp {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "end_timestamp" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearEndTimestamp() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "region" field.</summary>
    public const int RegionFieldNumber = 3;
    private readonly static string RegionDefaultValue = "";

    private string region_;
    /// <summary>
    /// Region for which these keys came from, such as country.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Region {
      get { return region_ ?? RegionDefaultValue; }
      set {
        region_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "region" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasRegion {
      get { return region_ != null; }
    }
    /// <summary>Clears the value of the "region" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearRegion() {
      region_ = null;
    }

    /// <summary>Field number for the "batch_num" field.</summary>
    public const int BatchNumFieldNumber = 4;
    private readonly static int BatchNumDefaultValue = 0;

    private int batchNum_;
    /// <summary>
    /// For example, file 2 in batch size of 10. Ordinal, 1-based numbering.
    /// Note: Not yet supported on iOS.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BatchNum {
      get { if ((_hasBits0 & 4) != 0) { return batchNum_; } else { return BatchNumDefaultValue; } }
      set {
        _hasBits0 |= 4;
        batchNum_ = value;
      }
    }
    /// <summary>Gets whether the "batch_num" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBatchNum {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "batch_num" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBatchNum() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "batch_size" field.</summary>
    public const int BatchSizeFieldNumber = 5;
    private readonly static int BatchSizeDefaultValue = 0;

    private int batchSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BatchSize {
      get { if ((_hasBits0 & 8) != 0) { return batchSize_; } else { return BatchSizeDefaultValue; } }
      set {
        _hasBits0 |= 8;
        batchSize_ = value;
      }
    }
    /// <summary>Gets whether the "batch_size" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBatchSize {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "batch_size" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBatchSize() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "signature_infos" field.</summary>
    public const int SignatureInfosFieldNumber = 6;
    private static readonly pb::FieldCodec<global::OpenCacao.CacaoBeacon.SignatureInfo> _repeated_signatureInfos_codec
        = pb::FieldCodec.ForMessage(50, global::OpenCacao.CacaoBeacon.SignatureInfo.Parser);
    private readonly pbc::RepeatedField<global::OpenCacao.CacaoBeacon.SignatureInfo> signatureInfos_ = new pbc::RepeatedField<global::OpenCacao.CacaoBeacon.SignatureInfo>();
    /// <summary>
    /// Information about associated signatures
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::OpenCacao.CacaoBeacon.SignatureInfo> SignatureInfos {
      get { return signatureInfos_; }
    }

    /// <summary>Field number for the "keys" field.</summary>
    public const int KeysFieldNumber = 7;
    private static readonly pb::FieldCodec<global::OpenCacao.CacaoBeacon.TemporaryExposureKey> _repeated_keys_codec
        = pb::FieldCodec.ForMessage(58, global::OpenCacao.CacaoBeacon.TemporaryExposureKey.Parser);
    private readonly pbc::RepeatedField<global::OpenCacao.CacaoBeacon.TemporaryExposureKey> keys_ = new pbc::RepeatedField<global::OpenCacao.CacaoBeacon.TemporaryExposureKey>();
    /// <summary>
    /// The TemporaryExposureKeys for initial release of keys.
    /// Keys should be included in this list for initial release,
    /// whereas revised or revoked keys should go in revised_keys.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::OpenCacao.CacaoBeacon.TemporaryExposureKey> Keys {
      get { return keys_; }
    }

    /// <summary>Field number for the "revised_keys" field.</summary>
    public const int RevisedKeysFieldNumber = 8;
    private static readonly pb::FieldCodec<global::OpenCacao.CacaoBeacon.TemporaryExposureKey> _repeated_revisedKeys_codec
        = pb::FieldCodec.ForMessage(66, global::OpenCacao.CacaoBeacon.TemporaryExposureKey.Parser);
    private readonly pbc::RepeatedField<global::OpenCacao.CacaoBeacon.TemporaryExposureKey> revisedKeys_ = new pbc::RepeatedField<global::OpenCacao.CacaoBeacon.TemporaryExposureKey>();
    /// <summary>
    /// TemporaryExposureKeys that have changed status.
    /// Keys should be included in this list if they have changed status
    /// or have been revoked.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::OpenCacao.CacaoBeacon.TemporaryExposureKey> RevisedKeys {
      get { return revisedKeys_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as TemporaryExposureKeyExport);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TemporaryExposureKeyExport other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (StartTimestamp != other.StartTimestamp) return false;
      if (EndTimestamp != other.EndTimestamp) return false;
      if (Region != other.Region) return false;
      if (BatchNum != other.BatchNum) return false;
      if (BatchSize != other.BatchSize) return false;
      if(!signatureInfos_.Equals(other.signatureInfos_)) return false;
      if(!keys_.Equals(other.keys_)) return false;
      if(!revisedKeys_.Equals(other.revisedKeys_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (HasStartTimestamp) hash ^= StartTimestamp.GetHashCode();
      if (HasEndTimestamp) hash ^= EndTimestamp.GetHashCode();
      if (HasRegion) hash ^= Region.GetHashCode();
      if (HasBatchNum) hash ^= BatchNum.GetHashCode();
      if (HasBatchSize) hash ^= BatchSize.GetHashCode();
      hash ^= signatureInfos_.GetHashCode();
      hash ^= keys_.GetHashCode();
      hash ^= revisedKeys_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (HasStartTimestamp) {
        output.WriteRawTag(9);
        output.WriteFixed64(StartTimestamp);
      }
      if (HasEndTimestamp) {
        output.WriteRawTag(17);
        output.WriteFixed64(EndTimestamp);
      }
      if (HasRegion) {
        output.WriteRawTag(26);
        output.WriteString(Region);
      }
      if (HasBatchNum) {
        output.WriteRawTag(32);
        output.WriteInt32(BatchNum);
      }
      if (HasBatchSize) {
        output.WriteRawTag(40);
        output.WriteInt32(BatchSize);
      }
      signatureInfos_.WriteTo(output, _repeated_signatureInfos_codec);
      keys_.WriteTo(output, _repeated_keys_codec);
      revisedKeys_.WriteTo(output, _repeated_revisedKeys_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (HasStartTimestamp) {
        output.WriteRawTag(9);
        output.WriteFixed64(StartTimestamp);
      }
      if (HasEndTimestamp) {
        output.WriteRawTag(17);
        output.WriteFixed64(EndTimestamp);
      }
      if (HasRegion) {
        output.WriteRawTag(26);
        output.WriteString(Region);
      }
      if (HasBatchNum) {
        output.WriteRawTag(32);
        output.WriteInt32(BatchNum);
      }
      if (HasBatchSize) {
        output.WriteRawTag(40);
        output.WriteInt32(BatchSize);
      }
      signatureInfos_.WriteTo(ref output, _repeated_signatureInfos_codec);
      keys_.WriteTo(ref output, _repeated_keys_codec);
      revisedKeys_.WriteTo(ref output, _repeated_revisedKeys_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (HasStartTimestamp) {
        size += 1 + 8;
      }
      if (HasEndTimestamp) {
        size += 1 + 8;
      }
      if (HasRegion) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Region);
      }
      if (HasBatchNum) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BatchNum);
      }
      if (HasBatchSize) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BatchSize);
      }
      size += signatureInfos_.CalculateSize(_repeated_signatureInfos_codec);
      size += keys_.CalculateSize(_repeated_keys_codec);
      size += revisedKeys_.CalculateSize(_repeated_revisedKeys_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TemporaryExposureKeyExport other) {
      if (other == null) {
        return;
      }
      if (other.HasStartTimestamp) {
        StartTimestamp = other.StartTimestamp;
      }
      if (other.HasEndTimestamp) {
        EndTimestamp = other.EndTimestamp;
      }
      if (other.HasRegion) {
        Region = other.Region;
      }
      if (other.HasBatchNum) {
        BatchNum = other.BatchNum;
      }
      if (other.HasBatchSize) {
        BatchSize = other.BatchSize;
      }
      signatureInfos_.Add(other.signatureInfos_);
      keys_.Add(other.keys_);
      revisedKeys_.Add(other.revisedKeys_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 9: {
            StartTimestamp = input.ReadFixed64();
            break;
          }
          case 17: {
            EndTimestamp = input.ReadFixed64();
            break;
          }
          case 26: {
            Region = input.ReadString();
            break;
          }
          case 32: {
            BatchNum = input.ReadInt32();
            break;
          }
          case 40: {
            BatchSize = input.ReadInt32();
            break;
          }
          case 50: {
            signatureInfos_.AddEntriesFrom(input, _repeated_signatureInfos_codec);
            break;
          }
          case 58: {
            keys_.AddEntriesFrom(input, _repeated_keys_codec);
            break;
          }
          case 66: {
            revisedKeys_.AddEntriesFrom(input, _repeated_revisedKeys_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 9: {
            StartTimestamp = input.ReadFixed64();
            break;
          }
          case 17: {
            EndTimestamp = input.ReadFixed64();
            break;
          }
          case 26: {
            Region = input.ReadString();
            break;
          }
          case 32: {
            BatchNum = input.ReadInt32();
            break;
          }
          case 40: {
            BatchSize = input.ReadInt32();
            break;
          }
          case 50: {
            signatureInfos_.AddEntriesFrom(ref input, _repeated_signatureInfos_codec);
            break;
          }
          case 58: {
            keys_.AddEntriesFrom(ref input, _repeated_keys_codec);
            break;
          }
          case 66: {
            revisedKeys_.AddEntriesFrom(ref input, _repeated_revisedKeys_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class SignatureInfo : pb::IMessage<SignatureInfo>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SignatureInfo> _parser = new pb::MessageParser<SignatureInfo>(() => new SignatureInfo());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SignatureInfo> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::OpenCacao.CacaoBeacon.TekReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SignatureInfo() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SignatureInfo(SignatureInfo other) : this() {
      verificationKeyVersion_ = other.verificationKeyVersion_;
      verificationKeyId_ = other.verificationKeyId_;
      signatureAlgorithm_ = other.signatureAlgorithm_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SignatureInfo Clone() {
      return new SignatureInfo(this);
    }

    /// <summary>Field number for the "verification_key_version" field.</summary>
    public const int VerificationKeyVersionFieldNumber = 3;
    private readonly static string VerificationKeyVersionDefaultValue = "";

    private string verificationKeyVersion_;
    /// <summary>
    /// Key version for rollovers
    /// Must be in character class [a-zA-Z0-9_]. For example, 'v1'
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VerificationKeyVersion {
      get { return verificationKeyVersion_ ?? VerificationKeyVersionDefaultValue; }
      set {
        verificationKeyVersion_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "verification_key_version" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasVerificationKeyVersion {
      get { return verificationKeyVersion_ != null; }
    }
    /// <summary>Clears the value of the "verification_key_version" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearVerificationKeyVersion() {
      verificationKeyVersion_ = null;
    }

    /// <summary>Field number for the "verification_key_id" field.</summary>
    public const int VerificationKeyIdFieldNumber = 4;
    private readonly static string VerificationKeyIdDefaultValue = "";

    private string verificationKeyId_;
    /// <summary>
    /// Alias with which to identify public key to be used for verification
    /// Must be in character class [a-zA-Z0-9_.]
    /// For cross-compatibility with Apple, you can use your region's three-digit
    /// mobile country code (MCC). If your region has more than one MCC, choose the
    /// one that Apple has configured.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VerificationKeyId {
      get { return verificationKeyId_ ?? VerificationKeyIdDefaultValue; }
      set {
        verificationKeyId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "verification_key_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasVerificationKeyId {
      get { return verificationKeyId_ != null; }
    }
    /// <summary>Clears the value of the "verification_key_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearVerificationKeyId() {
      verificationKeyId_ = null;
    }

    /// <summary>Field number for the "signature_algorithm" field.</summary>
    public const int SignatureAlgorithmFieldNumber = 5;
    private readonly static string SignatureAlgorithmDefaultValue = "";

    private string signatureAlgorithm_;
    /// <summary>
    /// ASN.1 OID for Algorithm Identifier. For example, `1.2.840.10045.4.3.2'
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SignatureAlgorithm {
      get { return signatureAlgorithm_ ?? SignatureAlgorithmDefaultValue; }
      set {
        signatureAlgorithm_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "signature_algorithm" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasSignatureAlgorithm {
      get { return signatureAlgorithm_ != null; }
    }
    /// <summary>Clears the value of the "signature_algorithm" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearSignatureAlgorithm() {
      signatureAlgorithm_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SignatureInfo);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SignatureInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VerificationKeyVersion != other.VerificationKeyVersion) return false;
      if (VerificationKeyId != other.VerificationKeyId) return false;
      if (SignatureAlgorithm != other.SignatureAlgorithm) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (HasVerificationKeyVersion) hash ^= VerificationKeyVersion.GetHashCode();
      if (HasVerificationKeyId) hash ^= VerificationKeyId.GetHashCode();
      if (HasSignatureAlgorithm) hash ^= SignatureAlgorithm.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (HasVerificationKeyVersion) {
        output.WriteRawTag(26);
        output.WriteString(VerificationKeyVersion);
      }
      if (HasVerificationKeyId) {
        output.WriteRawTag(34);
        output.WriteString(VerificationKeyId);
      }
      if (HasSignatureAlgorithm) {
        output.WriteRawTag(42);
        output.WriteString(SignatureAlgorithm);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (HasVerificationKeyVersion) {
        output.WriteRawTag(26);
        output.WriteString(VerificationKeyVersion);
      }
      if (HasVerificationKeyId) {
        output.WriteRawTag(34);
        output.WriteString(VerificationKeyId);
      }
      if (HasSignatureAlgorithm) {
        output.WriteRawTag(42);
        output.WriteString(SignatureAlgorithm);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (HasVerificationKeyVersion) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VerificationKeyVersion);
      }
      if (HasVerificationKeyId) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VerificationKeyId);
      }
      if (HasSignatureAlgorithm) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SignatureAlgorithm);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SignatureInfo other) {
      if (other == null) {
        return;
      }
      if (other.HasVerificationKeyVersion) {
        VerificationKeyVersion = other.VerificationKeyVersion;
      }
      if (other.HasVerificationKeyId) {
        VerificationKeyId = other.VerificationKeyId;
      }
      if (other.HasSignatureAlgorithm) {
        SignatureAlgorithm = other.SignatureAlgorithm;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 26: {
            VerificationKeyVersion = input.ReadString();
            break;
          }
          case 34: {
            VerificationKeyId = input.ReadString();
            break;
          }
          case 42: {
            SignatureAlgorithm = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 26: {
            VerificationKeyVersion = input.ReadString();
            break;
          }
          case 34: {
            VerificationKeyId = input.ReadString();
            break;
          }
          case 42: {
            SignatureAlgorithm = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class TemporaryExposureKey : pb::IMessage<TemporaryExposureKey>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TemporaryExposureKey> _parser = new pb::MessageParser<TemporaryExposureKey>(() => new TemporaryExposureKey());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TemporaryExposureKey> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::OpenCacao.CacaoBeacon.TekReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TemporaryExposureKey() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TemporaryExposureKey(TemporaryExposureKey other) : this() {
      _hasBits0 = other._hasBits0;
      keyData_ = other.keyData_;
      transmissionRiskLevel_ = other.transmissionRiskLevel_;
      rollingStartIntervalNumber_ = other.rollingStartIntervalNumber_;
      rollingPeriod_ = other.rollingPeriod_;
      reportType_ = other.reportType_;
      daysSinceOnsetOfSymptoms_ = other.daysSinceOnsetOfSymptoms_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TemporaryExposureKey Clone() {
      return new TemporaryExposureKey(this);
    }

    /// <summary>Field number for the "key_data" field.</summary>
    public const int KeyDataFieldNumber = 1;
    private readonly static pb::ByteString KeyDataDefaultValue = pb::ByteString.Empty;

    private pb::ByteString keyData_;
    /// <summary>
    /// Key of infected user
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString KeyData {
      get { return keyData_ ?? KeyDataDefaultValue; }
      set {
        keyData_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "key_data" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasKeyData {
      get { return keyData_ != null; }
    }
    /// <summary>Clears the value of the "key_data" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearKeyData() {
      keyData_ = null;
    }

    /// <summary>Field number for the "transmission_risk_level" field.</summary>
    public const int TransmissionRiskLevelFieldNumber = 2;
    private readonly static int TransmissionRiskLevelDefaultValue = 0;

    private int transmissionRiskLevel_;
    /// <summary>
    /// Varying risk associated with a key depending on diagnosis method
    /// </summary>
    [global::System.ObsoleteAttribute]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int TransmissionRiskLevel {
      get { if ((_hasBits0 & 1) != 0) { return transmissionRiskLevel_; } else { return TransmissionRiskLevelDefaultValue; } }
      set {
        _hasBits0 |= 1;
        transmissionRiskLevel_ = value;
      }
    }
    /// <summary>Gets whether the "transmission_risk_level" field is set</summary>
    [global::System.ObsoleteAttribute]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasTransmissionRiskLevel {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "transmission_risk_level" field</summary>
    [global::System.ObsoleteAttribute]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearTransmissionRiskLevel() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "rolling_start_interval_number" field.</summary>
    public const int RollingStartIntervalNumberFieldNumber = 3;
    private readonly static int RollingStartIntervalNumberDefaultValue = 0;

    private int rollingStartIntervalNumber_;
    /// <summary>
    /// The interval number since epoch for which a key starts
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RollingStartIntervalNumber {
      get { if ((_hasBits0 & 2) != 0) { return rollingStartIntervalNumber_; } else { return RollingStartIntervalNumberDefaultValue; } }
      set {
        _hasBits0 |= 2;
        rollingStartIntervalNumber_ = value;
      }
    }
    /// <summary>Gets whether the "rolling_start_interval_number" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasRollingStartIntervalNumber {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "rolling_start_interval_number" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearRollingStartIntervalNumber() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "rolling_period" field.</summary>
    public const int RollingPeriodFieldNumber = 4;
    private readonly static int RollingPeriodDefaultValue = 144;

    private int rollingPeriod_;
    /// <summary>
    /// Increments of 10 minutes describing how long a key is valid
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RollingPeriod {
      get { if ((_hasBits0 & 4) != 0) { return rollingPeriod_; } else { return RollingPeriodDefaultValue; } }
      set {
        _hasBits0 |= 4;
        rollingPeriod_ = value;
      }
    }
    /// <summary>Gets whether the "rolling_period" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasRollingPeriod {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "rolling_period" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearRollingPeriod() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "report_type" field.</summary>
    public const int ReportTypeFieldNumber = 5;
    private readonly static global::OpenCacao.CacaoBeacon.TemporaryExposureKey.Types.ReportType ReportTypeDefaultValue = global::OpenCacao.CacaoBeacon.TemporaryExposureKey.Types.ReportType.Unknown;

    private global::OpenCacao.CacaoBeacon.TemporaryExposureKey.Types.ReportType reportType_;
    /// <summary>
    /// Type of diagnosis associated with a key.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::OpenCacao.CacaoBeacon.TemporaryExposureKey.Types.ReportType ReportType {
      get { if ((_hasBits0 & 8) != 0) { return reportType_; } else { return ReportTypeDefaultValue; } }
      set {
        _hasBits0 |= 8;
        reportType_ = value;
      }
    }
    /// <summary>Gets whether the "report_type" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasReportType {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "report_type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearReportType() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "days_since_onset_of_symptoms" field.</summary>
    public const int DaysSinceOnsetOfSymptomsFieldNumber = 6;
    private readonly static int DaysSinceOnsetOfSymptomsDefaultValue = 0;

    private int daysSinceOnsetOfSymptoms_;
    /// <summary>
    /// Number of days elapsed between symptom onset and the TEK being used.
    /// E.g. 2 means TEK is 2 days after onset of symptoms.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int DaysSinceOnsetOfSymptoms {
      get { if ((_hasBits0 & 16) != 0) { return daysSinceOnsetOfSymptoms_; } else { return DaysSinceOnsetOfSymptomsDefaultValue; } }
      set {
        _hasBits0 |= 16;
        daysSinceOnsetOfSymptoms_ = value;
      }
    }
    /// <summary>Gets whether the "days_since_onset_of_symptoms" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDaysSinceOnsetOfSymptoms {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "days_since_onset_of_symptoms" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDaysSinceOnsetOfSymptoms() {
      _hasBits0 &= ~16;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as TemporaryExposureKey);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TemporaryExposureKey other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (KeyData != other.KeyData) return false;
      if (TransmissionRiskLevel != other.TransmissionRiskLevel) return false;
      if (RollingStartIntervalNumber != other.RollingStartIntervalNumber) return false;
      if (RollingPeriod != other.RollingPeriod) return false;
      if (ReportType != other.ReportType) return false;
      if (DaysSinceOnsetOfSymptoms != other.DaysSinceOnsetOfSymptoms) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (HasKeyData) hash ^= KeyData.GetHashCode();
      if (HasTransmissionRiskLevel) hash ^= TransmissionRiskLevel.GetHashCode();
      if (HasRollingStartIntervalNumber) hash ^= RollingStartIntervalNumber.GetHashCode();
      if (HasRollingPeriod) hash ^= RollingPeriod.GetHashCode();
      if (HasReportType) hash ^= ReportType.GetHashCode();
      if (HasDaysSinceOnsetOfSymptoms) hash ^= DaysSinceOnsetOfSymptoms.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (HasKeyData) {
        output.WriteRawTag(10);
        output.WriteBytes(KeyData);
      }
      if (HasTransmissionRiskLevel) {
        output.WriteRawTag(16);
        output.WriteInt32(TransmissionRiskLevel);
      }
      if (HasRollingStartIntervalNumber) {
        output.WriteRawTag(24);
        output.WriteInt32(RollingStartIntervalNumber);
      }
      if (HasRollingPeriod) {
        output.WriteRawTag(32);
        output.WriteInt32(RollingPeriod);
      }
      if (HasReportType) {
        output.WriteRawTag(40);
        output.WriteEnum((int) ReportType);
      }
      if (HasDaysSinceOnsetOfSymptoms) {
        output.WriteRawTag(48);
        output.WriteSInt32(DaysSinceOnsetOfSymptoms);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (HasKeyData) {
        output.WriteRawTag(10);
        output.WriteBytes(KeyData);
      }
      if (HasTransmissionRiskLevel) {
        output.WriteRawTag(16);
        output.WriteInt32(TransmissionRiskLevel);
      }
      if (HasRollingStartIntervalNumber) {
        output.WriteRawTag(24);
        output.WriteInt32(RollingStartIntervalNumber);
      }
      if (HasRollingPeriod) {
        output.WriteRawTag(32);
        output.WriteInt32(RollingPeriod);
      }
      if (HasReportType) {
        output.WriteRawTag(40);
        output.WriteEnum((int) ReportType);
      }
      if (HasDaysSinceOnsetOfSymptoms) {
        output.WriteRawTag(48);
        output.WriteSInt32(DaysSinceOnsetOfSymptoms);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (HasKeyData) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(KeyData);
      }
      if (HasTransmissionRiskLevel) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TransmissionRiskLevel);
      }
      if (HasRollingStartIntervalNumber) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RollingStartIntervalNumber);
      }
      if (HasRollingPeriod) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RollingPeriod);
      }
      if (HasReportType) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ReportType);
      }
      if (HasDaysSinceOnsetOfSymptoms) {
        size += 1 + pb::CodedOutputStream.ComputeSInt32Size(DaysSinceOnsetOfSymptoms);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TemporaryExposureKey other) {
      if (other == null) {
        return;
      }
      if (other.HasKeyData) {
        KeyData = other.KeyData;
      }
      if (other.HasTransmissionRiskLevel) {
        TransmissionRiskLevel = other.TransmissionRiskLevel;
      }
      if (other.HasRollingStartIntervalNumber) {
        RollingStartIntervalNumber = other.RollingStartIntervalNumber;
      }
      if (other.HasRollingPeriod) {
        RollingPeriod = other.RollingPeriod;
      }
      if (other.HasReportType) {
        ReportType = other.ReportType;
      }
      if (other.HasDaysSinceOnsetOfSymptoms) {
        DaysSinceOnsetOfSymptoms = other.DaysSinceOnsetOfSymptoms;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            KeyData = input.ReadBytes();
            break;
          }
          case 16: {
            TransmissionRiskLevel = input.ReadInt32();
            break;
          }
          case 24: {
            RollingStartIntervalNumber = input.ReadInt32();
            break;
          }
          case 32: {
            RollingPeriod = input.ReadInt32();
            break;
          }
          case 40: {
            ReportType = (global::OpenCacao.CacaoBeacon.TemporaryExposureKey.Types.ReportType) input.ReadEnum();
            break;
          }
          case 48: {
            DaysSinceOnsetOfSymptoms = input.ReadSInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            KeyData = input.ReadBytes();
            break;
          }
          case 16: {
            TransmissionRiskLevel = input.ReadInt32();
            break;
          }
          case 24: {
            RollingStartIntervalNumber = input.ReadInt32();
            break;
          }
          case 32: {
            RollingPeriod = input.ReadInt32();
            break;
          }
          case 40: {
            ReportType = (global::OpenCacao.CacaoBeacon.TemporaryExposureKey.Types.ReportType) input.ReadEnum();
            break;
          }
          case 48: {
            DaysSinceOnsetOfSymptoms = input.ReadSInt32();
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// <summary>Container for nested types declared in the TemporaryExposureKey message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static partial class Types {
      /// <summary>
      /// Data type representing why this key was published.
      /// </summary>
      public enum ReportType {
        /// <summary>
        /// Never returned by the client API.
        /// </summary>
        [pbr::OriginalName("UNKNOWN")] Unknown = 0,
        [pbr::OriginalName("CONFIRMED_TEST")] ConfirmedTest = 1,
        [pbr::OriginalName("CONFIRMED_CLINICAL_DIAGNOSIS")] ConfirmedClinicalDiagnosis = 2,
        [pbr::OriginalName("SELF_REPORT")] SelfReport = 3,
        /// <summary>
        /// Reserved for future use.
        /// </summary>
        [pbr::OriginalName("RECURSIVE")] Recursive = 4,
        /// <summary>
        /// Used to revoke a key, never returned by client API.
        /// </summary>
        [pbr::OriginalName("REVOKED")] Revoked = 5,
      }

    }
    #endregion

  }

  public sealed partial class TEKSignatureList : pb::IMessage<TEKSignatureList>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TEKSignatureList> _parser = new pb::MessageParser<TEKSignatureList>(() => new TEKSignatureList());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TEKSignatureList> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::OpenCacao.CacaoBeacon.TekReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TEKSignatureList() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TEKSignatureList(TEKSignatureList other) : this() {
      signatures_ = other.signatures_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TEKSignatureList Clone() {
      return new TEKSignatureList(this);
    }

    /// <summary>Field number for the "signatures" field.</summary>
    public const int SignaturesFieldNumber = 1;
    private static readonly pb::FieldCodec<global::OpenCacao.CacaoBeacon.TEKSignature> _repeated_signatures_codec
        = pb::FieldCodec.ForMessage(10, global::OpenCacao.CacaoBeacon.TEKSignature.Parser);
    private readonly pbc::RepeatedField<global::OpenCacao.CacaoBeacon.TEKSignature> signatures_ = new pbc::RepeatedField<global::OpenCacao.CacaoBeacon.TEKSignature>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::OpenCacao.CacaoBeacon.TEKSignature> Signatures {
      get { return signatures_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as TEKSignatureList);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TEKSignatureList other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!signatures_.Equals(other.signatures_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= signatures_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      signatures_.WriteTo(output, _repeated_signatures_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      signatures_.WriteTo(ref output, _repeated_signatures_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += signatures_.CalculateSize(_repeated_signatures_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TEKSignatureList other) {
      if (other == null) {
        return;
      }
      signatures_.Add(other.signatures_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            signatures_.AddEntriesFrom(input, _repeated_signatures_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            signatures_.AddEntriesFrom(ref input, _repeated_signatures_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class TEKSignature : pb::IMessage<TEKSignature>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TEKSignature> _parser = new pb::MessageParser<TEKSignature>(() => new TEKSignature());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TEKSignature> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::OpenCacao.CacaoBeacon.TekReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TEKSignature() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TEKSignature(TEKSignature other) : this() {
      _hasBits0 = other._hasBits0;
      signatureInfo_ = other.signatureInfo_ != null ? other.signatureInfo_.Clone() : null;
      batchNum_ = other.batchNum_;
      batchSize_ = other.batchSize_;
      signature_ = other.signature_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TEKSignature Clone() {
      return new TEKSignature(this);
    }

    /// <summary>Field number for the "signature_info" field.</summary>
    public const int SignatureInfoFieldNumber = 1;
    private global::OpenCacao.CacaoBeacon.SignatureInfo signatureInfo_;
    /// <summary>
    /// Info about the signing key, version, algorithm, and so on.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::OpenCacao.CacaoBeacon.SignatureInfo SignatureInfo {
      get { return signatureInfo_; }
      set {
        signatureInfo_ = value;
      }
    }

    /// <summary>Field number for the "batch_num" field.</summary>
    public const int BatchNumFieldNumber = 2;
    private readonly static int BatchNumDefaultValue = 0;

    private int batchNum_;
    /// <summary>
    /// For example, file 2 in batch size of 10. Ordinal, 1-based numbering.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BatchNum {
      get { if ((_hasBits0 & 1) != 0) { return batchNum_; } else { return BatchNumDefaultValue; } }
      set {
        _hasBits0 |= 1;
        batchNum_ = value;
      }
    }
    /// <summary>Gets whether the "batch_num" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBatchNum {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "batch_num" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBatchNum() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "batch_size" field.</summary>
    public const int BatchSizeFieldNumber = 3;
    private readonly static int BatchSizeDefaultValue = 0;

    private int batchSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BatchSize {
      get { if ((_hasBits0 & 2) != 0) { return batchSize_; } else { return BatchSizeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        batchSize_ = value;
      }
    }
    /// <summary>Gets whether the "batch_size" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBatchSize {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "batch_size" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBatchSize() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "signature" field.</summary>
    public const int SignatureFieldNumber = 4;
    private readonly static pb::ByteString SignatureDefaultValue = pb::ByteString.Empty;

    private pb::ByteString signature_;
    /// <summary>
    /// Signature in X9.62 format (ASN.1 SEQUENCE of two INTEGER fields)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString Signature {
      get { return signature_ ?? SignatureDefaultValue; }
      set {
        signature_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "signature" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasSignature {
      get { return signature_ != null; }
    }
    /// <summary>Clears the value of the "signature" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearSignature() {
      signature_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as TEKSignature);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TEKSignature other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(SignatureInfo, other.SignatureInfo)) return false;
      if (BatchNum != other.BatchNum) return false;
      if (BatchSize != other.BatchSize) return false;
      if (Signature != other.Signature) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (signatureInfo_ != null) hash ^= SignatureInfo.GetHashCode();
      if (HasBatchNum) hash ^= BatchNum.GetHashCode();
      if (HasBatchSize) hash ^= BatchSize.GetHashCode();
      if (HasSignature) hash ^= Signature.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (signatureInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(SignatureInfo);
      }
      if (HasBatchNum) {
        output.WriteRawTag(16);
        output.WriteInt32(BatchNum);
      }
      if (HasBatchSize) {
        output.WriteRawTag(24);
        output.WriteInt32(BatchSize);
      }
      if (HasSignature) {
        output.WriteRawTag(34);
        output.WriteBytes(Signature);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (signatureInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(SignatureInfo);
      }
      if (HasBatchNum) {
        output.WriteRawTag(16);
        output.WriteInt32(BatchNum);
      }
      if (HasBatchSize) {
        output.WriteRawTag(24);
        output.WriteInt32(BatchSize);
      }
      if (HasSignature) {
        output.WriteRawTag(34);
        output.WriteBytes(Signature);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (signatureInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SignatureInfo);
      }
      if (HasBatchNum) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BatchNum);
      }
      if (HasBatchSize) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BatchSize);
      }
      if (HasSignature) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Signature);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TEKSignature other) {
      if (other == null) {
        return;
      }
      if (other.signatureInfo_ != null) {
        if (signatureInfo_ == null) {
          SignatureInfo = new global::OpenCacao.CacaoBeacon.SignatureInfo();
        }
        SignatureInfo.MergeFrom(other.SignatureInfo);
      }
      if (other.HasBatchNum) {
        BatchNum = other.BatchNum;
      }
      if (other.HasBatchSize) {
        BatchSize = other.BatchSize;
      }
      if (other.HasSignature) {
        Signature = other.Signature;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (signatureInfo_ == null) {
              SignatureInfo = new global::OpenCacao.CacaoBeacon.SignatureInfo();
            }
            input.ReadMessage(SignatureInfo);
            break;
          }
          case 16: {
            BatchNum = input.ReadInt32();
            break;
          }
          case 24: {
            BatchSize = input.ReadInt32();
            break;
          }
          case 34: {
            Signature = input.ReadBytes();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (signatureInfo_ == null) {
              SignatureInfo = new global::OpenCacao.CacaoBeacon.SignatureInfo();
            }
            input.ReadMessage(SignatureInfo);
            break;
          }
          case 16: {
            BatchNum = input.ReadInt32();
            break;
          }
          case 24: {
            BatchSize = input.ReadInt32();
            break;
          }
          case 34: {
            Signature = input.ReadBytes();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
