context: // Generated by ProtoGen, Version=2.4.1.473, Culture=neutral, PublicKeyToken=55f7125234beb589.  DO NOT EDIT!
  #pragma warning disable 1591, 0612
  #region Designer generated code
  
  using pb = global::Google.ProtocolBuffers;
  using pbc = global::Google.ProtocolBuffers.Collections;
  using pbd = global::Google.ProtocolBuffers.Descriptors;
  using scg = global::System.Collections.Generic;
  namespace bnet.protocol.authentication {
    
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
    public static partial class AuthenticationService {
    
      #region Extension registration
      public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
      }
      #endregion
      #region Static variables
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_authentication_ModuleLoadRequest__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.ModuleLoadRequest, global::bnet.protocol.authentication.ModuleLoadRequest.Builder> internal__static_bnet_protocol_authentication_ModuleLoadRequest__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_authentication_ModuleNotification__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.ModuleNotification, global::bnet.protocol.authentication.ModuleNotification.Builder> internal__static_bnet_protocol_authentication_ModuleNotification__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_authentication_ModuleMessageRequest__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.ModuleMessageRequest, global::bnet.protocol.authentication.ModuleMessageRequest.Builder> internal__static_bnet_protocol_authentication_ModuleMessageRequest__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_authentication_LogonRequest__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.LogonRequest, global::bnet.protocol.authentication.LogonRequest.Builder> internal__static_bnet_protocol_authentication_LogonRequest__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_authentication_LogonResult__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.LogonResult, global::bnet.protocol.authentication.LogonResult.Builder> internal__static_bnet_protocol_authentication_LogonResult__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_authentication_AccountSettingsNotification__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.AccountSettingsNotification, global::bnet.protocol.authentication.AccountSettingsNotification.Builder> internal__static_bnet_protocol_authentication_AccountSettingsNotification__FieldAccessorTable;
      internal static pbd::MessageDescriptor internal__static_bnet_protocol_authentication_ServerStateChangeRequest__Descriptor;
      internal static pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.ServerStateChangeRequest, global::bnet.protocol.authentication.ServerStateChangeRequest.Builder> internal__static_bnet_protocol_authentication_ServerStateChangeRequest__FieldAccessorTable;
      #endregion
      #region Descriptor
      public static pbd::FileDescriptor Descriptor {
        get { return descriptor; }
      }
      private static pbd::FileDescriptor descriptor;
      
      static AuthenticationService() {
        byte[] descriptorData = global::System.Convert.FromBase64String(
            "CiFibmV0L2F1dGhlbnRpY2F0aW9uX3NlcnZpY2UucHJvdG8SHGJuZXQucHJv" + 
            "dG9jb2wuYXV0aGVudGljYXRpb24aGGJuZXQvYWNjb3VudF90eXBlcy5wcm90" + 
            "bxoOYm5ldC9ycGMucHJvdG8aGWJuZXQvY29udGVudF9oYW5kbGUucHJvdG8a" + 
            "EWJuZXQvZW50aXR5LnByb3RvIlkKEU1vZHVsZUxvYWRSZXF1ZXN0EjMKDW1v" + 
            "ZHVsZV9oYW5kbGUYASACKAsyHC5ibmV0LnByb3RvY29sLkNvbnRlbnRIYW5k" + 
            "bGUSDwoHbWVzc2FnZRgCIAEoDCI3ChJNb2R1bGVOb3RpZmljYXRpb24SEQoJ" + 
            "bW9kdWxlX2lkGAIgASgFEg4KBnJlc3VsdBgDIAEoDSI6ChRNb2R1bGVNZXNz" + 
            "YWdlUmVxdWVzdBIRCgltb2R1bGVfaWQYASACKAUSDwoHbWVzc2FnZRgCIAEo" + 
            "DCJ+CgxMb2dvblJlcXVlc3QSDwoHcHJvZ3JhbRgBIAEoCRIQCghwbGF0Zm9y" + 
            "bRgCIAEoCRIOCgZsb2NhbGUYAyABKAkSDQoFZW1haWwYBCABKAkSDwoHdmVy" + 
            "c2lvbhgFIAEoCRIbChNhcHBsaWNhdGlvbl92ZXJzaW9uGAYgASgFInoKC0xv" + 
            "Z29uUmVzdWx0EhIKCmVycm9yX2NvZGUYASACKA0SKAoHYWNjb3VudBgCIAEo" + 
            "CzIXLmJuZXQucHJvdG9jb2wuRW50aXR5SWQSLQoMZ2FtZV9hY2NvdW50GAMg" + 
            "AygLMhcuYm5ldC5wcm90b2NvbC5FbnRpdHlJZCK8AQobQWNjb3VudFNldHRp" + 
            "bmdzTm90aWZpY2F0aW9uEjcKCGxpY2Vuc2VzGAEgAygLMiUuYm5ldC5wcm90" + 
            "b2NvbC5hY2NvdW50LkFjY291bnRMaWNlbnNlEhQKDGlzX3VzaW5nX3JpZBgC" + 
            "IAEoCBIbChNpc19wbGF5aW5nX2Zyb21faWdyGAMgASgIEhkKEWNhbl9yZWNl" + 
            "aXZlX3ZvaWNlGAQgASgIEhYKDmNhbl9zZW5kX3ZvaWNlGAUgASgIIj0KGFNl" + 
            "cnZlclN0YXRlQ2hhbmdlUmVxdWVzdBINCgVzdGF0ZRgBIAIoDRISCgpldmVu" + 
            "dF90aW1lGAIgAigEMpYEChRBdXRoZW50aWNhdGlvbkNsaWVudBJfCgpNb2R1" + 
            "bGVMb2FkEi8uYm5ldC5wcm90b2NvbC5hdXRoZW50aWNhdGlvbi5Nb2R1bGVM" + 
            "b2FkUmVxdWVzdBoaLmJuZXQucHJvdG9jb2wuTk9fUkVTUE9OU0UiBIC1GAES" + 
            "YAoNTW9kdWxlTWVzc2FnZRIyLmJuZXQucHJvdG9jb2wuYXV0aGVudGljYXRp" + 
            "b24uTW9kdWxlTWVzc2FnZVJlcXVlc3QaFS5ibmV0LnByb3RvY29sLk5vRGF0" + 
            "YSIEgLUYAhJuCg9BY2NvdW50U2V0dGluZ3MSOS5ibmV0LnByb3RvY29sLmF1" + 
            "dGhlbnRpY2F0aW9uLkFjY291bnRTZXR0aW5nc05vdGlmaWNhdGlvbhoaLmJu" + 
            "ZXQucHJvdG9jb2wuTk9fUkVTUE9OU0UiBIC1GAMSbQoRU2VydmVyU3RhdGVD" + 
            "aGFuZ2USNi5ibmV0LnByb3RvY29sLmF1dGhlbnRpY2F0aW9uLlNlcnZlclN0" + 
            "YXRlQ2hhbmdlUmVxdWVzdBoaLmJuZXQucHJvdG9jb2wuTk9fUkVTUE9OU0Ui" + 
            "BIC1GAQSXAoNTG9nb25Db21wbGV0ZRIpLmJuZXQucHJvdG9jb2wuYXV0aGVu" + 
            "dGljYXRpb24uTG9nb25SZXN1bHQaGi5ibmV0LnByb3RvY29sLk5PX1JFU1BP" + 
            "TlNFIgSAtRgFMvQCChRBdXRoZW50aWNhdGlvblNlcnZlchJQCgVMb2dvbhIq" + 
            "LmJuZXQucHJvdG9jb2wuYXV0aGVudGljYXRpb24uTG9nb25SZXF1ZXN0GhUu" + 
            "Ym5ldC5wcm90b2NvbC5Ob0RhdGEiBIC1GAESXQoMTW9kdWxlTm90aWZ5EjAu" + 
            "Ym5ldC5wcm90b2NvbC5hdXRoZW50aWNhdGlvbi5Nb2R1bGVOb3RpZmljYXRp" + 
            "b24aFS5ibmV0LnByb3RvY29sLk5vRGF0YSIEgLUYAhJgCg1Nb2R1bGVNZXNz" + 
            "YWdlEjIuYm5ldC5wcm90b2NvbC5hdXRoZW50aWNhdGlvbi5Nb2R1bGVNZXNz" + 
            "YWdlUmVxdWVzdBoVLmJuZXQucHJvdG9jb2wuTm9EYXRhIgSAtRgDEkkKEVNl" + 
            "bGVjdEdhbWVBY2NvdW50EhcuYm5ldC5wcm90b2NvbC5FbnRpdHlJZBoVLmJu" + 
            "ZXQucHJvdG9jb2wuTm9EYXRhIgSAtRgEQgOAAQA=");
        pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
          descriptor = root;
          internal__static_bnet_protocol_authentication_ModuleLoadRequest__Descriptor = Descriptor.MessageTypes[0];
          internal__static_bnet_protocol_authentication_ModuleLoadRequest__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.ModuleLoadRequest, global::bnet.protocol.authentication.ModuleLoadRequest.Builder>(internal__static_bnet_protocol_authentication_ModuleLoadRequest__Descriptor,
                  new string[] { "ModuleHandle", "Message", });
          internal__static_bnet_protocol_authentication_ModuleNotification__Descriptor = Descriptor.MessageTypes[1];
          internal__static_bnet_protocol_authentication_ModuleNotification__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.ModuleNotification, global::bnet.protocol.authentication.ModuleNotification.Builder>(internal__static_bnet_protocol_authentication_ModuleNotification__Descriptor,
                  new string[] { "ModuleId", "Result", });
          internal__static_bnet_protocol_authentication_ModuleMessageRequest__Descriptor = Descriptor.MessageTypes[2];
          internal__static_bnet_protocol_authentication_ModuleMessageRequest__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.ModuleMessageRequest, global::bnet.protocol.authentication.ModuleMessageRequest.Builder>(internal__static_bnet_protocol_authentication_ModuleMessageRequest__Descriptor,
                  new string[] { "ModuleId", "Message", });
          internal__static_bnet_protocol_authentication_LogonRequest__Descriptor = Descriptor.MessageTypes[3];
          internal__static_bnet_protocol_authentication_LogonRequest__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.LogonRequest, global::bnet.protocol.authentication.LogonRequest.Builder>(internal__static_bnet_protocol_authentication_LogonRequest__Descriptor,
                  new string[] { "Program", "Platform", "Locale", "Email", "Version", "ApplicationVersion", });
          internal__static_bnet_protocol_authentication_LogonResult__Descriptor = Descriptor.MessageTypes[4];
          internal__static_bnet_protocol_authentication_LogonResult__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.LogonResult, global::bnet.protocol.authentication.LogonResult.Builder>(internal__static_bnet_protocol_authentication_LogonResult__Descriptor,
                  new string[] { "ErrorCode", "Account", "GameAccount", });
          internal__static_bnet_protocol_authentication_AccountSettingsNotification__Descriptor = Descriptor.MessageTypes[5];
          internal__static_bnet_protocol_authentication_AccountSettingsNotification__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.AccountSettingsNotification, global::bnet.protocol.authentication.AccountSettingsNotification.Builder>(internal__static_bnet_protocol_authentication_AccountSettingsNotification__Descriptor,
                  new string[] { "Licenses", "IsUsingRid", "IsPlayingFromIgr", "CanReceiveVoice", "CanSendVoice", });
          internal__static_bnet_protocol_authentication_ServerStateChangeRequest__Descriptor = Descriptor.MessageTypes[6];
          internal__static_bnet_protocol_authentication_ServerStateChangeRequest__FieldAccessorTable = 
              new pb::FieldAccess.FieldAccessorTable<global::bnet.protocol.authentication.ServerStateChangeRequest, global::bnet.protocol.authentication.ServerStateChangeRequest.Builder>(internal__static_bnet_protocol_authentication_ServerStateChangeRequest__Descriptor,
                  new string[] { "State", "EventTime", });
          pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
          RegisterAllExtensions(registry);
          global::bnet.protocol.account.AccountTypes.RegisterAllExtensions(registry);
          global::bnet.protocol.Rpc.RegisterAllExtensions(registry);
          global::bnet.protocol.Proto.ContentHandle.RegisterAllExtensions(registry);
          global::bnet.protocol.Entity.RegisterAllExtensions(registry);
          return registry;
        };
        pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
            new pbd::FileDescriptor[] {
            global::bnet.protocol.account.AccountTypes.Descriptor, 
            global::bnet.protocol.Rpc.Descriptor, 
            global::bnet.protocol.Proto.ContentHandle.Descriptor, 
            global::bnet.protocol.Entity.Descriptor, 
            }, assigner);
      }
      #endregion
      
    }
    #region Messages
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
    public sealed partial class ModuleLoadRequest : pb::GeneratedMessage<ModuleLoadRequest, ModuleLoadRequest.Builder> {
      private ModuleLoadRequest() { }
      private static readonly ModuleLoadRequest defaultInstance = new ModuleLoadRequest().MakeReadOnly();
      private static readonly string[] _moduleLoadRequestFieldNames = new string[] { "message", "module_handle" };
      private static readonly uint[] _moduleLoadRequestFieldTags = new uint[] { 18, 10 };
      public static ModuleLoadRequest DefaultInstance {
        get { return defaultInstance; }
      }
      
      public override ModuleLoadRequest DefaultInstanceForType {
        get { return DefaultInstance; }
      }
      
      protected override ModuleLoadRequest ThisMessage {
        get { return this; }
      }
      
      public static pbd::MessageDescriptor Descriptor {
        get { return global::bnet.protocol.authentication.AuthenticationService.internal__static_bnet_protocol_authentication_ModuleLoadRequest__Descriptor; }
      }
      
      protected override pb::FieldAccess.FieldAccessorTable<ModuleLoadRequest, ModuleLoadRequest.Builder> InternalFieldAccessors {
        get { return global::bnet.protocol.authentication.AuthenticationService.internal__static_bnet_protocol_authentication_ModuleLoadRequest__FieldAccessorTable; }
      }
      
      public const int ModuleHandleFieldNumber = 1;
      private bool hasModuleHandle;
      private global::bnet.protocol.ContentHandle moduleHandle_;
      public bool HasModuleHandle {
        get { return hasModuleHandle; }
      }
      public global::bnet.protocol.ContentHandle ModuleHandle {
        get { return moduleHandle_ ?? global::bnet.protocol.ContentHandle.DefaultInstance; }
      }
      
      public const int MessageFieldNumber = 2;
      private bool hasMessage;
      private pb::ByteString message_ = pb::ByteString.Empty;
      public bool HasMessage {
        get { return hasMessage; }
      }
      public pb::ByteString Message {
        get { return message_; }
      }
      
      public override bool IsInitialized {
        get {
          if (!hasModuleHandle) return false;
          if (!ModuleHandle.IsInitialized) return false;
          return true;
        }
      }
      
      public override void WriteTo(pb::ICodedOutputStream output) {
        int size = SerializedSize;
        string[] field_names = _moduleLoadRequestFieldNames;
        if (hasModuleHandle) {
          output.WriteMessage(1, field_names[1], ModuleHandle);
        }
        if (hasMessage) {
          output.WriteBytes(2, field_names[0], Message);
        }
        UnknownFields.WriteTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public override int SerializedSize {
        get {
          int size = memoizedSerializedSize;
          if (size != -1) return size;
          
          size = 0;
          if (hasModuleHandle) {
            size += pb::CodedOutputStream.ComputeMessageSize(1, ModuleHandle);
          }
          if (hasMessage) {
            size += pb::CodedOutputStream.ComputeBytesSize(2, Message);
          }
          size += UnknownFields.SerializedSize;
          memoizedSerializedSize = size;
          return size;
        }
      }
      
      public static ModuleLoadRequest ParseFrom(pb::ByteString data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static ModuleLoadRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static ModuleLoadRequest ParseFrom(byte[] data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static ModuleLoadRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static ModuleLoadRequest ParseFrom(global::System.IO.Stream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static ModuleLoadRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      public static ModuleLoadRequest ParseDelimitedFrom(global::System.IO.Stream input) {
        return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
      }
      public static ModuleLoadRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
      }
      public static ModuleLoadRequest ParseFrom(pb::ICodedInputStream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static ModuleLoadRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      private ModuleLoadRequest MakeReadOnly() {
        return this;
      }
      
      public static Builder CreateBuilder() { return new Builder(); }
      public override Builder ToBuilder() { return CreateBuilder(this); }
      public override Builder CreateBuilderForType() { return new Builder(); }
      public static Builder CreateBuilder(ModuleLoadRequest prototype) {
        return new Builder(prototype);
      }
      
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
      [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
      public sealed partial class Builder : pb::GeneratedBuilder<ModuleLoadRequest, Builder> {
        protected override Builder ThisBuilder {
          get { return this; }
        }
        public Builder() {
          result = DefaultInstance;
          resultIsReadOnly = true;
        }
        internal Builder(ModuleLoadRequest cloneFrom) {
          result = cloneFrom;
          resultIsReadOnly = true;
        }
        
        private bool resultIsReadOnly;
        private ModuleLoadRequest result;
        
        private ModuleLoadRequest PrepareBuilder() {
          if (resultIsReadOnly) {
            ModuleLoadRequest original = result;
            result = new ModuleLoadRequest();
            resultIsReadOnly = false;
            MergeFrom(original);
          }
          return result;
        }
        
        public override bool IsInitialized {
          get { return result.IsInitialized; }
        }
        
        protected override ModuleLoadRequest MessageBeingBuilt {
          get { return PrepareBuilder(); }
        }
        
        public override Builder Clear() {
          result = DefaultInstance;
          resultIsReadOnly = true;
          return this;
        }
        
        public override Builder Clone() {
          if (resultIsReadOnly) {
            return new Builder(result);
          } else {
            return new Builder().MergeFrom(result);
          }
        }
        
        public override pbd::MessageDescriptor DescriptorForType {
          get { return global::bnet.protocol.authentication.ModuleLoadRequest.Descriptor; }
        }
        
        public override ModuleLoadRequest DefaultInstanceForType {
          get { return global::bnet.protocol.authentication.ModuleLoadRequest.DefaultInstance; }
        }
        
        public override ModuleLoadRequest BuildPartial() {
          if (resultIsReadOnly) {
            return result;
          }
          resultIsReadOnly = true;
          return result.MakeReadOnly();
        }
        
        public override Builder MergeFrom(pb::IMessage other) {
          if (other is ModuleLoadRequest) {
            return MergeFrom((ModuleLoadRequest) other);
          } else {
            base.MergeFrom(other);
            return this;
          }
        }
        
        public override Builder MergeFrom(ModuleLoadRequest other) {
          if (other == global::bnet.protocol.authentication.ModuleLoadRequest.DefaultInstance) return this;
          PrepareBuilder();
          if (other.HasModuleHandle) {
            MergeModuleHandle(other.ModuleHandle);
          }
          if (other.HasMessage) {
            Message = other.Message;
          }
          this.MergeUnknownFields(other.UnknownFields);
          return this;
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input) {
          return MergeFrom(input, pb::ExtensionRegistry.Empty);
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
          PrepareBuilder();
          pb::UnknownFieldSet.Builder unknownFields = null;
          uint tag;
          string field_name;
          while (input.ReadTag(out tag, out field_name)) {
            if(tag == 0 && field_name != null) {
              int field_ordinal = global::System.Array.BinarySearch(_moduleLoadRequestFieldNames, field_name, global::System.StringComparer.Ordinal);
              if(field_ordinal >= 0)
                tag = _moduleLoadRequestFieldTags[field_ordinal];
              else {
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                continue;
              }
            }
            switch (tag) {
              case 0: {
                throw pb::InvalidProtocolBufferException.InvalidTag();
              }
              default: {
                if (pb::WireFormat.IsEndGroupTag(tag)) {
                  if (unknownFields != null) {
                    this.UnknownFields = unknownFields.Build();
                  }
                  return this;
                }
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                break;
              }
              case 10: {
                global::bnet.protocol.ContentHandle.Builder subBuilder = global::bnet.protocol.ContentHandle.CreateBuilder();
                if (result.hasModuleHandle) {
                  subBuilder.MergeFrom(ModuleHandle);
                }
                input.ReadMessage(subBuilder, extensionRegistry);
                ModuleHandle = subBuilder.BuildPartial();
                break;
              }
              case 18: {
                result.hasMessage = input.ReadBytes(ref result.message_);
                break;
              }
            }
          }
          
          if (unknownFields != null) {
            this.UnknownFields = unknownFields.Build();
          }
          return this;
        }
        
        
        public bool HasModuleHandle {
         get { return result.hasModuleHandle; }
        }
        public global::bnet.protocol.ContentHandle ModuleHandle {
          get { return result.ModuleHandle; }
          set { SetModuleHandle(value); }
        }
        public Builder SetModuleHandle(global::bnet.protocol.ContentHandle value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasModuleHandle = true;
          result.moduleHandle_ = value;
          return this;
        }
        public Builder SetModuleHandle(global::bnet.protocol.ContentHandle.Builder builderForValue) {
          pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
          PrepareBuilder();
          result.hasModuleHandle = true;
          result.moduleHandle_ = builderForValue.Build();
          return this;
        }
        public Builder MergeModuleHandle(global::bnet.protocol.ContentHandle value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          if (result.hasModuleHandle &&
              result.moduleHandle_ != global::bnet.protocol.ContentHandle.DefaultInstance) {
              result.moduleHandle_ = global::bnet.protocol.ContentHandle.CreateBuilder(result.moduleHandle_).MergeFrom(value).BuildPartial();
          } else {
            result.moduleHandle_ = value;
          }
          result.hasModuleHandle = true;
          return this;
        }
        public Builder ClearModuleHandle() {
          PrepareBuilder();
          result.hasModuleHandle = false;
          result.moduleHandle_ = null;
          return this;
        }
        
        public bool HasMessage {
          get { return result.hasMessage; }
        }
        public pb::ByteString Message {
          get { return result.Message; }
          set { SetMessage(value); }
        }
        public Builder SetMessage(pb::ByteString value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasMessage = true;
          result.message_ = value;
          return this;
        }
        public Builder ClearMessage() {
          PrepareBuilder();
          result.hasMessage = false;
          result.message_ = pb::ByteString.Empty;
          return this;
        }
      }
      static ModuleLoadRequest() {
        object.ReferenceEquals(global::bnet.protocol.authentication.AuthenticationService.Descriptor, null);
      }
    }
    
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
    public sealed partial class ModuleNotification : pb::GeneratedMessage<ModuleNotification, ModuleNotification.Builder> {
      private ModuleNotification() { }
      private static readonly ModuleNotification defaultInstance = new ModuleNotification().MakeReadOnly();
      private static readonly string[] _moduleNotificationFieldNames = new string[] { "module_id", "result" };
      private static readonly uint[] _moduleNotificationFieldTags = new uint[] { 16, 24 };
      public static ModuleNotification DefaultInstance {
        get { return defaultInstance; }
      }
      
      public override ModuleNotification DefaultInstanceForType {
        get { return DefaultInstance; }
      }
      
      protected override ModuleNotification ThisMessage {
        get { return this; }
      }
      
      public static pbd::MessageDescriptor Descriptor {
        get { return global::bnet.protocol.authentication.AuthenticationService.internal__static_bnet_protocol_authentication_ModuleNotification__Descriptor; }
      }
      
      protected override pb::FieldAccess.FieldAccessorTable<ModuleNotification, ModuleNotification.Builder> InternalFieldAccessors {
        get { return global::bnet.protocol.authentication.AuthenticationService.internal__static_bnet_protocol_authentication_ModuleNotification__FieldAccessorTable; }
      }
      
      public const int ModuleIdFieldNumber = 2;
      private bool hasModuleId;
      private int moduleId_;
      public bool HasModuleId {
        get { return hasModuleId; }
      }
      public int ModuleId {
        get { return moduleId_; }
      }
      
      public const int ResultFieldNumber = 3;
      private bool hasResult;
      private uint result_;
      public bool HasResult {
        get { return hasResult; }
      }
      public uint Result {
        get { return result_; }
      }
      
      public override bool IsInitialized {
        get {
          return true;
        }
      }
      
      public override void WriteTo(pb::ICodedOutputStream output) {
        int size = SerializedSize;
        string[] field_names = _moduleNotificationFieldNames;
        if (hasModuleId) {
          output.WriteInt32(2, field_names[0], ModuleId);
        }
        if (hasResult) {
          output.WriteUInt32(3, field_names[1], Result);
        }
        UnknownFields.WriteTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public override int SerializedSize {
        get {
          int size = memoizedSerializedSize;
          if (size != -1) return size;
          
          size = 0;
          if (hasModuleId) {
            size += pb::CodedOutputStream.ComputeInt32Size(2, ModuleId);
          }
          if (hasResult) {
            size += pb::CodedOutputStream.ComputeUInt32Size(3, Result);
          }
          size += UnknownFields.SerializedSize;
          memoizedSerializedSize = size;
          return size;
        }
      }
      
      public static ModuleNotification ParseFrom(pb::ByteString data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static ModuleNotification ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static ModuleNotification ParseFrom(byte[] data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static ModuleNotification ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static ModuleNotification ParseFrom(global::System.IO.Stream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static ModuleNotification ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      public static ModuleNotification ParseDelimitedFrom(global::System.IO.Stream input) {
        return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
      }
      public static ModuleNotification ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
      }
      public static ModuleNotification ParseFrom(pb::ICodedInputStream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static ModuleNotification ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      private ModuleNotification MakeReadOnly() {
        return this;
      }
      
      public static Builder CreateBuilder() { return new Builder(); }
      public override Builder ToBuilder() { return CreateBuilder(this); }
      public override Builder CreateBuilderForType() { return new Builder(); }
      public static Builder CreateBuilder(ModuleNotification prototype) {
        return new Builder(prototype);
      }
      
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
      [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
      public sealed partial class Builder : pb::GeneratedBuilder<ModuleNotification, Builder> {
        protected override Builder ThisBuilder {
          get { return this; }
        }
        public Builder() {
          result = DefaultInstance;
          resultIsReadOnly = true;
        }
        internal Builder(ModuleNotification cloneFrom) {
          result = cloneFrom;
          resultIsReadOnly = true;
        }
        
        private bool resultIsReadOnly;
        private ModuleNotification result;
        
        private ModuleNotification PrepareBuilder() {
          if (resultIsReadOnly) {
            ModuleNotification original = result;
            result = new ModuleNotification();
            resultIsReadOnly = false;
            MergeFrom(original);
          }
          return result;
        }
        
        public override bool IsInitialized {
          get { return result.IsInitialized; }
        }
        
        protected override ModuleNotification MessageBeingBuilt {
          get { return PrepareBuilder(); }
        }
        
        public override Builder Clear() {
          result = DefaultInstance;
          resultIsReadOnly = true;
          return this;
        }
        
        public override Builder Clone() {
          if (resultIsReadOnly) {
            return new Builder(result);
          } else {
            return new Builder().MergeFrom(result);
          }
        }
        
        public override pbd::MessageDescriptor DescriptorForType {
          get { return global::bnet.protocol.authentication.ModuleNotification.Descriptor; }
        }
        
        public override ModuleNotification DefaultInstanceForType {
          get { return global::bnet.protocol.authentication.ModuleNotification.DefaultInstance; }
        }
        
        public override ModuleNotification BuildPartial() {
          if (resultIsReadOnly) {
            return result;
          }
          resultIsReadOnly = true;
          return result.MakeReadOnly();
        }
        
        public override Builder MergeFrom(pb::IMessage other) {
          if (other is ModuleNotification) {
            return MergeFrom((ModuleNotification) other);
          } else {
            base.MergeFrom(other);
            return this;
          }
        }
        
        public override Builder MergeFrom(ModuleNotification other) {
          if (other == global::bnet.protocol.authentication.ModuleNotification.DefaultInstance) return this;
          PrepareBuilder();
          if (other.HasModuleId) {
            ModuleId = other.ModuleId;
          }
          if (other.HasResult) {
            Result = other.Result;
          }
          this.MergeUnknownFields(other.UnknownFields);
          return this;
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input) {
          return MergeFrom(input, pb::ExtensionRegistry.Empty);
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
          PrepareBuilder();
          pb::UnknownFieldSet.Builder unknownFields = null;
          uint tag;
          string field_name;
          while (input.ReadTag(out tag, out field_name)) {
            if(tag == 0 && field_name != null) {
              int field_ordinal = global::System.Array.BinarySearch(_moduleNotificationFieldNames, field_name, global::System.StringComparer.Ordinal);
              if(field_ordinal >= 0)
                tag = _moduleNotificationFieldTags[field_ordinal];
              else {
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                continue;
              }
            }
            switch (tag) {
              case 0: {
                throw pb::InvalidProtocolBufferException.InvalidTag();
              }
              default: {
                if (pb::WireFormat.IsEndGroupTag(tag)) {
                  if (unknownFields != null) {
                    this.UnknownFields = unknownFields.Build();
                  }
                  return this;
                }
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                break;
              }
              case 16: {
                result.hasModuleId = input.ReadInt32(ref result.moduleId_);
                break;
              }
              case 24: {
                result.hasResult = input.ReadUInt32(ref result.result_);
                break;
              }
            }
          }
          
          if (unknownFields != null) {
            this.UnknownFields = unknownFields.Build();
          }
          return this;
        }
        
        
        public bool HasModuleId {
          get { return result.hasModuleId; }
        }
        public int ModuleId {
          get { return result.ModuleId; }
          set { SetModuleId(value); }
        }
        public Builder SetModuleId(int value) {
          PrepareBuilder();
          result.hasModuleId = true;
          result.moduleId_ = value;
          return this;
        }
        public Builder ClearModuleId() {
          PrepareBuilder();
          result.hasModuleId = false;
          result.moduleId_ = 0;
          return this;
        }
        
        public bool HasResult {
          get { return result.hasResult; }
        }
        public uint Result {
          get { return result.Result; }
          set { SetResult(value); }
        }
        public Builder SetResult(uint value) {
          PrepareBuilder();
          result.hasResult = true;
          result.result_ = value;
          return this;
        }
        public Builder ClearResult() {
          PrepareBuilder();
          result.hasResult = false;
          result.result_ = 0;
          return this;
        }
      }
      static ModuleNotification() {
        object.ReferenceEquals(global::bnet.protocol.authentication.AuthenticationService.Descriptor, null);
      }
    }
    
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
    public sealed partial class ModuleMessageRequest : pb::GeneratedMessage<ModuleMessageRequest, ModuleMessageRequest.Builder> {
      private ModuleMessageRequest() { }
      private static readonly ModuleMessageRequest defaultInstance = new ModuleMessageRequest().MakeReadOnly();
      private static readonly string[] _moduleMessageRequestFieldNames = new string[] { "message", "module_id" };
      private static readonly uint[] _moduleMessageRequestFieldTags = new uint[] { 18, 8 };
      public static ModuleMessageRequest DefaultInstance {
        get { return defaultInstance; }
      }
      
      public override ModuleMessageRequest DefaultInstanceForType {
        get { return DefaultInstance; }
      }
      
      protected override ModuleMessageRequest ThisMessage {
        get { return this; }
      }
      
      public static pbd::MessageDescriptor Descriptor {
        get { return global::bnet.protocol.authentication.AuthenticationService.internal__static_bnet_protocol_authentication_ModuleMessageRequest__Descriptor; }
      }
      
      protected override pb::FieldAccess.FieldAccessorTable<ModuleMessageRequest, ModuleMessageRequest.Builder> InternalFieldAccessors {
        get { return global::bnet.protocol.authentication.AuthenticationService.internal__static_bnet_protocol_authentication_ModuleMessageRequest__FieldAccessorTable; }
      }
      
      public const int ModuleIdFieldNumber = 1;
      private bool hasModuleId;
      private int moduleId_;
      public bool HasModuleId {
        get { return hasModuleId; }
      }
      public int ModuleId {
        get { return moduleId_; }
      }
      
      public const int MessageFieldNumber = 2;
      private bool hasMessage;
      private pb::ByteString message_ = pb::ByteString.Empty;
      public bool HasMessage {
        get { return hasMessage; }
      }
      public pb::ByteString Message {
        get { return message_; }
      }
      
      public override bool IsInitialized {
        get {
          if (!hasModuleId) return false;
          return true;
        }
      }
      
      public override void WriteTo(pb::ICodedOutputStream output) {
        int size = SerializedSize;
        string[] field_names = _moduleMessageRequestFieldNames;
        if (hasModuleId) {
          output.WriteInt32(1, field_names[1], ModuleId);
        }
        if (hasMessage) {
          output.WriteBytes(2, field_names[0], Message);
        }
        UnknownFields.WriteTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public override int SerializedSize {
        get {
          int size = memoizedSerializedSize;
          if (size != -1) return size;
          
          size = 0;
          if (hasModuleId) {
            size += pb::CodedOutputStream.ComputeInt32Size(1, ModuleId);
          }
          if (hasMessage) {
            size += pb::CodedOutputStream.ComputeBytesSize(2, Message);
          }
          size += UnknownFields.SerializedSize;
          memoizedSerializedSize = size;
          return size;
        }
      }
      
      public static ModuleMessageRequest ParseFrom(pb::ByteString data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static ModuleMessageRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static ModuleMessageRequest ParseFrom(byte[] data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static ModuleMessageRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static ModuleMessageRequest ParseFrom(global::System.IO.Stream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static ModuleMessageRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      public static ModuleMessageRequest ParseDelimitedFrom(global::System.IO.Stream input) {
        return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
      }
      public static ModuleMessageRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
      }
      public static ModuleMessageRequest ParseFrom(pb::ICodedInputStream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static ModuleMessageRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      private ModuleMessageRequest MakeReadOnly() {
        return this;
      }
      
      public static Builder CreateBuilder() { return new Builder(); }
      public override Builder ToBuilder() { return CreateBuilder(this); }
      public override Builder CreateBuilderForType() { return new Builder(); }
      public static Builder CreateBuilder(ModuleMessageRequest prototype) {
        return new Builder(prototype);
      }
      
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
      [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
      public sealed partial class Builder : pb::GeneratedBuilder<ModuleMessageRequest, Builder> {
        protected override Builder ThisBuilder {
          get { return this; }
        }
        public Builder() {
          result = DefaultInstance;
          resultIsReadOnly = true;
        }
        internal Builder(ModuleMessageRequest cloneFrom) {
          result = cloneFrom;
          resultIsReadOnly = true;
        }
        
        private bool resultIsReadOnly;
        private ModuleMessageRequest result;
        
        private ModuleMessageRequest PrepareBuilder() {
          if (resultIsReadOnly) {
            ModuleMessageRequest original = result;
            result = new ModuleMessageRequest();
            resultIsReadOnly = false;
            MergeFrom(original);
          }
          return result;
        }
        
        public override bool IsInitialized {
          get { return result.IsInitialized; }
        }
        
        protected override ModuleMessageRequest MessageBeingBuilt {
          get { return PrepareBuilder(); }
        }
        
        public override Builder Clear() {
          result = DefaultInstance;
          resultIsReadOnly = true;
          return this;
        }
        
        public override Builder Clone() {
          if (resultIsReadOnly) {
            return new Builder(result);
          } else {
            return new Builder().MergeFrom(result);
          }
        }
        
        public override pbd::MessageDescriptor DescriptorForType {
          get { return global::bnet.protocol.authentication.ModuleMessageRequest.Descriptor; }
        }
        
        public override ModuleMessageRequest DefaultInstanceForType {
          get { return global::bnet.protocol.authentication.ModuleMessageRequest.DefaultInstance; }
        }
        
        public override ModuleMessageRequest BuildPartial() {
          if (resultIsReadOnly) {
            return result;
          }
          resultIsReadOnly = true;
          return result.MakeReadOnly();
        }
        
        public override Builder MergeFrom(pb::IMessage other) {
          if (other is ModuleMessageRequest) {
            return MergeFrom((ModuleMessageRequest) other);
          } else {
            base.MergeFrom(other);
            return this;
          }
        }
        
        public override Builder MergeFrom(ModuleMessageRequest other) {
          if (other == global::bnet.protocol.authentication.ModuleMessageRequest.DefaultInstance) return this;
          PrepareBuilder();
          if (other.HasModuleId) {
            ModuleId = other.ModuleId;
          }
          if (other.HasMessage) {
            Message = other.Message;
          }
          this.MergeUnknownFields(other.UnknownFields);
          return this;
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input) {
          return MergeFrom(input, pb::ExtensionRegistry.Empty);
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
          PrepareBuilder();
          pb::UnknownFieldSet.Builder unknownFields = null;
          uint tag;
          string field_name;
          while (input.ReadTag(out tag, out field_name)) {
            if(tag == 0 && field_name != null) {
              int field_ordinal = global::System.Array.BinarySearch(_moduleMessageRequestFieldNames, field_name, global::System.StringComparer.Ordinal);
              if(field_ordinal >= 0)
                tag = _moduleMessageRequestFieldTags[field_ordinal];
              else {
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                continue;
              }
            }
            switch (tag) {
              case 0: {
                throw pb::InvalidProtocolBufferException.InvalidTag();
              }
              default: {
                if (pb::WireFormat.IsEndGroupTag(tag)) {
                  if (unknownFields != null) {
                    this.UnknownFields = unknownFields.Build();
                  }
                  return this;
                }
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                break;
              }
              case 8: {
                result.hasModuleId = input.ReadInt32(ref result.moduleId_);
                break;
              }
              case 18: {
                result.hasMessage = input.ReadBytes(ref result.message_);
                break;
              }
            }
          }
          
          if (unknownFields != null) {
            this.UnknownFields = unknownFields.Build();
          }
          return this;
        }
        
        
        public bool HasModuleId {
          get { return result.hasModuleId; }
        }
        public int ModuleId {
          get { return result.ModuleId; }
          set { SetModuleId(value); }
        }
        public Builder SetModuleId(int value) {
          PrepareBuilder();
          result.hasModuleId = true;
          result.moduleId_ = value;
          return this;
        }
        public Builder ClearModuleId() {
          PrepareBuilder();
          result.hasModuleId = false;
          result.moduleId_ = 0;
          return this;
        }
        
        public bool HasMessage {
          get { return result.hasMessage; }
        }
        public pb::ByteString Message {
          get { return result.Message; }
          set { SetMessage(value); }
        }
        public Builder SetMessage(pb::ByteString value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasMessage = true;
          result.message_ = value;
          return this;
        }
        public Builder ClearMessage() {
          PrepareBuilder();
          result.hasMessage = false;
          result.message_ = pb::ByteString.Empty;
          return this;
        }
      }
      static ModuleMessageRequest() {
        object.ReferenceEquals(global::bnet.protocol.authentication.AuthenticationService.Descriptor, null);
      }
    }
    
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
    public sealed partial class LogonRequest : pb::GeneratedMessage<LogonRequest, LogonRequest.Builder> {
      private LogonRequest() { }
      private static readonly LogonRequest defaultInstance = new LogonRequest().MakeReadOnly();
      private static readonly string[] _logonRequestFieldNames = new string[] { "application_version", "email", "locale", "platform", "program", "version" };
      private static readonly uint[] _logonRequestFieldTags = new uint[] { 48, 34, 26, 18, 10, 42 };
      public static LogonRequest DefaultInstance {
        get { return defaultInstance; }
      }
      
      public override LogonRequest DefaultInstanceForType {
        get { return DefaultInstance; }
      }
      
      protected override LogonRequest ThisMessage {
        get { return this; }
      }
      
      public static pbd::MessageDescriptor Descriptor {
        get { return global::bnet.protocol.authentication.AuthenticationService.internal__static_bnet_protocol_authentication_LogonRequest__Descriptor; }
      }
      
      protected override pb::FieldAccess.FieldAccessorTable<LogonRequest, LogonRequest.Builder> InternalFieldAccessors {
        get { return global::bnet.protocol.authentication.AuthenticationService.internal__static_bnet_protocol_authentication_LogonRequest__FieldAccessorTable; }
      }
      
      public const int ProgramFieldNumber = 1;
      private bool hasProgram;
      private string program_ = "";
      public bool HasProgram {
        get { return hasProgram; }
      }
      public string Program {
        get { return program_; }
      }
      
      public const int PlatformFieldNumber = 2;
      private bool hasPlatform;
      private string platform_ = "";
      public bool HasPlatform {
        get { return hasPlatform; }
      }
      public string Platform {
        get { return platform_; }
      }
      
      public const int LocaleFieldNumber = 3;
      private bool hasLocale;
      private string locale_ = "";
      public bool HasLocale {
        get { return hasLocale; }
      }
      public string Locale {
        get { return locale_; }
      }
      
      public const int EmailFieldNumber = 4;
      private bool hasEmail;
      private string email_ = "";
      public bool HasEmail {
        get { return hasEmail; }
      }
      public string Email {
        get { return email_; }
      }
      
      public const int VersionFieldNumber = 5;
      private bool hasVersion;
      private string version_ = "";
      public bool HasVersion {
        get { return hasVersion; }
      }
      public string Version {
        get { return version_; }
      }
      
      public const int ApplicationVersionFieldNumber = 6;
      private bool hasApplicationVersion;
      private int applicationVersion_;
      public bool HasApplicationVersion {
        get { return hasApplicationVersion; }
      }
      public int ApplicationVersion {
        get { return applicationVersion_; }
      }
      
      public override bool IsInitialized {
        get {
          return true;
        }
      }
      
      public override void WriteTo(pb::ICodedOutputStream output) {
        int size = SerializedSize;
        string[] field_names = _logonRequestFieldNames;
        if (hasProgram) {
          output.WriteString(1, field_names[4], Program);
        }
        if (hasPlatform) {
          output.WriteString(2, field_names[3], Platform);
        }
        if (hasLocale) {
          output.WriteString(3, field_names[2], Locale);
        }
        if (hasEmail) {
          output.WriteString(4, field_names[1], Email);
        }
        if (hasVersion) {
          output.WriteString(5, field_names[5], Version);
        }
        if (hasApplicationVersion) {
          output.WriteInt32(6, field_names[0], ApplicationVersion);
        }
        UnknownFields.WriteTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public override int SerializedSize {
        get {
          int size = memoizedSerializedSize;
          if (size != -1) return size;
          
          size = 0;
          if (hasProgram) {
            size += pb::CodedOutputStream.ComputeStringSize(1, Program);
          }
          if (hasPlatform) {
            size += pb::CodedOutputStream.ComputeStringSize(2, Platform);
          }
          if (hasLocale) {
            size += pb::CodedOutputStream.ComputeStringSize(3, Locale);
          }
          if (hasEmail) {
            size += pb::CodedOutputStream.ComputeStringSize(4, Email);
          }
          if (hasVersion) {
            size += pb::CodedOutputStream.ComputeStringSize(5, Version);
          }
          if (hasApplicationVersion) {
            size += pb::CodedOutputStream.ComputeInt32Size(6, ApplicationVersion);
          }
          size += UnknownFields.SerializedSize;
          memoizedSerializedSize = size;
          return size;
        }
      }
      
      public static LogonRequest ParseFrom(pb::ByteString data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static LogonRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static LogonRequest ParseFrom(byte[] data) {
        return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
      }
      public static LogonRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
      }
      public static LogonRequest ParseFrom(global::System.IO.Stream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static LogonRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      public static LogonRequest ParseDelimitedFrom(global::System.IO.Stream input) {
        return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
      }
      public static LogonRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
        return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
      }
      public static LogonRequest ParseFrom(pb::ICodedInputStream input) {
        return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
      }
      public static LogonRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
      }
      private LogonRequest MakeReadOnly() {
        return this;
      }
      
      public static Builder CreateBuilder() { return new Builder(); }
      public override Builder ToBuilder() { return CreateBuilder(this); }
      public override Builder CreateBuilderForType() { return new Builder(); }
      public static Builder CreateBuilder(LogonRequest prototype) {
        return new Builder(prototype);
      }
      
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
      [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")]
      public sealed partial class Builder : pb::GeneratedBuilder<LogonRequest, Builder> {
        protected override Builder ThisBuilder {
          get { return this; }
        }
        public Builder() {
          result = DefaultInstance;
          resultIsReadOnly = true;
        }
        internal Builder(LogonRequest cloneFrom) {
          result = cloneFrom;
          resultIsReadOnly = true;
        }
        
        private bool resultIsReadOnly;
        private LogonRequest result;
        
        private LogonRequest PrepareBuilder() {
          if (resultIsReadOnly) {
            LogonRequest original = result;
            result = new LogonRequest();
            resultIsReadOnly = false;
            MergeFrom(original);
          }
          return result;
        }
        
        public override bool IsInitialized {
          get { return result.IsInitialized; }
        }
        
        protected override LogonRequest MessageBeingBuilt {
          get { return PrepareBuilder(); }
        }
        
        public override Builder Clear() {
          result = DefaultInstance;
          resultIsReadOnly = true;
          return this;
        }
        
        public override Builder Clone() {
          if (resultIsReadOnly) {
            return new Builder(result);
          } else {
            return new Builder().MergeFrom(result);
          }
        }
        
        public override pbd::MessageDescriptor DescriptorForType {
          get { return global::bnet.protocol.authentication.LogonRequest.Descriptor; }
        }
        
        public override LogonRequest DefaultInstanceForType {
          get { return global::bnet.protocol.authentication.LogonRequest.DefaultInstance; }
        }
        
        public override LogonRequest BuildPartial() {
          if (resultIsReadOnly) {
            return result;
          }
          resultIsReadOnly = true;
          return result.MakeReadOnly();
        }
        
        public override Builder MergeFrom(pb::IMessage other) {
          if (other is LogonRequest) {
            return MergeFrom((LogonRequest) other);
          } else {
            base.MergeFrom(other);
            return this;
          }
        }
        
        public override Builder MergeFrom(LogonRequest other) {
          if (other == global::bnet.protocol.authentication.LogonRequest.DefaultInstance) return this;
          PrepareBuilder();
          if (other.HasProgram) {
            Program = other.Program;
          }
          if (other.HasPlatform) {
            Platform = other.Platform;
          }
          if (other.HasLocale) {
            Locale = other.Locale;
          }
          if (other.HasEmail) {
            Email = other.Email;
          }
          if (other.HasVersion) {
            Version = other.Version;
          }
          if (other.HasApplicationVersion) {
            ApplicationVersion = other.ApplicationVersion;
          }
          this.MergeUnknownFields(other.UnknownFields);
          return this;
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input) {
          return MergeFrom(input, pb::ExtensionRegistry.Empty);
        }
        
        public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
          PrepareBuilder();
          pb::UnknownFieldSet.Builder unknownFields = null;
          uint tag;
          string field_name;
          while (input.ReadTag(out tag, out field_name)) {
            if(tag == 0 && field_name != null) {
              int field_ordinal = global::System.Array.BinarySearch(_logonRequestFieldNames, field_name, global::System.StringComparer.Ordinal);
              if(field_ordinal >= 0)
                tag = _logonRequestFieldTags[field_ordinal];
              else {
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                continue;
              }
            }
            switch (tag) {
              case 0: {
                throw pb::InvalidProtocolBufferException.InvalidTag();
              }
              default: {
                if (pb::WireFormat.IsEndGroupTag(tag)) {
                  if (unknownFields != null) {
                    this.UnknownFields = unknownFields.Build();
                  }
                  return this;
                }
                if (unknownFields == null) {
                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                }
                ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
                break;
              }
              case 10: {
                result.hasProgram = input.ReadString(ref result.program_);
                break;
              }
              case 18: {
                result.hasPlatform = input.ReadString(ref result.platform_);
                break;
              }
              case 26: {
                result.hasLocale = input.ReadString(ref result.locale_);
                break;
              }
              case 34: {
                result.hasEmail = input.ReadString(ref result.email_);
                break;
              }
              case 42: {
                result.hasVersion = input.ReadString(ref result.version_);
                break;
              }
              case 48: {
                result.hasApplicationVersion = input.ReadInt32(ref result.applicationVersion_);
                break;
              }
            }
          }
          
          if (unknownFields != null) {
            this.UnknownFields = unknownFields.Build();
          }
          return this;
        }
        
        
        public bool HasProgram {
          get { return result.hasProgram; }
        }
        public string Program {
          get { return result.Program; }
          set { SetProgram(value); }
        }
        public Builder SetProgram(string value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasProgram = true;
          result.program_ = value;
          return this;
        }
        public Builder ClearProgram() {
          PrepareBuilder();
          result.hasProgram = false;
          result.program_ = "";
          return this;
        }
        
        public bool HasPlatform {
          get { return result.hasPlatform; }
        }
        public string Platform {
          get { return result.Platform; }
          set { SetPlatform(value); }
        }
        public Builder SetPlatform(string value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasPlatform = true;
          result.platform_ = value;
          return this;
        }
        public Builder ClearPlatform() {
          PrepareBuilder();
          result.hasPlatform = false;
          result.platform_ = "";
          return this;
        }
        
        public bool HasLocale {
          get { return result.hasLocale; }
        }
        public string Locale {
          get { return result.Locale; }
          set { SetLocale(value); }
        }
        public Builder SetLocale(string value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasLocale = true;
          result.locale_ = value;
          return this;
        }
        public Builder ClearLocale() {
          PrepareBuilder();
          result.hasLocale = false;
          result.locale_ = "";
          return this;
        }
        
        public bool HasEmail {
          get { return result.hasEmail; }
        }
        public string Email {
          get { return result.Email; }
          set { SetEmail(value); }
        }
        public Builder SetEmail(string value) {
          pb::ThrowHelper.ThrowIfNull(value, "value");
          PrepareBuilder();
          result.hasEmail = true;
          result.email_ = value;
          return this;
        }
        public Builder ClearEmail() {
          PrepareBuilder();
          result.hasEmail = false;
          result.email_ = "";
          return this;
        }
        
        public bool HasVersion {
          get { return result.hasVersion; }
        }
        public string Version {
          get { return result.Version; }
  
gt:         set { SetVersion(value); }