// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Global_Uconnect_Ext_AOTA.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Com.Fca.Uconnect.Global {

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

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

    static GlobalUconnectExtAOTAReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Ch5HbG9iYWxfVWNvbm5lY3RfRXh0X0FPVEEucHJvdG8SF2NvbS5mY2EudWNv",
            "bm5lY3QuZ2xvYmFsGhlHbG9iYWxfVWNvbm5lY3RfRFJNLnByb3RvIqQBChhJ",
            "bml0aWF0ZURpc2NyZXBhbmN5Q2hlY2sSVQoKcGFyYW1ldGVycxgBIAMoCzJB",
            "LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLkluaXRpYXRlRGlzY3JlcGFuY3lD",
            "aGVjay5QYXJhbWV0ZXJzRW50cnkaMQoPUGFyYW1ldGVyc0VudHJ5EgsKA2tl",
            "eRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEicAoQRGlzY3JlcGFuY3lDaGVj",
            "axIPCgdkcm1GaWxlGAEgASgMEksKFGFwcGxpY2F0aW9uSW52ZW50b3J5GAIg",
            "AygLMi0uY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuQXBwbGljYXRpb25JbnZl",
            "bnRvcnkiSwoUQXBwbGljYXRpb25JbnZlbnRvcnkSDQoFYXBwSWQYBCABKAkS",
            "DwoHdmVyc2lvbhgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCSKrAQodQXBw",
            "bGljYXRpb25VcGRhdGVOb3RpZmljYXRpb24SDQoFYXBwSWQYASABKAkSDwoH",
            "dmVyc2lvbhgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRISCgpleHBpcmVE",
            "YXRlGAQgASgDEhMKC3BhY2thZ2VTaXplGAUgASgFEgsKA3VybBgGIAEoCRIQ",
            "CghjaGVja3N1bRgHIAEoCRINCgV0b2tlbhgIIAEoCSLIAgoYVXBkYXRlU3Rh",
            "dHVzTm90aWZpY2F0aW9uEkwKBnN0YXR1cxgBIAEoDjI8LmNvbS5mY2EudWNv",
            "bm5lY3QuZ2xvYmFsLlVwZGF0ZVN0YXR1c05vdGlmaWNhdGlvbi5TdGF0dXNF",
            "bnVtEhMKC2lzVHJhbnNpZW50GAIgASgIEhkKEWZhaWx1cmVSZWFzb25Db2Rl",
            "GAMgASgFEg0KBWFwcElkGAQgASgJIp4BCgpTdGF0dXNFbnVtEhQKEFNVQ0NF",
            "U1NfRE9XTkxPQUQQABIUChBGQUlMVVJFX0RPV05MT0FEEAESDAoIVVBUT0RB",
            "VEUQBBITCg9TVUNDRVNTX0lOU1RBTEwQBRITCg9GQUlMVVJFX0lOU1RBTEwQ",
            "BhIVChFTVUNDRVNTX1VOSU5TVEFMTBAHEhUKEUZBSUxVUkVfVU5JTlNUQUxM",
            "EAhQAGIGcHJvdG8z"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Com.Fca.Uconnect.Global.GlobalUconnectDRMReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.InitiateDiscrepancyCheck), global::Com.Fca.Uconnect.Global.InitiateDiscrepancyCheck.Parser, new[]{ "Parameters" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.DiscrepancyCheck), global::Com.Fca.Uconnect.Global.DiscrepancyCheck.Parser, new[]{ "DrmFile", "ApplicationInventory" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ApplicationInventory), global::Com.Fca.Uconnect.Global.ApplicationInventory.Parser, new[]{ "AppId", "Version", "Description" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ApplicationUpdateNotification), global::Com.Fca.Uconnect.Global.ApplicationUpdateNotification.Parser, new[]{ "AppId", "Version", "Description", "ExpireDate", "PackageSize", "Url", "Checksum", "Token" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.UpdateStatusNotification), global::Com.Fca.Uconnect.Global.UpdateStatusNotification.Parser, new[]{ "Status", "IsTransient", "FailureReasonCode", "AppId" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.UpdateStatusNotification.Types.StatusEnum) }, null)
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  ///*
  /// This message is for SDP to request TBM/HU to initiate DescrepancyCheck for updates.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>InitiateDescrepancyCheck Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1490885867532
  /// 		messageId: 11
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.initiateDescrepancyCheck]
  /// 		  {
  ///  	  }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class InitiateDiscrepancyCheck : pb::IMessage<InitiateDiscrepancyCheck> {
    private static readonly pb::MessageParser<InitiateDiscrepancyCheck> _parser = new pb::MessageParser<InitiateDiscrepancyCheck>(() => new InitiateDiscrepancyCheck());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<InitiateDiscrepancyCheck> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAOTAReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public InitiateDiscrepancyCheck() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public InitiateDiscrepancyCheck(InitiateDiscrepancyCheck other) : this() {
      parameters_ = other.parameters_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public InitiateDiscrepancyCheck Clone() {
      return new InitiateDiscrepancyCheck(this);
    }

    /// <summary>Field number for the "parameters" field.</summary>
    public const int ParametersFieldNumber = 1;
    private static readonly pbc::MapField<string, string>.Codec _map_parameters_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<string, string> parameters_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> Parameters {
      get { return parameters_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as InitiateDiscrepancyCheck);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(InitiateDiscrepancyCheck other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!Parameters.Equals(other.Parameters)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= Parameters.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      parameters_.WriteTo(output, _map_parameters_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += parameters_.CalculateSize(_map_parameters_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(InitiateDiscrepancyCheck other) {
      if (other == null) {
        return;
      }
      parameters_.Add(other.parameters_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            parameters_.AddEntriesFrom(input, _map_parameters_codec);
            break;
          }
        }
      }
    }

  }

  /// <summary>
  ///*
  /// This message is to check if there is an update available for Application.
  /// </summary>
  public sealed partial class DiscrepancyCheck : pb::IMessage<DiscrepancyCheck> {
    private static readonly pb::MessageParser<DiscrepancyCheck> _parser = new pb::MessageParser<DiscrepancyCheck>(() => new DiscrepancyCheck());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<DiscrepancyCheck> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAOTAReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DiscrepancyCheck() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DiscrepancyCheck(DiscrepancyCheck other) : this() {
      drmFile_ = other.drmFile_;
      applicationInventory_ = other.applicationInventory_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DiscrepancyCheck Clone() {
      return new DiscrepancyCheck(this);
    }

    /// <summary>Field number for the "drmFile" field.</summary>
    public const int DrmFileFieldNumber = 1;
    private pb::ByteString drmFile_ = pb::ByteString.Empty;
    /// <summary>
    //// This is the base64 encoded DRM File sent for the discrepancy check.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString DrmFile {
      get { return drmFile_; }
      set {
        drmFile_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "applicationInventory" field.</summary>
    public const int ApplicationInventoryFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.ApplicationInventory> _repeated_applicationInventory_codec
        = pb::FieldCodec.ForMessage(18, global::Com.Fca.Uconnect.Global.ApplicationInventory.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ApplicationInventory> applicationInventory_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ApplicationInventory>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ApplicationInventory> ApplicationInventory {
      get { return applicationInventory_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as DiscrepancyCheck);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(DiscrepancyCheck other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (DrmFile != other.DrmFile) return false;
      if(!applicationInventory_.Equals(other.applicationInventory_)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (DrmFile.Length != 0) hash ^= DrmFile.GetHashCode();
      hash ^= applicationInventory_.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (DrmFile.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(DrmFile);
      }
      applicationInventory_.WriteTo(output, _repeated_applicationInventory_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (DrmFile.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(DrmFile);
      }
      size += applicationInventory_.CalculateSize(_repeated_applicationInventory_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(DiscrepancyCheck other) {
      if (other == null) {
        return;
      }
      if (other.DrmFile.Length != 0) {
        DrmFile = other.DrmFile;
      }
      applicationInventory_.Add(other.applicationInventory_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            DrmFile = input.ReadBytes();
            break;
          }
          case 18: {
            applicationInventory_.AddEntriesFrom(input, _repeated_applicationInventory_codec);
            break;
          }
        }
      }
    }

  }

  public sealed partial class ApplicationInventory : pb::IMessage<ApplicationInventory> {
    private static readonly pb::MessageParser<ApplicationInventory> _parser = new pb::MessageParser<ApplicationInventory>(() => new ApplicationInventory());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ApplicationInventory> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAOTAReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApplicationInventory() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApplicationInventory(ApplicationInventory other) : this() {
      appId_ = other.appId_;
      version_ = other.version_;
      description_ = other.description_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApplicationInventory Clone() {
      return new ApplicationInventory(this);
    }

    /// <summary>Field number for the "appId" field.</summary>
    public const int AppIdFieldNumber = 4;
    private string appId_ = "";
    /// <summary>
    ////Application identifier which is unique.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string AppId {
      get { return appId_; }
      set {
        appId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "version" field.</summary>
    public const int VersionFieldNumber = 2;
    private string version_ = "";
    /// <summary>
    ////Version of the Firmware that needs to be downloaded.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Version {
      get { return version_; }
      set {
        version_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "description" field.</summary>
    public const int DescriptionFieldNumber = 3;
    private string description_ = "";
    /// <summary>
    ////Description to be displayed to the User
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Description {
      get { return description_; }
      set {
        description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ApplicationInventory);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ApplicationInventory other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AppId != other.AppId) return false;
      if (Version != other.Version) return false;
      if (Description != other.Description) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (AppId.Length != 0) hash ^= AppId.GetHashCode();
      if (Version.Length != 0) hash ^= Version.GetHashCode();
      if (Description.Length != 0) hash ^= Description.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Version.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Version);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Description);
      }
      if (AppId.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(AppId);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (AppId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AppId);
      }
      if (Version.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Version);
      }
      if (Description.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ApplicationInventory other) {
      if (other == null) {
        return;
      }
      if (other.AppId.Length != 0) {
        AppId = other.AppId;
      }
      if (other.Version.Length != 0) {
        Version = other.Version;
      }
      if (other.Description.Length != 0) {
        Description = other.Description;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 18: {
            Version = input.ReadString();
            break;
          }
          case 26: {
            Description = input.ReadString();
            break;
          }
          case 34: {
            AppId = input.ReadString();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  ///*
  /// This message is to Push the Application to Client when there is an update available.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>ApplicationUpdateNotification Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1490885867532
  /// 		messageId: 11
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.applicationUpdateNotification]
  /// 		  {
  /// 			version: "2.0"
  /// 			description: "Update for ABC"
  /// 			expireDate: 360000
  /// 			packageSize: 10000
  /// 			url: "https://abc.com"
  /// 			checksum: "CE114E4501D2F4E2DCEA3E17B546F339"
  ///  	  }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class ApplicationUpdateNotification : pb::IMessage<ApplicationUpdateNotification> {
    private static readonly pb::MessageParser<ApplicationUpdateNotification> _parser = new pb::MessageParser<ApplicationUpdateNotification>(() => new ApplicationUpdateNotification());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ApplicationUpdateNotification> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAOTAReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApplicationUpdateNotification() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApplicationUpdateNotification(ApplicationUpdateNotification other) : this() {
      appId_ = other.appId_;
      version_ = other.version_;
      description_ = other.description_;
      expireDate_ = other.expireDate_;
      packageSize_ = other.packageSize_;
      url_ = other.url_;
      checksum_ = other.checksum_;
      token_ = other.token_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ApplicationUpdateNotification Clone() {
      return new ApplicationUpdateNotification(this);
    }

    /// <summary>Field number for the "appId" field.</summary>
    public const int AppIdFieldNumber = 1;
    private string appId_ = "";
    /// <summary>
    ////Application identifier which is unique.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string AppId {
      get { return appId_; }
      set {
        appId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "version" field.</summary>
    public const int VersionFieldNumber = 2;
    private string version_ = "";
    /// <summary>
    ////Version of the Firmware that needs to be downloaded.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Version {
      get { return version_; }
      set {
        version_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "description" field.</summary>
    public const int DescriptionFieldNumber = 3;
    private string description_ = "";
    /// <summary>
    ////Description of the application
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Description {
      get { return description_; }
      set {
        description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "expireDate" field.</summary>
    public const int ExpireDateFieldNumber = 4;
    private long expireDate_;
    /// <summary>
    ////Time till when the Software is available for update.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long ExpireDate {
      get { return expireDate_; }
      set {
        expireDate_ = value;
      }
    }

    /// <summary>Field number for the "packageSize" field.</summary>
    public const int PackageSizeFieldNumber = 5;
    private int packageSize_;
    /// <summary>
    ////Size of the Application.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int PackageSize {
      get { return packageSize_; }
      set {
        packageSize_ = value;
      }
    }

    /// <summary>Field number for the "url" field.</summary>
    public const int UrlFieldNumber = 6;
    private string url_ = "";
    /// <summary>
    ////URL to download the App update.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Url {
      get { return url_; }
      set {
        url_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "checksum" field.</summary>
    public const int ChecksumFieldNumber = 7;
    private string checksum_ = "";
    /// <summary>
    ////Checksum of the FW package is to ensure integrity of downloading.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Checksum {
      get { return checksum_; }
      set {
        checksum_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "token" field.</summary>
    public const int TokenFieldNumber = 8;
    private string token_ = "";
    /// <summary>
    ////Token which will be sent to download server to download the App.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Token {
      get { return token_; }
      set {
        token_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ApplicationUpdateNotification);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ApplicationUpdateNotification other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AppId != other.AppId) return false;
      if (Version != other.Version) return false;
      if (Description != other.Description) return false;
      if (ExpireDate != other.ExpireDate) return false;
      if (PackageSize != other.PackageSize) return false;
      if (Url != other.Url) return false;
      if (Checksum != other.Checksum) return false;
      if (Token != other.Token) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (AppId.Length != 0) hash ^= AppId.GetHashCode();
      if (Version.Length != 0) hash ^= Version.GetHashCode();
      if (Description.Length != 0) hash ^= Description.GetHashCode();
      if (ExpireDate != 0L) hash ^= ExpireDate.GetHashCode();
      if (PackageSize != 0) hash ^= PackageSize.GetHashCode();
      if (Url.Length != 0) hash ^= Url.GetHashCode();
      if (Checksum.Length != 0) hash ^= Checksum.GetHashCode();
      if (Token.Length != 0) hash ^= Token.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (AppId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AppId);
      }
      if (Version.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Version);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Description);
      }
      if (ExpireDate != 0L) {
        output.WriteRawTag(32);
        output.WriteInt64(ExpireDate);
      }
      if (PackageSize != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(PackageSize);
      }
      if (Url.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Url);
      }
      if (Checksum.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Checksum);
      }
      if (Token.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(Token);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (AppId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AppId);
      }
      if (Version.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Version);
      }
      if (Description.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
      }
      if (ExpireDate != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpireDate);
      }
      if (PackageSize != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PackageSize);
      }
      if (Url.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Url);
      }
      if (Checksum.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Checksum);
      }
      if (Token.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Token);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ApplicationUpdateNotification other) {
      if (other == null) {
        return;
      }
      if (other.AppId.Length != 0) {
        AppId = other.AppId;
      }
      if (other.Version.Length != 0) {
        Version = other.Version;
      }
      if (other.Description.Length != 0) {
        Description = other.Description;
      }
      if (other.ExpireDate != 0L) {
        ExpireDate = other.ExpireDate;
      }
      if (other.PackageSize != 0) {
        PackageSize = other.PackageSize;
      }
      if (other.Url.Length != 0) {
        Url = other.Url;
      }
      if (other.Checksum.Length != 0) {
        Checksum = other.Checksum;
      }
      if (other.Token.Length != 0) {
        Token = other.Token;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            AppId = input.ReadString();
            break;
          }
          case 18: {
            Version = input.ReadString();
            break;
          }
          case 26: {
            Description = input.ReadString();
            break;
          }
          case 32: {
            ExpireDate = input.ReadInt64();
            break;
          }
          case 40: {
            PackageSize = input.ReadInt32();
            break;
          }
          case 50: {
            Url = input.ReadString();
            break;
          }
          case 58: {
            Checksum = input.ReadString();
            break;
          }
          case 66: {
            Token = input.ReadString();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  ///*
  /// This message is to respond to SDP after Client installs Application Updates.
  ///&lt;div class=exmsg-main>
  /// &lt;h4>UpdateStatusNotification Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1490885867676
  /// 		messageId: 1
  /// 		correlationId: 11
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.updateStatusNotification]
  /// 		 {
  /// 			status: SUCCESS
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>&lt;/div>
  /// </summary>
  public sealed partial class UpdateStatusNotification : pb::IMessage<UpdateStatusNotification> {
    private static readonly pb::MessageParser<UpdateStatusNotification> _parser = new pb::MessageParser<UpdateStatusNotification>(() => new UpdateStatusNotification());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<UpdateStatusNotification> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtAOTAReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public UpdateStatusNotification() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public UpdateStatusNotification(UpdateStatusNotification other) : this() {
      status_ = other.status_;
      isTransient_ = other.isTransient_;
      failureReasonCode_ = other.failureReasonCode_;
      appId_ = other.appId_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public UpdateStatusNotification Clone() {
      return new UpdateStatusNotification(this);
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.UpdateStatusNotification.Types.StatusEnum status_ = 0;
    /// <summary>
    //// Indicator for the status of the Software.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.UpdateStatusNotification.Types.StatusEnum Status {
      get { return status_; }
      set {
        status_ = value;
      }
    }

    /// <summary>Field number for the "isTransient" field.</summary>
    public const int IsTransientFieldNumber = 2;
    private bool isTransient_;
    /// <summary>
    //// Indicates a transient error and a retry can be attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsTransient {
      get { return isTransient_; }
      set {
        isTransient_ = value;
      }
    }

    /// <summary>Field number for the "failureReasonCode" field.</summary>
    public const int FailureReasonCodeFieldNumber = 3;
    private int failureReasonCode_;
    /// <summary>
    //// Specific error code.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FailureReasonCode {
      get { return failureReasonCode_; }
      set {
        failureReasonCode_ = value;
      }
    }

    /// <summary>Field number for the "appId" field.</summary>
    public const int AppIdFieldNumber = 4;
    private string appId_ = "";
    /// <summary>
    //// assigned ID for an application
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string AppId {
      get { return appId_; }
      set {
        appId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as UpdateStatusNotification);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(UpdateStatusNotification other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Status != other.Status) return false;
      if (IsTransient != other.IsTransient) return false;
      if (FailureReasonCode != other.FailureReasonCode) return false;
      if (AppId != other.AppId) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Status != 0) hash ^= Status.GetHashCode();
      if (IsTransient != false) hash ^= IsTransient.GetHashCode();
      if (FailureReasonCode != 0) hash ^= FailureReasonCode.GetHashCode();
      if (AppId.Length != 0) hash ^= AppId.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Status != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Status);
      }
      if (IsTransient != false) {
        output.WriteRawTag(16);
        output.WriteBool(IsTransient);
      }
      if (FailureReasonCode != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(FailureReasonCode);
      }
      if (AppId.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(AppId);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Status != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
      }
      if (IsTransient != false) {
        size += 1 + 1;
      }
      if (FailureReasonCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailureReasonCode);
      }
      if (AppId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AppId);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(UpdateStatusNotification other) {
      if (other == null) {
        return;
      }
      if (other.Status != 0) {
        Status = other.Status;
      }
      if (other.IsTransient != false) {
        IsTransient = other.IsTransient;
      }
      if (other.FailureReasonCode != 0) {
        FailureReasonCode = other.FailureReasonCode;
      }
      if (other.AppId.Length != 0) {
        AppId = other.AppId;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            status_ = (global::Com.Fca.Uconnect.Global.UpdateStatusNotification.Types.StatusEnum) input.ReadEnum();
            break;
          }
          case 16: {
            IsTransient = input.ReadBool();
            break;
          }
          case 24: {
            FailureReasonCode = input.ReadInt32();
            break;
          }
          case 34: {
            AppId = input.ReadString();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the UpdateStatusNotification message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum StatusEnum {
        /// <summary>
        ////Downloaded Successfully.
        /// </summary>
        [pbr::OriginalName("SUCCESS_DOWNLOAD")] SuccessDownload = 0,
        /// <summary>
        ////Download failed from download server.
        /// </summary>
        [pbr::OriginalName("FAILURE_DOWNLOAD")] FailureDownload = 1,
        /// <summary>
        //// This Software update is already installed.
        /// </summary>
        [pbr::OriginalName("UPTODATE")] Uptodate = 4,
        /// <summary>
        ////Installation Successful
        /// </summary>
        [pbr::OriginalName("SUCCESS_INSTALL")] SuccessInstall = 5,
        /// <summary>
        //// Application installation failed.
        /// </summary>
        [pbr::OriginalName("FAILURE_INSTALL")] FailureInstall = 6,
        /// <summary>
        ////Application Uninstallation Successful
        /// </summary>
        [pbr::OriginalName("SUCCESS_UNINSTALL")] SuccessUninstall = 7,
        /// <summary>
        //// Application Uninstallation failed.
        /// </summary>
        [pbr::OriginalName("FAILURE_UNINSTALL")] FailureUninstall = 8,
      }

    }
    #endregion

  }

  #endregion

}

#endregion Designer generated code
