// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: Protos/sitestream.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021, 8981
#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 ZB.MOM.WW.ScadaBridge.Communication.Grpc {

  /// <summary>Holder for reflection information generated from Protos/sitestream.proto</summary>
  public static partial class SitestreamReflection {

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

    static SitestreamReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChdQcm90b3Mvc2l0ZXN0cmVhbS5wcm90bxIKc2l0ZXN0cmVhbRofZ29vZ2xl",
            "L3Byb3RvYnVmL3RpbWVzdGFtcC5wcm90bxoeZ29vZ2xlL3Byb3RvYnVmL3dy",
            "YXBwZXJzLnByb3RvIk0KFUluc3RhbmNlU3RyZWFtUmVxdWVzdBIWCg5jb3Jy",
            "ZWxhdGlvbl9pZBgBIAEoCRIcChRpbnN0YW5jZV91bmlxdWVfbmFtZRgCIAEo",
            "CSIrChFTaXRlU3RyZWFtUmVxdWVzdBIWCg5jb3JyZWxhdGlvbl9pZBgBIAEo",
            "CSKoAQoPU2l0ZVN0cmVhbUV2ZW50EhYKDmNvcnJlbGF0aW9uX2lkGAEgASgJ",
            "Ej0KEWF0dHJpYnV0ZV9jaGFuZ2VkGAIgASgLMiAuc2l0ZXN0cmVhbS5BdHRy",
            "aWJ1dGVWYWx1ZVVwZGF0ZUgAEjUKDWFsYXJtX2NoYW5nZWQYAyABKAsyHC5z",
            "aXRlc3RyZWFtLkFsYXJtU3RhdGVVcGRhdGVIAEIHCgVldmVudCLIAQoUQXR0",
            "cmlidXRlVmFsdWVVcGRhdGUSHAoUaW5zdGFuY2VfdW5pcXVlX25hbWUYASAB",
            "KAkSFgoOYXR0cmlidXRlX3BhdGgYAiABKAkSFgoOYXR0cmlidXRlX25hbWUY",
            "AyABKAkSDQoFdmFsdWUYBCABKAkSJAoHcXVhbGl0eRgFIAEoDjITLnNpdGVz",
            "dHJlYW0uUXVhbGl0eRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJv",
            "dG9idWYuVGltZXN0YW1wIq8FChBBbGFybVN0YXRlVXBkYXRlEhwKFGluc3Rh",
            "bmNlX3VuaXF1ZV9uYW1lGAEgASgJEhIKCmFsYXJtX25hbWUYAiABKAkSKQoF",
            "c3RhdGUYAyABKA4yGi5zaXRlc3RyZWFtLkFsYXJtU3RhdGVFbnVtEhAKCHBy",
            "aW9yaXR5GAQgASgFEi0KCXRpbWVzdGFtcBgFIAEoCzIaLmdvb2dsZS5wcm90",
            "b2J1Zi5UaW1lc3RhbXASKQoFbGV2ZWwYBiABKA4yGi5zaXRlc3RyZWFtLkFs",
            "YXJtTGV2ZWxFbnVtEg8KB21lc3NhZ2UYByABKAkSDAoEa2luZBgIIAEoCRIO",
            "CgZhY3RpdmUYCSABKAgSFAoMYWNrbm93bGVkZ2VkGAogASgIEhEKCWNvbmZp",
            "cm1lZBgLIAEoCBIUCgxzaGVsdmVfc3RhdGUYDCABKAkSEgoKc3VwcHJlc3Nl",
            "ZBgNIAEoCBIYChBzb3VyY2VfcmVmZXJlbmNlGA4gASgJEhcKD2FsYXJtX3R5",
            "cGVfbmFtZRgPIAEoCRIQCghjYXRlZ29yeRgQIAEoCRIVCg1vcGVyYXRvcl91",
            "c2VyGBEgASgJEhgKEG9wZXJhdG9yX2NvbW1lbnQYEiABKAkSNwoTb3JpZ2lu",
            "YWxfcmFpc2VfdGltZRgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3Rh",
            "bXASFQoNY3VycmVudF92YWx1ZRgUIAEoCRITCgtsaW1pdF92YWx1ZRgVIAEo",
            "CRIkChxuYXRpdmVfc291cmNlX2Nhbm9uaWNhbF9uYW1lGBYgASgJEiEKGWlz",
            "X2NvbmZpZ3VyZWRfcGxhY2Vob2xkZXIYFyABKAgSLAoIYWNrX3RpbWUYGCAB",
            "KAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIr0ECg1BdWRpdEV2ZW50",
            "RHRvEhAKCGV2ZW50X2lkGAEgASgJEjMKD29jY3VycmVkX2F0X3V0YxgCIAEo",
            "CzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHY2hhbm5lbBgDIAEo",
            "CRIMCgRraW5kGAQgASgJEhYKDmNvcnJlbGF0aW9uX2lkGAUgASgJEhYKDnNv",
            "dXJjZV9zaXRlX2lkGAYgASgJEhoKEnNvdXJjZV9pbnN0YW5jZV9pZBgHIAEo",
            "CRIVCg1zb3VyY2Vfc2NyaXB0GAggASgJEg0KBWFjdG9yGAkgASgJEg4KBnRh",
            "cmdldBgKIAEoCRIOCgZzdGF0dXMYCyABKAkSMAoLaHR0cF9zdGF0dXMYDCAB",
            "KAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZRIwCgtkdXJhdGlvbl9t",
            "cxgNIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEhUKDWVycm9y",
            "X21lc3NhZ2UYDiABKAkSFAoMZXJyb3JfZGV0YWlsGA8gASgJEhcKD3JlcXVl",
            "c3Rfc3VtbWFyeRgQIAEoCRIYChByZXNwb25zZV9zdW1tYXJ5GBEgASgJEhkK",
            "EXBheWxvYWRfdHJ1bmNhdGVkGBIgASgIEg0KBWV4dHJhGBMgASgJEhQKDGV4",
            "ZWN1dGlvbl9pZBgUIAEoCRIbChNwYXJlbnRfZXhlY3V0aW9uX2lkGBUgASgJ",
            "EhMKC3NvdXJjZV9ub2RlGBYgASgJIjwKD0F1ZGl0RXZlbnRCYXRjaBIpCgZl",
            "dmVudHMYASADKAsyGS5zaXRlc3RyZWFtLkF1ZGl0RXZlbnREdG8iJwoJSW5n",
            "ZXN0QWNrEhoKEmFjY2VwdGVkX2V2ZW50X2lkcxgBIAMoCSKJAwoWU2l0ZUNh",
            "bGxPcGVyYXRpb25hbER0bxIcChR0cmFja2VkX29wZXJhdGlvbl9pZBgBIAEo",
            "CRIPCgdjaGFubmVsGAIgASgJEg4KBnRhcmdldBgDIAEoCRITCgtzb3VyY2Vf",
            "c2l0ZRgEIAEoCRIOCgZzdGF0dXMYBSABKAkSEwoLcmV0cnlfY291bnQYBiAB",
            "KAUSEgoKbGFzdF9lcnJvchgHIAEoCRIwCgtodHRwX3N0YXR1cxgIIAEoCzIb",
            "Lmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEjIKDmNyZWF0ZWRfYXRfdXRj",
            "GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCg51cGRhdGVk",
            "X2F0X3V0YxgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoP",
            "dGVybWluYWxfYXRfdXRjGAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVz",
            "dGFtcBITCgtzb3VyY2Vfbm9kZRgMIAEoCSKAAQoVQ2FjaGVkVGVsZW1ldHJ5",
            "UGFja2V0Ei4KC2F1ZGl0X2V2ZW50GAEgASgLMhkuc2l0ZXN0cmVhbS5BdWRp",
            "dEV2ZW50RHRvEjcKC29wZXJhdGlvbmFsGAIgASgLMiIuc2l0ZXN0cmVhbS5T",
            "aXRlQ2FsbE9wZXJhdGlvbmFsRHRvIkoKFENhY2hlZFRlbGVtZXRyeUJhdGNo",
            "EjIKB3BhY2tldHMYASADKAsyIS5zaXRlc3RyZWFtLkNhY2hlZFRlbGVtZXRy",
            "eVBhY2tldCJtChZQdWxsQXVkaXRFdmVudHNSZXF1ZXN0Ei0KCXNpbmNlX3V0",
            "YxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKYmF0Y2hf",
            "c2l6ZRgCIAEoBRIQCghhZnRlcl9pZBgDIAEoCSJcChdQdWxsQXVkaXRFdmVu",
            "dHNSZXNwb25zZRIpCgZldmVudHMYASADKAsyGS5zaXRlc3RyZWFtLkF1ZGl0",
            "RXZlbnREdG8SFgoObW9yZV9hdmFpbGFibGUYAiABKAgiawoUUHVsbFNpdGVD",
            "YWxsc1JlcXVlc3QSLQoJc2luY2VfdXRjGAEgASgLMhouZ29vZ2xlLnByb3Rv",
            "YnVmLlRpbWVzdGFtcBISCgpiYXRjaF9zaXplGAIgASgFEhAKCGFmdGVyX2lk",
            "GAMgASgJImkKFVB1bGxTaXRlQ2FsbHNSZXNwb25zZRI4CgxvcGVyYXRpb25h",
            "bHMYASADKAsyIi5zaXRlc3RyZWFtLlNpdGVDYWxsT3BlcmF0aW9uYWxEdG8S",
            "FgoObW9yZV9hdmFpbGFibGUYAiABKAgqXAoHUXVhbGl0eRIXChNRVUFMSVRZ",
            "X1VOU1BFQ0lGSUVEEAASEAoMUVVBTElUWV9HT09EEAESFQoRUVVBTElUWV9V",
            "TkNFUlRBSU4QAhIPCgtRVUFMSVRZX0JBRBADKl0KDkFsYXJtU3RhdGVFbnVt",
            "EhsKF0FMQVJNX1NUQVRFX1VOU1BFQ0lGSUVEEAASFgoSQUxBUk1fU1RBVEVf",
            "Tk9STUFMEAESFgoSQUxBUk1fU1RBVEVfQUNUSVZFEAIqhQEKDkFsYXJtTGV2",
            "ZWxFbnVtEhQKEEFMQVJNX0xFVkVMX05PTkUQABITCg9BTEFSTV9MRVZFTF9M",
            "T1cQARIXChNBTEFSTV9MRVZFTF9MT1dfTE9XEAISFAoQQUxBUk1fTEVWRUxf",
            "SElHSBADEhkKFUFMQVJNX0xFVkVMX0hJR0hfSElHSBAEMoYEChFTaXRlU3Ry",
            "ZWFtU2VydmljZRJVChFTdWJzY3JpYmVJbnN0YW5jZRIhLnNpdGVzdHJlYW0u",
            "SW5zdGFuY2VTdHJlYW1SZXF1ZXN0Ghsuc2l0ZXN0cmVhbS5TaXRlU3RyZWFt",
            "RXZlbnQwARJNCg1TdWJzY3JpYmVTaXRlEh0uc2l0ZXN0cmVhbS5TaXRlU3Ry",
            "ZWFtUmVxdWVzdBobLnNpdGVzdHJlYW0uU2l0ZVN0cmVhbUV2ZW50MAESRwoR",
            "SW5nZXN0QXVkaXRFdmVudHMSGy5zaXRlc3RyZWFtLkF1ZGl0RXZlbnRCYXRj",
            "aBoVLnNpdGVzdHJlYW0uSW5nZXN0QWNrElAKFUluZ2VzdENhY2hlZFRlbGVt",
            "ZXRyeRIgLnNpdGVzdHJlYW0uQ2FjaGVkVGVsZW1ldHJ5QmF0Y2gaFS5zaXRl",
            "c3RyZWFtLkluZ2VzdEFjaxJaCg9QdWxsQXVkaXRFdmVudHMSIi5zaXRlc3Ry",
            "ZWFtLlB1bGxBdWRpdEV2ZW50c1JlcXVlc3QaIy5zaXRlc3RyZWFtLlB1bGxB",
            "dWRpdEV2ZW50c1Jlc3BvbnNlElQKDVB1bGxTaXRlQ2FsbHMSIC5zaXRlc3Ry",
            "ZWFtLlB1bGxTaXRlQ2FsbHNSZXF1ZXN0GiEuc2l0ZXN0cmVhbS5QdWxsU2l0",
            "ZUNhbGxzUmVzcG9uc2VCK6oCKFpCLk1PTS5XVy5TY2FkYUJyaWRnZS5Db21t",
            "dW5pY2F0aW9uLkdycGNiBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.InstanceStreamRequest), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.InstanceStreamRequest.Parser, new[]{ "CorrelationId", "InstanceUniqueName" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteStreamRequest), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteStreamRequest.Parser, new[]{ "CorrelationId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteStreamEvent), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteStreamEvent.Parser, new[]{ "CorrelationId", "AttributeChanged", "AlarmChanged" }, new[]{ "Event" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AttributeValueUpdate), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AttributeValueUpdate.Parser, new[]{ "InstanceUniqueName", "AttributePath", "AttributeName", "Value", "Quality", "Timestamp" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate.Parser, new[]{ "InstanceUniqueName", "AlarmName", "State", "Priority", "Timestamp", "Level", "Message", "Kind", "Active", "Acknowledged", "Confirmed", "ShelveState", "Suppressed", "SourceReference", "AlarmTypeName", "Category", "OperatorUser", "OperatorComment", "OriginalRaiseTime", "CurrentValue", "LimitValue", "NativeSourceCanonicalName", "IsConfiguredPlaceholder", "AckTime" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto.Parser, new[]{ "EventId", "OccurredAtUtc", "Channel", "Kind", "CorrelationId", "SourceSiteId", "SourceInstanceId", "SourceScript", "Actor", "Target", "Status", "HttpStatus", "DurationMs", "ErrorMessage", "ErrorDetail", "RequestSummary", "ResponseSummary", "PayloadTruncated", "Extra", "ExecutionId", "ParentExecutionId", "SourceNode" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventBatch), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventBatch.Parser, new[]{ "Events" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.IngestAck), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.IngestAck.Parser, new[]{ "AcceptedEventIds" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto.Parser, new[]{ "TrackedOperationId", "Channel", "Target", "SourceSite", "Status", "RetryCount", "LastError", "HttpStatus", "CreatedAtUtc", "UpdatedAtUtc", "TerminalAtUtc", "SourceNode" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.CachedTelemetryPacket), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.CachedTelemetryPacket.Parser, new[]{ "AuditEvent", "Operational" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.CachedTelemetryBatch), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.CachedTelemetryBatch.Parser, new[]{ "Packets" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.PullAuditEventsRequest), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.PullAuditEventsRequest.Parser, new[]{ "SinceUtc", "BatchSize", "AfterId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.PullAuditEventsResponse), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.PullAuditEventsResponse.Parser, new[]{ "Events", "MoreAvailable" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.PullSiteCallsRequest), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.PullSiteCallsRequest.Parser, new[]{ "SinceUtc", "BatchSize", "AfterId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.PullSiteCallsResponse), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.PullSiteCallsResponse.Parser, new[]{ "Operationals", "MoreAvailable" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  public enum Quality {
    [pbr::OriginalName("QUALITY_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("QUALITY_GOOD")] Good = 1,
    [pbr::OriginalName("QUALITY_UNCERTAIN")] Uncertain = 2,
    [pbr::OriginalName("QUALITY_BAD")] Bad = 3,
  }

  public enum AlarmStateEnum {
    [pbr::OriginalName("ALARM_STATE_UNSPECIFIED")] AlarmStateUnspecified = 0,
    [pbr::OriginalName("ALARM_STATE_NORMAL")] AlarmStateNormal = 1,
    [pbr::OriginalName("ALARM_STATE_ACTIVE")] AlarmStateActive = 2,
  }

  /// <summary>
  /// Severity level for an active alarm. Binary trigger types (ValueMatch,
  /// RangeViolation, RateOfChange) always emit ALARM_LEVEL_NONE. The HiLo
  /// trigger type emits one of the directional values.
  /// </summary>
  public enum AlarmLevelEnum {
    [pbr::OriginalName("ALARM_LEVEL_NONE")] AlarmLevelNone = 0,
    [pbr::OriginalName("ALARM_LEVEL_LOW")] AlarmLevelLow = 1,
    [pbr::OriginalName("ALARM_LEVEL_LOW_LOW")] AlarmLevelLowLow = 2,
    [pbr::OriginalName("ALARM_LEVEL_HIGH")] AlarmLevelHigh = 3,
    [pbr::OriginalName("ALARM_LEVEL_HIGH_HIGH")] AlarmLevelHighHigh = 4,
  }

  #endregion

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.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 InstanceStreamRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "correlation_id" field.</summary>
    public const int CorrelationIdFieldNumber = 1;
    private string correlationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string CorrelationId {
      get { return correlationId_; }
      set {
        correlationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "instance_unique_name" field.</summary>
    public const int InstanceUniqueNameFieldNumber = 2;
    private string instanceUniqueName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string InstanceUniqueName {
      get { return instanceUniqueName_; }
      set {
        instanceUniqueName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(InstanceStreamRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (CorrelationId != other.CorrelationId) return false;
      if (InstanceUniqueName != other.InstanceUniqueName) 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 (CorrelationId.Length != 0) hash ^= CorrelationId.GetHashCode();
      if (InstanceUniqueName.Length != 0) hash ^= InstanceUniqueName.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 (CorrelationId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(CorrelationId);
      }
      if (InstanceUniqueName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(InstanceUniqueName);
      }
      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 (CorrelationId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(CorrelationId);
      }
      if (InstanceUniqueName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(InstanceUniqueName);
      }
      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 (CorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CorrelationId);
      }
      if (InstanceUniqueName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstanceUniqueName);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(InstanceStreamRequest other) {
      if (other == null) {
        return;
      }
      if (other.CorrelationId.Length != 0) {
        CorrelationId = other.CorrelationId;
      }
      if (other.InstanceUniqueName.Length != 0) {
        InstanceUniqueName = other.InstanceUniqueName;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            CorrelationId = input.ReadString();
            break;
          }
          case 18: {
            InstanceUniqueName = 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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            CorrelationId = input.ReadString();
            break;
          }
          case 18: {
            InstanceUniqueName = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Request for the site-wide, alarm-only SubscribeSite stream. Unlike
  /// InstanceStreamRequest there is NO instance filter — the stream carries alarm
  /// transitions for every instance on the site.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class SiteStreamRequest : pb::IMessage<SiteStreamRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SiteStreamRequest> _parser = new pb::MessageParser<SiteStreamRequest>(() => new SiteStreamRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SiteStreamRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.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 SiteStreamRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "correlation_id" field.</summary>
    public const int CorrelationIdFieldNumber = 1;
    private string correlationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string CorrelationId {
      get { return correlationId_; }
      set {
        correlationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SiteStreamRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (CorrelationId != other.CorrelationId) 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 (CorrelationId.Length != 0) hash ^= CorrelationId.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 (CorrelationId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(CorrelationId);
      }
      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 (CorrelationId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(CorrelationId);
      }
      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 (CorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CorrelationId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SiteStreamRequest other) {
      if (other == null) {
        return;
      }
      if (other.CorrelationId.Length != 0) {
        CorrelationId = other.CorrelationId;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            CorrelationId = 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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            CorrelationId = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.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 SiteStreamEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SiteStreamEvent(SiteStreamEvent other) : this() {
      correlationId_ = other.correlationId_;
      switch (other.EventCase) {
        case EventOneofCase.AttributeChanged:
          AttributeChanged = other.AttributeChanged.Clone();
          break;
        case EventOneofCase.AlarmChanged:
          AlarmChanged = other.AlarmChanged.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "correlation_id" field.</summary>
    public const int CorrelationIdFieldNumber = 1;
    private string correlationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string CorrelationId {
      get { return correlationId_; }
      set {
        correlationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "attribute_changed" field.</summary>
    public const int AttributeChangedFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AttributeValueUpdate AttributeChanged {
      get { return eventCase_ == EventOneofCase.AttributeChanged ? (global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AttributeValueUpdate) event_ : null; }
      set {
        event_ = value;
        eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.AttributeChanged;
      }
    }

    /// <summary>Field number for the "alarm_changed" field.</summary>
    public const int AlarmChangedFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate AlarmChanged {
      get { return eventCase_ == EventOneofCase.AlarmChanged ? (global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate) event_ : null; }
      set {
        event_ = value;
        eventCase_ = value == null ? EventOneofCase.None : EventOneofCase.AlarmChanged;
      }
    }

    private object event_;
    /// <summary>Enum of possible cases for the "event" oneof.</summary>
    public enum EventOneofCase {
      None = 0,
      AttributeChanged = 2,
      AlarmChanged = 3,
    }
    private EventOneofCase eventCase_ = EventOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public EventOneofCase EventCase {
      get { return eventCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearEvent() {
      eventCase_ = EventOneofCase.None;
      event_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SiteStreamEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (CorrelationId != other.CorrelationId) return false;
      if (!object.Equals(AttributeChanged, other.AttributeChanged)) return false;
      if (!object.Equals(AlarmChanged, other.AlarmChanged)) return false;
      if (EventCase != other.EventCase) 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 (CorrelationId.Length != 0) hash ^= CorrelationId.GetHashCode();
      if (eventCase_ == EventOneofCase.AttributeChanged) hash ^= AttributeChanged.GetHashCode();
      if (eventCase_ == EventOneofCase.AlarmChanged) hash ^= AlarmChanged.GetHashCode();
      hash ^= (int) eventCase_;
      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 (CorrelationId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(CorrelationId);
      }
      if (eventCase_ == EventOneofCase.AttributeChanged) {
        output.WriteRawTag(18);
        output.WriteMessage(AttributeChanged);
      }
      if (eventCase_ == EventOneofCase.AlarmChanged) {
        output.WriteRawTag(26);
        output.WriteMessage(AlarmChanged);
      }
      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 (CorrelationId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(CorrelationId);
      }
      if (eventCase_ == EventOneofCase.AttributeChanged) {
        output.WriteRawTag(18);
        output.WriteMessage(AttributeChanged);
      }
      if (eventCase_ == EventOneofCase.AlarmChanged) {
        output.WriteRawTag(26);
        output.WriteMessage(AlarmChanged);
      }
      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 (CorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CorrelationId);
      }
      if (eventCase_ == EventOneofCase.AttributeChanged) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AttributeChanged);
      }
      if (eventCase_ == EventOneofCase.AlarmChanged) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AlarmChanged);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SiteStreamEvent other) {
      if (other == null) {
        return;
      }
      if (other.CorrelationId.Length != 0) {
        CorrelationId = other.CorrelationId;
      }
      switch (other.EventCase) {
        case EventOneofCase.AttributeChanged:
          if (AttributeChanged == null) {
            AttributeChanged = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AttributeValueUpdate();
          }
          AttributeChanged.MergeFrom(other.AttributeChanged);
          break;
        case EventOneofCase.AlarmChanged:
          if (AlarmChanged == null) {
            AlarmChanged = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate();
          }
          AlarmChanged.MergeFrom(other.AlarmChanged);
          break;
      }

      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            CorrelationId = input.ReadString();
            break;
          }
          case 18: {
            global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AttributeValueUpdate subBuilder = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AttributeValueUpdate();
            if (eventCase_ == EventOneofCase.AttributeChanged) {
              subBuilder.MergeFrom(AttributeChanged);
            }
            input.ReadMessage(subBuilder);
            AttributeChanged = subBuilder;
            break;
          }
          case 26: {
            global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate subBuilder = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate();
            if (eventCase_ == EventOneofCase.AlarmChanged) {
              subBuilder.MergeFrom(AlarmChanged);
            }
            input.ReadMessage(subBuilder);
            AlarmChanged = subBuilder;
            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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            CorrelationId = input.ReadString();
            break;
          }
          case 18: {
            global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AttributeValueUpdate subBuilder = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AttributeValueUpdate();
            if (eventCase_ == EventOneofCase.AttributeChanged) {
              subBuilder.MergeFrom(AttributeChanged);
            }
            input.ReadMessage(subBuilder);
            AttributeChanged = subBuilder;
            break;
          }
          case 26: {
            global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate subBuilder = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateUpdate();
            if (eventCase_ == EventOneofCase.AlarmChanged) {
              subBuilder.MergeFrom(AlarmChanged);
            }
            input.ReadMessage(subBuilder);
            AlarmChanged = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.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 AttributeValueUpdate() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AttributeValueUpdate(AttributeValueUpdate other) : this() {
      instanceUniqueName_ = other.instanceUniqueName_;
      attributePath_ = other.attributePath_;
      attributeName_ = other.attributeName_;
      value_ = other.value_;
      quality_ = other.quality_;
      timestamp_ = other.timestamp_ != null ? other.timestamp_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "instance_unique_name" field.</summary>
    public const int InstanceUniqueNameFieldNumber = 1;
    private string instanceUniqueName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string InstanceUniqueName {
      get { return instanceUniqueName_; }
      set {
        instanceUniqueName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "attribute_path" field.</summary>
    public const int AttributePathFieldNumber = 2;
    private string attributePath_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AttributePath {
      get { return attributePath_; }
      set {
        attributePath_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "attribute_name" field.</summary>
    public const int AttributeNameFieldNumber = 3;
    private string attributeName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AttributeName {
      get { return attributeName_; }
      set {
        attributeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 4;
    private string value_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Value {
      get { return value_; }
      set {
        value_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "quality" field.</summary>
    public const int QualityFieldNumber = 5;
    private global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality quality_ = global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality Quality {
      get { return quality_; }
      set {
        quality_ = value;
      }
    }

    /// <summary>Field number for the "timestamp" field.</summary>
    public const int TimestampFieldNumber = 6;
    private global::Google.Protobuf.WellKnownTypes.Timestamp timestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp Timestamp {
      get { return timestamp_; }
      set {
        timestamp_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AttributeValueUpdate other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (InstanceUniqueName != other.InstanceUniqueName) return false;
      if (AttributePath != other.AttributePath) return false;
      if (AttributeName != other.AttributeName) return false;
      if (Value != other.Value) return false;
      if (Quality != other.Quality) return false;
      if (!object.Equals(Timestamp, other.Timestamp)) 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 (InstanceUniqueName.Length != 0) hash ^= InstanceUniqueName.GetHashCode();
      if (AttributePath.Length != 0) hash ^= AttributePath.GetHashCode();
      if (AttributeName.Length != 0) hash ^= AttributeName.GetHashCode();
      if (Value.Length != 0) hash ^= Value.GetHashCode();
      if (Quality != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality.Unspecified) hash ^= Quality.GetHashCode();
      if (timestamp_ != null) hash ^= Timestamp.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 (InstanceUniqueName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(InstanceUniqueName);
      }
      if (AttributePath.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(AttributePath);
      }
      if (AttributeName.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AttributeName);
      }
      if (Value.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Value);
      }
      if (Quality != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality.Unspecified) {
        output.WriteRawTag(40);
        output.WriteEnum((int) Quality);
      }
      if (timestamp_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(Timestamp);
      }
      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 (InstanceUniqueName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(InstanceUniqueName);
      }
      if (AttributePath.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(AttributePath);
      }
      if (AttributeName.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AttributeName);
      }
      if (Value.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Value);
      }
      if (Quality != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality.Unspecified) {
        output.WriteRawTag(40);
        output.WriteEnum((int) Quality);
      }
      if (timestamp_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(Timestamp);
      }
      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 (InstanceUniqueName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstanceUniqueName);
      }
      if (AttributePath.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AttributePath);
      }
      if (AttributeName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AttributeName);
      }
      if (Value.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Value);
      }
      if (Quality != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Quality);
      }
      if (timestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Timestamp);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AttributeValueUpdate other) {
      if (other == null) {
        return;
      }
      if (other.InstanceUniqueName.Length != 0) {
        InstanceUniqueName = other.InstanceUniqueName;
      }
      if (other.AttributePath.Length != 0) {
        AttributePath = other.AttributePath;
      }
      if (other.AttributeName.Length != 0) {
        AttributeName = other.AttributeName;
      }
      if (other.Value.Length != 0) {
        Value = other.Value;
      }
      if (other.Quality != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality.Unspecified) {
        Quality = other.Quality;
      }
      if (other.timestamp_ != null) {
        if (timestamp_ == null) {
          Timestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        Timestamp.MergeFrom(other.Timestamp);
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            InstanceUniqueName = input.ReadString();
            break;
          }
          case 18: {
            AttributePath = input.ReadString();
            break;
          }
          case 26: {
            AttributeName = input.ReadString();
            break;
          }
          case 34: {
            Value = input.ReadString();
            break;
          }
          case 40: {
            Quality = (global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality) input.ReadEnum();
            break;
          }
          case 50: {
            if (timestamp_ == null) {
              Timestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(Timestamp);
            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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            InstanceUniqueName = input.ReadString();
            break;
          }
          case 18: {
            AttributePath = input.ReadString();
            break;
          }
          case 26: {
            AttributeName = input.ReadString();
            break;
          }
          case 34: {
            Value = input.ReadString();
            break;
          }
          case 40: {
            Quality = (global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.Quality) input.ReadEnum();
            break;
          }
          case 50: {
            if (timestamp_ == null) {
              Timestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(Timestamp);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.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 AlarmStateUpdate() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmStateUpdate(AlarmStateUpdate other) : this() {
      instanceUniqueName_ = other.instanceUniqueName_;
      alarmName_ = other.alarmName_;
      state_ = other.state_;
      priority_ = other.priority_;
      timestamp_ = other.timestamp_ != null ? other.timestamp_.Clone() : null;
      level_ = other.level_;
      message_ = other.message_;
      kind_ = other.kind_;
      active_ = other.active_;
      acknowledged_ = other.acknowledged_;
      confirmed_ = other.confirmed_;
      shelveState_ = other.shelveState_;
      suppressed_ = other.suppressed_;
      sourceReference_ = other.sourceReference_;
      alarmTypeName_ = other.alarmTypeName_;
      category_ = other.category_;
      operatorUser_ = other.operatorUser_;
      operatorComment_ = other.operatorComment_;
      originalRaiseTime_ = other.originalRaiseTime_ != null ? other.originalRaiseTime_.Clone() : null;
      currentValue_ = other.currentValue_;
      limitValue_ = other.limitValue_;
      nativeSourceCanonicalName_ = other.nativeSourceCanonicalName_;
      isConfiguredPlaceholder_ = other.isConfiguredPlaceholder_;
      ackTime_ = other.ackTime_ != null ? other.ackTime_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "instance_unique_name" field.</summary>
    public const int InstanceUniqueNameFieldNumber = 1;
    private string instanceUniqueName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string InstanceUniqueName {
      get { return instanceUniqueName_; }
      set {
        instanceUniqueName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "alarm_name" field.</summary>
    public const int AlarmNameFieldNumber = 2;
    private string alarmName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmName {
      get { return alarmName_; }
      set {
        alarmName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "state" field.</summary>
    public const int StateFieldNumber = 3;
    private global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum state_ = global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum.AlarmStateUnspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum State {
      get { return state_; }
      set {
        state_ = value;
      }
    }

    /// <summary>Field number for the "priority" field.</summary>
    public const int PriorityFieldNumber = 4;
    private int priority_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Priority {
      get { return priority_; }
      set {
        priority_ = value;
      }
    }

    /// <summary>Field number for the "timestamp" field.</summary>
    public const int TimestampFieldNumber = 5;
    private global::Google.Protobuf.WellKnownTypes.Timestamp timestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp Timestamp {
      get { return timestamp_; }
      set {
        timestamp_ = value;
      }
    }

    /// <summary>Field number for the "level" field.</summary>
    public const int LevelFieldNumber = 6;
    private global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum level_ = global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum.AlarmLevelNone;
    /// <summary>
    /// ALARM_LEVEL_NONE for binary trigger types; set by HiLo.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum Level {
      get { return level_; }
      set {
        level_ = value;
      }
    }

    /// <summary>Field number for the "message" field.</summary>
    public const int MessageFieldNumber = 7;
    private string message_ = "";
    /// <summary>
    /// Optional per-band operator message; empty when unset.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Message {
      get { return message_; }
      set {
        message_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "kind" field.</summary>
    public const int KindFieldNumber = 8;
    private string kind_ = "";
    /// <summary>
    /// Native alarm enrichment (additive — computed alarms leave these at defaults).
    /// kind: "Computed" | "NativeOpcUa" | "NativeMxAccess".
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Kind {
      get { return kind_; }
      set {
        kind_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "active" field.</summary>
    public const int ActiveFieldNumber = 9;
    private bool active_;
    /// <summary>
    /// unified condition: active vs inactive
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Active {
      get { return active_; }
      set {
        active_ = value;
      }
    }

    /// <summary>Field number for the "acknowledged" field.</summary>
    public const int AcknowledgedFieldNumber = 10;
    private bool acknowledged_;
    /// <summary>
    /// acked vs unacked
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Acknowledged {
      get { return acknowledged_; }
      set {
        acknowledged_ = value;
      }
    }

    /// <summary>Field number for the "confirmed" field.</summary>
    public const int ConfirmedFieldNumber = 11;
    private bool confirmed_;
    /// <summary>
    /// confirmed (false when not confirmable)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Confirmed {
      get { return confirmed_; }
      set {
        confirmed_ = value;
      }
    }

    /// <summary>Field number for the "shelve_state" field.</summary>
    public const int ShelveStateFieldNumber = 12;
    private string shelveState_ = "";
    /// <summary>
    /// Unshelved | OneShotShelved | TimedShelved | PermanentShelved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ShelveState {
      get { return shelveState_; }
      set {
        shelveState_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "suppressed" field.</summary>
    public const int SuppressedFieldNumber = 13;
    private bool suppressed_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Suppressed {
      get { return suppressed_; }
      set {
        suppressed_ = value;
      }
    }

    /// <summary>Field number for the "source_reference" field.</summary>
    public const int SourceReferenceFieldNumber = 14;
    private string sourceReference_ = "";
    /// <summary>
    /// native per-condition key; empty for computed
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceReference {
      get { return sourceReference_; }
      set {
        sourceReference_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "alarm_type_name" field.</summary>
    public const int AlarmTypeNameFieldNumber = 15;
    private string alarmTypeName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmTypeName {
      get { return alarmTypeName_; }
      set {
        alarmTypeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "category" field.</summary>
    public const int CategoryFieldNumber = 16;
    private string category_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Category {
      get { return category_; }
      set {
        category_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_user" field.</summary>
    public const int OperatorUserFieldNumber = 17;
    private string operatorUser_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorUser {
      get { return operatorUser_; }
      set {
        operatorUser_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_comment" field.</summary>
    public const int OperatorCommentFieldNumber = 18;
    private string operatorComment_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorComment {
      get { return operatorComment_; }
      set {
        operatorComment_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "original_raise_time" field.</summary>
    public const int OriginalRaiseTimeFieldNumber = 19;
    private global::Google.Protobuf.WellKnownTypes.Timestamp originalRaiseTime_;
    /// <summary>
    /// null when unknown
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp OriginalRaiseTime {
      get { return originalRaiseTime_; }
      set {
        originalRaiseTime_ = value;
      }
    }

    /// <summary>Field number for the "current_value" field.</summary>
    public const int CurrentValueFieldNumber = 20;
    private string currentValue_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string CurrentValue {
      get { return currentValue_; }
      set {
        currentValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "limit_value" field.</summary>
    public const int LimitValueFieldNumber = 21;
    private string limitValue_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string LimitValue {
      get { return limitValue_; }
      set {
        limitValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "native_source_canonical_name" field.</summary>
    public const int NativeSourceCanonicalNameFieldNumber = 22;
    private string nativeSourceCanonicalName_ = "";
    /// <summary>
    /// native binding canonical name; empty for computed
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NativeSourceCanonicalName {
      get { return nativeSourceCanonicalName_; }
      set {
        nativeSourceCanonicalName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "is_configured_placeholder" field.</summary>
    public const int IsConfiguredPlaceholderFieldNumber = 23;
    private bool isConfiguredPlaceholder_;
    /// <summary>
    /// true for a quiet-binding placeholder row
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsConfiguredPlaceholder {
      get { return isConfiguredPlaceholder_; }
      set {
        isConfiguredPlaceholder_ = value;
      }
    }

    /// <summary>Field number for the "ack_time" field.</summary>
    public const int AckTimeFieldNumber = 24;
    private global::Google.Protobuf.WellKnownTypes.Timestamp ackTime_;
    /// <summary>
    /// Ack timestamp for the condition; null while unacknowledged and on computed alarms
    /// (MES alarm-status API §6.4). The site stamps the SOURCE's own ack instant where the
    /// protocol supplies one (OPC UA A&amp;C AckedState/TransitionTime) and the DCL's observation
    /// time of the ack transition where it does not (MxAccess Gateway).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp AckTime {
      get { return ackTime_; }
      set {
        ackTime_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AlarmStateUpdate other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (InstanceUniqueName != other.InstanceUniqueName) return false;
      if (AlarmName != other.AlarmName) return false;
      if (State != other.State) return false;
      if (Priority != other.Priority) return false;
      if (!object.Equals(Timestamp, other.Timestamp)) return false;
      if (Level != other.Level) return false;
      if (Message != other.Message) return false;
      if (Kind != other.Kind) return false;
      if (Active != other.Active) return false;
      if (Acknowledged != other.Acknowledged) return false;
      if (Confirmed != other.Confirmed) return false;
      if (ShelveState != other.ShelveState) return false;
      if (Suppressed != other.Suppressed) return false;
      if (SourceReference != other.SourceReference) return false;
      if (AlarmTypeName != other.AlarmTypeName) return false;
      if (Category != other.Category) return false;
      if (OperatorUser != other.OperatorUser) return false;
      if (OperatorComment != other.OperatorComment) return false;
      if (!object.Equals(OriginalRaiseTime, other.OriginalRaiseTime)) return false;
      if (CurrentValue != other.CurrentValue) return false;
      if (LimitValue != other.LimitValue) return false;
      if (NativeSourceCanonicalName != other.NativeSourceCanonicalName) return false;
      if (IsConfiguredPlaceholder != other.IsConfiguredPlaceholder) return false;
      if (!object.Equals(AckTime, other.AckTime)) 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 (InstanceUniqueName.Length != 0) hash ^= InstanceUniqueName.GetHashCode();
      if (AlarmName.Length != 0) hash ^= AlarmName.GetHashCode();
      if (State != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum.AlarmStateUnspecified) hash ^= State.GetHashCode();
      if (Priority != 0) hash ^= Priority.GetHashCode();
      if (timestamp_ != null) hash ^= Timestamp.GetHashCode();
      if (Level != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum.AlarmLevelNone) hash ^= Level.GetHashCode();
      if (Message.Length != 0) hash ^= Message.GetHashCode();
      if (Kind.Length != 0) hash ^= Kind.GetHashCode();
      if (Active != false) hash ^= Active.GetHashCode();
      if (Acknowledged != false) hash ^= Acknowledged.GetHashCode();
      if (Confirmed != false) hash ^= Confirmed.GetHashCode();
      if (ShelveState.Length != 0) hash ^= ShelveState.GetHashCode();
      if (Suppressed != false) hash ^= Suppressed.GetHashCode();
      if (SourceReference.Length != 0) hash ^= SourceReference.GetHashCode();
      if (AlarmTypeName.Length != 0) hash ^= AlarmTypeName.GetHashCode();
      if (Category.Length != 0) hash ^= Category.GetHashCode();
      if (OperatorUser.Length != 0) hash ^= OperatorUser.GetHashCode();
      if (OperatorComment.Length != 0) hash ^= OperatorComment.GetHashCode();
      if (originalRaiseTime_ != null) hash ^= OriginalRaiseTime.GetHashCode();
      if (CurrentValue.Length != 0) hash ^= CurrentValue.GetHashCode();
      if (LimitValue.Length != 0) hash ^= LimitValue.GetHashCode();
      if (NativeSourceCanonicalName.Length != 0) hash ^= NativeSourceCanonicalName.GetHashCode();
      if (IsConfiguredPlaceholder != false) hash ^= IsConfiguredPlaceholder.GetHashCode();
      if (ackTime_ != null) hash ^= AckTime.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 (InstanceUniqueName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(InstanceUniqueName);
      }
      if (AlarmName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(AlarmName);
      }
      if (State != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum.AlarmStateUnspecified) {
        output.WriteRawTag(24);
        output.WriteEnum((int) State);
      }
      if (Priority != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(Priority);
      }
      if (timestamp_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Timestamp);
      }
      if (Level != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum.AlarmLevelNone) {
        output.WriteRawTag(48);
        output.WriteEnum((int) Level);
      }
      if (Message.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Message);
      }
      if (Kind.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(Kind);
      }
      if (Active != false) {
        output.WriteRawTag(72);
        output.WriteBool(Active);
      }
      if (Acknowledged != false) {
        output.WriteRawTag(80);
        output.WriteBool(Acknowledged);
      }
      if (Confirmed != false) {
        output.WriteRawTag(88);
        output.WriteBool(Confirmed);
      }
      if (ShelveState.Length != 0) {
        output.WriteRawTag(98);
        output.WriteString(ShelveState);
      }
      if (Suppressed != false) {
        output.WriteRawTag(104);
        output.WriteBool(Suppressed);
      }
      if (SourceReference.Length != 0) {
        output.WriteRawTag(114);
        output.WriteString(SourceReference);
      }
      if (AlarmTypeName.Length != 0) {
        output.WriteRawTag(122);
        output.WriteString(AlarmTypeName);
      }
      if (Category.Length != 0) {
        output.WriteRawTag(130, 1);
        output.WriteString(Category);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(138, 1);
        output.WriteString(OperatorUser);
      }
      if (OperatorComment.Length != 0) {
        output.WriteRawTag(146, 1);
        output.WriteString(OperatorComment);
      }
      if (originalRaiseTime_ != null) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(OriginalRaiseTime);
      }
      if (CurrentValue.Length != 0) {
        output.WriteRawTag(162, 1);
        output.WriteString(CurrentValue);
      }
      if (LimitValue.Length != 0) {
        output.WriteRawTag(170, 1);
        output.WriteString(LimitValue);
      }
      if (NativeSourceCanonicalName.Length != 0) {
        output.WriteRawTag(178, 1);
        output.WriteString(NativeSourceCanonicalName);
      }
      if (IsConfiguredPlaceholder != false) {
        output.WriteRawTag(184, 1);
        output.WriteBool(IsConfiguredPlaceholder);
      }
      if (ackTime_ != null) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(AckTime);
      }
      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 (InstanceUniqueName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(InstanceUniqueName);
      }
      if (AlarmName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(AlarmName);
      }
      if (State != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum.AlarmStateUnspecified) {
        output.WriteRawTag(24);
        output.WriteEnum((int) State);
      }
      if (Priority != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(Priority);
      }
      if (timestamp_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Timestamp);
      }
      if (Level != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum.AlarmLevelNone) {
        output.WriteRawTag(48);
        output.WriteEnum((int) Level);
      }
      if (Message.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Message);
      }
      if (Kind.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(Kind);
      }
      if (Active != false) {
        output.WriteRawTag(72);
        output.WriteBool(Active);
      }
      if (Acknowledged != false) {
        output.WriteRawTag(80);
        output.WriteBool(Acknowledged);
      }
      if (Confirmed != false) {
        output.WriteRawTag(88);
        output.WriteBool(Confirmed);
      }
      if (ShelveState.Length != 0) {
        output.WriteRawTag(98);
        output.WriteString(ShelveState);
      }
      if (Suppressed != false) {
        output.WriteRawTag(104);
        output.WriteBool(Suppressed);
      }
      if (SourceReference.Length != 0) {
        output.WriteRawTag(114);
        output.WriteString(SourceReference);
      }
      if (AlarmTypeName.Length != 0) {
        output.WriteRawTag(122);
        output.WriteString(AlarmTypeName);
      }
      if (Category.Length != 0) {
        output.WriteRawTag(130, 1);
        output.WriteString(Category);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(138, 1);
        output.WriteString(OperatorUser);
      }
      if (OperatorComment.Length != 0) {
        output.WriteRawTag(146, 1);
        output.WriteString(OperatorComment);
      }
      if (originalRaiseTime_ != null) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(OriginalRaiseTime);
      }
      if (CurrentValue.Length != 0) {
        output.WriteRawTag(162, 1);
        output.WriteString(CurrentValue);
      }
      if (LimitValue.Length != 0) {
        output.WriteRawTag(170, 1);
        output.WriteString(LimitValue);
      }
      if (NativeSourceCanonicalName.Length != 0) {
        output.WriteRawTag(178, 1);
        output.WriteString(NativeSourceCanonicalName);
      }
      if (IsConfiguredPlaceholder != false) {
        output.WriteRawTag(184, 1);
        output.WriteBool(IsConfiguredPlaceholder);
      }
      if (ackTime_ != null) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(AckTime);
      }
      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 (InstanceUniqueName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstanceUniqueName);
      }
      if (AlarmName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmName);
      }
      if (State != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum.AlarmStateUnspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) State);
      }
      if (Priority != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Priority);
      }
      if (timestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Timestamp);
      }
      if (Level != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum.AlarmLevelNone) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Level);
      }
      if (Message.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Message);
      }
      if (Kind.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Kind);
      }
      if (Active != false) {
        size += 1 + 1;
      }
      if (Acknowledged != false) {
        size += 1 + 1;
      }
      if (Confirmed != false) {
        size += 1 + 1;
      }
      if (ShelveState.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ShelveState);
      }
      if (Suppressed != false) {
        size += 1 + 1;
      }
      if (SourceReference.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceReference);
      }
      if (AlarmTypeName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmTypeName);
      }
      if (Category.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(Category);
      }
      if (OperatorUser.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(OperatorUser);
      }
      if (OperatorComment.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(OperatorComment);
      }
      if (originalRaiseTime_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(OriginalRaiseTime);
      }
      if (CurrentValue.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(CurrentValue);
      }
      if (LimitValue.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(LimitValue);
      }
      if (NativeSourceCanonicalName.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(NativeSourceCanonicalName);
      }
      if (IsConfiguredPlaceholder != false) {
        size += 2 + 1;
      }
      if (ackTime_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AckTime);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AlarmStateUpdate other) {
      if (other == null) {
        return;
      }
      if (other.InstanceUniqueName.Length != 0) {
        InstanceUniqueName = other.InstanceUniqueName;
      }
      if (other.AlarmName.Length != 0) {
        AlarmName = other.AlarmName;
      }
      if (other.State != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum.AlarmStateUnspecified) {
        State = other.State;
      }
      if (other.Priority != 0) {
        Priority = other.Priority;
      }
      if (other.timestamp_ != null) {
        if (timestamp_ == null) {
          Timestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        Timestamp.MergeFrom(other.Timestamp);
      }
      if (other.Level != global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum.AlarmLevelNone) {
        Level = other.Level;
      }
      if (other.Message.Length != 0) {
        Message = other.Message;
      }
      if (other.Kind.Length != 0) {
        Kind = other.Kind;
      }
      if (other.Active != false) {
        Active = other.Active;
      }
      if (other.Acknowledged != false) {
        Acknowledged = other.Acknowledged;
      }
      if (other.Confirmed != false) {
        Confirmed = other.Confirmed;
      }
      if (other.ShelveState.Length != 0) {
        ShelveState = other.ShelveState;
      }
      if (other.Suppressed != false) {
        Suppressed = other.Suppressed;
      }
      if (other.SourceReference.Length != 0) {
        SourceReference = other.SourceReference;
      }
      if (other.AlarmTypeName.Length != 0) {
        AlarmTypeName = other.AlarmTypeName;
      }
      if (other.Category.Length != 0) {
        Category = other.Category;
      }
      if (other.OperatorUser.Length != 0) {
        OperatorUser = other.OperatorUser;
      }
      if (other.OperatorComment.Length != 0) {
        OperatorComment = other.OperatorComment;
      }
      if (other.originalRaiseTime_ != null) {
        if (originalRaiseTime_ == null) {
          OriginalRaiseTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        OriginalRaiseTime.MergeFrom(other.OriginalRaiseTime);
      }
      if (other.CurrentValue.Length != 0) {
        CurrentValue = other.CurrentValue;
      }
      if (other.LimitValue.Length != 0) {
        LimitValue = other.LimitValue;
      }
      if (other.NativeSourceCanonicalName.Length != 0) {
        NativeSourceCanonicalName = other.NativeSourceCanonicalName;
      }
      if (other.IsConfiguredPlaceholder != false) {
        IsConfiguredPlaceholder = other.IsConfiguredPlaceholder;
      }
      if (other.ackTime_ != null) {
        if (ackTime_ == null) {
          AckTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        AckTime.MergeFrom(other.AckTime);
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            InstanceUniqueName = input.ReadString();
            break;
          }
          case 18: {
            AlarmName = input.ReadString();
            break;
          }
          case 24: {
            State = (global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum) input.ReadEnum();
            break;
          }
          case 32: {
            Priority = input.ReadInt32();
            break;
          }
          case 42: {
            if (timestamp_ == null) {
              Timestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(Timestamp);
            break;
          }
          case 48: {
            Level = (global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum) input.ReadEnum();
            break;
          }
          case 58: {
            Message = input.ReadString();
            break;
          }
          case 66: {
            Kind = input.ReadString();
            break;
          }
          case 72: {
            Active = input.ReadBool();
            break;
          }
          case 80: {
            Acknowledged = input.ReadBool();
            break;
          }
          case 88: {
            Confirmed = input.ReadBool();
            break;
          }
          case 98: {
            ShelveState = input.ReadString();
            break;
          }
          case 104: {
            Suppressed = input.ReadBool();
            break;
          }
          case 114: {
            SourceReference = input.ReadString();
            break;
          }
          case 122: {
            AlarmTypeName = input.ReadString();
            break;
          }
          case 130: {
            Category = input.ReadString();
            break;
          }
          case 138: {
            OperatorUser = input.ReadString();
            break;
          }
          case 146: {
            OperatorComment = input.ReadString();
            break;
          }
          case 154: {
            if (originalRaiseTime_ == null) {
              OriginalRaiseTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(OriginalRaiseTime);
            break;
          }
          case 162: {
            CurrentValue = input.ReadString();
            break;
          }
          case 170: {
            LimitValue = input.ReadString();
            break;
          }
          case 178: {
            NativeSourceCanonicalName = input.ReadString();
            break;
          }
          case 184: {
            IsConfiguredPlaceholder = input.ReadBool();
            break;
          }
          case 194: {
            if (ackTime_ == null) {
              AckTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(AckTime);
            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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            InstanceUniqueName = input.ReadString();
            break;
          }
          case 18: {
            AlarmName = input.ReadString();
            break;
          }
          case 24: {
            State = (global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateEnum) input.ReadEnum();
            break;
          }
          case 32: {
            Priority = input.ReadInt32();
            break;
          }
          case 42: {
            if (timestamp_ == null) {
              Timestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(Timestamp);
            break;
          }
          case 48: {
            Level = (global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelEnum) input.ReadEnum();
            break;
          }
          case 58: {
            Message = input.ReadString();
            break;
          }
          case 66: {
            Kind = input.ReadString();
            break;
          }
          case 72: {
            Active = input.ReadBool();
            break;
          }
          case 80: {
            Acknowledged = input.ReadBool();
            break;
          }
          case 88: {
            Confirmed = input.ReadBool();
            break;
          }
          case 98: {
            ShelveState = input.ReadString();
            break;
          }
          case 104: {
            Suppressed = input.ReadBool();
            break;
          }
          case 114: {
            SourceReference = input.ReadString();
            break;
          }
          case 122: {
            AlarmTypeName = input.ReadString();
            break;
          }
          case 130: {
            Category = input.ReadString();
            break;
          }
          case 138: {
            OperatorUser = input.ReadString();
            break;
          }
          case 146: {
            OperatorComment = input.ReadString();
            break;
          }
          case 154: {
            if (originalRaiseTime_ == null) {
              OriginalRaiseTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(OriginalRaiseTime);
            break;
          }
          case 162: {
            CurrentValue = input.ReadString();
            break;
          }
          case 170: {
            LimitValue = input.ReadString();
            break;
          }
          case 178: {
            NativeSourceCanonicalName = input.ReadString();
            break;
          }
          case 184: {
            IsConfiguredPlaceholder = input.ReadBool();
            break;
          }
          case 194: {
            if (ackTime_ == null) {
              AckTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(AckTime);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Audit Log (#23) telemetry: single lifecycle event ferried from a site SQLite
  /// hot-path row to central via IngestAuditEvents. Mirrors AuditEvent (Commons)
  /// minus the site-local ForwardState and the central IngestedAtUtc (set on ingest).
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AuditEventDto : pb::IMessage<AuditEventDto>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AuditEventDto> _parser = new pb::MessageParser<AuditEventDto>(() => new AuditEventDto());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AuditEventDto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor.MessageTypes[5]; }
    }

    [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 AuditEventDto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AuditEventDto(AuditEventDto other) : this() {
      eventId_ = other.eventId_;
      occurredAtUtc_ = other.occurredAtUtc_ != null ? other.occurredAtUtc_.Clone() : null;
      channel_ = other.channel_;
      kind_ = other.kind_;
      correlationId_ = other.correlationId_;
      sourceSiteId_ = other.sourceSiteId_;
      sourceInstanceId_ = other.sourceInstanceId_;
      sourceScript_ = other.sourceScript_;
      actor_ = other.actor_;
      target_ = other.target_;
      status_ = other.status_;
      HttpStatus = other.HttpStatus;
      DurationMs = other.DurationMs;
      errorMessage_ = other.errorMessage_;
      errorDetail_ = other.errorDetail_;
      requestSummary_ = other.requestSummary_;
      responseSummary_ = other.responseSummary_;
      payloadTruncated_ = other.payloadTruncated_;
      extra_ = other.extra_;
      executionId_ = other.executionId_;
      parentExecutionId_ = other.parentExecutionId_;
      sourceNode_ = other.sourceNode_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "event_id" field.</summary>
    public const int EventIdFieldNumber = 1;
    private string eventId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string EventId {
      get { return eventId_; }
      set {
        eventId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "occurred_at_utc" field.</summary>
    public const int OccurredAtUtcFieldNumber = 2;
    private global::Google.Protobuf.WellKnownTypes.Timestamp occurredAtUtc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp OccurredAtUtc {
      get { return occurredAtUtc_; }
      set {
        occurredAtUtc_ = value;
      }
    }

    /// <summary>Field number for the "channel" field.</summary>
    public const int ChannelFieldNumber = 3;
    private string channel_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Channel {
      get { return channel_; }
      set {
        channel_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "kind" field.</summary>
    public const int KindFieldNumber = 4;
    private string kind_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Kind {
      get { return kind_; }
      set {
        kind_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "correlation_id" field.</summary>
    public const int CorrelationIdFieldNumber = 5;
    private string correlationId_ = "";
    /// <summary>
    /// empty string represents null
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string CorrelationId {
      get { return correlationId_; }
      set {
        correlationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "source_site_id" field.</summary>
    public const int SourceSiteIdFieldNumber = 6;
    private string sourceSiteId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceSiteId {
      get { return sourceSiteId_; }
      set {
        sourceSiteId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "source_instance_id" field.</summary>
    public const int SourceInstanceIdFieldNumber = 7;
    private string sourceInstanceId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceInstanceId {
      get { return sourceInstanceId_; }
      set {
        sourceInstanceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "source_script" field.</summary>
    public const int SourceScriptFieldNumber = 8;
    private string sourceScript_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceScript {
      get { return sourceScript_; }
      set {
        sourceScript_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "actor" field.</summary>
    public const int ActorFieldNumber = 9;
    private string actor_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Actor {
      get { return actor_; }
      set {
        actor_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "target" field.</summary>
    public const int TargetFieldNumber = 10;
    private string target_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Target {
      get { return target_; }
      set {
        target_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 11;
    private string status_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Status {
      get { return status_; }
      set {
        status_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "http_status" field.</summary>
    public const int HttpStatusFieldNumber = 12;
    private static readonly pb::FieldCodec<int?> _single_httpStatus_codec = pb::FieldCodec.ForStructWrapper<int>(98);
    private int? httpStatus_;
    /// <summary>
    /// null when absent
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int? HttpStatus {
      get { return httpStatus_; }
      set {
        httpStatus_ = value;
      }
    }


    /// <summary>Field number for the "duration_ms" field.</summary>
    public const int DurationMsFieldNumber = 13;
    private static readonly pb::FieldCodec<int?> _single_durationMs_codec = pb::FieldCodec.ForStructWrapper<int>(106);
    private int? durationMs_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int? DurationMs {
      get { return durationMs_; }
      set {
        durationMs_ = value;
      }
    }


    /// <summary>Field number for the "error_message" field.</summary>
    public const int ErrorMessageFieldNumber = 14;
    private string errorMessage_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ErrorMessage {
      get { return errorMessage_; }
      set {
        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "error_detail" field.</summary>
    public const int ErrorDetailFieldNumber = 15;
    private string errorDetail_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ErrorDetail {
      get { return errorDetail_; }
      set {
        errorDetail_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "request_summary" field.</summary>
    public const int RequestSummaryFieldNumber = 16;
    private string requestSummary_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string RequestSummary {
      get { return requestSummary_; }
      set {
        requestSummary_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "response_summary" field.</summary>
    public const int ResponseSummaryFieldNumber = 17;
    private string responseSummary_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ResponseSummary {
      get { return responseSummary_; }
      set {
        responseSummary_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "payload_truncated" field.</summary>
    public const int PayloadTruncatedFieldNumber = 18;
    private bool payloadTruncated_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool PayloadTruncated {
      get { return payloadTruncated_; }
      set {
        payloadTruncated_ = value;
      }
    }

    /// <summary>Field number for the "extra" field.</summary>
    public const int ExtraFieldNumber = 19;
    private string extra_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Extra {
      get { return extra_; }
      set {
        extra_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "execution_id" field.</summary>
    public const int ExecutionIdFieldNumber = 20;
    private string executionId_ = "";
    /// <summary>
    /// empty string represents null
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ExecutionId {
      get { return executionId_; }
      set {
        executionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "parent_execution_id" field.</summary>
    public const int ParentExecutionIdFieldNumber = 21;
    private string parentExecutionId_ = "";
    /// <summary>
    /// empty string represents null
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ParentExecutionId {
      get { return parentExecutionId_; }
      set {
        parentExecutionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "source_node" field.</summary>
    public const int SourceNodeFieldNumber = 22;
    private string sourceNode_ = "";
    /// <summary>
    /// empty string represents null
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceNode {
      get { return sourceNode_; }
      set {
        sourceNode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AuditEventDto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (EventId != other.EventId) return false;
      if (!object.Equals(OccurredAtUtc, other.OccurredAtUtc)) return false;
      if (Channel != other.Channel) return false;
      if (Kind != other.Kind) return false;
      if (CorrelationId != other.CorrelationId) return false;
      if (SourceSiteId != other.SourceSiteId) return false;
      if (SourceInstanceId != other.SourceInstanceId) return false;
      if (SourceScript != other.SourceScript) return false;
      if (Actor != other.Actor) return false;
      if (Target != other.Target) return false;
      if (Status != other.Status) return false;
      if (HttpStatus != other.HttpStatus) return false;
      if (DurationMs != other.DurationMs) return false;
      if (ErrorMessage != other.ErrorMessage) return false;
      if (ErrorDetail != other.ErrorDetail) return false;
      if (RequestSummary != other.RequestSummary) return false;
      if (ResponseSummary != other.ResponseSummary) return false;
      if (PayloadTruncated != other.PayloadTruncated) return false;
      if (Extra != other.Extra) return false;
      if (ExecutionId != other.ExecutionId) return false;
      if (ParentExecutionId != other.ParentExecutionId) return false;
      if (SourceNode != other.SourceNode) 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 (EventId.Length != 0) hash ^= EventId.GetHashCode();
      if (occurredAtUtc_ != null) hash ^= OccurredAtUtc.GetHashCode();
      if (Channel.Length != 0) hash ^= Channel.GetHashCode();
      if (Kind.Length != 0) hash ^= Kind.GetHashCode();
      if (CorrelationId.Length != 0) hash ^= CorrelationId.GetHashCode();
      if (SourceSiteId.Length != 0) hash ^= SourceSiteId.GetHashCode();
      if (SourceInstanceId.Length != 0) hash ^= SourceInstanceId.GetHashCode();
      if (SourceScript.Length != 0) hash ^= SourceScript.GetHashCode();
      if (Actor.Length != 0) hash ^= Actor.GetHashCode();
      if (Target.Length != 0) hash ^= Target.GetHashCode();
      if (Status.Length != 0) hash ^= Status.GetHashCode();
      if (httpStatus_ != null) hash ^= HttpStatus.GetHashCode();
      if (durationMs_ != null) hash ^= DurationMs.GetHashCode();
      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
      if (ErrorDetail.Length != 0) hash ^= ErrorDetail.GetHashCode();
      if (RequestSummary.Length != 0) hash ^= RequestSummary.GetHashCode();
      if (ResponseSummary.Length != 0) hash ^= ResponseSummary.GetHashCode();
      if (PayloadTruncated != false) hash ^= PayloadTruncated.GetHashCode();
      if (Extra.Length != 0) hash ^= Extra.GetHashCode();
      if (ExecutionId.Length != 0) hash ^= ExecutionId.GetHashCode();
      if (ParentExecutionId.Length != 0) hash ^= ParentExecutionId.GetHashCode();
      if (SourceNode.Length != 0) hash ^= SourceNode.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 (EventId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(EventId);
      }
      if (occurredAtUtc_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(OccurredAtUtc);
      }
      if (Channel.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Channel);
      }
      if (Kind.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Kind);
      }
      if (CorrelationId.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(CorrelationId);
      }
      if (SourceSiteId.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(SourceSiteId);
      }
      if (SourceInstanceId.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(SourceInstanceId);
      }
      if (SourceScript.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(SourceScript);
      }
      if (Actor.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(Actor);
      }
      if (Target.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(Target);
      }
      if (Status.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(Status);
      }
      if (httpStatus_ != null) {
        _single_httpStatus_codec.WriteTagAndValue(output, HttpStatus);
      }
      if (durationMs_ != null) {
        _single_durationMs_codec.WriteTagAndValue(output, DurationMs);
      }
      if (ErrorMessage.Length != 0) {
        output.WriteRawTag(114);
        output.WriteString(ErrorMessage);
      }
      if (ErrorDetail.Length != 0) {
        output.WriteRawTag(122);
        output.WriteString(ErrorDetail);
      }
      if (RequestSummary.Length != 0) {
        output.WriteRawTag(130, 1);
        output.WriteString(RequestSummary);
      }
      if (ResponseSummary.Length != 0) {
        output.WriteRawTag(138, 1);
        output.WriteString(ResponseSummary);
      }
      if (PayloadTruncated != false) {
        output.WriteRawTag(144, 1);
        output.WriteBool(PayloadTruncated);
      }
      if (Extra.Length != 0) {
        output.WriteRawTag(154, 1);
        output.WriteString(Extra);
      }
      if (ExecutionId.Length != 0) {
        output.WriteRawTag(162, 1);
        output.WriteString(ExecutionId);
      }
      if (ParentExecutionId.Length != 0) {
        output.WriteRawTag(170, 1);
        output.WriteString(ParentExecutionId);
      }
      if (SourceNode.Length != 0) {
        output.WriteRawTag(178, 1);
        output.WriteString(SourceNode);
      }
      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 (EventId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(EventId);
      }
      if (occurredAtUtc_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(OccurredAtUtc);
      }
      if (Channel.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Channel);
      }
      if (Kind.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Kind);
      }
      if (CorrelationId.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(CorrelationId);
      }
      if (SourceSiteId.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(SourceSiteId);
      }
      if (SourceInstanceId.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(SourceInstanceId);
      }
      if (SourceScript.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(SourceScript);
      }
      if (Actor.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(Actor);
      }
      if (Target.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(Target);
      }
      if (Status.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(Status);
      }
      if (httpStatus_ != null) {
        _single_httpStatus_codec.WriteTagAndValue(ref output, HttpStatus);
      }
      if (durationMs_ != null) {
        _single_durationMs_codec.WriteTagAndValue(ref output, DurationMs);
      }
      if (ErrorMessage.Length != 0) {
        output.WriteRawTag(114);
        output.WriteString(ErrorMessage);
      }
      if (ErrorDetail.Length != 0) {
        output.WriteRawTag(122);
        output.WriteString(ErrorDetail);
      }
      if (RequestSummary.Length != 0) {
        output.WriteRawTag(130, 1);
        output.WriteString(RequestSummary);
      }
      if (ResponseSummary.Length != 0) {
        output.WriteRawTag(138, 1);
        output.WriteString(ResponseSummary);
      }
      if (PayloadTruncated != false) {
        output.WriteRawTag(144, 1);
        output.WriteBool(PayloadTruncated);
      }
      if (Extra.Length != 0) {
        output.WriteRawTag(154, 1);
        output.WriteString(Extra);
      }
      if (ExecutionId.Length != 0) {
        output.WriteRawTag(162, 1);
        output.WriteString(ExecutionId);
      }
      if (ParentExecutionId.Length != 0) {
        output.WriteRawTag(170, 1);
        output.WriteString(ParentExecutionId);
      }
      if (SourceNode.Length != 0) {
        output.WriteRawTag(178, 1);
        output.WriteString(SourceNode);
      }
      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 (EventId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(EventId);
      }
      if (occurredAtUtc_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(OccurredAtUtc);
      }
      if (Channel.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Channel);
      }
      if (Kind.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Kind);
      }
      if (CorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CorrelationId);
      }
      if (SourceSiteId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceSiteId);
      }
      if (SourceInstanceId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceInstanceId);
      }
      if (SourceScript.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceScript);
      }
      if (Actor.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Actor);
      }
      if (Target.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Target);
      }
      if (Status.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Status);
      }
      if (httpStatus_ != null) {
        size += _single_httpStatus_codec.CalculateSizeWithTag(HttpStatus);
      }
      if (durationMs_ != null) {
        size += _single_durationMs_codec.CalculateSizeWithTag(DurationMs);
      }
      if (ErrorMessage.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
      }
      if (ErrorDetail.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ErrorDetail);
      }
      if (RequestSummary.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(RequestSummary);
      }
      if (ResponseSummary.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(ResponseSummary);
      }
      if (PayloadTruncated != false) {
        size += 2 + 1;
      }
      if (Extra.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(Extra);
      }
      if (ExecutionId.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(ExecutionId);
      }
      if (ParentExecutionId.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(ParentExecutionId);
      }
      if (SourceNode.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(SourceNode);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AuditEventDto other) {
      if (other == null) {
        return;
      }
      if (other.EventId.Length != 0) {
        EventId = other.EventId;
      }
      if (other.occurredAtUtc_ != null) {
        if (occurredAtUtc_ == null) {
          OccurredAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        OccurredAtUtc.MergeFrom(other.OccurredAtUtc);
      }
      if (other.Channel.Length != 0) {
        Channel = other.Channel;
      }
      if (other.Kind.Length != 0) {
        Kind = other.Kind;
      }
      if (other.CorrelationId.Length != 0) {
        CorrelationId = other.CorrelationId;
      }
      if (other.SourceSiteId.Length != 0) {
        SourceSiteId = other.SourceSiteId;
      }
      if (other.SourceInstanceId.Length != 0) {
        SourceInstanceId = other.SourceInstanceId;
      }
      if (other.SourceScript.Length != 0) {
        SourceScript = other.SourceScript;
      }
      if (other.Actor.Length != 0) {
        Actor = other.Actor;
      }
      if (other.Target.Length != 0) {
        Target = other.Target;
      }
      if (other.Status.Length != 0) {
        Status = other.Status;
      }
      if (other.httpStatus_ != null) {
        if (httpStatus_ == null || other.HttpStatus != 0) {
          HttpStatus = other.HttpStatus;
        }
      }
      if (other.durationMs_ != null) {
        if (durationMs_ == null || other.DurationMs != 0) {
          DurationMs = other.DurationMs;
        }
      }
      if (other.ErrorMessage.Length != 0) {
        ErrorMessage = other.ErrorMessage;
      }
      if (other.ErrorDetail.Length != 0) {
        ErrorDetail = other.ErrorDetail;
      }
      if (other.RequestSummary.Length != 0) {
        RequestSummary = other.RequestSummary;
      }
      if (other.ResponseSummary.Length != 0) {
        ResponseSummary = other.ResponseSummary;
      }
      if (other.PayloadTruncated != false) {
        PayloadTruncated = other.PayloadTruncated;
      }
      if (other.Extra.Length != 0) {
        Extra = other.Extra;
      }
      if (other.ExecutionId.Length != 0) {
        ExecutionId = other.ExecutionId;
      }
      if (other.ParentExecutionId.Length != 0) {
        ParentExecutionId = other.ParentExecutionId;
      }
      if (other.SourceNode.Length != 0) {
        SourceNode = other.SourceNode;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            EventId = input.ReadString();
            break;
          }
          case 18: {
            if (occurredAtUtc_ == null) {
              OccurredAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(OccurredAtUtc);
            break;
          }
          case 26: {
            Channel = input.ReadString();
            break;
          }
          case 34: {
            Kind = input.ReadString();
            break;
          }
          case 42: {
            CorrelationId = input.ReadString();
            break;
          }
          case 50: {
            SourceSiteId = input.ReadString();
            break;
          }
          case 58: {
            SourceInstanceId = input.ReadString();
            break;
          }
          case 66: {
            SourceScript = input.ReadString();
            break;
          }
          case 74: {
            Actor = input.ReadString();
            break;
          }
          case 82: {
            Target = input.ReadString();
            break;
          }
          case 90: {
            Status = input.ReadString();
            break;
          }
          case 98: {
            int? value = _single_httpStatus_codec.Read(input);
            if (httpStatus_ == null || value != 0) {
              HttpStatus = value;
            }
            break;
          }
          case 106: {
            int? value = _single_durationMs_codec.Read(input);
            if (durationMs_ == null || value != 0) {
              DurationMs = value;
            }
            break;
          }
          case 114: {
            ErrorMessage = input.ReadString();
            break;
          }
          case 122: {
            ErrorDetail = input.ReadString();
            break;
          }
          case 130: {
            RequestSummary = input.ReadString();
            break;
          }
          case 138: {
            ResponseSummary = input.ReadString();
            break;
          }
          case 144: {
            PayloadTruncated = input.ReadBool();
            break;
          }
          case 154: {
            Extra = input.ReadString();
            break;
          }
          case 162: {
            ExecutionId = input.ReadString();
            break;
          }
          case 170: {
            ParentExecutionId = input.ReadString();
            break;
          }
          case 178: {
            SourceNode = 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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            EventId = input.ReadString();
            break;
          }
          case 18: {
            if (occurredAtUtc_ == null) {
              OccurredAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(OccurredAtUtc);
            break;
          }
          case 26: {
            Channel = input.ReadString();
            break;
          }
          case 34: {
            Kind = input.ReadString();
            break;
          }
          case 42: {
            CorrelationId = input.ReadString();
            break;
          }
          case 50: {
            SourceSiteId = input.ReadString();
            break;
          }
          case 58: {
            SourceInstanceId = input.ReadString();
            break;
          }
          case 66: {
            SourceScript = input.ReadString();
            break;
          }
          case 74: {
            Actor = input.ReadString();
            break;
          }
          case 82: {
            Target = input.ReadString();
            break;
          }
          case 90: {
            Status = input.ReadString();
            break;
          }
          case 98: {
            int? value = _single_httpStatus_codec.Read(ref input);
            if (httpStatus_ == null || value != 0) {
              HttpStatus = value;
            }
            break;
          }
          case 106: {
            int? value = _single_durationMs_codec.Read(ref input);
            if (durationMs_ == null || value != 0) {
              DurationMs = value;
            }
            break;
          }
          case 114: {
            ErrorMessage = input.ReadString();
            break;
          }
          case 122: {
            ErrorDetail = input.ReadString();
            break;
          }
          case 130: {
            RequestSummary = input.ReadString();
            break;
          }
          case 138: {
            ResponseSummary = input.ReadString();
            break;
          }
          case 144: {
            PayloadTruncated = input.ReadBool();
            break;
          }
          case 154: {
            Extra = input.ReadString();
            break;
          }
          case 162: {
            ExecutionId = input.ReadString();
            break;
          }
          case 170: {
            ParentExecutionId = input.ReadString();
            break;
          }
          case 178: {
            SourceNode = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor.MessageTypes[6]; }
    }

    [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 AuditEventBatch() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "events" field.</summary>
    public const int EventsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto> _repeated_events_codec
        = pb::FieldCodec.ForMessage(10, global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto> events_ = new pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto> Events {
      get { return events_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AuditEventBatch other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!events_.Equals(other.events_)) 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 ^= events_.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
      events_.WriteTo(output, _repeated_events_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) {
      events_.WriteTo(ref output, _repeated_events_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 += events_.CalculateSize(_repeated_events_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AuditEventBatch other) {
      if (other == null) {
        return;
      }
      events_.Add(other.events_);
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            events_.AddEntriesFrom(input, _repeated_events_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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            events_.AddEntriesFrom(ref input, _repeated_events_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor.MessageTypes[7]; }
    }

    [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 IngestAck() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "accepted_event_ids" field.</summary>
    public const int AcceptedEventIdsFieldNumber = 1;
    private static readonly pb::FieldCodec<string> _repeated_acceptedEventIds_codec
        = pb::FieldCodec.ForString(10);
    private readonly pbc::RepeatedField<string> acceptedEventIds_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> AcceptedEventIds {
      get { return acceptedEventIds_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(IngestAck other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!acceptedEventIds_.Equals(other.acceptedEventIds_)) 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 ^= acceptedEventIds_.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
      acceptedEventIds_.WriteTo(output, _repeated_acceptedEventIds_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) {
      acceptedEventIds_.WriteTo(ref output, _repeated_acceptedEventIds_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 += acceptedEventIds_.CalculateSize(_repeated_acceptedEventIds_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(IngestAck other) {
      if (other == null) {
        return;
      }
      acceptedEventIds_.Add(other.acceptedEventIds_);
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            acceptedEventIds_.AddEntriesFrom(input, _repeated_acceptedEventIds_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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            acceptedEventIds_.AddEntriesFrom(ref input, _repeated_acceptedEventIds_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Audit Log (#23) M3 cached-call combined telemetry: a single packet carries
  /// both the AuditEvent row to insert and the SiteCalls operational-state upsert
  /// for one lifecycle event of a cached outbound call. Central writes both rows
  /// in one MS SQL transaction so the audit and operational mirrors never drift.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class SiteCallOperationalDto : pb::IMessage<SiteCallOperationalDto>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SiteCallOperationalDto> _parser = new pb::MessageParser<SiteCallOperationalDto>(() => new SiteCallOperationalDto());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SiteCallOperationalDto> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor.MessageTypes[8]; }
    }

    [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 SiteCallOperationalDto() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SiteCallOperationalDto(SiteCallOperationalDto other) : this() {
      trackedOperationId_ = other.trackedOperationId_;
      channel_ = other.channel_;
      target_ = other.target_;
      sourceSite_ = other.sourceSite_;
      status_ = other.status_;
      retryCount_ = other.retryCount_;
      lastError_ = other.lastError_;
      HttpStatus = other.HttpStatus;
      createdAtUtc_ = other.createdAtUtc_ != null ? other.createdAtUtc_.Clone() : null;
      updatedAtUtc_ = other.updatedAtUtc_ != null ? other.updatedAtUtc_.Clone() : null;
      terminalAtUtc_ = other.terminalAtUtc_ != null ? other.terminalAtUtc_.Clone() : null;
      sourceNode_ = other.sourceNode_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "tracked_operation_id" field.</summary>
    public const int TrackedOperationIdFieldNumber = 1;
    private string trackedOperationId_ = "";
    /// <summary>
    /// GUID string ("D" format)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TrackedOperationId {
      get { return trackedOperationId_; }
      set {
        trackedOperationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "channel" field.</summary>
    public const int ChannelFieldNumber = 2;
    private string channel_ = "";
    /// <summary>
    /// "ApiOutbound" | "DbOutbound"
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Channel {
      get { return channel_; }
      set {
        channel_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "target" field.</summary>
    public const int TargetFieldNumber = 3;
    private string target_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Target {
      get { return target_; }
      set {
        target_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "source_site" field.</summary>
    public const int SourceSiteFieldNumber = 4;
    private string sourceSite_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceSite {
      get { return sourceSite_; }
      set {
        sourceSite_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 5;
    private string status_ = "";
    /// <summary>
    /// AuditStatus name
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Status {
      get { return status_; }
      set {
        status_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "retry_count" field.</summary>
    public const int RetryCountFieldNumber = 6;
    private int retryCount_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RetryCount {
      get { return retryCount_; }
      set {
        retryCount_ = value;
      }
    }

    /// <summary>Field number for the "last_error" field.</summary>
    public const int LastErrorFieldNumber = 7;
    private string lastError_ = "";
    /// <summary>
    /// empty when null
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string LastError {
      get { return lastError_; }
      set {
        lastError_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "http_status" field.</summary>
    public const int HttpStatusFieldNumber = 8;
    private static readonly pb::FieldCodec<int?> _single_httpStatus_codec = pb::FieldCodec.ForStructWrapper<int>(66);
    private int? httpStatus_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int? HttpStatus {
      get { return httpStatus_; }
      set {
        httpStatus_ = value;
      }
    }


    /// <summary>Field number for the "created_at_utc" field.</summary>
    public const int CreatedAtUtcFieldNumber = 9;
    private global::Google.Protobuf.WellKnownTypes.Timestamp createdAtUtc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp CreatedAtUtc {
      get { return createdAtUtc_; }
      set {
        createdAtUtc_ = value;
      }
    }

    /// <summary>Field number for the "updated_at_utc" field.</summary>
    public const int UpdatedAtUtcFieldNumber = 10;
    private global::Google.Protobuf.WellKnownTypes.Timestamp updatedAtUtc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp UpdatedAtUtc {
      get { return updatedAtUtc_; }
      set {
        updatedAtUtc_ = value;
      }
    }

    /// <summary>Field number for the "terminal_at_utc" field.</summary>
    public const int TerminalAtUtcFieldNumber = 11;
    private global::Google.Protobuf.WellKnownTypes.Timestamp terminalAtUtc_;
    /// <summary>
    /// absent when not terminal
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp TerminalAtUtc {
      get { return terminalAtUtc_; }
      set {
        terminalAtUtc_ = value;
      }
    }

    /// <summary>Field number for the "source_node" field.</summary>
    public const int SourceNodeFieldNumber = 12;
    private string sourceNode_ = "";
    /// <summary>
    /// empty string represents null
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceNode {
      get { return sourceNode_; }
      set {
        sourceNode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SiteCallOperationalDto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (TrackedOperationId != other.TrackedOperationId) return false;
      if (Channel != other.Channel) return false;
      if (Target != other.Target) return false;
      if (SourceSite != other.SourceSite) return false;
      if (Status != other.Status) return false;
      if (RetryCount != other.RetryCount) return false;
      if (LastError != other.LastError) return false;
      if (HttpStatus != other.HttpStatus) return false;
      if (!object.Equals(CreatedAtUtc, other.CreatedAtUtc)) return false;
      if (!object.Equals(UpdatedAtUtc, other.UpdatedAtUtc)) return false;
      if (!object.Equals(TerminalAtUtc, other.TerminalAtUtc)) return false;
      if (SourceNode != other.SourceNode) 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 (TrackedOperationId.Length != 0) hash ^= TrackedOperationId.GetHashCode();
      if (Channel.Length != 0) hash ^= Channel.GetHashCode();
      if (Target.Length != 0) hash ^= Target.GetHashCode();
      if (SourceSite.Length != 0) hash ^= SourceSite.GetHashCode();
      if (Status.Length != 0) hash ^= Status.GetHashCode();
      if (RetryCount != 0) hash ^= RetryCount.GetHashCode();
      if (LastError.Length != 0) hash ^= LastError.GetHashCode();
      if (httpStatus_ != null) hash ^= HttpStatus.GetHashCode();
      if (createdAtUtc_ != null) hash ^= CreatedAtUtc.GetHashCode();
      if (updatedAtUtc_ != null) hash ^= UpdatedAtUtc.GetHashCode();
      if (terminalAtUtc_ != null) hash ^= TerminalAtUtc.GetHashCode();
      if (SourceNode.Length != 0) hash ^= SourceNode.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 (TrackedOperationId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(TrackedOperationId);
      }
      if (Channel.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Channel);
      }
      if (Target.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Target);
      }
      if (SourceSite.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(SourceSite);
      }
      if (Status.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Status);
      }
      if (RetryCount != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(RetryCount);
      }
      if (LastError.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(LastError);
      }
      if (httpStatus_ != null) {
        _single_httpStatus_codec.WriteTagAndValue(output, HttpStatus);
      }
      if (createdAtUtc_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(CreatedAtUtc);
      }
      if (updatedAtUtc_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(UpdatedAtUtc);
      }
      if (terminalAtUtc_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(TerminalAtUtc);
      }
      if (SourceNode.Length != 0) {
        output.WriteRawTag(98);
        output.WriteString(SourceNode);
      }
      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 (TrackedOperationId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(TrackedOperationId);
      }
      if (Channel.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Channel);
      }
      if (Target.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Target);
      }
      if (SourceSite.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(SourceSite);
      }
      if (Status.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Status);
      }
      if (RetryCount != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(RetryCount);
      }
      if (LastError.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(LastError);
      }
      if (httpStatus_ != null) {
        _single_httpStatus_codec.WriteTagAndValue(ref output, HttpStatus);
      }
      if (createdAtUtc_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(CreatedAtUtc);
      }
      if (updatedAtUtc_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(UpdatedAtUtc);
      }
      if (terminalAtUtc_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(TerminalAtUtc);
      }
      if (SourceNode.Length != 0) {
        output.WriteRawTag(98);
        output.WriteString(SourceNode);
      }
      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 (TrackedOperationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TrackedOperationId);
      }
      if (Channel.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Channel);
      }
      if (Target.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Target);
      }
      if (SourceSite.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceSite);
      }
      if (Status.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Status);
      }
      if (RetryCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RetryCount);
      }
      if (LastError.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(LastError);
      }
      if (httpStatus_ != null) {
        size += _single_httpStatus_codec.CalculateSizeWithTag(HttpStatus);
      }
      if (createdAtUtc_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CreatedAtUtc);
      }
      if (updatedAtUtc_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UpdatedAtUtc);
      }
      if (terminalAtUtc_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TerminalAtUtc);
      }
      if (SourceNode.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceNode);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SiteCallOperationalDto other) {
      if (other == null) {
        return;
      }
      if (other.TrackedOperationId.Length != 0) {
        TrackedOperationId = other.TrackedOperationId;
      }
      if (other.Channel.Length != 0) {
        Channel = other.Channel;
      }
      if (other.Target.Length != 0) {
        Target = other.Target;
      }
      if (other.SourceSite.Length != 0) {
        SourceSite = other.SourceSite;
      }
      if (other.Status.Length != 0) {
        Status = other.Status;
      }
      if (other.RetryCount != 0) {
        RetryCount = other.RetryCount;
      }
      if (other.LastError.Length != 0) {
        LastError = other.LastError;
      }
      if (other.httpStatus_ != null) {
        if (httpStatus_ == null || other.HttpStatus != 0) {
          HttpStatus = other.HttpStatus;
        }
      }
      if (other.createdAtUtc_ != null) {
        if (createdAtUtc_ == null) {
          CreatedAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        CreatedAtUtc.MergeFrom(other.CreatedAtUtc);
      }
      if (other.updatedAtUtc_ != null) {
        if (updatedAtUtc_ == null) {
          UpdatedAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        UpdatedAtUtc.MergeFrom(other.UpdatedAtUtc);
      }
      if (other.terminalAtUtc_ != null) {
        if (terminalAtUtc_ == null) {
          TerminalAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        TerminalAtUtc.MergeFrom(other.TerminalAtUtc);
      }
      if (other.SourceNode.Length != 0) {
        SourceNode = other.SourceNode;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            TrackedOperationId = input.ReadString();
            break;
          }
          case 18: {
            Channel = input.ReadString();
            break;
          }
          case 26: {
            Target = input.ReadString();
            break;
          }
          case 34: {
            SourceSite = input.ReadString();
            break;
          }
          case 42: {
            Status = input.ReadString();
            break;
          }
          case 48: {
            RetryCount = input.ReadInt32();
            break;
          }
          case 58: {
            LastError = input.ReadString();
            break;
          }
          case 66: {
            int? value = _single_httpStatus_codec.Read(input);
            if (httpStatus_ == null || value != 0) {
              HttpStatus = value;
            }
            break;
          }
          case 74: {
            if (createdAtUtc_ == null) {
              CreatedAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(CreatedAtUtc);
            break;
          }
          case 82: {
            if (updatedAtUtc_ == null) {
              UpdatedAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(UpdatedAtUtc);
            break;
          }
          case 90: {
            if (terminalAtUtc_ == null) {
              TerminalAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(TerminalAtUtc);
            break;
          }
          case 98: {
            SourceNode = 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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            TrackedOperationId = input.ReadString();
            break;
          }
          case 18: {
            Channel = input.ReadString();
            break;
          }
          case 26: {
            Target = input.ReadString();
            break;
          }
          case 34: {
            SourceSite = input.ReadString();
            break;
          }
          case 42: {
            Status = input.ReadString();
            break;
          }
          case 48: {
            RetryCount = input.ReadInt32();
            break;
          }
          case 58: {
            LastError = input.ReadString();
            break;
          }
          case 66: {
            int? value = _single_httpStatus_codec.Read(ref input);
            if (httpStatus_ == null || value != 0) {
              HttpStatus = value;
            }
            break;
          }
          case 74: {
            if (createdAtUtc_ == null) {
              CreatedAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(CreatedAtUtc);
            break;
          }
          case 82: {
            if (updatedAtUtc_ == null) {
              UpdatedAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(UpdatedAtUtc);
            break;
          }
          case 90: {
            if (terminalAtUtc_ == null) {
              TerminalAtUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(TerminalAtUtc);
            break;
          }
          case 98: {
            SourceNode = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor.MessageTypes[9]; }
    }

    [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 CachedTelemetryPacket() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "audit_event" field.</summary>
    public const int AuditEventFieldNumber = 1;
    private global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto auditEvent_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto AuditEvent {
      get { return auditEvent_; }
      set {
        auditEvent_ = value;
      }
    }

    /// <summary>Field number for the "operational" field.</summary>
    public const int OperationalFieldNumber = 2;
    private global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto operational_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto Operational {
      get { return operational_; }
      set {
        operational_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CachedTelemetryPacket other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AuditEvent, other.AuditEvent)) return false;
      if (!object.Equals(Operational, other.Operational)) 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 (auditEvent_ != null) hash ^= AuditEvent.GetHashCode();
      if (operational_ != null) hash ^= Operational.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 (auditEvent_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AuditEvent);
      }
      if (operational_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Operational);
      }
      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 (auditEvent_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(AuditEvent);
      }
      if (operational_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Operational);
      }
      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 (auditEvent_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AuditEvent);
      }
      if (operational_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Operational);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CachedTelemetryPacket other) {
      if (other == null) {
        return;
      }
      if (other.auditEvent_ != null) {
        if (auditEvent_ == null) {
          AuditEvent = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto();
        }
        AuditEvent.MergeFrom(other.AuditEvent);
      }
      if (other.operational_ != null) {
        if (operational_ == null) {
          Operational = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto();
        }
        Operational.MergeFrom(other.Operational);
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (auditEvent_ == null) {
              AuditEvent = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto();
            }
            input.ReadMessage(AuditEvent);
            break;
          }
          case 18: {
            if (operational_ == null) {
              Operational = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto();
            }
            input.ReadMessage(Operational);
            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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (auditEvent_ == null) {
              AuditEvent = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto();
            }
            input.ReadMessage(AuditEvent);
            break;
          }
          case 18: {
            if (operational_ == null) {
              Operational = new global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto();
            }
            input.ReadMessage(Operational);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor.MessageTypes[10]; }
    }

    [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 CachedTelemetryBatch() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "packets" field.</summary>
    public const int PacketsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.CachedTelemetryPacket> _repeated_packets_codec
        = pb::FieldCodec.ForMessage(10, global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.CachedTelemetryPacket.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.CachedTelemetryPacket> packets_ = new pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.CachedTelemetryPacket>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.CachedTelemetryPacket> Packets {
      get { return packets_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CachedTelemetryBatch other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!packets_.Equals(other.packets_)) 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 ^= packets_.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
      packets_.WriteTo(output, _repeated_packets_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) {
      packets_.WriteTo(ref output, _repeated_packets_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 += packets_.CalculateSize(_repeated_packets_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CachedTelemetryBatch other) {
      if (other == null) {
        return;
      }
      packets_.Add(other.packets_);
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            packets_.AddEntriesFrom(input, _repeated_packets_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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            packets_.AddEntriesFrom(ref input, _repeated_packets_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Audit Log (#23) M6 reconciliation pull: central→site request for any
  /// site-local AuditLog rows with OccurredAtUtc >= since_utc that have not yet
  /// been ingested centrally (ForwardState in {Pending, Forwarded}). Rows are NOT
  /// flipped to Reconciled when they are served — only when a LATER pull's cursor
  /// proves central consumed them (see after_id), so a fault between the response
  /// leaving the site and central committing it re-serves the rows instead of
  /// silently losing them (at-least-once).
  /// more_available signals batch_size was saturated so the caller knows to
  /// issue a follow-up pull with an advanced since_utc cursor.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class PullAuditEventsRequest : pb::IMessage<PullAuditEventsRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<PullAuditEventsRequest> _parser = new pb::MessageParser<PullAuditEventsRequest>(() => new PullAuditEventsRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<PullAuditEventsRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor.MessageTypes[11]; }
    }

    [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 PullAuditEventsRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public PullAuditEventsRequest(PullAuditEventsRequest other) : this() {
      sinceUtc_ = other.sinceUtc_ != null ? other.sinceUtc_.Clone() : null;
      batchSize_ = other.batchSize_;
      afterId_ = other.afterId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "since_utc" field.</summary>
    public const int SinceUtcFieldNumber = 1;
    private global::Google.Protobuf.WellKnownTypes.Timestamp sinceUtc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp SinceUtc {
      get { return sinceUtc_; }
      set {
        sinceUtc_ = value;
      }
    }

    /// <summary>Field number for the "batch_size" field.</summary>
    public const int BatchSizeFieldNumber = 2;
    private int batchSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BatchSize {
      get { return batchSize_; }
      set {
        batchSize_ = value;
      }
    }

    /// <summary>Field number for the "after_id" field.</summary>
    public const int AfterIdFieldNumber = 3;
    private string afterId_ = "";
    /// <summary>
    /// Composite-keyset cursor (WP2.3), mirroring PullSiteCallsRequest.after_id:
    /// the EventId ("D" GUID form) of the last row central has already CONSUMED at
    /// since_utc. When set, the site returns only rows strictly after the composite
    /// (OccurredAtUtc, EventId) pair — un-pinning a batch that would otherwise stall
    /// when more than batch_size rows share one since_utc instant — AND treats the
    /// cursor as proof of receipt: everything at or before it is flipped to
    /// Reconciled. Empty (the proto3 string default) preserves the legacy inclusive
    /// >= behaviour, under which only rows strictly older than since_utc are proven
    /// received. Additive-only.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AfterId {
      get { return afterId_; }
      set {
        afterId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(PullAuditEventsRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(SinceUtc, other.SinceUtc)) return false;
      if (BatchSize != other.BatchSize) return false;
      if (AfterId != other.AfterId) 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 (sinceUtc_ != null) hash ^= SinceUtc.GetHashCode();
      if (BatchSize != 0) hash ^= BatchSize.GetHashCode();
      if (AfterId.Length != 0) hash ^= AfterId.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 (sinceUtc_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(SinceUtc);
      }
      if (BatchSize != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(BatchSize);
      }
      if (AfterId.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AfterId);
      }
      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 (sinceUtc_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(SinceUtc);
      }
      if (BatchSize != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(BatchSize);
      }
      if (AfterId.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AfterId);
      }
      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 (sinceUtc_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SinceUtc);
      }
      if (BatchSize != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BatchSize);
      }
      if (AfterId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AfterId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(PullAuditEventsRequest other) {
      if (other == null) {
        return;
      }
      if (other.sinceUtc_ != null) {
        if (sinceUtc_ == null) {
          SinceUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        SinceUtc.MergeFrom(other.SinceUtc);
      }
      if (other.BatchSize != 0) {
        BatchSize = other.BatchSize;
      }
      if (other.AfterId.Length != 0) {
        AfterId = other.AfterId;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (sinceUtc_ == null) {
              SinceUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(SinceUtc);
            break;
          }
          case 16: {
            BatchSize = input.ReadInt32();
            break;
          }
          case 26: {
            AfterId = 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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (sinceUtc_ == null) {
              SinceUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(SinceUtc);
            break;
          }
          case 16: {
            BatchSize = input.ReadInt32();
            break;
          }
          case 26: {
            AfterId = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor.MessageTypes[12]; }
    }

    [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 PullAuditEventsResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "events" field.</summary>
    public const int EventsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto> _repeated_events_codec
        = pb::FieldCodec.ForMessage(10, global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto> events_ = new pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AuditEventDto> Events {
      get { return events_; }
    }

    /// <summary>Field number for the "more_available" field.</summary>
    public const int MoreAvailableFieldNumber = 2;
    private bool moreAvailable_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool MoreAvailable {
      get { return moreAvailable_; }
      set {
        moreAvailable_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(PullAuditEventsResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!events_.Equals(other.events_)) return false;
      if (MoreAvailable != other.MoreAvailable) 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 ^= events_.GetHashCode();
      if (MoreAvailable != false) hash ^= MoreAvailable.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
      events_.WriteTo(output, _repeated_events_codec);
      if (MoreAvailable != false) {
        output.WriteRawTag(16);
        output.WriteBool(MoreAvailable);
      }
      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) {
      events_.WriteTo(ref output, _repeated_events_codec);
      if (MoreAvailable != false) {
        output.WriteRawTag(16);
        output.WriteBool(MoreAvailable);
      }
      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 += events_.CalculateSize(_repeated_events_codec);
      if (MoreAvailable != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(PullAuditEventsResponse other) {
      if (other == null) {
        return;
      }
      events_.Add(other.events_);
      if (other.MoreAvailable != false) {
        MoreAvailable = other.MoreAvailable;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            events_.AddEntriesFrom(input, _repeated_events_codec);
            break;
          }
          case 16: {
            MoreAvailable = input.ReadBool();
            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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            events_.AddEntriesFrom(ref input, _repeated_events_codec);
            break;
          }
          case 16: {
            MoreAvailable = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Site Call Audit (#22) reconciliation pull: central→site request for any
  /// site-local operation-tracking rows whose UpdatedAtUtc >= since_utc — the
  /// self-heal feed that backfills the eventually-consistent central SiteCalls
  /// mirror when best-effort push telemetry is lost. Mirrors PullAuditEvents
  /// but is a SEPARATE RPC (the tracking store is the operational source of
  /// truth, distinct from the site audit queue). more_available signals
  /// batch_size was saturated so the caller advances since_utc and pulls again.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class PullSiteCallsRequest : pb::IMessage<PullSiteCallsRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<PullSiteCallsRequest> _parser = new pb::MessageParser<PullSiteCallsRequest>(() => new PullSiteCallsRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<PullSiteCallsRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor.MessageTypes[13]; }
    }

    [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 PullSiteCallsRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public PullSiteCallsRequest(PullSiteCallsRequest other) : this() {
      sinceUtc_ = other.sinceUtc_ != null ? other.sinceUtc_.Clone() : null;
      batchSize_ = other.batchSize_;
      afterId_ = other.afterId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "since_utc" field.</summary>
    public const int SinceUtcFieldNumber = 1;
    private global::Google.Protobuf.WellKnownTypes.Timestamp sinceUtc_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp SinceUtc {
      get { return sinceUtc_; }
      set {
        sinceUtc_ = value;
      }
    }

    /// <summary>Field number for the "batch_size" field.</summary>
    public const int BatchSizeFieldNumber = 2;
    private int batchSize_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int BatchSize {
      get { return batchSize_; }
      set {
        batchSize_ = value;
      }
    }

    /// <summary>Field number for the "after_id" field.</summary>
    public const int AfterIdFieldNumber = 3;
    private string afterId_ = "";
    /// <summary>
    /// Composite-keyset cursor (Task 15): the TrackedOperationId ("D" GUID form) of
    /// the last row already consumed at since_utc. When set, the site returns only
    /// rows strictly after (since_utc, after_id) under a deterministic
    /// (UpdatedAtUtc, TrackedOperationId) order — un-pinning a batch that would
    /// otherwise stall when more than batch_size rows share one since_utc instant.
    /// Empty (the proto3 string default) preserves the legacy inclusive >= behaviour,
    /// so an older central that never sets it is unaffected. Additive-only.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AfterId {
      get { return afterId_; }
      set {
        afterId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(PullSiteCallsRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(SinceUtc, other.SinceUtc)) return false;
      if (BatchSize != other.BatchSize) return false;
      if (AfterId != other.AfterId) 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 (sinceUtc_ != null) hash ^= SinceUtc.GetHashCode();
      if (BatchSize != 0) hash ^= BatchSize.GetHashCode();
      if (AfterId.Length != 0) hash ^= AfterId.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 (sinceUtc_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(SinceUtc);
      }
      if (BatchSize != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(BatchSize);
      }
      if (AfterId.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AfterId);
      }
      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 (sinceUtc_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(SinceUtc);
      }
      if (BatchSize != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(BatchSize);
      }
      if (AfterId.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AfterId);
      }
      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 (sinceUtc_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SinceUtc);
      }
      if (BatchSize != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BatchSize);
      }
      if (AfterId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AfterId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(PullSiteCallsRequest other) {
      if (other == null) {
        return;
      }
      if (other.sinceUtc_ != null) {
        if (sinceUtc_ == null) {
          SinceUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        SinceUtc.MergeFrom(other.SinceUtc);
      }
      if (other.BatchSize != 0) {
        BatchSize = other.BatchSize;
      }
      if (other.AfterId.Length != 0) {
        AfterId = other.AfterId;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (sinceUtc_ == null) {
              SinceUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(SinceUtc);
            break;
          }
          case 16: {
            BatchSize = input.ReadInt32();
            break;
          }
          case 26: {
            AfterId = 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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (sinceUtc_ == null) {
              SinceUtc = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(SinceUtc);
            break;
          }
          case 16: {
            BatchSize = input.ReadInt32();
            break;
          }
          case 26: {
            AfterId = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor.MessageTypes[14]; }
    }

    [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 PullSiteCallsResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "operationals" field.</summary>
    public const int OperationalsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto> _repeated_operationals_codec
        = pb::FieldCodec.ForMessage(10, global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto> operationals_ = new pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SiteCallOperationalDto> Operationals {
      get { return operationals_; }
    }

    /// <summary>Field number for the "more_available" field.</summary>
    public const int MoreAvailableFieldNumber = 2;
    private bool moreAvailable_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool MoreAvailable {
      get { return moreAvailable_; }
      set {
        moreAvailable_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(PullSiteCallsResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!operationals_.Equals(other.operationals_)) return false;
      if (MoreAvailable != other.MoreAvailable) 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 ^= operationals_.GetHashCode();
      if (MoreAvailable != false) hash ^= MoreAvailable.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
      operationals_.WriteTo(output, _repeated_operationals_codec);
      if (MoreAvailable != false) {
        output.WriteRawTag(16);
        output.WriteBool(MoreAvailable);
      }
      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) {
      operationals_.WriteTo(ref output, _repeated_operationals_codec);
      if (MoreAvailable != false) {
        output.WriteRawTag(16);
        output.WriteBool(MoreAvailable);
      }
      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 += operationals_.CalculateSize(_repeated_operationals_codec);
      if (MoreAvailable != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(PullSiteCallsResponse other) {
      if (other == null) {
        return;
      }
      operationals_.Add(other.operationals_);
      if (other.MoreAvailable != false) {
        MoreAvailable = other.MoreAvailable;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            operationals_.AddEntriesFrom(input, _repeated_operationals_codec);
            break;
          }
          case 16: {
            MoreAvailable = input.ReadBool();
            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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            operationals_.AddEntriesFrom(ref input, _repeated_operationals_codec);
            break;
          }
          case 16: {
            MoreAvailable = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
