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

using pb = Google.Protobuf;
using pbc = Google.Protobuf.Collections;
using pbr = Google.Protobuf.Reflection;
namespace Bgs.Protocol.Account.V1
{

    /// <summary>Holder for reflection information generated from bgs/low/pb/client/account_service.proto</summary>
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public static partial class AccountServiceReflection
    {

        #region Descriptor
        /// <summary>File descriptor for bgs/low/pb/client/account_service.proto</summary>
        public static pbr::FileDescriptor Descriptor
        {
            get { return descriptor; }
        }
        private static pbr::FileDescriptor descriptor;

        static AccountServiceReflection()
        {
            byte[] descriptorData = System.Convert.FromBase64String(
                string.Concat(
                  "CidiZ3MvbG93L3BiL2NsaWVudC9hY2NvdW50X3NlcnZpY2UucHJvdG8SF2Jn",
                  "cy5wcm90b2NvbC5hY2NvdW50LnYxGiViZ3MvbG93L3BiL2NsaWVudC9hY2Nv",
                  "dW50X3R5cGVzLnByb3RvGiRiZ3MvbG93L3BiL2NsaWVudC9lbnRpdHlfdHlw",
                  "ZXMucHJvdG8aIWJncy9sb3cvcGIvY2xpZW50L3JwY190eXBlcy5wcm90byKC",
                  "AgoRR2V0QWNjb3VudFJlcXVlc3QSNgoDcmVmGAEgASgLMikuYmdzLnByb3Rv",
                  "Y29sLmFjY291bnQudjEuQWNjb3VudFJlZmVyZW5jZRIRCglmZXRjaF9hbGwY",
                  "CiABKAgSEgoKZmV0Y2hfYmxvYhgLIAEoCBIQCghmZXRjaF9pZBgMIAEoCBIT",
                  "CgtmZXRjaF9lbWFpbBgNIAEoCBIYChBmZXRjaF9iYXR0bGVfdGFnGA4gASgI",
                  "EhcKD2ZldGNoX2Z1bGxfbmFtZRgPIAEoCBITCgtmZXRjaF9saW5rcxgQIAEo",
                  "CBIfChdmZXRjaF9wYXJlbnRhbF9jb250cm9scxgRIAEoCCK0AgoSR2V0QWNj",
                  "b3VudFJlc3BvbnNlEjIKBGJsb2IYCyABKAsyJC5iZ3MucHJvdG9jb2wuYWNj",
                  "b3VudC52MS5BY2NvdW50QmxvYhIuCgJpZBgMIAEoCzIiLmJncy5wcm90b2Nv",
                  "bC5hY2NvdW50LnYxLkFjY291bnRJZBINCgVlbWFpbBgNIAMoCRISCgpiYXR0",
                  "bGVfdGFnGA4gASgJEhEKCWZ1bGxfbmFtZRgPIAEoCRI3CgVsaW5rcxgQIAMo",
                  "CzIoLmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkdhbWVBY2NvdW50TGluaxJL",
                  "ChVwYXJlbnRhbF9jb250cm9sX2luZm8YESABKAsyLC5iZ3MucHJvdG9jb2wu",
                  "YWNjb3VudC52MS5QYXJlbnRhbENvbnRyb2xJbmZvIosBChhDcmVhdGVHYW1l",
                  "QWNjb3VudFJlcXVlc3QSMwoHYWNjb3VudBgBIAEoCzIiLmJncy5wcm90b2Nv",
                  "bC5hY2NvdW50LnYxLkFjY291bnRJZBIOCgZyZWdpb24YAiABKA0SDwoHcHJv",
                  "Z3JhbRgDIAEoBxIZChFyZWFsbV9wZXJtaXNzaW9ucxgEIAEoDSKaAQoSQ2Fj",
                  "aGVFeHBpcmVSZXF1ZXN0EjMKB2FjY291bnQYASADKAsyIi5iZ3MucHJvdG9j",
                  "b2wuYWNjb3VudC52MS5BY2NvdW50SWQSQAoMZ2FtZV9hY2NvdW50GAIgAygL",
                  "MiouYmdzLnByb3RvY29sLmFjY291bnQudjEuR2FtZUFjY291bnRIYW5kbGUS",
                  "DQoFZW1haWwYAyADKAki6AEKF0NyZWRlbnRpYWxVcGRhdGVSZXF1ZXN0EjMK",
                  "B2FjY291bnQYASABKAsyIi5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5BY2Nv",
                  "dW50SWQSQwoPb2xkX2NyZWRlbnRpYWxzGAIgAygLMiouYmdzLnByb3RvY29s",
                  "LmFjY291bnQudjEuQWNjb3VudENyZWRlbnRpYWwSQwoPbmV3X2NyZWRlbnRp",
                  "YWxzGAMgAygLMiouYmdzLnByb3RvY29sLmFjY291bnQudjEuQWNjb3VudENy",
                  "ZWRlbnRpYWwSDgoGcmVnaW9uGAQgASgNIhoKGENyZWRlbnRpYWxVcGRhdGVS",
                  "ZXNwb25zZSJ9ChhBY2NvdW50RmxhZ1VwZGF0ZVJlcXVlc3QSMwoHYWNjb3Vu",
                  "dBgBIAEoCzIiLmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkFjY291bnRJZBIO",
                  "CgZyZWdpb24YAiABKA0SDAoEZmxhZxgDIAEoBBIOCgZhY3RpdmUYBCABKAgi",
                  "fgocR2FtZUFjY291bnRGbGFnVXBkYXRlUmVxdWVzdBJACgxnYW1lX2FjY291",
                  "bnQYASABKAsyKi5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5HYW1lQWNjb3Vu",
                  "dEhhbmRsZRIMCgRmbGFnGAIgASgEEg4KBmFjdGl2ZRgDIAEoCCJWChlTdWJz",
                  "Y3JpcHRpb25VcGRhdGVSZXF1ZXN0EjkKA3JlZhgCIAMoCzIsLmJncy5wcm90",
                  "b2NvbC5hY2NvdW50LnYxLlN1YnNjcmliZXJSZWZlcmVuY2UiVwoaU3Vic2Ny",
                  "aXB0aW9uVXBkYXRlUmVzcG9uc2USOQoDcmVmGAEgAygLMiwuYmdzLnByb3Rv",
                  "Y29sLmFjY291bnQudjEuU3Vic2NyaWJlclJlZmVyZW5jZSI9ChNJc0lnckFk",
                  "ZHJlc3NSZXF1ZXN0EhYKDmNsaWVudF9hZGRyZXNzGAEgASgJEg4KBnJlZ2lv",
                  "bhgCIAEoDSIxChRBY2NvdW50U2VydmljZVJlZ2lvbhIKCgJpZBgBIAEoDRIN",
                  "CgVzaGFyZBgCIAEoCSJVChRBY2NvdW50U2VydmljZUNvbmZpZxI9CgZyZWdp",
                  "b24YASADKAsyLS5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5BY2NvdW50U2Vy",
                  "dmljZVJlZ2lvbiLcAQoWR2V0QWNjb3VudFN0YXRlUmVxdWVzdBIpCgllbnRp",
                  "dHlfaWQYASABKAsyFi5iZ3MucHJvdG9jb2wuRW50aXR5SWQSDwoHcHJvZ3Jh",
                  "bRgCIAEoDRIOCgZyZWdpb24YAyABKA0SPQoHb3B0aW9ucxgKIAEoCzIsLmJn",
                  "cy5wcm90b2NvbC5hY2NvdW50LnYxLkFjY291bnRGaWVsZE9wdGlvbnMSNwoE",
                  "dGFncxgLIAEoCzIpLmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkFjY291bnRG",
                  "aWVsZFRhZ3MiiAEKF0dldEFjY291bnRTdGF0ZVJlc3BvbnNlEjQKBXN0YXRl",
                  "GAEgASgLMiUuYmdzLnByb3RvY29sLmFjY291bnQudjEuQWNjb3VudFN0YXRl",
                  "EjcKBHRhZ3MYAiABKAsyKS5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5BY2Nv",
                  "dW50RmllbGRUYWdzIv0BChpHZXRHYW1lQWNjb3VudFN0YXRlUmVxdWVzdBIu",
                  "CgphY2NvdW50X2lkGAEgASgLMhYuYmdzLnByb3RvY29sLkVudGl0eUlkQgIY",
                  "ARIvCg9nYW1lX2FjY291bnRfaWQYAiABKAsyFi5iZ3MucHJvdG9jb2wuRW50",
                  "aXR5SWQSQQoHb3B0aW9ucxgKIAEoCzIwLmJncy5wcm90b2NvbC5hY2NvdW50",
                  "LnYxLkdhbWVBY2NvdW50RmllbGRPcHRpb25zEjsKBHRhZ3MYCyABKAsyLS5i",
                  "Z3MucHJvdG9jb2wuYWNjb3VudC52MS5HYW1lQWNjb3VudEZpZWxkVGFncyKU",
                  "AQobR2V0R2FtZUFjY291bnRTdGF0ZVJlc3BvbnNlEjgKBXN0YXRlGAEgASgL",
                  "MikuYmdzLnByb3RvY29sLmFjY291bnQudjEuR2FtZUFjY291bnRTdGF0ZRI7",
                  "CgR0YWdzGAIgASgLMi0uYmdzLnByb3RvY29sLmFjY291bnQudjEuR2FtZUFj",
                  "Y291bnRGaWVsZFRhZ3Mi3gEKEkdldExpY2Vuc2VzUmVxdWVzdBIpCgl0YXJn",
                  "ZXRfaWQYASABKAsyFi5iZ3MucHJvdG9jb2wuRW50aXR5SWQSHgoWZmV0Y2hf",
                  "YWNjb3VudF9saWNlbnNlcxgCIAEoCBIjChtmZXRjaF9nYW1lX2FjY291bnRf",
                  "bGljZW5zZXMYAyABKAgSJgoeZmV0Y2hfZHluYW1pY19hY2NvdW50X2xpY2Vu",
                  "c2VzGAQgASgIEg8KB3Byb2dyYW0YBSABKAcSHwoXZXhjbHVkZV91bmtub3du",
                  "X3Byb2dyYW0YBiABKAgiUAoTR2V0TGljZW5zZXNSZXNwb25zZRI5CghsaWNl",
                  "bnNlcxgBIAMoCzInLmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkFjY291bnRM",
                  "aWNlbnNlIkYKGUdldEdhbWVTZXNzaW9uSW5mb1JlcXVlc3QSKQoJZW50aXR5",
                  "X2lkGAEgASgLMhYuYmdzLnByb3RvY29sLkVudGl0eUlkIlwKGkdldEdhbWVT",
                  "ZXNzaW9uSW5mb1Jlc3BvbnNlEj4KDHNlc3Npb25faW5mbxgCIAEoCzIoLmJn",
                  "cy5wcm90b2NvbC5hY2NvdW50LnYxLkdhbWVTZXNzaW9uSW5mbyJ+Ch9HZXRH",
                  "YW1lVGltZVJlbWFpbmluZ0luZm9SZXF1ZXN0Ei8KD2dhbWVfYWNjb3VudF9p",
                  "ZBgBIAEoCzIWLmJncy5wcm90b2NvbC5FbnRpdHlJZBIqCgphY2NvdW50X2lk",
                  "GAIgASgLMhYuYmdzLnByb3RvY29sLkVudGl0eUlkInQKIEdldEdhbWVUaW1l",
                  "UmVtYWluaW5nSW5mb1Jlc3BvbnNlElAKGGdhbWVfdGltZV9yZW1haW5pbmdf",
                  "aW5mbxgBIAEoCzIuLmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkdhbWVUaW1l",
                  "UmVtYWluaW5nSW5mbyI/ChJHZXRDQUlTSW5mb1JlcXVlc3QSKQoJZW50aXR5",
                  "X2lkGAEgASgLMhYuYmdzLnByb3RvY29sLkVudGl0eUlkIkcKE0dldENBSVNJ",
                  "bmZvUmVzcG9uc2USMAoJY2Fpc19pbmZvGAEgASgLMh0uYmdzLnByb3RvY29s",
                  "LmFjY291bnQudjEuQ0FJUyJGChlGb3J3YXJkQ2FjaGVFeHBpcmVSZXF1ZXN0",
                  "EikKCWVudGl0eV9pZBgBIAEoCzIWLmJncy5wcm90b2NvbC5FbnRpdHlJZCJu",
                  "ChhHZXRBdXRob3JpemVkRGF0YVJlcXVlc3QSKQoJZW50aXR5X2lkGAEgASgL",
                  "MhYuYmdzLnByb3RvY29sLkVudGl0eUlkEgsKA3RhZxgCIAMoCRIaChJwcml2",
                  "aWxlZ2VkX25ldHdvcmsYAyABKAgiUgoZR2V0QXV0aG9yaXplZERhdGFSZXNw",
                  "b25zZRI1CgRkYXRhGAEgAygLMicuYmdzLnByb3RvY29sLmFjY291bnQudjEu",
                  "QXV0aG9yaXplZERhdGEi0AEKGEFjY291bnRTdGF0ZU5vdGlmaWNhdGlvbhI8",
                  "Cg1hY2NvdW50X3N0YXRlGAEgASgLMiUuYmdzLnByb3RvY29sLmFjY291bnQu",
                  "djEuQWNjb3VudFN0YXRlEhUKDXN1YnNjcmliZXJfaWQYAiABKAQSPwoMYWNj",
                  "b3VudF90YWdzGAMgASgLMikuYmdzLnByb3RvY29sLmFjY291bnQudjEuQWNj",
                  "b3VudEZpZWxkVGFncxIeChZzdWJzY3JpcHRpb25fY29tcGxldGVkGAQgASgI",
                  "IuYBChxHYW1lQWNjb3VudFN0YXRlTm90aWZpY2F0aW9uEkUKEmdhbWVfYWNj",
                  "b3VudF9zdGF0ZRgBIAEoCzIpLmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkdh",
                  "bWVBY2NvdW50U3RhdGUSFQoNc3Vic2NyaWJlcl9pZBgCIAEoBBJIChFnYW1l",
                  "X2FjY291bnRfdGFncxgDIAEoCzItLmJncy5wcm90b2NvbC5hY2NvdW50LnYx",
                  "LkdhbWVBY2NvdW50RmllbGRUYWdzEh4KFnN1YnNjcmlwdGlvbl9jb21wbGV0",
                  "ZWQYBCABKAgisgEKF0dhbWVBY2NvdW50Tm90aWZpY2F0aW9uEj8KDWdhbWVf",
                  "YWNjb3VudHMYASADKAsyKC5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5HYW1l",
                  "QWNjb3VudExpc3QSFQoNc3Vic2NyaWJlcl9pZBgCIAEoBBI/CgxhY2NvdW50",
                  "X3RhZ3MYAyABKAsyKS5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5BY2NvdW50",
                  "RmllbGRUYWdzIqgBCh5HYW1lQWNjb3VudFNlc3Npb25Ob3RpZmljYXRpb24S",
                  "QAoMZ2FtZV9hY2NvdW50GAEgASgLMiouYmdzLnByb3RvY29sLmFjY291bnQu",
                  "djEuR2FtZUFjY291bnRIYW5kbGUSRAoMc2Vzc2lvbl9pbmZvGAIgASgLMi4u",
                  "YmdzLnByb3RvY29sLmFjY291bnQudjEuR2FtZVNlc3Npb25VcGRhdGVJbmZv",
                  "Ms4PCg5BY2NvdW50U2VydmljZRJmCg5HZXRHYW1lQWNjb3VudBIqLmJncy5w",
                  "cm90b2NvbC5hY2NvdW50LnYxLkdhbWVBY2NvdW50SGFuZGxlGiguYmdzLnBy",
                  "b3RvY29sLmFjY291bnQudjEuR2FtZUFjY291bnRCbG9iEmUKCkdldEFjY291",
                  "bnQSKi5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5HZXRBY2NvdW50UmVxdWVz",
                  "dBorLmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkdldEFjY291bnRSZXNwb25z",
                  "ZRJyChFDcmVhdGVHYW1lQWNjb3VudBIxLmJncy5wcm90b2NvbC5hY2NvdW50",
                  "LnYxLkNyZWF0ZUdhbWVBY2NvdW50UmVxdWVzdBoqLmJncy5wcm90b2NvbC5h",
                  "Y2NvdW50LnYxLkdhbWVBY2NvdW50SGFuZGxlElIKDElzSWdyQWRkcmVzcxIs",
                  "LmJncy5wcm90b2NvbC5hY2NvdW50LnYxLklzSWdyQWRkcmVzc1JlcXVlc3Qa",
                  "FC5iZ3MucHJvdG9jb2wuTm9EYXRhElUKC0NhY2hlRXhwaXJlEisuYmdzLnBy",
                  "b3RvY29sLmFjY291bnQudjEuQ2FjaGVFeHBpcmVSZXF1ZXN0GhkuYmdzLnBy",
                  "b3RvY29sLk5PX1JFU1BPTlNFEncKEENyZWRlbnRpYWxVcGRhdGUSMC5iZ3Mu",
                  "cHJvdG9jb2wuYWNjb3VudC52MS5DcmVkZW50aWFsVXBkYXRlUmVxdWVzdBox",
                  "LmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkNyZWRlbnRpYWxVcGRhdGVSZXNw",
                  "b25zZRJ0CglTdWJzY3JpYmUSMi5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5T",
                  "dWJzY3JpcHRpb25VcGRhdGVSZXF1ZXN0GjMuYmdzLnByb3RvY29sLmFjY291",
                  "bnQudjEuU3Vic2NyaXB0aW9uVXBkYXRlUmVzcG9uc2USVwoLVW5zdWJzY3Jp",
                  "YmUSMi5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5TdWJzY3JpcHRpb25VcGRh",
                  "dGVSZXF1ZXN0GhQuYmdzLnByb3RvY29sLk5vRGF0YRJ0Cg9HZXRBY2NvdW50",
                  "U3RhdGUSLy5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5HZXRBY2NvdW50U3Rh",
                  "dGVSZXF1ZXN0GjAuYmdzLnByb3RvY29sLmFjY291bnQudjEuR2V0QWNjb3Vu",
                  "dFN0YXRlUmVzcG9uc2USgAEKE0dldEdhbWVBY2NvdW50U3RhdGUSMy5iZ3Mu",
                  "cHJvdG9jb2wuYWNjb3VudC52MS5HZXRHYW1lQWNjb3VudFN0YXRlUmVxdWVz",
                  "dBo0LmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkdldEdhbWVBY2NvdW50U3Rh",
                  "dGVSZXNwb25zZRJoCgtHZXRMaWNlbnNlcxIrLmJncy5wcm90b2NvbC5hY2Nv",
                  "dW50LnYxLkdldExpY2Vuc2VzUmVxdWVzdBosLmJncy5wcm90b2NvbC5hY2Nv",
                  "dW50LnYxLkdldExpY2Vuc2VzUmVzcG9uc2USjwEKGEdldEdhbWVUaW1lUmVt",
                  "YWluaW5nSW5mbxI4LmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkdldEdhbWVU",
                  "aW1lUmVtYWluaW5nSW5mb1JlcXVlc3QaOS5iZ3MucHJvdG9jb2wuYWNjb3Vu",
                  "dC52MS5HZXRHYW1lVGltZVJlbWFpbmluZ0luZm9SZXNwb25zZRJ9ChJHZXRH",
                  "YW1lU2Vzc2lvbkluZm8SMi5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5HZXRH",
                  "YW1lU2Vzc2lvbkluZm9SZXF1ZXN0GjMuYmdzLnByb3RvY29sLmFjY291bnQu",
                  "djEuR2V0R2FtZVNlc3Npb25JbmZvUmVzcG9uc2USaAoLR2V0Q0FJU0luZm8S",
                  "Ky5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5HZXRDQUlTSW5mb1JlcXVlc3Qa",
                  "LC5iZ3MucHJvdG9jb2wuYWNjb3VudC52MS5HZXRDQUlTSW5mb1Jlc3BvbnNl",
                  "El4KEkZvcndhcmRDYWNoZUV4cGlyZRIyLmJncy5wcm90b2NvbC5hY2NvdW50",
                  "LnYxLkZvcndhcmRDYWNoZUV4cGlyZVJlcXVlc3QaFC5iZ3MucHJvdG9jb2wu",
                  "Tm9EYXRhEnoKEUdldEF1dGhvcml6ZWREYXRhEjEuYmdzLnByb3RvY29sLmFj",
                  "Y291bnQudjEuR2V0QXV0aG9yaXplZERhdGFSZXF1ZXN0GjIuYmdzLnByb3Rv",
                  "Y29sLmFjY291bnQudjEuR2V0QXV0aG9yaXplZERhdGFSZXNwb25zZRJhChFB",
                  "Y2NvdW50RmxhZ1VwZGF0ZRIxLmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkFj",
                  "Y291bnRGbGFnVXBkYXRlUmVxdWVzdBoZLmJncy5wcm90b2NvbC5OT19SRVNQ",
                  "T05TRRJpChVHYW1lQWNjb3VudEZsYWdVcGRhdGUSNS5iZ3MucHJvdG9jb2wu",
                  "YWNjb3VudC52MS5HYW1lQWNjb3VudEZsYWdVcGRhdGVSZXF1ZXN0GhkuYmdz",
                  "LnByb3RvY29sLk5PX1JFU1BPTlNFMsMDCg9BY2NvdW50TGlzdGVuZXISZQoV",
                  "T25BY2NvdW50U3RhdGVVcGRhdGVkEjEuYmdzLnByb3RvY29sLmFjY291bnQu",
                  "djEuQWNjb3VudFN0YXRlTm90aWZpY2F0aW9uGhkuYmdzLnByb3RvY29sLk5P",
                  "X1JFU1BPTlNFEm0KGU9uR2FtZUFjY291bnRTdGF0ZVVwZGF0ZWQSNS5iZ3Mu",
                  "cHJvdG9jb2wuYWNjb3VudC52MS5HYW1lQWNjb3VudFN0YXRlTm90aWZpY2F0",
                  "aW9uGhkuYmdzLnByb3RvY29sLk5PX1JFU1BPTlNFEmkKFU9uR2FtZUFjY291",
                  "bnRzVXBkYXRlZBIwLmJncy5wcm90b2NvbC5hY2NvdW50LnYxLkdhbWVBY2Nv",
                  "dW50Tm90aWZpY2F0aW9uGhkuYmdzLnByb3RvY29sLk5PX1JFU1BPTlNFIgOI",
                  "AgESbwoUT25HYW1lU2Vzc2lvblVwZGF0ZWQSNy5iZ3MucHJvdG9jb2wuYWNj",
                  "b3VudC52MS5HYW1lQWNjb3VudFNlc3Npb25Ob3RpZmljYXRpb24aGS5iZ3Mu",
                  "cHJvdG9jb2wuTk9fUkVTUE9OU0UiA4gCAUIFSAKAAQBiBnByb3RvMw=="));
            descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
                new pbr::FileDescriptor[] { Bgs.Protocol.Account.V1.AccountTypesReflection.Descriptor, Bgs.Protocol.EntityTypesReflection.Descriptor, Bgs.Protocol.RpcTypesReflection.Descriptor, },
                new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetAccountRequest), Bgs.Protocol.Account.V1.GetAccountRequest.Parser, new[]{ "Ref", "FetchAll", "FetchBlob", "FetchId", "FetchEmail", "FetchBattleTag", "FetchFullName", "FetchLinks", "FetchParentalControls" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetAccountResponse), Bgs.Protocol.Account.V1.GetAccountResponse.Parser, new[]{ "Blob", "Id", "Email", "BattleTag", "FullName", "Links", "ParentalControlInfo" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.CreateGameAccountRequest), Bgs.Protocol.Account.V1.CreateGameAccountRequest.Parser, new[]{ "Account", "Region", "Program", "RealmPermissions" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.CacheExpireRequest), Bgs.Protocol.Account.V1.CacheExpireRequest.Parser, new[]{ "Account", "GameAccount", "Email" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.CredentialUpdateRequest), Bgs.Protocol.Account.V1.CredentialUpdateRequest.Parser, new[]{ "Account", "OldCredentials", "NewCredentials", "Region" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.CredentialUpdateResponse), Bgs.Protocol.Account.V1.CredentialUpdateResponse.Parser, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.AccountFlagUpdateRequest), Bgs.Protocol.Account.V1.AccountFlagUpdateRequest.Parser, new[]{ "Account", "Region", "Flag", "Active" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GameAccountFlagUpdateRequest), Bgs.Protocol.Account.V1.GameAccountFlagUpdateRequest.Parser, new[]{ "GameAccount", "Flag", "Active" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.SubscriptionUpdateRequest), Bgs.Protocol.Account.V1.SubscriptionUpdateRequest.Parser, new[]{ "Ref" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.SubscriptionUpdateResponse), Bgs.Protocol.Account.V1.SubscriptionUpdateResponse.Parser, new[]{ "Ref" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.IsIgrAddressRequest), Bgs.Protocol.Account.V1.IsIgrAddressRequest.Parser, new[]{ "ClientAddress", "Region" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.AccountServiceRegion), Bgs.Protocol.Account.V1.AccountServiceRegion.Parser, new[]{ "Id", "Shard" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.AccountServiceConfig), Bgs.Protocol.Account.V1.AccountServiceConfig.Parser, new[]{ "Region" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetAccountStateRequest), Bgs.Protocol.Account.V1.GetAccountStateRequest.Parser, new[]{ "EntityId", "Program", "Region", "Options", "Tags" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetAccountStateResponse), Bgs.Protocol.Account.V1.GetAccountStateResponse.Parser, new[]{ "State", "Tags" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetGameAccountStateRequest), Bgs.Protocol.Account.V1.GetGameAccountStateRequest.Parser, new[]{ "AccountId", "GameAccountId", "Options", "Tags" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetGameAccountStateResponse), Bgs.Protocol.Account.V1.GetGameAccountStateResponse.Parser, new[]{ "State", "Tags" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetLicensesRequest), Bgs.Protocol.Account.V1.GetLicensesRequest.Parser, new[]{ "TargetId", "FetchAccountLicenses", "FetchGameAccountLicenses", "FetchDynamicAccountLicenses", "Program", "ExcludeUnknownProgram" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetLicensesResponse), Bgs.Protocol.Account.V1.GetLicensesResponse.Parser, new[]{ "Licenses" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetGameSessionInfoRequest), Bgs.Protocol.Account.V1.GetGameSessionInfoRequest.Parser, new[]{ "EntityId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetGameSessionInfoResponse), Bgs.Protocol.Account.V1.GetGameSessionInfoResponse.Parser, new[]{ "SessionInfo" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetGameTimeRemainingInfoRequest), Bgs.Protocol.Account.V1.GetGameTimeRemainingInfoRequest.Parser, new[]{ "GameAccountId", "AccountId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetGameTimeRemainingInfoResponse), Bgs.Protocol.Account.V1.GetGameTimeRemainingInfoResponse.Parser, new[]{ "GameTimeRemainingInfo" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetCAISInfoRequest), Bgs.Protocol.Account.V1.GetCAISInfoRequest.Parser, new[]{ "EntityId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetCAISInfoResponse), Bgs.Protocol.Account.V1.GetCAISInfoResponse.Parser, new[]{ "CaisInfo" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.ForwardCacheExpireRequest), Bgs.Protocol.Account.V1.ForwardCacheExpireRequest.Parser, new[]{ "EntityId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetAuthorizedDataRequest), Bgs.Protocol.Account.V1.GetAuthorizedDataRequest.Parser, new[]{ "EntityId", "Tag", "PrivilegedNetwork" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GetAuthorizedDataResponse), Bgs.Protocol.Account.V1.GetAuthorizedDataResponse.Parser, new[]{ "Data" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.AccountStateNotification), Bgs.Protocol.Account.V1.AccountStateNotification.Parser, new[]{ "AccountState", "SubscriberId", "AccountTags", "SubscriptionCompleted" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GameAccountStateNotification), Bgs.Protocol.Account.V1.GameAccountStateNotification.Parser, new[]{ "GameAccountState", "SubscriberId", "GameAccountTags", "SubscriptionCompleted" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GameAccountNotification), Bgs.Protocol.Account.V1.GameAccountNotification.Parser, new[]{ "GameAccounts", "SubscriberId", "AccountTags" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Account.V1.GameAccountSessionNotification), Bgs.Protocol.Account.V1.GameAccountSessionNotification.Parser, new[]{ "GameAccount", "SessionInfo" }, null, null, null)
                }));
        }
        #endregion

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[0]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetAccountRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetAccountRequest(GetAccountRequest other) : this()
        {
            Ref = other.ref_ != null ? other.Ref.Clone() : null;
            fetchAll_ = other.fetchAll_;
            fetchBlob_ = other.fetchBlob_;
            fetchId_ = other.fetchId_;
            fetchEmail_ = other.fetchEmail_;
            fetchBattleTag_ = other.fetchBattleTag_;
            fetchFullName_ = other.fetchFullName_;
            fetchLinks_ = other.fetchLinks_;
            fetchParentalControls_ = other.fetchParentalControls_;
        }

        public GetAccountRequest Clone()
        {
            return new GetAccountRequest(this);
        }

        /// <summary>Field number for the "ref" field.</summary>
        public const int RefFieldNumber = 1;
        private Bgs.Protocol.Account.V1.AccountReference ref_;
        public Bgs.Protocol.Account.V1.AccountReference Ref
        {
            get { return ref_; }
            set
            {
                ref_ = value;
            }
        }

        /// <summary>Field number for the "fetch_all" field.</summary>
        public const int FetchAllFieldNumber = 10;
        private bool fetchAll_;
        public bool FetchAll
        {
            get { return fetchAll_; }
            set
            {
                fetchAll_ = value;
            }
        }

        /// <summary>Field number for the "fetch_blob" field.</summary>
        public const int FetchBlobFieldNumber = 11;
        private bool fetchBlob_;
        public bool FetchBlob
        {
            get { return fetchBlob_; }
            set
            {
                fetchBlob_ = value;
            }
        }

        /// <summary>Field number for the "fetch_id" field.</summary>
        public const int FetchIdFieldNumber = 12;
        private bool fetchId_;
        public bool FetchId
        {
            get { return fetchId_; }
            set
            {
                fetchId_ = value;
            }
        }

        /// <summary>Field number for the "fetch_email" field.</summary>
        public const int FetchEmailFieldNumber = 13;
        private bool fetchEmail_;
        public bool FetchEmail
        {
            get { return fetchEmail_; }
            set
            {
                fetchEmail_ = value;
            }
        }

        /// <summary>Field number for the "fetch_battle_tag" field.</summary>
        public const int FetchBattleTagFieldNumber = 14;
        private bool fetchBattleTag_;
        public bool FetchBattleTag
        {
            get { return fetchBattleTag_; }
            set
            {
                fetchBattleTag_ = value;
            }
        }

        /// <summary>Field number for the "fetch_full_name" field.</summary>
        public const int FetchFullNameFieldNumber = 15;
        private bool fetchFullName_;
        public bool FetchFullName
        {
            get { return fetchFullName_; }
            set
            {
                fetchFullName_ = value;
            }
        }

        /// <summary>Field number for the "fetch_links" field.</summary>
        public const int FetchLinksFieldNumber = 16;
        private bool fetchLinks_;
        public bool FetchLinks
        {
            get { return fetchLinks_; }
            set
            {
                fetchLinks_ = value;
            }
        }

        /// <summary>Field number for the "fetch_parental_controls" field.</summary>
        public const int FetchParentalControlsFieldNumber = 17;
        private bool fetchParentalControls_;
        public bool FetchParentalControls
        {
            get { return fetchParentalControls_; }
            set
            {
                fetchParentalControls_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetAccountRequest);
        }

        public bool Equals(GetAccountRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(Ref, other.Ref)) return false;
            if (FetchAll != other.FetchAll) return false;
            if (FetchBlob != other.FetchBlob) return false;
            if (FetchId != other.FetchId) return false;
            if (FetchEmail != other.FetchEmail) return false;
            if (FetchBattleTag != other.FetchBattleTag) return false;
            if (FetchFullName != other.FetchFullName) return false;
            if (FetchLinks != other.FetchLinks) return false;
            if (FetchParentalControls != other.FetchParentalControls) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (ref_ != null) hash ^= Ref.GetHashCode();
            if (FetchAll != false) hash ^= FetchAll.GetHashCode();
            if (FetchBlob != false) hash ^= FetchBlob.GetHashCode();
            if (FetchId != false) hash ^= FetchId.GetHashCode();
            if (FetchEmail != false) hash ^= FetchEmail.GetHashCode();
            if (FetchBattleTag != false) hash ^= FetchBattleTag.GetHashCode();
            if (FetchFullName != false) hash ^= FetchFullName.GetHashCode();
            if (FetchLinks != false) hash ^= FetchLinks.GetHashCode();
            if (FetchParentalControls != false) hash ^= FetchParentalControls.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (ref_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(Ref);
            }
            if (FetchAll != false)
            {
                output.WriteRawTag(80);
                output.WriteBool(FetchAll);
            }
            if (FetchBlob != false)
            {
                output.WriteRawTag(88);
                output.WriteBool(FetchBlob);
            }
            if (FetchId != false)
            {
                output.WriteRawTag(96);
                output.WriteBool(FetchId);
            }
            if (FetchEmail != false)
            {
                output.WriteRawTag(104);
                output.WriteBool(FetchEmail);
            }
            if (FetchBattleTag != false)
            {
                output.WriteRawTag(112);
                output.WriteBool(FetchBattleTag);
            }
            if (FetchFullName != false)
            {
                output.WriteRawTag(120);
                output.WriteBool(FetchFullName);
            }
            if (FetchLinks != false)
            {
                output.WriteRawTag(128, 1);
                output.WriteBool(FetchLinks);
            }
            if (FetchParentalControls != false)
            {
                output.WriteRawTag(136, 1);
                output.WriteBool(FetchParentalControls);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (ref_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Ref);
            }
            if (FetchAll != false)
            {
                size += 1 + 1;
            }
            if (FetchBlob != false)
            {
                size += 1 + 1;
            }
            if (FetchId != false)
            {
                size += 1 + 1;
            }
            if (FetchEmail != false)
            {
                size += 1 + 1;
            }
            if (FetchBattleTag != false)
            {
                size += 1 + 1;
            }
            if (FetchFullName != false)
            {
                size += 1 + 1;
            }
            if (FetchLinks != false)
            {
                size += 2 + 1;
            }
            if (FetchParentalControls != false)
            {
                size += 2 + 1;
            }
            return size;
        }

        public void MergeFrom(GetAccountRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.ref_ != null)
            {
                if (ref_ == null)
                {
                    ref_ = new Bgs.Protocol.Account.V1.AccountReference();
                }
                Ref.MergeFrom(other.Ref);
            }
            if (other.FetchAll != false)
            {
                FetchAll = other.FetchAll;
            }
            if (other.FetchBlob != false)
            {
                FetchBlob = other.FetchBlob;
            }
            if (other.FetchId != false)
            {
                FetchId = other.FetchId;
            }
            if (other.FetchEmail != false)
            {
                FetchEmail = other.FetchEmail;
            }
            if (other.FetchBattleTag != false)
            {
                FetchBattleTag = other.FetchBattleTag;
            }
            if (other.FetchFullName != false)
            {
                FetchFullName = other.FetchFullName;
            }
            if (other.FetchLinks != false)
            {
                FetchLinks = other.FetchLinks;
            }
            if (other.FetchParentalControls != false)
            {
                FetchParentalControls = other.FetchParentalControls;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (ref_ == null)
                            {
                                ref_ = new Bgs.Protocol.Account.V1.AccountReference();
                            }
                            input.ReadMessage(ref_);
                            break;
                        }
                    case 80:
                        {
                            FetchAll = input.ReadBool();
                            break;
                        }
                    case 88:
                        {
                            FetchBlob = input.ReadBool();
                            break;
                        }
                    case 96:
                        {
                            FetchId = input.ReadBool();
                            break;
                        }
                    case 104:
                        {
                            FetchEmail = input.ReadBool();
                            break;
                        }
                    case 112:
                        {
                            FetchBattleTag = input.ReadBool();
                            break;
                        }
                    case 120:
                        {
                            FetchFullName = input.ReadBool();
                            break;
                        }
                    case 128:
                        {
                            FetchLinks = input.ReadBool();
                            break;
                        }
                    case 136:
                        {
                            FetchParentalControls = input.ReadBool();
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[1]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetAccountResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetAccountResponse(GetAccountResponse other) : this()
        {
            Blob = other.blob_ != null ? other.Blob.Clone() : null;
            Id = other.id_ != null ? other.Id.Clone() : null;
            email_ = other.email_.Clone();
            battleTag_ = other.battleTag_;
            fullName_ = other.fullName_;
            links_ = other.links_.Clone();
            ParentalControlInfo = other.parentalControlInfo_ != null ? other.ParentalControlInfo.Clone() : null;
        }

        public GetAccountResponse Clone()
        {
            return new GetAccountResponse(this);
        }

        /// <summary>Field number for the "blob" field.</summary>
        public const int BlobFieldNumber = 11;
        private Bgs.Protocol.Account.V1.AccountBlob blob_;
        public Bgs.Protocol.Account.V1.AccountBlob Blob
        {
            get { return blob_; }
            set
            {
                blob_ = value;
            }
        }

        /// <summary>Field number for the "id" field.</summary>
        public const int IdFieldNumber = 12;
        private Bgs.Protocol.Account.V1.AccountId id_;
        public Bgs.Protocol.Account.V1.AccountId Id
        {
            get { return id_; }
            set
            {
                id_ = value;
            }
        }

        /// <summary>Field number for the "email" field.</summary>
        public const int EmailFieldNumber = 13;
        private static readonly pb::FieldCodec<string> _repeated_email_codec
            = pb::FieldCodec.ForString(106);
        private readonly pbc::RepeatedField<string> email_ = new pbc::RepeatedField<string>();
        public pbc::RepeatedField<string> Email
        {
            get { return email_; }
        }

        /// <summary>Field number for the "battle_tag" field.</summary>
        public const int BattleTagFieldNumber = 14;
        private string battleTag_ = "";
        public string BattleTag
        {
            get { return battleTag_; }
            set
            {
                battleTag_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "full_name" field.</summary>
        public const int FullNameFieldNumber = 15;
        private string fullName_ = "";
        public string FullName
        {
            get { return fullName_; }
            set
            {
                fullName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "links" field.</summary>
        public const int LinksFieldNumber = 16;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.GameAccountLink> _repeated_links_codec
            = pb::FieldCodec.ForMessage(130, Bgs.Protocol.Account.V1.GameAccountLink.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.GameAccountLink> links_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.GameAccountLink>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.GameAccountLink> Links
        {
            get { return links_; }
        }

        /// <summary>Field number for the "parental_control_info" field.</summary>
        public const int ParentalControlInfoFieldNumber = 17;
        private Bgs.Protocol.Account.V1.ParentalControlInfo parentalControlInfo_;
        public Bgs.Protocol.Account.V1.ParentalControlInfo ParentalControlInfo
        {
            get { return parentalControlInfo_; }
            set
            {
                parentalControlInfo_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetAccountResponse);
        }

        public bool Equals(GetAccountResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(Blob, other.Blob)) return false;
            if (!object.Equals(Id, other.Id)) return false;
            if (!email_.Equals(other.email_)) return false;
            if (BattleTag != other.BattleTag) return false;
            if (FullName != other.FullName) return false;
            if (!links_.Equals(other.links_)) return false;
            if (!object.Equals(ParentalControlInfo, other.ParentalControlInfo)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (blob_ != null) hash ^= Blob.GetHashCode();
            if (id_ != null) hash ^= Id.GetHashCode();
            hash ^= email_.GetHashCode();
            if (BattleTag.Length != 0) hash ^= BattleTag.GetHashCode();
            if (FullName.Length != 0) hash ^= FullName.GetHashCode();
            hash ^= links_.GetHashCode();
            if (parentalControlInfo_ != null) hash ^= ParentalControlInfo.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (blob_ != null)
            {
                output.WriteRawTag(90);
                output.WriteMessage(Blob);
            }
            if (id_ != null)
            {
                output.WriteRawTag(98);
                output.WriteMessage(Id);
            }
            email_.WriteTo(output, _repeated_email_codec);
            if (BattleTag.Length != 0)
            {
                output.WriteRawTag(114);
                output.WriteString(BattleTag);
            }
            if (FullName.Length != 0)
            {
                output.WriteRawTag(122);
                output.WriteString(FullName);
            }
            links_.WriteTo(output, _repeated_links_codec);
            if (parentalControlInfo_ != null)
            {
                output.WriteRawTag(138, 1);
                output.WriteMessage(ParentalControlInfo);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (blob_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Blob);
            }
            if (id_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Id);
            }
            size += email_.CalculateSize(_repeated_email_codec);
            if (BattleTag.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(BattleTag);
            }
            if (FullName.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(FullName);
            }
            size += links_.CalculateSize(_repeated_links_codec);
            if (parentalControlInfo_ != null)
            {
                size += 2 + pb::CodedOutputStream.ComputeMessageSize(ParentalControlInfo);
            }
            return size;
        }

        public void MergeFrom(GetAccountResponse other)
        {
            if (other == null)
            {
                return;
            }
            if (other.blob_ != null)
            {
                if (blob_ == null)
                {
                    blob_ = new Bgs.Protocol.Account.V1.AccountBlob();
                }
                Blob.MergeFrom(other.Blob);
            }
            if (other.id_ != null)
            {
                if (id_ == null)
                {
                    id_ = new Bgs.Protocol.Account.V1.AccountId();
                }
                Id.MergeFrom(other.Id);
            }
            email_.Add(other.email_);
            if (other.BattleTag.Length != 0)
            {
                BattleTag = other.BattleTag;
            }
            if (other.FullName.Length != 0)
            {
                FullName = other.FullName;
            }
            links_.Add(other.links_);
            if (other.parentalControlInfo_ != null)
            {
                if (parentalControlInfo_ == null)
                {
                    parentalControlInfo_ = new Bgs.Protocol.Account.V1.ParentalControlInfo();
                }
                ParentalControlInfo.MergeFrom(other.ParentalControlInfo);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 90:
                        {
                            if (blob_ == null)
                            {
                                blob_ = new Bgs.Protocol.Account.V1.AccountBlob();
                            }
                            input.ReadMessage(blob_);
                            break;
                        }
                    case 98:
                        {
                            if (id_ == null)
                            {
                                id_ = new Bgs.Protocol.Account.V1.AccountId();
                            }
                            input.ReadMessage(id_);
                            break;
                        }
                    case 106:
                        {
                            email_.AddEntriesFrom(input, _repeated_email_codec);
                            break;
                        }
                    case 114:
                        {
                            BattleTag = input.ReadString();
                            break;
                        }
                    case 122:
                        {
                            FullName = input.ReadString();
                            break;
                        }
                    case 130:
                        {
                            links_.AddEntriesFrom(input, _repeated_links_codec);
                            break;
                        }
                    case 138:
                        {
                            if (parentalControlInfo_ == null)
                            {
                                parentalControlInfo_ = new Bgs.Protocol.Account.V1.ParentalControlInfo();
                            }
                            input.ReadMessage(parentalControlInfo_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[2]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public CreateGameAccountRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public CreateGameAccountRequest(CreateGameAccountRequest other) : this()
        {
            Account = other.account_ != null ? other.Account.Clone() : null;
            region_ = other.region_;
            program_ = other.program_;
            realmPermissions_ = other.realmPermissions_;
        }

        public CreateGameAccountRequest Clone()
        {
            return new CreateGameAccountRequest(this);
        }

        /// <summary>Field number for the "account" field.</summary>
        public const int AccountFieldNumber = 1;
        private Bgs.Protocol.Account.V1.AccountId account_;
        public Bgs.Protocol.Account.V1.AccountId Account
        {
            get { return account_; }
            set
            {
                account_ = value;
            }
        }

        /// <summary>Field number for the "region" field.</summary>
        public const int RegionFieldNumber = 2;
        private uint region_;
        public uint Region
        {
            get { return region_; }
            set
            {
                region_ = value;
            }
        }

        /// <summary>Field number for the "program" field.</summary>
        public const int ProgramFieldNumber = 3;
        private uint program_;
        public uint Program
        {
            get { return program_; }
            set
            {
                program_ = value;
            }
        }

        /// <summary>Field number for the "realm_permissions" field.</summary>
        public const int RealmPermissionsFieldNumber = 4;
        private uint realmPermissions_;
        public uint RealmPermissions
        {
            get { return realmPermissions_; }
            set
            {
                realmPermissions_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as CreateGameAccountRequest);
        }

        public bool Equals(CreateGameAccountRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(Account, other.Account)) return false;
            if (Region != other.Region) return false;
            if (Program != other.Program) return false;
            if (RealmPermissions != other.RealmPermissions) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (account_ != null) hash ^= Account.GetHashCode();
            if (Region != 0) hash ^= Region.GetHashCode();
            if (Program != 0) hash ^= Program.GetHashCode();
            if (RealmPermissions != 0) hash ^= RealmPermissions.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (account_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(Account);
            }
            if (Region != 0)
            {
                output.WriteRawTag(16);
                output.WriteUInt32(Region);
            }
            if (Program != 0)
            {
                output.WriteRawTag(29);
                output.WriteFixed32(Program);
            }
            if (RealmPermissions != 0)
            {
                output.WriteRawTag(32);
                output.WriteUInt32(RealmPermissions);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (account_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Account);
            }
            if (Region != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Region);
            }
            if (Program != 0)
            {
                size += 1 + 4;
            }
            if (RealmPermissions != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(RealmPermissions);
            }
            return size;
        }

        public void MergeFrom(CreateGameAccountRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.account_ != null)
            {
                if (account_ == null)
                {
                    account_ = new Bgs.Protocol.Account.V1.AccountId();
                }
                Account.MergeFrom(other.Account);
            }
            if (other.Region != 0)
            {
                Region = other.Region;
            }
            if (other.Program != 0)
            {
                Program = other.Program;
            }
            if (other.RealmPermissions != 0)
            {
                RealmPermissions = other.RealmPermissions;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (account_ == null)
                            {
                                account_ = new Bgs.Protocol.Account.V1.AccountId();
                            }
                            input.ReadMessage(account_);
                            break;
                        }
                    case 16:
                        {
                            Region = input.ReadUInt32();
                            break;
                        }
                    case 29:
                        {
                            Program = input.ReadFixed32();
                            break;
                        }
                    case 32:
                        {
                            RealmPermissions = input.ReadUInt32();
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[3]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public CacheExpireRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public CacheExpireRequest(CacheExpireRequest other) : this()
        {
            account_ = other.account_.Clone();
            gameAccount_ = other.gameAccount_.Clone();
            email_ = other.email_.Clone();
        }

        public CacheExpireRequest Clone()
        {
            return new CacheExpireRequest(this);
        }

        /// <summary>Field number for the "account" field.</summary>
        public const int AccountFieldNumber = 1;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.AccountId> _repeated_account_codec
            = pb::FieldCodec.ForMessage(10, Bgs.Protocol.Account.V1.AccountId.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountId> account_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountId>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountId> Account
        {
            get { return account_; }
        }

        /// <summary>Field number for the "game_account" field.</summary>
        public const int GameAccountFieldNumber = 2;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.GameAccountHandle> _repeated_gameAccount_codec
            = pb::FieldCodec.ForMessage(18, Bgs.Protocol.Account.V1.GameAccountHandle.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.GameAccountHandle> gameAccount_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.GameAccountHandle>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.GameAccountHandle> GameAccount
        {
            get { return gameAccount_; }
        }

        /// <summary>Field number for the "email" field.</summary>
        public const int EmailFieldNumber = 3;
        private static readonly pb::FieldCodec<string> _repeated_email_codec
            = pb::FieldCodec.ForString(26);
        private readonly pbc::RepeatedField<string> email_ = new pbc::RepeatedField<string>();
        public pbc::RepeatedField<string> Email
        {
            get { return email_; }
        }

        public override bool Equals(object other)
        {
            return Equals(other as CacheExpireRequest);
        }

        public bool Equals(CacheExpireRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!account_.Equals(other.account_)) return false;
            if (!gameAccount_.Equals(other.gameAccount_)) return false;
            if (!email_.Equals(other.email_)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            hash ^= account_.GetHashCode();
            hash ^= gameAccount_.GetHashCode();
            hash ^= email_.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            account_.WriteTo(output, _repeated_account_codec);
            gameAccount_.WriteTo(output, _repeated_gameAccount_codec);
            email_.WriteTo(output, _repeated_email_codec);
        }

        public int CalculateSize()
        {
            int size = 0;
            size += account_.CalculateSize(_repeated_account_codec);
            size += gameAccount_.CalculateSize(_repeated_gameAccount_codec);
            size += email_.CalculateSize(_repeated_email_codec);
            return size;
        }

        public void MergeFrom(CacheExpireRequest other)
        {
            if (other == null)
            {
                return;
            }
            account_.Add(other.account_);
            gameAccount_.Add(other.gameAccount_);
            email_.Add(other.email_);
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            account_.AddEntriesFrom(input, _repeated_account_codec);
                            break;
                        }
                    case 18:
                        {
                            gameAccount_.AddEntriesFrom(input, _repeated_gameAccount_codec);
                            break;
                        }
                    case 26:
                        {
                            email_.AddEntriesFrom(input, _repeated_email_codec);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[4]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public CredentialUpdateRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public CredentialUpdateRequest(CredentialUpdateRequest other) : this()
        {
            Account = other.account_ != null ? other.Account.Clone() : null;
            oldCredentials_ = other.oldCredentials_.Clone();
            newCredentials_ = other.newCredentials_.Clone();
            region_ = other.region_;
        }

        public CredentialUpdateRequest Clone()
        {
            return new CredentialUpdateRequest(this);
        }

        /// <summary>Field number for the "account" field.</summary>
        public const int AccountFieldNumber = 1;
        private Bgs.Protocol.Account.V1.AccountId account_;
        public Bgs.Protocol.Account.V1.AccountId Account
        {
            get { return account_; }
            set
            {
                account_ = value;
            }
        }

        /// <summary>Field number for the "old_credentials" field.</summary>
        public const int OldCredentialsFieldNumber = 2;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.AccountCredential> _repeated_oldCredentials_codec
            = pb::FieldCodec.ForMessage(18, Bgs.Protocol.Account.V1.AccountCredential.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountCredential> oldCredentials_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountCredential>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountCredential> OldCredentials
        {
            get { return oldCredentials_; }
        }

        /// <summary>Field number for the "new_credentials" field.</summary>
        public const int NewCredentialsFieldNumber = 3;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.AccountCredential> _repeated_newCredentials_codec
            = pb::FieldCodec.ForMessage(26, Bgs.Protocol.Account.V1.AccountCredential.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountCredential> newCredentials_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountCredential>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountCredential> NewCredentials
        {
            get { return newCredentials_; }
        }

        /// <summary>Field number for the "region" field.</summary>
        public const int RegionFieldNumber = 4;
        private uint region_;
        public uint Region
        {
            get { return region_; }
            set
            {
                region_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as CredentialUpdateRequest);
        }

        public bool Equals(CredentialUpdateRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(Account, other.Account)) return false;
            if (!oldCredentials_.Equals(other.oldCredentials_)) return false;
            if (!newCredentials_.Equals(other.newCredentials_)) return false;
            if (Region != other.Region) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (account_ != null) hash ^= Account.GetHashCode();
            hash ^= oldCredentials_.GetHashCode();
            hash ^= newCredentials_.GetHashCode();
            if (Region != 0) hash ^= Region.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (account_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(Account);
            }
            oldCredentials_.WriteTo(output, _repeated_oldCredentials_codec);
            newCredentials_.WriteTo(output, _repeated_newCredentials_codec);
            if (Region != 0)
            {
                output.WriteRawTag(32);
                output.WriteUInt32(Region);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (account_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Account);
            }
            size += oldCredentials_.CalculateSize(_repeated_oldCredentials_codec);
            size += newCredentials_.CalculateSize(_repeated_newCredentials_codec);
            if (Region != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Region);
            }
            return size;
        }

        public void MergeFrom(CredentialUpdateRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.account_ != null)
            {
                if (account_ == null)
                {
                    account_ = new Bgs.Protocol.Account.V1.AccountId();
                }
                Account.MergeFrom(other.Account);
            }
            oldCredentials_.Add(other.oldCredentials_);
            newCredentials_.Add(other.newCredentials_);
            if (other.Region != 0)
            {
                Region = other.Region;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (account_ == null)
                            {
                                account_ = new Bgs.Protocol.Account.V1.AccountId();
                            }
                            input.ReadMessage(account_);
                            break;
                        }
                    case 18:
                        {
                            oldCredentials_.AddEntriesFrom(input, _repeated_oldCredentials_codec);
                            break;
                        }
                    case 26:
                        {
                            newCredentials_.AddEntriesFrom(input, _repeated_newCredentials_codec);
                            break;
                        }
                    case 32:
                        {
                            Region = input.ReadUInt32();
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[5]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public CredentialUpdateResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public CredentialUpdateResponse(CredentialUpdateResponse other) : this()
        {
        }

        public CredentialUpdateResponse Clone()
        {
            return new CredentialUpdateResponse(this);
        }

        public override bool Equals(object other)
        {
            return Equals(other as CredentialUpdateResponse);
        }

        public bool Equals(CredentialUpdateResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
        }

        public int CalculateSize()
        {
            int size = 0;
            return size;
        }

        public void MergeFrom(CredentialUpdateResponse other)
        {
            if (other == null)
            {
                return;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[6]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public AccountFlagUpdateRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public AccountFlagUpdateRequest(AccountFlagUpdateRequest other) : this()
        {
            Account = other.account_ != null ? other.Account.Clone() : null;
            region_ = other.region_;
            flag_ = other.flag_;
            active_ = other.active_;
        }

        public AccountFlagUpdateRequest Clone()
        {
            return new AccountFlagUpdateRequest(this);
        }

        /// <summary>Field number for the "account" field.</summary>
        public const int AccountFieldNumber = 1;
        private Bgs.Protocol.Account.V1.AccountId account_;
        public Bgs.Protocol.Account.V1.AccountId Account
        {
            get { return account_; }
            set
            {
                account_ = value;
            }
        }

        /// <summary>Field number for the "region" field.</summary>
        public const int RegionFieldNumber = 2;
        private uint region_;
        public uint Region
        {
            get { return region_; }
            set
            {
                region_ = value;
            }
        }

        /// <summary>Field number for the "flag" field.</summary>
        public const int FlagFieldNumber = 3;
        private ulong flag_;
        public ulong Flag
        {
            get { return flag_; }
            set
            {
                flag_ = value;
            }
        }

        /// <summary>Field number for the "active" field.</summary>
        public const int ActiveFieldNumber = 4;
        private bool active_;
        public bool Active
        {
            get { return active_; }
            set
            {
                active_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as AccountFlagUpdateRequest);
        }

        public bool Equals(AccountFlagUpdateRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(Account, other.Account)) return false;
            if (Region != other.Region) return false;
            if (Flag != other.Flag) return false;
            if (Active != other.Active) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (account_ != null) hash ^= Account.GetHashCode();
            if (Region != 0) hash ^= Region.GetHashCode();
            if (Flag != 0UL) hash ^= Flag.GetHashCode();
            if (Active != false) hash ^= Active.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (account_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(Account);
            }
            if (Region != 0)
            {
                output.WriteRawTag(16);
                output.WriteUInt32(Region);
            }
            if (Flag != 0UL)
            {
                output.WriteRawTag(24);
                output.WriteUInt64(Flag);
            }
            if (Active != false)
            {
                output.WriteRawTag(32);
                output.WriteBool(Active);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (account_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Account);
            }
            if (Region != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Region);
            }
            if (Flag != 0UL)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Flag);
            }
            if (Active != false)
            {
                size += 1 + 1;
            }
            return size;
        }

        public void MergeFrom(AccountFlagUpdateRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.account_ != null)
            {
                if (account_ == null)
                {
                    account_ = new Bgs.Protocol.Account.V1.AccountId();
                }
                Account.MergeFrom(other.Account);
            }
            if (other.Region != 0)
            {
                Region = other.Region;
            }
            if (other.Flag != 0UL)
            {
                Flag = other.Flag;
            }
            if (other.Active != false)
            {
                Active = other.Active;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (account_ == null)
                            {
                                account_ = new Bgs.Protocol.Account.V1.AccountId();
                            }
                            input.ReadMessage(account_);
                            break;
                        }
                    case 16:
                        {
                            Region = input.ReadUInt32();
                            break;
                        }
                    case 24:
                        {
                            Flag = input.ReadUInt64();
                            break;
                        }
                    case 32:
                        {
                            Active = input.ReadBool();
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[7]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GameAccountFlagUpdateRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GameAccountFlagUpdateRequest(GameAccountFlagUpdateRequest other) : this()
        {
            GameAccount = other.gameAccount_ != null ? other.GameAccount.Clone() : null;
            flag_ = other.flag_;
            active_ = other.active_;
        }

        public GameAccountFlagUpdateRequest Clone()
        {
            return new GameAccountFlagUpdateRequest(this);
        }

        /// <summary>Field number for the "game_account" field.</summary>
        public const int GameAccountFieldNumber = 1;
        private Bgs.Protocol.Account.V1.GameAccountHandle gameAccount_;
        public Bgs.Protocol.Account.V1.GameAccountHandle GameAccount
        {
            get { return gameAccount_; }
            set
            {
                gameAccount_ = value;
            }
        }

        /// <summary>Field number for the "flag" field.</summary>
        public const int FlagFieldNumber = 2;
        private ulong flag_;
        public ulong Flag
        {
            get { return flag_; }
            set
            {
                flag_ = value;
            }
        }

        /// <summary>Field number for the "active" field.</summary>
        public const int ActiveFieldNumber = 3;
        private bool active_;
        public bool Active
        {
            get { return active_; }
            set
            {
                active_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GameAccountFlagUpdateRequest);
        }

        public bool Equals(GameAccountFlagUpdateRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(GameAccount, other.GameAccount)) return false;
            if (Flag != other.Flag) return false;
            if (Active != other.Active) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (gameAccount_ != null) hash ^= GameAccount.GetHashCode();
            if (Flag != 0UL) hash ^= Flag.GetHashCode();
            if (Active != false) hash ^= Active.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (gameAccount_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(GameAccount);
            }
            if (Flag != 0UL)
            {
                output.WriteRawTag(16);
                output.WriteUInt64(Flag);
            }
            if (Active != false)
            {
                output.WriteRawTag(24);
                output.WriteBool(Active);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (gameAccount_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameAccount);
            }
            if (Flag != 0UL)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Flag);
            }
            if (Active != false)
            {
                size += 1 + 1;
            }
            return size;
        }

        public void MergeFrom(GameAccountFlagUpdateRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.gameAccount_ != null)
            {
                if (gameAccount_ == null)
                {
                    gameAccount_ = new Bgs.Protocol.Account.V1.GameAccountHandle();
                }
                GameAccount.MergeFrom(other.GameAccount);
            }
            if (other.Flag != 0UL)
            {
                Flag = other.Flag;
            }
            if (other.Active != false)
            {
                Active = other.Active;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (gameAccount_ == null)
                            {
                                gameAccount_ = new Bgs.Protocol.Account.V1.GameAccountHandle();
                            }
                            input.ReadMessage(gameAccount_);
                            break;
                        }
                    case 16:
                        {
                            Flag = input.ReadUInt64();
                            break;
                        }
                    case 24:
                        {
                            Active = input.ReadBool();
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[8]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public SubscriptionUpdateRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public SubscriptionUpdateRequest(SubscriptionUpdateRequest other) : this()
        {
            ref_ = other.ref_.Clone();
        }

        public SubscriptionUpdateRequest Clone()
        {
            return new SubscriptionUpdateRequest(this);
        }

        /// <summary>Field number for the "ref" field.</summary>
        public const int RefFieldNumber = 2;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.SubscriberReference> _repeated_ref_codec
            = pb::FieldCodec.ForMessage(18, Bgs.Protocol.Account.V1.SubscriberReference.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.SubscriberReference> ref_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.SubscriberReference>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.SubscriberReference> Ref
        {
            get { return ref_; }
        }

        public override bool Equals(object other)
        {
            return Equals(other as SubscriptionUpdateRequest);
        }

        public bool Equals(SubscriptionUpdateRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!ref_.Equals(other.ref_)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            hash ^= ref_.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            ref_.WriteTo(output, _repeated_ref_codec);
        }

        public int CalculateSize()
        {
            int size = 0;
            size += ref_.CalculateSize(_repeated_ref_codec);
            return size;
        }

        public void MergeFrom(SubscriptionUpdateRequest other)
        {
            if (other == null)
            {
                return;
            }
            ref_.Add(other.ref_);
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 18:
                        {
                            ref_.AddEntriesFrom(input, _repeated_ref_codec);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[9]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public SubscriptionUpdateResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public SubscriptionUpdateResponse(SubscriptionUpdateResponse other) : this()
        {
            ref_ = other.ref_.Clone();
        }

        public SubscriptionUpdateResponse Clone()
        {
            return new SubscriptionUpdateResponse(this);
        }

        /// <summary>Field number for the "ref" field.</summary>
        public const int RefFieldNumber = 1;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.SubscriberReference> _repeated_ref_codec
            = pb::FieldCodec.ForMessage(10, Bgs.Protocol.Account.V1.SubscriberReference.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.SubscriberReference> ref_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.SubscriberReference>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.SubscriberReference> Ref
        {
            get { return ref_; }
        }

        public override bool Equals(object other)
        {
            return Equals(other as SubscriptionUpdateResponse);
        }

        public bool Equals(SubscriptionUpdateResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!ref_.Equals(other.ref_)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            hash ^= ref_.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            ref_.WriteTo(output, _repeated_ref_codec);
        }

        public int CalculateSize()
        {
            int size = 0;
            size += ref_.CalculateSize(_repeated_ref_codec);
            return size;
        }

        public void MergeFrom(SubscriptionUpdateResponse other)
        {
            if (other == null)
            {
                return;
            }
            ref_.Add(other.ref_);
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            ref_.AddEntriesFrom(input, _repeated_ref_codec);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[10]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public IsIgrAddressRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public IsIgrAddressRequest(IsIgrAddressRequest other) : this()
        {
            clientAddress_ = other.clientAddress_;
            region_ = other.region_;
        }

        public IsIgrAddressRequest Clone()
        {
            return new IsIgrAddressRequest(this);
        }

        /// <summary>Field number for the "client_address" field.</summary>
        public const int ClientAddressFieldNumber = 1;
        private string clientAddress_ = "";
        public string ClientAddress
        {
            get { return clientAddress_; }
            set
            {
                clientAddress_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "region" field.</summary>
        public const int RegionFieldNumber = 2;
        private uint region_;
        public uint Region
        {
            get { return region_; }
            set
            {
                region_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as IsIgrAddressRequest);
        }

        public bool Equals(IsIgrAddressRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (ClientAddress != other.ClientAddress) return false;
            if (Region != other.Region) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (ClientAddress.Length != 0) hash ^= ClientAddress.GetHashCode();
            if (Region != 0) hash ^= Region.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (ClientAddress.Length != 0)
            {
                output.WriteRawTag(10);
                output.WriteString(ClientAddress);
            }
            if (Region != 0)
            {
                output.WriteRawTag(16);
                output.WriteUInt32(Region);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (ClientAddress.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(ClientAddress);
            }
            if (Region != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Region);
            }
            return size;
        }

        public void MergeFrom(IsIgrAddressRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.ClientAddress.Length != 0)
            {
                ClientAddress = other.ClientAddress;
            }
            if (other.Region != 0)
            {
                Region = other.Region;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            ClientAddress = input.ReadString();
                            break;
                        }
                    case 16:
                        {
                            Region = input.ReadUInt32();
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[11]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public AccountServiceRegion()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public AccountServiceRegion(AccountServiceRegion other) : this()
        {
            id_ = other.id_;
            shard_ = other.shard_;
        }

        public AccountServiceRegion Clone()
        {
            return new AccountServiceRegion(this);
        }

        /// <summary>Field number for the "id" field.</summary>
        public const int IdFieldNumber = 1;
        private uint id_;
        public uint Id
        {
            get { return id_; }
            set
            {
                id_ = value;
            }
        }

        /// <summary>Field number for the "shard" field.</summary>
        public const int ShardFieldNumber = 2;
        private string shard_ = "";
        public string Shard
        {
            get { return shard_; }
            set
            {
                shard_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as AccountServiceRegion);
        }

        public bool Equals(AccountServiceRegion other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (Id != other.Id) return false;
            if (Shard != other.Shard) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (Id != 0) hash ^= Id.GetHashCode();
            if (Shard.Length != 0) hash ^= Shard.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (Id != 0)
            {
                output.WriteRawTag(8);
                output.WriteUInt32(Id);
            }
            if (Shard.Length != 0)
            {
                output.WriteRawTag(18);
                output.WriteString(Shard);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (Id != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Id);
            }
            if (Shard.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(Shard);
            }
            return size;
        }

        public void MergeFrom(AccountServiceRegion other)
        {
            if (other == null)
            {
                return;
            }
            if (other.Id != 0)
            {
                Id = other.Id;
            }
            if (other.Shard.Length != 0)
            {
                Shard = other.Shard;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 8:
                        {
                            Id = input.ReadUInt32();
                            break;
                        }
                    case 18:
                        {
                            Shard = input.ReadString();
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[12]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public AccountServiceConfig()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public AccountServiceConfig(AccountServiceConfig other) : this()
        {
            region_ = other.region_.Clone();
        }

        public AccountServiceConfig Clone()
        {
            return new AccountServiceConfig(this);
        }

        /// <summary>Field number for the "region" field.</summary>
        public const int RegionFieldNumber = 1;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.AccountServiceRegion> _repeated_region_codec
            = pb::FieldCodec.ForMessage(10, Bgs.Protocol.Account.V1.AccountServiceRegion.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountServiceRegion> region_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountServiceRegion>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountServiceRegion> Region
        {
            get { return region_; }
        }

        public override bool Equals(object other)
        {
            return Equals(other as AccountServiceConfig);
        }

        public bool Equals(AccountServiceConfig other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!region_.Equals(other.region_)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            hash ^= region_.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            region_.WriteTo(output, _repeated_region_codec);
        }

        public int CalculateSize()
        {
            int size = 0;
            size += region_.CalculateSize(_repeated_region_codec);
            return size;
        }

        public void MergeFrom(AccountServiceConfig other)
        {
            if (other == null)
            {
                return;
            }
            region_.Add(other.region_);
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            region_.AddEntriesFrom(input, _repeated_region_codec);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[13]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetAccountStateRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetAccountStateRequest(GetAccountStateRequest other) : this()
        {
            EntityId = other.entityId_ != null ? other.EntityId.Clone() : null;
            program_ = other.program_;
            region_ = other.region_;
            Options = other.options_ != null ? other.Options.Clone() : null;
            Tags = other.tags_ != null ? other.Tags.Clone() : null;
        }

        public GetAccountStateRequest Clone()
        {
            return new GetAccountStateRequest(this);
        }

        /// <summary>Field number for the "entity_id" field.</summary>
        public const int EntityIdFieldNumber = 1;
        private Bgs.Protocol.EntityId entityId_;
        public Bgs.Protocol.EntityId EntityId
        {
            get { return entityId_; }
            set
            {
                entityId_ = value;
            }
        }

        /// <summary>Field number for the "program" field.</summary>
        public const int ProgramFieldNumber = 2;
        private uint program_;
        public uint Program
        {
            get { return program_; }
            set
            {
                program_ = value;
            }
        }

        /// <summary>Field number for the "region" field.</summary>
        public const int RegionFieldNumber = 3;
        private uint region_;
        public uint Region
        {
            get { return region_; }
            set
            {
                region_ = value;
            }
        }

        /// <summary>Field number for the "options" field.</summary>
        public const int OptionsFieldNumber = 10;
        private Bgs.Protocol.Account.V1.AccountFieldOptions options_;
        public Bgs.Protocol.Account.V1.AccountFieldOptions Options
        {
            get { return options_; }
            set
            {
                options_ = value;
            }
        }

        /// <summary>Field number for the "tags" field.</summary>
        public const int TagsFieldNumber = 11;
        private Bgs.Protocol.Account.V1.AccountFieldTags tags_;
        public Bgs.Protocol.Account.V1.AccountFieldTags Tags
        {
            get { return tags_; }
            set
            {
                tags_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetAccountStateRequest);
        }

        public bool Equals(GetAccountStateRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(EntityId, other.EntityId)) return false;
            if (Program != other.Program) return false;
            if (Region != other.Region) return false;
            if (!object.Equals(Options, other.Options)) return false;
            if (!object.Equals(Tags, other.Tags)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (entityId_ != null) hash ^= EntityId.GetHashCode();
            if (Program != 0) hash ^= Program.GetHashCode();
            if (Region != 0) hash ^= Region.GetHashCode();
            if (options_ != null) hash ^= Options.GetHashCode();
            if (tags_ != null) hash ^= Tags.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (entityId_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(EntityId);
            }
            if (Program != 0)
            {
                output.WriteRawTag(16);
                output.WriteUInt32(Program);
            }
            if (Region != 0)
            {
                output.WriteRawTag(24);
                output.WriteUInt32(Region);
            }
            if (options_ != null)
            {
                output.WriteRawTag(82);
                output.WriteMessage(Options);
            }
            if (tags_ != null)
            {
                output.WriteRawTag(90);
                output.WriteMessage(Tags);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (entityId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(EntityId);
            }
            if (Program != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Program);
            }
            if (Region != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Region);
            }
            if (options_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
            }
            if (tags_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Tags);
            }
            return size;
        }

        public void MergeFrom(GetAccountStateRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.entityId_ != null)
            {
                if (entityId_ == null)
                {
                    entityId_ = new Bgs.Protocol.EntityId();
                }
                EntityId.MergeFrom(other.EntityId);
            }
            if (other.Program != 0)
            {
                Program = other.Program;
            }
            if (other.Region != 0)
            {
                Region = other.Region;
            }
            if (other.options_ != null)
            {
                if (options_ == null)
                {
                    options_ = new Bgs.Protocol.Account.V1.AccountFieldOptions();
                }
                Options.MergeFrom(other.Options);
            }
            if (other.tags_ != null)
            {
                if (tags_ == null)
                {
                    tags_ = new Bgs.Protocol.Account.V1.AccountFieldTags();
                }
                Tags.MergeFrom(other.Tags);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (entityId_ == null)
                            {
                                entityId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(entityId_);
                            break;
                        }
                    case 16:
                        {
                            Program = input.ReadUInt32();
                            break;
                        }
                    case 24:
                        {
                            Region = input.ReadUInt32();
                            break;
                        }
                    case 82:
                        {
                            if (options_ == null)
                            {
                                options_ = new Bgs.Protocol.Account.V1.AccountFieldOptions();
                            }
                            input.ReadMessage(options_);
                            break;
                        }
                    case 90:
                        {
                            if (tags_ == null)
                            {
                                tags_ = new Bgs.Protocol.Account.V1.AccountFieldTags();
                            }
                            input.ReadMessage(tags_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[14]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetAccountStateResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetAccountStateResponse(GetAccountStateResponse other) : this()
        {
            State = other.state_ != null ? other.State.Clone() : null;
            Tags = other.tags_ != null ? other.Tags.Clone() : null;
        }

        public GetAccountStateResponse Clone()
        {
            return new GetAccountStateResponse(this);
        }

        /// <summary>Field number for the "state" field.</summary>
        public const int StateFieldNumber = 1;
        private Bgs.Protocol.Account.V1.AccountState state_;
        public Bgs.Protocol.Account.V1.AccountState State
        {
            get { return state_; }
            set
            {
                state_ = value;
            }
        }

        /// <summary>Field number for the "tags" field.</summary>
        public const int TagsFieldNumber = 2;
        private Bgs.Protocol.Account.V1.AccountFieldTags tags_;
        public Bgs.Protocol.Account.V1.AccountFieldTags Tags
        {
            get { return tags_; }
            set
            {
                tags_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetAccountStateResponse);
        }

        public bool Equals(GetAccountStateResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(State, other.State)) return false;
            if (!object.Equals(Tags, other.Tags)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (state_ != null) hash ^= State.GetHashCode();
            if (tags_ != null) hash ^= Tags.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (state_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(State);
            }
            if (tags_ != null)
            {
                output.WriteRawTag(18);
                output.WriteMessage(Tags);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (state_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(State);
            }
            if (tags_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Tags);
            }
            return size;
        }

        public void MergeFrom(GetAccountStateResponse other)
        {
            if (other == null)
            {
                return;
            }
            if (other.state_ != null)
            {
                if (state_ == null)
                {
                    state_ = new Bgs.Protocol.Account.V1.AccountState();
                }
                State.MergeFrom(other.State);
            }
            if (other.tags_ != null)
            {
                if (tags_ == null)
                {
                    tags_ = new Bgs.Protocol.Account.V1.AccountFieldTags();
                }
                Tags.MergeFrom(other.Tags);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (state_ == null)
                            {
                                state_ = new Bgs.Protocol.Account.V1.AccountState();
                            }
                            input.ReadMessage(state_);
                            break;
                        }
                    case 18:
                        {
                            if (tags_ == null)
                            {
                                tags_ = new Bgs.Protocol.Account.V1.AccountFieldTags();
                            }
                            input.ReadMessage(tags_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[15]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetGameAccountStateRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetGameAccountStateRequest(GetGameAccountStateRequest other) : this()
        {
            AccountId = other.accountId_ != null ? other.AccountId.Clone() : null;
            GameAccountId = other.gameAccountId_ != null ? other.GameAccountId.Clone() : null;
            Options = other.options_ != null ? other.Options.Clone() : null;
            Tags = other.tags_ != null ? other.Tags.Clone() : null;
        }

        public GetGameAccountStateRequest Clone()
        {
            return new GetGameAccountStateRequest(this);
        }

        /// <summary>Field number for the "account_id" field.</summary>
        public const int AccountIdFieldNumber = 1;
        private Bgs.Protocol.EntityId accountId_;
        [System.ObsoleteAttribute()]
        public Bgs.Protocol.EntityId AccountId
        {
            get { return accountId_; }
            set
            {
                accountId_ = value;
            }
        }

        /// <summary>Field number for the "game_account_id" field.</summary>
        public const int GameAccountIdFieldNumber = 2;
        private Bgs.Protocol.EntityId gameAccountId_;
        public Bgs.Protocol.EntityId GameAccountId
        {
            get { return gameAccountId_; }
            set
            {
                gameAccountId_ = value;
            }
        }

        /// <summary>Field number for the "options" field.</summary>
        public const int OptionsFieldNumber = 10;
        private Bgs.Protocol.Account.V1.GameAccountFieldOptions options_;
        public Bgs.Protocol.Account.V1.GameAccountFieldOptions Options
        {
            get { return options_; }
            set
            {
                options_ = value;
            }
        }

        /// <summary>Field number for the "tags" field.</summary>
        public const int TagsFieldNumber = 11;
        private Bgs.Protocol.Account.V1.GameAccountFieldTags tags_;
        public Bgs.Protocol.Account.V1.GameAccountFieldTags Tags
        {
            get { return tags_; }
            set
            {
                tags_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetGameAccountStateRequest);
        }

        public bool Equals(GetGameAccountStateRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(AccountId, other.AccountId)) return false;
            if (!object.Equals(GameAccountId, other.GameAccountId)) return false;
            if (!object.Equals(Options, other.Options)) return false;
            if (!object.Equals(Tags, other.Tags)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (accountId_ != null) hash ^= AccountId.GetHashCode();
            if (gameAccountId_ != null) hash ^= GameAccountId.GetHashCode();
            if (options_ != null) hash ^= Options.GetHashCode();
            if (tags_ != null) hash ^= Tags.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (accountId_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(AccountId);
            }
            if (gameAccountId_ != null)
            {
                output.WriteRawTag(18);
                output.WriteMessage(GameAccountId);
            }
            if (options_ != null)
            {
                output.WriteRawTag(82);
                output.WriteMessage(Options);
            }
            if (tags_ != null)
            {
                output.WriteRawTag(90);
                output.WriteMessage(Tags);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (accountId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(AccountId);
            }
            if (gameAccountId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameAccountId);
            }
            if (options_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
            }
            if (tags_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Tags);
            }
            return size;
        }

        public void MergeFrom(GetGameAccountStateRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.accountId_ != null)
            {
                if (accountId_ == null)
                {
                    accountId_ = new Bgs.Protocol.EntityId();
                }
                AccountId.MergeFrom(other.AccountId);
            }
            if (other.gameAccountId_ != null)
            {
                if (gameAccountId_ == null)
                {
                    gameAccountId_ = new Bgs.Protocol.EntityId();
                }
                GameAccountId.MergeFrom(other.GameAccountId);
            }
            if (other.options_ != null)
            {
                if (options_ == null)
                {
                    options_ = new Bgs.Protocol.Account.V1.GameAccountFieldOptions();
                }
                Options.MergeFrom(other.Options);
            }
            if (other.tags_ != null)
            {
                if (tags_ == null)
                {
                    tags_ = new Bgs.Protocol.Account.V1.GameAccountFieldTags();
                }
                Tags.MergeFrom(other.Tags);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (accountId_ == null)
                            {
                                accountId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(accountId_);
                            break;
                        }
                    case 18:
                        {
                            if (gameAccountId_ == null)
                            {
                                gameAccountId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(gameAccountId_);
                            break;
                        }
                    case 82:
                        {
                            if (options_ == null)
                            {
                                options_ = new Bgs.Protocol.Account.V1.GameAccountFieldOptions();
                            }
                            input.ReadMessage(options_);
                            break;
                        }
                    case 90:
                        {
                            if (tags_ == null)
                            {
                                tags_ = new Bgs.Protocol.Account.V1.GameAccountFieldTags();
                            }
                            input.ReadMessage(tags_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[16]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetGameAccountStateResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetGameAccountStateResponse(GetGameAccountStateResponse other) : this()
        {
            State = other.state_ != null ? other.State.Clone() : null;
            Tags = other.tags_ != null ? other.Tags.Clone() : null;
        }

        public GetGameAccountStateResponse Clone()
        {
            return new GetGameAccountStateResponse(this);
        }

        /// <summary>Field number for the "state" field.</summary>
        public const int StateFieldNumber = 1;
        private Bgs.Protocol.Account.V1.GameAccountState state_;
        public Bgs.Protocol.Account.V1.GameAccountState State
        {
            get { return state_; }
            set
            {
                state_ = value;
            }
        }

        /// <summary>Field number for the "tags" field.</summary>
        public const int TagsFieldNumber = 2;
        private Bgs.Protocol.Account.V1.GameAccountFieldTags tags_;
        public Bgs.Protocol.Account.V1.GameAccountFieldTags Tags
        {
            get { return tags_; }
            set
            {
                tags_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetGameAccountStateResponse);
        }

        public bool Equals(GetGameAccountStateResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(State, other.State)) return false;
            if (!object.Equals(Tags, other.Tags)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (state_ != null) hash ^= State.GetHashCode();
            if (tags_ != null) hash ^= Tags.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (state_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(State);
            }
            if (tags_ != null)
            {
                output.WriteRawTag(18);
                output.WriteMessage(Tags);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (state_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(State);
            }
            if (tags_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Tags);
            }
            return size;
        }

        public void MergeFrom(GetGameAccountStateResponse other)
        {
            if (other == null)
            {
                return;
            }
            if (other.state_ != null)
            {
                if (state_ == null)
                {
                    state_ = new Bgs.Protocol.Account.V1.GameAccountState();
                }
                State.MergeFrom(other.State);
            }
            if (other.tags_ != null)
            {
                if (tags_ == null)
                {
                    tags_ = new Bgs.Protocol.Account.V1.GameAccountFieldTags();
                }
                Tags.MergeFrom(other.Tags);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (state_ == null)
                            {
                                state_ = new Bgs.Protocol.Account.V1.GameAccountState();
                            }
                            input.ReadMessage(state_);
                            break;
                        }
                    case 18:
                        {
                            if (tags_ == null)
                            {
                                tags_ = new Bgs.Protocol.Account.V1.GameAccountFieldTags();
                            }
                            input.ReadMessage(tags_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[17]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetLicensesRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetLicensesRequest(GetLicensesRequest other) : this()
        {
            TargetId = other.targetId_ != null ? other.TargetId.Clone() : null;
            fetchAccountLicenses_ = other.fetchAccountLicenses_;
            fetchGameAccountLicenses_ = other.fetchGameAccountLicenses_;
            fetchDynamicAccountLicenses_ = other.fetchDynamicAccountLicenses_;
            program_ = other.program_;
            excludeUnknownProgram_ = other.excludeUnknownProgram_;
        }

        public GetLicensesRequest Clone()
        {
            return new GetLicensesRequest(this);
        }

        /// <summary>Field number for the "target_id" field.</summary>
        public const int TargetIdFieldNumber = 1;
        private Bgs.Protocol.EntityId targetId_;
        public Bgs.Protocol.EntityId TargetId
        {
            get { return targetId_; }
            set
            {
                targetId_ = value;
            }
        }

        /// <summary>Field number for the "fetch_account_licenses" field.</summary>
        public const int FetchAccountLicensesFieldNumber = 2;
        private bool fetchAccountLicenses_;
        public bool FetchAccountLicenses
        {
            get { return fetchAccountLicenses_; }
            set
            {
                fetchAccountLicenses_ = value;
            }
        }

        /// <summary>Field number for the "fetch_game_account_licenses" field.</summary>
        public const int FetchGameAccountLicensesFieldNumber = 3;
        private bool fetchGameAccountLicenses_;
        public bool FetchGameAccountLicenses
        {
            get { return fetchGameAccountLicenses_; }
            set
            {
                fetchGameAccountLicenses_ = value;
            }
        }

        /// <summary>Field number for the "fetch_dynamic_account_licenses" field.</summary>
        public const int FetchDynamicAccountLicensesFieldNumber = 4;
        private bool fetchDynamicAccountLicenses_;
        public bool FetchDynamicAccountLicenses
        {
            get { return fetchDynamicAccountLicenses_; }
            set
            {
                fetchDynamicAccountLicenses_ = value;
            }
        }

        /// <summary>Field number for the "program" field.</summary>
        public const int ProgramFieldNumber = 5;
        private uint program_;
        public uint Program
        {
            get { return program_; }
            set
            {
                program_ = value;
            }
        }

        /// <summary>Field number for the "exclude_unknown_program" field.</summary>
        public const int ExcludeUnknownProgramFieldNumber = 6;
        private bool excludeUnknownProgram_;
        public bool ExcludeUnknownProgram
        {
            get { return excludeUnknownProgram_; }
            set
            {
                excludeUnknownProgram_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetLicensesRequest);
        }

        public bool Equals(GetLicensesRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(TargetId, other.TargetId)) return false;
            if (FetchAccountLicenses != other.FetchAccountLicenses) return false;
            if (FetchGameAccountLicenses != other.FetchGameAccountLicenses) return false;
            if (FetchDynamicAccountLicenses != other.FetchDynamicAccountLicenses) return false;
            if (Program != other.Program) return false;
            if (ExcludeUnknownProgram != other.ExcludeUnknownProgram) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (targetId_ != null) hash ^= TargetId.GetHashCode();
            if (FetchAccountLicenses != false) hash ^= FetchAccountLicenses.GetHashCode();
            if (FetchGameAccountLicenses != false) hash ^= FetchGameAccountLicenses.GetHashCode();
            if (FetchDynamicAccountLicenses != false) hash ^= FetchDynamicAccountLicenses.GetHashCode();
            if (Program != 0) hash ^= Program.GetHashCode();
            if (ExcludeUnknownProgram != false) hash ^= ExcludeUnknownProgram.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (targetId_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(TargetId);
            }
            if (FetchAccountLicenses != false)
            {
                output.WriteRawTag(16);
                output.WriteBool(FetchAccountLicenses);
            }
            if (FetchGameAccountLicenses != false)
            {
                output.WriteRawTag(24);
                output.WriteBool(FetchGameAccountLicenses);
            }
            if (FetchDynamicAccountLicenses != false)
            {
                output.WriteRawTag(32);
                output.WriteBool(FetchDynamicAccountLicenses);
            }
            if (Program != 0)
            {
                output.WriteRawTag(45);
                output.WriteFixed32(Program);
            }
            if (ExcludeUnknownProgram != false)
            {
                output.WriteRawTag(48);
                output.WriteBool(ExcludeUnknownProgram);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (targetId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(TargetId);
            }
            if (FetchAccountLicenses != false)
            {
                size += 1 + 1;
            }
            if (FetchGameAccountLicenses != false)
            {
                size += 1 + 1;
            }
            if (FetchDynamicAccountLicenses != false)
            {
                size += 1 + 1;
            }
            if (Program != 0)
            {
                size += 1 + 4;
            }
            if (ExcludeUnknownProgram != false)
            {
                size += 1 + 1;
            }
            return size;
        }

        public void MergeFrom(GetLicensesRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.targetId_ != null)
            {
                if (targetId_ == null)
                {
                    targetId_ = new Bgs.Protocol.EntityId();
                }
                TargetId.MergeFrom(other.TargetId);
            }
            if (other.FetchAccountLicenses != false)
            {
                FetchAccountLicenses = other.FetchAccountLicenses;
            }
            if (other.FetchGameAccountLicenses != false)
            {
                FetchGameAccountLicenses = other.FetchGameAccountLicenses;
            }
            if (other.FetchDynamicAccountLicenses != false)
            {
                FetchDynamicAccountLicenses = other.FetchDynamicAccountLicenses;
            }
            if (other.Program != 0)
            {
                Program = other.Program;
            }
            if (other.ExcludeUnknownProgram != false)
            {
                ExcludeUnknownProgram = other.ExcludeUnknownProgram;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (targetId_ == null)
                            {
                                targetId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(targetId_);
                            break;
                        }
                    case 16:
                        {
                            FetchAccountLicenses = input.ReadBool();
                            break;
                        }
                    case 24:
                        {
                            FetchGameAccountLicenses = input.ReadBool();
                            break;
                        }
                    case 32:
                        {
                            FetchDynamicAccountLicenses = input.ReadBool();
                            break;
                        }
                    case 45:
                        {
                            Program = input.ReadFixed32();
                            break;
                        }
                    case 48:
                        {
                            ExcludeUnknownProgram = input.ReadBool();
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[18]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetLicensesResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetLicensesResponse(GetLicensesResponse other) : this()
        {
            licenses_ = other.licenses_.Clone();
        }

        public GetLicensesResponse Clone()
        {
            return new GetLicensesResponse(this);
        }

        /// <summary>Field number for the "licenses" field.</summary>
        public const int LicensesFieldNumber = 1;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.AccountLicense> _repeated_licenses_codec
            = pb::FieldCodec.ForMessage(10, Bgs.Protocol.Account.V1.AccountLicense.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountLicense> licenses_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountLicense>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountLicense> Licenses
        {
            get { return licenses_; }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetLicensesResponse);
        }

        public bool Equals(GetLicensesResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!licenses_.Equals(other.licenses_)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            hash ^= licenses_.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            licenses_.WriteTo(output, _repeated_licenses_codec);
        }

        public int CalculateSize()
        {
            int size = 0;
            size += licenses_.CalculateSize(_repeated_licenses_codec);
            return size;
        }

        public void MergeFrom(GetLicensesResponse other)
        {
            if (other == null)
            {
                return;
            }
            licenses_.Add(other.licenses_);
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            licenses_.AddEntriesFrom(input, _repeated_licenses_codec);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[19]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetGameSessionInfoRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetGameSessionInfoRequest(GetGameSessionInfoRequest other) : this()
        {
            EntityId = other.entityId_ != null ? other.EntityId.Clone() : null;
        }

        public GetGameSessionInfoRequest Clone()
        {
            return new GetGameSessionInfoRequest(this);
        }

        /// <summary>Field number for the "entity_id" field.</summary>
        public const int EntityIdFieldNumber = 1;
        private Bgs.Protocol.EntityId entityId_;
        public Bgs.Protocol.EntityId EntityId
        {
            get { return entityId_; }
            set
            {
                entityId_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetGameSessionInfoRequest);
        }

        public bool Equals(GetGameSessionInfoRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(EntityId, other.EntityId)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (entityId_ != null) hash ^= EntityId.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (entityId_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(EntityId);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (entityId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(EntityId);
            }
            return size;
        }

        public void MergeFrom(GetGameSessionInfoRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.entityId_ != null)
            {
                if (entityId_ == null)
                {
                    entityId_ = new Bgs.Protocol.EntityId();
                }
                EntityId.MergeFrom(other.EntityId);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (entityId_ == null)
                            {
                                entityId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(entityId_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[20]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetGameSessionInfoResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetGameSessionInfoResponse(GetGameSessionInfoResponse other) : this()
        {
            SessionInfo = other.sessionInfo_ != null ? other.SessionInfo.Clone() : null;
        }

        public GetGameSessionInfoResponse Clone()
        {
            return new GetGameSessionInfoResponse(this);
        }

        /// <summary>Field number for the "session_info" field.</summary>
        public const int SessionInfoFieldNumber = 2;
        private Bgs.Protocol.Account.V1.GameSessionInfo sessionInfo_;
        public Bgs.Protocol.Account.V1.GameSessionInfo SessionInfo
        {
            get { return sessionInfo_; }
            set
            {
                sessionInfo_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetGameSessionInfoResponse);
        }

        public bool Equals(GetGameSessionInfoResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(SessionInfo, other.SessionInfo)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (sessionInfo_ != null) hash ^= SessionInfo.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (sessionInfo_ != null)
            {
                output.WriteRawTag(18);
                output.WriteMessage(SessionInfo);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (sessionInfo_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(SessionInfo);
            }
            return size;
        }

        public void MergeFrom(GetGameSessionInfoResponse other)
        {
            if (other == null)
            {
                return;
            }
            if (other.sessionInfo_ != null)
            {
                if (sessionInfo_ == null)
                {
                    sessionInfo_ = new Bgs.Protocol.Account.V1.GameSessionInfo();
                }
                SessionInfo.MergeFrom(other.SessionInfo);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 18:
                        {
                            if (sessionInfo_ == null)
                            {
                                sessionInfo_ = new Bgs.Protocol.Account.V1.GameSessionInfo();
                            }
                            input.ReadMessage(sessionInfo_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[21]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetGameTimeRemainingInfoRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetGameTimeRemainingInfoRequest(GetGameTimeRemainingInfoRequest other) : this()
        {
            GameAccountId = other.gameAccountId_ != null ? other.GameAccountId.Clone() : null;
            AccountId = other.accountId_ != null ? other.AccountId.Clone() : null;
        }

        public GetGameTimeRemainingInfoRequest Clone()
        {
            return new GetGameTimeRemainingInfoRequest(this);
        }

        /// <summary>Field number for the "game_account_id" field.</summary>
        public const int GameAccountIdFieldNumber = 1;
        private Bgs.Protocol.EntityId gameAccountId_;
        public Bgs.Protocol.EntityId GameAccountId
        {
            get { return gameAccountId_; }
            set
            {
                gameAccountId_ = value;
            }
        }

        /// <summary>Field number for the "account_id" field.</summary>
        public const int AccountIdFieldNumber = 2;
        private Bgs.Protocol.EntityId accountId_;
        public Bgs.Protocol.EntityId AccountId
        {
            get { return accountId_; }
            set
            {
                accountId_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetGameTimeRemainingInfoRequest);
        }

        public bool Equals(GetGameTimeRemainingInfoRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(GameAccountId, other.GameAccountId)) return false;
            if (!object.Equals(AccountId, other.AccountId)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (gameAccountId_ != null) hash ^= GameAccountId.GetHashCode();
            if (accountId_ != null) hash ^= AccountId.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (gameAccountId_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(GameAccountId);
            }
            if (accountId_ != null)
            {
                output.WriteRawTag(18);
                output.WriteMessage(AccountId);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (gameAccountId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameAccountId);
            }
            if (accountId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(AccountId);
            }
            return size;
        }

        public void MergeFrom(GetGameTimeRemainingInfoRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.gameAccountId_ != null)
            {
                if (gameAccountId_ == null)
                {
                    gameAccountId_ = new Bgs.Protocol.EntityId();
                }
                GameAccountId.MergeFrom(other.GameAccountId);
            }
            if (other.accountId_ != null)
            {
                if (accountId_ == null)
                {
                    accountId_ = new Bgs.Protocol.EntityId();
                }
                AccountId.MergeFrom(other.AccountId);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (gameAccountId_ == null)
                            {
                                gameAccountId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(gameAccountId_);
                            break;
                        }
                    case 18:
                        {
                            if (accountId_ == null)
                            {
                                accountId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(accountId_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[22]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetGameTimeRemainingInfoResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetGameTimeRemainingInfoResponse(GetGameTimeRemainingInfoResponse other) : this()
        {
            GameTimeRemainingInfo = other.gameTimeRemainingInfo_ != null ? other.GameTimeRemainingInfo.Clone() : null;
        }

        public GetGameTimeRemainingInfoResponse Clone()
        {
            return new GetGameTimeRemainingInfoResponse(this);
        }

        /// <summary>Field number for the "game_time_remaining_info" field.</summary>
        public const int GameTimeRemainingInfoFieldNumber = 1;
        private Bgs.Protocol.Account.V1.GameTimeRemainingInfo gameTimeRemainingInfo_;
        public Bgs.Protocol.Account.V1.GameTimeRemainingInfo GameTimeRemainingInfo
        {
            get { return gameTimeRemainingInfo_; }
            set
            {
                gameTimeRemainingInfo_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetGameTimeRemainingInfoResponse);
        }

        public bool Equals(GetGameTimeRemainingInfoResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(GameTimeRemainingInfo, other.GameTimeRemainingInfo)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (gameTimeRemainingInfo_ != null) hash ^= GameTimeRemainingInfo.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (gameTimeRemainingInfo_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(GameTimeRemainingInfo);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (gameTimeRemainingInfo_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameTimeRemainingInfo);
            }
            return size;
        }

        public void MergeFrom(GetGameTimeRemainingInfoResponse other)
        {
            if (other == null)
            {
                return;
            }
            if (other.gameTimeRemainingInfo_ != null)
            {
                if (gameTimeRemainingInfo_ == null)
                {
                    gameTimeRemainingInfo_ = new Bgs.Protocol.Account.V1.GameTimeRemainingInfo();
                }
                GameTimeRemainingInfo.MergeFrom(other.GameTimeRemainingInfo);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (gameTimeRemainingInfo_ == null)
                            {
                                gameTimeRemainingInfo_ = new Bgs.Protocol.Account.V1.GameTimeRemainingInfo();
                            }
                            input.ReadMessage(gameTimeRemainingInfo_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[23]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetCAISInfoRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetCAISInfoRequest(GetCAISInfoRequest other) : this()
        {
            EntityId = other.entityId_ != null ? other.EntityId.Clone() : null;
        }

        public GetCAISInfoRequest Clone()
        {
            return new GetCAISInfoRequest(this);
        }

        /// <summary>Field number for the "entity_id" field.</summary>
        public const int EntityIdFieldNumber = 1;
        private Bgs.Protocol.EntityId entityId_;
        public Bgs.Protocol.EntityId EntityId
        {
            get { return entityId_; }
            set
            {
                entityId_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetCAISInfoRequest);
        }

        public bool Equals(GetCAISInfoRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(EntityId, other.EntityId)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (entityId_ != null) hash ^= EntityId.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (entityId_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(EntityId);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (entityId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(EntityId);
            }
            return size;
        }

        public void MergeFrom(GetCAISInfoRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.entityId_ != null)
            {
                if (entityId_ == null)
                {
                    entityId_ = new Bgs.Protocol.EntityId();
                }
                EntityId.MergeFrom(other.EntityId);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (entityId_ == null)
                            {
                                entityId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(entityId_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[24]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetCAISInfoResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetCAISInfoResponse(GetCAISInfoResponse other) : this()
        {
            CaisInfo = other.caisInfo_ != null ? other.CaisInfo.Clone() : null;
        }

        public GetCAISInfoResponse Clone()
        {
            return new GetCAISInfoResponse(this);
        }

        /// <summary>Field number for the "cais_info" field.</summary>
        public const int CaisInfoFieldNumber = 1;
        private Bgs.Protocol.Account.V1.CAIS caisInfo_;
        public Bgs.Protocol.Account.V1.CAIS CaisInfo
        {
            get { return caisInfo_; }
            set
            {
                caisInfo_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetCAISInfoResponse);
        }

        public bool Equals(GetCAISInfoResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(CaisInfo, other.CaisInfo)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (caisInfo_ != null) hash ^= CaisInfo.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (caisInfo_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(CaisInfo);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (caisInfo_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(CaisInfo);
            }
            return size;
        }

        public void MergeFrom(GetCAISInfoResponse other)
        {
            if (other == null)
            {
                return;
            }
            if (other.caisInfo_ != null)
            {
                if (caisInfo_ == null)
                {
                    caisInfo_ = new Bgs.Protocol.Account.V1.CAIS();
                }
                CaisInfo.MergeFrom(other.CaisInfo);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (caisInfo_ == null)
                            {
                                caisInfo_ = new Bgs.Protocol.Account.V1.CAIS();
                            }
                            input.ReadMessage(caisInfo_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[25]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public ForwardCacheExpireRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public ForwardCacheExpireRequest(ForwardCacheExpireRequest other) : this()
        {
            EntityId = other.entityId_ != null ? other.EntityId.Clone() : null;
        }

        public ForwardCacheExpireRequest Clone()
        {
            return new ForwardCacheExpireRequest(this);
        }

        /// <summary>Field number for the "entity_id" field.</summary>
        public const int EntityIdFieldNumber = 1;
        private Bgs.Protocol.EntityId entityId_;
        public Bgs.Protocol.EntityId EntityId
        {
            get { return entityId_; }
            set
            {
                entityId_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as ForwardCacheExpireRequest);
        }

        public bool Equals(ForwardCacheExpireRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(EntityId, other.EntityId)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (entityId_ != null) hash ^= EntityId.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (entityId_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(EntityId);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (entityId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(EntityId);
            }
            return size;
        }

        public void MergeFrom(ForwardCacheExpireRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.entityId_ != null)
            {
                if (entityId_ == null)
                {
                    entityId_ = new Bgs.Protocol.EntityId();
                }
                EntityId.MergeFrom(other.EntityId);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (entityId_ == null)
                            {
                                entityId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(entityId_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[26]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetAuthorizedDataRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetAuthorizedDataRequest(GetAuthorizedDataRequest other) : this()
        {
            EntityId = other.entityId_ != null ? other.EntityId.Clone() : null;
            tag_ = other.tag_.Clone();
            privilegedNetwork_ = other.privilegedNetwork_;
        }

        public GetAuthorizedDataRequest Clone()
        {
            return new GetAuthorizedDataRequest(this);
        }

        /// <summary>Field number for the "entity_id" field.</summary>
        public const int EntityIdFieldNumber = 1;
        private Bgs.Protocol.EntityId entityId_;
        public Bgs.Protocol.EntityId EntityId
        {
            get { return entityId_; }
            set
            {
                entityId_ = value;
            }
        }

        /// <summary>Field number for the "tag" field.</summary>
        public const int TagFieldNumber = 2;
        private static readonly pb::FieldCodec<string> _repeated_tag_codec
            = pb::FieldCodec.ForString(18);
        private readonly pbc::RepeatedField<string> tag_ = new pbc::RepeatedField<string>();
        public pbc::RepeatedField<string> Tag
        {
            get { return tag_; }
        }

        /// <summary>Field number for the "privileged_network" field.</summary>
        public const int PrivilegedNetworkFieldNumber = 3;
        private bool privilegedNetwork_;
        public bool PrivilegedNetwork
        {
            get { return privilegedNetwork_; }
            set
            {
                privilegedNetwork_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetAuthorizedDataRequest);
        }

        public bool Equals(GetAuthorizedDataRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(EntityId, other.EntityId)) return false;
            if (!tag_.Equals(other.tag_)) return false;
            if (PrivilegedNetwork != other.PrivilegedNetwork) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (entityId_ != null) hash ^= EntityId.GetHashCode();
            hash ^= tag_.GetHashCode();
            if (PrivilegedNetwork != false) hash ^= PrivilegedNetwork.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (entityId_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(EntityId);
            }
            tag_.WriteTo(output, _repeated_tag_codec);
            if (PrivilegedNetwork != false)
            {
                output.WriteRawTag(24);
                output.WriteBool(PrivilegedNetwork);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (entityId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(EntityId);
            }
            size += tag_.CalculateSize(_repeated_tag_codec);
            if (PrivilegedNetwork != false)
            {
                size += 1 + 1;
            }
            return size;
        }

        public void MergeFrom(GetAuthorizedDataRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.entityId_ != null)
            {
                if (entityId_ == null)
                {
                    entityId_ = new Bgs.Protocol.EntityId();
                }
                EntityId.MergeFrom(other.EntityId);
            }
            tag_.Add(other.tag_);
            if (other.PrivilegedNetwork != false)
            {
                PrivilegedNetwork = other.PrivilegedNetwork;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (entityId_ == null)
                            {
                                entityId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(entityId_);
                            break;
                        }
                    case 18:
                        {
                            tag_.AddEntriesFrom(input, _repeated_tag_codec);
                            break;
                        }
                    case 24:
                        {
                            PrivilegedNetwork = input.ReadBool();
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[27]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GetAuthorizedDataResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GetAuthorizedDataResponse(GetAuthorizedDataResponse other) : this()
        {
            data_ = other.data_.Clone();
        }

        public GetAuthorizedDataResponse Clone()
        {
            return new GetAuthorizedDataResponse(this);
        }

        /// <summary>Field number for the "data" field.</summary>
        public const int DataFieldNumber = 1;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.AuthorizedData> _repeated_data_codec
            = pb::FieldCodec.ForMessage(10, Bgs.Protocol.Account.V1.AuthorizedData.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.AuthorizedData> data_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.AuthorizedData>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.AuthorizedData> Data
        {
            get { return data_; }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GetAuthorizedDataResponse);
        }

        public bool Equals(GetAuthorizedDataResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!data_.Equals(other.data_)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            hash ^= data_.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            data_.WriteTo(output, _repeated_data_codec);
        }

        public int CalculateSize()
        {
            int size = 0;
            size += data_.CalculateSize(_repeated_data_codec);
            return size;
        }

        public void MergeFrom(GetAuthorizedDataResponse other)
        {
            if (other == null)
            {
                return;
            }
            data_.Add(other.data_);
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            data_.AddEntriesFrom(input, _repeated_data_codec);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[28]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public AccountStateNotification()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public AccountStateNotification(AccountStateNotification other) : this()
        {
            AccountState = other.accountState_ != null ? other.AccountState.Clone() : null;
            subscriberId_ = other.subscriberId_;
            AccountTags = other.accountTags_ != null ? other.AccountTags.Clone() : null;
            subscriptionCompleted_ = other.subscriptionCompleted_;
        }

        public AccountStateNotification Clone()
        {
            return new AccountStateNotification(this);
        }

        /// <summary>Field number for the "account_state" field.</summary>
        public const int AccountStateFieldNumber = 1;
        private Bgs.Protocol.Account.V1.AccountState accountState_;
        public Bgs.Protocol.Account.V1.AccountState AccountState
        {
            get { return accountState_; }
            set
            {
                accountState_ = value;
            }
        }

        /// <summary>Field number for the "subscriber_id" field.</summary>
        public const int SubscriberIdFieldNumber = 2;
        private ulong subscriberId_;
        public ulong SubscriberId
        {
            get { return subscriberId_; }
            set
            {
                subscriberId_ = value;
            }
        }

        /// <summary>Field number for the "account_tags" field.</summary>
        public const int AccountTagsFieldNumber = 3;
        private Bgs.Protocol.Account.V1.AccountFieldTags accountTags_;
        public Bgs.Protocol.Account.V1.AccountFieldTags AccountTags
        {
            get { return accountTags_; }
            set
            {
                accountTags_ = value;
            }
        }

        /// <summary>Field number for the "subscription_completed" field.</summary>
        public const int SubscriptionCompletedFieldNumber = 4;
        private bool subscriptionCompleted_;
        public bool SubscriptionCompleted
        {
            get { return subscriptionCompleted_; }
            set
            {
                subscriptionCompleted_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as AccountStateNotification);
        }

        public bool Equals(AccountStateNotification other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(AccountState, other.AccountState)) return false;
            if (SubscriberId != other.SubscriberId) return false;
            if (!object.Equals(AccountTags, other.AccountTags)) return false;
            if (SubscriptionCompleted != other.SubscriptionCompleted) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (accountState_ != null) hash ^= AccountState.GetHashCode();
            if (SubscriberId != 0UL) hash ^= SubscriberId.GetHashCode();
            if (accountTags_ != null) hash ^= AccountTags.GetHashCode();
            if (SubscriptionCompleted != false) hash ^= SubscriptionCompleted.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (accountState_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(AccountState);
            }
            if (SubscriberId != 0UL)
            {
                output.WriteRawTag(16);
                output.WriteUInt64(SubscriberId);
            }
            if (accountTags_ != null)
            {
                output.WriteRawTag(26);
                output.WriteMessage(AccountTags);
            }
            if (SubscriptionCompleted != false)
            {
                output.WriteRawTag(32);
                output.WriteBool(SubscriptionCompleted);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (accountState_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(AccountState);
            }
            if (SubscriberId != 0UL)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(SubscriberId);
            }
            if (accountTags_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(AccountTags);
            }
            if (SubscriptionCompleted != false)
            {
                size += 1 + 1;
            }
            return size;
        }

        public void MergeFrom(AccountStateNotification other)
        {
            if (other == null)
            {
                return;
            }
            if (other.accountState_ != null)
            {
                if (accountState_ == null)
                {
                    accountState_ = new Bgs.Protocol.Account.V1.AccountState();
                }
                AccountState.MergeFrom(other.AccountState);
            }
            if (other.SubscriberId != 0UL)
            {
                SubscriberId = other.SubscriberId;
            }
            if (other.accountTags_ != null)
            {
                if (accountTags_ == null)
                {
                    accountTags_ = new Bgs.Protocol.Account.V1.AccountFieldTags();
                }
                AccountTags.MergeFrom(other.AccountTags);
            }
            if (other.SubscriptionCompleted != false)
            {
                SubscriptionCompleted = other.SubscriptionCompleted;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (accountState_ == null)
                            {
                                accountState_ = new Bgs.Protocol.Account.V1.AccountState();
                            }
                            input.ReadMessage(accountState_);
                            break;
                        }
                    case 16:
                        {
                            SubscriberId = input.ReadUInt64();
                            break;
                        }
                    case 26:
                        {
                            if (accountTags_ == null)
                            {
                                accountTags_ = new Bgs.Protocol.Account.V1.AccountFieldTags();
                            }
                            input.ReadMessage(accountTags_);
                            break;
                        }
                    case 32:
                        {
                            SubscriptionCompleted = input.ReadBool();
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[29]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GameAccountStateNotification()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GameAccountStateNotification(GameAccountStateNotification other) : this()
        {
            GameAccountState = other.gameAccountState_ != null ? other.GameAccountState.Clone() : null;
            subscriberId_ = other.subscriberId_;
            GameAccountTags = other.gameAccountTags_ != null ? other.GameAccountTags.Clone() : null;
            subscriptionCompleted_ = other.subscriptionCompleted_;
        }

        public GameAccountStateNotification Clone()
        {
            return new GameAccountStateNotification(this);
        }

        /// <summary>Field number for the "game_account_state" field.</summary>
        public const int GameAccountStateFieldNumber = 1;
        private Bgs.Protocol.Account.V1.GameAccountState gameAccountState_;
        public Bgs.Protocol.Account.V1.GameAccountState GameAccountState
        {
            get { return gameAccountState_; }
            set
            {
                gameAccountState_ = value;
            }
        }

        /// <summary>Field number for the "subscriber_id" field.</summary>
        public const int SubscriberIdFieldNumber = 2;
        private ulong subscriberId_;
        public ulong SubscriberId
        {
            get { return subscriberId_; }
            set
            {
                subscriberId_ = value;
            }
        }

        /// <summary>Field number for the "game_account_tags" field.</summary>
        public const int GameAccountTagsFieldNumber = 3;
        private Bgs.Protocol.Account.V1.GameAccountFieldTags gameAccountTags_;
        public Bgs.Protocol.Account.V1.GameAccountFieldTags GameAccountTags
        {
            get { return gameAccountTags_; }
            set
            {
                gameAccountTags_ = value;
            }
        }

        /// <summary>Field number for the "subscription_completed" field.</summary>
        public const int SubscriptionCompletedFieldNumber = 4;
        private bool subscriptionCompleted_;
        public bool SubscriptionCompleted
        {
            get { return subscriptionCompleted_; }
            set
            {
                subscriptionCompleted_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GameAccountStateNotification);
        }

        public bool Equals(GameAccountStateNotification other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(GameAccountState, other.GameAccountState)) return false;
            if (SubscriberId != other.SubscriberId) return false;
            if (!object.Equals(GameAccountTags, other.GameAccountTags)) return false;
            if (SubscriptionCompleted != other.SubscriptionCompleted) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (gameAccountState_ != null) hash ^= GameAccountState.GetHashCode();
            if (SubscriberId != 0UL) hash ^= SubscriberId.GetHashCode();
            if (gameAccountTags_ != null) hash ^= GameAccountTags.GetHashCode();
            if (SubscriptionCompleted != false) hash ^= SubscriptionCompleted.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (gameAccountState_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(GameAccountState);
            }
            if (SubscriberId != 0UL)
            {
                output.WriteRawTag(16);
                output.WriteUInt64(SubscriberId);
            }
            if (gameAccountTags_ != null)
            {
                output.WriteRawTag(26);
                output.WriteMessage(GameAccountTags);
            }
            if (SubscriptionCompleted != false)
            {
                output.WriteRawTag(32);
                output.WriteBool(SubscriptionCompleted);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (gameAccountState_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameAccountState);
            }
            if (SubscriberId != 0UL)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(SubscriberId);
            }
            if (gameAccountTags_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameAccountTags);
            }
            if (SubscriptionCompleted != false)
            {
                size += 1 + 1;
            }
            return size;
        }

        public void MergeFrom(GameAccountStateNotification other)
        {
            if (other == null)
            {
                return;
            }
            if (other.gameAccountState_ != null)
            {
                if (gameAccountState_ == null)
                {
                    gameAccountState_ = new Bgs.Protocol.Account.V1.GameAccountState();
                }
                GameAccountState.MergeFrom(other.GameAccountState);
            }
            if (other.SubscriberId != 0UL)
            {
                SubscriberId = other.SubscriberId;
            }
            if (other.gameAccountTags_ != null)
            {
                if (gameAccountTags_ == null)
                {
                    gameAccountTags_ = new Bgs.Protocol.Account.V1.GameAccountFieldTags();
                }
                GameAccountTags.MergeFrom(other.GameAccountTags);
            }
            if (other.SubscriptionCompleted != false)
            {
                SubscriptionCompleted = other.SubscriptionCompleted;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (gameAccountState_ == null)
                            {
                                gameAccountState_ = new Bgs.Protocol.Account.V1.GameAccountState();
                            }
                            input.ReadMessage(gameAccountState_);
                            break;
                        }
                    case 16:
                        {
                            SubscriberId = input.ReadUInt64();
                            break;
                        }
                    case 26:
                        {
                            if (gameAccountTags_ == null)
                            {
                                gameAccountTags_ = new Bgs.Protocol.Account.V1.GameAccountFieldTags();
                            }
                            input.ReadMessage(gameAccountTags_);
                            break;
                        }
                    case 32:
                        {
                            SubscriptionCompleted = input.ReadBool();
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[30]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GameAccountNotification()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GameAccountNotification(GameAccountNotification other) : this()
        {
            gameAccounts_ = other.gameAccounts_.Clone();
            subscriberId_ = other.subscriberId_;
            AccountTags = other.accountTags_ != null ? other.AccountTags.Clone() : null;
        }

        public GameAccountNotification Clone()
        {
            return new GameAccountNotification(this);
        }

        /// <summary>Field number for the "game_accounts" field.</summary>
        public const int GameAccountsFieldNumber = 1;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.GameAccountList> _repeated_gameAccounts_codec
            = pb::FieldCodec.ForMessage(10, Bgs.Protocol.Account.V1.GameAccountList.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.GameAccountList> gameAccounts_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.GameAccountList>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.GameAccountList> GameAccounts
        {
            get { return gameAccounts_; }
        }

        /// <summary>Field number for the "subscriber_id" field.</summary>
        public const int SubscriberIdFieldNumber = 2;
        private ulong subscriberId_;
        public ulong SubscriberId
        {
            get { return subscriberId_; }
            set
            {
                subscriberId_ = value;
            }
        }

        /// <summary>Field number for the "account_tags" field.</summary>
        public const int AccountTagsFieldNumber = 3;
        private Bgs.Protocol.Account.V1.AccountFieldTags accountTags_;
        public Bgs.Protocol.Account.V1.AccountFieldTags AccountTags
        {
            get { return accountTags_; }
            set
            {
                accountTags_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GameAccountNotification);
        }

        public bool Equals(GameAccountNotification other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!gameAccounts_.Equals(other.gameAccounts_)) return false;
            if (SubscriberId != other.SubscriberId) return false;
            if (!object.Equals(AccountTags, other.AccountTags)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            hash ^= gameAccounts_.GetHashCode();
            if (SubscriberId != 0UL) hash ^= SubscriberId.GetHashCode();
            if (accountTags_ != null) hash ^= AccountTags.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            gameAccounts_.WriteTo(output, _repeated_gameAccounts_codec);
            if (SubscriberId != 0UL)
            {
                output.WriteRawTag(16);
                output.WriteUInt64(SubscriberId);
            }
            if (accountTags_ != null)
            {
                output.WriteRawTag(26);
                output.WriteMessage(AccountTags);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            size += gameAccounts_.CalculateSize(_repeated_gameAccounts_codec);
            if (SubscriberId != 0UL)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(SubscriberId);
            }
            if (accountTags_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(AccountTags);
            }
            return size;
        }

        public void MergeFrom(GameAccountNotification other)
        {
            if (other == null)
            {
                return;
            }
            gameAccounts_.Add(other.gameAccounts_);
            if (other.SubscriberId != 0UL)
            {
                SubscriberId = other.SubscriberId;
            }
            if (other.accountTags_ != null)
            {
                if (accountTags_ == null)
                {
                    accountTags_ = new Bgs.Protocol.Account.V1.AccountFieldTags();
                }
                AccountTags.MergeFrom(other.AccountTags);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            gameAccounts_.AddEntriesFrom(input, _repeated_gameAccounts_codec);
                            break;
                        }
                    case 16:
                        {
                            SubscriberId = input.ReadUInt64();
                            break;
                        }
                    case 26:
                        {
                            if (accountTags_ == null)
                            {
                                accountTags_ = new Bgs.Protocol.Account.V1.AccountFieldTags();
                            }
                            input.ReadMessage(accountTags_);
                            break;
                        }
                }
            }
        }

    }

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

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Account.V1.AccountServiceReflection.Descriptor.MessageTypes[31]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GameAccountSessionNotification()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GameAccountSessionNotification(GameAccountSessionNotification other) : this()
        {
            GameAccount = other.gameAccount_ != null ? other.GameAccount.Clone() : null;
            SessionInfo = other.sessionInfo_ != null ? other.SessionInfo.Clone() : null;
        }

        public GameAccountSessionNotification Clone()
        {
            return new GameAccountSessionNotification(this);
        }

        /// <summary>Field number for the "game_account" field.</summary>
        public const int GameAccountFieldNumber = 1;
        private Bgs.Protocol.Account.V1.GameAccountHandle gameAccount_;
        public Bgs.Protocol.Account.V1.GameAccountHandle GameAccount
        {
            get { return gameAccount_; }
            set
            {
                gameAccount_ = value;
            }
        }

        /// <summary>Field number for the "session_info" field.</summary>
        public const int SessionInfoFieldNumber = 2;
        private Bgs.Protocol.Account.V1.GameSessionUpdateInfo sessionInfo_;
        public Bgs.Protocol.Account.V1.GameSessionUpdateInfo SessionInfo
        {
            get { return sessionInfo_; }
            set
            {
                sessionInfo_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GameAccountSessionNotification);
        }

        public bool Equals(GameAccountSessionNotification other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(GameAccount, other.GameAccount)) return false;
            if (!object.Equals(SessionInfo, other.SessionInfo)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (gameAccount_ != null) hash ^= GameAccount.GetHashCode();
            if (sessionInfo_ != null) hash ^= SessionInfo.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (gameAccount_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(GameAccount);
            }
            if (sessionInfo_ != null)
            {
                output.WriteRawTag(18);
                output.WriteMessage(SessionInfo);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (gameAccount_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameAccount);
            }
            if (sessionInfo_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(SessionInfo);
            }
            return size;
        }

        public void MergeFrom(GameAccountSessionNotification other)
        {
            if (other == null)
            {
                return;
            }
            if (other.gameAccount_ != null)
            {
                if (gameAccount_ == null)
                {
                    gameAccount_ = new Bgs.Protocol.Account.V1.GameAccountHandle();
                }
                GameAccount.MergeFrom(other.GameAccount);
            }
            if (other.sessionInfo_ != null)
            {
                if (sessionInfo_ == null)
                {
                    sessionInfo_ = new Bgs.Protocol.Account.V1.GameSessionUpdateInfo();
                }
                SessionInfo.MergeFrom(other.SessionInfo);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (gameAccount_ == null)
                            {
                                gameAccount_ = new Bgs.Protocol.Account.V1.GameAccountHandle();
                            }
                            input.ReadMessage(gameAccount_);
                            break;
                        }
                    case 18:
                        {
                            if (sessionInfo_ == null)
                            {
                                sessionInfo_ = new Bgs.Protocol.Account.V1.GameSessionUpdateInfo();
                            }
                            input.ReadMessage(sessionInfo_);
                            break;
                        }
                }
            }
        }

    }

    #endregion
}

#endregion Designer generated code
