Added enums/proto, refactored to work with new proto files

FeroxRev [2016-07-20 21:13:14]
Added enums/proto, refactored to work with new proto files
Filename
PokemonGo/RocketAPI/Client.cs
PokemonGo/RocketAPI/Console/Program.cs
PokemonGo/RocketAPI/Extensions/HttpClientExtensions.cs
PokemonGo/RocketAPI/GeneratedCode/AllEnum.cs
PokemonGo/RocketAPI/GeneratedCode/CatchPokemonResponse.cs
PokemonGo/RocketAPI/GeneratedCode/FortDetailResponse.cs
PokemonGo/RocketAPI/GeneratedCode/FortSearchResponse.cs
PokemonGo/RocketAPI/GeneratedCode/InventoryResponse.cs
PokemonGo/RocketAPI/GeneratedCode/MapObjectsResponse.cs
PokemonGo/RocketAPI/GeneratedCode/Payloads.cs
PokemonGo/RocketAPI/GeneratedCode/PlayerUpdateResponse.cs
PokemonGo/RocketAPI/GeneratedCode/ProfileResponse.cs
PokemonGo/RocketAPI/GeneratedCode/EncounterResponse.cs
PokemonGo/RocketAPI/GeneratedCode/SettingsResponse.cs
PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
PokemonGo/RocketAPI/Proto/AllEnum.proto
PokemonGo/RocketAPI/Proto/CatchPokemonResponse.proto
PokemonGo/RocketAPI/Proto/EncounterResponse.proto
PokemonGo/RocketAPI/Proto/FortDetailResponse.proto
PokemonGo/RocketAPI/Proto/FortSearchResponse.proto
PokemonGo/RocketAPI/Proto/InventoryResponse.proto
PokemonGo/RocketAPI/Proto/MapObjectsResponse.proto
PokemonGo/RocketAPI/Proto/Payloads.proto
PokemonGo/RocketAPI/Proto/PlayerUpdateResponse.proto
PokemonGo/RocketAPI/Proto/ProfileResponse.proto
PokemonGo/RocketAPI/Proto/Response.proto
PokemonGo/RocketAPI/Proto/SettingsResponse.proto
PokemonGo/RocketAPI/Settings.cs
diff --git a/PokemonGo/RocketAPI/Client.cs b/PokemonGo/RocketAPI/Client.cs
index c24d14f..079c154 100644
--- a/PokemonGo/RocketAPI/Client.cs
+++ b/PokemonGo/RocketAPI/Client.cs
@@ -21,7 +21,6 @@ using PokemonGo.RocketAPI.Helpers;
 using PokemonGo.RocketAPI.Extensions;
 using System.Threading;
 using PokemonGo.RocketAPI.Login;
-using static PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types;

 namespace PokemonGo.RocketAPI
 {
@@ -101,43 +100,41 @@ namespace PokemonGo.RocketAPI
                     Message = customRequest.ToByteString()
                 });
             var updateResponse =
-                await _httpClient.PostProto<Request, PlayerUpdateResponse>($"https://{_apiUrl}/rpc", updateRequest);
+                await _httpClient.PostProtoPayload<Request, PlayerUpdateResponse>($"https://{_apiUrl}/rpc", updateRequest);
             return updateResponse;
         }

-        public async Task<ProfileResponse> GetServer()
+        public async Task SetServer()
         {
             var serverRequest = RequestBuilder.GetInitialRequest(_accessToken, _authType, _currentLat, _currentLng, 10,
                 RequestType.GET_PLAYER, RequestType.GET_HATCHED_OBJECTS, RequestType.GET_INVENTORY,
                 RequestType.CHECK_AWARDED_BADGES, RequestType.DOWNLOAD_SETTINGS);
-            var serverResponse = await _httpClient.PostProto<Request, ProfileResponse>(Resources.RpcUrl, serverRequest);
+            var serverResponse = await _httpClient.PostProto<Request>(Resources.RpcUrl, serverRequest);
+            _unknownAuth = new Request.Types.UnknownAuth()
+            {
+                Unknown71 = serverResponse.Auth.Unknown71,
+                Timestamp = serverResponse.Auth.Timestamp,
+                Unknown73 = serverResponse.Auth.Unknown73,
+            };
+
             _apiUrl = serverResponse.ApiUrl;
-            return serverResponse;
         }

-        public async Task<ProfileResponse> GetProfile()
+        public async Task<GetPlayerResponse> GetProfile()
         {
             var profileRequest = RequestBuilder.GetInitialRequest(_accessToken, _authType, _currentLat, _currentLng, 10,
                 new Request.Types.Requests() {Type = (int) RequestType.GET_PLAYER});
-            var profileResponse =
-                await _httpClient.PostProto<Request, ProfileResponse>($"https://{_apiUrl}/rpc", profileRequest);
-            _unknownAuth = new Request.Types.UnknownAuth()
-            {
-                Unknown71 = profileResponse.Auth.Unknown71,
-                Timestamp = profileResponse.Auth.Timestamp,
-                Unknown73 = profileResponse.Auth.Unknown73,
-            };
-            return profileResponse;
+            return await _httpClient.PostProtoPayload<Request, GetPlayerResponse>($"https://{_apiUrl}/rpc", profileRequest);
         }

-        public async Task<SettingsResponse> GetSettings()
+        public async Task<DownloadSettingsResponse> GetSettings()
         {
             var settingsRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10,
                 RequestType.DOWNLOAD_SETTINGS);
-            return await _httpClient.PostProto<Request, SettingsResponse>($"https://{_apiUrl}/rpc", settingsRequest);
+            return await _httpClient.PostProtoPayload<Request, DownloadSettingsResponse>($"https://{_apiUrl}/rpc", settingsRequest);
         }

-        public async Task<MapObjectsResponse> GetMapObjects()
+        public async Task<GetMapObjectsResponse> GetMapObjects()
         {
             var customRequest = new Request.Types.MapObjectsRequest()
             {
@@ -173,10 +170,10 @@ namespace PokemonGo.RocketAPI
                         }.ToByteString()
                 });

-            return await _httpClient.PostProto<Request, MapObjectsResponse>($"https://{_apiUrl}/rpc", mapRequest);
+            return await _httpClient.PostProtoPayload<Request, GetMapObjectsResponse>($"https://{_apiUrl}/rpc", mapRequest);
         }

-        public async Task<FortDetailResponse> GetFort(string fortId, double fortLat, double fortLng)
+        public async Task<FortDetailsResponse> GetFort(string fortId, double fortLat, double fortLng)
         {
             var customRequest = new Request.Types.FortDetailsRequest()
             {
@@ -191,7 +188,7 @@ namespace PokemonGo.RocketAPI
                     Type = (int) RequestType.FORT_DETAILS,
                     Message = customRequest.ToByteString()
                 });
-            return await _httpClient.PostProto<Request, FortDetailResponse>($"https://{_apiUrl}/rpc", fortDetailRequest);
+            return await _httpClient.PostProtoPayload<Request, FortDetailsResponse>($"https://{_apiUrl}/rpc", fortDetailRequest);
         }

         /*num Holoholo.Rpc.Types.FortSearchOutProto.Result {
@@ -219,7 +216,7 @@ namespace PokemonGo.RocketAPI
                     Type = (int) RequestType.FORT_SEARCH,
                     Message = customRequest.ToByteString()
                 });
-            return await _httpClient.PostProto<Request, FortSearchResponse>($"https://{_apiUrl}/rpc", fortDetailRequest);
+            return await _httpClient.PostProtoPayload<Request, FortSearchResponse>($"https://{_apiUrl}/rpc", fortDetailRequest);
         }

         public async Task<EncounterResponse> EncounterPokemon(ulong encounterId, string spawnPointGuid)
@@ -238,7 +235,7 @@ namespace PokemonGo.RocketAPI
                     Type = (int) RequestType.ENCOUNTER,
                     Message = customRequest.ToByteString()
                 });
-            return await _httpClient.PostProto<Request, EncounterResponse>($"https://{_apiUrl}/rpc", encounterResponse);
+            return await _httpClient.PostProtoPayload<Request, EncounterResponse>($"https://{_apiUrl}/rpc", encounterResponse);
         }

         public async Task<CatchPokemonResponse> CatchPokemon(ulong encounterId, string spawnPointGuid, double pokemonLat,
@@ -264,12 +261,12 @@ namespace PokemonGo.RocketAPI
                 });
             return
                 await
-                    _httpClient.PostProto<Request, CatchPokemonResponse>($"https://{_apiUrl}/rpc", catchPokemonRequest);
+                    _httpClient.PostProtoPayload<Request, CatchPokemonResponse>($"https://{_apiUrl}/rpc", catchPokemonRequest);
         }

-        public async Task<TransferPokemonOutProto> TransferPokemon(ulong pokemonId)
+        public async Task<TransferPokemonOut> TransferPokemon(ulong pokemonId)
         {
-            var customRequest = new TransferPokemonProto
+            var customRequest = new TransferPokemon
             {
                 PokemonId = pokemonId
             };
@@ -280,14 +277,12 @@ namespace PokemonGo.RocketAPI
                     Type = (int)RequestType.RELEASE_POKEMON,
                     Message = customRequest.ToByteString()
                 });
-            return
-                await
-                    _httpClient.PostProto<Request, TransferPokemonOutProto>($"https://{_apiUrl}/rpc", releasePokemonRequest);
+            return await _httpClient.PostProtoPayload<Request, TransferPokemonOut>($"https://{_apiUrl}/rpc", releasePokemonRequest);
         }

-        public async Task<EvolvePokemonOutProto> EvolvePokemon(ulong pokemonId)
+        public async Task<EvolvePokemonOut> EvolvePokemon(ulong pokemonId)
         {
-            var customRequest = new EvolvePokemonProto
+            var customRequest = new EvolvePokemon
             {
                 PokemonId = pokemonId
             };
@@ -300,13 +295,13 @@ namespace PokemonGo.RocketAPI
                 });
             return
                 await
-                    _httpClient.PostProto<Request, EvolvePokemonOutProto>($"https://{_apiUrl}/rpc", releasePokemonRequest);
+                    _httpClient.PostProtoPayload<Request, EvolvePokemonOut>($"https://{_apiUrl}/rpc", releasePokemonRequest);
         }

-        public async Task<InventoryResponse> GetInventory()
+        public async Task<GetInventoryResponse> GetInventory()
         {
             var inventoryRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30, RequestType.GET_INVENTORY);
-            return await _httpClient.PostProto<Request, InventoryResponse>($"https://{_apiUrl}/rpc", inventoryRequest);
+            return await _httpClient.PostProtoPayload<Request, GetInventoryResponse>($"https://{_apiUrl}/rpc", inventoryRequest);
         }
     }
 }
diff --git a/PokemonGo/RocketAPI/Console/Program.cs b/PokemonGo/RocketAPI/Console/Program.cs
index bd5b32c..ca034df 100644
--- a/PokemonGo/RocketAPI/Console/Program.cs
+++ b/PokemonGo/RocketAPI/Console/Program.cs
@@ -5,6 +5,7 @@ using System.Linq;
 using System.Net.Http;
 using System.Text;
 using System.Threading.Tasks;
+using AllEnum;
 using Google.Protobuf;
 using PokemonGo.RocketAPI.Enums;
 using PokemonGo.RocketAPI.Extensions;
@@ -30,12 +31,12 @@ namespace PokemonGo.RocketAPI.Console
             else if (Settings.AuthType == AuthType.Google)
                 await client.DoGoogleLogin();

-            var serverResponse = await client.GetServer();
+            await client.SetServer();
             var profile = await client.GetProfile();
             var settings = await client.GetSettings();
             var mapObjects = await client.GetMapObjects();
             var inventory = await client.GetInventory();
-            var pokemons = inventory.Payload[0].Bag.Items.Select(i => i.Item?.Pokemon).Where(p => p != null && p?.PokemonType != InventoryResponse.Types.PokemonProto.Types.PokemonTypes.PokemonUnset);
+            var pokemons = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon).Where(p => p != null && p?.PokemonId > 0);


             await ExecuteFarmingPokestopsAndPokemons(client);
@@ -48,16 +49,15 @@ namespace PokemonGo.RocketAPI.Console
         {
             var mapObjects = await client.GetMapObjects();

-            var pokeStops = mapObjects.Payload[0].Profile.SelectMany(i => i.Fort).Where(i => i.FortType == (int)MiscEnums.FortType.CHECKPOINT && i.CooldownCompleteMs < DateTime.UtcNow.ToUnixTime());
+            var pokeStops = mapObjects.MapCells.SelectMany(i => i.Forts).Where(i => i.Type == FortType.Checkpoint && i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime());

             foreach (var pokeStop in pokeStops)
             {
                 var update = await client.UpdatePlayerLocation(pokeStop.Latitude, pokeStop.Longitude);
-                var fortInfo = await client.GetFort(pokeStop.FortId, pokeStop.Latitude, pokeStop.Longitude);
-                var fortSearch = await client.SearchFort(pokeStop.FortId, pokeStop.Latitude, pokeStop.Longitude);
-                var bag = fortSearch.Payload[0];
+                var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
+                var fortSearch = await client.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);

-                System.Console.WriteLine($"[{DateTime.Now.ToString("HH:mm:ss")}] Farmed XP: {bag.XpAwarded}, Gems: { bag.GemsAwarded}, Eggs: {bag.EggPokemon} Items: {GetFriendlyItemsString(bag.Items)}");
+                System.Console.WriteLine($"[{DateTime.Now.ToString("HH:mm:ss")}] Farmed XP: {fortSearch.ExperienceAwarded}, Gems: { fortSearch.GemsAwarded}, Eggs: {fortSearch.PokemonDataEgg} Items: {GetFriendlyItemsString(fortSearch.ItemsAwarded)}");

                 await ExecuteCatchAllNearbyPokemons(client);

@@ -69,7 +69,7 @@ namespace PokemonGo.RocketAPI.Console
         {
             var mapObjects = await client.GetMapObjects();

-            var pokemons = mapObjects.Payload[0].Profile.SelectMany(i => i.MapPokemon);
+            var pokemons = mapObjects.MapCells.SelectMany(i => i.CatchablePokemons);

             foreach (var pokemon in pokemons)
             {
@@ -79,30 +79,30 @@ namespace PokemonGo.RocketAPI.Console
                 CatchPokemonResponse caughtPokemonResponse;
                 do
                 {
-                    caughtPokemonResponse = await client.CatchPokemon(pokemon.EncounterId, pokemon.SpawnpointId, pokemon.Latitude, pokemon.Longitude, Settings.UsedBall);
+                    caughtPokemonResponse = await client.CatchPokemon(pokemon.EncounterId, pokemon.SpawnpointId, pokemon.Latitude, pokemon.Longitude, MiscEnums.Item.ITEM_POKE_BALL); //note: reverted from settings because this should not be part of settings but part of logic
                 }
-                while(caughtPokemonResponse.Payload[0].Status == 2);
+                while(caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchMissed);

-                System.Console.WriteLine(caughtPokemonResponse.Payload[0].Status == 1 ? $"[{DateTime.Now.ToString("HH:mm:ss")}] We caught a {GetFriendlyPokemonName(pokemon.PokedexTypeId)}" : $"[{DateTime.Now.ToString("HH:mm:ss")}] {GetFriendlyPokemonName(pokemon.PokedexTypeId)} got away..");
+                System.Console.WriteLine(caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchSuccess ? $"[{DateTime.Now.ToString("HH:mm:ss")}] We caught a {GetFriendlyPokemonName(pokemon.PokemonId)}" : $"[{DateTime.Now.ToString("HH:mm:ss")}] {GetFriendlyPokemonName(pokemon.PokemonId)} got away..");
                 await Task.Delay(5000);
             }
         }

-        private static string GetFriendlyPokemonName(MapObjectsResponse.Types.Payload.Types.PokemonTypes id)
+        private static string GetFriendlyPokemonName(PokemonId id)
         {
-            var name = Enum.GetName(typeof (InventoryResponse.Types.PokemonProto.Types.PokemonTypes), id);
+            var name = Enum.GetName(typeof (GetInventoryResponse), id);
             return name?.Substring(name.IndexOf("Pokemon") + 7);
         }

-        private static string GetFriendlyItemsString(IEnumerable<FortSearchResponse.Types.Item> items)
+        private static string GetFriendlyItemsString(IEnumerable<FortSearchResponse.Types.ItemAward> items)
         {
-            var enumerable = items as IList<FortSearchResponse.Types.Item> ?? items.ToList();
+            var enumerable = items as IList<FortSearchResponse.Types.ItemAward> ?? items.ToList();

             if (!enumerable.Any())
                 return string.Empty;

             return
-                enumerable.GroupBy(i => (MiscEnums.Item) i.Item_)
+                enumerable.GroupBy(i => i.ItemId)
                           .Select(kvp => new {ItemName = kvp.Key.ToString(), Amount = kvp.Sum(x => x.ItemCount)})
                           .Select(y => $"{y.Amount} x {y.ItemName}")
                           .Aggregate((a, b) => $"{a}, {b}");
diff --git a/PokemonGo/RocketAPI/Extensions/HttpClientExtensions.cs b/PokemonGo/RocketAPI/Extensions/HttpClientExtensions.cs
index 7b3d240..f3a8fca 100644
--- a/PokemonGo/RocketAPI/Extensions/HttpClientExtensions.cs
+++ b/PokemonGo/RocketAPI/Extensions/HttpClientExtensions.cs
@@ -12,18 +12,31 @@ namespace PokemonGo.RocketAPI.Extensions
 {
     public static class HttpClientExtensions
     {
-        public static async Task<V> PostProto<T, V>(this HttpClient client, string url, T request) where T : IMessage<T> where V : IMessage<V>, new()
+        public static async Task<TResponsePayload> PostProtoPayload<TRequest, TResponsePayload>(this HttpClient client, string url, TRequest request) where TRequest : IMessage<TRequest> where TResponsePayload : IMessage<TResponsePayload>, new()
         {
-            //Encode message and send
+            var response = await PostProto<TRequest>(client, url, request);
+
+            //Decode payload
+            //todo: multi-payload support
+            var payload = response.Payload[0];
+            var parsedPayload = new TResponsePayload();
+            parsedPayload.MergeFrom(payload);
+
+            return parsedPayload;
+        }
+
+        public static async Task<Response> PostProto<TRequest>(this HttpClient client, string url, TRequest request) where TRequest : IMessage<TRequest>
+        {
+            //Encode payload and put in envelop, then send
             var data = request.ToByteString();
             var result = await client.PostAsync(url, new ByteArrayContent(data.ToByteArray()));

             //Decode message
             var responseData = await result.Content.ReadAsByteArrayAsync();
             var codedStream = new CodedInputStream(responseData);
-            var decodedResponse = new V();
+            var decodedResponse = new Response();
             decodedResponse.MergeFrom(codedStream);
-
+
             return decodedResponse;
         }
     }
diff --git a/PokemonGo/RocketAPI/GeneratedCode/AllEnum.cs b/PokemonGo/RocketAPI/GeneratedCode/AllEnum.cs
new file mode 100644
index 0000000..7898f95
--- /dev/null
+++ b/PokemonGo/RocketAPI/GeneratedCode/AllEnum.cs
@@ -0,0 +1,1111 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: AllEnum.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace AllEnum {
+
+  /// <summary>Holder for reflection information generated from AllEnum.proto</summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public static partial class AllEnumReflection {
+
+    #region Descriptor
+    /// <summary>File descriptor for AllEnum.proto</summary>
+    public static pbr::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbr::FileDescriptor descriptor;
+
+    static AllEnumReflection() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          string.Concat(
+            "Cg1BbGxFbnVtLnByb3RvEgdBbGxFbnVtKjYKDFJwY0RpcmVjdGlvbhILCgdV",
+            "TktOT1dOEAASDAoIUkVTUE9OU0UQARILCgdSRVFVRVNUEAIqNwoJVGVhbUNv",
+            "bG9yEgsKB05FVVRSQUwQABIICgRCTFVFEAESBwoDUkVEEAISCgoGWUVMTE9X",
+            "EAMqwwwKDVJlcXVlc3RNZXRob2QSEAoMTUVUSE9EX1VOU0VUEAASEQoNUExB",
+            "WUVSX1VQREFURRABEg4KCkdFVF9QTEFZRVIQAhIRCg1HRVRfSU5WRU5UT1JZ",
+            "EAQSFQoRRE9XTkxPQURfU0VUVElOR1MQBRIbChdET1dOTE9BRF9JVEVNX1RF",
+            "TVBMQVRFUxAGEiIKHkRPV05MT0FEX1JFTU9URV9DT05GSUdfVkVSU0lPThAH",
+            "Eg8KC0ZPUlRfU0VBUkNIEGUSDQoJRU5DT1VOVEVSEGYSEQoNQ0FUQ0hfUE9L",
+            "RU1PThBnEhAKDEZPUlRfREVUQUlMUxBoEgwKCElURU1fVVNFEGkSEwoPR0VU",
+            "X01BUF9PQkpFQ1RTEGoSFwoTRk9SVF9ERVBMT1lfUE9LRU1PThBuEhcKE0ZP",
+            "UlRfUkVDQUxMX1BPS0VNT04QbxITCg9SRUxFQVNFX1BPS0VNT04QcBITCg9V",
+            "U0VfSVRFTV9QT1RJT04QcRIUChBVU0VfSVRFTV9DQVBUVVJFEHISEQoNVVNF",
+            "X0lURU1fRkxFRRBzEhMKD1VTRV9JVEVNX1JFVklWRRB0EhAKDFRSQURFX1NF",
+            "QVJDSBB1Eg8KC1RSQURFX09GRkVSEHYSEgoOVFJBREVfUkVTUE9OU0UQdxIQ",
+            "CgxUUkFERV9SRVNVTFQQeBIWChJHRVRfUExBWUVSX1BST0ZJTEUQeRIRCg1H",
+            "RVRfSVRFTV9QQUNLEHoSEQoNQlVZX0lURU1fUEFDSxB7EhAKDEJVWV9HRU1f",
+            "UEFDSxB8EhIKDkVWT0xWRV9QT0tFTU9OEH0SFAoQR0VUX0hBVENIRURfRUdH",
+            "UxB+Eh8KG0VOQ09VTlRFUl9UVVRPUklBTF9DT01QTEVURRB/EhUKEExFVkVM",
+            "X1VQX1JFV0FSRFMQgAESGQoUQ0hFQ0tfQVdBUkRFRF9CQURHRVMQgQESEQoM",
+            "VVNFX0lURU1fR1lNEIUBEhQKD0dFVF9HWU1fREVUQUlMUxCGARIVChBTVEFS",
+            "VF9HWU1fQkFUVExFEIcBEg8KCkFUVEFDS19HWU0QiAESGwoWUkVDWUNMRV9J",
+            "TlZFTlRPUllfSVRFTRCJARIYChNDT0xMRUNUX0RBSUxZX0JPTlVTEIoBEhYK",
+            "EVVTRV9JVEVNX1hQX0JPT1NUEIsBEhsKFlVTRV9JVEVNX0VHR19JTkNVQkFU",
+            "T1IQjAESEAoLVVNFX0lOQ0VOU0UQjQESGAoTR0VUX0lOQ0VOU0VfUE9LRU1P",
+            "ThCOARIWChFJTkNFTlNFX0VOQ09VTlRFUhCPARIWChFBRERfRk9SVF9NT0RJ",
+            "RklFUhCQARITCg5ESVNLX0VOQ09VTlRFUhCRARIhChxDT0xMRUNUX0RBSUxZ",
+            "X0RFRkVOREVSX0JPTlVTEJIBEhQKD1VQR1JBREVfUE9LRU1PThCTARIZChRT",
+            "RVRfRkFWT1JJVEVfUE9LRU1PThCUARIVChBOSUNLTkFNRV9QT0tFTU9OEJUB",
+            "EhAKC0VRVUlQX0JBREdFEJYBEhkKFFNFVF9DT05UQUNUX1NFVFRJTkdTEJcB",
+            "EhUKEEdFVF9BU1NFVF9ESUdFU1QQrAISFgoRR0VUX0RPV05MT0FEX1VSTFMQ",
+            "rQISHAoXR0VUX1NVR0dFU1RFRF9DT0RFTkFNRVMQkQMSHQoYQ0hFQ0tfQ09E",
+            "RU5BTUVfQVZBSUxBQkxFEJIDEhMKDkNMQUlNX0NPREVOQU1FEJMDEg8KClNF",
+            "VF9BVkFUQVIQlAMSFAoPU0VUX1BMQVlFUl9URUFNEJUDEhsKFk1BUktfVFVU",
+            "T1JJQUxfQ09NUExFVEUQlgMSFgoRTE9BRF9TUEFXTl9QT0lOVFMQ9AMSCQoE",
+            "RUNITxCaBRIbChZERUJVR19VUERBVEVfSU5WRU5UT1JZELwFEhgKE0RFQlVH",
+            "X0RFTEVURV9QTEFZRVIQvQUSFwoSU0ZJREFfUkVHSVNUUkFUSU9OEKAGEhUK",
+            "EFNGSURBX0FDVElPTl9MT0cQoQYSGAoTU0ZJREFfQ0VSVElGSUNBVElPThCi",
+            "BhIRCgxTRklEQV9VUERBVEUQowYSEQoMU0ZJREFfQUNUSU9OEKQGEhEKDFNG",
+            "SURBX0RPV1NFUhClBhISCg1TRklEQV9DQVBUVVJFEKYGKs4XCgtQb2tlbW9u",
+            "TW92ZRIOCgpNT1ZFX1VOU0VUEAASEQoNVEhVTkRFUl9TSE9DSxABEhAKDFFV",
+            "SUNLX0FUVEFDSxACEgsKB1NDUkFUQ0gQAxIJCgVFTUJFUhAEEg0KCVZJTkVf",
+            "V0hJUBAFEgoKBlRBQ0tMRRAGEg4KClJBWk9SX0xFQUYQBxINCglUQUtFX0RP",
+            "V04QCBINCglXQVRFUl9HVU4QCRIICgRCSVRFEAoSCQoFUE9VTkQQCxIPCgtE",
+            "T1VCTEVfU0xBUBAMEggKBFdSQVAQDRIOCgpIWVBFUl9CRUFNEA4SCAoETElD",
+            "SxAPEg4KCkRBUktfUFVMU0UQEBIICgRTTU9HEBESCgoGU0xVREdFEBISDgoK",
+            "TUVUQUxfQ0xBVxATEg0KCVZJQ0VfR1JJUBAUEg8KC0ZMQU1FX1dIRUVMEBUS",
+            "DAoITUVHQUhPUk4QFhIPCgtXSU5HX0FUVEFDSxAXEhAKDEZMQU1FVEhST1dF",
+            "UhAYEhAKDFNVQ0tFUl9QVU5DSBAZEgcKA0RJRxAaEgwKCExPV19LSUNLEBsS",
+            "DgoKQ1JPU1NfQ0hPUBAcEg4KClBTWUNIT19DVVQQHRILCgdQU1lCRUFNEB4S",
+            "DgoKRUFSVEhRVUFLRRAfEg4KClNUT05FX0VER0UQIBINCglJQ0VfUFVOQ0gQ",
+            "IRIPCgtIRUFSVF9TVEFNUBAiEg0KCURJU0NIQVJHRRAjEhAKDEZMQVNIX0NB",
+            "Tk5PThAkEggKBFBFQ0sQJRIOCgpEUklMTF9QRUNLECYSDAoISUNFX0JFQU0Q",
+            "JxIMCghCTElaWkFSRBAoEg0KCUFJUl9TTEFTSBApEg0KCUhFQVRfV0FWRRAq",
+            "Eg0KCVRXSU5FRURMRRArEg4KClBPSVNPTl9KQUIQLBIOCgpBRVJJQUxfQUNF",
+            "EC0SDQoJRFJJTExfUlVOEC4SEgoOUEVUQUxfQkxJWlpBUkQQLxIOCgpNRUdB",
+            "X0RSQUlOEDASDAoIQlVHX0JVWloQMRIPCgtQT0lTT05fRkFORxAyEg8KC05J",
+            "R0hUX1NMQVNIEDMSCQoFU0xBU0gQNBIPCgtCVUJCTEVfQkVBTRA1Eg4KClNV",
+            "Qk1JU1NJT04QNhIPCgtLQVJBVEVfQ0hPUBA3Eg0KCUxPV19TV0VFUBA4EgwK",
+            "CEFRVUFfSkVUEDkSDQoJQVFVQV9UQUlMEDoSDQoJU0VFRF9CT01CEDsSDAoI",
+            "UFNZU0hPQ0sQPBIOCgpST0NLX1RIUk9XED0SEQoNQU5DSUVOVF9QT1dFUhA+",
+            "Eg0KCVJPQ0tfVE9NQhA/Eg4KClJPQ0tfU0xJREUQQBINCglQT1dFUl9HRU0Q",
+            "QRIQCgxTSEFET1dfU05FQUsQQhIQCgxTSEFET1dfUFVOQ0gQQxIPCgtTSEFE",
+            "T1dfQ0xBVxBEEhAKDE9NSU5PVVNfV0lORBBFEg8KC1NIQURPV19CQUxMEEYS",
+            "EAoMQlVMTEVUX1BVTkNIEEcSDwoLTUFHTkVUX0JPTUIQSBIOCgpTVEVFTF9X",
+            "SU5HEEkSDQoJSVJPTl9IRUFEEEoSFAoQUEFSQUJPTElDX0NIQVJHRRBLEgkK",
+            "BVNQQVJLEEwSEQoNVEhVTkRFUl9QVU5DSBBNEgsKB1RIVU5ERVIQThIPCgtU",
+            "SFVOREVSQk9MVBBPEgsKB1RXSVNURVIQUBIRCg1EUkFHT05fQlJFQVRIEFES",
+            "EAoMRFJBR09OX1BVTFNFEFISDwoLRFJBR09OX0NMQVcQUxITCg9ESVNBUk1J",
+            "TkdfVk9JQ0UQVBIRCg1EUkFJTklOR19LSVNTEFUSEgoOREFaWkxJTkdfR0xF",
+            "QU0QVhINCglNT09OQkxBU1QQVxIOCgpQTEFZX1JPVUdIEFgSEAoMQ1JPU1Nf",
+            "UE9JU09OEFkSDwoLU0xVREdFX0JPTUIQWhIPCgtTTFVER0VfV0FWRRBbEg0K",
+            "CUdVTktfU0hPVBBcEgwKCE1VRF9TSE9UEF0SDQoJQk9ORV9DTFVCEF4SDAoI",
+            "QlVMTERPWkUQXxIMCghNVURfQk9NQhBgEg8KC0ZVUllfQ1VUVEVSEGESDAoI",
+            "QlVHX0JJVEUQYhIPCgtTSUdOQUxfQkVBTRBjEg0KCVhfU0NJU1NPUhBkEhAK",
+            "DEZMQU1FX0NIQVJHRRBlEg8KC0ZMQU1FX0JVUlNUEGYSDgoKRklSRV9CTEFT",
+            "VBBnEgkKBUJSSU5FEGgSDwoLV0FURVJfUFVMU0UQaRIJCgVTQ0FMRBBqEg4K",
+            "CkhZRFJPX1BVTVAQaxILCgdQU1lDSElDEGwSDQoJUFNZU1RSSUtFEG0SDQoJ",
+            "SUNFX1NIQVJEEG4SDAoISUNZX1dJTkQQbxIQCgxGUk9TVF9CUkVBVEgQcBIK",
+            "CgZBQlNPUkIQcRIOCgpHSUdBX0RSQUlOEHISDgoKRklSRV9QVU5DSBBzEg4K",
+            "ClNPTEFSX0JFQU0QdBIOCgpMRUFGX0JMQURFEHUSDgoKUE9XRVJfV0hJUBB2",
+            "EgoKBlNQTEFTSBB3EggKBEFDSUQQeBIOCgpBSVJfQ1VUVEVSEHkSDQoJSFVS",
+            "UklDQU5FEHoSDwoLQlJJQ0tfQlJFQUsQexIHCgNDVVQQfBIJCgVTV0lGVBB9",
+            "Eg8KC0hPUk5fQVRUQUNLEH4SCQoFU1RPTVAQfxINCghIRUFEQlVUVBCAARIP",
+            "CgpIWVBFUl9GQU5HEIEBEgkKBFNMQU0QggESDgoJQk9EWV9TTEFNEIMBEgkK",
+            "BFJFU1QQhAESDQoIU1RSVUdHTEUQhQESFAoPU0NBTERfQkxBU1RPSVNFEIYB",
+            "EhkKFEhZRFJPX1BVTVBfQkxBU1RPSVNFEIcBEg8KCldSQVBfR1JFRU4QiAES",
+            "DgoJV1JBUF9QSU5LEIkBEhUKEEZVUllfQ1VUVEVSX0ZBU1QQyAESEgoNQlVH",
+            "X0JJVEVfRkFTVBDJARIOCglCSVRFX0ZBU1QQygESFgoRU1VDS0VSX1BVTkNI",
+            "X0ZBU1QQywESFwoSRFJBR09OX0JSRUFUSF9GQVNUEMwBEhcKElRIVU5ERVJf",
+            "U0hPQ0tfRkFTVBDNARIPCgpTUEFSS19GQVNUEM4BEhIKDUxPV19LSUNLX0ZB",
+            "U1QQzwESFQoQS0FSQVRFX0NIT1BfRkFTVBDQARIPCgpFTUJFUl9GQVNUENEB",
+            "EhUKEFdJTkdfQVRUQUNLX0ZBU1QQ0gESDgoJUEVDS19GQVNUENMBEg4KCUxJ",
+            "Q0tfRkFTVBDUARIVChBTSEFET1dfQ0xBV19GQVNUENUBEhMKDlZJTkVfV0hJ",
+            "UF9GQVNUENYBEhQKD1JBWk9SX0xFQUZfRkFTVBDXARISCg1NVURfU0hPVF9G",
+            "QVNUENgBEhMKDklDRV9TSEFSRF9GQVNUENkBEhYKEUZST1NUX0JSRUFUSF9G",
+            "QVNUENoBEhYKEVFVSUNLX0FUVEFDS19GQVNUENsBEhEKDFNDUkFUQ0hfRkFT",
+            "VBDcARIQCgtUQUNLTEVfRkFTVBDdARIPCgpQT1VORF9GQVNUEN4BEg0KCENV",
+            "VF9GQVNUEN8BEhQKD1BPSVNPTl9KQUJfRkFTVBDgARIOCglBQ0lEX0ZBU1QQ",
+            "4QESFAoPUFNZQ0hPX0NVVF9GQVNUEOIBEhQKD1JPQ0tfVEhST1dfRkFTVBDj",
+            "ARIUCg9NRVRBTF9DTEFXX0ZBU1QQ5AESFgoRQlVMTEVUX1BVTkNIX0ZBU1QQ",
+            "5QESEwoOV0FURVJfR1VOX0ZBU1QQ5gESEAoLU1BMQVNIX0ZBU1QQ5wESHQoY",
+            "V0FURVJfR1VOX0ZBU1RfQkxBU1RPSVNFEOgBEhIKDU1VRF9TTEFQX0ZBU1QQ",
+            "6QESFgoRWkVOX0hFQURCVVRUX0ZBU1QQ6gESEwoOQ09ORlVTSU9OX0ZBU1QQ",
+            "6wESFgoRUE9JU09OX1NUSU5HX0ZBU1QQ7AESEAoLQlVCQkxFX0ZBU1QQ7QES",
+            "FgoRRkVJTlRfQVRUQUNLX0ZBU1QQ7gESFAoPU1RFRUxfV0lOR19GQVNUEO8B",
+            "EhMKDkZJUkVfRkFOR19GQVNUEPABEhQKD1JPQ0tfU01BU0hfRkFTVBDxASrH",
+            "BQoGSXRlbUlkEhAKDElURU1fVU5LTk9XThAAEhIKDklURU1fUE9LRV9CQUxM",
+            "EAESEwoPSVRFTV9HUkVBVF9CQUxMEAISEwoPSVRFTV9VTFRSQV9CQUxMEAMS",
+            "FAoQSVRFTV9NQVNURVJfQkFMTBAEEg8KC0lURU1fUE9USU9OEGUSFQoRSVRF",
+            "TV9TVVBFUl9QT1RJT04QZhIVChFJVEVNX0hZUEVSX1BPVElPThBnEhMKD0lU",
+            "RU1fTUFYX1BPVElPThBoEhAKC0lURU1fUkVWSVZFEMkBEhQKD0lURU1fTUFY",
+            "X1JFVklWRRDKARITCg5JVEVNX0xVQ0tZX0VHRxCtAhIaChVJVEVNX0lOQ0VO",
+            "U0VfT1JESU5BUlkQkQMSFwoSSVRFTV9JTkNFTlNFX1NQSUNZEJIDEhYKEUlU",
+            "RU1fSU5DRU5TRV9DT09MEJMDEhgKE0lURU1fSU5DRU5TRV9GTE9SQUwQlAMS",
+            "EwoOSVRFTV9UUk9ZX0RJU0sQ9QMSEgoNSVRFTV9YX0FUVEFDSxDaBBITCg5J",
+            "VEVNX1hfREVGRU5TRRDbBBITCg5JVEVNX1hfTUlSQUNMRRDcBBIUCg9JVEVN",
+            "X1JBWlpfQkVSUlkQvQUSFAoPSVRFTV9CTFVLX0JFUlJZEL4FEhUKEElURU1f",
+            "TkFOQUJfQkVSUlkQvwUSFQoQSVRFTV9XRVBBUl9CRVJSWRDABRIVChBJVEVN",
+            "X1BJTkFQX0JFUlJZEMEFEhgKE0lURU1fU1BFQ0lBTF9DQU1FUkEQoQYSIwoe",
+            "SVRFTV9JTkNVQkFUT1JfQkFTSUNfVU5MSU1JVEVEEIUHEhkKFElURU1fSU5D",
+            "VUJBVE9SX0JBU0lDEIYHEiEKHElURU1fUE9LRU1PTl9TVE9SQUdFX1VQR1JB",
+            "REUQ6QcSHgoZSVRFTV9JVEVNX1NUT1JBR0VfVVBHUkFERRDqBypiChRJbnZl",
+            "bnRvcnlVcGdyYWRlVHlwZRIRCg1VUEdSQURFX1VOU0VUEAASGQoVSU5DUkVB",
+            "U0VfSVRFTV9TVE9SQUdFEAESHAoYSU5DUkVBU0VfUE9LRU1PTl9TVE9SQUdF",
+            "EAIqPwoQRWdnSW5jdWJhdG9yVHlwZRITCg9JTkNVQkFUT1JfVU5TRVQQABIW",
+            "ChJJTkNVQkFUT1JfRElTVEFOQ0UQASrdDAoPUG9rZW1vbkZhbWlseUlkEhAK",
+            "DEZBTUlMWV9VTlNFVBAAEhQKEEZBTUlMWV9CVUxCQVNBVVIQARIVChFGQU1J",
+            "TFlfQ0hBUk1BTkRFUhAEEhMKD0ZBTUlMWV9TUVVJUlRMRRAHEhMKD0ZBTUlM",
+            "WV9DQVRFUlBJRRAKEhEKDUZBTUlMWV9XRUVETEUQDRIRCg1GQU1JTFlfUElE",
+            "R0VZEBASEgoORkFNSUxZX1JBVFRBVEEQExISCg5GQU1JTFlfU1BFQVJPVxAV",
+            "EhAKDEZBTUlMWV9FS0FOUxAXEhIKDkZBTUlMWV9QSUtBQ0hVEBkSFAoQRkFN",
+            "SUxZX1NBTkRTSFJFVxAbEhIKDkZBTUlMWV9OSURPUkFOEB0SEwoPRkFNSUxZ",
+            "X05JRE9SQU4yECASEwoPRkFNSUxZX0NMRUZBSVJZECMSEQoNRkFNSUxZX1ZV",
+            "TFBJWBAlEhUKEUZBTUlMWV9KSUdHTFlQVUZGECcSEAoMRkFNSUxZX1pVQkFU",
+            "ECkSEQoNRkFNSUxZX09ERElTSBArEhAKDEZBTUlMWV9QQVJBUxAuEhIKDkZB",
+            "TUlMWV9WRU5PTkFUEDASEgoORkFNSUxZX0RJR0xFVFQQMhIRCg1GQU1JTFlf",
+            "TUVPV1RIEDQSEgoORkFNSUxZX1BTWURVQ0sQNhIRCg1GQU1JTFlfTUFOS0VZ",
+            "EDgSFAoQRkFNSUxZX0dST1dMSVRIRRA6EhIKDkZBTUlMWV9QT0xJV0FHEDwS",
+            "DwoLRkFNSUxZX0FCUkEQPxIRCg1GQU1JTFlfTUFDSE9QEEISFQoRRkFNSUxZ",
+            "X0JFTExTUFJPVVQQRRIUChBGQU1JTFlfVEVOVEFDT09MEEgSEgoORkFNSUxZ",
+            "X0dFT0RVREUQShIRCg1GQU1JTFlfUE9OWVRBEE0SEwoPRkFNSUxZX1NMT1dQ",
+            "T0tFEE8SFAoQRkFNSUxZX01BR05FTUlURRBREhQKEEZBTUlMWV9GQVJGRVRD",
+            "SEQQUxIQCgxGQU1JTFlfRE9EVU8QVBIPCgtGQU1JTFlfU0VFTBBWEhEKDUZB",
+            "TUlMWV9HUklNRVIQWBITCg9GQU1JTFlfU0hFTExERVIQWhIRCg1GQU1JTFlf",
+            "R0FTVExZEFwSDwoLRkFNSUxZX09OSVgQXxISCg5GQU1JTFlfRFJPV1pFRRBg",
+            "EhEKDUZBTUlMWV9LUkFCQlkQYhISCg5GQU1JTFlfVk9MVE9SQhBkEhQKEEZB",
+            "TUlMWV9FWEVHR0NVVEUQZhIRCg1GQU1JTFlfQ1VCT05FEGgSFAoQRkFNSUxZ",
+            "X0hJVE1PTkxFRRBqEhUKEUZBTUlMWV9ISVRNT05DSEFOEGsSFAoQRkFNSUxZ",
+            "X0xJQ0tJVFVORxBsEhIKDkZBTUlMWV9LT0ZGSU5HEG0SEgoORkFNSUxZX1JI",
+            "WUhPUk4QbxISCg5GQU1JTFlfQ0hBTlNFWRBxEhIKDkZBTUlMWV9UQU5HRUxB",
+            "EHISFQoRRkFNSUxZX0tBTkdBU0tIQU4QcxIRCg1GQU1JTFlfSE9SU0VBEHQS",
+            "EgoORkFNSUxZX0dPTERFRU4QdhIRCg1GQU1JTFlfU1RBUllVEHgSEgoORkFN",
+            "SUxZX01SX01JTUUQehISCg5GQU1JTFlfU0NZVEhFUhB7Eg8KC0ZBTUlMWV9K",
+            "WU5YEHwSFQoRRkFNSUxZX0VMRUNUQUJVWloQfRIRCg1GQU1JTFlfTUFHTUFS",
+            "EH4SEQoNRkFNSUxZX1BJTlNJUhB/EhIKDUZBTUlMWV9UQVVST1MQgAESFAoP",
+            "RkFNSUxZX01BR0lLQVJQEIEBEhIKDUZBTUlMWV9MQVBSQVMQgwESEQoMRkFN",
+            "SUxZX0RJVFRPEIQBEhEKDEZBTUlMWV9FRVZFRRCFARITCg5GQU1JTFlfUE9S",
+            "WUdPThCJARITCg5GQU1JTFlfT01BTllURRCKARISCg1GQU1JTFlfS0FCVVRP",
+            "EIwBEhYKEUZBTUlMWV9BRVJPREFDVFlMEI4BEhMKDkZBTUlMWV9TTk9STEFY",
+            "EI8BEhQKD0ZBTUlMWV9BUlRJQ1VOTxCQARISCg1GQU1JTFlfWkFQRE9TEJEB",
+            "EhMKDkZBTUlMWV9NT0xUUkVTEJIBEhMKDkZBTUlMWV9EUkFUSU5JEJMBEhIK",
+            "DUZBTUlMWV9NRVdUV08QlgESDwoKRkFNSUxZX01FVxCXASpFChBNYXBPYmpl",
+            "Y3RzU3RhdHVzEhAKDFVOU0VUX1NUQVRVUxAAEgsKB1NVQ0NFU1MQARISCg5M",
+            "T0NBVElPTl9VTlNFVBACKiMKCEZvcnRUeXBlEgcKA0dZTRAAEg4KCkNIRUNL",
+            "UE9JTlQQASqTEAoJUG9rZW1vbklkEg0KCU1JU1NJTkdOTxAAEg0KCUJVTEJB",
+            "U0FVUhABEgsKB0lWWVNBVVIQAhIMCghWRU5VU0FVUhADEg4KCkNIQVJNRU5E",
+            "RVIQBBIOCgpDSEFSTUVMRU9OEAUSDQoJQ0hBUklaQVJEEAYSDAoIU1FVSVJU",
+            "TEUQBxINCglXQVJUT1JUTEUQCBINCglCTEFTVE9JU0UQCRIMCghDQVRFUlBJ",
+            "RRAKEgsKB01FVEFQT0QQCxIOCgpCVVRURVJGUkVFEAwSCgoGV0VFRExFEA0S",
+            "CgoGS0FLVU5BEA4SDAoIQkVFRFJJTEwQDxIKCgZQSURHRVkQEBINCglQSURH",
+            "RU9UVE8QERILCgdQSURHRU9UEBISCwoHUkFUVEFUQRATEgwKCFJBVElDQVRF",
+            "EBQSCwoHU1BFQVJPVxAVEgoKBkZFQVJPVxAWEgkKBUVLQU5TEBcSCQoFQVJC",
+            "T0sQGBILCgdQSUtBQ0hVEBkSCgoGUkFJQ0hVEBoSDQoJU0FORFNIUkVXEBsS",
+            "DAoIU0FORExBU0gQHBISCg5OSURPUkFOX0ZFTUFMRRAdEgwKCE5JRE9SSU5B",
+            "EB4SDQoJTklET1FVRUVOEB8SEAoMTklET1JBTl9NQUxFECASDAoITklET1JJ",
+            "Tk8QIRIMCghOSURPS0lORxAiEgsKB0NMRUZBUlkQIxIMCghDTEVGQUJMRRAk",
+            "EgoKBlZVTFBJWBAlEg0KCU5JTkVUQUxFUxAmEg4KCkpJR0dMWVBVRkYQJxIO",
+            "CgpXSUdHTFlUVUZGECgSCQoFWlVCQVQQKRIKCgZHT0xCQVQQKhIKCgZPRERJ",
+            "U0gQKxIJCgVHTE9PTRAsEg0KCVZJTEVQTFVNRRAtEgkKBVBBUkFTEC4SDAoI",
+            "UEFSQVNFQ1QQLxILCgdWRU5PTkFUEDASDAoIVkVOT01PVEgQMRILCgdESUdM",
+            "RVRUEDISCwoHRFVHVFJJTxAzEgoKBk1FT1dUSBA0EgsKB1BFUlNJQU4QNRIL",
+            "CgdQU1lEVUNLEDYSCwoHR09MRFVDSxA3EgoKBk1BTktFWRA4EgwKCFBSSU1F",
+            "QVBFEDkSDQoJR1JPV0xJVEhFEDoSDAoIQVJDQU5JTkUQOxILCgdQT0xJV0FH",
+            "EDwSDQoJUE9MSVdISVJMED0SDQoJUE9MSVdSQVRIED4SCAoEQUJSQRA/EgsK",
+            "B0tBREFCUkEQQBINCglBTEFLSEFaQU0QQRIKCgZNQUNIT1AQQhILCgdNQUNI",
+            "T0tFEEMSCwoHTUFDSEFNUBBEEg4KCkJFTExTUFJPVVQQRRIOCgpXRUVQSU5C",
+            "RUxMEEYSDwoLVklDVFJFRUJFTEwQRxINCglURU5UQUNPT0wQSBIOCgpURU5U",
+            "QUNSVUVMEEkSCwoHR0VPRFVHRRBKEgwKCEdSQVZFTEVSEEsSCQoFR09MRU0Q",
+            "TBIKCgZQT05ZVEEQTRIMCghSQVBJREFTSBBOEgwKCFNMT1dQT0tFEE8SCwoH",
+            "U0xPV0JSTxBQEg0KCU1BR05FTUlURRBREgwKCE1BR05FVE9OEFISDQoJRkFS",
+            "RkVUQ0hEEFMSCQoFRE9EVU8QVBIKCgZET0RSSU8QVRIICgRTRUVMEFYSCwoH",
+            "REVXR09ORxBXEgoKBkdSSU1FUhBYEgcKA01VSxBZEgwKCFNIRUxMREVSEFoS",
+            "DAoIQ0xPWVNURVIQWxIKCgZHQVNUTFkQXBILCgdIQVVOVEVSEF0SCgoGR0VO",
+            "R0FSEF4SCAoET05JWBBfEgsKB0RST1daRUUQYBIJCgVIWVBOTxBhEgoKBktS",
+            "QUJCWRBiEgsKB0tJTkdMRVIQYxILCgdWT0xUT1JCEGQSDQoJRUxFQ1RST0RF",
+            "EGUSDQoJRVhFR0dDVVRFEGYSDQoJRVhFR0dVVE9SEGcSCgoGQ1VCT05FEGgS",
+            "CwoHTUFST1dBSxBpEg0KCUhJVE1PTkxFRRBqEg4KCkhJVE1PTkNIQU4QaxIN",
+            "CglMSUNLSVRVTkcQbBILCgdLT0ZGSU5HEG0SCwoHV0VFWklORxBuEgsKB1JI",
+            "WUhPUk4QbxIKCgZSSFlET04QcBILCgdDSEFOU0VZEHESCwoHVEFOR0VMQRBy",
+            "Eg4KCktBTkdBU0tIQU4QcxIKCgZIT1JTRUEQdBIKCgZTRUFEUkEQdRILCgdH",
+            "T0xERUVOEHYSCwoHU0VBS0lORxB3EgoKBlNUQVJZVRB4EgsKB1NUQVJNSUUQ",
+            "eRILCgdNUl9NSU1FEHoSCwoHU0NZVEhFUhB7EggKBEpZTlgQfBIOCgpFTEVD",
+            "VEFCVVpaEH0SCgoGTUFHTUFSEH4SCgoGUElOU0lSEH8SCwoGVEFVUk9TEIAB",
+            "Eg0KCE1BR0lLQVJQEIEBEg0KCEdZQVJBRE9TEIIBEgsKBkxBUFJBUxCDARIK",
+            "CgVESVRUTxCEARIKCgVFRVZFRRCFARINCghWQVBPUkVPThCGARIMCgdKT0xU",
+            "RU9OEIcBEgwKB0ZMQVJFT04QiAESDAoHUE9SWUdPThCJARIMCgdPTUFOWVRF",
+            "EIoBEgwKB09NQVNUQVIQiwESCwoGS0FCVVRPEIwBEg0KCEtBQlVUT1BTEI0B",
+            "Eg8KCkFFUk9EQUNUWUwQjgESDAoHU05PUkxBWBCPARINCghBUlRJQ1VOTxCQ",
+            "ARILCgZaQVBET1MQkQESDAoHTU9MVFJFUxCSARIMCgdEUkFUSU5JEJMBEg4K",
+            "CURSQUdPTkFJUhCUARIOCglEUkFHT05JVEUQlQESCwoGTUVXVFdPEJYBEggK",
+            "A01FVxCXASpCCgtGb3J0U3BvbnNvchIRCg1VTlNFVF9TUE9OU09SEAASDQoJ",
+            "TUNET05BTERTEAESEQoNUE9LRU1PTl9TVE9SRRACKjMKEUZvcnRSZW5kZXJp",
+            "bmdUeXBlEgsKB0RFRkFVTFQQABIRCg1JTlRFUk5BTF9URVNUEAEqsgIKCEl0",
+            "ZW1UeXBlEhIKDklURU1fVFlQRV9OT05FEAASFgoSSVRFTV9UWVBFX1BPS0VC",
+            "QUxMEAESFAoQSVRFTV9UWVBFX1BPVElPThACEhQKEElURU1fVFlQRV9SRVZJ",
+            "VkUQAxIRCg1JVEVNX1RZUEVfTUFQEAQSFAoQSVRFTV9UWVBFX0JBVFRMRRAF",
+            "EhIKDklURU1fVFlQRV9GT09EEAYSFAoQSVRFTV9UWVBFX0NBTUVSQRAHEhIK",
+            "DklURU1fVFlQRV9ESVNLEAgSFwoTSVRFTV9UWVBFX0lOQ1VCQVRPUhAJEhUK",
+            "EUlURU1fVFlQRV9JTkNFTlNFEAoSFgoSSVRFTV9UWVBFX1hQX0JPT1NUEAsS",
+            "HwobSVRFTV9UWVBFX0lOVkVOVE9SWV9VUEdSQURFEAwq1gIKDEl0ZW1DYXRl",
+            "Z29yeRIWChJJVEVNX0NBVEVHT1JZX05PTkUQABIaChZJVEVNX0NBVEVHT1JZ",
+            "X1BPS0VCQUxMEAESFgoSSVRFTV9DQVRFR09SWV9GT09EEAISGgoWSVRFTV9D",
+            "QVRFR09SWV9NRURJQ0lORRADEhcKE0lURU1fQ0FURUdPUllfQk9PU1QQBBIa",
+            "ChZJVEVNX0NBVEVHT1JZX1VUSUxJVEVTEAUSGAoUSVRFTV9DQVRFR09SWV9D",
+            "QU1FUkEQBhIWChJJVEVNX0NBVEVHT1JZX0RJU0sQBxIbChdJVEVNX0NBVEVH",
+            "T1JZX0lOQ1VCQVRPUhAIEhkKFUlURU1fQ0FURUdPUllfSU5DRU5TRRAJEhoK",
+            "FklURU1fQ0FURUdPUllfWFBfQk9PU1QQChIjCh9JVEVNX0NBVEVHT1JZX0lO",
+            "VkVOVE9SWV9VUEdSQURFEAsqmAQKCkl0ZW1FZmZlY3QSFAoQSVRFTV9FRkZF",
+            "Q1RfTk9ORRAAEhwKF0lURU1fRUZGRUNUX0NBUF9OT19GTEVFEOgHEiAKG0lU",
+            "RU1fRUZGRUNUX0NBUF9OT19NT1ZFTUVOVBDqBxIeChlJVEVNX0VGRkVDVF9D",
+            "QVBfTk9fVEhSRUFUEOsHEh8KGklURU1fRUZGRUNUX0NBUF9UQVJHRVRfTUFY",
+            "EOwHEiAKG0lURU1fRUZGRUNUX0NBUF9UQVJHRVRfU0xPVxDtBxIhChxJVEVN",
+            "X0VGRkVDVF9DQVBfQ0hBTkNFX05JR0hUEO4HEiMKHklURU1fRUZGRUNUX0NB",
+            "UF9DSEFOQ0VfVFJBSU5FUhDvBxInCiJJVEVNX0VGRkVDVF9DQVBfQ0hBTkNF",
+            "X0ZJUlNUX1RIUk9XEPAHEiIKHUlURU1fRUZGRUNUX0NBUF9DSEFOQ0VfTEVH",
+            "RU5EEPEHEiEKHElURU1fRUZGRUNUX0NBUF9DSEFOQ0VfSEVBVlkQ8gcSIgod",
+            "SVRFTV9FRkZFQ1RfQ0FQX0NIQU5DRV9SRVBFQVQQ8wcSJwoiSVRFTV9FRkZF",
+            "Q1RfQ0FQX0NIQU5DRV9NVUxUSV9USFJPVxD0BxIiCh1JVEVNX0VGRkVDVF9D",
+            "QVBfQ0hBTkNFX0FMV0FZUxD1BxIoCiNJVEVNX0VGRkVDVF9DQVBfQ0hBTkNF",
+            "X1NJTkdMRV9USFJPVxD2ByrsBQoMQWN0aXZpdHlUeXBlEhQKEEFDVElWSVRZ",
+            "X1VOS05PV04QABIaChZBQ1RJVklUWV9DQVRDSF9QT0tFTU9OEAESIQodQUNU",
+            "SVZJVFlfQ0FUQ0hfTEVHRU5EX1BPS0VNT04QAhIZChVBQ1RJVklUWV9GTEVF",
+            "X1BPS0VNT04QAxIYChRBQ1RJVklUWV9ERUZFQVRfRk9SVBAEEhsKF0FDVElW",
+            "SVRZX0VWT0xWRV9QT0tFTU9OEAUSFgoSQUNUSVZJVFlfSEFUQ0hfRUdHEAYS",
+            "FAoQQUNUSVZJVFlfV0FMS19LTRAHEh4KGkFDVElWSVRZX1BPS0VERVhfRU5U",
+            "UllfTkVXEAgSHgoaQUNUSVZJVFlfQ0FUQ0hfRklSU1RfVEhST1cQCRIdChlB",
+            "Q1RJVklUWV9DQVRDSF9OSUNFX1RIUk9XEAoSHgoaQUNUSVZJVFlfQ0FUQ0hf",
+            "R1JFQVRfVEhST1cQCxIiCh5BQ1RJVklUWV9DQVRDSF9FWENFTExFTlRfVEhS",
+            "T1cQDBIcChhBQ1RJVklUWV9DQVRDSF9DVVJWRUJBTEwQDRIlCiFBQ1RJVklU",
+            "WV9DQVRDSF9GSVJTVF9DQVRDSF9PRl9EQVkQDhIcChhBQ1RJVklUWV9DQVRD",
+            "SF9NSUxFU1RPTkUQDxIaChZBQ1RJVklUWV9UUkFJTl9QT0tFTU9OEBASGAoU",
+            "QUNUSVZJVFlfU0VBUkNIX0ZPUlQQERIcChhBQ1RJVklUWV9SRUxFQVNFX1BP",
+            "S0VNT04QEhIiCh5BQ1RJVklUWV9IQVRDSF9FR0dfU01BTExfQk9OVVMQExIj",
+            "Ch9BQ1RJVklUWV9IQVRDSF9FR0dfTUVESVVNX0JPTlVTEBQSIgoeQUNUSVZJ",
+            "VFlfSEFUQ0hfRUdHX0xBUkdFX0JPTlVTEBUSIAocQUNUSVZJVFlfREVGRUFU",
+            "X0dZTV9ERUZFTkRFUhAWEh4KGkFDVElWSVRZX0RFRkVBVF9HWU1fTEVBREVS",
+            "EBcqoQcKCUJhZGdlVHlwZRIPCgtCQURHRV9VTlNFVBAAEhMKD0JBREdFX1RS",
+            "QVZFTF9LTRABEhkKFUJBREdFX1BPS0VERVhfRU5UUklFUxACEhcKE0JBREdF",
+            "X0NBUFRVUkVfVE9UQUwQAxIXChNCQURHRV9ERUZFQVRFRF9GT1JUEAQSFwoT",
+            "QkFER0VfRVZPTFZFRF9UT1RBTBAFEhcKE0JBREdFX0hBVENIRURfVE9UQUwQ",
+            "BhIbChdCQURHRV9FTkNPVU5URVJFRF9UT1RBTBAHEhsKF0JBREdFX1BPS0VT",
+            "VE9QU19WSVNJVEVEEAgSGgoWQkFER0VfVU5JUVVFX1BPS0VTVE9QUxAJEhkK",
+            "FUJBREdFX1BPS0VCQUxMX1RIUk9XThAKEhYKEkJBREdFX0JJR19NQUdJS0FS",
+            "UBALEhgKFEJBREdFX0RFUExPWUVEX1RPVEFMEAwSGwoXQkFER0VfQkFUVExF",
+            "X0FUVEFDS19XT04QDRIdChlCQURHRV9CQVRUTEVfVFJBSU5JTkdfV09OEA4S",
+            "GwoXQkFER0VfQkFUVExFX0RFRkVORF9XT04QDxIZChVCQURHRV9QUkVTVElH",
+            "RV9SQUlTRUQQEBIaChZCQURHRV9QUkVTVElHRV9EUk9QUEVEEBESFQoRQkFE",
+            "R0VfVFlQRV9OT1JNQUwQEhIXChNCQURHRV9UWVBFX0ZJR0hUSU5HEBMSFQoR",
+            "QkFER0VfVFlQRV9GTFlJTkcQFBIVChFCQURHRV9UWVBFX1BPSVNPThAVEhUK",
+            "EUJBREdFX1RZUEVfR1JPVU5EEBYSEwoPQkFER0VfVFlQRV9ST0NLEBcSEgoO",
+            "QkFER0VfVFlQRV9CVUcQGBIUChBCQURHRV9UWVBFX0dIT1NUEBkSFAoQQkFE",
+            "R0VfVFlQRV9TVEVFTBAaEhMKD0JBREdFX1RZUEVfRklSRRAbEhQKEEJBREdF",
+            "X1RZUEVfV0FURVIQHBIUChBCQURHRV9UWVBFX0dSQVNTEB0SFwoTQkFER0Vf",
+            "VFlQRV9FTEVDVFJJQxAeEhYKEkJBREdFX1RZUEVfUFNZQ0hJQxAfEhIKDkJB",
+            "REdFX1RZUEVfSUNFECASFQoRQkFER0VfVFlQRV9EUkFHT04QIRITCg9CQURH",
+            "RV9UWVBFX0RBUksQIhIUChBCQURHRV9UWVBFX0ZBSVJZECMSFwoTQkFER0Vf",
+            "U01BTExfUkFUVEFUQRAkEhEKDUJBREdFX1BJS0FDSFUQJSqUAQoTSG9sb0lh",
+            "cEl0ZW1DYXRlZ29yeRIVChFJQVBfQ0FURUdPUllfTk9ORRAAEhcKE0lBUF9D",
+            "QVRFR09SWV9CVU5ETEUQARIWChJJQVBfQ0FURUdPUllfSVRFTVMQAhIZChVJ",
+            "QVBfQ0FURUdPUllfVVBHUkFERVMQAxIaChZJQVBfQ0FURUdPUllfUE9LRUNP",
+            "SU5TEAQqlgEKE0NhbWVyYUludGVycG9sYXRpb24SEgoOQ0FNX0lOVEVSUF9D",
+            "VVQQABIVChFDQU1fSU5URVJQX0xJTkVBUhABEhUKEUNBTV9JTlRFUlBfU01P",
+            "T1RIEAISJQohQ0FNX0lOVEVSUF9TTU9PVEhfUk9UX0xJTkVBUl9NT1ZFEAMS",
+            "FgoSQ0FNX0lOVEVSUF9ERVBFTkRTEAQq/AMKDENhbWVyYVRhcmdldBIXChND",
+            "QU1fVEFSR0VUX0FUVEFDS0VSEAASHAoYQ0FNX1RBUkdFVF9BVFRBQ0tFUl9F",
+            "REdFEAESHgoaQ0FNX1RBUkdFVF9BVFRBQ0tFUl9HUk9VTkQQAhIXChNDQU1f",
+            "VEFSR0VUX0RFRkVOREVSEAMSHAoYQ0FNX1RBUkdFVF9ERUZFTkRFUl9FREdF",
+            "EAQSHgoaQ0FNX1RBUkdFVF9ERUZFTkRFUl9HUk9VTkQQBRIgChxDQU1fVEFS",
+            "R0VUX0FUVEFDS0VSX0RFRkVOREVSEAYSJQohQ0FNX1RBUkdFVF9BVFRBQ0tF",
+            "Ul9ERUZFTkRFUl9FREdFEAcSIAocQ0FNX1RBUkdFVF9ERUZFTkRFUl9BVFRB",
+            "Q0tFUhAIEiUKIUNBTV9UQVJHRVRfREVGRU5ERVJfQVRUQUNLRVJfRURHRRAJ",
+            "EicKI0NBTV9UQVJHRVRfQVRUQUNLRVJfREVGRU5ERVJfTUlSUk9SEAsSKQol",
+            "Q0FNX1RBUkdFVF9TSE9VTERFUl9BVFRBQ0tFUl9ERUZFTkRFUhAMEjAKLENB",
+            "TV9UQVJHRVRfU0hPVUxERVJfQVRUQUNLRVJfREVGRU5ERVJfTUlSUk9SEA0S",
+            "JgoiQ0FNX1RBUkdFVF9BVFRBQ0tFUl9ERUZFTkRFUl9XT1JMRBAOKtoDCgtQ",
+            "b2tlbW9uVHlwZRIVChFQT0tFTU9OX1RZUEVfTk9ORRAAEhcKE1BPS0VNT05f",
+            "VFlQRV9OT1JNQUwQARIZChVQT0tFTU9OX1RZUEVfRklHSFRJTkcQAhIXChNQ",
+            "T0tFTU9OX1RZUEVfRkxZSU5HEAMSFwoTUE9LRU1PTl9UWVBFX1BPSVNPThAE",
+            "EhcKE1BPS0VNT05fVFlQRV9HUk9VTkQQBRIVChFQT0tFTU9OX1RZUEVfUk9D",
+            "SxAGEhQKEFBPS0VNT05fVFlQRV9CVUcQBxIWChJQT0tFTU9OX1RZUEVfR0hP",
+            "U1QQCBIWChJQT0tFTU9OX1RZUEVfU1RFRUwQCRIVChFQT0tFTU9OX1RZUEVf",
+            "RklSRRAKEhYKElBPS0VNT05fVFlQRV9XQVRFUhALEhYKElBPS0VNT05fVFlQ",
+            "RV9HUkFTUxAMEhkKFVBPS0VNT05fVFlQRV9FTEVDVFJJQxANEhgKFFBPS0VN",
+            "T05fVFlQRV9QU1lDSElDEA4SFAoQUE9LRU1PTl9UWVBFX0lDRRAPEhcKE1BP",
+            "S0VNT05fVFlQRV9EUkFHT04QEBIVChFQT0tFTU9OX1RZUEVfREFSSxAREhYK",
+            "ElBPS0VNT05fVFlQRV9GQUlSWRASKq0BChNQb2tlbW9uTW92ZW1lbnRUeXBl",
+            "EhMKD01PVkVNRU5UX1NUQVRJQxAAEhEKDU1PVkVNRU5UX0pVTVAQARIVChFN",
+            "T1ZFTUVOVF9WRVJUSUNBTBACEhQKEE1PVkVNRU5UX1BTWUNISUMQAxIVChFN",
+            "T1ZFTUVOVF9FTEVDVFJJQxAEEhMKD01PVkVNRU5UX0ZMWUlORxAFEhUKEU1P",
+            "VkVNRU5UX0hPVkVSSU5HEAYqNQoMUG9rZW1vbkNsYXNzEgoKBk5PUk1BTBAA",
+            "Eg0KCUxFR0VOREFSWRABEgoKBk1ZVEhJQxACYgZwcm90bzM="));
+      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+          new pbr::FileDescriptor[] { },
+          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AllEnum.RpcDirection), typeof(global::AllEnum.TeamColor), typeof(global::AllEnum.RequestMethod), typeof(global::AllEnum.PokemonMove), typeof(global::AllEnum.ItemId), typeof(global::AllEnum.InventoryUpgradeType), typeof(global::AllEnum.EggIncubatorType), typeof(global::AllEnum.PokemonFamilyId), typeof(global::AllEnum.MapObjectsStatus), typeof(global::AllEnum.FortType), typeof(global::AllEnum.PokemonId), typeof(global::AllEnum.FortSponsor), typeof(global::AllEnum.FortRenderingType), typeof(global::AllEnum.ItemType), typeof(global::AllEnum.ItemCategory), typeof(global::AllEnum.ItemEffect), typeof(global::AllEnum.ActivityType), typeof(global::AllEnum.BadgeType), typeof(global::AllEnum.HoloIapItemCategory), typeof(global::AllEnum.CameraInterpolation), typeof(global::AllEnum.CameraTarget), typeof(global::AllEnum.PokemonType), typeof(global::AllEnum.PokemonMovementType), typeof(global::AllEnum.PokemonClass), }, null));
+    }
+    #endregion
+
+  }
+  #region Enums
+  public enum RpcDirection {
+    [pbr::OriginalName("UNKNOWN")] Unknown = 0,
+    [pbr::OriginalName("RESPONSE")] Response = 1,
+    [pbr::OriginalName("REQUEST")] Request = 2,
+  }
+
+  public enum TeamColor {
+    [pbr::OriginalName("NEUTRAL")] Neutral = 0,
+    [pbr::OriginalName("BLUE")] Blue = 1,
+    [pbr::OriginalName("RED")] Red = 2,
+    [pbr::OriginalName("YELLOW")] Yellow = 3,
+  }
+
+  public enum RequestMethod {
+    [pbr::OriginalName("METHOD_UNSET")] MethodUnset = 0,
+    [pbr::OriginalName("PLAYER_UPDATE")] PlayerUpdate = 1,
+    [pbr::OriginalName("GET_PLAYER")] GetPlayer = 2,
+    [pbr::OriginalName("GET_INVENTORY")] GetInventory = 4,
+    [pbr::OriginalName("DOWNLOAD_SETTINGS")] DownloadSettings = 5,
+    [pbr::OriginalName("DOWNLOAD_ITEM_TEMPLATES")] DownloadItemTemplates = 6,
+    [pbr::OriginalName("DOWNLOAD_REMOTE_CONFIG_VERSION")] DownloadRemoteConfigVersion = 7,
+    [pbr::OriginalName("FORT_SEARCH")] FortSearch = 101,
+    [pbr::OriginalName("ENCOUNTER")] Encounter = 102,
+    [pbr::OriginalName("CATCH_POKEMON")] CatchPokemon = 103,
+    [pbr::OriginalName("FORT_DETAILS")] FortDetails = 104,
+    [pbr::OriginalName("ITEM_USE")] ItemUse = 105,
+    [pbr::OriginalName("GET_MAP_OBJECTS")] GetMapObjects = 106,
+    [pbr::OriginalName("FORT_DEPLOY_POKEMON")] FortDeployPokemon = 110,
+    [pbr::OriginalName("FORT_RECALL_POKEMON")] FortRecallPokemon = 111,
+    [pbr::OriginalName("RELEASE_POKEMON")] ReleasePokemon = 112,
+    [pbr::OriginalName("USE_ITEM_POTION")] UseItemPotion = 113,
+    [pbr::OriginalName("USE_ITEM_CAPTURE")] UseItemCapture = 114,
+    [pbr::OriginalName("USE_ITEM_FLEE")] UseItemFlee = 115,
+    [pbr::OriginalName("USE_ITEM_REVIVE")] UseItemRevive = 116,
+    [pbr::OriginalName("TRADE_SEARCH")] TradeSearch = 117,
+    [pbr::OriginalName("TRADE_OFFER")] TradeOffer = 118,
+    [pbr::OriginalName("TRADE_RESPONSE")] TradeResponse = 119,
+    [pbr::OriginalName("TRADE_RESULT")] TradeResult = 120,
+    [pbr::OriginalName("GET_PLAYER_PROFILE")] GetPlayerProfile = 121,
+    [pbr::OriginalName("GET_ITEM_PACK")] GetItemPack = 122,
+    [pbr::OriginalName("BUY_ITEM_PACK")] BuyItemPack = 123,
+    [pbr::OriginalName("BUY_GEM_PACK")] BuyGemPack = 124,
+    [pbr::OriginalName("EVOLVE_POKEMON")] EvolvePokemon = 125,
+    [pbr::OriginalName("GET_HATCHED_EGGS")] GetHatchedEggs = 126,
+    [pbr::OriginalName("ENCOUNTER_TUTORIAL_COMPLETE")] EncounterTutorialComplete = 127,
+    [pbr::OriginalName("LEVEL_UP_REWARDS")] LevelUpRewards = 128,
+    [pbr::OriginalName("CHECK_AWARDED_BADGES")] CheckAwardedBadges = 129,
+    [pbr::OriginalName("USE_ITEM_GYM")] UseItemGym = 133,
+    [pbr::OriginalName("GET_GYM_DETAILS")] GetGymDetails = 134,
+    [pbr::OriginalName("START_GYM_BATTLE")] StartGymBattle = 135,
+    [pbr::OriginalName("ATTACK_GYM")] AttackGym = 136,
+    [pbr::OriginalName("RECYCLE_INVENTORY_ITEM")] RecycleInventoryItem = 137,
+    [pbr::OriginalName("COLLECT_DAILY_BONUS")] CollectDailyBonus = 138,
+    [pbr::OriginalName("USE_ITEM_XP_BOOST")] UseItemXpBoost = 139,
+    [pbr::OriginalName("USE_ITEM_EGG_INCUBATOR")] UseItemEggIncubator = 140,
+    [pbr::OriginalName("USE_INCENSE")] UseIncense = 141,
+    [pbr::OriginalName("GET_INCENSE_POKEMON")] GetIncensePokemon = 142,
+    [pbr::OriginalName("INCENSE_ENCOUNTER")] IncenseEncounter = 143,
+    [pbr::OriginalName("ADD_FORT_MODIFIER")] AddFortModifier = 144,
+    [pbr::OriginalName("DISK_ENCOUNTER")] DiskEncounter = 145,
+    [pbr::OriginalName("COLLECT_DAILY_DEFENDER_BONUS")] CollectDailyDefenderBonus = 146,
+    [pbr::OriginalName("UPGRADE_POKEMON")] UpgradePokemon = 147,
+    [pbr::OriginalName("SET_FAVORITE_POKEMON")] SetFavoritePokemon = 148,
+    [pbr::OriginalName("NICKNAME_POKEMON")] NicknamePokemon = 149,
+    [pbr::OriginalName("EQUIP_BADGE")] EquipBadge = 150,
+    [pbr::OriginalName("SET_CONTACT_SETTINGS")] SetContactSettings = 151,
+    [pbr::OriginalName("GET_ASSET_DIGEST")] GetAssetDigest = 300,
+    [pbr::OriginalName("GET_DOWNLOAD_URLS")] GetDownloadUrls = 301,
+    [pbr::OriginalName("GET_SUGGESTED_CODENAMES")] GetSuggestedCodenames = 401,
+    [pbr::OriginalName("CHECK_CODENAME_AVAILABLE")] CheckCodenameAvailable = 402,
+    [pbr::OriginalName("CLAIM_CODENAME")] ClaimCodename = 403,
+    [pbr::OriginalName("SET_AVATAR")] SetAvatar = 404,
+    [pbr::OriginalName("SET_PLAYER_TEAM")] SetPlayerTeam = 405,
+    [pbr::OriginalName("MARK_TUTORIAL_COMPLETE")] MarkTutorialComplete = 406,
+    [pbr::OriginalName("LOAD_SPAWN_POINTS")] LoadSpawnPoints = 500,
+    [pbr::OriginalName("ECHO")] Echo = 666,
+    [pbr::OriginalName("DEBUG_UPDATE_INVENTORY")] DebugUpdateInventory = 700,
+    [pbr::OriginalName("DEBUG_DELETE_PLAYER")] DebugDeletePlayer = 701,
+    [pbr::OriginalName("SFIDA_REGISTRATION")] SfidaRegistration = 800,
+    [pbr::OriginalName("SFIDA_ACTION_LOG")] SfidaActionLog = 801,
+    [pbr::OriginalName("SFIDA_CERTIFICATION")] SfidaCertification = 802,
+    [pbr::OriginalName("SFIDA_UPDATE")] SfidaUpdate = 803,
+    [pbr::OriginalName("SFIDA_ACTION")] SfidaAction = 804,
+    [pbr::OriginalName("SFIDA_DOWSER")] SfidaDowser = 805,
+    [pbr::OriginalName("SFIDA_CAPTURE")] SfidaCapture = 806,
+  }
+
+  public enum PokemonMove {
+    [pbr::OriginalName("MOVE_UNSET")] MoveUnset = 0,
+    [pbr::OriginalName("THUNDER_SHOCK")] ThunderShock = 1,
+    [pbr::OriginalName("QUICK_ATTACK")] QuickAttack = 2,
+    [pbr::OriginalName("SCRATCH")] Scratch = 3,
+    [pbr::OriginalName("EMBER")] Ember = 4,
+    [pbr::OriginalName("VINE_WHIP")] VineWhip = 5,
+    [pbr::OriginalName("TACKLE")] Tackle = 6,
+    [pbr::OriginalName("RAZOR_LEAF")] RazorLeaf = 7,
+    [pbr::OriginalName("TAKE_DOWN")] TakeDown = 8,
+    [pbr::OriginalName("WATER_GUN")] WaterGun = 9,
+    [pbr::OriginalName("BITE")] Bite = 10,
+    [pbr::OriginalName("POUND")] Pound = 11,
+    [pbr::OriginalName("DOUBLE_SLAP")] DoubleSlap = 12,
+    [pbr::OriginalName("WRAP")] Wrap = 13,
+    [pbr::OriginalName("HYPER_BEAM")] HyperBeam = 14,
+    [pbr::OriginalName("LICK")] Lick = 15,
+    [pbr::OriginalName("DARK_PULSE")] DarkPulse = 16,
+    [pbr::OriginalName("SMOG")] Smog = 17,
+    [pbr::OriginalName("SLUDGE")] Sludge = 18,
+    [pbr::OriginalName("METAL_CLAW")] MetalClaw = 19,
+    [pbr::OriginalName("VICE_GRIP")] ViceGrip = 20,
+    [pbr::OriginalName("FLAME_WHEEL")] FlameWheel = 21,
+    [pbr::OriginalName("MEGAHORN")] Megahorn = 22,
+    [pbr::OriginalName("WING_ATTACK")] WingAttack = 23,
+    [pbr::OriginalName("FLAMETHROWER")] Flamethrower = 24,
+    [pbr::OriginalName("SUCKER_PUNCH")] SuckerPunch = 25,
+    [pbr::OriginalName("DIG")] Dig = 26,
+    [pbr::OriginalName("LOW_KICK")] LowKick = 27,
+    [pbr::OriginalName("CROSS_CHOP")] CrossChop = 28,
+    [pbr::OriginalName("PSYCHO_CUT")] PsychoCut = 29,
+    [pbr::OriginalName("PSYBEAM")] Psybeam = 30,
+    [pbr::OriginalName("EARTHQUAKE")] Earthquake = 31,
+    [pbr::OriginalName("STONE_EDGE")] StoneEdge = 32,
+    [pbr::OriginalName("ICE_PUNCH")] IcePunch = 33,
+    [pbr::OriginalName("HEART_STAMP")] HeartStamp = 34,
+    [pbr::OriginalName("DISCHARGE")] Discharge = 35,
+    [pbr::OriginalName("FLASH_CANNON")] FlashCannon = 36,
+    [pbr::OriginalName("PECK")] Peck = 37,
+    [pbr::OriginalName("DRILL_PECK")] DrillPeck = 38,
+    [pbr::OriginalName("ICE_BEAM")] IceBeam = 39,
+    [pbr::OriginalName("BLIZZARD")] Blizzard = 40,
+    [pbr::OriginalName("AIR_SLASH")] AirSlash = 41,
+    [pbr::OriginalName("HEAT_WAVE")] HeatWave = 42,
+    [pbr::OriginalName("TWINEEDLE")] Twineedle = 43,
+    [pbr::OriginalName("POISON_JAB")] PoisonJab = 44,
+    [pbr::OriginalName("AERIAL_ACE")] AerialAce = 45,
+    [pbr::OriginalName("DRILL_RUN")] DrillRun = 46,
+    [pbr::OriginalName("PETAL_BLIZZARD")] PetalBlizzard = 47,
+    [pbr::OriginalName("MEGA_DRAIN")] MegaDrain = 48,
+    [pbr::OriginalName("BUG_BUZZ")] BugBuzz = 49,
+    [pbr::OriginalName("POISON_FANG")] PoisonFang = 50,
+    [pbr::OriginalName("NIGHT_SLASH")] NightSlash = 51,
+    [pbr::OriginalName("SLASH")] Slash = 52,
+    [pbr::OriginalName("BUBBLE_BEAM")] BubbleBeam = 53,
+    [pbr::OriginalName("SUBMISSION")] Submission = 54,
+    [pbr::OriginalName("KARATE_CHOP")] KarateChop = 55,
+    [pbr::OriginalName("LOW_SWEEP")] LowSweep = 56,
+    [pbr::OriginalName("AQUA_JET")] AquaJet = 57,
+    [pbr::OriginalName("AQUA_TAIL")] AquaTail = 58,
+    [pbr::OriginalName("SEED_BOMB")] SeedBomb = 59,
+    [pbr::OriginalName("PSYSHOCK")] Psyshock = 60,
+    [pbr::OriginalName("ROCK_THROW")] RockThrow = 61,
+    [pbr::OriginalName("ANCIENT_POWER")] AncientPower = 62,
+    [pbr::OriginalName("ROCK_TOMB")] RockTomb = 63,
+    [pbr::OriginalName("ROCK_SLIDE")] RockSlide = 64,
+    [pbr::OriginalName("POWER_GEM")] PowerGem = 65,
+    [pbr::OriginalName("SHADOW_SNEAK")] ShadowSneak = 66,
+    [pbr::OriginalName("SHADOW_PUNCH")] ShadowPunch = 67,
+    [pbr::OriginalName("SHADOW_CLAW")] ShadowClaw = 68,
+    [pbr::OriginalName("OMINOUS_WIND")] OminousWind = 69,
+    [pbr::OriginalName("SHADOW_BALL")] ShadowBall = 70,
+    [pbr::OriginalName("BULLET_PUNCH")] BulletPunch = 71,
+    [pbr::OriginalName("MAGNET_BOMB")] MagnetBomb = 72,
+    [pbr::OriginalName("STEEL_WING")] SteelWing = 73,
+    [pbr::OriginalName("IRON_HEAD")] IronHead = 74,
+    [pbr::OriginalName("PARABOLIC_CHARGE")] ParabolicCharge = 75,
+    [pbr::OriginalName("SPARK")] Spark = 76,
+    [pbr::OriginalName("THUNDER_PUNCH")] ThunderPunch = 77,
+    [pbr::OriginalName("THUNDER")] Thunder = 78,
+    [pbr::OriginalName("THUNDERBOLT")] Thunderbolt = 79,
+    [pbr::OriginalName("TWISTER")] Twister = 80,
+    [pbr::OriginalName("DRAGON_BREATH")] DragonBreath = 81,
+    [pbr::OriginalName("DRAGON_PULSE")] DragonPulse = 82,
+    [pbr::OriginalName("DRAGON_CLAW")] DragonClaw = 83,
+    [pbr::OriginalName("DISARMING_VOICE")] DisarmingVoice = 84,
+    [pbr::OriginalName("DRAINING_KISS")] DrainingKiss = 85,
+    [pbr::OriginalName("DAZZLING_GLEAM")] DazzlingGleam = 86,
+    [pbr::OriginalName("MOONBLAST")] Moonblast = 87,
+    [pbr::OriginalName("PLAY_ROUGH")] PlayRough = 88,
+    [pbr::OriginalName("CROSS_POISON")] CrossPoison = 89,
+    [pbr::OriginalName("SLUDGE_BOMB")] SludgeBomb = 90,
+    [pbr::OriginalName("SLUDGE_WAVE")] SludgeWave = 91,
+    [pbr::OriginalName("GUNK_SHOT")] GunkShot = 92,
+    [pbr::OriginalName("MUD_SHOT")] MudShot = 93,
+    [pbr::OriginalName("BONE_CLUB")] BoneClub = 94,
+    [pbr::OriginalName("BULLDOZE")] Bulldoze = 95,
+    [pbr::OriginalName("MUD_BOMB")] MudBomb = 96,
+    [pbr::OriginalName("FURY_CUTTER")] FuryCutter = 97,
+    [pbr::OriginalName("BUG_BITE")] BugBite = 98,
+    [pbr::OriginalName("SIGNAL_BEAM")] SignalBeam = 99,
+    [pbr::OriginalName("X_SCISSOR")] XScissor = 100,
+    [pbr::OriginalName("FLAME_CHARGE")] FlameCharge = 101,
+    [pbr::OriginalName("FLAME_BURST")] FlameBurst = 102,
+    [pbr::OriginalName("FIRE_BLAST")] FireBlast = 103,
+    [pbr::OriginalName("BRINE")] Brine = 104,
+    [pbr::OriginalName("WATER_PULSE")] WaterPulse = 105,
+    [pbr::OriginalName("SCALD")] Scald = 106,
+    [pbr::OriginalName("HYDRO_PUMP")] HydroPump = 107,
+    [pbr::OriginalName("PSYCHIC")] Psychic = 108,
+    [pbr::OriginalName("PSYSTRIKE")] Psystrike = 109,
+    [pbr::OriginalName("ICE_SHARD")] IceShard = 110,
+    [pbr::OriginalName("ICY_WIND")] IcyWind = 111,
+    [pbr::OriginalName("FROST_BREATH")] FrostBreath = 112,
+    [pbr::OriginalName("ABSORB")] Absorb = 113,
+    [pbr::OriginalName("GIGA_DRAIN")] GigaDrain = 114,
+    [pbr::OriginalName("FIRE_PUNCH")] FirePunch = 115,
+    [pbr::OriginalName("SOLAR_BEAM")] SolarBeam = 116,
+    [pbr::OriginalName("LEAF_BLADE")] LeafBlade = 117,
+    [pbr::OriginalName("POWER_WHIP")] PowerWhip = 118,
+    [pbr::OriginalName("SPLASH")] Splash = 119,
+    [pbr::OriginalName("ACID")] Acid = 120,
+    [pbr::OriginalName("AIR_CUTTER")] AirCutter = 121,
+    [pbr::OriginalName("HURRICANE")] Hurricane = 122,
+    [pbr::OriginalName("BRICK_BREAK")] BrickBreak = 123,
+    [pbr::OriginalName("CUT")] Cut = 124,
+    [pbr::OriginalName("SWIFT")] Swift = 125,
+    [pbr::OriginalName("HORN_ATTACK")] HornAttack = 126,
+    [pbr::OriginalName("STOMP")] Stomp = 127,
+    [pbr::OriginalName("HEADBUTT")] Headbutt = 128,
+    [pbr::OriginalName("HYPER_FANG")] HyperFang = 129,
+    [pbr::OriginalName("SLAM")] Slam = 130,
+    [pbr::OriginalName("BODY_SLAM")] BodySlam = 131,
+    [pbr::OriginalName("REST")] Rest = 132,
+    [pbr::OriginalName("STRUGGLE")] Struggle = 133,
+    [pbr::OriginalName("SCALD_BLASTOISE")] ScaldBlastoise = 134,
+    [pbr::OriginalName("HYDRO_PUMP_BLASTOISE")] HydroPumpBlastoise = 135,
+    [pbr::OriginalName("WRAP_GREEN")] WrapGreen = 136,
+    [pbr::OriginalName("WRAP_PINK")] WrapPink = 137,
+    [pbr::OriginalName("FURY_CUTTER_FAST")] FuryCutterFast = 200,
+    [pbr::OriginalName("BUG_BITE_FAST")] BugBiteFast = 201,
+    [pbr::OriginalName("BITE_FAST")] BiteFast = 202,
+    [pbr::OriginalName("SUCKER_PUNCH_FAST")] SuckerPunchFast = 203,
+    [pbr::OriginalName("DRAGON_BREATH_FAST")] DragonBreathFast = 204,
+    [pbr::OriginalName("THUNDER_SHOCK_FAST")] ThunderShockFast = 205,
+    [pbr::OriginalName("SPARK_FAST")] SparkFast = 206,
+    [pbr::OriginalName("LOW_KICK_FAST")] LowKickFast = 207,
+    [pbr::OriginalName("KARATE_CHOP_FAST")] KarateChopFast = 208,
+    [pbr::OriginalName("EMBER_FAST")] EmberFast = 209,
+    [pbr::OriginalName("WING_ATTACK_FAST")] WingAttackFast = 210,
+    [pbr::OriginalName("PECK_FAST")] PeckFast = 211,
+    [pbr::OriginalName("LICK_FAST")] LickFast = 212,
+    [pbr::OriginalName("SHADOW_CLAW_FAST")] ShadowClawFast = 213,
+    [pbr::OriginalName("VINE_WHIP_FAST")] VineWhipFast = 214,
+    [pbr::OriginalName("RAZOR_LEAF_FAST")] RazorLeafFast = 215,
+    [pbr::OriginalName("MUD_SHOT_FAST")] MudShotFast = 216,
+    [pbr::OriginalName("ICE_SHARD_FAST")] IceShardFast = 217,
+    [pbr::OriginalName("FROST_BREATH_FAST")] FrostBreathFast = 218,
+    [pbr::OriginalName("QUICK_ATTACK_FAST")] QuickAttackFast = 219,
+    [pbr::OriginalName("SCRATCH_FAST")] ScratchFast = 220,
+    [pbr::OriginalName("TACKLE_FAST")] TackleFast = 221,
+    [pbr::OriginalName("POUND_FAST")] PoundFast = 222,
+    [pbr::OriginalName("CUT_FAST")] CutFast = 223,
+    [pbr::OriginalName("POISON_JAB_FAST")] PoisonJabFast = 224,
+    [pbr::OriginalName("ACID_FAST")] AcidFast = 225,
+    [pbr::OriginalName("PSYCHO_CUT_FAST")] PsychoCutFast = 226,
+    [pbr::OriginalName("ROCK_THROW_FAST")] RockThrowFast = 227,
+    [pbr::OriginalName("METAL_CLAW_FAST")] MetalClawFast = 228,
+    [pbr::OriginalName("BULLET_PUNCH_FAST")] BulletPunchFast = 229,
+    [pbr::OriginalName("WATER_GUN_FAST")] WaterGunFast = 230,
+    [pbr::OriginalName("SPLASH_FAST")] SplashFast = 231,
+    [pbr::OriginalName("WATER_GUN_FAST_BLASTOISE")] WaterGunFastBlastoise = 232,
+    [pbr::OriginalName("MUD_SLAP_FAST")] MudSlapFast = 233,
+    [pbr::OriginalName("ZEN_HEADBUTT_FAST")] ZenHeadbuttFast = 234,
+    [pbr::OriginalName("CONFUSION_FAST")] ConfusionFast = 235,
+    [pbr::OriginalName("POISON_STING_FAST")] PoisonStingFast = 236,
+    [pbr::OriginalName("BUBBLE_FAST")] BubbleFast = 237,
+    [pbr::OriginalName("FEINT_ATTACK_FAST")] FeintAttackFast = 238,
+    [pbr::OriginalName("STEEL_WING_FAST")] SteelWingFast = 239,
+    [pbr::OriginalName("FIRE_FANG_FAST")] FireFangFast = 240,
+    [pbr::OriginalName("ROCK_SMASH_FAST")] RockSmashFast = 241,
+  }
+
+  public enum ItemId {
+    [pbr::OriginalName("ITEM_UNKNOWN")] ItemUnknown = 0,
+    [pbr::OriginalName("ITEM_POKE_BALL")] ItemPokeBall = 1,
+    [pbr::OriginalName("ITEM_GREAT_BALL")] ItemGreatBall = 2,
+    [pbr::OriginalName("ITEM_ULTRA_BALL")] ItemUltraBall = 3,
+    [pbr::OriginalName("ITEM_MASTER_BALL")] ItemMasterBall = 4,
+    [pbr::OriginalName("ITEM_POTION")] ItemPotion = 101,
+    [pbr::OriginalName("ITEM_SUPER_POTION")] ItemSuperPotion = 102,
+    [pbr::OriginalName("ITEM_HYPER_POTION")] ItemHyperPotion = 103,
+    [pbr::OriginalName("ITEM_MAX_POTION")] ItemMaxPotion = 104,
+    [pbr::OriginalName("ITEM_REVIVE")] ItemRevive = 201,
+    [pbr::OriginalName("ITEM_MAX_REVIVE")] ItemMaxRevive = 202,
+    [pbr::OriginalName("ITEM_LUCKY_EGG")] ItemLuckyEgg = 301,
+    [pbr::OriginalName("ITEM_INCENSE_ORDINARY")] ItemIncenseOrdinary = 401,
+    [pbr::OriginalName("ITEM_INCENSE_SPICY")] ItemIncenseSpicy = 402,
+    [pbr::OriginalName("ITEM_INCENSE_COOL")] ItemIncenseCool = 403,
+    [pbr::OriginalName("ITEM_INCENSE_FLORAL")] ItemIncenseFloral = 404,
+    [pbr::OriginalName("ITEM_TROY_DISK")] ItemTroyDisk = 501,
+    [pbr::OriginalName("ITEM_X_ATTACK")] ItemXAttack = 602,
+    [pbr::OriginalName("ITEM_X_DEFENSE")] ItemXDefense = 603,
+    [pbr::OriginalName("ITEM_X_MIRACLE")] ItemXMiracle = 604,
+    [pbr::OriginalName("ITEM_RAZZ_BERRY")] ItemRazzBerry = 701,
+    [pbr::OriginalName("ITEM_BLUK_BERRY")] ItemBlukBerry = 702,
+    [pbr::OriginalName("ITEM_NANAB_BERRY")] ItemNanabBerry = 703,
+    [pbr::OriginalName("ITEM_WEPAR_BERRY")] ItemWeparBerry = 704,
+    [pbr::OriginalName("ITEM_PINAP_BERRY")] ItemPinapBerry = 705,
+    [pbr::OriginalName("ITEM_SPECIAL_CAMERA")] ItemSpecialCamera = 801,
+    [pbr::OriginalName("ITEM_INCUBATOR_BASIC_UNLIMITED")] ItemIncubatorBasicUnlimited = 901,
+    [pbr::OriginalName("ITEM_INCUBATOR_BASIC")] ItemIncubatorBasic = 902,
+    [pbr::OriginalName("ITEM_POKEMON_STORAGE_UPGRADE")] ItemPokemonStorageUpgrade = 1001,
+    [pbr::OriginalName("ITEM_ITEM_STORAGE_UPGRADE")] ItemItemStorageUpgrade = 1002,
+  }
+
+  public enum InventoryUpgradeType {
+    [pbr::OriginalName("UPGRADE_UNSET")] UpgradeUnset = 0,
+    [pbr::OriginalName("INCREASE_ITEM_STORAGE")] IncreaseItemStorage = 1,
+    [pbr::OriginalName("INCREASE_POKEMON_STORAGE")] IncreasePokemonStorage = 2,
+  }
+
+  public enum EggIncubatorType {
+    [pbr::OriginalName("INCUBATOR_UNSET")] IncubatorUnset = 0,
+    [pbr::OriginalName("INCUBATOR_DISTANCE")] IncubatorDistance = 1,
+  }
+
+  public enum PokemonFamilyId {
+    [pbr::OriginalName("FAMILY_UNSET")] FamilyUnset = 0,
+    [pbr::OriginalName("FAMILY_BULBASAUR")] FamilyBulbasaur = 1,
+    [pbr::OriginalName("FAMILY_CHARMANDER")] FamilyCharmander = 4,
+    [pbr::OriginalName("FAMILY_SQUIRTLE")] FamilySquirtle = 7,
+    [pbr::OriginalName("FAMILY_CATERPIE")] FamilyCaterpie = 10,
+    [pbr::OriginalName("FAMILY_WEEDLE")] FamilyWeedle = 13,
+    [pbr::OriginalName("FAMILY_PIDGEY")] FamilyPidgey = 16,
+    [pbr::OriginalName("FAMILY_RATTATA")] FamilyRattata = 19,
+    [pbr::OriginalName("FAMILY_SPEAROW")] FamilySpearow = 21,
+    [pbr::OriginalName("FAMILY_EKANS")] FamilyEkans = 23,
+    [pbr::OriginalName("FAMILY_PIKACHU")] FamilyPikachu = 25,
+    [pbr::OriginalName("FAMILY_SANDSHREW")] FamilySandshrew = 27,
+    [pbr::OriginalName("FAMILY_NIDORAN")] FamilyNidoran = 29,
+    [pbr::OriginalName("FAMILY_NIDORAN2")] FamilyNidoran2 = 32,
+    [pbr::OriginalName("FAMILY_CLEFAIRY")] FamilyClefairy = 35,
+    [pbr::OriginalName("FAMILY_VULPIX")] FamilyVulpix = 37,
+    [pbr::OriginalName("FAMILY_JIGGLYPUFF")] FamilyJigglypuff = 39,
+    [pbr::OriginalName("FAMILY_ZUBAT")] FamilyZubat = 41,
+    [pbr::OriginalName("FAMILY_ODDISH")] FamilyOddish = 43,
+    [pbr::OriginalName("FAMILY_PARAS")] FamilyParas = 46,
+    [pbr::OriginalName("FAMILY_VENONAT")] FamilyVenonat = 48,
+    [pbr::OriginalName("FAMILY_DIGLETT")] FamilyDiglett = 50,
+    [pbr::OriginalName("FAMILY_MEOWTH")] FamilyMeowth = 52,
+    [pbr::OriginalName("FAMILY_PSYDUCK")] FamilyPsyduck = 54,
+    [pbr::OriginalName("FAMILY_MANKEY")] FamilyMankey = 56,
+    [pbr::OriginalName("FAMILY_GROWLITHE")] FamilyGrowlithe = 58,
+    [pbr::OriginalName("FAMILY_POLIWAG")] FamilyPoliwag = 60,
+    [pbr::OriginalName("FAMILY_ABRA")] FamilyAbra = 63,
+    [pbr::OriginalName("FAMILY_MACHOP")] FamilyMachop = 66,
+    [pbr::OriginalName("FAMILY_BELLSPROUT")] FamilyBellsprout = 69,
+    [pbr::OriginalName("FAMILY_TENTACOOL")] FamilyTentacool = 72,
+    [pbr::OriginalName("FAMILY_GEODUDE")] FamilyGeodude = 74,
+    [pbr::OriginalName("FAMILY_PONYTA")] FamilyPonyta = 77,
+    [pbr::OriginalName("FAMILY_SLOWPOKE")] FamilySlowpoke = 79,
+    [pbr::OriginalName("FAMILY_MAGNEMITE")] FamilyMagnemite = 81,
+    [pbr::OriginalName("FAMILY_FARFETCHD")] FamilyFarfetchd = 83,
+    [pbr::OriginalName("FAMILY_DODUO")] FamilyDoduo = 84,
+    [pbr::OriginalName("FAMILY_SEEL")] FamilySeel = 86,
+    [pbr::OriginalName("FAMILY_GRIMER")] FamilyGrimer = 88,
+    [pbr::OriginalName("FAMILY_SHELLDER")] FamilyShellder = 90,
+    [pbr::OriginalName("FAMILY_GASTLY")] FamilyGastly = 92,
+    [pbr::OriginalName("FAMILY_ONIX")] FamilyOnix = 95,
+    [pbr::OriginalName("FAMILY_DROWZEE")] FamilyDrowzee = 96,
+    [pbr::OriginalName("FAMILY_KRABBY")] FamilyKrabby = 98,
+    [pbr::OriginalName("FAMILY_VOLTORB")] FamilyVoltorb = 100,
+    [pbr::OriginalName("FAMILY_EXEGGCUTE")] FamilyExeggcute = 102,
+    [pbr::OriginalName("FAMILY_CUBONE")] FamilyCubone = 104,
+    [pbr::OriginalName("FAMILY_HITMONLEE")] FamilyHitmonlee = 106,
+    [pbr::OriginalName("FAMILY_HITMONCHAN")] FamilyHitmonchan = 107,
+    [pbr::OriginalName("FAMILY_LICKITUNG")] FamilyLickitung = 108,
+    [pbr::OriginalName("FAMILY_KOFFING")] FamilyKoffing = 109,
+    [pbr::OriginalName("FAMILY_RHYHORN")] FamilyRhyhorn = 111,
+    [pbr::OriginalName("FAMILY_CHANSEY")] FamilyChansey = 113,
+    [pbr::OriginalName("FAMILY_TANGELA")] FamilyTangela = 114,
+    [pbr::OriginalName("FAMILY_KANGASKHAN")] FamilyKangaskhan = 115,
+    [pbr::OriginalName("FAMILY_HORSEA")] FamilyHorsea = 116,
+    [pbr::OriginalName("FAMILY_GOLDEEN")] FamilyGoldeen = 118,
+    [pbr::OriginalName("FAMILY_STARYU")] FamilyStaryu = 120,
+    [pbr::OriginalName("FAMILY_MR_MIME")] FamilyMrMime = 122,
+    [pbr::OriginalName("FAMILY_SCYTHER")] FamilyScyther = 123,
+    [pbr::OriginalName("FAMILY_JYNX")] FamilyJynx = 124,
+    [pbr::OriginalName("FAMILY_ELECTABUZZ")] FamilyElectabuzz = 125,
+    [pbr::OriginalName("FAMILY_MAGMAR")] FamilyMagmar = 126,
+    [pbr::OriginalName("FAMILY_PINSIR")] FamilyPinsir = 127,
+    [pbr::OriginalName("FAMILY_TAUROS")] FamilyTauros = 128,
+    [pbr::OriginalName("FAMILY_MAGIKARP")] FamilyMagikarp = 129,
+    [pbr::OriginalName("FAMILY_LAPRAS")] FamilyLapras = 131,
+    [pbr::OriginalName("FAMILY_DITTO")] FamilyDitto = 132,
+    [pbr::OriginalName("FAMILY_EEVEE")] FamilyEevee = 133,
+    [pbr::OriginalName("FAMILY_PORYGON")] FamilyPorygon = 137,
+    [pbr::OriginalName("FAMILY_OMANYTE")] FamilyOmanyte = 138,
+    [pbr::OriginalName("FAMILY_KABUTO")] FamilyKabuto = 140,
+    [pbr::OriginalName("FAMILY_AERODACTYL")] FamilyAerodactyl = 142,
+    [pbr::OriginalName("FAMILY_SNORLAX")] FamilySnorlax = 143,
+    [pbr::OriginalName("FAMILY_ARTICUNO")] FamilyArticuno = 144,
+    [pbr::OriginalName("FAMILY_ZAPDOS")] FamilyZapdos = 145,
+    [pbr::OriginalName("FAMILY_MOLTRES")] FamilyMoltres = 146,
+    [pbr::OriginalName("FAMILY_DRATINI")] FamilyDratini = 147,
+    [pbr::OriginalName("FAMILY_MEWTWO")] FamilyMewtwo = 150,
+    [pbr::OriginalName("FAMILY_MEW")] FamilyMew = 151,
+  }
+
+  public enum MapObjectsStatus {
+    [pbr::OriginalName("UNSET_STATUS")] UnsetStatus = 0,
+    [pbr::OriginalName("SUCCESS")] Success = 1,
+    [pbr::OriginalName("LOCATION_UNSET")] LocationUnset = 2,
+  }
+
+  public enum FortType {
+    [pbr::OriginalName("GYM")] Gym = 0,
+    [pbr::OriginalName("CHECKPOINT")] Checkpoint = 1,
+  }
+
+  public enum PokemonId {
+    [pbr::OriginalName("MISSINGNO")] Missingno = 0,
+    [pbr::OriginalName("BULBASAUR")] Bulbasaur = 1,
+    [pbr::OriginalName("IVYSAUR")] Ivysaur = 2,
+    [pbr::OriginalName("VENUSAUR")] Venusaur = 3,
+    [pbr::OriginalName("CHARMENDER")] Charmender = 4,
+    [pbr::OriginalName("CHARMELEON")] Charmeleon = 5,
+    [pbr::OriginalName("CHARIZARD")] Charizard = 6,
+    [pbr::OriginalName("SQUIRTLE")] Squirtle = 7,
+    [pbr::OriginalName("WARTORTLE")] Wartortle = 8,
+    [pbr::OriginalName("BLASTOISE")] Blastoise = 9,
+    [pbr::OriginalName("CATERPIE")] Caterpie = 10,
+    [pbr::OriginalName("METAPOD")] Metapod = 11,
+    [pbr::OriginalName("BUTTERFREE")] Butterfree = 12,
+    [pbr::OriginalName("WEEDLE")] Weedle = 13,
+    [pbr::OriginalName("KAKUNA")] Kakuna = 14,
+    [pbr::OriginalName("BEEDRILL")] Beedrill = 15,
+    [pbr::OriginalName("PIDGEY")] Pidgey = 16,
+    [pbr::OriginalName("PIDGEOTTO")] Pidgeotto = 17,
+    [pbr::OriginalName("PIDGEOT")] Pidgeot = 18,
+    [pbr::OriginalName("RATTATA")] Rattata = 19,
+    [pbr::OriginalName("RATICATE")] Raticate = 20,
+    [pbr::OriginalName("SPEAROW")] Spearow = 21,
+    [pbr::OriginalName("FEAROW")] Fearow = 22,
+    [pbr::OriginalName("EKANS")] Ekans = 23,
+    [pbr::OriginalName("ARBOK")] Arbok = 24,
+    [pbr::OriginalName("PIKACHU")] Pikachu = 25,
+    [pbr::OriginalName("RAICHU")] Raichu = 26,
+    [pbr::OriginalName("SANDSHREW")] Sandshrew = 27,
+    [pbr::OriginalName("SANDLASH")] Sandlash = 28,
+    [pbr::OriginalName("NIDORAN_FEMALE")] NidoranFemale = 29,
+    [pbr::OriginalName("NIDORINA")] Nidorina = 30,
+    [pbr::OriginalName("NIDOQUEEN")] Nidoqueen = 31,
+    [pbr::OriginalName("NIDORAN_MALE")] NidoranMale = 32,
+    [pbr::OriginalName("NIDORINO")] Nidorino = 33,
+    [pbr::OriginalName("NIDOKING")] Nidoking = 34,
+    [pbr::OriginalName("CLEFARY")] Clefary = 35,
+    [pbr::OriginalName("CLEFABLE")] Clefable = 36,
+    [pbr::OriginalName("VULPIX")] Vulpix = 37,
+    [pbr::OriginalName("NINETALES")] Ninetales = 38,
+    [pbr::OriginalName("JIGGLYPUFF")] Jigglypuff = 39,
+    [pbr::OriginalName("WIGGLYTUFF")] Wigglytuff = 40,
+    [pbr::OriginalName("ZUBAT")] Zubat = 41,
+    [pbr::OriginalName("GOLBAT")] Golbat = 42,
+    [pbr::OriginalName("ODDISH")] Oddish = 43,
+    [pbr::OriginalName("GLOOM")] Gloom = 44,
+    [pbr::OriginalName("VILEPLUME")] Vileplume = 45,
+    [pbr::OriginalName("PARAS")] Paras = 46,
+    [pbr::OriginalName("PARASECT")] Parasect = 47,
+    [pbr::OriginalName("VENONAT")] Venonat = 48,
+    [pbr::OriginalName("VENOMOTH")] Venomoth = 49,
+    [pbr::OriginalName("DIGLETT")] Diglett = 50,
+    [pbr::OriginalName("DUGTRIO")] Dugtrio = 51,
+    [pbr::OriginalName("MEOWTH")] Meowth = 52,
+    [pbr::OriginalName("PERSIAN")] Persian = 53,
+    [pbr::OriginalName("PSYDUCK")] Psyduck = 54,
+    [pbr::OriginalName("GOLDUCK")] Golduck = 55,
+    [pbr::OriginalName("MANKEY")] Mankey = 56,
+    [pbr::OriginalName("PRIMEAPE")] Primeape = 57,
+    [pbr::OriginalName("GROWLITHE")] Growlithe = 58,
+    [pbr::OriginalName("ARCANINE")] Arcanine = 59,
+    [pbr::OriginalName("POLIWAG")] Poliwag = 60,
+    [pbr::OriginalName("POLIWHIRL")] Poliwhirl = 61,
+    [pbr::OriginalName("POLIWRATH")] Poliwrath = 62,
+    [pbr::OriginalName("ABRA")] Abra = 63,
+    [pbr::OriginalName("KADABRA")] Kadabra = 64,
+    [pbr::OriginalName("ALAKHAZAM")] Alakhazam = 65,
+    [pbr::OriginalName("MACHOP")] Machop = 66,
+    [pbr::OriginalName("MACHOKE")] Machoke = 67,
+    [pbr::OriginalName("MACHAMP")] Machamp = 68,
+    [pbr::OriginalName("BELLSPROUT")] Bellsprout = 69,
+    [pbr::OriginalName("WEEPINBELL")] Weepinbell = 70,
+    [pbr::OriginalName("VICTREEBELL")] Victreebell = 71,
+    [pbr::OriginalName("TENTACOOL")] Tentacool = 72,
+    [pbr::OriginalName("TENTACRUEL")] Tentacruel = 73,
+    [pbr::OriginalName("GEODUGE")] Geoduge = 74,
+    [pbr::OriginalName("GRAVELER")] Graveler = 75,
+    [pbr::OriginalName("GOLEM")] Golem = 76,
+    [pbr::OriginalName("PONYTA")] Ponyta = 77,
+    [pbr::OriginalName("RAPIDASH")] Rapidash = 78,
+    [pbr::OriginalName("SLOWPOKE")] Slowpoke = 79,
+    [pbr::OriginalName("SLOWBRO")] Slowbro = 80,
+    [pbr::OriginalName("MAGNEMITE")] Magnemite = 81,
+    [pbr::OriginalName("MAGNETON")] Magneton = 82,
+    [pbr::OriginalName("FARFETCHD")] Farfetchd = 83,
+    [pbr::OriginalName("DODUO")] Doduo = 84,
+    [pbr::OriginalName("DODRIO")] Dodrio = 85,
+    [pbr::OriginalName("SEEL")] Seel = 86,
+    [pbr::OriginalName("DEWGONG")] Dewgong = 87,
+    [pbr::OriginalName("GRIMER")] Grimer = 88,
+    [pbr::OriginalName("MUK")] Muk = 89,
+    [pbr::OriginalName("SHELLDER")] Shellder = 90,
+    [pbr::OriginalName("CLOYSTER")] Cloyster = 91,
+    [pbr::OriginalName("GASTLY")] Gastly = 92,
+    [pbr::OriginalName("HAUNTER")] Haunter = 93,
+    [pbr::OriginalName("GENGAR")] Gengar = 94,
+    [pbr::OriginalName("ONIX")] Onix = 95,
+    [pbr::OriginalName("DROWZEE")] Drowzee = 96,
+    [pbr::OriginalName("HYPNO")] Hypno = 97,
+    [pbr::OriginalName("KRABBY")] Krabby = 98,
+    [pbr::OriginalName("KINGLER")] Kingler = 99,
+    [pbr::OriginalName("VOLTORB")] Voltorb = 100,
+    [pbr::OriginalName("ELECTRODE")] Electrode = 101,
+    [pbr::OriginalName("EXEGGCUTE")] Exeggcute = 102,
+    [pbr::OriginalName("EXEGGUTOR")] Exeggutor = 103,
+    [pbr::OriginalName("CUBONE")] Cubone = 104,
+    [pbr::OriginalName("MAROWAK")] Marowak = 105,
+    [pbr::OriginalName("HITMONLEE")] Hitmonlee = 106,
+    [pbr::OriginalName("HITMONCHAN")] Hitmonchan = 107,
+    [pbr::OriginalName("LICKITUNG")] Lickitung = 108,
+    [pbr::OriginalName("KOFFING")] Koffing = 109,
+    [pbr::OriginalName("WEEZING")] Weezing = 110,
+    [pbr::OriginalName("RHYHORN")] Rhyhorn = 111,
+    [pbr::OriginalName("RHYDON")] Rhydon = 112,
+    [pbr::OriginalName("CHANSEY")] Chansey = 113,
+    [pbr::OriginalName("TANGELA")] Tangela = 114,
+    [pbr::OriginalName("KANGASKHAN")] Kangaskhan = 115,
+    [pbr::OriginalName("HORSEA")] Horsea = 116,
+    [pbr::OriginalName("SEADRA")] Seadra = 117,
+    [pbr::OriginalName("GOLDEEN")] Goldeen = 118,
+    [pbr::OriginalName("SEAKING")] Seaking = 119,
+    [pbr::OriginalName("STARYU")] Staryu = 120,
+    [pbr::OriginalName("STARMIE")] Starmie = 121,
+    [pbr::OriginalName("MR_MIME")] MrMime = 122,
+    [pbr::OriginalName("SCYTHER")] Scyther = 123,
+    [pbr::OriginalName("JYNX")] Jynx = 124,
+    [pbr::OriginalName("ELECTABUZZ")] Electabuzz = 125,
+    [pbr::OriginalName("MAGMAR")] Magmar = 126,
+    [pbr::OriginalName("PINSIR")] Pinsir = 127,
+    [pbr::OriginalName("TAUROS")] Tauros = 128,
+    [pbr::OriginalName("MAGIKARP")] Magikarp = 129,
+    [pbr::OriginalName("GYARADOS")] Gyarados = 130,
+    [pbr::OriginalName("LAPRAS")] Lapras = 131,
+    [pbr::OriginalName("DITTO")] Ditto = 132,
+    [pbr::OriginalName("EEVEE")] Eevee = 133,
+    [pbr::OriginalName("VAPOREON")] Vaporeon = 134,
+    [pbr::OriginalName("JOLTEON")] Jolteon = 135,
+    [pbr::OriginalName("FLAREON")] Flareon = 136,
+    [pbr::OriginalName("PORYGON")] Porygon = 137,
+    [pbr::OriginalName("OMANYTE")] Omanyte = 138,
+    [pbr::OriginalName("OMASTAR")] Omastar = 139,
+    [pbr::OriginalName("KABUTO")] Kabuto = 140,
+    [pbr::OriginalName("KABUTOPS")] Kabutops = 141,
+    [pbr::OriginalName("AERODACTYL")] Aerodactyl = 142,
+    [pbr::OriginalName("SNORLAX")] Snorlax = 143,
+    [pbr::OriginalName("ARTICUNO")] Articuno = 144,
+    [pbr::OriginalName("ZAPDOS")] Zapdos = 145,
+    [pbr::OriginalName("MOLTRES")] Moltres = 146,
+    [pbr::OriginalName("DRATINI")] Dratini = 147,
+    [pbr::OriginalName("DRAGONAIR")] Dragonair = 148,
+    [pbr::OriginalName("DRAGONITE")] Dragonite = 149,
+    [pbr::OriginalName("MEWTWO")] Mewtwo = 150,
+    [pbr::OriginalName("MEW")] Mew = 151,
+  }
+
+  public enum FortSponsor {
+    [pbr::OriginalName("UNSET_SPONSOR")] UnsetSponsor = 0,
+    [pbr::OriginalName("MCDONALDS")] Mcdonalds = 1,
+    [pbr::OriginalName("POKEMON_STORE")] PokemonStore = 2,
+  }
+
+  public enum FortRenderingType {
+    [pbr::OriginalName("DEFAULT")] Default = 0,
+    [pbr::OriginalName("INTERNAL_TEST")] InternalTest = 1,
+  }
+
+  public enum ItemType {
+    [pbr::OriginalName("ITEM_TYPE_NONE")] None = 0,
+    [pbr::OriginalName("ITEM_TYPE_POKEBALL")] Pokeball = 1,
+    [pbr::OriginalName("ITEM_TYPE_POTION")] Potion = 2,
+    [pbr::OriginalName("ITEM_TYPE_REVIVE")] Revive = 3,
+    [pbr::OriginalName("ITEM_TYPE_MAP")] Map = 4,
+    [pbr::OriginalName("ITEM_TYPE_BATTLE")] Battle = 5,
+    [pbr::OriginalName("ITEM_TYPE_FOOD")] Food = 6,
+    [pbr::OriginalName("ITEM_TYPE_CAMERA")] Camera = 7,
+    [pbr::OriginalName("ITEM_TYPE_DISK")] Disk = 8,
+    [pbr::OriginalName("ITEM_TYPE_INCUBATOR")] Incubator = 9,
+    [pbr::OriginalName("ITEM_TYPE_INCENSE")] Incense = 10,
+    [pbr::OriginalName("ITEM_TYPE_XP_BOOST")] XpBoost = 11,
+    [pbr::OriginalName("ITEM_TYPE_INVENTORY_UPGRADE")] InventoryUpgrade = 12,
+  }
+
+  public enum ItemCategory {
+    [pbr::OriginalName("ITEM_CATEGORY_NONE")] None = 0,
+    [pbr::OriginalName("ITEM_CATEGORY_POKEBALL")] Pokeball = 1,
+    [pbr::OriginalName("ITEM_CATEGORY_FOOD")] Food = 2,
+    [pbr::OriginalName("ITEM_CATEGORY_MEDICINE")] Medicine = 3,
+    [pbr::OriginalName("ITEM_CATEGORY_BOOST")] Boost = 4,
+    [pbr::OriginalName("ITEM_CATEGORY_UTILITES")] Utilites = 5,
+    [pbr::OriginalName("ITEM_CATEGORY_CAMERA")] Camera = 6,
+    [pbr::OriginalName("ITEM_CATEGORY_DISK")] Disk = 7,
+    [pbr::OriginalName("ITEM_CATEGORY_INCUBATOR")] Incubator = 8,
+    [pbr::OriginalName("ITEM_CATEGORY_INCENSE")] Incense = 9,
+    [pbr::OriginalName("ITEM_CATEGORY_XP_BOOST")] XpBoost = 10,
+    [pbr::OriginalName("ITEM_CATEGORY_INVENTORY_UPGRADE")] InventoryUpgrade = 11,
+  }
+
+  public enum ItemEffect {
+    [pbr::OriginalName("ITEM_EFFECT_NONE")] None = 0,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_NO_FLEE")] CapNoFlee = 1000,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_NO_MOVEMENT")] CapNoMovement = 1002,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_NO_THREAT")] CapNoThreat = 1003,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_TARGET_MAX")] CapTargetMax = 1004,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_TARGET_SLOW")] CapTargetSlow = 1005,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_NIGHT")] CapChanceNight = 1006,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_TRAINER")] CapChanceTrainer = 1007,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_FIRST_THROW")] CapChanceFirstThrow = 1008,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_LEGEND")] CapChanceLegend = 1009,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_HEAVY")] CapChanceHeavy = 1010,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_REPEAT")] CapChanceRepeat = 1011,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_MULTI_THROW")] CapChanceMultiThrow = 1012,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_ALWAYS")] CapChanceAlways = 1013,
+    [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_SINGLE_THROW")] CapChanceSingleThrow = 1014,
+  }
+
+  public enum ActivityType {
+    [pbr::OriginalName("ACTIVITY_UNKNOWN")] ActivityUnknown = 0,
+    [pbr::OriginalName("ACTIVITY_CATCH_POKEMON")] ActivityCatchPokemon = 1,
+    [pbr::OriginalName("ACTIVITY_CATCH_LEGEND_POKEMON")] ActivityCatchLegendPokemon = 2,
+    [pbr::OriginalName("ACTIVITY_FLEE_POKEMON")] ActivityFleePokemon = 3,
+    [pbr::OriginalName("ACTIVITY_DEFEAT_FORT")] ActivityDefeatFort = 4,
+    [pbr::OriginalName("ACTIVITY_EVOLVE_POKEMON")] ActivityEvolvePokemon = 5,
+    [pbr::OriginalName("ACTIVITY_HATCH_EGG")] ActivityHatchEgg = 6,
+    [pbr::OriginalName("ACTIVITY_WALK_KM")] ActivityWalkKm = 7,
+    [pbr::OriginalName("ACTIVITY_POKEDEX_ENTRY_NEW")] ActivityPokedexEntryNew = 8,
+    [pbr::OriginalName("ACTIVITY_CATCH_FIRST_THROW")] ActivityCatchFirstThrow = 9,
+    [pbr::OriginalName("ACTIVITY_CATCH_NICE_THROW")] ActivityCatchNiceThrow = 10,
+    [pbr::OriginalName("ACTIVITY_CATCH_GREAT_THROW")] ActivityCatchGreatThrow = 11,
+    [pbr::OriginalName("ACTIVITY_CATCH_EXCELLENT_THROW")] ActivityCatchExcellentThrow = 12,
+    [pbr::OriginalName("ACTIVITY_CATCH_CURVEBALL")] ActivityCatchCurveball = 13,
+    [pbr::OriginalName("ACTIVITY_CATCH_FIRST_CATCH_OF_DAY")] ActivityCatchFirstCatchOfDay = 14,
+    [pbr::OriginalName("ACTIVITY_CATCH_MILESTONE")] ActivityCatchMilestone = 15,
+    [pbr::OriginalName("ACTIVITY_TRAIN_POKEMON")] ActivityTrainPokemon = 16,
+    [pbr::OriginalName("ACTIVITY_SEARCH_FORT")] ActivitySearchFort = 17,
+    [pbr::OriginalName("ACTIVITY_RELEASE_POKEMON")] ActivityReleasePokemon = 18,
+    [pbr::OriginalName("ACTIVITY_HATCH_EGG_SMALL_BONUS")] ActivityHatchEggSmallBonus = 19,
+    [pbr::OriginalName("ACTIVITY_HATCH_EGG_MEDIUM_BONUS")] ActivityHatchEggMediumBonus = 20,
+    [pbr::OriginalName("ACTIVITY_HATCH_EGG_LARGE_BONUS")] ActivityHatchEggLargeBonus = 21,
+    [pbr::OriginalName("ACTIVITY_DEFEAT_GYM_DEFENDER")] ActivityDefeatGymDefender = 22,
+    [pbr::OriginalName("ACTIVITY_DEFEAT_GYM_LEADER")] ActivityDefeatGymLeader = 23,
+  }
+
+  public enum BadgeType {
+    [pbr::OriginalName("BADGE_UNSET")] BadgeUnset = 0,
+    [pbr::OriginalName("BADGE_TRAVEL_KM")] BadgeTravelKm = 1,
+    [pbr::OriginalName("BADGE_POKEDEX_ENTRIES")] BadgePokedexEntries = 2,
+    [pbr::OriginalName("BADGE_CAPTURE_TOTAL")] BadgeCaptureTotal = 3,
+    [pbr::OriginalName("BADGE_DEFEATED_FORT")] BadgeDefeatedFort = 4,
+    [pbr::OriginalName("BADGE_EVOLVED_TOTAL")] BadgeEvolvedTotal = 5,
+    [pbr::OriginalName("BADGE_HATCHED_TOTAL")] BadgeHatchedTotal = 6,
+    [pbr::OriginalName("BADGE_ENCOUNTERED_TOTAL")] BadgeEncounteredTotal = 7,
+    [pbr::OriginalName("BADGE_POKESTOPS_VISITED")] BadgePokestopsVisited = 8,
+    [pbr::OriginalName("BADGE_UNIQUE_POKESTOPS")] BadgeUniquePokestops = 9,
+    [pbr::OriginalName("BADGE_POKEBALL_THROWN")] BadgePokeballThrown = 10,
+    [pbr::OriginalName("BADGE_BIG_MAGIKARP")] BadgeBigMagikarp = 11,
+    [pbr::OriginalName("BADGE_DEPLOYED_TOTAL")] BadgeDeployedTotal = 12,
+    [pbr::OriginalName("BADGE_BATTLE_ATTACK_WON")] BadgeBattleAttackWon = 13,
+    [pbr::OriginalName("BADGE_BATTLE_TRAINING_WON")] BadgeBattleTrainingWon = 14,
+    [pbr::OriginalName("BADGE_BATTLE_DEFEND_WON")] BadgeBattleDefendWon = 15,
+    [pbr::OriginalName("BADGE_PRESTIGE_RAISED")] BadgePrestigeRaised = 16,
+    [pbr::OriginalName("BADGE_PRESTIGE_DROPPED")] BadgePrestigeDropped = 17,
+    [pbr::OriginalName("BADGE_TYPE_NORMAL")] Normal = 18,
+    [pbr::OriginalName("BADGE_TYPE_FIGHTING")] Fighting = 19,
+    [pbr::OriginalName("BADGE_TYPE_FLYING")] Flying = 20,
+    [pbr::OriginalName("BADGE_TYPE_POISON")] Poison = 21,
+    [pbr::OriginalName("BADGE_TYPE_GROUND")] Ground = 22,
+    [pbr::OriginalName("BADGE_TYPE_ROCK")] Rock = 23,
+    [pbr::OriginalName("BADGE_TYPE_BUG")] Bug = 24,
+    [pbr::OriginalName("BADGE_TYPE_GHOST")] Ghost = 25,
+    [pbr::OriginalName("BADGE_TYPE_STEEL")] Steel = 26,
+    [pbr::OriginalName("BADGE_TYPE_FIRE")] Fire = 27,
+    [pbr::OriginalName("BADGE_TYPE_WATER")] Water = 28,
+    [pbr::OriginalName("BADGE_TYPE_GRASS")] Grass = 29,
+    [pbr::OriginalName("BADGE_TYPE_ELECTRIC")] Electric = 30,
+    [pbr::OriginalName("BADGE_TYPE_PSYCHIC")] Psychic = 31,
+    [pbr::OriginalName("BADGE_TYPE_ICE")] Ice = 32,
+    [pbr::OriginalName("BADGE_TYPE_DRAGON")] Dragon = 33,
+    [pbr::OriginalName("BADGE_TYPE_DARK")] Dark = 34,
+    [pbr::OriginalName("BADGE_TYPE_FAIRY")] Fairy = 35,
+    [pbr::OriginalName("BADGE_SMALL_RATTATA")] BadgeSmallRattata = 36,
+    [pbr::OriginalName("BADGE_PIKACHU")] BadgePikachu = 37,
+  }
+
+  public enum HoloIapItemCategory {
+    [pbr::OriginalName("IAP_CATEGORY_NONE")] IapCategoryNone = 0,
+    [pbr::OriginalName("IAP_CATEGORY_BUNDLE")] IapCategoryBundle = 1,
+    [pbr::OriginalName("IAP_CATEGORY_ITEMS")] IapCategoryItems = 2,
+    [pbr::OriginalName("IAP_CATEGORY_UPGRADES")] IapCategoryUpgrades = 3,
+    [pbr::OriginalName("IAP_CATEGORY_POKECOINS")] IapCategoryPokecoins = 4,
+  }
+
+  public enum CameraInterpolation {
+    [pbr::OriginalName("CAM_INTERP_CUT")] CamInterpCut = 0,
+    [pbr::OriginalName("CAM_INTERP_LINEAR")] CamInterpLinear = 1,
+    [pbr::OriginalName("CAM_INTERP_SMOOTH")] CamInterpSmooth = 2,
+    [pbr::OriginalName("CAM_INTERP_SMOOTH_ROT_LINEAR_MOVE")] CamInterpSmoothRotLinearMove = 3,
+    [pbr::OriginalName("CAM_INTERP_DEPENDS")] CamInterpDepends = 4,
+  }
+
+  public enum CameraTarget {
+    [pbr::OriginalName("CAM_TARGET_ATTACKER")] CamTargetAttacker = 0,
+    [pbr::OriginalName("CAM_TARGET_ATTACKER_EDGE")] CamTargetAttackerEdge = 1,
+    [pbr::OriginalName("CAM_TARGET_ATTACKER_GROUND")] CamTargetAttackerGround = 2,
+    [pbr::OriginalName("CAM_TARGET_DEFENDER")] CamTargetDefender = 3,
+    [pbr::OriginalName("CAM_TARGET_DEFENDER_EDGE")] CamTargetDefenderEdge = 4,
+    [pbr::OriginalName("CAM_TARGET_DEFENDER_GROUND")] CamTargetDefenderGround = 5,
+    [pbr::OriginalName("CAM_TARGET_ATTACKER_DEFENDER")] CamTargetAttackerDefender = 6,
+    [pbr::OriginalName("CAM_TARGET_ATTACKER_DEFENDER_EDGE")] CamTargetAttackerDefenderEdge = 7,
+    [pbr::OriginalName("CAM_TARGET_DEFENDER_ATTACKER")] CamTargetDefenderAttacker = 8,
+    [pbr::OriginalName("CAM_TARGET_DEFENDER_ATTACKER_EDGE")] CamTargetDefenderAttackerEdge = 9,
+    [pbr::OriginalName("CAM_TARGET_ATTACKER_DEFENDER_MIRROR")] CamTargetAttackerDefenderMirror = 11,
+    [pbr::OriginalName("CAM_TARGET_SHOULDER_ATTACKER_DEFENDER")] CamTargetShoulderAttackerDefender = 12,
+    [pbr::OriginalName("CAM_TARGET_SHOULDER_ATTACKER_DEFENDER_MIRROR")] CamTargetShoulderAttackerDefenderMirror = 13,
+    [pbr::OriginalName("CAM_TARGET_ATTACKER_DEFENDER_WORLD")] CamTargetAttackerDefenderWorld = 14,
+  }
+
+  public enum PokemonType {
+    [pbr::OriginalName("POKEMON_TYPE_NONE")] None = 0,
+    [pbr::OriginalName("POKEMON_TYPE_NORMAL")] Normal = 1,
+    [pbr::OriginalName("POKEMON_TYPE_FIGHTING")] Fighting = 2,
+    [pbr::OriginalName("POKEMON_TYPE_FLYING")] Flying = 3,
+    [pbr::OriginalName("POKEMON_TYPE_POISON")] Poison = 4,
+    [pbr::OriginalName("POKEMON_TYPE_GROUND")] Ground = 5,
+    [pbr::OriginalName("POKEMON_TYPE_ROCK")] Rock = 6,
+    [pbr::OriginalName("POKEMON_TYPE_BUG")] Bug = 7,
+    [pbr::OriginalName("POKEMON_TYPE_GHOST")] Ghost = 8,
+    [pbr::OriginalName("POKEMON_TYPE_STEEL")] Steel = 9,
+    [pbr::OriginalName("POKEMON_TYPE_FIRE")] Fire = 10,
+    [pbr::OriginalName("POKEMON_TYPE_WATER")] Water = 11,
+    [pbr::OriginalName("POKEMON_TYPE_GRASS")] Grass = 12,
+    [pbr::OriginalName("POKEMON_TYPE_ELECTRIC")] Electric = 13,
+    [pbr::OriginalName("POKEMON_TYPE_PSYCHIC")] Psychic = 14,
+    [pbr::OriginalName("POKEMON_TYPE_ICE")] Ice = 15,
+    [pbr::OriginalName("POKEMON_TYPE_DRAGON")] Dragon = 16,
+    [pbr::OriginalName("POKEMON_TYPE_DARK")] Dark = 17,
+    [pbr::OriginalName("POKEMON_TYPE_FAIRY")] Fairy = 18,
+  }
+
+  public enum PokemonMovementType {
+    [pbr::OriginalName("MOVEMENT_STATIC")] MovementStatic = 0,
+    [pbr::OriginalName("MOVEMENT_JUMP")] MovementJump = 1,
+    [pbr::OriginalName("MOVEMENT_VERTICAL")] MovementVertical = 2,
+    [pbr::OriginalName("MOVEMENT_PSYCHIC")] MovementPsychic = 3,
+    [pbr::OriginalName("MOVEMENT_ELECTRIC")] MovementElectric = 4,
+    [pbr::OriginalName("MOVEMENT_FLYING")] MovementFlying = 5,
+    [pbr::OriginalName("MOVEMENT_HOVERING")] MovementHovering = 6,
+  }
+
+  public enum PokemonClass {
+    [pbr::OriginalName("NORMAL")] Normal = 0,
+    [pbr::OriginalName("LEGENDARY")] Legendary = 1,
+    [pbr::OriginalName("MYTHIC")] Mythic = 2,
+  }
+
+  #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/GeneratedCode/CatchPokemonResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/CatchPokemonResponse.cs
deleted file mode 100644
index c34f100..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/CatchPokemonResponse.cs
+++ /dev/null
@@ -1,1174 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: CatchPokemonResponse.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-namespace PokemonGo.RocketAPI.GeneratedCode {
-
-  /// <summary>Holder for reflection information generated from CatchPokemonResponse.proto</summary>
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class CatchPokemonResponseReflection {
-
-    #region Descriptor
-    /// <summary>File descriptor for CatchPokemonResponse.proto</summary>
-    public static pbr::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbr::FileDescriptor descriptor;
-
-    static CatchPokemonResponseReflection() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "ChpDYXRjaFBva2Vtb25SZXNwb25zZS5wcm90bxIhUG9rZW1vbkdvLlJvY2tl",
-            "dEFQSS5HZW5lcmF0ZWRDb2RlIqsmChRDYXRjaFBva2Vtb25SZXNwb25zZRIQ",
-            "Cgh1bmtub3duMRgBIAEoBRIQCgh1bmtub3duMhgCIAEoAxIPCgdhcGlfdXJs",
-            "GAMgASgJElIKCHVua25vd242GAYgASgLMkAuUG9rZW1vbkdvLlJvY2tldEFQ",
-            "SS5HZW5lcmF0ZWRDb2RlLkNhdGNoUG9rZW1vblJlc3BvbnNlLlVua25vd242",
-            "ElIKCHVua25vd243GAcgASgLMkAuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5l",
-            "cmF0ZWRDb2RlLkNhdGNoUG9rZW1vblJlc3BvbnNlLlVua25vd243ElAKB3Bh",
-            "eWxvYWQYZCADKAsyPy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENv",
-            "ZGUuQ2F0Y2hQb2tlbW9uUmVzcG9uc2UuUGF5bG9hZBIUCgxlcnJvck1lc3Nh",
-            "Z2UYZSABKAkalwEKCFVua25vd242EhAKCHVua25vd24xGAEgASgFElsKCHVu",
-            "a25vd24yGAIgASgLMkkuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRD",
-            "b2RlLkNhdGNoUG9rZW1vblJlc3BvbnNlLlVua25vd242LlVua25vd24yGhwK",
-            "CFVua25vd24yEhAKCHVua25vd24xGAEgASgMGkMKCFVua25vd243EhEKCXVu",
-            "a25vd243MRgBIAEoDBIRCgl1bmtub3duNzIYAiABKAMSEQoJdW5rbm93bjcz",
-            "GAMgASgMGp0BCgdQYXlsb2FkEg4KBlN0YXR1cxgBIAEoBRITCgtNaXNzUGVy",
-            "Y2VudBgCIAEoBhJdChFDYXB0dXJlZFBva2Vtb25JZBgDIAEoDjJCLlBva2Vt",
-            "b25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5DYXRjaFBva2Vtb25SZXNw",
-            "b25zZS5Qb2tlbW9uSWRzEg4KBlNjb3JlcxgEIAEoBSLOIAoKUG9rZW1vbklk",
-            "cxIRCg1QT0tFTU9OX1VOU0VUEAASGwoXVjAwMDFfUE9LRU1PTl9CVUxCQVNB",
-            "VVIQARIZChVWMDAwMl9QT0tFTU9OX0lWWVNBVVIQAhIaChZWMDAwM19QT0tF",
-            "TU9OX1ZFTlVTQVVSEAMSHAoYVjAwMDRfUE9LRU1PTl9DSEFSTUFOREVSEAQS",
-            "HAoYVjAwMDVfUE9LRU1PTl9DSEFSTUVMRU9OEAUSGwoXVjAwMDZfUE9LRU1P",
-            "Tl9DSEFSSVpBUkQQBhIaChZWMDAwN19QT0tFTU9OX1NRVUlSVExFEAcSGwoX",
-            "VjAwMDhfUE9LRU1PTl9XQVJUT1JUTEUQCBIbChdWMDAwOV9QT0tFTU9OX0JM",
-            "QVNUT0lTRRAJEhoKFlYwMDEwX1BPS0VNT05fQ0FURVJQSUUQChIZChVWMDAx",
-            "MV9QT0tFTU9OX01FVEFQT0QQCxIcChhWMDAxMl9QT0tFTU9OX0JVVFRFUkZS",
-            "RUUQDBIYChRWMDAxM19QT0tFTU9OX1dFRURMRRANEhgKFFYwMDE0X1BPS0VN",
-            "T05fS0FLVU5BEA4SGgoWVjAwMTVfUE9LRU1PTl9CRUVEUklMTBAPEhgKFFYw",
-            "MDE2X1BPS0VNT05fUElER0VZEBASGwoXVjAwMTdfUE9LRU1PTl9QSURHRU9U",
-            "VE8QERIZChVWMDAxOF9QT0tFTU9OX1BJREdFT1QQEhIZChVWMDAxOV9QT0tF",
-            "TU9OX1JBVFRBVEEQExIaChZWMDAyMF9QT0tFTU9OX1JBVElDQVRFEBQSGQoV",
-            "VjAwMjFfUE9LRU1PTl9TUEVBUk9XEBUSGAoUVjAwMjJfUE9LRU1PTl9GRUFS",
-            "T1cQFhIXChNWMDAyM19QT0tFTU9OX0VLQU5TEBcSFwoTVjAwMjRfUE9LRU1P",
-            "Tl9BUkJPSxAYEhkKFVYwMDI1X1BPS0VNT05fUElLQUNIVRAZEhgKFFYwMDI2",
-            "X1BPS0VNT05fUkFJQ0hVEBoSGwoXVjAwMjdfUE9LRU1PTl9TQU5EU0hSRVcQ",
-            "GxIbChdWMDAyOF9QT0tFTU9OX1NBTkRTTEFTSBAcEhkKFVYwMDI5X1BPS0VN",
-            "T05fTklET1JBThAdEhoKFlYwMDMwX1BPS0VNT05fTklET1JJTkEQHhIbChdW",
-            "MDAzMV9QT0tFTU9OX05JRE9RVUVFThAfEhkKFVYwMDMyX1BPS0VNT05fTklE",
-            "T1JBThAgEhoKFlYwMDMzX1BPS0VNT05fTklET1JJTk8QIRIaChZWMDAzNF9Q",
-            "T0tFTU9OX05JRE9LSU5HECISGgoWVjAwMzVfUE9LRU1PTl9DTEVGQUlSWRAj",
-            "EhoKFlYwMDM2X1BPS0VNT05fQ0xFRkFCTEUQJBIYChRWMDAzN19QT0tFTU9O",
-            "X1ZVTFBJWBAlEhsKF1YwMDM4X1BPS0VNT05fTklORVRBTEVTECYSHAoYVjAw",
-            "MzlfUE9LRU1PTl9KSUdHTFlQVUZGECcSHAoYVjAwNDBfUE9LRU1PTl9XSUdH",
-            "TFlUVUZGECgSFwoTVjAwNDFfUE9LRU1PTl9aVUJBVBApEhgKFFYwMDQyX1BP",
-            "S0VNT05fR09MQkFUECoSGAoUVjAwNDNfUE9LRU1PTl9PRERJU0gQKxIXChNW",
-            "MDA0NF9QT0tFTU9OX0dMT09NECwSGwoXVjAwNDVfUE9LRU1PTl9WSUxFUExV",
-            "TUUQLRIXChNWMDA0Nl9QT0tFTU9OX1BBUkFTEC4SGgoWVjAwNDdfUE9LRU1P",
-            "Tl9QQVJBU0VDVBAvEhkKFVYwMDQ4X1BPS0VNT05fVkVOT05BVBAwEhoKFlYw",
-            "MDQ5X1BPS0VNT05fVkVOT01PVEgQMRIZChVWMDA1MF9QT0tFTU9OX0RJR0xF",
-            "VFQQMhIZChVWMDA1MV9QT0tFTU9OX0RVR1RSSU8QMxIYChRWMDA1Ml9QT0tF",
-            "TU9OX01FT1dUSBA0EhkKFVYwMDUzX1BPS0VNT05fUEVSU0lBThA1EhkKFVYw",
-            "MDU0X1BPS0VNT05fUFNZRFVDSxA2EhkKFVYwMDU1X1BPS0VNT05fR09MRFVD",
-            "SxA3EhgKFFYwMDU2X1BPS0VNT05fTUFOS0VZEDgSGgoWVjAwNTdfUE9LRU1P",
-            "Tl9QUklNRUFQRRA5EhsKF1YwMDU4X1BPS0VNT05fR1JPV0xJVEhFEDoSGgoW",
-            "VjAwNTlfUE9LRU1PTl9BUkNBTklORRA7EhkKFVYwMDYwX1BPS0VNT05fUE9M",
-            "SVdBRxA8EhsKF1YwMDYxX1BPS0VNT05fUE9MSVdISVJMED0SGwoXVjAwNjJf",
-            "UE9LRU1PTl9QT0xJV1JBVEgQPhIWChJWMDA2M19QT0tFTU9OX0FCUkEQPxIZ",
-            "ChVWMDA2NF9QT0tFTU9OX0tBREFCUkEQQBIaChZWMDA2NV9QT0tFTU9OX0FM",
-            "QUtBWkFNEEESGAoUVjAwNjZfUE9LRU1PTl9NQUNIT1AQQhIZChVWMDA2N19Q",
-            "T0tFTU9OX01BQ0hPS0UQQxIZChVWMDA2OF9QT0tFTU9OX01BQ0hBTVAQRBIc",
-            "ChhWMDA2OV9QT0tFTU9OX0JFTExTUFJPVVQQRRIcChhWMDA3MF9QT0tFTU9O",
-            "X1dFRVBJTkJFTEwQRhIcChhWMDA3MV9QT0tFTU9OX1ZJQ1RSRUVCRUwQRxIb",
-            "ChdWMDA3Ml9QT0tFTU9OX1RFTlRBQ09PTBBIEhwKGFYwMDczX1BPS0VNT05f",
-            "VEVOVEFDUlVFTBBJEhkKFVYwMDc0X1BPS0VNT05fR0VPRFVERRBKEhoKFlYw",
-            "MDc1X1BPS0VNT05fR1JBVkVMRVIQSxIXChNWMDA3Nl9QT0tFTU9OX0dPTEVN",
-            "EEwSGAoUVjAwNzdfUE9LRU1PTl9QT05ZVEEQTRIaChZWMDA3OF9QT0tFTU9O",
-            "X1JBUElEQVNIEE4SGgoWVjAwNzlfUE9LRU1PTl9TTE9XUE9LRRBPEhkKFVYw",
-            "MDgwX1BPS0VNT05fU0xPV0JSTxBQEhsKF1YwMDgxX1BPS0VNT05fTUFHTkVN",
-            "SVRFEFESGgoWVjAwODJfUE9LRU1PTl9NQUdORVRPThBSEhsKF1YwMDgzX1BP",
-            "S0VNT05fRkFSRkVUQ0hEEFMSFwoTVjAwODRfUE9LRU1PTl9ET0RVTxBUEhgK",
-            "FFYwMDg1X1BPS0VNT05fRE9EUklPEFUSFgoSVjAwODZfUE9LRU1PTl9TRUVM",
-            "EFYSGQoVVjAwODdfUE9LRU1PTl9ERVdHT05HEFcSGAoUVjAwODhfUE9LRU1P",
-            "Tl9HUklNRVIQWBIVChFWMDA4OV9QT0tFTU9OX01VSxBZEhoKFlYwMDkwX1BP",
-            "S0VNT05fU0hFTExERVIQWhIaChZWMDA5MV9QT0tFTU9OX0NMT1lTVEVSEFsS",
-            "GAoUVjAwOTJfUE9LRU1PTl9HQVNUTFkQXBIZChVWMDA5M19QT0tFTU9OX0hB",
-            "VU5URVIQXRIYChRWMDA5NF9QT0tFTU9OX0dFTkdBUhBeEhYKElYwMDk1X1BP",
-            "S0VNT05fT05JWBBfEhkKFVYwMDk2X1BPS0VNT05fRFJPV1pFRRBgEhcKE1Yw",
-            "MDk3X1BPS0VNT05fSFlQTk8QYRIYChRWMDA5OF9QT0tFTU9OX0tSQUJCWRBi",
-            "EhkKFVYwMDk5X1BPS0VNT05fS0lOR0xFUhBjEhkKFVYwMTAwX1BPS0VNT05f",
-            "Vk9MVE9SQhBkEhsKF1YwMTAxX1BPS0VNT05fRUxFQ1RST0RFEGUSGwoXVjAx",
-            "MDJfUE9LRU1PTl9FWEVHR0NVVEUQZhIbChdWMDEwM19QT0tFTU9OX0VYRUdH",
-            "VVRPUhBnEhgKFFYwMTA0X1BPS0VNT05fQ1VCT05FEGgSGQoVVjAxMDVfUE9L",
-            "RU1PTl9NQVJPV0FLEGkSGwoXVjAxMDZfUE9LRU1PTl9ISVRNT05MRUUQahIc",
-            "ChhWMDEwN19QT0tFTU9OX0hJVE1PTkNIQU4QaxIbChdWMDEwOF9QT0tFTU9O",
-            "X0xJQ0tJVFVORxBsEhkKFVYwMTA5X1BPS0VNT05fS09GRklORxBtEhkKFVYw",
-            "MTEwX1BPS0VNT05fV0VFWklORxBuEhkKFVYwMTExX1BPS0VNT05fUkhZSE9S",
-            "ThBvEhgKFFYwMTEyX1BPS0VNT05fUkhZRE9OEHASGQoVVjAxMTNfUE9LRU1P",
-            "Tl9DSEFOU0VZEHESGQoVVjAxMTRfUE9LRU1PTl9UQU5HRUxBEHISHAoYVjAx",
-            "MTVfUE9LRU1PTl9LQU5HQVNLSEFOEHMSGAoUVjAxMTZfUE9LRU1PTl9IT1JT",
-            "RUEQdBIYChRWMDExN19QT0tFTU9OX1NFQURSQRB1EhkKFVYwMTE4X1BPS0VN",
-            "T05fR09MREVFThB2EhkKFVYwMTE5X1BPS0VNT05fU0VBS0lORxB3EhgKFFYw",
-            "MTIwX1BPS0VNT05fU1RBUllVEHgSGQoVVjAxMjFfUE9LRU1PTl9TVEFSTUlF",
-            "EHkSGQoVVjAxMjJfUE9LRU1PTl9NUl9NSU1FEHoSGQoVVjAxMjNfUE9LRU1P",
-            "Tl9TQ1lUSEVSEHsSFgoSVjAxMjRfUE9LRU1PTl9KWU5YEHwSHAoYVjAxMjVf",
-            "UE9LRU1PTl9FTEVDVEFCVVpaEH0SGAoUVjAxMjZfUE9LRU1PTl9NQUdNQVIQ",
-            "fhIYChRWMDEyN19QT0tFTU9OX1BJTlNJUhB/EhkKFFYwMTI4X1BPS0VNT05f",
-            "VEFVUk9TEIABEhsKFlYwMTI5X1BPS0VNT05fTUFHSUtBUlAQgQESGwoWVjAx",
-            "MzBfUE9LRU1PTl9HWUFSQURPUxCCARIZChRWMDEzMV9QT0tFTU9OX0xBUFJB",
-            "UxCDARIYChNWMDEzMl9QT0tFTU9OX0RJVFRPEIQBEhgKE1YwMTMzX1BPS0VN",
-            "T05fRUVWRUUQhQESGwoWVjAxMzRfUE9LRU1PTl9WQVBPUkVPThCGARIaChVW",
-            "MDEzNV9QT0tFTU9OX0pPTFRFT04QhwESGgoVVjAxMzZfUE9LRU1PTl9GTEFS",
-            "RU9OEIgBEhoKFVYwMTM3X1BPS0VNT05fUE9SWUdPThCJARIaChVWMDEzOF9Q",
-            "T0tFTU9OX09NQU5ZVEUQigESGgoVVjAxMzlfUE9LRU1PTl9PTUFTVEFSEIsB",
-            "EhkKFFYwMTQwX1BPS0VNT05fS0FCVVRPEIwBEhsKFlYwMTQxX1BPS0VNT05f",
-            "S0FCVVRPUFMQjQESHQoYVjAxNDJfUE9LRU1PTl9BRVJPREFDVFlMEI4BEhoK",
-            "FVYwMTQzX1BPS0VNT05fU05PUkxBWBCPARIbChZWMDE0NF9QT0tFTU9OX0FS",
-            "VElDVU5PEJABEhkKFFYwMTQ1X1BPS0VNT05fWkFQRE9TEJEBEhoKFVYwMTQ2",
-            "X1BPS0VNT05fTU9MVFJFUxCSARIaChVWMDE0N19QT0tFTU9OX0RSQVRJTkkQ",
-            "kwESHAoXVjAxNDhfUE9LRU1PTl9EUkFHT05BSVIQlAESHAoXVjAxNDlfUE9L",
-            "RU1PTl9EUkFHT05JVEUQlQESGQoUVjAxNTBfUE9LRU1PTl9NRVdUV08QlgES",
-            "FgoRVjAxNTFfUE9LRU1PTl9NRVcQlwFiBnByb3RvMw=="));
-      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-          new pbr::FileDescriptor[] { },
-          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Unknown7", "Payload", "ErrorMessage" }, null, new[]{ typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.PokemonIds) }, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7.Parser, new[]{ "Unknown71", "Unknown72", "Unknown73" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload.Parser, new[]{ "Status", "MissPercent", "CapturedPokemonId", "Scores" }, null, null, null)})
-          }));
-    }
-    #endregion
-
-  }
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class CatchPokemonResponse : pb::IMessage<CatchPokemonResponse> {
-    private static readonly pb::MessageParser<CatchPokemonResponse> _parser = new pb::MessageParser<CatchPokemonResponse>(() => new CatchPokemonResponse());
-    public static pb::MessageParser<CatchPokemonResponse> Parser { get { return _parser; } }
-
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponseReflection.Descriptor.MessageTypes[0]; }
-    }
-
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    public CatchPokemonResponse() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    public CatchPokemonResponse(CatchPokemonResponse other) : this() {
-      unknown1_ = other.unknown1_;
-      unknown2_ = other.unknown2_;
-      apiUrl_ = other.apiUrl_;
-      Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
-      Unknown7 = other.unknown7_ != null ? other.Unknown7.Clone() : null;
-      payload_ = other.payload_.Clone();
-      errorMessage_ = other.errorMessage_;
-    }
-
-    public CatchPokemonResponse Clone() {
-      return new CatchPokemonResponse(this);
-    }
-
-    /// <summary>Field number for the "unknown1" field.</summary>
-    public const int Unknown1FieldNumber = 1;
-    private int unknown1_;
-    public int Unknown1 {
-      get { return unknown1_; }
-      set {
-        unknown1_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown2" field.</summary>
-    public const int Unknown2FieldNumber = 2;
-    private long unknown2_;
-    public long Unknown2 {
-      get { return unknown2_; }
-      set {
-        unknown2_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "api_url" field.</summary>
-    public const int ApiUrlFieldNumber = 3;
-    private string apiUrl_ = "";
-    public string ApiUrl {
-      get { return apiUrl_; }
-      set {
-        apiUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "unknown6" field.</summary>
-    public const int Unknown6FieldNumber = 6;
-    private global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6 unknown6_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6 Unknown6 {
-      get { return unknown6_; }
-      set {
-        unknown6_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown7" field.</summary>
-    public const int Unknown7FieldNumber = 7;
-    private global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7 unknown7_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7 Unknown7 {
-      get { return unknown7_; }
-      set {
-        unknown7_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "payload" field.</summary>
-    public const int PayloadFieldNumber = 100;
-    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload> _repeated_payload_codec
-        = pb::FieldCodec.ForMessage(802, global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload.Parser);
-    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload> payload_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload>();
-    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload> Payload {
-      get { return payload_; }
-    }
-
-    /// <summary>Field number for the "errorMessage" field.</summary>
-    public const int ErrorMessageFieldNumber = 101;
-    private string errorMessage_ = "";
-    /// <summary>
-    /// Should be moved to an error-proto file if error is always 101 field
-    /// </summary>
-    public string ErrorMessage {
-      get { return errorMessage_; }
-      set {
-        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    public override bool Equals(object other) {
-      return Equals(other as CatchPokemonResponse);
-    }
-
-    public bool Equals(CatchPokemonResponse other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Unknown1 != other.Unknown1) return false;
-      if (Unknown2 != other.Unknown2) return false;
-      if (ApiUrl != other.ApiUrl) return false;
-      if (!object.Equals(Unknown6, other.Unknown6)) return false;
-      if (!object.Equals(Unknown7, other.Unknown7)) return false;
-      if(!payload_.Equals(other.payload_)) return false;
-      if (ErrorMessage != other.ErrorMessage) return false;
-      return true;
-    }
-
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-      if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
-      if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
-      if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
-      if (unknown7_ != null) hash ^= Unknown7.GetHashCode();
-      hash ^= payload_.GetHashCode();
-      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
-      return hash;
-    }
-
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Unknown1 != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        output.WriteRawTag(16);
-        output.WriteInt64(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        output.WriteRawTag(50);
-        output.WriteMessage(Unknown6);
-      }
-      if (unknown7_ != null) {
-        output.WriteRawTag(58);
-        output.WriteMessage(Unknown7);
-      }
-      payload_.WriteTo(output, _repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        output.WriteRawTag(170, 6);
-        output.WriteString(ErrorMessage);
-      }
-    }
-
-    public int CalculateSize() {
-      int size = 0;
-      if (Unknown1 != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
-      }
-      if (unknown7_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown7);
-      }
-      size += payload_.CalculateSize(_repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        size += 2 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
-      }
-      return size;
-    }
-
-    public void MergeFrom(CatchPokemonResponse other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Unknown1 != 0) {
-        Unknown1 = other.Unknown1;
-      }
-      if (other.Unknown2 != 0L) {
-        Unknown2 = other.Unknown2;
-      }
-      if (other.ApiUrl.Length != 0) {
-        ApiUrl = other.ApiUrl;
-      }
-      if (other.unknown6_ != null) {
-        if (unknown6_ == null) {
-          unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6();
-        }
-        Unknown6.MergeFrom(other.Unknown6);
-      }
-      if (other.unknown7_ != null) {
-        if (unknown7_ == null) {
-          unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7();
-        }
-        Unknown7.MergeFrom(other.Unknown7);
-      }
-      payload_.Add(other.payload_);
-      if (other.ErrorMessage.Length != 0) {
-        ErrorMessage = other.ErrorMessage;
-      }
-    }
-
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Unknown1 = input.ReadInt32();
-            break;
-          }
-          case 16: {
-            Unknown2 = input.ReadInt64();
-            break;
-          }
-          case 26: {
-            ApiUrl = input.ReadString();
-            break;
-          }
-          case 50: {
-            if (unknown6_ == null) {
-              unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6();
-            }
-            input.ReadMessage(unknown6_);
-            break;
-          }
-          case 58: {
-            if (unknown7_ == null) {
-              unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7();
-            }
-            input.ReadMessage(unknown7_);
-            break;
-          }
-          case 802: {
-            payload_.AddEntriesFrom(input, _repeated_payload_codec);
-            break;
-          }
-          case 810: {
-            ErrorMessage = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-    #region Nested types
-    /// <summary>Container for nested types declared in the CatchPokemonResponse message type.</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      public enum PokemonIds {
-        [pbr::OriginalName("POKEMON_UNSET")] PokemonUnset = 0,
-        [pbr::OriginalName("V0001_POKEMON_BULBASAUR")] V0001PokemonBulbasaur = 1,
-        [pbr::OriginalName("V0002_POKEMON_IVYSAUR")] V0002PokemonIvysaur = 2,
-        [pbr::OriginalName("V0003_POKEMON_VENUSAUR")] V0003PokemonVenusaur = 3,
-        [pbr::OriginalName("V0004_POKEMON_CHARMANDER")] V0004PokemonCharmander = 4,
-        [pbr::OriginalName("V0005_POKEMON_CHARMELEON")] V0005PokemonCharmeleon = 5,
-        [pbr::OriginalName("V0006_POKEMON_CHARIZARD")] V0006PokemonCharizard = 6,
-        [pbr::OriginalName("V0007_POKEMON_SQUIRTLE")] V0007PokemonSquirtle = 7,
-        [pbr::OriginalName("V0008_POKEMON_WARTORTLE")] V0008PokemonWartortle = 8,
-        [pbr::OriginalName("V0009_POKEMON_BLASTOISE")] V0009PokemonBlastoise = 9,
-        [pbr::OriginalName("V0010_POKEMON_CATERPIE")] V0010PokemonCaterpie = 10,
-        [pbr::OriginalName("V0011_POKEMON_METAPOD")] V0011PokemonMetapod = 11,
-        [pbr::OriginalName("V0012_POKEMON_BUTTERFREE")] V0012PokemonButterfree = 12,
-        [pbr::OriginalName("V0013_POKEMON_WEEDLE")] V0013PokemonWeedle = 13,
-        [pbr::OriginalName("V0014_POKEMON_KAKUNA")] V0014PokemonKakuna = 14,
-        [pbr::OriginalName("V0015_POKEMON_BEEDRILL")] V0015PokemonBeedrill = 15,
-        [pbr::OriginalName("V0016_POKEMON_PIDGEY")] V0016PokemonPidgey = 16,
-        [pbr::OriginalName("V0017_POKEMON_PIDGEOTTO")] V0017PokemonPidgeotto = 17,
-        [pbr::OriginalName("V0018_POKEMON_PIDGEOT")] V0018PokemonPidgeot = 18,
-        [pbr::OriginalName("V0019_POKEMON_RATTATA")] V0019PokemonRattata = 19,
-        [pbr::OriginalName("V0020_POKEMON_RATICATE")] V0020PokemonRaticate = 20,
-        [pbr::OriginalName("V0021_POKEMON_SPEAROW")] V0021PokemonSpearow = 21,
-        [pbr::OriginalName("V0022_POKEMON_FEAROW")] V0022PokemonFearow = 22,
-        [pbr::OriginalName("V0023_POKEMON_EKANS")] V0023PokemonEkans = 23,
-        [pbr::OriginalName("V0024_POKEMON_ARBOK")] V0024PokemonArbok = 24,
-        [pbr::OriginalName("V0025_POKEMON_PIKACHU")] V0025PokemonPikachu = 25,
-        [pbr::OriginalName("V0026_POKEMON_RAICHU")] V0026PokemonRaichu = 26,
-        [pbr::OriginalName("V0027_POKEMON_SANDSHREW")] V0027PokemonSandshrew = 27,
-        [pbr::OriginalName("V0028_POKEMON_SANDSLASH")] V0028PokemonSandslash = 28,
-        [pbr::OriginalName("V0029_POKEMON_NIDORAN")] V0029PokemonNidoran = 29,
-        [pbr::OriginalName("V0030_POKEMON_NIDORINA")] V0030PokemonNidorina = 30,
-        [pbr::OriginalName("V0031_POKEMON_NIDOQUEEN")] V0031PokemonNidoqueen = 31,
-        [pbr::OriginalName("V0032_POKEMON_NIDORAN")] V0032PokemonNidoran = 32,
-        [pbr::OriginalName("V0033_POKEMON_NIDORINO")] V0033PokemonNidorino = 33,
-        [pbr::OriginalName("V0034_POKEMON_NIDOKING")] V0034PokemonNidoking = 34,
-        [pbr::OriginalName("V0035_POKEMON_CLEFAIRY")] V0035PokemonClefairy = 35,
-        [pbr::OriginalName("V0036_POKEMON_CLEFABLE")] V0036PokemonClefable = 36,
-        [pbr::OriginalName("V0037_POKEMON_VULPIX")] V0037PokemonVulpix = 37,
-        [pbr::OriginalName("V0038_POKEMON_NINETALES")] V0038PokemonNinetales = 38,
-        [pbr::OriginalName("V0039_POKEMON_JIGGLYPUFF")] V0039PokemonJigglypuff = 39,
-        [pbr::OriginalName("V0040_POKEMON_WIGGLYTUFF")] V0040PokemonWigglytuff = 40,
-        [pbr::OriginalName("V0041_POKEMON_ZUBAT")] V0041PokemonZubat = 41,
-        [pbr::OriginalName("V0042_POKEMON_GOLBAT")] V0042PokemonGolbat = 42,
-        [pbr::OriginalName("V0043_POKEMON_ODDISH")] V0043PokemonOddish = 43,
-        [pbr::OriginalName("V0044_POKEMON_GLOOM")] V0044PokemonGloom = 44,
-        [pbr::OriginalName("V0045_POKEMON_VILEPLUME")] V0045PokemonVileplume = 45,
-        [pbr::OriginalName("V0046_POKEMON_PARAS")] V0046PokemonParas = 46,
-        [pbr::OriginalName("V0047_POKEMON_PARASECT")] V0047PokemonParasect = 47,
-        [pbr::OriginalName("V0048_POKEMON_VENONAT")] V0048PokemonVenonat = 48,
-        [pbr::OriginalName("V0049_POKEMON_VENOMOTH")] V0049PokemonVenomoth = 49,
-        [pbr::OriginalName("V0050_POKEMON_DIGLETT")] V0050PokemonDiglett = 50,
-        [pbr::OriginalName("V0051_POKEMON_DUGTRIO")] V0051PokemonDugtrio = 51,
-        [pbr::OriginalName("V0052_POKEMON_MEOWTH")] V0052PokemonMeowth = 52,
-        [pbr::OriginalName("V0053_POKEMON_PERSIAN")] V0053PokemonPersian = 53,
-        [pbr::OriginalName("V0054_POKEMON_PSYDUCK")] V0054PokemonPsyduck = 54,
-        [pbr::OriginalName("V0055_POKEMON_GOLDUCK")] V0055PokemonGolduck = 55,
-        [pbr::OriginalName("V0056_POKEMON_MANKEY")] V0056PokemonMankey = 56,
-        [pbr::OriginalName("V0057_POKEMON_PRIMEAPE")] V0057PokemonPrimeape = 57,
-        [pbr::OriginalName("V0058_POKEMON_GROWLITHE")] V0058PokemonGrowlithe = 58,
-        [pbr::OriginalName("V0059_POKEMON_ARCANINE")] V0059PokemonArcanine = 59,
-        [pbr::OriginalName("V0060_POKEMON_POLIWAG")] V0060PokemonPoliwag = 60,
-        [pbr::OriginalName("V0061_POKEMON_POLIWHIRL")] V0061PokemonPoliwhirl = 61,
-        [pbr::OriginalName("V0062_POKEMON_POLIWRATH")] V0062PokemonPoliwrath = 62,
-        [pbr::OriginalName("V0063_POKEMON_ABRA")] V0063PokemonAbra = 63,
-        [pbr::OriginalName("V0064_POKEMON_KADABRA")] V0064PokemonKadabra = 64,
-        [pbr::OriginalName("V0065_POKEMON_ALAKAZAM")] V0065PokemonAlakazam = 65,
-        [pbr::OriginalName("V0066_POKEMON_MACHOP")] V0066PokemonMachop = 66,
-        [pbr::OriginalName("V0067_POKEMON_MACHOKE")] V0067PokemonMachoke = 67,
-        [pbr::OriginalName("V0068_POKEMON_MACHAMP")] V0068PokemonMachamp = 68,
-        [pbr::OriginalName("V0069_POKEMON_BELLSPROUT")] V0069PokemonBellsprout = 69,
-        [pbr::OriginalName("V0070_POKEMON_WEEPINBELL")] V0070PokemonWeepinbell = 70,
-        [pbr::OriginalName("V0071_POKEMON_VICTREEBEL")] V0071PokemonVictreebel = 71,
-        [pbr::OriginalName("V0072_POKEMON_TENTACOOL")] V0072PokemonTentacool = 72,
-        [pbr::OriginalName("V0073_POKEMON_TENTACRUEL")] V0073PokemonTentacruel = 73,
-        [pbr::OriginalName("V0074_POKEMON_GEODUDE")] V0074PokemonGeodude = 74,
-        [pbr::OriginalName("V0075_POKEMON_GRAVELER")] V0075PokemonGraveler = 75,
-        [pbr::OriginalName("V0076_POKEMON_GOLEM")] V0076PokemonGolem = 76,
-        [pbr::OriginalName("V0077_POKEMON_PONYTA")] V0077PokemonPonyta = 77,
-        [pbr::OriginalName("V0078_POKEMON_RAPIDASH")] V0078PokemonRapidash = 78,
-        [pbr::OriginalName("V0079_POKEMON_SLOWPOKE")] V0079PokemonSlowpoke = 79,
-        [pbr::OriginalName("V0080_POKEMON_SLOWBRO")] V0080PokemonSlowbro = 80,
-        [pbr::OriginalName("V0081_POKEMON_MAGNEMITE")] V0081PokemonMagnemite = 81,
-        [pbr::OriginalName("V0082_POKEMON_MAGNETON")] V0082PokemonMagneton = 82,
-        [pbr::OriginalName("V0083_POKEMON_FARFETCHD")] V0083PokemonFarfetchd = 83,
-        [pbr::OriginalName("V0084_POKEMON_DODUO")] V0084PokemonDoduo = 84,
-        [pbr::OriginalName("V0085_POKEMON_DODRIO")] V0085PokemonDodrio = 85,
-        [pbr::OriginalName("V0086_POKEMON_SEEL")] V0086PokemonSeel = 86,
-        [pbr::OriginalName("V0087_POKEMON_DEWGONG")] V0087PokemonDewgong = 87,
-        [pbr::OriginalName("V0088_POKEMON_GRIMER")] V0088PokemonGrimer = 88,
-        [pbr::OriginalName("V0089_POKEMON_MUK")] V0089PokemonMuk = 89,
-        [pbr::OriginalName("V0090_POKEMON_SHELLDER")] V0090PokemonShellder = 90,
-        [pbr::OriginalName("V0091_POKEMON_CLOYSTER")] V0091PokemonCloyster = 91,
-        [pbr::OriginalName("V0092_POKEMON_GASTLY")] V0092PokemonGastly = 92,
-        [pbr::OriginalName("V0093_POKEMON_HAUNTER")] V0093PokemonHaunter = 93,
-        [pbr::OriginalName("V0094_POKEMON_GENGAR")] V0094PokemonGengar = 94,
-        [pbr::OriginalName("V0095_POKEMON_ONIX")] V0095PokemonOnix = 95,
-        [pbr::OriginalName("V0096_POKEMON_DROWZEE")] V0096PokemonDrowzee = 96,
-        [pbr::OriginalName("V0097_POKEMON_HYPNO")] V0097PokemonHypno = 97,
-        [pbr::OriginalName("V0098_POKEMON_KRABBY")] V0098PokemonKrabby = 98,
-        [pbr::OriginalName("V0099_POKEMON_KINGLER")] V0099PokemonKingler = 99,
-        [pbr::OriginalName("V0100_POKEMON_VOLTORB")] V0100PokemonVoltorb = 100,
-        [pbr::OriginalName("V0101_POKEMON_ELECTRODE")] V0101PokemonElectrode = 101,
-        [pbr::OriginalName("V0102_POKEMON_EXEGGCUTE")] V0102PokemonExeggcute = 102,
-        [pbr::OriginalName("V0103_POKEMON_EXEGGUTOR")] V0103PokemonExeggutor = 103,
-        [pbr::OriginalName("V0104_POKEMON_CUBONE")] V0104PokemonCubone = 104,
-        [pbr::OriginalName("V0105_POKEMON_MAROWAK")] V0105PokemonMarowak = 105,
-        [pbr::OriginalName("V0106_POKEMON_HITMONLEE")] V0106PokemonHitmonlee = 106,
-        [pbr::OriginalName("V0107_POKEMON_HITMONCHAN")] V0107PokemonHitmonchan = 107,
-        [pbr::OriginalName("V0108_POKEMON_LICKITUNG")] V0108PokemonLickitung = 108,
-        [pbr::OriginalName("V0109_POKEMON_KOFFING")] V0109PokemonKoffing = 109,
-        [pbr::OriginalName("V0110_POKEMON_WEEZING")] V0110PokemonWeezing = 110,
-        [pbr::OriginalName("V0111_POKEMON_RHYHORN")] V0111PokemonRhyhorn = 111,
-        [pbr::OriginalName("V0112_POKEMON_RHYDON")] V0112PokemonRhydon = 112,
-        [pbr::OriginalName("V0113_POKEMON_CHANSEY")] V0113PokemonChansey = 113,
-        [pbr::OriginalName("V0114_POKEMON_TANGELA")] V0114PokemonTangela = 114,
-        [pbr::OriginalName("V0115_POKEMON_KANGASKHAN")] V0115PokemonKangaskhan = 115,
-        [pbr::OriginalName("V0116_POKEMON_HORSEA")] V0116PokemonHorsea = 116,
-        [pbr::OriginalName("V0117_POKEMON_SEADRA")] V0117PokemonSeadra = 117,
-        [pbr::OriginalName("V0118_POKEMON_GOLDEEN")] V0118PokemonGoldeen = 118,
-        [pbr::OriginalName("V0119_POKEMON_SEAKING")] V0119PokemonSeaking = 119,
-        [pbr::OriginalName("V0120_POKEMON_STARYU")] V0120PokemonStaryu = 120,
-        [pbr::OriginalName("V0121_POKEMON_STARMIE")] V0121PokemonStarmie = 121,
-        [pbr::OriginalName("V0122_POKEMON_MR_MIME")] V0122PokemonMrMime = 122,
-        [pbr::OriginalName("V0123_POKEMON_SCYTHER")] V0123PokemonScyther = 123,
-        [pbr::OriginalName("V0124_POKEMON_JYNX")] V0124PokemonJynx = 124,
-        [pbr::OriginalName("V0125_POKEMON_ELECTABUZZ")] V0125PokemonElectabuzz = 125,
-        [pbr::OriginalName("V0126_POKEMON_MAGMAR")] V0126PokemonMagmar = 126,
-        [pbr::OriginalName("V0127_POKEMON_PINSIR")] V0127PokemonPinsir = 127,
-        [pbr::OriginalName("V0128_POKEMON_TAUROS")] V0128PokemonTauros = 128,
-        [pbr::OriginalName("V0129_POKEMON_MAGIKARP")] V0129PokemonMagikarp = 129,
-        [pbr::OriginalName("V0130_POKEMON_GYARADOS")] V0130PokemonGyarados = 130,
-        [pbr::OriginalName("V0131_POKEMON_LAPRAS")] V0131PokemonLapras = 131,
-        [pbr::OriginalName("V0132_POKEMON_DITTO")] V0132PokemonDitto = 132,
-        [pbr::OriginalName("V0133_POKEMON_EEVEE")] V0133PokemonEevee = 133,
-        [pbr::OriginalName("V0134_POKEMON_VAPOREON")] V0134PokemonVaporeon = 134,
-        [pbr::OriginalName("V0135_POKEMON_JOLTEON")] V0135PokemonJolteon = 135,
-        [pbr::OriginalName("V0136_POKEMON_FLAREON")] V0136PokemonFlareon = 136,
-        [pbr::OriginalName("V0137_POKEMON_PORYGON")] V0137PokemonPorygon = 137,
-        [pbr::OriginalName("V0138_POKEMON_OMANYTE")] V0138PokemonOmanyte = 138,
-        [pbr::OriginalName("V0139_POKEMON_OMASTAR")] V0139PokemonOmastar = 139,
-        [pbr::OriginalName("V0140_POKEMON_KABUTO")] V0140PokemonKabuto = 140,
-        [pbr::OriginalName("V0141_POKEMON_KABUTOPS")] V0141PokemonKabutops = 141,
-        [pbr::OriginalName("V0142_POKEMON_AERODACTYL")] V0142PokemonAerodactyl = 142,
-        [pbr::OriginalName("V0143_POKEMON_SNORLAX")] V0143PokemonSnorlax = 143,
-        [pbr::OriginalName("V0144_POKEMON_ARTICUNO")] V0144PokemonArticuno = 144,
-        [pbr::OriginalName("V0145_POKEMON_ZAPDOS")] V0145PokemonZapdos = 145,
-        [pbr::OriginalName("V0146_POKEMON_MOLTRES")] V0146PokemonMoltres = 146,
-        [pbr::OriginalName("V0147_POKEMON_DRATINI")] V0147PokemonDratini = 147,
-        [pbr::OriginalName("V0148_POKEMON_DRAGONAIR")] V0148PokemonDragonair = 148,
-        [pbr::OriginalName("V0149_POKEMON_DRAGONITE")] V0149PokemonDragonite = 149,
-        [pbr::OriginalName("V0150_POKEMON_MEWTWO")] V0150PokemonMewtwo = 150,
-        [pbr::OriginalName("V0151_POKEMON_MEW")] V0151PokemonMew = 151,
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Unknown6 : pb::IMessage<Unknown6> {
-        private static readonly pb::MessageParser<Unknown6> _parser = new pb::MessageParser<Unknown6>(() => new Unknown6());
-        public static pb::MessageParser<Unknown6> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Descriptor.NestedTypes[0]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Unknown6() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Unknown6(Unknown6 other) : this() {
-          unknown1_ = other.unknown1_;
-          Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
-        }
-
-        public Unknown6 Clone() {
-          return new Unknown6(this);
-        }
-
-        /// <summary>Field number for the "unknown1" field.</summary>
-        public const int Unknown1FieldNumber = 1;
-        private int unknown1_;
-        public int Unknown1 {
-          get { return unknown1_; }
-          set {
-            unknown1_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown2" field.</summary>
-        public const int Unknown2FieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2 unknown2_;
-        public global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2 Unknown2 {
-          get { return unknown2_; }
-          set {
-            unknown2_ = value;
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Unknown6);
-        }
-
-        public bool Equals(Unknown6 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown1 != other.Unknown1) return false;
-          if (!object.Equals(Unknown2, other.Unknown2)) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-          if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown1 != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Unknown1);
-          }
-          if (unknown2_ != null) {
-            output.WriteRawTag(18);
-            output.WriteMessage(Unknown2);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown1 != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-          }
-          if (unknown2_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Unknown6 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown1 != 0) {
-            Unknown1 = other.Unknown1;
-          }
-          if (other.unknown2_ != null) {
-            if (unknown2_ == null) {
-              unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2();
-            }
-            Unknown2.MergeFrom(other.Unknown2);
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Unknown1 = input.ReadInt32();
-                break;
-              }
-              case 18: {
-                if (unknown2_ == null) {
-                  unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2();
-                }
-                input.ReadMessage(unknown2_);
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types {
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class Unknown2 : pb::IMessage<Unknown2> {
-            private static readonly pb::MessageParser<Unknown2> _parser = new pb::MessageParser<Unknown2>(() => new Unknown2());
-            public static pb::MessageParser<Unknown2> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Descriptor.NestedTypes[0]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            public Unknown2() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public Unknown2(Unknown2 other) : this() {
-              unknown1_ = other.unknown1_;
-            }
-
-            public Unknown2 Clone() {
-              return new Unknown2(this);
-            }
-
-            /// <summary>Field number for the "unknown1" field.</summary>
-            public const int Unknown1FieldNumber = 1;
-            private pb::ByteString unknown1_ = pb::ByteString.Empty;
-            public pb::ByteString Unknown1 {
-              get { return unknown1_; }
-              set {
-                unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            public override bool Equals(object other) {
-              return Equals(other as Unknown2);
-            }
-
-            public bool Equals(Unknown2 other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Unknown1 != other.Unknown1) return false;
-              return true;
-            }
-
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
-              return hash;
-            }
-
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Unknown1.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteBytes(Unknown1);
-              }
-            }
-
-            public int CalculateSize() {
-              int size = 0;
-              if (Unknown1.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
-              }
-              return size;
-            }
-
-            public void MergeFrom(Unknown2 other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Unknown1.Length != 0) {
-                Unknown1 = other.Unknown1;
-              }
-            }
-
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    Unknown1 = input.ReadBytes();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-        }
-        #endregion
-
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Unknown7 : pb::IMessage<Unknown7> {
-        private static readonly pb::MessageParser<Unknown7> _parser = new pb::MessageParser<Unknown7>(() => new Unknown7());
-        public static pb::MessageParser<Unknown7> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Descriptor.NestedTypes[1]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Unknown7() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Unknown7(Unknown7 other) : this() {
-          unknown71_ = other.unknown71_;
-          unknown72_ = other.unknown72_;
-          unknown73_ = other.unknown73_;
-        }
-
-        public Unknown7 Clone() {
-          return new Unknown7(this);
-        }
-
-        /// <summary>Field number for the "unknown71" field.</summary>
-        public const int Unknown71FieldNumber = 1;
-        private pb::ByteString unknown71_ = pb::ByteString.Empty;
-        public pb::ByteString Unknown71 {
-          get { return unknown71_; }
-          set {
-            unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "unknown72" field.</summary>
-        public const int Unknown72FieldNumber = 2;
-        private long unknown72_;
-        public long Unknown72 {
-          get { return unknown72_; }
-          set {
-            unknown72_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown73" field.</summary>
-        public const int Unknown73FieldNumber = 3;
-        private pb::ByteString unknown73_ = pb::ByteString.Empty;
-        public pb::ByteString Unknown73 {
-          get { return unknown73_; }
-          set {
-            unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Unknown7);
-        }
-
-        public bool Equals(Unknown7 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown71 != other.Unknown71) return false;
-          if (Unknown72 != other.Unknown72) return false;
-          if (Unknown73 != other.Unknown73) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
-          if (Unknown72 != 0L) hash ^= Unknown72.GetHashCode();
-          if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown71.Length != 0) {
-            output.WriteRawTag(10);
-            output.WriteBytes(Unknown71);
-          }
-          if (Unknown72 != 0L) {
-            output.WriteRawTag(16);
-            output.WriteInt64(Unknown72);
-          }
-          if (Unknown73.Length != 0) {
-            output.WriteRawTag(26);
-            output.WriteBytes(Unknown73);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown71.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
-          }
-          if (Unknown72 != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown72);
-          }
-          if (Unknown73.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Unknown7 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown71.Length != 0) {
-            Unknown71 = other.Unknown71;
-          }
-          if (other.Unknown72 != 0L) {
-            Unknown72 = other.Unknown72;
-          }
-          if (other.Unknown73.Length != 0) {
-            Unknown73 = other.Unknown73;
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 10: {
-                Unknown71 = input.ReadBytes();
-                break;
-              }
-              case 16: {
-                Unknown72 = input.ReadInt64();
-                break;
-              }
-              case 26: {
-                Unknown73 = input.ReadBytes();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Payload : pb::IMessage<Payload> {
-        private static readonly pb::MessageParser<Payload> _parser = new pb::MessageParser<Payload>(() => new Payload());
-        public static pb::MessageParser<Payload> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Descriptor.NestedTypes[2]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Payload() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Payload(Payload other) : this() {
-          status_ = other.status_;
-          missPercent_ = other.missPercent_;
-          capturedPokemonId_ = other.capturedPokemonId_;
-          scores_ = other.scores_;
-        }
-
-        public Payload Clone() {
-          return new Payload(this);
-        }
-
-        /// <summary>Field number for the "Status" field.</summary>
-        public const int StatusFieldNumber = 1;
-        private int status_;
-        public int Status {
-          get { return status_; }
-          set {
-            status_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "MissPercent" field.</summary>
-        public const int MissPercentFieldNumber = 2;
-        private ulong missPercent_;
-        public ulong MissPercent {
-          get { return missPercent_; }
-          set {
-            missPercent_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "CapturedPokemonId" field.</summary>
-        public const int CapturedPokemonIdFieldNumber = 3;
-        private global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.PokemonIds capturedPokemonId_ = 0;
-        public global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.PokemonIds CapturedPokemonId {
-          get { return capturedPokemonId_; }
-          set {
-            capturedPokemonId_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Scores" field.</summary>
-        public const int ScoresFieldNumber = 4;
-        private int scores_;
-        public int Scores {
-          get { return scores_; }
-          set {
-            scores_ = value;
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Payload);
-        }
-
-        public bool Equals(Payload other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Status != other.Status) return false;
-          if (MissPercent != other.MissPercent) return false;
-          if (CapturedPokemonId != other.CapturedPokemonId) return false;
-          if (Scores != other.Scores) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Status != 0) hash ^= Status.GetHashCode();
-          if (MissPercent != 0UL) hash ^= MissPercent.GetHashCode();
-          if (CapturedPokemonId != 0) hash ^= CapturedPokemonId.GetHashCode();
-          if (Scores != 0) hash ^= Scores.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Status != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Status);
-          }
-          if (MissPercent != 0UL) {
-            output.WriteRawTag(17);
-            output.WriteFixed64(MissPercent);
-          }
-          if (CapturedPokemonId != 0) {
-            output.WriteRawTag(24);
-            output.WriteEnum((int) CapturedPokemonId);
-          }
-          if (Scores != 0) {
-            output.WriteRawTag(32);
-            output.WriteInt32(Scores);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Status != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Status);
-          }
-          if (MissPercent != 0UL) {
-            size += 1 + 8;
-          }
-          if (CapturedPokemonId != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) CapturedPokemonId);
-          }
-          if (Scores != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Scores);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Payload other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Status != 0) {
-            Status = other.Status;
-          }
-          if (other.MissPercent != 0UL) {
-            MissPercent = other.MissPercent;
-          }
-          if (other.CapturedPokemonId != 0) {
-            CapturedPokemonId = other.CapturedPokemonId;
-          }
-          if (other.Scores != 0) {
-            Scores = other.Scores;
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Status = input.ReadInt32();
-                break;
-              }
-              case 17: {
-                MissPercent = input.ReadFixed64();
-                break;
-              }
-              case 24: {
-                capturedPokemonId_ = (global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.PokemonIds) input.ReadEnum();
-                break;
-              }
-              case 32: {
-                Scores = input.ReadInt32();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-    }
-    #endregion
-
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/GeneratedCode/FortDetailResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/FortDetailResponse.cs
deleted file mode 100644
index 4fdab1d..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/FortDetailResponse.cs
+++ /dev/null
@@ -1,1171 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: FortDetailResponse.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-namespace PokemonGo.RocketAPI.GeneratedCode {
-
-  /// <summary>Holder for reflection information generated from FortDetailResponse.proto</summary>
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class FortDetailResponseReflection {
-
-    #region Descriptor
-    /// <summary>File descriptor for FortDetailResponse.proto</summary>
-    public static pbr::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbr::FileDescriptor descriptor;
-
-    static FortDetailResponseReflection() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "ChhGb3J0RGV0YWlsUmVzcG9uc2UucHJvdG8SIVBva2Vtb25Hby5Sb2NrZXRB",
-            "UEkuR2VuZXJhdGVkQ29kZSKWBgoSRm9ydERldGFpbFJlc3BvbnNlEhAKCHVu",
-            "a25vd24xGAEgASgFEhAKCHVua25vd24yGAIgASgDEg8KB2FwaV91cmwYAyAB",
-            "KAkSUAoIdW5rbm93bjYYBiABKAsyPi5Qb2tlbW9uR28uUm9ja2V0QVBJLkdl",
-            "bmVyYXRlZENvZGUuRm9ydERldGFpbFJlc3BvbnNlLlVua25vd242ElAKCHVu",
-            "a25vd243GAcgASgLMj4uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRD",
-            "b2RlLkZvcnREZXRhaWxSZXNwb25zZS5Vbmtub3duNxJOCgdwYXlsb2FkGGQg",
-            "AygLMj0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkZvcnRE",
-            "ZXRhaWxSZXNwb25zZS5QYXlsb2FkEhQKDGVycm9yTWVzc2FnZRhlIAEoCRqV",
-            "AQoIVW5rbm93bjYSEAoIdW5rbm93bjEYASABKAUSWQoIdW5rbm93bjIYAiAB",
-            "KAsyRy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRm9ydERl",
-            "dGFpbFJlc3BvbnNlLlVua25vd242LlVua25vd24yGhwKCFVua25vd24yEhAK",
-            "CHVua25vd24xGAEgASgMGkMKCFVua25vd243EhEKCXVua25vd243MRgBIAEo",
-            "DBIRCgl1bmtub3duNzIYAiABKAMSEQoJdW5rbm93bjczGAMgASgMGuMBCgdQ",
-            "YXlsb2FkEgoKAklkGAEgASgJEgwKBFRlYW0YAiABKAUSDwoHUG9rZW1vbhgD",
-            "IAEoBRIMCgROYW1lGAQgASgJEhAKCEltYWdlVXJsGAUgASgJEgoKAkZwGAYg",
-            "ASgFEg8KB1N0YW1pbmEYByABKAUSEgoKTWF4U3RhbWluYRgIIAEoBRIQCghG",
-            "b3J0VHlwZRgJIAEoBRIQCghMYXRpdHVkZRgKIAEoAxIRCglMb25naXR1ZGUY",
-            "CyABKAMSEwoLRGVzY3JpcHRpb24YDCABKAkSEAoITW9kaWZpZXIYDSABKAVi",
-            "BnByb3RvMw=="));
-      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-          new pbr::FileDescriptor[] { },
-          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse), global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Unknown7", "Payload", "ErrorMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown7), global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown7.Parser, new[]{ "Unknown71", "Unknown72", "Unknown73" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Payload), global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Payload.Parser, new[]{ "Id", "Team", "Pokemon", "Name", "ImageUrl", "Fp", "Stamina", "MaxStamina", "FortType", "Latitude", "Longitude", "Description", "Modifier" }, null, null, null)})
-          }));
-    }
-    #endregion
-
-  }
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class FortDetailResponse : pb::IMessage<FortDetailResponse> {
-    private static readonly pb::MessageParser<FortDetailResponse> _parser = new pb::MessageParser<FortDetailResponse>(() => new FortDetailResponse());
-    public static pb::MessageParser<FortDetailResponse> Parser { get { return _parser; } }
-
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponseReflection.Descriptor.MessageTypes[0]; }
-    }
-
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    public FortDetailResponse() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    public FortDetailResponse(FortDetailResponse other) : this() {
-      unknown1_ = other.unknown1_;
-      unknown2_ = other.unknown2_;
-      apiUrl_ = other.apiUrl_;
-      Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
-      Unknown7 = other.unknown7_ != null ? other.Unknown7.Clone() : null;
-      payload_ = other.payload_.Clone();
-      errorMessage_ = other.errorMessage_;
-    }
-
-    public FortDetailResponse Clone() {
-      return new FortDetailResponse(this);
-    }
-
-    /// <summary>Field number for the "unknown1" field.</summary>
-    public const int Unknown1FieldNumber = 1;
-    private int unknown1_;
-    public int Unknown1 {
-      get { return unknown1_; }
-      set {
-        unknown1_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown2" field.</summary>
-    public const int Unknown2FieldNumber = 2;
-    private long unknown2_;
-    public long Unknown2 {
-      get { return unknown2_; }
-      set {
-        unknown2_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "api_url" field.</summary>
-    public const int ApiUrlFieldNumber = 3;
-    private string apiUrl_ = "";
-    public string ApiUrl {
-      get { return apiUrl_; }
-      set {
-        apiUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "unknown6" field.</summary>
-    public const int Unknown6FieldNumber = 6;
-    private global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6 unknown6_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6 Unknown6 {
-      get { return unknown6_; }
-      set {
-        unknown6_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown7" field.</summary>
-    public const int Unknown7FieldNumber = 7;
-    private global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown7 unknown7_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown7 Unknown7 {
-      get { return unknown7_; }
-      set {
-        unknown7_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "payload" field.</summary>
-    public const int PayloadFieldNumber = 100;
-    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Payload> _repeated_payload_codec
-        = pb::FieldCodec.ForMessage(802, global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Payload.Parser);
-    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Payload> payload_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Payload>();
-    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Payload> Payload {
-      get { return payload_; }
-    }
-
-    /// <summary>Field number for the "errorMessage" field.</summary>
-    public const int ErrorMessageFieldNumber = 101;
-    private string errorMessage_ = "";
-    /// <summary>
-    /// Should be moved to an error-proto file if error is always 101 field
-    /// </summary>
-    public string ErrorMessage {
-      get { return errorMessage_; }
-      set {
-        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    public override bool Equals(object other) {
-      return Equals(other as FortDetailResponse);
-    }
-
-    public bool Equals(FortDetailResponse other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Unknown1 != other.Unknown1) return false;
-      if (Unknown2 != other.Unknown2) return false;
-      if (ApiUrl != other.ApiUrl) return false;
-      if (!object.Equals(Unknown6, other.Unknown6)) return false;
-      if (!object.Equals(Unknown7, other.Unknown7)) return false;
-      if(!payload_.Equals(other.payload_)) return false;
-      if (ErrorMessage != other.ErrorMessage) return false;
-      return true;
-    }
-
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-      if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
-      if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
-      if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
-      if (unknown7_ != null) hash ^= Unknown7.GetHashCode();
-      hash ^= payload_.GetHashCode();
-      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
-      return hash;
-    }
-
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Unknown1 != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        output.WriteRawTag(16);
-        output.WriteInt64(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        output.WriteRawTag(50);
-        output.WriteMessage(Unknown6);
-      }
-      if (unknown7_ != null) {
-        output.WriteRawTag(58);
-        output.WriteMessage(Unknown7);
-      }
-      payload_.WriteTo(output, _repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        output.WriteRawTag(170, 6);
-        output.WriteString(ErrorMessage);
-      }
-    }
-
-    public int CalculateSize() {
-      int size = 0;
-      if (Unknown1 != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
-      }
-      if (unknown7_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown7);
-      }
-      size += payload_.CalculateSize(_repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        size += 2 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
-      }
-      return size;
-    }
-
-    public void MergeFrom(FortDetailResponse other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Unknown1 != 0) {
-        Unknown1 = other.Unknown1;
-      }
-      if (other.Unknown2 != 0L) {
-        Unknown2 = other.Unknown2;
-      }
-      if (other.ApiUrl.Length != 0) {
-        ApiUrl = other.ApiUrl;
-      }
-      if (other.unknown6_ != null) {
-        if (unknown6_ == null) {
-          unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6();
-        }
-        Unknown6.MergeFrom(other.Unknown6);
-      }
-      if (other.unknown7_ != null) {
-        if (unknown7_ == null) {
-          unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown7();
-        }
-        Unknown7.MergeFrom(other.Unknown7);
-      }
-      payload_.Add(other.payload_);
-      if (other.ErrorMessage.Length != 0) {
-        ErrorMessage = other.ErrorMessage;
-      }
-    }
-
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Unknown1 = input.ReadInt32();
-            break;
-          }
-          case 16: {
-            Unknown2 = input.ReadInt64();
-            break;
-          }
-          case 26: {
-            ApiUrl = input.ReadString();
-            break;
-          }
-          case 50: {
-            if (unknown6_ == null) {
-              unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6();
-            }
-            input.ReadMessage(unknown6_);
-            break;
-          }
-          case 58: {
-            if (unknown7_ == null) {
-              unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown7();
-            }
-            input.ReadMessage(unknown7_);
-            break;
-          }
-          case 802: {
-            payload_.AddEntriesFrom(input, _repeated_payload_codec);
-            break;
-          }
-          case 810: {
-            ErrorMessage = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-    #region Nested types
-    /// <summary>Container for nested types declared in the FortDetailResponse message type.</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Unknown6 : pb::IMessage<Unknown6> {
-        private static readonly pb::MessageParser<Unknown6> _parser = new pb::MessageParser<Unknown6>(() => new Unknown6());
-        public static pb::MessageParser<Unknown6> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Descriptor.NestedTypes[0]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Unknown6() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Unknown6(Unknown6 other) : this() {
-          unknown1_ = other.unknown1_;
-          Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
-        }
-
-        public Unknown6 Clone() {
-          return new Unknown6(this);
-        }
-
-        /// <summary>Field number for the "unknown1" field.</summary>
-        public const int Unknown1FieldNumber = 1;
-        private int unknown1_;
-        public int Unknown1 {
-          get { return unknown1_; }
-          set {
-            unknown1_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown2" field.</summary>
-        public const int Unknown2FieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6.Types.Unknown2 unknown2_;
-        public global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6.Types.Unknown2 Unknown2 {
-          get { return unknown2_; }
-          set {
-            unknown2_ = value;
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Unknown6);
-        }
-
-        public bool Equals(Unknown6 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown1 != other.Unknown1) return false;
-          if (!object.Equals(Unknown2, other.Unknown2)) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-          if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown1 != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Unknown1);
-          }
-          if (unknown2_ != null) {
-            output.WriteRawTag(18);
-            output.WriteMessage(Unknown2);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown1 != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-          }
-          if (unknown2_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Unknown6 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown1 != 0) {
-            Unknown1 = other.Unknown1;
-          }
-          if (other.unknown2_ != null) {
-            if (unknown2_ == null) {
-              unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6.Types.Unknown2();
-            }
-            Unknown2.MergeFrom(other.Unknown2);
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Unknown1 = input.ReadInt32();
-                break;
-              }
-              case 18: {
-                if (unknown2_ == null) {
-                  unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6.Types.Unknown2();
-                }
-                input.ReadMessage(unknown2_);
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types {
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class Unknown2 : pb::IMessage<Unknown2> {
-            private static readonly pb::MessageParser<Unknown2> _parser = new pb::MessageParser<Unknown2>(() => new Unknown2());
-            public static pb::MessageParser<Unknown2> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Types.Unknown6.Descriptor.NestedTypes[0]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            public Unknown2() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public Unknown2(Unknown2 other) : this() {
-              unknown1_ = other.unknown1_;
-            }
-
-            public Unknown2 Clone() {
-              return new Unknown2(this);
-            }
-
-            /// <summary>Field number for the "unknown1" field.</summary>
-            public const int Unknown1FieldNumber = 1;
-            private pb::ByteString unknown1_ = pb::ByteString.Empty;
-            public pb::ByteString Unknown1 {
-              get { return unknown1_; }
-              set {
-                unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            public override bool Equals(object other) {
-              return Equals(other as Unknown2);
-            }
-
-            public bool Equals(Unknown2 other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Unknown1 != other.Unknown1) return false;
-              return true;
-            }
-
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
-              return hash;
-            }
-
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Unknown1.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteBytes(Unknown1);
-              }
-            }
-
-            public int CalculateSize() {
-              int size = 0;
-              if (Unknown1.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
-              }
-              return size;
-            }
-
-            public void MergeFrom(Unknown2 other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Unknown1.Length != 0) {
-                Unknown1 = other.Unknown1;
-              }
-            }
-
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    Unknown1 = input.ReadBytes();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-        }
-        #endregion
-
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Unknown7 : pb::IMessage<Unknown7> {
-        private static readonly pb::MessageParser<Unknown7> _parser = new pb::MessageParser<Unknown7>(() => new Unknown7());
-        public static pb::MessageParser<Unknown7> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Descriptor.NestedTypes[1]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Unknown7() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Unknown7(Unknown7 other) : this() {
-          unknown71_ = other.unknown71_;
-          unknown72_ = other.unknown72_;
-          unknown73_ = other.unknown73_;
-        }
-
-        public Unknown7 Clone() {
-          return new Unknown7(this);
-        }
-
-        /// <summary>Field number for the "unknown71" field.</summary>
-        public const int Unknown71FieldNumber = 1;
-        private pb::ByteString unknown71_ = pb::ByteString.Empty;
-        public pb::ByteString Unknown71 {
-          get { return unknown71_; }
-          set {
-            unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "unknown72" field.</summary>
-        public const int Unknown72FieldNumber = 2;
-        private long unknown72_;
-        public long Unknown72 {
-          get { return unknown72_; }
-          set {
-            unknown72_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown73" field.</summary>
-        public const int Unknown73FieldNumber = 3;
-        private pb::ByteString unknown73_ = pb::ByteString.Empty;
-        public pb::ByteString Unknown73 {
-          get { return unknown73_; }
-          set {
-            unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Unknown7);
-        }
-
-        public bool Equals(Unknown7 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown71 != other.Unknown71) return false;
-          if (Unknown72 != other.Unknown72) return false;
-          if (Unknown73 != other.Unknown73) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
-          if (Unknown72 != 0L) hash ^= Unknown72.GetHashCode();
-          if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown71.Length != 0) {
-            output.WriteRawTag(10);
-            output.WriteBytes(Unknown71);
-          }
-          if (Unknown72 != 0L) {
-            output.WriteRawTag(16);
-            output.WriteInt64(Unknown72);
-          }
-          if (Unknown73.Length != 0) {
-            output.WriteRawTag(26);
-            output.WriteBytes(Unknown73);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown71.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
-          }
-          if (Unknown72 != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown72);
-          }
-          if (Unknown73.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Unknown7 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown71.Length != 0) {
-            Unknown71 = other.Unknown71;
-          }
-          if (other.Unknown72 != 0L) {
-            Unknown72 = other.Unknown72;
-          }
-          if (other.Unknown73.Length != 0) {
-            Unknown73 = other.Unknown73;
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 10: {
-                Unknown71 = input.ReadBytes();
-                break;
-              }
-              case 16: {
-                Unknown72 = input.ReadInt64();
-                break;
-              }
-              case 26: {
-                Unknown73 = input.ReadBytes();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Payload : pb::IMessage<Payload> {
-        private static readonly pb::MessageParser<Payload> _parser = new pb::MessageParser<Payload>(() => new Payload());
-        public static pb::MessageParser<Payload> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.FortDetailResponse.Descriptor.NestedTypes[2]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Payload() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Payload(Payload other) : this() {
-          id_ = other.id_;
-          team_ = other.team_;
-          pokemon_ = other.pokemon_;
-          name_ = other.name_;
-          imageUrl_ = other.imageUrl_;
-          fp_ = other.fp_;
-          stamina_ = other.stamina_;
-          maxStamina_ = other.maxStamina_;
-          fortType_ = other.fortType_;
-          latitude_ = other.latitude_;
-          longitude_ = other.longitude_;
-          description_ = other.description_;
-          modifier_ = other.modifier_;
-        }
-
-        public Payload Clone() {
-          return new Payload(this);
-        }
-
-        /// <summary>Field number for the "Id" field.</summary>
-        public const int IdFieldNumber = 1;
-        private string id_ = "";
-        public string Id {
-          get { return id_; }
-          set {
-            id_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "Team" field.</summary>
-        public const int TeamFieldNumber = 2;
-        private int team_;
-        public int Team {
-          get { return team_; }
-          set {
-            team_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Pokemon" field.</summary>
-        public const int PokemonFieldNumber = 3;
-        private int pokemon_;
-        public int Pokemon {
-          get { return pokemon_; }
-          set {
-            pokemon_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Name" field.</summary>
-        public const int NameFieldNumber = 4;
-        private string name_ = "";
-        public string Name {
-          get { return name_; }
-          set {
-            name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "ImageUrl" field.</summary>
-        public const int ImageUrlFieldNumber = 5;
-        private string imageUrl_ = "";
-        public string ImageUrl {
-          get { return imageUrl_; }
-          set {
-            imageUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "Fp" field.</summary>
-        public const int FpFieldNumber = 6;
-        private int fp_;
-        public int Fp {
-          get { return fp_; }
-          set {
-            fp_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Stamina" field.</summary>
-        public const int StaminaFieldNumber = 7;
-        private int stamina_;
-        public int Stamina {
-          get { return stamina_; }
-          set {
-            stamina_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "MaxStamina" field.</summary>
-        public const int MaxStaminaFieldNumber = 8;
-        private int maxStamina_;
-        public int MaxStamina {
-          get { return maxStamina_; }
-          set {
-            maxStamina_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "FortType" field.</summary>
-        public const int FortTypeFieldNumber = 9;
-        private int fortType_;
-        public int FortType {
-          get { return fortType_; }
-          set {
-            fortType_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Latitude" field.</summary>
-        public const int LatitudeFieldNumber = 10;
-        private long latitude_;
-        public long Latitude {
-          get { return latitude_; }
-          set {
-            latitude_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Longitude" field.</summary>
-        public const int LongitudeFieldNumber = 11;
-        private long longitude_;
-        public long Longitude {
-          get { return longitude_; }
-          set {
-            longitude_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Description" field.</summary>
-        public const int DescriptionFieldNumber = 12;
-        private string description_ = "";
-        public string Description {
-          get { return description_; }
-          set {
-            description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "Modifier" field.</summary>
-        public const int ModifierFieldNumber = 13;
-        private int modifier_;
-        public int Modifier {
-          get { return modifier_; }
-          set {
-            modifier_ = value;
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Payload);
-        }
-
-        public bool Equals(Payload other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Id != other.Id) return false;
-          if (Team != other.Team) return false;
-          if (Pokemon != other.Pokemon) return false;
-          if (Name != other.Name) return false;
-          if (ImageUrl != other.ImageUrl) return false;
-          if (Fp != other.Fp) return false;
-          if (Stamina != other.Stamina) return false;
-          if (MaxStamina != other.MaxStamina) return false;
-          if (FortType != other.FortType) return false;
-          if (Latitude != other.Latitude) return false;
-          if (Longitude != other.Longitude) return false;
-          if (Description != other.Description) return false;
-          if (Modifier != other.Modifier) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Id.Length != 0) hash ^= Id.GetHashCode();
-          if (Team != 0) hash ^= Team.GetHashCode();
-          if (Pokemon != 0) hash ^= Pokemon.GetHashCode();
-          if (Name.Length != 0) hash ^= Name.GetHashCode();
-          if (ImageUrl.Length != 0) hash ^= ImageUrl.GetHashCode();
-          if (Fp != 0) hash ^= Fp.GetHashCode();
-          if (Stamina != 0) hash ^= Stamina.GetHashCode();
-          if (MaxStamina != 0) hash ^= MaxStamina.GetHashCode();
-          if (FortType != 0) hash ^= FortType.GetHashCode();
-          if (Latitude != 0L) hash ^= Latitude.GetHashCode();
-          if (Longitude != 0L) hash ^= Longitude.GetHashCode();
-          if (Description.Length != 0) hash ^= Description.GetHashCode();
-          if (Modifier != 0) hash ^= Modifier.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Id.Length != 0) {
-            output.WriteRawTag(10);
-            output.WriteString(Id);
-          }
-          if (Team != 0) {
-            output.WriteRawTag(16);
-            output.WriteInt32(Team);
-          }
-          if (Pokemon != 0) {
-            output.WriteRawTag(24);
-            output.WriteInt32(Pokemon);
-          }
-          if (Name.Length != 0) {
-            output.WriteRawTag(34);
-            output.WriteString(Name);
-          }
-          if (ImageUrl.Length != 0) {
-            output.WriteRawTag(42);
-            output.WriteString(ImageUrl);
-          }
-          if (Fp != 0) {
-            output.WriteRawTag(48);
-            output.WriteInt32(Fp);
-          }
-          if (Stamina != 0) {
-            output.WriteRawTag(56);
-            output.WriteInt32(Stamina);
-          }
-          if (MaxStamina != 0) {
-            output.WriteRawTag(64);
-            output.WriteInt32(MaxStamina);
-          }
-          if (FortType != 0) {
-            output.WriteRawTag(72);
-            output.WriteInt32(FortType);
-          }
-          if (Latitude != 0L) {
-            output.WriteRawTag(80);
-            output.WriteInt64(Latitude);
-          }
-          if (Longitude != 0L) {
-            output.WriteRawTag(88);
-            output.WriteInt64(Longitude);
-          }
-          if (Description.Length != 0) {
-            output.WriteRawTag(98);
-            output.WriteString(Description);
-          }
-          if (Modifier != 0) {
-            output.WriteRawTag(104);
-            output.WriteInt32(Modifier);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Id.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeStringSize(Id);
-          }
-          if (Team != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Team);
-          }
-          if (Pokemon != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Pokemon);
-          }
-          if (Name.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
-          }
-          if (ImageUrl.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeStringSize(ImageUrl);
-          }
-          if (Fp != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Fp);
-          }
-          if (Stamina != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stamina);
-          }
-          if (MaxStamina != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxStamina);
-          }
-          if (FortType != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(FortType);
-          }
-          if (Latitude != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Latitude);
-          }
-          if (Longitude != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Longitude);
-          }
-          if (Description.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
-          }
-          if (Modifier != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Modifier);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Payload other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Id.Length != 0) {
-            Id = other.Id;
-          }
-          if (other.Team != 0) {
-            Team = other.Team;
-          }
-          if (other.Pokemon != 0) {
-            Pokemon = other.Pokemon;
-          }
-          if (other.Name.Length != 0) {
-            Name = other.Name;
-          }
-          if (other.ImageUrl.Length != 0) {
-            ImageUrl = other.ImageUrl;
-          }
-          if (other.Fp != 0) {
-            Fp = other.Fp;
-          }
-          if (other.Stamina != 0) {
-            Stamina = other.Stamina;
-          }
-          if (other.MaxStamina != 0) {
-            MaxStamina = other.MaxStamina;
-          }
-          if (other.FortType != 0) {
-            FortType = other.FortType;
-          }
-          if (other.Latitude != 0L) {
-            Latitude = other.Latitude;
-          }
-          if (other.Longitude != 0L) {
-            Longitude = other.Longitude;
-          }
-          if (other.Description.Length != 0) {
-            Description = other.Description;
-          }
-          if (other.Modifier != 0) {
-            Modifier = other.Modifier;
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 10: {
-                Id = input.ReadString();
-                break;
-              }
-              case 16: {
-                Team = input.ReadInt32();
-                break;
-              }
-              case 24: {
-                Pokemon = input.ReadInt32();
-                break;
-              }
-              case 34: {
-                Name = input.ReadString();
-                break;
-              }
-              case 42: {
-                ImageUrl = input.ReadString();
-                break;
-              }
-              case 48: {
-                Fp = input.ReadInt32();
-                break;
-              }
-              case 56: {
-                Stamina = input.ReadInt32();
-                break;
-              }
-              case 64: {
-                MaxStamina = input.ReadInt32();
-                break;
-              }
-              case 72: {
-                FortType = input.ReadInt32();
-                break;
-              }
-              case 80: {
-                Latitude = input.ReadInt64();
-                break;
-              }
-              case 88: {
-                Longitude = input.ReadInt64();
-                break;
-              }
-              case 98: {
-                Description = input.ReadString();
-                break;
-              }
-              case 104: {
-                Modifier = input.ReadInt32();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-    }
-    #endregion
-
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/GeneratedCode/FortSearchResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/FortSearchResponse.cs
deleted file mode 100644
index 31acdb1..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/FortSearchResponse.cs
+++ /dev/null
@@ -1,1132 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: FortSearchResponse.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-namespace PokemonGo.RocketAPI.GeneratedCode {
-
-  /// <summary>Holder for reflection information generated from FortSearchResponse.proto</summary>
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class FortSearchResponseReflection {
-
-    #region Descriptor
-    /// <summary>File descriptor for FortSearchResponse.proto</summary>
-    public static pbr::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbr::FileDescriptor descriptor;
-
-    static FortSearchResponseReflection() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "ChhGb3J0U2VhcmNoUmVzcG9uc2UucHJvdG8SIVBva2Vtb25Hby5Sb2NrZXRB",
-            "UEkuR2VuZXJhdGVkQ29kZSK3BgoSRm9ydFNlYXJjaFJlc3BvbnNlEhAKCHVu",
-            "a25vd24xGAEgASgFEhAKCHVua25vd24yGAIgASgDEg8KB2FwaV91cmwYAyAB",
-            "KAkSUAoIdW5rbm93bjYYBiABKAsyPi5Qb2tlbW9uR28uUm9ja2V0QVBJLkdl",
-            "bmVyYXRlZENvZGUuRm9ydFNlYXJjaFJlc3BvbnNlLlVua25vd242ElAKCHVu",
-            "a25vd243GAcgASgLMj4uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRD",
-            "b2RlLkZvcnRTZWFyY2hSZXNwb25zZS5Vbmtub3duNxJOCgdwYXlsb2FkGGQg",
-            "AygLMj0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkZvcnRT",
-            "ZWFyY2hSZXNwb25zZS5QYXlsb2FkEhQKDGVycm9yTWVzc2FnZRhlIAEoCRqV",
-            "AQoIVW5rbm93bjYSEAoIdW5rbm93bjEYASABKAUSWQoIdW5rbm93bjIYAiAB",
-            "KAsyRy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRm9ydFNl",
-            "YXJjaFJlc3BvbnNlLlVua25vd242LlVua25vd24yGhwKCFVua25vd24yEhAK",
-            "CHVua25vd24xGAEgASgMGkMKCFVua25vd243EhEKCXVua25vd243MRgBIAEo",
-            "DBIRCgl1bmtub3duNzIYAiABKAMSEQoJdW5rbm93bjczGAMgASgMGtsBCgdQ",
-            "YXlsb2FkEg4KBlJlc3VsdBgBIAEoBRJJCgVJdGVtcxgCIAMoCzI6LlBva2Vt",
-            "b25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5Gb3J0U2VhcmNoUmVzcG9u",
-            "c2UuSXRlbRITCgtHZW1zQXdhcmRlZBgDIAEoBRISCgpFZ2dQb2tlbW9uGAQg",
-            "ASgFEhEKCVhwQXdhcmRlZBgFIAEoBRIYChBDb29sZG93bkNvbXBsZXRlGAYg",
-            "ASgDEh8KF0NoYWluSGFja1NlcXVlbmNlTnVtYmVyGAcgASgFGicKBEl0ZW0S",
-            "DAoESXRlbRgBIAEoBRIRCglJdGVtQ291bnQYAiABKAViBnByb3RvMw=="));
-      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-          new pbr::FileDescriptor[] { },
-          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse), global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Unknown7", "Payload", "ErrorMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown7), global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown7.Parser, new[]{ "Unknown71", "Unknown72", "Unknown73" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Payload), global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Payload.Parser, new[]{ "Result", "Items", "GemsAwarded", "EggPokemon", "XpAwarded", "CooldownComplete", "ChainHackSequenceNumber" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Item), global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Item.Parser, new[]{ "Item_", "ItemCount" }, null, null, null)})
-          }));
-    }
-    #endregion
-
-  }
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class FortSearchResponse : pb::IMessage<FortSearchResponse> {
-    private static readonly pb::MessageParser<FortSearchResponse> _parser = new pb::MessageParser<FortSearchResponse>(() => new FortSearchResponse());
-    public static pb::MessageParser<FortSearchResponse> Parser { get { return _parser; } }
-
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponseReflection.Descriptor.MessageTypes[0]; }
-    }
-
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    public FortSearchResponse() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    public FortSearchResponse(FortSearchResponse other) : this() {
-      unknown1_ = other.unknown1_;
-      unknown2_ = other.unknown2_;
-      apiUrl_ = other.apiUrl_;
-      Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
-      Unknown7 = other.unknown7_ != null ? other.Unknown7.Clone() : null;
-      payload_ = other.payload_.Clone();
-      errorMessage_ = other.errorMessage_;
-    }
-
-    public FortSearchResponse Clone() {
-      return new FortSearchResponse(this);
-    }
-
-    /// <summary>Field number for the "unknown1" field.</summary>
-    public const int Unknown1FieldNumber = 1;
-    private int unknown1_;
-    public int Unknown1 {
-      get { return unknown1_; }
-      set {
-        unknown1_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown2" field.</summary>
-    public const int Unknown2FieldNumber = 2;
-    private long unknown2_;
-    public long Unknown2 {
-      get { return unknown2_; }
-      set {
-        unknown2_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "api_url" field.</summary>
-    public const int ApiUrlFieldNumber = 3;
-    private string apiUrl_ = "";
-    public string ApiUrl {
-      get { return apiUrl_; }
-      set {
-        apiUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "unknown6" field.</summary>
-    public const int Unknown6FieldNumber = 6;
-    private global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6 unknown6_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6 Unknown6 {
-      get { return unknown6_; }
-      set {
-        unknown6_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown7" field.</summary>
-    public const int Unknown7FieldNumber = 7;
-    private global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown7 unknown7_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown7 Unknown7 {
-      get { return unknown7_; }
-      set {
-        unknown7_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "payload" field.</summary>
-    public const int PayloadFieldNumber = 100;
-    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Payload> _repeated_payload_codec
-        = pb::FieldCodec.ForMessage(802, global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Payload.Parser);
-    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Payload> payload_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Payload>();
-    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Payload> Payload {
-      get { return payload_; }
-    }
-
-    /// <summary>Field number for the "errorMessage" field.</summary>
-    public const int ErrorMessageFieldNumber = 101;
-    private string errorMessage_ = "";
-    /// <summary>
-    /// Should be moved to an error-proto file if error is always 101 field
-    /// </summary>
-    public string ErrorMessage {
-      get { return errorMessage_; }
-      set {
-        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    public override bool Equals(object other) {
-      return Equals(other as FortSearchResponse);
-    }
-
-    public bool Equals(FortSearchResponse other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Unknown1 != other.Unknown1) return false;
-      if (Unknown2 != other.Unknown2) return false;
-      if (ApiUrl != other.ApiUrl) return false;
-      if (!object.Equals(Unknown6, other.Unknown6)) return false;
-      if (!object.Equals(Unknown7, other.Unknown7)) return false;
-      if(!payload_.Equals(other.payload_)) return false;
-      if (ErrorMessage != other.ErrorMessage) return false;
-      return true;
-    }
-
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-      if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
-      if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
-      if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
-      if (unknown7_ != null) hash ^= Unknown7.GetHashCode();
-      hash ^= payload_.GetHashCode();
-      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
-      return hash;
-    }
-
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Unknown1 != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        output.WriteRawTag(16);
-        output.WriteInt64(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        output.WriteRawTag(50);
-        output.WriteMessage(Unknown6);
-      }
-      if (unknown7_ != null) {
-        output.WriteRawTag(58);
-        output.WriteMessage(Unknown7);
-      }
-      payload_.WriteTo(output, _repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        output.WriteRawTag(170, 6);
-        output.WriteString(ErrorMessage);
-      }
-    }
-
-    public int CalculateSize() {
-      int size = 0;
-      if (Unknown1 != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
-      }
-      if (unknown7_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown7);
-      }
-      size += payload_.CalculateSize(_repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        size += 2 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
-      }
-      return size;
-    }
-
-    public void MergeFrom(FortSearchResponse other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Unknown1 != 0) {
-        Unknown1 = other.Unknown1;
-      }
-      if (other.Unknown2 != 0L) {
-        Unknown2 = other.Unknown2;
-      }
-      if (other.ApiUrl.Length != 0) {
-        ApiUrl = other.ApiUrl;
-      }
-      if (other.unknown6_ != null) {
-        if (unknown6_ == null) {
-          unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6();
-        }
-        Unknown6.MergeFrom(other.Unknown6);
-      }
-      if (other.unknown7_ != null) {
-        if (unknown7_ == null) {
-          unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown7();
-        }
-        Unknown7.MergeFrom(other.Unknown7);
-      }
-      payload_.Add(other.payload_);
-      if (other.ErrorMessage.Length != 0) {
-        ErrorMessage = other.ErrorMessage;
-      }
-    }
-
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Unknown1 = input.ReadInt32();
-            break;
-          }
-          case 16: {
-            Unknown2 = input.ReadInt64();
-            break;
-          }
-          case 26: {
-            ApiUrl = input.ReadString();
-            break;
-          }
-          case 50: {
-            if (unknown6_ == null) {
-              unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6();
-            }
-            input.ReadMessage(unknown6_);
-            break;
-          }
-          case 58: {
-            if (unknown7_ == null) {
-              unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown7();
-            }
-            input.ReadMessage(unknown7_);
-            break;
-          }
-          case 802: {
-            payload_.AddEntriesFrom(input, _repeated_payload_codec);
-            break;
-          }
-          case 810: {
-            ErrorMessage = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-    #region Nested types
-    /// <summary>Container for nested types declared in the FortSearchResponse message type.</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Unknown6 : pb::IMessage<Unknown6> {
-        private static readonly pb::MessageParser<Unknown6> _parser = new pb::MessageParser<Unknown6>(() => new Unknown6());
-        public static pb::MessageParser<Unknown6> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Descriptor.NestedTypes[0]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Unknown6() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Unknown6(Unknown6 other) : this() {
-          unknown1_ = other.unknown1_;
-          Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
-        }
-
-        public Unknown6 Clone() {
-          return new Unknown6(this);
-        }
-
-        /// <summary>Field number for the "unknown1" field.</summary>
-        public const int Unknown1FieldNumber = 1;
-        private int unknown1_;
-        public int Unknown1 {
-          get { return unknown1_; }
-          set {
-            unknown1_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown2" field.</summary>
-        public const int Unknown2FieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6.Types.Unknown2 unknown2_;
-        public global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6.Types.Unknown2 Unknown2 {
-          get { return unknown2_; }
-          set {
-            unknown2_ = value;
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Unknown6);
-        }
-
-        public bool Equals(Unknown6 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown1 != other.Unknown1) return false;
-          if (!object.Equals(Unknown2, other.Unknown2)) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-          if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown1 != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Unknown1);
-          }
-          if (unknown2_ != null) {
-            output.WriteRawTag(18);
-            output.WriteMessage(Unknown2);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown1 != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-          }
-          if (unknown2_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Unknown6 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown1 != 0) {
-            Unknown1 = other.Unknown1;
-          }
-          if (other.unknown2_ != null) {
-            if (unknown2_ == null) {
-              unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6.Types.Unknown2();
-            }
-            Unknown2.MergeFrom(other.Unknown2);
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Unknown1 = input.ReadInt32();
-                break;
-              }
-              case 18: {
-                if (unknown2_ == null) {
-                  unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6.Types.Unknown2();
-                }
-                input.ReadMessage(unknown2_);
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types {
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class Unknown2 : pb::IMessage<Unknown2> {
-            private static readonly pb::MessageParser<Unknown2> _parser = new pb::MessageParser<Unknown2>(() => new Unknown2());
-            public static pb::MessageParser<Unknown2> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Unknown6.Descriptor.NestedTypes[0]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            public Unknown2() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public Unknown2(Unknown2 other) : this() {
-              unknown1_ = other.unknown1_;
-            }
-
-            public Unknown2 Clone() {
-              return new Unknown2(this);
-            }
-
-            /// <summary>Field number for the "unknown1" field.</summary>
-            public const int Unknown1FieldNumber = 1;
-            private pb::ByteString unknown1_ = pb::ByteString.Empty;
-            public pb::ByteString Unknown1 {
-              get { return unknown1_; }
-              set {
-                unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            public override bool Equals(object other) {
-              return Equals(other as Unknown2);
-            }
-
-            public bool Equals(Unknown2 other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Unknown1 != other.Unknown1) return false;
-              return true;
-            }
-
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
-              return hash;
-            }
-
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Unknown1.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteBytes(Unknown1);
-              }
-            }
-
-            public int CalculateSize() {
-              int size = 0;
-              if (Unknown1.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
-              }
-              return size;
-            }
-
-            public void MergeFrom(Unknown2 other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Unknown1.Length != 0) {
-                Unknown1 = other.Unknown1;
-              }
-            }
-
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    Unknown1 = input.ReadBytes();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-        }
-        #endregion
-
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Unknown7 : pb::IMessage<Unknown7> {
-        private static readonly pb::MessageParser<Unknown7> _parser = new pb::MessageParser<Unknown7>(() => new Unknown7());
-        public static pb::MessageParser<Unknown7> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Descriptor.NestedTypes[1]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Unknown7() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Unknown7(Unknown7 other) : this() {
-          unknown71_ = other.unknown71_;
-          unknown72_ = other.unknown72_;
-          unknown73_ = other.unknown73_;
-        }
-
-        public Unknown7 Clone() {
-          return new Unknown7(this);
-        }
-
-        /// <summary>Field number for the "unknown71" field.</summary>
-        public const int Unknown71FieldNumber = 1;
-        private pb::ByteString unknown71_ = pb::ByteString.Empty;
-        public pb::ByteString Unknown71 {
-          get { return unknown71_; }
-          set {
-            unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "unknown72" field.</summary>
-        public const int Unknown72FieldNumber = 2;
-        private long unknown72_;
-        public long Unknown72 {
-          get { return unknown72_; }
-          set {
-            unknown72_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown73" field.</summary>
-        public const int Unknown73FieldNumber = 3;
-        private pb::ByteString unknown73_ = pb::ByteString.Empty;
-        public pb::ByteString Unknown73 {
-          get { return unknown73_; }
-          set {
-            unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Unknown7);
-        }
-
-        public bool Equals(Unknown7 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown71 != other.Unknown71) return false;
-          if (Unknown72 != other.Unknown72) return false;
-          if (Unknown73 != other.Unknown73) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
-          if (Unknown72 != 0L) hash ^= Unknown72.GetHashCode();
-          if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown71.Length != 0) {
-            output.WriteRawTag(10);
-            output.WriteBytes(Unknown71);
-          }
-          if (Unknown72 != 0L) {
-            output.WriteRawTag(16);
-            output.WriteInt64(Unknown72);
-          }
-          if (Unknown73.Length != 0) {
-            output.WriteRawTag(26);
-            output.WriteBytes(Unknown73);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown71.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
-          }
-          if (Unknown72 != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown72);
-          }
-          if (Unknown73.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Unknown7 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown71.Length != 0) {
-            Unknown71 = other.Unknown71;
-          }
-          if (other.Unknown72 != 0L) {
-            Unknown72 = other.Unknown72;
-          }
-          if (other.Unknown73.Length != 0) {
-            Unknown73 = other.Unknown73;
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 10: {
-                Unknown71 = input.ReadBytes();
-                break;
-              }
-              case 16: {
-                Unknown72 = input.ReadInt64();
-                break;
-              }
-              case 26: {
-                Unknown73 = input.ReadBytes();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Payload : pb::IMessage<Payload> {
-        private static readonly pb::MessageParser<Payload> _parser = new pb::MessageParser<Payload>(() => new Payload());
-        public static pb::MessageParser<Payload> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Descriptor.NestedTypes[2]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Payload() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Payload(Payload other) : this() {
-          result_ = other.result_;
-          items_ = other.items_.Clone();
-          gemsAwarded_ = other.gemsAwarded_;
-          eggPokemon_ = other.eggPokemon_;
-          xpAwarded_ = other.xpAwarded_;
-          cooldownComplete_ = other.cooldownComplete_;
-          chainHackSequenceNumber_ = other.chainHackSequenceNumber_;
-        }
-
-        public Payload Clone() {
-          return new Payload(this);
-        }
-
-        /// <summary>Field number for the "Result" field.</summary>
-        public const int ResultFieldNumber = 1;
-        private int result_;
-        public int Result {
-          get { return result_; }
-          set {
-            result_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Items" field.</summary>
-        public const int ItemsFieldNumber = 2;
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Item> _repeated_items_codec
-            = pb::FieldCodec.ForMessage(18, global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Item.Parser);
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Item> items_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Item>();
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Item> Items {
-          get { return items_; }
-        }
-
-        /// <summary>Field number for the "GemsAwarded" field.</summary>
-        public const int GemsAwardedFieldNumber = 3;
-        private int gemsAwarded_;
-        public int GemsAwarded {
-          get { return gemsAwarded_; }
-          set {
-            gemsAwarded_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "EggPokemon" field.</summary>
-        public const int EggPokemonFieldNumber = 4;
-        private int eggPokemon_;
-        public int EggPokemon {
-          get { return eggPokemon_; }
-          set {
-            eggPokemon_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "XpAwarded" field.</summary>
-        public const int XpAwardedFieldNumber = 5;
-        private int xpAwarded_;
-        public int XpAwarded {
-          get { return xpAwarded_; }
-          set {
-            xpAwarded_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "CooldownComplete" field.</summary>
-        public const int CooldownCompleteFieldNumber = 6;
-        private long cooldownComplete_;
-        public long CooldownComplete {
-          get { return cooldownComplete_; }
-          set {
-            cooldownComplete_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "ChainHackSequenceNumber" field.</summary>
-        public const int ChainHackSequenceNumberFieldNumber = 7;
-        private int chainHackSequenceNumber_;
-        public int ChainHackSequenceNumber {
-          get { return chainHackSequenceNumber_; }
-          set {
-            chainHackSequenceNumber_ = value;
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Payload);
-        }
-
-        public bool Equals(Payload other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Result != other.Result) return false;
-          if(!items_.Equals(other.items_)) return false;
-          if (GemsAwarded != other.GemsAwarded) return false;
-          if (EggPokemon != other.EggPokemon) return false;
-          if (XpAwarded != other.XpAwarded) return false;
-          if (CooldownComplete != other.CooldownComplete) return false;
-          if (ChainHackSequenceNumber != other.ChainHackSequenceNumber) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Result != 0) hash ^= Result.GetHashCode();
-          hash ^= items_.GetHashCode();
-          if (GemsAwarded != 0) hash ^= GemsAwarded.GetHashCode();
-          if (EggPokemon != 0) hash ^= EggPokemon.GetHashCode();
-          if (XpAwarded != 0) hash ^= XpAwarded.GetHashCode();
-          if (CooldownComplete != 0L) hash ^= CooldownComplete.GetHashCode();
-          if (ChainHackSequenceNumber != 0) hash ^= ChainHackSequenceNumber.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Result != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Result);
-          }
-          items_.WriteTo(output, _repeated_items_codec);
-          if (GemsAwarded != 0) {
-            output.WriteRawTag(24);
-            output.WriteInt32(GemsAwarded);
-          }
-          if (EggPokemon != 0) {
-            output.WriteRawTag(32);
-            output.WriteInt32(EggPokemon);
-          }
-          if (XpAwarded != 0) {
-            output.WriteRawTag(40);
-            output.WriteInt32(XpAwarded);
-          }
-          if (CooldownComplete != 0L) {
-            output.WriteRawTag(48);
-            output.WriteInt64(CooldownComplete);
-          }
-          if (ChainHackSequenceNumber != 0) {
-            output.WriteRawTag(56);
-            output.WriteInt32(ChainHackSequenceNumber);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Result != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Result);
-          }
-          size += items_.CalculateSize(_repeated_items_codec);
-          if (GemsAwarded != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(GemsAwarded);
-          }
-          if (EggPokemon != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggPokemon);
-          }
-          if (XpAwarded != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(XpAwarded);
-          }
-          if (CooldownComplete != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(CooldownComplete);
-          }
-          if (ChainHackSequenceNumber != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(ChainHackSequenceNumber);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Payload other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Result != 0) {
-            Result = other.Result;
-          }
-          items_.Add(other.items_);
-          if (other.GemsAwarded != 0) {
-            GemsAwarded = other.GemsAwarded;
-          }
-          if (other.EggPokemon != 0) {
-            EggPokemon = other.EggPokemon;
-          }
-          if (other.XpAwarded != 0) {
-            XpAwarded = other.XpAwarded;
-          }
-          if (other.CooldownComplete != 0L) {
-            CooldownComplete = other.CooldownComplete;
-          }
-          if (other.ChainHackSequenceNumber != 0) {
-            ChainHackSequenceNumber = other.ChainHackSequenceNumber;
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Result = input.ReadInt32();
-                break;
-              }
-              case 18: {
-                items_.AddEntriesFrom(input, _repeated_items_codec);
-                break;
-              }
-              case 24: {
-                GemsAwarded = input.ReadInt32();
-                break;
-              }
-              case 32: {
-                EggPokemon = input.ReadInt32();
-                break;
-              }
-              case 40: {
-                XpAwarded = input.ReadInt32();
-                break;
-              }
-              case 48: {
-                CooldownComplete = input.ReadInt64();
-                break;
-              }
-              case 56: {
-                ChainHackSequenceNumber = input.ReadInt32();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Item : pb::IMessage<Item> {
-        private static readonly pb::MessageParser<Item> _parser = new pb::MessageParser<Item>(() => new Item());
-        public static pb::MessageParser<Item> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Descriptor.NestedTypes[3]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Item() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Item(Item other) : this() {
-          item_ = other.item_;
-          itemCount_ = other.itemCount_;
-        }
-
-        public Item Clone() {
-          return new Item(this);
-        }
-
-        /// <summary>Field number for the "Item" field.</summary>
-        public const int Item_FieldNumber = 1;
-        private int item_;
-        public int Item_ {
-          get { return item_; }
-          set {
-            item_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "ItemCount" field.</summary>
-        public const int ItemCountFieldNumber = 2;
-        private int itemCount_;
-        public int ItemCount {
-          get { return itemCount_; }
-          set {
-            itemCount_ = value;
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Item);
-        }
-
-        public bool Equals(Item other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Item_ != other.Item_) return false;
-          if (ItemCount != other.ItemCount) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Item_ != 0) hash ^= Item_.GetHashCode();
-          if (ItemCount != 0) hash ^= ItemCount.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Item_ != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Item_);
-          }
-          if (ItemCount != 0) {
-            output.WriteRawTag(16);
-            output.WriteInt32(ItemCount);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Item_ != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Item_);
-          }
-          if (ItemCount != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemCount);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Item other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Item_ != 0) {
-            Item_ = other.Item_;
-          }
-          if (other.ItemCount != 0) {
-            ItemCount = other.ItemCount;
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Item_ = input.ReadInt32();
-                break;
-              }
-              case 16: {
-                ItemCount = input.ReadInt32();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-    }
-    #endregion
-
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/GeneratedCode/InventoryResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/InventoryResponse.cs
deleted file mode 100644
index 714e65b..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/InventoryResponse.cs
+++ /dev/null
@@ -1,5658 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: InventoryResponse.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-namespace PokemonGo.RocketAPI.GeneratedCode {
-
-  /// <summary>Holder for reflection information generated from InventoryResponse.proto</summary>
-  public static partial class InventoryResponseReflection {
-
-    #region Descriptor
-    /// <summary>File descriptor for InventoryResponse.proto</summary>
-    public static pbr::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbr::FileDescriptor descriptor;
-
-    static InventoryResponseReflection() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "ChdJbnZlbnRvcnlSZXNwb25zZS5wcm90bxIhUG9rZW1vbkdvLlJvY2tldEFQ",
-            "SS5HZW5lcmF0ZWRDb2RlItlDChFJbnZlbnRvcnlSZXNwb25zZRIQCgh1bmtu",
-            "b3duMRgBIAEoBRIQCgh1bmtub3duMhgCIAEoAxIPCgdhcGlfdXJsGAMgASgJ",
-            "Ek8KCHVua25vd242GAYgASgLMj0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5l",
-            "cmF0ZWRDb2RlLkludmVudG9yeVJlc3BvbnNlLlVua25vd242Ek8KCHVua25v",
-            "d243GAcgASgLMj0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2Rl",
-            "LkludmVudG9yeVJlc3BvbnNlLlVua25vd243Ek0KB3BheWxvYWQYZCADKAsy",
-            "PC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuSW52ZW50b3J5",
-            "UmVzcG9uc2UuUGF5bG9hZBIUCgxlcnJvck1lc3NhZ2UYZSABKAkalAEKCFVu",
-            "a25vd242EhAKCHVua25vd24xGAEgASgFElgKCHVua25vd24yGAIgASgLMkYu",
-            "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeVJl",
-            "c3BvbnNlLlVua25vd242LlVua25vd24yGhwKCFVua25vd24yEhAKCHVua25v",
-            "d24xGAEgASgMGkMKCFVua25vd243EhEKCXVua25vd243MRgBIAEoDBIRCgl1",
-            "bmtub3duNzIYAiABKAMSEQoJdW5rbm93bjczGAMgASgMGnMKB1BheWxvYWQS",
-            "DgoGU3RhdHVzGAEgASgFElgKA0JhZxgCIAEoCzJLLlBva2Vtb25Hby5Sb2Nr",
-            "ZXRBUEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRvcnlSZXNwb25zZS5JbnZlbnRv",
-            "cnlSZXNwb25zZVByb3RvGqsCChZJbnZlbnRvcnlSZXNwb25zZVByb3RvEhEK",
-            "CXRpbWVzdGFtcBgCIAEoAxJ1CgVpdGVtcxgDIAMoCzJmLlBva2Vtb25Hby5S",
-            "b2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRvcnlSZXNwb25zZS5JbnZl",
-            "bnRvcnlSZXNwb25zZVByb3RvLkludmVudG9yeUl0ZW1SZXNwb25zZVByb3Rv",
-            "GoYBChpJbnZlbnRvcnlJdGVtUmVzcG9uc2VQcm90bxIRCgl0aW1lc3RhbXAY",
-            "ASABKAMSVQoEaXRlbRgDIAEoCzJHLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2Vu",
-            "ZXJhdGVkQ29kZS5JbnZlbnRvcnlSZXNwb25zZS5JbnZlbnRvcnlJdGVtUHJv",
-            "dG8anxMKEkludmVudG9yeUl0ZW1Qcm90bxJSCgdQb2tlbW9uGAEgASgLMkEu",
-            "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeVJl",
-            "c3BvbnNlLlBva2Vtb25Qcm90bxJfCgRJdGVtGAIgASgLMlEuUG9rZW1vbkdv",
-            "LlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeVJlc3BvbnNlLklu",
-            "dmVudG9yeUl0ZW1Qcm90by5JdGVtUHJvdG8SbwoMUG9rZWRleEVudHJ5GAMg",
-            "ASgLMlkuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVu",
-            "dG9yeVJlc3BvbnNlLkludmVudG9yeUl0ZW1Qcm90by5Qb2tlZGV4RW50cnlQ",
-            "cm90bxJtCgtQbGF5ZXJTdGF0cxgEIAEoCzJYLlBva2Vtb25Hby5Sb2NrZXRB",
-            "UEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRvcnlSZXNwb25zZS5JbnZlbnRvcnlJ",
-            "dGVtUHJvdG8uUGxheWVyU3RhdHNQcm90bxJzCg5QbGF5ZXJDdXJyZW5jeRgF",
-            "IAEoCzJbLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5JbnZl",
-            "bnRvcnlSZXNwb25zZS5JbnZlbnRvcnlJdGVtUHJvdG8uUGxheWVyQ3VycmVu",
-            "Y3lQcm90bxJvCgxQbGF5ZXJDYW1lcmEYBiABKAsyWS5Qb2tlbW9uR28uUm9j",
-            "a2V0QVBJLkdlbmVyYXRlZENvZGUuSW52ZW50b3J5UmVzcG9uc2UuSW52ZW50",
-            "b3J5SXRlbVByb3RvLlBsYXllckNhbWVyYVByb3RvEnkKEUludmVudG9yeVVw",
-            "Z3JhZGVzGAcgASgLMl4uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRD",
-            "b2RlLkludmVudG9yeVJlc3BvbnNlLkludmVudG9yeUl0ZW1Qcm90by5JbnZl",
-            "bnRvcnlVcGdyYWRlc1Byb3RvEm0KC0FwcGxpZWRJdGVtGAggASgLMlguUG9r",
-            "ZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeVJlc3Bv",
-            "bnNlLkludmVudG9yeUl0ZW1Qcm90by5BcHBsaWVkSXRlbVByb3RvEnAKDUVn",
-            "Z0luY3ViYXRvcnMYCSABKAsyWS5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVy",
-            "YXRlZENvZGUuSW52ZW50b3J5UmVzcG9uc2UuSW52ZW50b3J5SXRlbVByb3Rv",
-            "LkVnZ0luY3ViYXRvclByb3RvEnEKDVBva2Vtb25GYW1pbHkYCiABKAsyWi5Q",
-            "b2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuSW52ZW50b3J5UmVz",
-            "cG9uc2UuSW52ZW50b3J5SXRlbVByb3RvLlBva2Vtb25GYW1pbHlQcm90bxo4",
-            "CglJdGVtUHJvdG8SDAoESXRlbRgBIAEoBRINCgVDb3VudBgCIAEoBRIOCgZV",
-            "bnNlZW4YAyABKAgalwEKEVBva2VkZXhFbnRyeVByb3RvEhoKElBva2VkZXhF",
-            "bnRyeU51bWJlchgBIAEoBRIYChBUaW1lc0VuY291bnRlcmVkGAIgASgFEhUK",
-            "DVRpbWVzQ2FwdHVyZWQYAyABKAUSHAoURXZvbHV0aW9uU3RvbmVQaWVjZXMY",
-            "BCABKAUSFwoPRXZvbHV0aW9uU3RvbmVzGAUgASgFGtoEChBQbGF5ZXJTdGF0",
-            "c1Byb3RvEg0KBUxldmVsGAEgASgFEhIKCkV4cGVyaWVuY2UYAiABKAMSFAoM",
-            "UHJldkxldmVsRXhwGAMgASgDEhQKDE5leHRMZXZlbEV4cBgEIAEoAxIQCghL",
-            "bVdhbGtlZBgFIAEoAhIdChVOdW1Qb2tlbW9uRW5jb3VudGVyZWQYBiABKAUS",
-            "HwoXTnVtVW5pcXVlUG9rZWRleEVudHJpZXMYByABKAUSGgoSTnVtUG9rZW1v",
-            "bkNhcHR1cmVkGAggASgFEhUKDU51bUV2b2x1dGlvbnMYCSABKAUSFgoOUG9r",
-            "ZVN0b3BWaXNpdHMYCiABKAUSHgoWTnVtYmVyT2ZQb2tlYmFsbFRocm93bhgL",
-            "IAEoBRIWCg5OdW1FZ2dzSGF0Y2hlZBgMIAEoBRIZChFCaWdNYWdpa2FycENh",
-            "dWdodBgNIAEoBRIaChJOdW1CYXR0bGVBdHRhY2tXb24YDiABKAUSHAoUTnVt",
-            "QmF0dGxlQXR0YWNrVG90YWwYDyABKAUSHAoUTnVtQmF0dGxlRGVmZW5kZWRX",
-            "b24YECABKAUSHAoUTnVtQmF0dGxlVHJhaW5pbmdXb24YESABKAUSHgoWTnVt",
-            "QmF0dGxlVHJhaW5pbmdUb3RhbBgSIAEoBRIbChNQcmVzdGlnZVJhaXNlZFRv",
-            "dGFsGBMgASgFEhwKFFByZXN0aWdlRHJvcHBlZFRvdGFsGBQgASgFEhoKEk51",
-            "bVBva2Vtb25EZXBsb3llZBgVIAEoBRIaChJTbWFsbFJhdHRhdGFDYXVnaHQY",
-            "FyABKAUaWwoQQXBwbGllZEl0ZW1Qcm90bxIMCgRJdGVtGAEgASgFEhAKCEl0",
-            "ZW1UeXBlGAIgASgFEhQKDEV4cGlyYXRpb25NcxgDIAEoAxIRCglBcHBsaWVk",
-            "TXMYBCABKAMaKgoRUGxheWVyQ2FtZXJhUHJvdG8SFQoNRGVmYXVsdENhbWVy",
-            "YRgBIAEoCBojChNQbGF5ZXJDdXJyZW5jeVByb3RvEgwKBEdlbXMYASABKAUa",
-            "MgoWSW52ZW50b3J5VXBncmFkZXNQcm90bxIYChBJbnZlbnRvcnlVcGdyYWRl",
-            "GAEgASgFGvQBChFFZ2dJbmN1YmF0b3JQcm90bxIOCgZJdGVtSWQYASABKAkS",
-            "XwoESXRlbRgCIAEoCzJRLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
-            "Q29kZS5JbnZlbnRvcnlSZXNwb25zZS5JbnZlbnRvcnlJdGVtUHJvdG8uSXRl",
-            "bVByb3RvEhUKDUluY3ViYXRvclR5cGUYAyABKAUSFQoNVXNlc1JlbWFpbmlu",
-            "ZxgEIAEoBRIRCglQb2tlbW9uSWQYBSABKAMSFQoNU3RhcnRLbVdhbGtlZBgG",
-            "IAEoARIWCg5UYXJnZXRLbVdhbGtlZBgHIAEoARo1ChJQb2tlbW9uRmFtaWx5",
-            "UHJvdG8SEAoIRmFtaWx5SWQYASABKAUSDQoFQ2FuZHkYAiABKAUaKQoUVHJh",
-            "bnNmZXJQb2tlbW9uUHJvdG8SEQoJUG9rZW1vbklkGAEgASgGGj8KF1RyYW5z",
-            "ZmVyUG9rZW1vbk91dFByb3RvEg4KBlN0YXR1cxgBIAEoBRIUCgxDYW5keUF3",
-            "YXJkZWQYAiABKAUaJwoSRXZvbHZlUG9rZW1vblByb3RvEhEKCVBva2Vtb25J",
-            "ZBgBIAEoBhqsAQoVRXZvbHZlUG9rZW1vbk91dFByb3RvEg4KBlJlc3VsdBgB",
-            "IAEoBRJZCg5Fdm9sdmVkUG9rZW1vbhgCIAEoCzJBLlBva2Vtb25Hby5Sb2Nr",
-            "ZXRBUEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRvcnlSZXNwb25zZS5Qb2tlbW9u",
-            "UHJvdG8SEgoKRXhwQXdhcmRlZBgDIAEoBRIUCgxDYW5keUF3YXJkZWQYBCAB",
-            "KAUaoiYKDFBva2Vtb25Qcm90bxIKCgJJZBgBIAEoBhJjCgtQb2tlbW9uVHlw",
-            "ZRgCIAEoDjJOLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5J",
-            "bnZlbnRvcnlSZXNwb25zZS5Qb2tlbW9uUHJvdG8uUG9rZW1vblR5cGVzEgoK",
-            "AkNwGAMgASgFEg8KB1N0YW1pbmEYBCABKAUSEgoKTWF4U3RhbWluYRgFIAEo",
-            "BRINCgVNb3ZlMRgGIAEoBRINCgVNb3ZlMhgHIAEoBRIWCg5EZXBsb3llZEZv",
-            "cnRJZBgIIAEoBRIRCglPd25lck5hbWUYCSABKAUSDQoFSXNFZ2cYCiABKAUS",
-            "GQoRRWdnS21XYWxrZWRUYXJnZXQYCyABKAUSGAoQRWdnS21XYWxrZWRTdGFy",
-            "dBgMIAEoBRIOCgZPcmlnaW4YDiABKAUSDwoHSGVpZ2h0TRgPIAEoBxIQCghX",
-            "ZWlnaHRLZxgQIAEoBxIYChBJbmRpdmlkdWFsQXR0YWNrGBEgASgFEhkKEUlu",
-            "ZGl2aWR1YWxEZWZlbnNlGBIgASgFEhkKEUluZGl2aWR1YWxTdGFtaW5hGBMg",
-            "ASgFEhQKDENwTXVsdGlwbGllchgUIAEoBxIQCghQb2tlYmFsbBgVIAEoBRIY",
-            "ChBDYXB0dXJlZFMyQ2VsbElkGBYgASgGEhcKD0JhdHRsZXNBdHRhY2tlZBgX",
-            "IAEoBRIXCg9CYXR0bGVzRGVmZW5kZWQYGCABKAUSFgoORWdnSW5jdWJhdG9y",
-            "SWQYGSABKAUSFgoOQ3JlYXRpb25UaW1lTXMYGiABKAMSEwoLTnVtVXBncmFk",
-            "ZXMYGyABKAUSHgoWQWRkaXRpb25hbENwTXVsdGlwbGllchgcIAEoBRIQCghG",
-            "YXZvcml0ZRgdIAEoBRIQCghOaWNrbmFtZRgeIAEoBRIQCghGcm9tRm9ydBgf",
-            "IAEoBSLQIAoMUG9rZW1vblR5cGVzEhEKDVBPS0VNT05fVU5TRVQQABIbChdW",
-            "MDAwMV9QT0tFTU9OX0JVTEJBU0FVUhABEhkKFVYwMDAyX1BPS0VNT05fSVZZ",
-            "U0FVUhACEhoKFlYwMDAzX1BPS0VNT05fVkVOVVNBVVIQAxIcChhWMDAwNF9Q",
-            "T0tFTU9OX0NIQVJNQU5ERVIQBBIcChhWMDAwNV9QT0tFTU9OX0NIQVJNRUxF",
-            "T04QBRIbChdWMDAwNl9QT0tFTU9OX0NIQVJJWkFSRBAGEhoKFlYwMDA3X1BP",
-            "S0VNT05fU1FVSVJUTEUQBxIbChdWMDAwOF9QT0tFTU9OX1dBUlRPUlRMRRAI",
-            "EhsKF1YwMDA5X1BPS0VNT05fQkxBU1RPSVNFEAkSGgoWVjAwMTBfUE9LRU1P",
-            "Tl9DQVRFUlBJRRAKEhkKFVYwMDExX1BPS0VNT05fTUVUQVBPRBALEhwKGFYw",
-            "MDEyX1BPS0VNT05fQlVUVEVSRlJFRRAMEhgKFFYwMDEzX1BPS0VNT05fV0VF",
-            "RExFEA0SGAoUVjAwMTRfUE9LRU1PTl9LQUtVTkEQDhIaChZWMDAxNV9QT0tF",
-            "TU9OX0JFRURSSUxMEA8SGAoUVjAwMTZfUE9LRU1PTl9QSURHRVkQEBIbChdW",
-            "MDAxN19QT0tFTU9OX1BJREdFT1RUTxAREhkKFVYwMDE4X1BPS0VNT05fUElE",
-            "R0VPVBASEhkKFVYwMDE5X1BPS0VNT05fUkFUVEFUQRATEhoKFlYwMDIwX1BP",
-            "S0VNT05fUkFUSUNBVEUQFBIZChVWMDAyMV9QT0tFTU9OX1NQRUFST1cQFRIY",
-            "ChRWMDAyMl9QT0tFTU9OX0ZFQVJPVxAWEhcKE1YwMDIzX1BPS0VNT05fRUtB",
-            "TlMQFxIXChNWMDAyNF9QT0tFTU9OX0FSQk9LEBgSGQoVVjAwMjVfUE9LRU1P",
-            "Tl9QSUtBQ0hVEBkSGAoUVjAwMjZfUE9LRU1PTl9SQUlDSFUQGhIbChdWMDAy",
-            "N19QT0tFTU9OX1NBTkRTSFJFVxAbEhsKF1YwMDI4X1BPS0VNT05fU0FORFNM",
-            "QVNIEBwSGQoVVjAwMjlfUE9LRU1PTl9OSURPUkFOEB0SGgoWVjAwMzBfUE9L",
-            "RU1PTl9OSURPUklOQRAeEhsKF1YwMDMxX1BPS0VNT05fTklET1FVRUVOEB8S",
-            "GQoVVjAwMzJfUE9LRU1PTl9OSURPUkFOECASGgoWVjAwMzNfUE9LRU1PTl9O",
-            "SURPUklOTxAhEhoKFlYwMDM0X1BPS0VNT05fTklET0tJTkcQIhIaChZWMDAz",
-            "NV9QT0tFTU9OX0NMRUZBSVJZECMSGgoWVjAwMzZfUE9LRU1PTl9DTEVGQUJM",
-            "RRAkEhgKFFYwMDM3X1BPS0VNT05fVlVMUElYECUSGwoXVjAwMzhfUE9LRU1P",
-            "Tl9OSU5FVEFMRVMQJhIcChhWMDAzOV9QT0tFTU9OX0pJR0dMWVBVRkYQJxIc",
-            "ChhWMDA0MF9QT0tFTU9OX1dJR0dMWVRVRkYQKBIXChNWMDA0MV9QT0tFTU9O",
-            "X1pVQkFUECkSGAoUVjAwNDJfUE9LRU1PTl9HT0xCQVQQKhIYChRWMDA0M19Q",
-            "T0tFTU9OX09ERElTSBArEhcKE1YwMDQ0X1BPS0VNT05fR0xPT00QLBIbChdW",
-            "MDA0NV9QT0tFTU9OX1ZJTEVQTFVNRRAtEhcKE1YwMDQ2X1BPS0VNT05fUEFS",
-            "QVMQLhIaChZWMDA0N19QT0tFTU9OX1BBUkFTRUNUEC8SGQoVVjAwNDhfUE9L",
-            "RU1PTl9WRU5PTkFUEDASGgoWVjAwNDlfUE9LRU1PTl9WRU5PTU9USBAxEhkK",
-            "FVYwMDUwX1BPS0VNT05fRElHTEVUVBAyEhkKFVYwMDUxX1BPS0VNT05fRFVH",
-            "VFJJTxAzEhgKFFYwMDUyX1BPS0VNT05fTUVPV1RIEDQSGQoVVjAwNTNfUE9L",
-            "RU1PTl9QRVJTSUFOEDUSGQoVVjAwNTRfUE9LRU1PTl9QU1lEVUNLEDYSGQoV",
-            "VjAwNTVfUE9LRU1PTl9HT0xEVUNLEDcSGAoUVjAwNTZfUE9LRU1PTl9NQU5L",
-            "RVkQOBIaChZWMDA1N19QT0tFTU9OX1BSSU1FQVBFEDkSGwoXVjAwNThfUE9L",
-            "RU1PTl9HUk9XTElUSEUQOhIaChZWMDA1OV9QT0tFTU9OX0FSQ0FOSU5FEDsS",
-            "GQoVVjAwNjBfUE9LRU1PTl9QT0xJV0FHEDwSGwoXVjAwNjFfUE9LRU1PTl9Q",
-            "T0xJV0hJUkwQPRIbChdWMDA2Ml9QT0tFTU9OX1BPTElXUkFUSBA+EhYKElYw",
-            "MDYzX1BPS0VNT05fQUJSQRA/EhkKFVYwMDY0X1BPS0VNT05fS0FEQUJSQRBA",
-            "EhoKFlYwMDY1X1BPS0VNT05fQUxBS0FaQU0QQRIYChRWMDA2Nl9QT0tFTU9O",
-            "X01BQ0hPUBBCEhkKFVYwMDY3X1BPS0VNT05fTUFDSE9LRRBDEhkKFVYwMDY4",
-            "X1BPS0VNT05fTUFDSEFNUBBEEhwKGFYwMDY5X1BPS0VNT05fQkVMTFNQUk9V",
-            "VBBFEhwKGFYwMDcwX1BPS0VNT05fV0VFUElOQkVMTBBGEhwKGFYwMDcxX1BP",
-            "S0VNT05fVklDVFJFRUJFTBBHEhsKF1YwMDcyX1BPS0VNT05fVEVOVEFDT09M",
-            "EEgSHAoYVjAwNzNfUE9LRU1PTl9URU5UQUNSVUVMEEkSGQoVVjAwNzRfUE9L",
-            "RU1PTl9HRU9EVURFEEoSGgoWVjAwNzVfUE9LRU1PTl9HUkFWRUxFUhBLEhcK",
-            "E1YwMDc2X1BPS0VNT05fR09MRU0QTBIYChRWMDA3N19QT0tFTU9OX1BPTllU",
-            "QRBNEhoKFlYwMDc4X1BPS0VNT05fUkFQSURBU0gQThIaChZWMDA3OV9QT0tF",
-            "TU9OX1NMT1dQT0tFEE8SGQoVVjAwODBfUE9LRU1PTl9TTE9XQlJPEFASGwoX",
-            "VjAwODFfUE9LRU1PTl9NQUdORU1JVEUQURIaChZWMDA4Ml9QT0tFTU9OX01B",
-            "R05FVE9OEFISGwoXVjAwODNfUE9LRU1PTl9GQVJGRVRDSEQQUxIXChNWMDA4",
-            "NF9QT0tFTU9OX0RPRFVPEFQSGAoUVjAwODVfUE9LRU1PTl9ET0RSSU8QVRIW",
-            "ChJWMDA4Nl9QT0tFTU9OX1NFRUwQVhIZChVWMDA4N19QT0tFTU9OX0RFV0dP",
-            "TkcQVxIYChRWMDA4OF9QT0tFTU9OX0dSSU1FUhBYEhUKEVYwMDg5X1BPS0VN",
-            "T05fTVVLEFkSGgoWVjAwOTBfUE9LRU1PTl9TSEVMTERFUhBaEhoKFlYwMDkx",
-            "X1BPS0VNT05fQ0xPWVNURVIQWxIYChRWMDA5Ml9QT0tFTU9OX0dBU1RMWRBc",
-            "EhkKFVYwMDkzX1BPS0VNT05fSEFVTlRFUhBdEhgKFFYwMDk0X1BPS0VNT05f",
-            "R0VOR0FSEF4SFgoSVjAwOTVfUE9LRU1PTl9PTklYEF8SGQoVVjAwOTZfUE9L",
-            "RU1PTl9EUk9XWkVFEGASFwoTVjAwOTdfUE9LRU1PTl9IWVBOTxBhEhgKFFYw",
-            "MDk4X1BPS0VNT05fS1JBQkJZEGISGQoVVjAwOTlfUE9LRU1PTl9LSU5HTEVS",
-            "EGMSGQoVVjAxMDBfUE9LRU1PTl9WT0xUT1JCEGQSGwoXVjAxMDFfUE9LRU1P",
-            "Tl9FTEVDVFJPREUQZRIbChdWMDEwMl9QT0tFTU9OX0VYRUdHQ1VURRBmEhsK",
-            "F1YwMTAzX1BPS0VNT05fRVhFR0dVVE9SEGcSGAoUVjAxMDRfUE9LRU1PTl9D",
-            "VUJPTkUQaBIZChVWMDEwNV9QT0tFTU9OX01BUk9XQUsQaRIbChdWMDEwNl9Q",
-            "T0tFTU9OX0hJVE1PTkxFRRBqEhwKGFYwMTA3X1BPS0VNT05fSElUTU9OQ0hB",
-            "ThBrEhsKF1YwMTA4X1BPS0VNT05fTElDS0lUVU5HEGwSGQoVVjAxMDlfUE9L",
-            "RU1PTl9LT0ZGSU5HEG0SGQoVVjAxMTBfUE9LRU1PTl9XRUVaSU5HEG4SGQoV",
-            "VjAxMTFfUE9LRU1PTl9SSFlIT1JOEG8SGAoUVjAxMTJfUE9LRU1PTl9SSFlE",
-            "T04QcBIZChVWMDExM19QT0tFTU9OX0NIQU5TRVkQcRIZChVWMDExNF9QT0tF",
-            "TU9OX1RBTkdFTEEQchIcChhWMDExNV9QT0tFTU9OX0tBTkdBU0tIQU4QcxIY",
-            "ChRWMDExNl9QT0tFTU9OX0hPUlNFQRB0EhgKFFYwMTE3X1BPS0VNT05fU0VB",
-            "RFJBEHUSGQoVVjAxMThfUE9LRU1PTl9HT0xERUVOEHYSGQoVVjAxMTlfUE9L",
-            "RU1PTl9TRUFLSU5HEHcSGAoUVjAxMjBfUE9LRU1PTl9TVEFSWVUQeBIZChVW",
-            "MDEyMV9QT0tFTU9OX1NUQVJNSUUQeRIZChVWMDEyMl9QT0tFTU9OX01SX01J",
-            "TUUQehIZChVWMDEyM19QT0tFTU9OX1NDWVRIRVIQexIWChJWMDEyNF9QT0tF",
-            "TU9OX0pZTlgQfBIcChhWMDEyNV9QT0tFTU9OX0VMRUNUQUJVWloQfRIYChRW",
-            "MDEyNl9QT0tFTU9OX01BR01BUhB+EhgKFFYwMTI3X1BPS0VNT05fUElOU0lS",
-            "EH8SGQoUVjAxMjhfUE9LRU1PTl9UQVVST1MQgAESGwoWVjAxMjlfUE9LRU1P",
-            "Tl9NQUdJS0FSUBCBARIbChZWMDEzMF9QT0tFTU9OX0dZQVJBRE9TEIIBEhkK",
-            "FFYwMTMxX1BPS0VNT05fTEFQUkFTEIMBEhgKE1YwMTMyX1BPS0VNT05fRElU",
-            "VE8QhAESGAoTVjAxMzNfUE9LRU1PTl9FRVZFRRCFARIbChZWMDEzNF9QT0tF",
-            "TU9OX1ZBUE9SRU9OEIYBEhoKFVYwMTM1X1BPS0VNT05fSk9MVEVPThCHARIa",
-            "ChVWMDEzNl9QT0tFTU9OX0ZMQVJFT04QiAESGgoVVjAxMzdfUE9LRU1PTl9Q",
-            "T1JZR09OEIkBEhoKFVYwMTM4X1BPS0VNT05fT01BTllURRCKARIaChVWMDEz",
-            "OV9QT0tFTU9OX09NQVNUQVIQiwESGQoUVjAxNDBfUE9LRU1PTl9LQUJVVE8Q",
-            "jAESGwoWVjAxNDFfUE9LRU1PTl9LQUJVVE9QUxCNARIdChhWMDE0Ml9QT0tF",
-            "TU9OX0FFUk9EQUNUWUwQjgESGgoVVjAxNDNfUE9LRU1PTl9TTk9STEFYEI8B",
-            "EhsKFlYwMTQ0X1BPS0VNT05fQVJUSUNVTk8QkAESGQoUVjAxNDVfUE9LRU1P",
-            "Tl9aQVBET1MQkQESGgoVVjAxNDZfUE9LRU1PTl9NT0xUUkVTEJIBEhoKFVYw",
-            "MTQ3X1BPS0VNT05fRFJBVElOSRCTARIcChdWMDE0OF9QT0tFTU9OX0RSQUdP",
-            "TkFJUhCUARIcChdWMDE0OV9QT0tFTU9OX0RSQUdPTklURRCVARIZChRWMDE1",
-            "MF9QT0tFTU9OX01FV1RXTxCWARIWChFWMDE1MV9QT0tFTU9OX01FVxCXAWIG",
-            "cHJvdG8z"));
-      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-          new pbr::FileDescriptor[] { },
-          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Unknown7", "Payload", "ErrorMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7.Parser, new[]{ "Unknown71", "Unknown72", "Unknown73" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload.Parser, new[]{ "Status", "Bag" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Parser, new[]{ "Timestamp", "Items" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto.Parser, new[]{ "Timestamp", "Item" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Parser, new[]{ "Pokemon", "Item", "PokedexEntry", "PlayerStats", "PlayerCurrency", "PlayerCamera", "InventoryUpgrades", "AppliedItem", "EggIncubators", "PokemonFamily" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto.Parser, new[]{ "Item", "Count", "Unseen" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto.Parser, new[]{ "PokedexEntryNumber", "TimesEncountered", "TimesCaptured", "EvolutionStonePieces", "EvolutionStones" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto.Parser, new[]{ "Level", "Experience", "PrevLevelExp", "NextLevelExp", "KmWalked", "NumPokemonEncountered", "NumUniquePokedexEntries", "NumPokemonCaptured", "NumEvolutions", "PokeStopVisits", "NumberOfPokeballThrown", "NumEggsHatched", "BigMagikarpCaught", "NumBattleAttackWon", "NumBattleAttackTotal", "NumBattleDefendedWon", "NumBattleTrainingWon", "NumBattleTrainingTotal", "PrestigeRaisedTotal", "PrestigeDroppedTotal", "NumPokemonDeployed", "SmallRattataCaught" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto.Parser, new[]{ "Item", "ItemType", "ExpirationMs", "AppliedMs" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto.Parser, new[]{ "DefaultCamera" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto.Parser, new[]{ "Gems" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto.Parser, new[]{ "InventoryUpgrade" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto.Parser, new[]{ "ItemId", "Item", "IncubatorType", "UsesRemaining", "PokemonId", "StartKmWalked", "TargetKmWalked" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto.Parser, new[]{ "FamilyId", "Candy" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.TransferPokemonProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.TransferPokemonProto.Parser, new[]{ "PokemonId" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.TransferPokemonOutProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.TransferPokemonOutProto.Parser, new[]{ "Status", "CandyAwarded" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.EvolvePokemonProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.EvolvePokemonProto.Parser, new[]{ "PokemonId" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.EvolvePokemonOutProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.EvolvePokemonOutProto.Parser, new[]{ "Result", "EvolvedPokemon", "ExpAwarded", "CandyAwarded" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto.Parser, new[]{ "Id", "PokemonType", "Cp", "Stamina", "MaxStamina", "Move1", "Move2", "DeployedFortId", "OwnerName", "IsEgg", "EggKmWalkedTarget", "EggKmWalkedStart", "Origin", "HeightM", "WeightKg", "IndividualAttack", "IndividualDefense", "IndividualStamina", "CpMultiplier", "Pokeball", "CapturedS2CellId", "BattlesAttacked", "BattlesDefended", "EggIncubatorId", "CreationTimeMs", "NumUpgrades", "AdditionalCpMultiplier", "Favorite", "Nickname", "FromFort" }, null, new[]{ typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto.Types.PokemonTypes) }, null)})
-          }));
-    }
-    #endregion
-
-  }
-  #region Messages
-  public sealed partial class InventoryResponse : pb::IMessage<InventoryResponse> {
-    private static readonly pb::MessageParser<InventoryResponse> _parser = new pb::MessageParser<InventoryResponse>(() => new InventoryResponse());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<InventoryResponse> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponseReflection.Descriptor.MessageTypes[0]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public InventoryResponse() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public InventoryResponse(InventoryResponse other) : this() {
-      unknown1_ = other.unknown1_;
-      unknown2_ = other.unknown2_;
-      apiUrl_ = other.apiUrl_;
-      Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
-      Unknown7 = other.unknown7_ != null ? other.Unknown7.Clone() : null;
-      payload_ = other.payload_.Clone();
-      errorMessage_ = other.errorMessage_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public InventoryResponse Clone() {
-      return new InventoryResponse(this);
-    }
-
-    /// <summary>Field number for the "unknown1" field.</summary>
-    public const int Unknown1FieldNumber = 1;
-    private int unknown1_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Unknown1 {
-      get { return unknown1_; }
-      set {
-        unknown1_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown2" field.</summary>
-    public const int Unknown2FieldNumber = 2;
-    private long unknown2_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public long Unknown2 {
-      get { return unknown2_; }
-      set {
-        unknown2_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "api_url" field.</summary>
-    public const int ApiUrlFieldNumber = 3;
-    private string apiUrl_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string ApiUrl {
-      get { return apiUrl_; }
-      set {
-        apiUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "unknown6" field.</summary>
-    public const int Unknown6FieldNumber = 6;
-    private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6 unknown6_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6 Unknown6 {
-      get { return unknown6_; }
-      set {
-        unknown6_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown7" field.</summary>
-    public const int Unknown7FieldNumber = 7;
-    private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7 unknown7_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7 Unknown7 {
-      get { return unknown7_; }
-      set {
-        unknown7_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "payload" field.</summary>
-    public const int PayloadFieldNumber = 100;
-    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload> _repeated_payload_codec
-        = pb::FieldCodec.ForMessage(802, global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload.Parser);
-    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload> payload_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload>();
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload> Payload {
-      get { return payload_; }
-    }
-
-    /// <summary>Field number for the "errorMessage" field.</summary>
-    public const int ErrorMessageFieldNumber = 101;
-    private string errorMessage_ = "";
-    /// <summary>
-    /// Should be moved to an error-proto file if error is always 101 field
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string ErrorMessage {
-      get { return errorMessage_; }
-      set {
-        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as InventoryResponse);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(InventoryResponse other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Unknown1 != other.Unknown1) return false;
-      if (Unknown2 != other.Unknown2) return false;
-      if (ApiUrl != other.ApiUrl) return false;
-      if (!object.Equals(Unknown6, other.Unknown6)) return false;
-      if (!object.Equals(Unknown7, other.Unknown7)) return false;
-      if(!payload_.Equals(other.payload_)) return false;
-      if (ErrorMessage != other.ErrorMessage) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-      if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
-      if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
-      if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
-      if (unknown7_ != null) hash ^= Unknown7.GetHashCode();
-      hash ^= payload_.GetHashCode();
-      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Unknown1 != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        output.WriteRawTag(16);
-        output.WriteInt64(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        output.WriteRawTag(50);
-        output.WriteMessage(Unknown6);
-      }
-      if (unknown7_ != null) {
-        output.WriteRawTag(58);
-        output.WriteMessage(Unknown7);
-      }
-      payload_.WriteTo(output, _repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        output.WriteRawTag(170, 6);
-        output.WriteString(ErrorMessage);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Unknown1 != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
-      }
-      if (unknown7_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown7);
-      }
-      size += payload_.CalculateSize(_repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        size += 2 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(InventoryResponse other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Unknown1 != 0) {
-        Unknown1 = other.Unknown1;
-      }
-      if (other.Unknown2 != 0L) {
-        Unknown2 = other.Unknown2;
-      }
-      if (other.ApiUrl.Length != 0) {
-        ApiUrl = other.ApiUrl;
-      }
-      if (other.unknown6_ != null) {
-        if (unknown6_ == null) {
-          unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6();
-        }
-        Unknown6.MergeFrom(other.Unknown6);
-      }
-      if (other.unknown7_ != null) {
-        if (unknown7_ == null) {
-          unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7();
-        }
-        Unknown7.MergeFrom(other.Unknown7);
-      }
-      payload_.Add(other.payload_);
-      if (other.ErrorMessage.Length != 0) {
-        ErrorMessage = other.ErrorMessage;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Unknown1 = input.ReadInt32();
-            break;
-          }
-          case 16: {
-            Unknown2 = input.ReadInt64();
-            break;
-          }
-          case 26: {
-            ApiUrl = input.ReadString();
-            break;
-          }
-          case 50: {
-            if (unknown6_ == null) {
-              unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6();
-            }
-            input.ReadMessage(unknown6_);
-            break;
-          }
-          case 58: {
-            if (unknown7_ == null) {
-              unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7();
-            }
-            input.ReadMessage(unknown7_);
-            break;
-          }
-          case 802: {
-            payload_.AddEntriesFrom(input, _repeated_payload_codec);
-            break;
-          }
-          case 810: {
-            ErrorMessage = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-    #region Nested types
-    /// <summary>Container for nested types declared in the InventoryResponse message type.</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static partial class Types {
-      public sealed partial class Unknown6 : pb::IMessage<Unknown6> {
-        private static readonly pb::MessageParser<Unknown6> _parser = new pb::MessageParser<Unknown6>(() => new Unknown6());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<Unknown6> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[0]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown6() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown6(Unknown6 other) : this() {
-          unknown1_ = other.unknown1_;
-          Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown6 Clone() {
-          return new Unknown6(this);
-        }
-
-        /// <summary>Field number for the "unknown1" field.</summary>
-        public const int Unknown1FieldNumber = 1;
-        private int unknown1_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Unknown1 {
-          get { return unknown1_; }
-          set {
-            unknown1_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown2" field.</summary>
-        public const int Unknown2FieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2 unknown2_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2 Unknown2 {
-          get { return unknown2_; }
-          set {
-            unknown2_ = value;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as Unknown6);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(Unknown6 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown1 != other.Unknown1) return false;
-          if (!object.Equals(Unknown2, other.Unknown2)) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-          if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown1 != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Unknown1);
-          }
-          if (unknown2_ != null) {
-            output.WriteRawTag(18);
-            output.WriteMessage(Unknown2);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown1 != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-          }
-          if (unknown2_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(Unknown6 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown1 != 0) {
-            Unknown1 = other.Unknown1;
-          }
-          if (other.unknown2_ != null) {
-            if (unknown2_ == null) {
-              unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2();
-            }
-            Unknown2.MergeFrom(other.Unknown2);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Unknown1 = input.ReadInt32();
-                break;
-              }
-              case 18: {
-                if (unknown2_ == null) {
-                  unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2();
-                }
-                input.ReadMessage(unknown2_);
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static partial class Types {
-          public sealed partial class Unknown2 : pb::IMessage<Unknown2> {
-            private static readonly pb::MessageParser<Unknown2> _parser = new pb::MessageParser<Unknown2>(() => new Unknown2());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<Unknown2> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Descriptor.NestedTypes[0]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public Unknown2() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public Unknown2(Unknown2 other) : this() {
-              unknown1_ = other.unknown1_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public Unknown2 Clone() {
-              return new Unknown2(this);
-            }
-
-            /// <summary>Field number for the "unknown1" field.</summary>
-            public const int Unknown1FieldNumber = 1;
-            private pb::ByteString unknown1_ = pb::ByteString.Empty;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public pb::ByteString Unknown1 {
-              get { return unknown1_; }
-              set {
-                unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as Unknown2);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(Unknown2 other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Unknown1 != other.Unknown1) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Unknown1.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteBytes(Unknown1);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (Unknown1.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(Unknown2 other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Unknown1.Length != 0) {
-                Unknown1 = other.Unknown1;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    Unknown1 = input.ReadBytes();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-        }
-        #endregion
-
-      }
-
-      public sealed partial class Unknown7 : pb::IMessage<Unknown7> {
-        private static readonly pb::MessageParser<Unknown7> _parser = new pb::MessageParser<Unknown7>(() => new Unknown7());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<Unknown7> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[1]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown7() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown7(Unknown7 other) : this() {
-          unknown71_ = other.unknown71_;
-          unknown72_ = other.unknown72_;
-          unknown73_ = other.unknown73_;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown7 Clone() {
-          return new Unknown7(this);
-        }
-
-        /// <summary>Field number for the "unknown71" field.</summary>
-        public const int Unknown71FieldNumber = 1;
-        private pb::ByteString unknown71_ = pb::ByteString.Empty;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public pb::ByteString Unknown71 {
-          get { return unknown71_; }
-          set {
-            unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "unknown72" field.</summary>
-        public const int Unknown72FieldNumber = 2;
-        private long unknown72_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public long Unknown72 {
-          get { return unknown72_; }
-          set {
-            unknown72_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown73" field.</summary>
-        public const int Unknown73FieldNumber = 3;
-        private pb::ByteString unknown73_ = pb::ByteString.Empty;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public pb::ByteString Unknown73 {
-          get { return unknown73_; }
-          set {
-            unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as Unknown7);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(Unknown7 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown71 != other.Unknown71) return false;
-          if (Unknown72 != other.Unknown72) return false;
-          if (Unknown73 != other.Unknown73) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
-          if (Unknown72 != 0L) hash ^= Unknown72.GetHashCode();
-          if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown71.Length != 0) {
-            output.WriteRawTag(10);
-            output.WriteBytes(Unknown71);
-          }
-          if (Unknown72 != 0L) {
-            output.WriteRawTag(16);
-            output.WriteInt64(Unknown72);
-          }
-          if (Unknown73.Length != 0) {
-            output.WriteRawTag(26);
-            output.WriteBytes(Unknown73);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown71.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
-          }
-          if (Unknown72 != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown72);
-          }
-          if (Unknown73.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(Unknown7 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown71.Length != 0) {
-            Unknown71 = other.Unknown71;
-          }
-          if (other.Unknown72 != 0L) {
-            Unknown72 = other.Unknown72;
-          }
-          if (other.Unknown73.Length != 0) {
-            Unknown73 = other.Unknown73;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 10: {
-                Unknown71 = input.ReadBytes();
-                break;
-              }
-              case 16: {
-                Unknown72 = input.ReadInt64();
-                break;
-              }
-              case 26: {
-                Unknown73 = input.ReadBytes();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      public sealed partial class Payload : pb::IMessage<Payload> {
-        private static readonly pb::MessageParser<Payload> _parser = new pb::MessageParser<Payload>(() => new Payload());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<Payload> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[2]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Payload() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Payload(Payload other) : this() {
-          status_ = other.status_;
-          Bag = other.bag_ != null ? other.Bag.Clone() : null;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Payload Clone() {
-          return new Payload(this);
-        }
-
-        /// <summary>Field number for the "Status" field.</summary>
-        public const int StatusFieldNumber = 1;
-        private int status_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Status {
-          get { return status_; }
-          set {
-            status_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Bag" field.</summary>
-        public const int BagFieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto bag_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto Bag {
-          get { return bag_; }
-          set {
-            bag_ = value;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as Payload);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(Payload other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Status != other.Status) return false;
-          if (!object.Equals(Bag, other.Bag)) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Status != 0) hash ^= Status.GetHashCode();
-          if (bag_ != null) hash ^= Bag.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Status != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Status);
-          }
-          if (bag_ != null) {
-            output.WriteRawTag(18);
-            output.WriteMessage(Bag);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (Status != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Status);
-          }
-          if (bag_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Bag);
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(Payload other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Status != 0) {
-            Status = other.Status;
-          }
-          if (other.bag_ != null) {
-            if (bag_ == null) {
-              bag_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto();
-            }
-            Bag.MergeFrom(other.Bag);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Status = input.ReadInt32();
-                break;
-              }
-              case 18: {
-                if (bag_ == null) {
-                  bag_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto();
-                }
-                input.ReadMessage(bag_);
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      public sealed partial class InventoryResponseProto : pb::IMessage<InventoryResponseProto> {
-        private static readonly pb::MessageParser<InventoryResponseProto> _parser = new pb::MessageParser<InventoryResponseProto>(() => new InventoryResponseProto());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<InventoryResponseProto> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[3]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public InventoryResponseProto() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public InventoryResponseProto(InventoryResponseProto other) : this() {
-          timestamp_ = other.timestamp_;
-          items_ = other.items_.Clone();
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public InventoryResponseProto Clone() {
-          return new InventoryResponseProto(this);
-        }
-
-        /// <summary>Field number for the "timestamp" field.</summary>
-        public const int TimestampFieldNumber = 2;
-        private long timestamp_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public long Timestamp {
-          get { return timestamp_; }
-          set {
-            timestamp_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "items" field.</summary>
-        public const int ItemsFieldNumber = 3;
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto> _repeated_items_codec
-            = pb::FieldCodec.ForMessage(26, global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto.Parser);
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto> items_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto>();
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto> Items {
-          get { return items_; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as InventoryResponseProto);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(InventoryResponseProto other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Timestamp != other.Timestamp) return false;
-          if(!items_.Equals(other.items_)) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Timestamp != 0L) hash ^= Timestamp.GetHashCode();
-          hash ^= items_.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Timestamp != 0L) {
-            output.WriteRawTag(16);
-            output.WriteInt64(Timestamp);
-          }
-          items_.WriteTo(output, _repeated_items_codec);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (Timestamp != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Timestamp);
-          }
-          size += items_.CalculateSize(_repeated_items_codec);
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(InventoryResponseProto other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Timestamp != 0L) {
-            Timestamp = other.Timestamp;
-          }
-          items_.Add(other.items_);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 16: {
-                Timestamp = input.ReadInt64();
-                break;
-              }
-              case 26: {
-                items_.AddEntriesFrom(input, _repeated_items_codec);
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the InventoryResponseProto message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static partial class Types {
-          public sealed partial class InventoryItemResponseProto : pb::IMessage<InventoryItemResponseProto> {
-            private static readonly pb::MessageParser<InventoryItemResponseProto> _parser = new pb::MessageParser<InventoryItemResponseProto>(() => new InventoryItemResponseProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<InventoryItemResponseProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Descriptor.NestedTypes[0]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public InventoryItemResponseProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public InventoryItemResponseProto(InventoryItemResponseProto other) : this() {
-              timestamp_ = other.timestamp_;
-              Item = other.item_ != null ? other.Item.Clone() : null;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public InventoryItemResponseProto Clone() {
-              return new InventoryItemResponseProto(this);
-            }
-
-            /// <summary>Field number for the "timestamp" field.</summary>
-            public const int TimestampFieldNumber = 1;
-            private long timestamp_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long Timestamp {
-              get { return timestamp_; }
-              set {
-                timestamp_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "item" field.</summary>
-            public const int ItemFieldNumber = 3;
-            private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto item_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto Item {
-              get { return item_; }
-              set {
-                item_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as InventoryItemResponseProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(InventoryItemResponseProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Timestamp != other.Timestamp) return false;
-              if (!object.Equals(Item, other.Item)) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Timestamp != 0L) hash ^= Timestamp.GetHashCode();
-              if (item_ != null) hash ^= Item.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Timestamp != 0L) {
-                output.WriteRawTag(8);
-                output.WriteInt64(Timestamp);
-              }
-              if (item_ != null) {
-                output.WriteRawTag(26);
-                output.WriteMessage(Item);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (Timestamp != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(Timestamp);
-              }
-              if (item_ != null) {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(InventoryItemResponseProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Timestamp != 0L) {
-                Timestamp = other.Timestamp;
-              }
-              if (other.item_ != null) {
-                if (item_ == null) {
-                  item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto();
-                }
-                Item.MergeFrom(other.Item);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    Timestamp = input.ReadInt64();
-                    break;
-                  }
-                  case 26: {
-                    if (item_ == null) {
-                      item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto();
-                    }
-                    input.ReadMessage(item_);
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-        }
-        #endregion
-
-      }
-
-      public sealed partial class InventoryItemProto : pb::IMessage<InventoryItemProto> {
-        private static readonly pb::MessageParser<InventoryItemProto> _parser = new pb::MessageParser<InventoryItemProto>(() => new InventoryItemProto());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<InventoryItemProto> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[4]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public InventoryItemProto() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public InventoryItemProto(InventoryItemProto other) : this() {
-          Pokemon = other.pokemon_ != null ? other.Pokemon.Clone() : null;
-          Item = other.item_ != null ? other.Item.Clone() : null;
-          PokedexEntry = other.pokedexEntry_ != null ? other.PokedexEntry.Clone() : null;
-          PlayerStats = other.playerStats_ != null ? other.PlayerStats.Clone() : null;
-          PlayerCurrency = other.playerCurrency_ != null ? other.PlayerCurrency.Clone() : null;
-          PlayerCamera = other.playerCamera_ != null ? other.PlayerCamera.Clone() : null;
-          InventoryUpgrades = other.inventoryUpgrades_ != null ? other.InventoryUpgrades.Clone() : null;
-          AppliedItem = other.appliedItem_ != null ? other.AppliedItem.Clone() : null;
-          EggIncubators = other.eggIncubators_ != null ? other.EggIncubators.Clone() : null;
-          PokemonFamily = other.pokemonFamily_ != null ? other.PokemonFamily.Clone() : null;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public InventoryItemProto Clone() {
-          return new InventoryItemProto(this);
-        }
-
-        /// <summary>Field number for the "Pokemon" field.</summary>
-        public const int PokemonFieldNumber = 1;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto pokemon_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto Pokemon {
-          get { return pokemon_; }
-          set {
-            pokemon_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Item" field.</summary>
-        public const int ItemFieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto item_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto Item {
-          get { return item_; }
-          set {
-            item_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "PokedexEntry" field.</summary>
-        public const int PokedexEntryFieldNumber = 3;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto pokedexEntry_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto PokedexEntry {
-          get { return pokedexEntry_; }
-          set {
-            pokedexEntry_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "PlayerStats" field.</summary>
-        public const int PlayerStatsFieldNumber = 4;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto playerStats_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto PlayerStats {
-          get { return playerStats_; }
-          set {
-            playerStats_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "PlayerCurrency" field.</summary>
-        public const int PlayerCurrencyFieldNumber = 5;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto playerCurrency_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto PlayerCurrency {
-          get { return playerCurrency_; }
-          set {
-            playerCurrency_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "PlayerCamera" field.</summary>
-        public const int PlayerCameraFieldNumber = 6;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto playerCamera_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto PlayerCamera {
-          get { return playerCamera_; }
-          set {
-            playerCamera_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "InventoryUpgrades" field.</summary>
-        public const int InventoryUpgradesFieldNumber = 7;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto inventoryUpgrades_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto InventoryUpgrades {
-          get { return inventoryUpgrades_; }
-          set {
-            inventoryUpgrades_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "AppliedItem" field.</summary>
-        public const int AppliedItemFieldNumber = 8;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto appliedItem_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto AppliedItem {
-          get { return appliedItem_; }
-          set {
-            appliedItem_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "EggIncubators" field.</summary>
-        public const int EggIncubatorsFieldNumber = 9;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto eggIncubators_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto EggIncubators {
-          get { return eggIncubators_; }
-          set {
-            eggIncubators_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "PokemonFamily" field.</summary>
-        public const int PokemonFamilyFieldNumber = 10;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto pokemonFamily_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto PokemonFamily {
-          get { return pokemonFamily_; }
-          set {
-            pokemonFamily_ = value;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as InventoryItemProto);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(InventoryItemProto other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (!object.Equals(Pokemon, other.Pokemon)) return false;
-          if (!object.Equals(Item, other.Item)) return false;
-          if (!object.Equals(PokedexEntry, other.PokedexEntry)) return false;
-          if (!object.Equals(PlayerStats, other.PlayerStats)) return false;
-          if (!object.Equals(PlayerCurrency, other.PlayerCurrency)) return false;
-          if (!object.Equals(PlayerCamera, other.PlayerCamera)) return false;
-          if (!object.Equals(InventoryUpgrades, other.InventoryUpgrades)) return false;
-          if (!object.Equals(AppliedItem, other.AppliedItem)) return false;
-          if (!object.Equals(EggIncubators, other.EggIncubators)) return false;
-          if (!object.Equals(PokemonFamily, other.PokemonFamily)) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (pokemon_ != null) hash ^= Pokemon.GetHashCode();
-          if (item_ != null) hash ^= Item.GetHashCode();
-          if (pokedexEntry_ != null) hash ^= PokedexEntry.GetHashCode();
-          if (playerStats_ != null) hash ^= PlayerStats.GetHashCode();
-          if (playerCurrency_ != null) hash ^= PlayerCurrency.GetHashCode();
-          if (playerCamera_ != null) hash ^= PlayerCamera.GetHashCode();
-          if (inventoryUpgrades_ != null) hash ^= InventoryUpgrades.GetHashCode();
-          if (appliedItem_ != null) hash ^= AppliedItem.GetHashCode();
-          if (eggIncubators_ != null) hash ^= EggIncubators.GetHashCode();
-          if (pokemonFamily_ != null) hash ^= PokemonFamily.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (pokemon_ != null) {
-            output.WriteRawTag(10);
-            output.WriteMessage(Pokemon);
-          }
-          if (item_ != null) {
-            output.WriteRawTag(18);
-            output.WriteMessage(Item);
-          }
-          if (pokedexEntry_ != null) {
-            output.WriteRawTag(26);
-            output.WriteMessage(PokedexEntry);
-          }
-          if (playerStats_ != null) {
-            output.WriteRawTag(34);
-            output.WriteMessage(PlayerStats);
-          }
-          if (playerCurrency_ != null) {
-            output.WriteRawTag(42);
-            output.WriteMessage(PlayerCurrency);
-          }
-          if (playerCamera_ != null) {
-            output.WriteRawTag(50);
-            output.WriteMessage(PlayerCamera);
-          }
-          if (inventoryUpgrades_ != null) {
-            output.WriteRawTag(58);
-            output.WriteMessage(InventoryUpgrades);
-          }
-          if (appliedItem_ != null) {
-            output.WriteRawTag(66);
-            output.WriteMessage(AppliedItem);
-          }
-          if (eggIncubators_ != null) {
-            output.WriteRawTag(74);
-            output.WriteMessage(EggIncubators);
-          }
-          if (pokemonFamily_ != null) {
-            output.WriteRawTag(82);
-            output.WriteMessage(PokemonFamily);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (pokemon_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Pokemon);
-          }
-          if (item_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
-          }
-          if (pokedexEntry_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokedexEntry);
-          }
-          if (playerStats_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerStats);
-          }
-          if (playerCurrency_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerCurrency);
-          }
-          if (playerCamera_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerCamera);
-          }
-          if (inventoryUpgrades_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventoryUpgrades);
-          }
-          if (appliedItem_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppliedItem);
-          }
-          if (eggIncubators_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(EggIncubators);
-          }
-          if (pokemonFamily_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonFamily);
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(InventoryItemProto other) {
-          if (other == null) {
-            return;
-          }
-          if (other.pokemon_ != null) {
-            if (pokemon_ == null) {
-              pokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto();
-            }
-            Pokemon.MergeFrom(other.Pokemon);
-          }
-          if (other.item_ != null) {
-            if (item_ == null) {
-              item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto();
-            }
-            Item.MergeFrom(other.Item);
-          }
-          if (other.pokedexEntry_ != null) {
-            if (pokedexEntry_ == null) {
-              pokedexEntry_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto();
-            }
-            PokedexEntry.MergeFrom(other.PokedexEntry);
-          }
-          if (other.playerStats_ != null) {
-            if (playerStats_ == null) {
-              playerStats_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto();
-            }
-            PlayerStats.MergeFrom(other.PlayerStats);
-          }
-          if (other.playerCurrency_ != null) {
-            if (playerCurrency_ == null) {
-              playerCurrency_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto();
-            }
-            PlayerCurrency.MergeFrom(other.PlayerCurrency);
-          }
-          if (other.playerCamera_ != null) {
-            if (playerCamera_ == null) {
-              playerCamera_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto();
-            }
-            PlayerCamera.MergeFrom(other.PlayerCamera);
-          }
-          if (other.inventoryUpgrades_ != null) {
-            if (inventoryUpgrades_ == null) {
-              inventoryUpgrades_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto();
-            }
-            InventoryUpgrades.MergeFrom(other.InventoryUpgrades);
-          }
-          if (other.appliedItem_ != null) {
-            if (appliedItem_ == null) {
-              appliedItem_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto();
-            }
-            AppliedItem.MergeFrom(other.AppliedItem);
-          }
-          if (other.eggIncubators_ != null) {
-            if (eggIncubators_ == null) {
-              eggIncubators_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto();
-            }
-            EggIncubators.MergeFrom(other.EggIncubators);
-          }
-          if (other.pokemonFamily_ != null) {
-            if (pokemonFamily_ == null) {
-              pokemonFamily_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto();
-            }
-            PokemonFamily.MergeFrom(other.PokemonFamily);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 10: {
-                if (pokemon_ == null) {
-                  pokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto();
-                }
-                input.ReadMessage(pokemon_);
-                break;
-              }
-              case 18: {
-                if (item_ == null) {
-                  item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto();
-                }
-                input.ReadMessage(item_);
-                break;
-              }
-              case 26: {
-                if (pokedexEntry_ == null) {
-                  pokedexEntry_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto();
-                }
-                input.ReadMessage(pokedexEntry_);
-                break;
-              }
-              case 34: {
-                if (playerStats_ == null) {
-                  playerStats_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto();
-                }
-                input.ReadMessage(playerStats_);
-                break;
-              }
-              case 42: {
-                if (playerCurrency_ == null) {
-                  playerCurrency_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto();
-                }
-                input.ReadMessage(playerCurrency_);
-                break;
-              }
-              case 50: {
-                if (playerCamera_ == null) {
-                  playerCamera_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto();
-                }
-                input.ReadMessage(playerCamera_);
-                break;
-              }
-              case 58: {
-                if (inventoryUpgrades_ == null) {
-                  inventoryUpgrades_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto();
-                }
-                input.ReadMessage(inventoryUpgrades_);
-                break;
-              }
-              case 66: {
-                if (appliedItem_ == null) {
-                  appliedItem_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto();
-                }
-                input.ReadMessage(appliedItem_);
-                break;
-              }
-              case 74: {
-                if (eggIncubators_ == null) {
-                  eggIncubators_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto();
-                }
-                input.ReadMessage(eggIncubators_);
-                break;
-              }
-              case 82: {
-                if (pokemonFamily_ == null) {
-                  pokemonFamily_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto();
-                }
-                input.ReadMessage(pokemonFamily_);
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the InventoryItemProto message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static partial class Types {
-          public sealed partial class ItemProto : pb::IMessage<ItemProto> {
-            private static readonly pb::MessageParser<ItemProto> _parser = new pb::MessageParser<ItemProto>(() => new ItemProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<ItemProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[0]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ItemProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ItemProto(ItemProto other) : this() {
-              item_ = other.item_;
-              count_ = other.count_;
-              unseen_ = other.unseen_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ItemProto Clone() {
-              return new ItemProto(this);
-            }
-
-            /// <summary>Field number for the "Item" field.</summary>
-            public const int ItemFieldNumber = 1;
-            private int item_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int Item {
-              get { return item_; }
-              set {
-                item_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Count" field.</summary>
-            public const int CountFieldNumber = 2;
-            private int count_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int Count {
-              get { return count_; }
-              set {
-                count_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Unseen" field.</summary>
-            public const int UnseenFieldNumber = 3;
-            private bool unseen_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Unseen {
-              get { return unseen_; }
-              set {
-                unseen_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as ItemProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(ItemProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Item != other.Item) return false;
-              if (Count != other.Count) return false;
-              if (Unseen != other.Unseen) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Item != 0) hash ^= Item.GetHashCode();
-              if (Count != 0) hash ^= Count.GetHashCode();
-              if (Unseen != false) hash ^= Unseen.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Item != 0) {
-                output.WriteRawTag(8);
-                output.WriteInt32(Item);
-              }
-              if (Count != 0) {
-                output.WriteRawTag(16);
-                output.WriteInt32(Count);
-              }
-              if (Unseen != false) {
-                output.WriteRawTag(24);
-                output.WriteBool(Unseen);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (Item != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Item);
-              }
-              if (Count != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Count);
-              }
-              if (Unseen != false) {
-                size += 1 + 1;
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(ItemProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Item != 0) {
-                Item = other.Item;
-              }
-              if (other.Count != 0) {
-                Count = other.Count;
-              }
-              if (other.Unseen != false) {
-                Unseen = other.Unseen;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    Item = input.ReadInt32();
-                    break;
-                  }
-                  case 16: {
-                    Count = input.ReadInt32();
-                    break;
-                  }
-                  case 24: {
-                    Unseen = input.ReadBool();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class PokedexEntryProto : pb::IMessage<PokedexEntryProto> {
-            private static readonly pb::MessageParser<PokedexEntryProto> _parser = new pb::MessageParser<PokedexEntryProto>(() => new PokedexEntryProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<PokedexEntryProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[1]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokedexEntryProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokedexEntryProto(PokedexEntryProto other) : this() {
-              pokedexEntryNumber_ = other.pokedexEntryNumber_;
-              timesEncountered_ = other.timesEncountered_;
-              timesCaptured_ = other.timesCaptured_;
-              evolutionStonePieces_ = other.evolutionStonePieces_;
-              evolutionStones_ = other.evolutionStones_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokedexEntryProto Clone() {
-              return new PokedexEntryProto(this);
-            }
-
-            /// <summary>Field number for the "PokedexEntryNumber" field.</summary>
-            public const int PokedexEntryNumberFieldNumber = 1;
-            private int pokedexEntryNumber_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int PokedexEntryNumber {
-              get { return pokedexEntryNumber_; }
-              set {
-                pokedexEntryNumber_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "TimesEncountered" field.</summary>
-            public const int TimesEncounteredFieldNumber = 2;
-            private int timesEncountered_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int TimesEncountered {
-              get { return timesEncountered_; }
-              set {
-                timesEncountered_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "TimesCaptured" field.</summary>
-            public const int TimesCapturedFieldNumber = 3;
-            private int timesCaptured_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int TimesCaptured {
-              get { return timesCaptured_; }
-              set {
-                timesCaptured_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "EvolutionStonePieces" field.</summary>
-            public const int EvolutionStonePiecesFieldNumber = 4;
-            private int evolutionStonePieces_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int EvolutionStonePieces {
-              get { return evolutionStonePieces_; }
-              set {
-                evolutionStonePieces_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "EvolutionStones" field.</summary>
-            public const int EvolutionStonesFieldNumber = 5;
-            private int evolutionStones_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int EvolutionStones {
-              get { return evolutionStones_; }
-              set {
-                evolutionStones_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as PokedexEntryProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(PokedexEntryProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (PokedexEntryNumber != other.PokedexEntryNumber) return false;
-              if (TimesEncountered != other.TimesEncountered) return false;
-              if (TimesCaptured != other.TimesCaptured) return false;
-              if (EvolutionStonePieces != other.EvolutionStonePieces) return false;
-              if (EvolutionStones != other.EvolutionStones) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (PokedexEntryNumber != 0) hash ^= PokedexEntryNumber.GetHashCode();
-              if (TimesEncountered != 0) hash ^= TimesEncountered.GetHashCode();
-              if (TimesCaptured != 0) hash ^= TimesCaptured.GetHashCode();
-              if (EvolutionStonePieces != 0) hash ^= EvolutionStonePieces.GetHashCode();
-              if (EvolutionStones != 0) hash ^= EvolutionStones.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (PokedexEntryNumber != 0) {
-                output.WriteRawTag(8);
-                output.WriteInt32(PokedexEntryNumber);
-              }
-              if (TimesEncountered != 0) {
-                output.WriteRawTag(16);
-                output.WriteInt32(TimesEncountered);
-              }
-              if (TimesCaptured != 0) {
-                output.WriteRawTag(24);
-                output.WriteInt32(TimesCaptured);
-              }
-              if (EvolutionStonePieces != 0) {
-                output.WriteRawTag(32);
-                output.WriteInt32(EvolutionStonePieces);
-              }
-              if (EvolutionStones != 0) {
-                output.WriteRawTag(40);
-                output.WriteInt32(EvolutionStones);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (PokedexEntryNumber != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokedexEntryNumber);
-              }
-              if (TimesEncountered != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimesEncountered);
-              }
-              if (TimesCaptured != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimesCaptured);
-              }
-              if (EvolutionStonePieces != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EvolutionStonePieces);
-              }
-              if (EvolutionStones != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EvolutionStones);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(PokedexEntryProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.PokedexEntryNumber != 0) {
-                PokedexEntryNumber = other.PokedexEntryNumber;
-              }
-              if (other.TimesEncountered != 0) {
-                TimesEncountered = other.TimesEncountered;
-              }
-              if (other.TimesCaptured != 0) {
-                TimesCaptured = other.TimesCaptured;
-              }
-              if (other.EvolutionStonePieces != 0) {
-                EvolutionStonePieces = other.EvolutionStonePieces;
-              }
-              if (other.EvolutionStones != 0) {
-                EvolutionStones = other.EvolutionStones;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    PokedexEntryNumber = input.ReadInt32();
-                    break;
-                  }
-                  case 16: {
-                    TimesEncountered = input.ReadInt32();
-                    break;
-                  }
-                  case 24: {
-                    TimesCaptured = input.ReadInt32();
-                    break;
-                  }
-                  case 32: {
-                    EvolutionStonePieces = input.ReadInt32();
-                    break;
-                  }
-                  case 40: {
-                    EvolutionStones = input.ReadInt32();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class PlayerStatsProto : pb::IMessage<PlayerStatsProto> {
-            private static readonly pb::MessageParser<PlayerStatsProto> _parser = new pb::MessageParser<PlayerStatsProto>(() => new PlayerStatsProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<PlayerStatsProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[2]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PlayerStatsProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PlayerStatsProto(PlayerStatsProto other) : this() {
-              level_ = other.level_;
-              experience_ = other.experience_;
-              prevLevelExp_ = other.prevLevelExp_;
-              nextLevelExp_ = other.nextLevelExp_;
-              kmWalked_ = other.kmWalked_;
-              numPokemonEncountered_ = other.numPokemonEncountered_;
-              numUniquePokedexEntries_ = other.numUniquePokedexEntries_;
-              numPokemonCaptured_ = other.numPokemonCaptured_;
-              numEvolutions_ = other.numEvolutions_;
-              pokeStopVisits_ = other.pokeStopVisits_;
-              numberOfPokeballThrown_ = other.numberOfPokeballThrown_;
-              numEggsHatched_ = other.numEggsHatched_;
-              bigMagikarpCaught_ = other.bigMagikarpCaught_;
-              numBattleAttackWon_ = other.numBattleAttackWon_;
-              numBattleAttackTotal_ = other.numBattleAttackTotal_;
-              numBattleDefendedWon_ = other.numBattleDefendedWon_;
-              numBattleTrainingWon_ = other.numBattleTrainingWon_;
-              numBattleTrainingTotal_ = other.numBattleTrainingTotal_;
-              prestigeRaisedTotal_ = other.prestigeRaisedTotal_;
-              prestigeDroppedTotal_ = other.prestigeDroppedTotal_;
-              numPokemonDeployed_ = other.numPokemonDeployed_;
-              smallRattataCaught_ = other.smallRattataCaught_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PlayerStatsProto Clone() {
-              return new PlayerStatsProto(this);
-            }
-
-            /// <summary>Field number for the "Level" field.</summary>
-            public const int LevelFieldNumber = 1;
-            private int level_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int Level {
-              get { return level_; }
-              set {
-                level_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Experience" field.</summary>
-            public const int ExperienceFieldNumber = 2;
-            private long experience_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long Experience {
-              get { return experience_; }
-              set {
-                experience_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "PrevLevelExp" field.</summary>
-            public const int PrevLevelExpFieldNumber = 3;
-            private long prevLevelExp_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long PrevLevelExp {
-              get { return prevLevelExp_; }
-              set {
-                prevLevelExp_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NextLevelExp" field.</summary>
-            public const int NextLevelExpFieldNumber = 4;
-            private long nextLevelExp_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long NextLevelExp {
-              get { return nextLevelExp_; }
-              set {
-                nextLevelExp_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "KmWalked" field.</summary>
-            public const int KmWalkedFieldNumber = 5;
-            private float kmWalked_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public float KmWalked {
-              get { return kmWalked_; }
-              set {
-                kmWalked_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumPokemonEncountered" field.</summary>
-            public const int NumPokemonEncounteredFieldNumber = 6;
-            private int numPokemonEncountered_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumPokemonEncountered {
-              get { return numPokemonEncountered_; }
-              set {
-                numPokemonEncountered_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumUniquePokedexEntries" field.</summary>
-            public const int NumUniquePokedexEntriesFieldNumber = 7;
-            private int numUniquePokedexEntries_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumUniquePokedexEntries {
-              get { return numUniquePokedexEntries_; }
-              set {
-                numUniquePokedexEntries_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumPokemonCaptured" field.</summary>
-            public const int NumPokemonCapturedFieldNumber = 8;
-            private int numPokemonCaptured_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumPokemonCaptured {
-              get { return numPokemonCaptured_; }
-              set {
-                numPokemonCaptured_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumEvolutions" field.</summary>
-            public const int NumEvolutionsFieldNumber = 9;
-            private int numEvolutions_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumEvolutions {
-              get { return numEvolutions_; }
-              set {
-                numEvolutions_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "PokeStopVisits" field.</summary>
-            public const int PokeStopVisitsFieldNumber = 10;
-            private int pokeStopVisits_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int PokeStopVisits {
-              get { return pokeStopVisits_; }
-              set {
-                pokeStopVisits_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumberOfPokeballThrown" field.</summary>
-            public const int NumberOfPokeballThrownFieldNumber = 11;
-            private int numberOfPokeballThrown_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumberOfPokeballThrown {
-              get { return numberOfPokeballThrown_; }
-              set {
-                numberOfPokeballThrown_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumEggsHatched" field.</summary>
-            public const int NumEggsHatchedFieldNumber = 12;
-            private int numEggsHatched_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumEggsHatched {
-              get { return numEggsHatched_; }
-              set {
-                numEggsHatched_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "BigMagikarpCaught" field.</summary>
-            public const int BigMagikarpCaughtFieldNumber = 13;
-            private int bigMagikarpCaught_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int BigMagikarpCaught {
-              get { return bigMagikarpCaught_; }
-              set {
-                bigMagikarpCaught_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumBattleAttackWon" field.</summary>
-            public const int NumBattleAttackWonFieldNumber = 14;
-            private int numBattleAttackWon_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumBattleAttackWon {
-              get { return numBattleAttackWon_; }
-              set {
-                numBattleAttackWon_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumBattleAttackTotal" field.</summary>
-            public const int NumBattleAttackTotalFieldNumber = 15;
-            private int numBattleAttackTotal_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumBattleAttackTotal {
-              get { return numBattleAttackTotal_; }
-              set {
-                numBattleAttackTotal_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumBattleDefendedWon" field.</summary>
-            public const int NumBattleDefendedWonFieldNumber = 16;
-            private int numBattleDefendedWon_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumBattleDefendedWon {
-              get { return numBattleDefendedWon_; }
-              set {
-                numBattleDefendedWon_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumBattleTrainingWon" field.</summary>
-            public const int NumBattleTrainingWonFieldNumber = 17;
-            private int numBattleTrainingWon_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumBattleTrainingWon {
-              get { return numBattleTrainingWon_; }
-              set {
-                numBattleTrainingWon_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumBattleTrainingTotal" field.</summary>
-            public const int NumBattleTrainingTotalFieldNumber = 18;
-            private int numBattleTrainingTotal_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumBattleTrainingTotal {
-              get { return numBattleTrainingTotal_; }
-              set {
-                numBattleTrainingTotal_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "PrestigeRaisedTotal" field.</summary>
-            public const int PrestigeRaisedTotalFieldNumber = 19;
-            private int prestigeRaisedTotal_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int PrestigeRaisedTotal {
-              get { return prestigeRaisedTotal_; }
-              set {
-                prestigeRaisedTotal_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "PrestigeDroppedTotal" field.</summary>
-            public const int PrestigeDroppedTotalFieldNumber = 20;
-            private int prestigeDroppedTotal_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int PrestigeDroppedTotal {
-              get { return prestigeDroppedTotal_; }
-              set {
-                prestigeDroppedTotal_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "NumPokemonDeployed" field.</summary>
-            public const int NumPokemonDeployedFieldNumber = 21;
-            private int numPokemonDeployed_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int NumPokemonDeployed {
-              get { return numPokemonDeployed_; }
-              set {
-                numPokemonDeployed_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "SmallRattataCaught" field.</summary>
-            public const int SmallRattataCaughtFieldNumber = 23;
-            private int smallRattataCaught_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int SmallRattataCaught {
-              get { return smallRattataCaught_; }
-              set {
-                smallRattataCaught_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as PlayerStatsProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(PlayerStatsProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Level != other.Level) return false;
-              if (Experience != other.Experience) return false;
-              if (PrevLevelExp != other.PrevLevelExp) return false;
-              if (NextLevelExp != other.NextLevelExp) return false;
-              if (KmWalked != other.KmWalked) return false;
-              if (NumPokemonEncountered != other.NumPokemonEncountered) return false;
-              if (NumUniquePokedexEntries != other.NumUniquePokedexEntries) return false;
-              if (NumPokemonCaptured != other.NumPokemonCaptured) return false;
-              if (NumEvolutions != other.NumEvolutions) return false;
-              if (PokeStopVisits != other.PokeStopVisits) return false;
-              if (NumberOfPokeballThrown != other.NumberOfPokeballThrown) return false;
-              if (NumEggsHatched != other.NumEggsHatched) return false;
-              if (BigMagikarpCaught != other.BigMagikarpCaught) return false;
-              if (NumBattleAttackWon != other.NumBattleAttackWon) return false;
-              if (NumBattleAttackTotal != other.NumBattleAttackTotal) return false;
-              if (NumBattleDefendedWon != other.NumBattleDefendedWon) return false;
-              if (NumBattleTrainingWon != other.NumBattleTrainingWon) return false;
-              if (NumBattleTrainingTotal != other.NumBattleTrainingTotal) return false;
-              if (PrestigeRaisedTotal != other.PrestigeRaisedTotal) return false;
-              if (PrestigeDroppedTotal != other.PrestigeDroppedTotal) return false;
-              if (NumPokemonDeployed != other.NumPokemonDeployed) return false;
-              if (SmallRattataCaught != other.SmallRattataCaught) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Level != 0) hash ^= Level.GetHashCode();
-              if (Experience != 0L) hash ^= Experience.GetHashCode();
-              if (PrevLevelExp != 0L) hash ^= PrevLevelExp.GetHashCode();
-              if (NextLevelExp != 0L) hash ^= NextLevelExp.GetHashCode();
-              if (KmWalked != 0F) hash ^= KmWalked.GetHashCode();
-              if (NumPokemonEncountered != 0) hash ^= NumPokemonEncountered.GetHashCode();
-              if (NumUniquePokedexEntries != 0) hash ^= NumUniquePokedexEntries.GetHashCode();
-              if (NumPokemonCaptured != 0) hash ^= NumPokemonCaptured.GetHashCode();
-              if (NumEvolutions != 0) hash ^= NumEvolutions.GetHashCode();
-              if (PokeStopVisits != 0) hash ^= PokeStopVisits.GetHashCode();
-              if (NumberOfPokeballThrown != 0) hash ^= NumberOfPokeballThrown.GetHashCode();
-              if (NumEggsHatched != 0) hash ^= NumEggsHatched.GetHashCode();
-              if (BigMagikarpCaught != 0) hash ^= BigMagikarpCaught.GetHashCode();
-              if (NumBattleAttackWon != 0) hash ^= NumBattleAttackWon.GetHashCode();
-              if (NumBattleAttackTotal != 0) hash ^= NumBattleAttackTotal.GetHashCode();
-              if (NumBattleDefendedWon != 0) hash ^= NumBattleDefendedWon.GetHashCode();
-              if (NumBattleTrainingWon != 0) hash ^= NumBattleTrainingWon.GetHashCode();
-              if (NumBattleTrainingTotal != 0) hash ^= NumBattleTrainingTotal.GetHashCode();
-              if (PrestigeRaisedTotal != 0) hash ^= PrestigeRaisedTotal.GetHashCode();
-              if (PrestigeDroppedTotal != 0) hash ^= PrestigeDroppedTotal.GetHashCode();
-              if (NumPokemonDeployed != 0) hash ^= NumPokemonDeployed.GetHashCode();
-              if (SmallRattataCaught != 0) hash ^= SmallRattataCaught.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Level != 0) {
-                output.WriteRawTag(8);
-                output.WriteInt32(Level);
-              }
-              if (Experience != 0L) {
-                output.WriteRawTag(16);
-                output.WriteInt64(Experience);
-              }
-              if (PrevLevelExp != 0L) {
-                output.WriteRawTag(24);
-                output.WriteInt64(PrevLevelExp);
-              }
-              if (NextLevelExp != 0L) {
-                output.WriteRawTag(32);
-                output.WriteInt64(NextLevelExp);
-              }
-              if (KmWalked != 0F) {
-                output.WriteRawTag(45);
-                output.WriteFloat(KmWalked);
-              }
-              if (NumPokemonEncountered != 0) {
-                output.WriteRawTag(48);
-                output.WriteInt32(NumPokemonEncountered);
-              }
-              if (NumUniquePokedexEntries != 0) {
-                output.WriteRawTag(56);
-                output.WriteInt32(NumUniquePokedexEntries);
-              }
-              if (NumPokemonCaptured != 0) {
-                output.WriteRawTag(64);
-                output.WriteInt32(NumPokemonCaptured);
-              }
-              if (NumEvolutions != 0) {
-                output.WriteRawTag(72);
-                output.WriteInt32(NumEvolutions);
-              }
-              if (PokeStopVisits != 0) {
-                output.WriteRawTag(80);
-                output.WriteInt32(PokeStopVisits);
-              }
-              if (NumberOfPokeballThrown != 0) {
-                output.WriteRawTag(88);
-                output.WriteInt32(NumberOfPokeballThrown);
-              }
-              if (NumEggsHatched != 0) {
-                output.WriteRawTag(96);
-                output.WriteInt32(NumEggsHatched);
-              }
-              if (BigMagikarpCaught != 0) {
-                output.WriteRawTag(104);
-                output.WriteInt32(BigMagikarpCaught);
-              }
-              if (NumBattleAttackWon != 0) {
-                output.WriteRawTag(112);
-                output.WriteInt32(NumBattleAttackWon);
-              }
-              if (NumBattleAttackTotal != 0) {
-                output.WriteRawTag(120);
-                output.WriteInt32(NumBattleAttackTotal);
-              }
-              if (NumBattleDefendedWon != 0) {
-                output.WriteRawTag(128, 1);
-                output.WriteInt32(NumBattleDefendedWon);
-              }
-              if (NumBattleTrainingWon != 0) {
-                output.WriteRawTag(136, 1);
-                output.WriteInt32(NumBattleTrainingWon);
-              }
-              if (NumBattleTrainingTotal != 0) {
-                output.WriteRawTag(144, 1);
-                output.WriteInt32(NumBattleTrainingTotal);
-              }
-              if (PrestigeRaisedTotal != 0) {
-                output.WriteRawTag(152, 1);
-                output.WriteInt32(PrestigeRaisedTotal);
-              }
-              if (PrestigeDroppedTotal != 0) {
-                output.WriteRawTag(160, 1);
-                output.WriteInt32(PrestigeDroppedTotal);
-              }
-              if (NumPokemonDeployed != 0) {
-                output.WriteRawTag(168, 1);
-                output.WriteInt32(NumPokemonDeployed);
-              }
-              if (SmallRattataCaught != 0) {
-                output.WriteRawTag(184, 1);
-                output.WriteInt32(SmallRattataCaught);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (Level != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Level);
-              }
-              if (Experience != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(Experience);
-              }
-              if (PrevLevelExp != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(PrevLevelExp);
-              }
-              if (NextLevelExp != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextLevelExp);
-              }
-              if (KmWalked != 0F) {
-                size += 1 + 4;
-              }
-              if (NumPokemonEncountered != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumPokemonEncountered);
-              }
-              if (NumUniquePokedexEntries != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumUniquePokedexEntries);
-              }
-              if (NumPokemonCaptured != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumPokemonCaptured);
-              }
-              if (NumEvolutions != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumEvolutions);
-              }
-              if (PokeStopVisits != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokeStopVisits);
-              }
-              if (NumberOfPokeballThrown != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumberOfPokeballThrown);
-              }
-              if (NumEggsHatched != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumEggsHatched);
-              }
-              if (BigMagikarpCaught != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BigMagikarpCaught);
-              }
-              if (NumBattleAttackWon != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumBattleAttackWon);
-              }
-              if (NumBattleAttackTotal != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumBattleAttackTotal);
-              }
-              if (NumBattleDefendedWon != 0) {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumBattleDefendedWon);
-              }
-              if (NumBattleTrainingWon != 0) {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumBattleTrainingWon);
-              }
-              if (NumBattleTrainingTotal != 0) {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumBattleTrainingTotal);
-              }
-              if (PrestigeRaisedTotal != 0) {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(PrestigeRaisedTotal);
-              }
-              if (PrestigeDroppedTotal != 0) {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(PrestigeDroppedTotal);
-              }
-              if (NumPokemonDeployed != 0) {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumPokemonDeployed);
-              }
-              if (SmallRattataCaught != 0) {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(SmallRattataCaught);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(PlayerStatsProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Level != 0) {
-                Level = other.Level;
-              }
-              if (other.Experience != 0L) {
-                Experience = other.Experience;
-              }
-              if (other.PrevLevelExp != 0L) {
-                PrevLevelExp = other.PrevLevelExp;
-              }
-              if (other.NextLevelExp != 0L) {
-                NextLevelExp = other.NextLevelExp;
-              }
-              if (other.KmWalked != 0F) {
-                KmWalked = other.KmWalked;
-              }
-              if (other.NumPokemonEncountered != 0) {
-                NumPokemonEncountered = other.NumPokemonEncountered;
-              }
-              if (other.NumUniquePokedexEntries != 0) {
-                NumUniquePokedexEntries = other.NumUniquePokedexEntries;
-              }
-              if (other.NumPokemonCaptured != 0) {
-                NumPokemonCaptured = other.NumPokemonCaptured;
-              }
-              if (other.NumEvolutions != 0) {
-                NumEvolutions = other.NumEvolutions;
-              }
-              if (other.PokeStopVisits != 0) {
-                PokeStopVisits = other.PokeStopVisits;
-              }
-              if (other.NumberOfPokeballThrown != 0) {
-                NumberOfPokeballThrown = other.NumberOfPokeballThrown;
-              }
-              if (other.NumEggsHatched != 0) {
-                NumEggsHatched = other.NumEggsHatched;
-              }
-              if (other.BigMagikarpCaught != 0) {
-                BigMagikarpCaught = other.BigMagikarpCaught;
-              }
-              if (other.NumBattleAttackWon != 0) {
-                NumBattleAttackWon = other.NumBattleAttackWon;
-              }
-              if (other.NumBattleAttackTotal != 0) {
-                NumBattleAttackTotal = other.NumBattleAttackTotal;
-              }
-              if (other.NumBattleDefendedWon != 0) {
-                NumBattleDefendedWon = other.NumBattleDefendedWon;
-              }
-              if (other.NumBattleTrainingWon != 0) {
-                NumBattleTrainingWon = other.NumBattleTrainingWon;
-              }
-              if (other.NumBattleTrainingTotal != 0) {
-                NumBattleTrainingTotal = other.NumBattleTrainingTotal;
-              }
-              if (other.PrestigeRaisedTotal != 0) {
-                PrestigeRaisedTotal = other.PrestigeRaisedTotal;
-              }
-              if (other.PrestigeDroppedTotal != 0) {
-                PrestigeDroppedTotal = other.PrestigeDroppedTotal;
-              }
-              if (other.NumPokemonDeployed != 0) {
-                NumPokemonDeployed = other.NumPokemonDeployed;
-              }
-              if (other.SmallRattataCaught != 0) {
-                SmallRattataCaught = other.SmallRattataCaught;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    Level = input.ReadInt32();
-                    break;
-                  }
-                  case 16: {
-                    Experience = input.ReadInt64();
-                    break;
-                  }
-                  case 24: {
-                    PrevLevelExp = input.ReadInt64();
-                    break;
-                  }
-                  case 32: {
-                    NextLevelExp = input.ReadInt64();
-                    break;
-                  }
-                  case 45: {
-                    KmWalked = input.ReadFloat();
-                    break;
-                  }
-                  case 48: {
-                    NumPokemonEncountered = input.ReadInt32();
-                    break;
-                  }
-                  case 56: {
-                    NumUniquePokedexEntries = input.ReadInt32();
-                    break;
-                  }
-                  case 64: {
-                    NumPokemonCaptured = input.ReadInt32();
-                    break;
-                  }
-                  case 72: {
-                    NumEvolutions = input.ReadInt32();
-                    break;
-                  }
-                  case 80: {
-                    PokeStopVisits = input.ReadInt32();
-                    break;
-                  }
-                  case 88: {
-                    NumberOfPokeballThrown = input.ReadInt32();
-                    break;
-                  }
-                  case 96: {
-                    NumEggsHatched = input.ReadInt32();
-                    break;
-                  }
-                  case 104: {
-                    BigMagikarpCaught = input.ReadInt32();
-                    break;
-                  }
-                  case 112: {
-                    NumBattleAttackWon = input.ReadInt32();
-                    break;
-                  }
-                  case 120: {
-                    NumBattleAttackTotal = input.ReadInt32();
-                    break;
-                  }
-                  case 128: {
-                    NumBattleDefendedWon = input.ReadInt32();
-                    break;
-                  }
-                  case 136: {
-                    NumBattleTrainingWon = input.ReadInt32();
-                    break;
-                  }
-                  case 144: {
-                    NumBattleTrainingTotal = input.ReadInt32();
-                    break;
-                  }
-                  case 152: {
-                    PrestigeRaisedTotal = input.ReadInt32();
-                    break;
-                  }
-                  case 160: {
-                    PrestigeDroppedTotal = input.ReadInt32();
-                    break;
-                  }
-                  case 168: {
-                    NumPokemonDeployed = input.ReadInt32();
-                    break;
-                  }
-                  case 184: {
-                    SmallRattataCaught = input.ReadInt32();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class AppliedItemProto : pb::IMessage<AppliedItemProto> {
-            private static readonly pb::MessageParser<AppliedItemProto> _parser = new pb::MessageParser<AppliedItemProto>(() => new AppliedItemProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<AppliedItemProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[3]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public AppliedItemProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public AppliedItemProto(AppliedItemProto other) : this() {
-              item_ = other.item_;
-              itemType_ = other.itemType_;
-              expirationMs_ = other.expirationMs_;
-              appliedMs_ = other.appliedMs_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public AppliedItemProto Clone() {
-              return new AppliedItemProto(this);
-            }
-
-            /// <summary>Field number for the "Item" field.</summary>
-            public const int ItemFieldNumber = 1;
-            private int item_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int Item {
-              get { return item_; }
-              set {
-                item_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "ItemType" field.</summary>
-            public const int ItemTypeFieldNumber = 2;
-            private int itemType_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int ItemType {
-              get { return itemType_; }
-              set {
-                itemType_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "ExpirationMs" field.</summary>
-            public const int ExpirationMsFieldNumber = 3;
-            private long expirationMs_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long ExpirationMs {
-              get { return expirationMs_; }
-              set {
-                expirationMs_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "AppliedMs" field.</summary>
-            public const int AppliedMsFieldNumber = 4;
-            private long appliedMs_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long AppliedMs {
-              get { return appliedMs_; }
-              set {
-                appliedMs_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as AppliedItemProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(AppliedItemProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Item != other.Item) return false;
-              if (ItemType != other.ItemType) return false;
-              if (ExpirationMs != other.ExpirationMs) return false;
-              if (AppliedMs != other.AppliedMs) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Item != 0) hash ^= Item.GetHashCode();
-              if (ItemType != 0) hash ^= ItemType.GetHashCode();
-              if (ExpirationMs != 0L) hash ^= ExpirationMs.GetHashCode();
-              if (AppliedMs != 0L) hash ^= AppliedMs.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Item != 0) {
-                output.WriteRawTag(8);
-                output.WriteInt32(Item);
-              }
-              if (ItemType != 0) {
-                output.WriteRawTag(16);
-                output.WriteInt32(ItemType);
-              }
-              if (ExpirationMs != 0L) {
-                output.WriteRawTag(24);
-                output.WriteInt64(ExpirationMs);
-              }
-              if (AppliedMs != 0L) {
-                output.WriteRawTag(32);
-                output.WriteInt64(AppliedMs);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (Item != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Item);
-              }
-              if (ItemType != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemType);
-              }
-              if (ExpirationMs != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpirationMs);
-              }
-              if (AppliedMs != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(AppliedMs);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(AppliedItemProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Item != 0) {
-                Item = other.Item;
-              }
-              if (other.ItemType != 0) {
-                ItemType = other.ItemType;
-              }
-              if (other.ExpirationMs != 0L) {
-                ExpirationMs = other.ExpirationMs;
-              }
-              if (other.AppliedMs != 0L) {
-                AppliedMs = other.AppliedMs;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    Item = input.ReadInt32();
-                    break;
-                  }
-                  case 16: {
-                    ItemType = input.ReadInt32();
-                    break;
-                  }
-                  case 24: {
-                    ExpirationMs = input.ReadInt64();
-                    break;
-                  }
-                  case 32: {
-                    AppliedMs = input.ReadInt64();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class PlayerCameraProto : pb::IMessage<PlayerCameraProto> {
-            private static readonly pb::MessageParser<PlayerCameraProto> _parser = new pb::MessageParser<PlayerCameraProto>(() => new PlayerCameraProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<PlayerCameraProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[4]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PlayerCameraProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PlayerCameraProto(PlayerCameraProto other) : this() {
-              defaultCamera_ = other.defaultCamera_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PlayerCameraProto Clone() {
-              return new PlayerCameraProto(this);
-            }
-
-            /// <summary>Field number for the "DefaultCamera" field.</summary>
-            public const int DefaultCameraFieldNumber = 1;
-            private bool defaultCamera_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool DefaultCamera {
-              get { return defaultCamera_; }
-              set {
-                defaultCamera_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as PlayerCameraProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(PlayerCameraProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (DefaultCamera != other.DefaultCamera) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (DefaultCamera != false) hash ^= DefaultCamera.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (DefaultCamera != false) {
-                output.WriteRawTag(8);
-                output.WriteBool(DefaultCamera);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (DefaultCamera != false) {
-                size += 1 + 1;
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(PlayerCameraProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.DefaultCamera != false) {
-                DefaultCamera = other.DefaultCamera;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    DefaultCamera = input.ReadBool();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class PlayerCurrencyProto : pb::IMessage<PlayerCurrencyProto> {
-            private static readonly pb::MessageParser<PlayerCurrencyProto> _parser = new pb::MessageParser<PlayerCurrencyProto>(() => new PlayerCurrencyProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<PlayerCurrencyProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[5]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PlayerCurrencyProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PlayerCurrencyProto(PlayerCurrencyProto other) : this() {
-              gems_ = other.gems_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PlayerCurrencyProto Clone() {
-              return new PlayerCurrencyProto(this);
-            }
-
-            /// <summary>Field number for the "Gems" field.</summary>
-            public const int GemsFieldNumber = 1;
-            private int gems_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int Gems {
-              get { return gems_; }
-              set {
-                gems_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as PlayerCurrencyProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(PlayerCurrencyProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Gems != other.Gems) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Gems != 0) hash ^= Gems.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Gems != 0) {
-                output.WriteRawTag(8);
-                output.WriteInt32(Gems);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (Gems != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Gems);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(PlayerCurrencyProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Gems != 0) {
-                Gems = other.Gems;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    Gems = input.ReadInt32();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class InventoryUpgradesProto : pb::IMessage<InventoryUpgradesProto> {
-            private static readonly pb::MessageParser<InventoryUpgradesProto> _parser = new pb::MessageParser<InventoryUpgradesProto>(() => new InventoryUpgradesProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<InventoryUpgradesProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[6]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public InventoryUpgradesProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public InventoryUpgradesProto(InventoryUpgradesProto other) : this() {
-              inventoryUpgrade_ = other.inventoryUpgrade_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public InventoryUpgradesProto Clone() {
-              return new InventoryUpgradesProto(this);
-            }
-
-            /// <summary>Field number for the "InventoryUpgrade" field.</summary>
-            public const int InventoryUpgradeFieldNumber = 1;
-            private int inventoryUpgrade_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int InventoryUpgrade {
-              get { return inventoryUpgrade_; }
-              set {
-                inventoryUpgrade_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as InventoryUpgradesProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(InventoryUpgradesProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (InventoryUpgrade != other.InventoryUpgrade) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (InventoryUpgrade != 0) hash ^= InventoryUpgrade.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (InventoryUpgrade != 0) {
-                output.WriteRawTag(8);
-                output.WriteInt32(InventoryUpgrade);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (InventoryUpgrade != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(InventoryUpgrade);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(InventoryUpgradesProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.InventoryUpgrade != 0) {
-                InventoryUpgrade = other.InventoryUpgrade;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    InventoryUpgrade = input.ReadInt32();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class EggIncubatorProto : pb::IMessage<EggIncubatorProto> {
-            private static readonly pb::MessageParser<EggIncubatorProto> _parser = new pb::MessageParser<EggIncubatorProto>(() => new EggIncubatorProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<EggIncubatorProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[7]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public EggIncubatorProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public EggIncubatorProto(EggIncubatorProto other) : this() {
-              itemId_ = other.itemId_;
-              Item = other.item_ != null ? other.Item.Clone() : null;
-              incubatorType_ = other.incubatorType_;
-              usesRemaining_ = other.usesRemaining_;
-              pokemonId_ = other.pokemonId_;
-              startKmWalked_ = other.startKmWalked_;
-              targetKmWalked_ = other.targetKmWalked_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public EggIncubatorProto Clone() {
-              return new EggIncubatorProto(this);
-            }
-
-            /// <summary>Field number for the "ItemId" field.</summary>
-            public const int ItemIdFieldNumber = 1;
-            private string itemId_ = "";
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public string ItemId {
-              get { return itemId_; }
-              set {
-                itemId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            /// <summary>Field number for the "Item" field.</summary>
-            public const int ItemFieldNumber = 2;
-            private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto item_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto Item {
-              get { return item_; }
-              set {
-                item_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "IncubatorType" field.</summary>
-            public const int IncubatorTypeFieldNumber = 3;
-            private int incubatorType_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int IncubatorType {
-              get { return incubatorType_; }
-              set {
-                incubatorType_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "UsesRemaining" field.</summary>
-            public const int UsesRemainingFieldNumber = 4;
-            private int usesRemaining_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int UsesRemaining {
-              get { return usesRemaining_; }
-              set {
-                usesRemaining_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "PokemonId" field.</summary>
-            public const int PokemonIdFieldNumber = 5;
-            private long pokemonId_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long PokemonId {
-              get { return pokemonId_; }
-              set {
-                pokemonId_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "StartKmWalked" field.</summary>
-            public const int StartKmWalkedFieldNumber = 6;
-            private double startKmWalked_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double StartKmWalked {
-              get { return startKmWalked_; }
-              set {
-                startKmWalked_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "TargetKmWalked" field.</summary>
-            public const int TargetKmWalkedFieldNumber = 7;
-            private double targetKmWalked_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double TargetKmWalked {
-              get { return targetKmWalked_; }
-              set {
-                targetKmWalked_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as EggIncubatorProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(EggIncubatorProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (ItemId != other.ItemId) return false;
-              if (!object.Equals(Item, other.Item)) return false;
-              if (IncubatorType != other.IncubatorType) return false;
-              if (UsesRemaining != other.UsesRemaining) return false;
-              if (PokemonId != other.PokemonId) return false;
-              if (StartKmWalked != other.StartKmWalked) return false;
-              if (TargetKmWalked != other.TargetKmWalked) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (ItemId.Length != 0) hash ^= ItemId.GetHashCode();
-              if (item_ != null) hash ^= Item.GetHashCode();
-              if (IncubatorType != 0) hash ^= IncubatorType.GetHashCode();
-              if (UsesRemaining != 0) hash ^= UsesRemaining.GetHashCode();
-              if (PokemonId != 0L) hash ^= PokemonId.GetHashCode();
-              if (StartKmWalked != 0D) hash ^= StartKmWalked.GetHashCode();
-              if (TargetKmWalked != 0D) hash ^= TargetKmWalked.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (ItemId.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteString(ItemId);
-              }
-              if (item_ != null) {
-                output.WriteRawTag(18);
-                output.WriteMessage(Item);
-              }
-              if (IncubatorType != 0) {
-                output.WriteRawTag(24);
-                output.WriteInt32(IncubatorType);
-              }
-              if (UsesRemaining != 0) {
-                output.WriteRawTag(32);
-                output.WriteInt32(UsesRemaining);
-              }
-              if (PokemonId != 0L) {
-                output.WriteRawTag(40);
-                output.WriteInt64(PokemonId);
-              }
-              if (StartKmWalked != 0D) {
-                output.WriteRawTag(49);
-                output.WriteDouble(StartKmWalked);
-              }
-              if (TargetKmWalked != 0D) {
-                output.WriteRawTag(57);
-                output.WriteDouble(TargetKmWalked);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (ItemId.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(ItemId);
-              }
-              if (item_ != null) {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
-              }
-              if (IncubatorType != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(IncubatorType);
-              }
-              if (UsesRemaining != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(UsesRemaining);
-              }
-              if (PokemonId != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(PokemonId);
-              }
-              if (StartKmWalked != 0D) {
-                size += 1 + 8;
-              }
-              if (TargetKmWalked != 0D) {
-                size += 1 + 8;
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(EggIncubatorProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.ItemId.Length != 0) {
-                ItemId = other.ItemId;
-              }
-              if (other.item_ != null) {
-                if (item_ == null) {
-                  item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto();
-                }
-                Item.MergeFrom(other.Item);
-              }
-              if (other.IncubatorType != 0) {
-                IncubatorType = other.IncubatorType;
-              }
-              if (other.UsesRemaining != 0) {
-                UsesRemaining = other.UsesRemaining;
-              }
-              if (other.PokemonId != 0L) {
-                PokemonId = other.PokemonId;
-              }
-              if (other.StartKmWalked != 0D) {
-                StartKmWalked = other.StartKmWalked;
-              }
-              if (other.TargetKmWalked != 0D) {
-                TargetKmWalked = other.TargetKmWalked;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    ItemId = input.ReadString();
-                    break;
-                  }
-                  case 18: {
-                    if (item_ == null) {
-                      item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto();
-                    }
-                    input.ReadMessage(item_);
-                    break;
-                  }
-                  case 24: {
-                    IncubatorType = input.ReadInt32();
-                    break;
-                  }
-                  case 32: {
-                    UsesRemaining = input.ReadInt32();
-                    break;
-                  }
-                  case 40: {
-                    PokemonId = input.ReadInt64();
-                    break;
-                  }
-                  case 49: {
-                    StartKmWalked = input.ReadDouble();
-                    break;
-                  }
-                  case 57: {
-                    TargetKmWalked = input.ReadDouble();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class PokemonFamilyProto : pb::IMessage<PokemonFamilyProto> {
-            private static readonly pb::MessageParser<PokemonFamilyProto> _parser = new pb::MessageParser<PokemonFamilyProto>(() => new PokemonFamilyProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<PokemonFamilyProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[8]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokemonFamilyProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokemonFamilyProto(PokemonFamilyProto other) : this() {
-              familyId_ = other.familyId_;
-              candy_ = other.candy_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokemonFamilyProto Clone() {
-              return new PokemonFamilyProto(this);
-            }
-
-            /// <summary>Field number for the "FamilyId" field.</summary>
-            public const int FamilyIdFieldNumber = 1;
-            private int familyId_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int FamilyId {
-              get { return familyId_; }
-              set {
-                familyId_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Candy" field.</summary>
-            public const int CandyFieldNumber = 2;
-            private int candy_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int Candy {
-              get { return candy_; }
-              set {
-                candy_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as PokemonFamilyProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(PokemonFamilyProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (FamilyId != other.FamilyId) return false;
-              if (Candy != other.Candy) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (FamilyId != 0) hash ^= FamilyId.GetHashCode();
-              if (Candy != 0) hash ^= Candy.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (FamilyId != 0) {
-                output.WriteRawTag(8);
-                output.WriteInt32(FamilyId);
-              }
-              if (Candy != 0) {
-                output.WriteRawTag(16);
-                output.WriteInt32(Candy);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (FamilyId != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(FamilyId);
-              }
-              if (Candy != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Candy);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(PokemonFamilyProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.FamilyId != 0) {
-                FamilyId = other.FamilyId;
-              }
-              if (other.Candy != 0) {
-                Candy = other.Candy;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    FamilyId = input.ReadInt32();
-                    break;
-                  }
-                  case 16: {
-                    Candy = input.ReadInt32();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-        }
-        #endregion
-
-      }
-
-      /// <summary>
-      ///  POKEMON TRANSFER
-      /// </summary>
-      public sealed partial class TransferPokemonProto : pb::IMessage<TransferPokemonProto> {
-        private static readonly pb::MessageParser<TransferPokemonProto> _parser = new pb::MessageParser<TransferPokemonProto>(() => new TransferPokemonProto());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<TransferPokemonProto> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[5]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public TransferPokemonProto() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public TransferPokemonProto(TransferPokemonProto other) : this() {
-          pokemonId_ = other.pokemonId_;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public TransferPokemonProto Clone() {
-          return new TransferPokemonProto(this);
-        }
-
-        /// <summary>Field number for the "PokemonId" field.</summary>
-        public const int PokemonIdFieldNumber = 1;
-        private ulong pokemonId_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public ulong PokemonId {
-          get { return pokemonId_; }
-          set {
-            pokemonId_ = value;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as TransferPokemonProto);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(TransferPokemonProto other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (PokemonId != other.PokemonId) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (PokemonId != 0UL) hash ^= PokemonId.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (PokemonId != 0UL) {
-            output.WriteRawTag(9);
-            output.WriteFixed64(PokemonId);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (PokemonId != 0UL) {
-            size += 1 + 8;
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(TransferPokemonProto other) {
-          if (other == null) {
-            return;
-          }
-          if (other.PokemonId != 0UL) {
-            PokemonId = other.PokemonId;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 9: {
-                PokemonId = input.ReadFixed64();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      public sealed partial class TransferPokemonOutProto : pb::IMessage<TransferPokemonOutProto> {
-        private static readonly pb::MessageParser<TransferPokemonOutProto> _parser = new pb::MessageParser<TransferPokemonOutProto>(() => new TransferPokemonOutProto());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<TransferPokemonOutProto> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[6]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public TransferPokemonOutProto() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public TransferPokemonOutProto(TransferPokemonOutProto other) : this() {
-          status_ = other.status_;
-          candyAwarded_ = other.candyAwarded_;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public TransferPokemonOutProto Clone() {
-          return new TransferPokemonOutProto(this);
-        }
-
-        /// <summary>Field number for the "Status" field.</summary>
-        public const int StatusFieldNumber = 1;
-        private int status_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Status {
-          get { return status_; }
-          set {
-            status_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "CandyAwarded" field.</summary>
-        public const int CandyAwardedFieldNumber = 2;
-        private int candyAwarded_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CandyAwarded {
-          get { return candyAwarded_; }
-          set {
-            candyAwarded_ = value;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as TransferPokemonOutProto);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(TransferPokemonOutProto other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Status != other.Status) return false;
-          if (CandyAwarded != other.CandyAwarded) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Status != 0) hash ^= Status.GetHashCode();
-          if (CandyAwarded != 0) hash ^= CandyAwarded.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Status != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Status);
-          }
-          if (CandyAwarded != 0) {
-            output.WriteRawTag(16);
-            output.WriteInt32(CandyAwarded);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (Status != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Status);
-          }
-          if (CandyAwarded != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(CandyAwarded);
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(TransferPokemonOutProto other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Status != 0) {
-            Status = other.Status;
-          }
-          if (other.CandyAwarded != 0) {
-            CandyAwarded = other.CandyAwarded;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Status = input.ReadInt32();
-                break;
-              }
-              case 16: {
-                CandyAwarded = input.ReadInt32();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      /// <summary>
-      ///  EVOLVE
-      /// </summary>
-      public sealed partial class EvolvePokemonProto : pb::IMessage<EvolvePokemonProto> {
-        private static readonly pb::MessageParser<EvolvePokemonProto> _parser = new pb::MessageParser<EvolvePokemonProto>(() => new EvolvePokemonProto());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<EvolvePokemonProto> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[7]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public EvolvePokemonProto() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public EvolvePokemonProto(EvolvePokemonProto other) : this() {
-          pokemonId_ = other.pokemonId_;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public EvolvePokemonProto Clone() {
-          return new EvolvePokemonProto(this);
-        }
-
-        /// <summary>Field number for the "PokemonId" field.</summary>
-        public const int PokemonIdFieldNumber = 1;
-        private ulong pokemonId_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public ulong PokemonId {
-          get { return pokemonId_; }
-          set {
-            pokemonId_ = value;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as EvolvePokemonProto);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(EvolvePokemonProto other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (PokemonId != other.PokemonId) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (PokemonId != 0UL) hash ^= PokemonId.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (PokemonId != 0UL) {
-            output.WriteRawTag(9);
-            output.WriteFixed64(PokemonId);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (PokemonId != 0UL) {
-            size += 1 + 8;
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(EvolvePokemonProto other) {
-          if (other == null) {
-            return;
-          }
-          if (other.PokemonId != 0UL) {
-            PokemonId = other.PokemonId;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 9: {
-                PokemonId = input.ReadFixed64();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      public sealed partial class EvolvePokemonOutProto : pb::IMessage<EvolvePokemonOutProto> {
-        private static readonly pb::MessageParser<EvolvePokemonOutProto> _parser = new pb::MessageParser<EvolvePokemonOutProto>(() => new EvolvePokemonOutProto());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<EvolvePokemonOutProto> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[8]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public EvolvePokemonOutProto() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public EvolvePokemonOutProto(EvolvePokemonOutProto other) : this() {
-          result_ = other.result_;
-          EvolvedPokemon = other.evolvedPokemon_ != null ? other.EvolvedPokemon.Clone() : null;
-          expAwarded_ = other.expAwarded_;
-          candyAwarded_ = other.candyAwarded_;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public EvolvePokemonOutProto Clone() {
-          return new EvolvePokemonOutProto(this);
-        }
-
-        /// <summary>Field number for the "Result" field.</summary>
-        public const int ResultFieldNumber = 1;
-        private int result_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Result {
-          get { return result_; }
-          set {
-            result_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "EvolvedPokemon" field.</summary>
-        public const int EvolvedPokemonFieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto evolvedPokemon_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto EvolvedPokemon {
-          get { return evolvedPokemon_; }
-          set {
-            evolvedPokemon_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "ExpAwarded" field.</summary>
-        public const int ExpAwardedFieldNumber = 3;
-        private int expAwarded_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int ExpAwarded {
-          get { return expAwarded_; }
-          set {
-            expAwarded_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "CandyAwarded" field.</summary>
-        public const int CandyAwardedFieldNumber = 4;
-        private int candyAwarded_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CandyAwarded {
-          get { return candyAwarded_; }
-          set {
-            candyAwarded_ = value;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as EvolvePokemonOutProto);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(EvolvePokemonOutProto other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Result != other.Result) return false;
-          if (!object.Equals(EvolvedPokemon, other.EvolvedPokemon)) return false;
-          if (ExpAwarded != other.ExpAwarded) return false;
-          if (CandyAwarded != other.CandyAwarded) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Result != 0) hash ^= Result.GetHashCode();
-          if (evolvedPokemon_ != null) hash ^= EvolvedPokemon.GetHashCode();
-          if (ExpAwarded != 0) hash ^= ExpAwarded.GetHashCode();
-          if (CandyAwarded != 0) hash ^= CandyAwarded.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Result != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Result);
-          }
-          if (evolvedPokemon_ != null) {
-            output.WriteRawTag(18);
-            output.WriteMessage(EvolvedPokemon);
-          }
-          if (ExpAwarded != 0) {
-            output.WriteRawTag(24);
-            output.WriteInt32(ExpAwarded);
-          }
-          if (CandyAwarded != 0) {
-            output.WriteRawTag(32);
-            output.WriteInt32(CandyAwarded);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (Result != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Result);
-          }
-          if (evolvedPokemon_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(EvolvedPokemon);
-          }
-          if (ExpAwarded != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(ExpAwarded);
-          }
-          if (CandyAwarded != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(CandyAwarded);
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(EvolvePokemonOutProto other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Result != 0) {
-            Result = other.Result;
-          }
-          if (other.evolvedPokemon_ != null) {
-            if (evolvedPokemon_ == null) {
-              evolvedPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto();
-            }
-            EvolvedPokemon.MergeFrom(other.EvolvedPokemon);
-          }
-          if (other.ExpAwarded != 0) {
-            ExpAwarded = other.ExpAwarded;
-          }
-          if (other.CandyAwarded != 0) {
-            CandyAwarded = other.CandyAwarded;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Result = input.ReadInt32();
-                break;
-              }
-              case 18: {
-                if (evolvedPokemon_ == null) {
-                  evolvedPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto();
-                }
-                input.ReadMessage(evolvedPokemon_);
-                break;
-              }
-              case 24: {
-                ExpAwarded = input.ReadInt32();
-                break;
-              }
-              case 32: {
-                CandyAwarded = input.ReadInt32();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      public sealed partial class PokemonProto : pb::IMessage<PokemonProto> {
-        private static readonly pb::MessageParser<PokemonProto> _parser = new pb::MessageParser<PokemonProto>(() => new PokemonProto());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<PokemonProto> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[9]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public PokemonProto() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public PokemonProto(PokemonProto other) : this() {
-          id_ = other.id_;
-          pokemonType_ = other.pokemonType_;
-          cp_ = other.cp_;
-          stamina_ = other.stamina_;
-          maxStamina_ = other.maxStamina_;
-          move1_ = other.move1_;
-          move2_ = other.move2_;
-          deployedFortId_ = other.deployedFortId_;
-          ownerName_ = other.ownerName_;
-          isEgg_ = other.isEgg_;
-          eggKmWalkedTarget_ = other.eggKmWalkedTarget_;
-          eggKmWalkedStart_ = other.eggKmWalkedStart_;
-          origin_ = other.origin_;
-          heightM_ = other.heightM_;
-          weightKg_ = other.weightKg_;
-          individualAttack_ = other.individualAttack_;
-          individualDefense_ = other.individualDefense_;
-          individualStamina_ = other.individualStamina_;
-          cpMultiplier_ = other.cpMultiplier_;
-          pokeball_ = other.pokeball_;
-          capturedS2CellId_ = other.capturedS2CellId_;
-          battlesAttacked_ = other.battlesAttacked_;
-          battlesDefended_ = other.battlesDefended_;
-          eggIncubatorId_ = other.eggIncubatorId_;
-          creationTimeMs_ = other.creationTimeMs_;
-          numUpgrades_ = other.numUpgrades_;
-          additionalCpMultiplier_ = other.additionalCpMultiplier_;
-          favorite_ = other.favorite_;
-          nickname_ = other.nickname_;
-          fromFort_ = other.fromFort_;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public PokemonProto Clone() {
-          return new PokemonProto(this);
-        }
-
-        /// <summary>Field number for the "Id" field.</summary>
-        public const int IdFieldNumber = 1;
-        private ulong id_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public ulong Id {
-          get { return id_; }
-          set {
-            id_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "PokemonType" field.</summary>
-        public const int PokemonTypeFieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto.Types.PokemonTypes pokemonType_ = 0;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto.Types.PokemonTypes PokemonType {
-          get { return pokemonType_; }
-          set {
-            pokemonType_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Cp" field.</summary>
-        public const int CpFieldNumber = 3;
-        private int cp_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Cp {
-          get { return cp_; }
-          set {
-            cp_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Stamina" field.</summary>
-        public const int StaminaFieldNumber = 4;
-        private int stamina_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Stamina {
-          get { return stamina_; }
-          set {
-            stamina_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "MaxStamina" field.</summary>
-        public const int MaxStaminaFieldNumber = 5;
-        private int maxStamina_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int MaxStamina {
-          get { return maxStamina_; }
-          set {
-            maxStamina_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Move1" field.</summary>
-        public const int Move1FieldNumber = 6;
-        private int move1_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Move1 {
-          get { return move1_; }
-          set {
-            move1_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Move2" field.</summary>
-        public const int Move2FieldNumber = 7;
-        private int move2_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Move2 {
-          get { return move2_; }
-          set {
-            move2_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "DeployedFortId" field.</summary>
-        public const int DeployedFortIdFieldNumber = 8;
-        private int deployedFortId_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int DeployedFortId {
-          get { return deployedFortId_; }
-          set {
-            deployedFortId_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "OwnerName" field.</summary>
-        public const int OwnerNameFieldNumber = 9;
-        private int ownerName_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int OwnerName {
-          get { return ownerName_; }
-          set {
-            ownerName_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "IsEgg" field.</summary>
-        public const int IsEggFieldNumber = 10;
-        private int isEgg_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int IsEgg {
-          get { return isEgg_; }
-          set {
-            isEgg_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "EggKmWalkedTarget" field.</summary>
-        public const int EggKmWalkedTargetFieldNumber = 11;
-        private int eggKmWalkedTarget_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int EggKmWalkedTarget {
-          get { return eggKmWalkedTarget_; }
-          set {
-            eggKmWalkedTarget_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "EggKmWalkedStart" field.</summary>
-        public const int EggKmWalkedStartFieldNumber = 12;
-        private int eggKmWalkedStart_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int EggKmWalkedStart {
-          get { return eggKmWalkedStart_; }
-          set {
-            eggKmWalkedStart_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Origin" field.</summary>
-        public const int OriginFieldNumber = 14;
-        private int origin_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Origin {
-          get { return origin_; }
-          set {
-            origin_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "HeightM" field.</summary>
-        public const int HeightMFieldNumber = 15;
-        private uint heightM_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public uint HeightM {
-          get { return heightM_; }
-          set {
-            heightM_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "WeightKg" field.</summary>
-        public const int WeightKgFieldNumber = 16;
-        private uint weightKg_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public uint WeightKg {
-          get { return weightKg_; }
-          set {
-            weightKg_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "IndividualAttack" field.</summary>
-        public const int IndividualAttackFieldNumber = 17;
-        private int individualAttack_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int IndividualAttack {
-          get { return individualAttack_; }
-          set {
-            individualAttack_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "IndividualDefense" field.</summary>
-        public const int IndividualDefenseFieldNumber = 18;
-        private int individualDefense_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int IndividualDefense {
-          get { return individualDefense_; }
-          set {
-            individualDefense_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "IndividualStamina" field.</summary>
-        public const int IndividualStaminaFieldNumber = 19;
-        private int individualStamina_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int IndividualStamina {
-          get { return individualStamina_; }
-          set {
-            individualStamina_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "CpMultiplier" field.</summary>
-        public const int CpMultiplierFieldNumber = 20;
-        private uint cpMultiplier_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public uint CpMultiplier {
-          get { return cpMultiplier_; }
-          set {
-            cpMultiplier_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Pokeball" field.</summary>
-        public const int PokeballFieldNumber = 21;
-        private int pokeball_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Pokeball {
-          get { return pokeball_; }
-          set {
-            pokeball_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "CapturedS2CellId" field.</summary>
-        public const int CapturedS2CellIdFieldNumber = 22;
-        private ulong capturedS2CellId_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public ulong CapturedS2CellId {
-          get { return capturedS2CellId_; }
-          set {
-            capturedS2CellId_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "BattlesAttacked" field.</summary>
-        public const int BattlesAttackedFieldNumber = 23;
-        private int battlesAttacked_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int BattlesAttacked {
-          get { return battlesAttacked_; }
-          set {
-            battlesAttacked_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "BattlesDefended" field.</summary>
-        public const int BattlesDefendedFieldNumber = 24;
-        private int battlesDefended_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int BattlesDefended {
-          get { return battlesDefended_; }
-          set {
-            battlesDefended_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "EggIncubatorId" field.</summary>
-        public const int EggIncubatorIdFieldNumber = 25;
-        private int eggIncubatorId_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int EggIncubatorId {
-          get { return eggIncubatorId_; }
-          set {
-            eggIncubatorId_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "CreationTimeMs" field.</summary>
-        public const int CreationTimeMsFieldNumber = 26;
-        private long creationTimeMs_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public long CreationTimeMs {
-          get { return creationTimeMs_; }
-          set {
-            creationTimeMs_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "NumUpgrades" field.</summary>
-        public const int NumUpgradesFieldNumber = 27;
-        private int numUpgrades_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int NumUpgrades {
-          get { return numUpgrades_; }
-          set {
-            numUpgrades_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "AdditionalCpMultiplier" field.</summary>
-        public const int AdditionalCpMultiplierFieldNumber = 28;
-        private int additionalCpMultiplier_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int AdditionalCpMultiplier {
-          get { return additionalCpMultiplier_; }
-          set {
-            additionalCpMultiplier_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Favorite" field.</summary>
-        public const int FavoriteFieldNumber = 29;
-        private int favorite_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Favorite {
-          get { return favorite_; }
-          set {
-            favorite_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Nickname" field.</summary>
-        public const int NicknameFieldNumber = 30;
-        private int nickname_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Nickname {
-          get { return nickname_; }
-          set {
-            nickname_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "FromFort" field.</summary>
-        public const int FromFortFieldNumber = 31;
-        private int fromFort_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int FromFort {
-          get { return fromFort_; }
-          set {
-            fromFort_ = value;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as PokemonProto);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(PokemonProto other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Id != other.Id) return false;
-          if (PokemonType != other.PokemonType) return false;
-          if (Cp != other.Cp) return false;
-          if (Stamina != other.Stamina) return false;
-          if (MaxStamina != other.MaxStamina) return false;
-          if (Move1 != other.Move1) return false;
-          if (Move2 != other.Move2) return false;
-          if (DeployedFortId != other.DeployedFortId) return false;
-          if (OwnerName != other.OwnerName) return false;
-          if (IsEgg != other.IsEgg) return false;
-          if (EggKmWalkedTarget != other.EggKmWalkedTarget) return false;
-          if (EggKmWalkedStart != other.EggKmWalkedStart) return false;
-          if (Origin != other.Origin) return false;
-          if (HeightM != other.HeightM) return false;
-          if (WeightKg != other.WeightKg) return false;
-          if (IndividualAttack != other.IndividualAttack) return false;
-          if (IndividualDefense != other.IndividualDefense) return false;
-          if (IndividualStamina != other.IndividualStamina) return false;
-          if (CpMultiplier != other.CpMultiplier) return false;
-          if (Pokeball != other.Pokeball) return false;
-          if (CapturedS2CellId != other.CapturedS2CellId) return false;
-          if (BattlesAttacked != other.BattlesAttacked) return false;
-          if (BattlesDefended != other.BattlesDefended) return false;
-          if (EggIncubatorId != other.EggIncubatorId) return false;
-          if (CreationTimeMs != other.CreationTimeMs) return false;
-          if (NumUpgrades != other.NumUpgrades) return false;
-          if (AdditionalCpMultiplier != other.AdditionalCpMultiplier) return false;
-          if (Favorite != other.Favorite) return false;
-          if (Nickname != other.Nickname) return false;
-          if (FromFort != other.FromFort) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Id != 0UL) hash ^= Id.GetHashCode();
-          if (PokemonType != 0) hash ^= PokemonType.GetHashCode();
-          if (Cp != 0) hash ^= Cp.GetHashCode();
-          if (Stamina != 0) hash ^= Stamina.GetHashCode();
-          if (MaxStamina != 0) hash ^= MaxStamina.GetHashCode();
-          if (Move1 != 0) hash ^= Move1.GetHashCode();
-          if (Move2 != 0) hash ^= Move2.GetHashCode();
-          if (DeployedFortId != 0) hash ^= DeployedFortId.GetHashCode();
-          if (OwnerName != 0) hash ^= OwnerName.GetHashCode();
-          if (IsEgg != 0) hash ^= IsEgg.GetHashCode();
-          if (EggKmWalkedTarget != 0) hash ^= EggKmWalkedTarget.GetHashCode();
-          if (EggKmWalkedStart != 0) hash ^= EggKmWalkedStart.GetHashCode();
-          if (Origin != 0) hash ^= Origin.GetHashCode();
-          if (HeightM != 0) hash ^= HeightM.GetHashCode();
-          if (WeightKg != 0) hash ^= WeightKg.GetHashCode();
-          if (IndividualAttack != 0) hash ^= IndividualAttack.GetHashCode();
-          if (IndividualDefense != 0) hash ^= IndividualDefense.GetHashCode();
-          if (IndividualStamina != 0) hash ^= IndividualStamina.GetHashCode();
-          if (CpMultiplier != 0) hash ^= CpMultiplier.GetHashCode();
-          if (Pokeball != 0) hash ^= Pokeball.GetHashCode();
-          if (CapturedS2CellId != 0UL) hash ^= CapturedS2CellId.GetHashCode();
-          if (BattlesAttacked != 0) hash ^= BattlesAttacked.GetHashCode();
-          if (BattlesDefended != 0) hash ^= BattlesDefended.GetHashCode();
-          if (EggIncubatorId != 0) hash ^= EggIncubatorId.GetHashCode();
-          if (CreationTimeMs != 0L) hash ^= CreationTimeMs.GetHashCode();
-          if (NumUpgrades != 0) hash ^= NumUpgrades.GetHashCode();
-          if (AdditionalCpMultiplier != 0) hash ^= AdditionalCpMultiplier.GetHashCode();
-          if (Favorite != 0) hash ^= Favorite.GetHashCode();
-          if (Nickname != 0) hash ^= Nickname.GetHashCode();
-          if (FromFort != 0) hash ^= FromFort.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Id != 0UL) {
-            output.WriteRawTag(9);
-            output.WriteFixed64(Id);
-          }
-          if (PokemonType != 0) {
-            output.WriteRawTag(16);
-            output.WriteEnum((int) PokemonType);
-          }
-          if (Cp != 0) {
-            output.WriteRawTag(24);
-            output.WriteInt32(Cp);
-          }
-          if (Stamina != 0) {
-            output.WriteRawTag(32);
-            output.WriteInt32(Stamina);
-          }
-          if (MaxStamina != 0) {
-            output.WriteRawTag(40);
-            output.WriteInt32(MaxStamina);
-          }
-          if (Move1 != 0) {
-            output.WriteRawTag(48);
-            output.WriteInt32(Move1);
-          }
-          if (Move2 != 0) {
-            output.WriteRawTag(56);
-            output.WriteInt32(Move2);
-          }
-          if (DeployedFortId != 0) {
-            output.WriteRawTag(64);
-            output.WriteInt32(DeployedFortId);
-          }
-          if (OwnerName != 0) {
-            output.WriteRawTag(72);
-            output.WriteInt32(OwnerName);
-          }
-          if (IsEgg != 0) {
-            output.WriteRawTag(80);
-            output.WriteInt32(IsEgg);
-          }
-          if (EggKmWalkedTarget != 0) {
-            output.WriteRawTag(88);
-            output.WriteInt32(EggKmWalkedTarget);
-          }
-          if (EggKmWalkedStart != 0) {
-            output.WriteRawTag(96);
-            output.WriteInt32(EggKmWalkedStart);
-          }
-          if (Origin != 0) {
-            output.WriteRawTag(112);
-            output.WriteInt32(Origin);
-          }
-          if (HeightM != 0) {
-            output.WriteRawTag(125);
-            output.WriteFixed32(HeightM);
-          }
-          if (WeightKg != 0) {
-            output.WriteRawTag(133, 1);
-            output.WriteFixed32(WeightKg);
-          }
-          if (IndividualAttack != 0) {
-            output.WriteRawTag(136, 1);
-            output.WriteInt32(IndividualAttack);
-          }
-          if (IndividualDefense != 0) {
-            output.WriteRawTag(144, 1);
-            output.WriteInt32(IndividualDefense);
-          }
-          if (IndividualStamina != 0) {
-            output.WriteRawTag(152, 1);
-            output.WriteInt32(IndividualStamina);
-          }
-          if (CpMultiplier != 0) {
-            output.WriteRawTag(165, 1);
-            output.WriteFixed32(CpMultiplier);
-          }
-          if (Pokeball != 0) {
-            output.WriteRawTag(168, 1);
-            output.WriteInt32(Pokeball);
-          }
-          if (CapturedS2CellId != 0UL) {
-            output.WriteRawTag(177, 1);
-            output.WriteFixed64(CapturedS2CellId);
-          }
-          if (BattlesAttacked != 0) {
-            output.WriteRawTag(184, 1);
-            output.WriteInt32(BattlesAttacked);
-          }
-          if (BattlesDefended != 0) {
-            output.WriteRawTag(192, 1);
-            output.WriteInt32(BattlesDefended);
-          }
-          if (EggIncubatorId != 0) {
-            output.WriteRawTag(200, 1);
-            output.WriteInt32(EggIncubatorId);
-          }
-          if (CreationTimeMs != 0L) {
-            output.WriteRawTag(208, 1);
-            output.WriteInt64(CreationTimeMs);
-          }
-          if (NumUpgrades != 0) {
-            output.WriteRawTag(216, 1);
-            output.WriteInt32(NumUpgrades);
-          }
-          if (AdditionalCpMultiplier != 0) {
-            output.WriteRawTag(224, 1);
-            output.WriteInt32(AdditionalCpMultiplier);
-          }
-          if (Favorite != 0) {
-            output.WriteRawTag(232, 1);
-            output.WriteInt32(Favorite);
-          }
-          if (Nickname != 0) {
-            output.WriteRawTag(240, 1);
-            output.WriteInt32(Nickname);
-          }
-          if (FromFort != 0) {
-            output.WriteRawTag(248, 1);
-            output.WriteInt32(FromFort);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (Id != 0UL) {
-            size += 1 + 8;
-          }
-          if (PokemonType != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PokemonType);
-          }
-          if (Cp != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Cp);
-          }
-          if (Stamina != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stamina);
-          }
-          if (MaxStamina != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxStamina);
-          }
-          if (Move1 != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Move1);
-          }
-          if (Move2 != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Move2);
-          }
-          if (DeployedFortId != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(DeployedFortId);
-          }
-          if (OwnerName != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(OwnerName);
-          }
-          if (IsEgg != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(IsEgg);
-          }
-          if (EggKmWalkedTarget != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedTarget);
-          }
-          if (EggKmWalkedStart != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedStart);
-          }
-          if (Origin != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Origin);
-          }
-          if (HeightM != 0) {
-            size += 1 + 4;
-          }
-          if (WeightKg != 0) {
-            size += 2 + 4;
-          }
-          if (IndividualAttack != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualAttack);
-          }
-          if (IndividualDefense != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualDefense);
-          }
-          if (IndividualStamina != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualStamina);
-          }
-          if (CpMultiplier != 0) {
-            size += 2 + 4;
-          }
-          if (Pokeball != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(Pokeball);
-          }
-          if (CapturedS2CellId != 0UL) {
-            size += 2 + 8;
-          }
-          if (BattlesAttacked != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesAttacked);
-          }
-          if (BattlesDefended != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesDefended);
-          }
-          if (EggIncubatorId != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(EggIncubatorId);
-          }
-          if (CreationTimeMs != 0L) {
-            size += 2 + pb::CodedOutputStream.ComputeInt64Size(CreationTimeMs);
-          }
-          if (NumUpgrades != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumUpgrades);
-          }
-          if (AdditionalCpMultiplier != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(AdditionalCpMultiplier);
-          }
-          if (Favorite != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(Favorite);
-          }
-          if (Nickname != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(Nickname);
-          }
-          if (FromFort != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32Size(FromFort);
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(PokemonProto other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Id != 0UL) {
-            Id = other.Id;
-          }
-          if (other.PokemonType != 0) {
-            PokemonType = other.PokemonType;
-          }
-          if (other.Cp != 0) {
-            Cp = other.Cp;
-          }
-          if (other.Stamina != 0) {
-            Stamina = other.Stamina;
-          }
-          if (other.MaxStamina != 0) {
-            MaxStamina = other.MaxStamina;
-          }
-          if (other.Move1 != 0) {
-            Move1 = other.Move1;
-          }
-          if (other.Move2 != 0) {
-            Move2 = other.Move2;
-          }
-          if (other.DeployedFortId != 0) {
-            DeployedFortId = other.DeployedFortId;
-          }
-          if (other.OwnerName != 0) {
-            OwnerName = other.OwnerName;
-          }
-          if (other.IsEgg != 0) {
-            IsEgg = other.IsEgg;
-          }
-          if (other.EggKmWalkedTarget != 0) {
-            EggKmWalkedTarget = other.EggKmWalkedTarget;
-          }
-          if (other.EggKmWalkedStart != 0) {
-            EggKmWalkedStart = other.EggKmWalkedStart;
-          }
-          if (other.Origin != 0) {
-            Origin = other.Origin;
-          }
-          if (other.HeightM != 0) {
-            HeightM = other.HeightM;
-          }
-          if (other.WeightKg != 0) {
-            WeightKg = other.WeightKg;
-          }
-          if (other.IndividualAttack != 0) {
-            IndividualAttack = other.IndividualAttack;
-          }
-          if (other.IndividualDefense != 0) {
-            IndividualDefense = other.IndividualDefense;
-          }
-          if (other.IndividualStamina != 0) {
-            IndividualStamina = other.IndividualStamina;
-          }
-          if (other.CpMultiplier != 0) {
-            CpMultiplier = other.CpMultiplier;
-          }
-          if (other.Pokeball != 0) {
-            Pokeball = other.Pokeball;
-          }
-          if (other.CapturedS2CellId != 0UL) {
-            CapturedS2CellId = other.CapturedS2CellId;
-          }
-          if (other.BattlesAttacked != 0) {
-            BattlesAttacked = other.BattlesAttacked;
-          }
-          if (other.BattlesDefended != 0) {
-            BattlesDefended = other.BattlesDefended;
-          }
-          if (other.EggIncubatorId != 0) {
-            EggIncubatorId = other.EggIncubatorId;
-          }
-          if (other.CreationTimeMs != 0L) {
-            CreationTimeMs = other.CreationTimeMs;
-          }
-          if (other.NumUpgrades != 0) {
-            NumUpgrades = other.NumUpgrades;
-          }
-          if (other.AdditionalCpMultiplier != 0) {
-            AdditionalCpMultiplier = other.AdditionalCpMultiplier;
-          }
-          if (other.Favorite != 0) {
-            Favorite = other.Favorite;
-          }
-          if (other.Nickname != 0) {
-            Nickname = other.Nickname;
-          }
-          if (other.FromFort != 0) {
-            FromFort = other.FromFort;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 9: {
-                Id = input.ReadFixed64();
-                break;
-              }
-              case 16: {
-                pokemonType_ = (global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto.Types.PokemonTypes) input.ReadEnum();
-                break;
-              }
-              case 24: {
-                Cp = input.ReadInt32();
-                break;
-              }
-              case 32: {
-                Stamina = input.ReadInt32();
-                break;
-              }
-              case 40: {
-                MaxStamina = input.ReadInt32();
-                break;
-              }
-              case 48: {
-                Move1 = input.ReadInt32();
-                break;
-              }
-              case 56: {
-                Move2 = input.ReadInt32();
-                break;
-              }
-              case 64: {
-                DeployedFortId = input.ReadInt32();
-                break;
-              }
-              case 72: {
-                OwnerName = input.ReadInt32();
-                break;
-              }
-              case 80: {
-                IsEgg = input.ReadInt32();
-                break;
-              }
-              case 88: {
-                EggKmWalkedTarget = input.ReadInt32();
-                break;
-              }
-              case 96: {
-                EggKmWalkedStart = input.ReadInt32();
-                break;
-              }
-              case 112: {
-                Origin = input.ReadInt32();
-                break;
-              }
-              case 125: {
-                HeightM = input.ReadFixed32();
-                break;
-              }
-              case 133: {
-                WeightKg = input.ReadFixed32();
-                break;
-              }
-              case 136: {
-                IndividualAttack = input.ReadInt32();
-                break;
-              }
-              case 144: {
-                IndividualDefense = input.ReadInt32();
-                break;
-              }
-              case 152: {
-                IndividualStamina = input.ReadInt32();
-                break;
-              }
-              case 165: {
-                CpMultiplier = input.ReadFixed32();
-                break;
-              }
-              case 168: {
-                Pokeball = input.ReadInt32();
-                break;
-              }
-              case 177: {
-                CapturedS2CellId = input.ReadFixed64();
-                break;
-              }
-              case 184: {
-                BattlesAttacked = input.ReadInt32();
-                break;
-              }
-              case 192: {
-                BattlesDefended = input.ReadInt32();
-                break;
-              }
-              case 200: {
-                EggIncubatorId = input.ReadInt32();
-                break;
-              }
-              case 208: {
-                CreationTimeMs = input.ReadInt64();
-                break;
-              }
-              case 216: {
-                NumUpgrades = input.ReadInt32();
-                break;
-              }
-              case 224: {
-                AdditionalCpMultiplier = input.ReadInt32();
-                break;
-              }
-              case 232: {
-                Favorite = input.ReadInt32();
-                break;
-              }
-              case 240: {
-                Nickname = input.ReadInt32();
-                break;
-              }
-              case 248: {
-                FromFort = input.ReadInt32();
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the PokemonProto message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static partial class Types {
-          public enum PokemonTypes {
-            [pbr::OriginalName("POKEMON_UNSET")] PokemonUnset = 0,
-            [pbr::OriginalName("V0001_POKEMON_BULBASAUR")] V0001PokemonBulbasaur = 1,
-            [pbr::OriginalName("V0002_POKEMON_IVYSAUR")] V0002PokemonIvysaur = 2,
-            [pbr::OriginalName("V0003_POKEMON_VENUSAUR")] V0003PokemonVenusaur = 3,
-            [pbr::OriginalName("V0004_POKEMON_CHARMANDER")] V0004PokemonCharmander = 4,
-            [pbr::OriginalName("V0005_POKEMON_CHARMELEON")] V0005PokemonCharmeleon = 5,
-            [pbr::OriginalName("V0006_POKEMON_CHARIZARD")] V0006PokemonCharizard = 6,
-            [pbr::OriginalName("V0007_POKEMON_SQUIRTLE")] V0007PokemonSquirtle = 7,
-            [pbr::OriginalName("V0008_POKEMON_WARTORTLE")] V0008PokemonWartortle = 8,
-            [pbr::OriginalName("V0009_POKEMON_BLASTOISE")] V0009PokemonBlastoise = 9,
-            [pbr::OriginalName("V0010_POKEMON_CATERPIE")] V0010PokemonCaterpie = 10,
-            [pbr::OriginalName("V0011_POKEMON_METAPOD")] V0011PokemonMetapod = 11,
-            [pbr::OriginalName("V0012_POKEMON_BUTTERFREE")] V0012PokemonButterfree = 12,
-            [pbr::OriginalName("V0013_POKEMON_WEEDLE")] V0013PokemonWeedle = 13,
-            [pbr::OriginalName("V0014_POKEMON_KAKUNA")] V0014PokemonKakuna = 14,
-            [pbr::OriginalName("V0015_POKEMON_BEEDRILL")] V0015PokemonBeedrill = 15,
-            [pbr::OriginalName("V0016_POKEMON_PIDGEY")] V0016PokemonPidgey = 16,
-            [pbr::OriginalName("V0017_POKEMON_PIDGEOTTO")] V0017PokemonPidgeotto = 17,
-            [pbr::OriginalName("V0018_POKEMON_PIDGEOT")] V0018PokemonPidgeot = 18,
-            [pbr::OriginalName("V0019_POKEMON_RATTATA")] V0019PokemonRattata = 19,
-            [pbr::OriginalName("V0020_POKEMON_RATICATE")] V0020PokemonRaticate = 20,
-            [pbr::OriginalName("V0021_POKEMON_SPEAROW")] V0021PokemonSpearow = 21,
-            [pbr::OriginalName("V0022_POKEMON_FEAROW")] V0022PokemonFearow = 22,
-            [pbr::OriginalName("V0023_POKEMON_EKANS")] V0023PokemonEkans = 23,
-            [pbr::OriginalName("V0024_POKEMON_ARBOK")] V0024PokemonArbok = 24,
-            [pbr::OriginalName("V0025_POKEMON_PIKACHU")] V0025PokemonPikachu = 25,
-            [pbr::OriginalName("V0026_POKEMON_RAICHU")] V0026PokemonRaichu = 26,
-            [pbr::OriginalName("V0027_POKEMON_SANDSHREW")] V0027PokemonSandshrew = 27,
-            [pbr::OriginalName("V0028_POKEMON_SANDSLASH")] V0028PokemonSandslash = 28,
-            [pbr::OriginalName("V0029_POKEMON_NIDORAN")] V0029PokemonNidoran = 29,
-            [pbr::OriginalName("V0030_POKEMON_NIDORINA")] V0030PokemonNidorina = 30,
-            [pbr::OriginalName("V0031_POKEMON_NIDOQUEEN")] V0031PokemonNidoqueen = 31,
-            [pbr::OriginalName("V0032_POKEMON_NIDORAN")] V0032PokemonNidoran = 32,
-            [pbr::OriginalName("V0033_POKEMON_NIDORINO")] V0033PokemonNidorino = 33,
-            [pbr::OriginalName("V0034_POKEMON_NIDOKING")] V0034PokemonNidoking = 34,
-            [pbr::OriginalName("V0035_POKEMON_CLEFAIRY")] V0035PokemonClefairy = 35,
-            [pbr::OriginalName("V0036_POKEMON_CLEFABLE")] V0036PokemonClefable = 36,
-            [pbr::OriginalName("V0037_POKEMON_VULPIX")] V0037PokemonVulpix = 37,
-            [pbr::OriginalName("V0038_POKEMON_NINETALES")] V0038PokemonNinetales = 38,
-            [pbr::OriginalName("V0039_POKEMON_JIGGLYPUFF")] V0039PokemonJigglypuff = 39,
-            [pbr::OriginalName("V0040_POKEMON_WIGGLYTUFF")] V0040PokemonWigglytuff = 40,
-            [pbr::OriginalName("V0041_POKEMON_ZUBAT")] V0041PokemonZubat = 41,
-            [pbr::OriginalName("V0042_POKEMON_GOLBAT")] V0042PokemonGolbat = 42,
-            [pbr::OriginalName("V0043_POKEMON_ODDISH")] V0043PokemonOddish = 43,
-            [pbr::OriginalName("V0044_POKEMON_GLOOM")] V0044PokemonGloom = 44,
-            [pbr::OriginalName("V0045_POKEMON_VILEPLUME")] V0045PokemonVileplume = 45,
-            [pbr::OriginalName("V0046_POKEMON_PARAS")] V0046PokemonParas = 46,
-            [pbr::OriginalName("V0047_POKEMON_PARASECT")] V0047PokemonParasect = 47,
-            [pbr::OriginalName("V0048_POKEMON_VENONAT")] V0048PokemonVenonat = 48,
-            [pbr::OriginalName("V0049_POKEMON_VENOMOTH")] V0049PokemonVenomoth = 49,
-            [pbr::OriginalName("V0050_POKEMON_DIGLETT")] V0050PokemonDiglett = 50,
-            [pbr::OriginalName("V0051_POKEMON_DUGTRIO")] V0051PokemonDugtrio = 51,
-            [pbr::OriginalName("V0052_POKEMON_MEOWTH")] V0052PokemonMeowth = 52,
-            [pbr::OriginalName("V0053_POKEMON_PERSIAN")] V0053PokemonPersian = 53,
-            [pbr::OriginalName("V0054_POKEMON_PSYDUCK")] V0054PokemonPsyduck = 54,
-            [pbr::OriginalName("V0055_POKEMON_GOLDUCK")] V0055PokemonGolduck = 55,
-            [pbr::OriginalName("V0056_POKEMON_MANKEY")] V0056PokemonMankey = 56,
-            [pbr::OriginalName("V0057_POKEMON_PRIMEAPE")] V0057PokemonPrimeape = 57,
-            [pbr::OriginalName("V0058_POKEMON_GROWLITHE")] V0058PokemonGrowlithe = 58,
-            [pbr::OriginalName("V0059_POKEMON_ARCANINE")] V0059PokemonArcanine = 59,
-            [pbr::OriginalName("V0060_POKEMON_POLIWAG")] V0060PokemonPoliwag = 60,
-            [pbr::OriginalName("V0061_POKEMON_POLIWHIRL")] V0061PokemonPoliwhirl = 61,
-            [pbr::OriginalName("V0062_POKEMON_POLIWRATH")] V0062PokemonPoliwrath = 62,
-            [pbr::OriginalName("V0063_POKEMON_ABRA")] V0063PokemonAbra = 63,
-            [pbr::OriginalName("V0064_POKEMON_KADABRA")] V0064PokemonKadabra = 64,
-            [pbr::OriginalName("V0065_POKEMON_ALAKAZAM")] V0065PokemonAlakazam = 65,
-            [pbr::OriginalName("V0066_POKEMON_MACHOP")] V0066PokemonMachop = 66,
-            [pbr::OriginalName("V0067_POKEMON_MACHOKE")] V0067PokemonMachoke = 67,
-            [pbr::OriginalName("V0068_POKEMON_MACHAMP")] V0068PokemonMachamp = 68,
-            [pbr::OriginalName("V0069_POKEMON_BELLSPROUT")] V0069PokemonBellsprout = 69,
-            [pbr::OriginalName("V0070_POKEMON_WEEPINBELL")] V0070PokemonWeepinbell = 70,
-            [pbr::OriginalName("V0071_POKEMON_VICTREEBEL")] V0071PokemonVictreebel = 71,
-            [pbr::OriginalName("V0072_POKEMON_TENTACOOL")] V0072PokemonTentacool = 72,
-            [pbr::OriginalName("V0073_POKEMON_TENTACRUEL")] V0073PokemonTentacruel = 73,
-            [pbr::OriginalName("V0074_POKEMON_GEODUDE")] V0074PokemonGeodude = 74,
-            [pbr::OriginalName("V0075_POKEMON_GRAVELER")] V0075PokemonGraveler = 75,
-            [pbr::OriginalName("V0076_POKEMON_GOLEM")] V0076PokemonGolem = 76,
-            [pbr::OriginalName("V0077_POKEMON_PONYTA")] V0077PokemonPonyta = 77,
-            [pbr::OriginalName("V0078_POKEMON_RAPIDASH")] V0078PokemonRapidash = 78,
-            [pbr::OriginalName("V0079_POKEMON_SLOWPOKE")] V0079PokemonSlowpoke = 79,
-            [pbr::OriginalName("V0080_POKEMON_SLOWBRO")] V0080PokemonSlowbro = 80,
-            [pbr::OriginalName("V0081_POKEMON_MAGNEMITE")] V0081PokemonMagnemite = 81,
-            [pbr::OriginalName("V0082_POKEMON_MAGNETON")] V0082PokemonMagneton = 82,
-            [pbr::OriginalName("V0083_POKEMON_FARFETCHD")] V0083PokemonFarfetchd = 83,
-            [pbr::OriginalName("V0084_POKEMON_DODUO")] V0084PokemonDoduo = 84,
-            [pbr::OriginalName("V0085_POKEMON_DODRIO")] V0085PokemonDodrio = 85,
-            [pbr::OriginalName("V0086_POKEMON_SEEL")] V0086PokemonSeel = 86,
-            [pbr::OriginalName("V0087_POKEMON_DEWGONG")] V0087PokemonDewgong = 87,
-            [pbr::OriginalName("V0088_POKEMON_GRIMER")] V0088PokemonGrimer = 88,
-            [pbr::OriginalName("V0089_POKEMON_MUK")] V0089PokemonMuk = 89,
-            [pbr::OriginalName("V0090_POKEMON_SHELLDER")] V0090PokemonShellder = 90,
-            [pbr::OriginalName("V0091_POKEMON_CLOYSTER")] V0091PokemonCloyster = 91,
-            [pbr::OriginalName("V0092_POKEMON_GASTLY")] V0092PokemonGastly = 92,
-            [pbr::OriginalName("V0093_POKEMON_HAUNTER")] V0093PokemonHaunter = 93,
-            [pbr::OriginalName("V0094_POKEMON_GENGAR")] V0094PokemonGengar = 94,
-            [pbr::OriginalName("V0095_POKEMON_ONIX")] V0095PokemonOnix = 95,
-            [pbr::OriginalName("V0096_POKEMON_DROWZEE")] V0096PokemonDrowzee = 96,
-            [pbr::OriginalName("V0097_POKEMON_HYPNO")] V0097PokemonHypno = 97,
-            [pbr::OriginalName("V0098_POKEMON_KRABBY")] V0098PokemonKrabby = 98,
-            [pbr::OriginalName("V0099_POKEMON_KINGLER")] V0099PokemonKingler = 99,
-            [pbr::OriginalName("V0100_POKEMON_VOLTORB")] V0100PokemonVoltorb = 100,
-            [pbr::OriginalName("V0101_POKEMON_ELECTRODE")] V0101PokemonElectrode = 101,
-            [pbr::OriginalName("V0102_POKEMON_EXEGGCUTE")] V0102PokemonExeggcute = 102,
-            [pbr::OriginalName("V0103_POKEMON_EXEGGUTOR")] V0103PokemonExeggutor = 103,
-            [pbr::OriginalName("V0104_POKEMON_CUBONE")] V0104PokemonCubone = 104,
-            [pbr::OriginalName("V0105_POKEMON_MAROWAK")] V0105PokemonMarowak = 105,
-            [pbr::OriginalName("V0106_POKEMON_HITMONLEE")] V0106PokemonHitmonlee = 106,
-            [pbr::OriginalName("V0107_POKEMON_HITMONCHAN")] V0107PokemonHitmonchan = 107,
-            [pbr::OriginalName("V0108_POKEMON_LICKITUNG")] V0108PokemonLickitung = 108,
-            [pbr::OriginalName("V0109_POKEMON_KOFFING")] V0109PokemonKoffing = 109,
-            [pbr::OriginalName("V0110_POKEMON_WEEZING")] V0110PokemonWeezing = 110,
-            [pbr::OriginalName("V0111_POKEMON_RHYHORN")] V0111PokemonRhyhorn = 111,
-            [pbr::OriginalName("V0112_POKEMON_RHYDON")] V0112PokemonRhydon = 112,
-            [pbr::OriginalName("V0113_POKEMON_CHANSEY")] V0113PokemonChansey = 113,
-            [pbr::OriginalName("V0114_POKEMON_TANGELA")] V0114PokemonTangela = 114,
-            [pbr::OriginalName("V0115_POKEMON_KANGASKHAN")] V0115PokemonKangaskhan = 115,
-            [pbr::OriginalName("V0116_POKEMON_HORSEA")] V0116PokemonHorsea = 116,
-            [pbr::OriginalName("V0117_POKEMON_SEADRA")] V0117PokemonSeadra = 117,
-            [pbr::OriginalName("V0118_POKEMON_GOLDEEN")] V0118PokemonGoldeen = 118,
-            [pbr::OriginalName("V0119_POKEMON_SEAKING")] V0119PokemonSeaking = 119,
-            [pbr::OriginalName("V0120_POKEMON_STARYU")] V0120PokemonStaryu = 120,
-            [pbr::OriginalName("V0121_POKEMON_STARMIE")] V0121PokemonStarmie = 121,
-            [pbr::OriginalName("V0122_POKEMON_MR_MIME")] V0122PokemonMrMime = 122,
-            [pbr::OriginalName("V0123_POKEMON_SCYTHER")] V0123PokemonScyther = 123,
-            [pbr::OriginalName("V0124_POKEMON_JYNX")] V0124PokemonJynx = 124,
-            [pbr::OriginalName("V0125_POKEMON_ELECTABUZZ")] V0125PokemonElectabuzz = 125,
-            [pbr::OriginalName("V0126_POKEMON_MAGMAR")] V0126PokemonMagmar = 126,
-            [pbr::OriginalName("V0127_POKEMON_PINSIR")] V0127PokemonPinsir = 127,
-            [pbr::OriginalName("V0128_POKEMON_TAUROS")] V0128PokemonTauros = 128,
-            [pbr::OriginalName("V0129_POKEMON_MAGIKARP")] V0129PokemonMagikarp = 129,
-            [pbr::OriginalName("V0130_POKEMON_GYARADOS")] V0130PokemonGyarados = 130,
-            [pbr::OriginalName("V0131_POKEMON_LAPRAS")] V0131PokemonLapras = 131,
-            [pbr::OriginalName("V0132_POKEMON_DITTO")] V0132PokemonDitto = 132,
-            [pbr::OriginalName("V0133_POKEMON_EEVEE")] V0133PokemonEevee = 133,
-            [pbr::OriginalName("V0134_POKEMON_VAPOREON")] V0134PokemonVaporeon = 134,
-            [pbr::OriginalName("V0135_POKEMON_JOLTEON")] V0135PokemonJolteon = 135,
-            [pbr::OriginalName("V0136_POKEMON_FLAREON")] V0136PokemonFlareon = 136,
-            [pbr::OriginalName("V0137_POKEMON_PORYGON")] V0137PokemonPorygon = 137,
-            [pbr::OriginalName("V0138_POKEMON_OMANYTE")] V0138PokemonOmanyte = 138,
-            [pbr::OriginalName("V0139_POKEMON_OMASTAR")] V0139PokemonOmastar = 139,
-            [pbr::OriginalName("V0140_POKEMON_KABUTO")] V0140PokemonKabuto = 140,
-            [pbr::OriginalName("V0141_POKEMON_KABUTOPS")] V0141PokemonKabutops = 141,
-            [pbr::OriginalName("V0142_POKEMON_AERODACTYL")] V0142PokemonAerodactyl = 142,
-            [pbr::OriginalName("V0143_POKEMON_SNORLAX")] V0143PokemonSnorlax = 143,
-            [pbr::OriginalName("V0144_POKEMON_ARTICUNO")] V0144PokemonArticuno = 144,
-            [pbr::OriginalName("V0145_POKEMON_ZAPDOS")] V0145PokemonZapdos = 145,
-            [pbr::OriginalName("V0146_POKEMON_MOLTRES")] V0146PokemonMoltres = 146,
-            [pbr::OriginalName("V0147_POKEMON_DRATINI")] V0147PokemonDratini = 147,
-            [pbr::OriginalName("V0148_POKEMON_DRAGONAIR")] V0148PokemonDragonair = 148,
-            [pbr::OriginalName("V0149_POKEMON_DRAGONITE")] V0149PokemonDragonite = 149,
-            [pbr::OriginalName("V0150_POKEMON_MEWTWO")] V0150PokemonMewtwo = 150,
-            [pbr::OriginalName("V0151_POKEMON_MEW")] V0151PokemonMew = 151,
-          }
-
-        }
-        #endregion
-
-      }
-
-    }
-    #endregion
-
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/GeneratedCode/MapObjectsResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/MapObjectsResponse.cs
deleted file mode 100644
index fab906e..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/MapObjectsResponse.cs
+++ /dev/null
@@ -1,3485 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: MapObjectsResponse.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-namespace PokemonGo.RocketAPI.GeneratedCode {
-
-  /// <summary>Holder for reflection information generated from MapObjectsResponse.proto</summary>
-  public static partial class MapObjectsResponseReflection {
-
-    #region Descriptor
-    /// <summary>File descriptor for MapObjectsResponse.proto</summary>
-    public static pbr::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbr::FileDescriptor descriptor;
-
-    static MapObjectsResponseReflection() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "ChhNYXBPYmplY3RzUmVzcG9uc2UucHJvdG8SIVBva2Vtb25Hby5Sb2NrZXRB",
-            "UEkuR2VuZXJhdGVkQ29kZSLsNgoSTWFwT2JqZWN0c1Jlc3BvbnNlEhAKCHVu",
-            "a25vd24xGAEgASgFEhAKCHVua25vd24yGAIgASgDEg8KB2FwaV91cmwYAyAB",
-            "KAkSUAoIdW5rbm93bjYYBiABKAsyPi5Qb2tlbW9uR28uUm9ja2V0QVBJLkdl",
-            "bmVyYXRlZENvZGUuTWFwT2JqZWN0c1Jlc3BvbnNlLlVua25vd242ElAKCHVu",
-            "a25vd243GAcgASgLMj4uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRD",
-            "b2RlLk1hcE9iamVjdHNSZXNwb25zZS5Vbmtub3duNxJOCgdwYXlsb2FkGGQg",
-            "AygLMj0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLk1hcE9i",
-            "amVjdHNSZXNwb25zZS5QYXlsb2FkEhQKDGVycm9yTWVzc2FnZRhlIAEoCRqV",
-            "AQoIVW5rbm93bjYSEAoIdW5rbm93bjEYASABKAUSWQoIdW5rbm93bjIYAiAB",
-            "KAsyRy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuTWFwT2Jq",
-            "ZWN0c1Jlc3BvbnNlLlVua25vd242LlVua25vd24yGhwKCFVua25vd24yEhAK",
-            "CHVua25vd24xGAEgASgMGkMKCFVua25vd243EhEKCXVua25vd243MRgBIAEo",
-            "DBIRCgl1bmtub3duNzIYAiABKAMSEQoJdW5rbm93bjczGAMgASgMGrkyCgdQ",
-            "YXlsb2FkElwKB3Byb2ZpbGUYASADKAsySy5Qb2tlbW9uR28uUm9ja2V0QVBJ",
-            "LkdlbmVyYXRlZENvZGUuTWFwT2JqZWN0c1Jlc3BvbnNlLlBheWxvYWQuQ2xp",
-            "ZW50TWFwQ2VsbBIVCg11bmtub3dubnVtYmVyGAIgASgFGqQGCg1DbGllbnRN",
-            "YXBDZWxsEhAKCFMyQ2VsbElkGAEgASgEEhIKCkFzT2ZUaW1lTXMYAiABKAMS",
-            "XAoERm9ydBgDIAMoCzJOLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
-            "Q29kZS5NYXBPYmplY3RzUmVzcG9uc2UuUGF5bG9hZC5Qb2tlbW9uRm9ydFBy",
-            "b3RvEmcKClNwYXduUG9pbnQYBCADKAsyUy5Qb2tlbW9uR28uUm9ja2V0QVBJ",
-            "LkdlbmVyYXRlZENvZGUuTWFwT2JqZWN0c1Jlc3BvbnNlLlBheWxvYWQuQ2xp",
-            "ZW50U3Bhd25Qb2ludFByb3RvEmMKC1dpbGRQb2tlbW9uGAUgAygLMk4uUG9r",
-            "ZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLk1hcE9iamVjdHNSZXNw",
-            "b25zZS5QYXlsb2FkLldpbGRQb2tlbW9uUHJvdG8SFwoPSXNUcnVuY2F0ZWRM",
-            "aXN0GAcgASgIEmoKC0ZvcnRTdW1tYXJ5GAggAygLMlUuUG9rZW1vbkdvLlJv",
-            "Y2tldEFQSS5HZW5lcmF0ZWRDb2RlLk1hcE9iamVjdHNSZXNwb25zZS5QYXls",
-            "b2FkLlBva2Vtb25TdW1tYXJ5Rm9ydFByb3RvEnAKE0RlY2ltYXRlZFNwYXdu",
-            "UG9pbnQYCSADKAsyUy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENv",
-            "ZGUuTWFwT2JqZWN0c1Jlc3BvbnNlLlBheWxvYWQuQ2xpZW50U3Bhd25Qb2lu",
-            "dFByb3RvEmEKCk1hcFBva2Vtb24YCiADKAsyTS5Qb2tlbW9uR28uUm9ja2V0",
-            "QVBJLkdlbmVyYXRlZENvZGUuTWFwT2JqZWN0c1Jlc3BvbnNlLlBheWxvYWQu",
-            "TWFwUG9rZW1vblByb3RvEmcKDU5lYXJieVBva2Vtb24YCyADKAsyUC5Qb2tl",
-            "bW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuTWFwT2JqZWN0c1Jlc3Bv",
-            "bnNlLlBheWxvYWQuTmVhcmJ5UG9rZW1vblByb3RvGpUBCgtXaWxkUG9rZW1v",
-            "bhIQCghVbmlxdWVJZBgBIAEoCRIRCglQb2tlbW9uSWQYAiABKAkSYQoHcG9r",
-            "ZW1vbhgLIAMoCzJQLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
-            "ZS5NYXBPYmplY3RzUmVzcG9uc2UuUGF5bG9hZC5OZWFyYnlQb2tlbW9uUHJv",
-            "dG8a3gEKD01hcFBva2Vtb25Qcm90bxIUCgxTcGF3bnBvaW50SWQYASABKAkS",
-            "EwoLRW5jb3VudGVySWQYAiABKAYSYQoNUG9rZWRleFR5cGVJZBgDIAEoDjJK",
-            "LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5NYXBPYmplY3Rz",
-            "UmVzcG9uc2UuUGF5bG9hZC5Qb2tlbW9uVHlwZXMSGAoQRXhwaXJhdGlvblRp",
-            "bWVNcxgEIAEoAxIQCghMYXRpdHVkZRgFIAEoARIRCglMb25naXR1ZGUYBiAB",
-            "KAEalAMKEFBva2Vtb25Gb3J0UHJvdG8SDgoGRm9ydElkGAEgASgJEhYKDkxh",
-            "c3RNb2RpZmllZE1zGAIgASgDEhAKCExhdGl0dWRlGAMgASgBEhEKCUxvbmdp",
-            "dHVkZRgEIAEoARIMCgRUZWFtGAUgASgFEhYKDkd1YXJkUG9rZW1vbklkGAYg",
-            "ASgFEhkKEUd1YXJkUG9rZW1vbkxldmVsGAcgASgFEg8KB0VuYWJsZWQYCCAB",
-            "KAgSEAoIRm9ydFR5cGUYCSABKAUSEQoJR3ltUG9pbnRzGAogASgDEhIKCklz",
-            "SW5CYXR0bGUYCyABKAgSZAoNQWN0aXZlUG9rZW1vbhgNIAEoCzJNLlBva2Vt",
-            "b25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5NYXBPYmplY3RzUmVzcG9u",
-            "c2UuUGF5bG9hZC5NYXBQb2tlbW9uUHJvdG8SGgoSQ29vbGRvd25Db21wbGV0",
-            "ZU1zGA4gASgDEg8KB1Nwb25zb3IYDyABKAUSFQoNUmVuZGVyaW5nVHlwZRgQ",
-            "IAEoBRptChdQb2tlbW9uU3VtbWFyeUZvcnRQcm90bxIVCg1Gb3J0U3VtbWFy",
-            "eUlkGAEgASgJEhYKDkxhc3RNb2RpZmllZE1zGAIgASgDEhAKCExhdGl0dWRl",
-            "GAMgASgBEhEKCUxvbmdpdHVkZRgEIAEoARo8ChVDbGllbnRTcGF3blBvaW50",
-            "UHJvdG8SEAoITGF0aXR1ZGUYAiABKAESEQoJTG9uZ2l0dWRlGAMgASgBGqcC",
-            "ChBXaWxkUG9rZW1vblByb3RvEhMKC0VuY291bnRlcklkGAEgASgEEhYKDkxh",
-            "c3RNb2RpZmllZE1zGAIgASgDEhAKCExhdGl0dWRlGAMgASgBEhEKCUxvbmdp",
-            "dHVkZRgEIAEoARIUCgxTcGF3blBvaW50SWQYBSABKAkSZwoHcG9rZW1vbhgH",
-            "IAEoCzJWLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5NYXBP",
-            "YmplY3RzUmVzcG9uc2UuUGF5bG9hZC5XaWxkUG9rZW1vblByb3RvLlBva2Vt",
-            "b24SGAoQVGltZVRpbGxIaWRkZW5NcxgLIAEoBRooCgdQb2tlbW9uEgoKAklk",
-            "GAEgASgEEhEKCVBva2Vtb25JZBgCIAEoBRpYChJOZWFyYnlQb2tlbW9uUHJv",
-            "dG8SFQoNUG9rZWRleE51bWJlchgBIAEoBRIWCg5EaXN0YW5jZU1ldGVycxgC",
-            "IAEoAhITCgtFbmNvdW50ZXJJZBgDIAEoBCLQIAoMUG9rZW1vblR5cGVzEhEK",
-            "DVBPS0VNT05fVU5TRVQQABIbChdWMDAwMV9QT0tFTU9OX0JVTEJBU0FVUhAB",
-            "EhkKFVYwMDAyX1BPS0VNT05fSVZZU0FVUhACEhoKFlYwMDAzX1BPS0VNT05f",
-            "VkVOVVNBVVIQAxIcChhWMDAwNF9QT0tFTU9OX0NIQVJNQU5ERVIQBBIcChhW",
-            "MDAwNV9QT0tFTU9OX0NIQVJNRUxFT04QBRIbChdWMDAwNl9QT0tFTU9OX0NI",
-            "QVJJWkFSRBAGEhoKFlYwMDA3X1BPS0VNT05fU1FVSVJUTEUQBxIbChdWMDAw",
-            "OF9QT0tFTU9OX1dBUlRPUlRMRRAIEhsKF1YwMDA5X1BPS0VNT05fQkxBU1RP",
-            "SVNFEAkSGgoWVjAwMTBfUE9LRU1PTl9DQVRFUlBJRRAKEhkKFVYwMDExX1BP",
-            "S0VNT05fTUVUQVBPRBALEhwKGFYwMDEyX1BPS0VNT05fQlVUVEVSRlJFRRAM",
-            "EhgKFFYwMDEzX1BPS0VNT05fV0VFRExFEA0SGAoUVjAwMTRfUE9LRU1PTl9L",
-            "QUtVTkEQDhIaChZWMDAxNV9QT0tFTU9OX0JFRURSSUxMEA8SGAoUVjAwMTZf",
-            "UE9LRU1PTl9QSURHRVkQEBIbChdWMDAxN19QT0tFTU9OX1BJREdFT1RUTxAR",
-            "EhkKFVYwMDE4X1BPS0VNT05fUElER0VPVBASEhkKFVYwMDE5X1BPS0VNT05f",
-            "UkFUVEFUQRATEhoKFlYwMDIwX1BPS0VNT05fUkFUSUNBVEUQFBIZChVWMDAy",
-            "MV9QT0tFTU9OX1NQRUFST1cQFRIYChRWMDAyMl9QT0tFTU9OX0ZFQVJPVxAW",
-            "EhcKE1YwMDIzX1BPS0VNT05fRUtBTlMQFxIXChNWMDAyNF9QT0tFTU9OX0FS",
-            "Qk9LEBgSGQoVVjAwMjVfUE9LRU1PTl9QSUtBQ0hVEBkSGAoUVjAwMjZfUE9L",
-            "RU1PTl9SQUlDSFUQGhIbChdWMDAyN19QT0tFTU9OX1NBTkRTSFJFVxAbEhsK",
-            "F1YwMDI4X1BPS0VNT05fU0FORFNMQVNIEBwSGQoVVjAwMjlfUE9LRU1PTl9O",
-            "SURPUkFOEB0SGgoWVjAwMzBfUE9LRU1PTl9OSURPUklOQRAeEhsKF1YwMDMx",
-            "X1BPS0VNT05fTklET1FVRUVOEB8SGQoVVjAwMzJfUE9LRU1PTl9OSURPUkFO",
-            "ECASGgoWVjAwMzNfUE9LRU1PTl9OSURPUklOTxAhEhoKFlYwMDM0X1BPS0VN",
-            "T05fTklET0tJTkcQIhIaChZWMDAzNV9QT0tFTU9OX0NMRUZBSVJZECMSGgoW",
-            "VjAwMzZfUE9LRU1PTl9DTEVGQUJMRRAkEhgKFFYwMDM3X1BPS0VNT05fVlVM",
-            "UElYECUSGwoXVjAwMzhfUE9LRU1PTl9OSU5FVEFMRVMQJhIcChhWMDAzOV9Q",
-            "T0tFTU9OX0pJR0dMWVBVRkYQJxIcChhWMDA0MF9QT0tFTU9OX1dJR0dMWVRV",
-            "RkYQKBIXChNWMDA0MV9QT0tFTU9OX1pVQkFUECkSGAoUVjAwNDJfUE9LRU1P",
-            "Tl9HT0xCQVQQKhIYChRWMDA0M19QT0tFTU9OX09ERElTSBArEhcKE1YwMDQ0",
-            "X1BPS0VNT05fR0xPT00QLBIbChdWMDA0NV9QT0tFTU9OX1ZJTEVQTFVNRRAt",
-            "EhcKE1YwMDQ2X1BPS0VNT05fUEFSQVMQLhIaChZWMDA0N19QT0tFTU9OX1BB",
-            "UkFTRUNUEC8SGQoVVjAwNDhfUE9LRU1PTl9WRU5PTkFUEDASGgoWVjAwNDlf",
-            "UE9LRU1PTl9WRU5PTU9USBAxEhkKFVYwMDUwX1BPS0VNT05fRElHTEVUVBAy",
-            "EhkKFVYwMDUxX1BPS0VNT05fRFVHVFJJTxAzEhgKFFYwMDUyX1BPS0VNT05f",
-            "TUVPV1RIEDQSGQoVVjAwNTNfUE9LRU1PTl9QRVJTSUFOEDUSGQoVVjAwNTRf",
-            "UE9LRU1PTl9QU1lEVUNLEDYSGQoVVjAwNTVfUE9LRU1PTl9HT0xEVUNLEDcS",
-            "GAoUVjAwNTZfUE9LRU1PTl9NQU5LRVkQOBIaChZWMDA1N19QT0tFTU9OX1BS",
-            "SU1FQVBFEDkSGwoXVjAwNThfUE9LRU1PTl9HUk9XTElUSEUQOhIaChZWMDA1",
-            "OV9QT0tFTU9OX0FSQ0FOSU5FEDsSGQoVVjAwNjBfUE9LRU1PTl9QT0xJV0FH",
-            "EDwSGwoXVjAwNjFfUE9LRU1PTl9QT0xJV0hJUkwQPRIbChdWMDA2Ml9QT0tF",
-            "TU9OX1BPTElXUkFUSBA+EhYKElYwMDYzX1BPS0VNT05fQUJSQRA/EhkKFVYw",
-            "MDY0X1BPS0VNT05fS0FEQUJSQRBAEhoKFlYwMDY1X1BPS0VNT05fQUxBS0Fa",
-            "QU0QQRIYChRWMDA2Nl9QT0tFTU9OX01BQ0hPUBBCEhkKFVYwMDY3X1BPS0VN",
-            "T05fTUFDSE9LRRBDEhkKFVYwMDY4X1BPS0VNT05fTUFDSEFNUBBEEhwKGFYw",
-            "MDY5X1BPS0VNT05fQkVMTFNQUk9VVBBFEhwKGFYwMDcwX1BPS0VNT05fV0VF",
-            "UElOQkVMTBBGEhwKGFYwMDcxX1BPS0VNT05fVklDVFJFRUJFTBBHEhsKF1Yw",
-            "MDcyX1BPS0VNT05fVEVOVEFDT09MEEgSHAoYVjAwNzNfUE9LRU1PTl9URU5U",
-            "QUNSVUVMEEkSGQoVVjAwNzRfUE9LRU1PTl9HRU9EVURFEEoSGgoWVjAwNzVf",
-            "UE9LRU1PTl9HUkFWRUxFUhBLEhcKE1YwMDc2X1BPS0VNT05fR09MRU0QTBIY",
-            "ChRWMDA3N19QT0tFTU9OX1BPTllUQRBNEhoKFlYwMDc4X1BPS0VNT05fUkFQ",
-            "SURBU0gQThIaChZWMDA3OV9QT0tFTU9OX1NMT1dQT0tFEE8SGQoVVjAwODBf",
-            "UE9LRU1PTl9TTE9XQlJPEFASGwoXVjAwODFfUE9LRU1PTl9NQUdORU1JVEUQ",
-            "URIaChZWMDA4Ml9QT0tFTU9OX01BR05FVE9OEFISGwoXVjAwODNfUE9LRU1P",
-            "Tl9GQVJGRVRDSEQQUxIXChNWMDA4NF9QT0tFTU9OX0RPRFVPEFQSGAoUVjAw",
-            "ODVfUE9LRU1PTl9ET0RSSU8QVRIWChJWMDA4Nl9QT0tFTU9OX1NFRUwQVhIZ",
-            "ChVWMDA4N19QT0tFTU9OX0RFV0dPTkcQVxIYChRWMDA4OF9QT0tFTU9OX0dS",
-            "SU1FUhBYEhUKEVYwMDg5X1BPS0VNT05fTVVLEFkSGgoWVjAwOTBfUE9LRU1P",
-            "Tl9TSEVMTERFUhBaEhoKFlYwMDkxX1BPS0VNT05fQ0xPWVNURVIQWxIYChRW",
-            "MDA5Ml9QT0tFTU9OX0dBU1RMWRBcEhkKFVYwMDkzX1BPS0VNT05fSEFVTlRF",
-            "UhBdEhgKFFYwMDk0X1BPS0VNT05fR0VOR0FSEF4SFgoSVjAwOTVfUE9LRU1P",
-            "Tl9PTklYEF8SGQoVVjAwOTZfUE9LRU1PTl9EUk9XWkVFEGASFwoTVjAwOTdf",
-            "UE9LRU1PTl9IWVBOTxBhEhgKFFYwMDk4X1BPS0VNT05fS1JBQkJZEGISGQoV",
-            "VjAwOTlfUE9LRU1PTl9LSU5HTEVSEGMSGQoVVjAxMDBfUE9LRU1PTl9WT0xU",
-            "T1JCEGQSGwoXVjAxMDFfUE9LRU1PTl9FTEVDVFJPREUQZRIbChdWMDEwMl9Q",
-            "T0tFTU9OX0VYRUdHQ1VURRBmEhsKF1YwMTAzX1BPS0VNT05fRVhFR0dVVE9S",
-            "EGcSGAoUVjAxMDRfUE9LRU1PTl9DVUJPTkUQaBIZChVWMDEwNV9QT0tFTU9O",
-            "X01BUk9XQUsQaRIbChdWMDEwNl9QT0tFTU9OX0hJVE1PTkxFRRBqEhwKGFYw",
-            "MTA3X1BPS0VNT05fSElUTU9OQ0hBThBrEhsKF1YwMTA4X1BPS0VNT05fTElD",
-            "S0lUVU5HEGwSGQoVVjAxMDlfUE9LRU1PTl9LT0ZGSU5HEG0SGQoVVjAxMTBf",
-            "UE9LRU1PTl9XRUVaSU5HEG4SGQoVVjAxMTFfUE9LRU1PTl9SSFlIT1JOEG8S",
-            "GAoUVjAxMTJfUE9LRU1PTl9SSFlET04QcBIZChVWMDExM19QT0tFTU9OX0NI",
-            "QU5TRVkQcRIZChVWMDExNF9QT0tFTU9OX1RBTkdFTEEQchIcChhWMDExNV9Q",
-            "T0tFTU9OX0tBTkdBU0tIQU4QcxIYChRWMDExNl9QT0tFTU9OX0hPUlNFQRB0",
-            "EhgKFFYwMTE3X1BPS0VNT05fU0VBRFJBEHUSGQoVVjAxMThfUE9LRU1PTl9H",
-            "T0xERUVOEHYSGQoVVjAxMTlfUE9LRU1PTl9TRUFLSU5HEHcSGAoUVjAxMjBf",
-            "UE9LRU1PTl9TVEFSWVUQeBIZChVWMDEyMV9QT0tFTU9OX1NUQVJNSUUQeRIZ",
-            "ChVWMDEyMl9QT0tFTU9OX01SX01JTUUQehIZChVWMDEyM19QT0tFTU9OX1ND",
-            "WVRIRVIQexIWChJWMDEyNF9QT0tFTU9OX0pZTlgQfBIcChhWMDEyNV9QT0tF",
-            "TU9OX0VMRUNUQUJVWloQfRIYChRWMDEyNl9QT0tFTU9OX01BR01BUhB+EhgK",
-            "FFYwMTI3X1BPS0VNT05fUElOU0lSEH8SGQoUVjAxMjhfUE9LRU1PTl9UQVVS",
-            "T1MQgAESGwoWVjAxMjlfUE9LRU1PTl9NQUdJS0FSUBCBARIbChZWMDEzMF9Q",
-            "T0tFTU9OX0dZQVJBRE9TEIIBEhkKFFYwMTMxX1BPS0VNT05fTEFQUkFTEIMB",
-            "EhgKE1YwMTMyX1BPS0VNT05fRElUVE8QhAESGAoTVjAxMzNfUE9LRU1PTl9F",
-            "RVZFRRCFARIbChZWMDEzNF9QT0tFTU9OX1ZBUE9SRU9OEIYBEhoKFVYwMTM1",
-            "X1BPS0VNT05fSk9MVEVPThCHARIaChVWMDEzNl9QT0tFTU9OX0ZMQVJFT04Q",
-            "iAESGgoVVjAxMzdfUE9LRU1PTl9QT1JZR09OEIkBEhoKFVYwMTM4X1BPS0VN",
-            "T05fT01BTllURRCKARIaChVWMDEzOV9QT0tFTU9OX09NQVNUQVIQiwESGQoU",
-            "VjAxNDBfUE9LRU1PTl9LQUJVVE8QjAESGwoWVjAxNDFfUE9LRU1PTl9LQUJV",
-            "VE9QUxCNARIdChhWMDE0Ml9QT0tFTU9OX0FFUk9EQUNUWUwQjgESGgoVVjAx",
-            "NDNfUE9LRU1PTl9TTk9STEFYEI8BEhsKFlYwMTQ0X1BPS0VNT05fQVJUSUNV",
-            "Tk8QkAESGQoUVjAxNDVfUE9LRU1PTl9aQVBET1MQkQESGgoVVjAxNDZfUE9L",
-            "RU1PTl9NT0xUUkVTEJIBEhoKFVYwMTQ3X1BPS0VNT05fRFJBVElOSRCTARIc",
-            "ChdWMDE0OF9QT0tFTU9OX0RSQUdPTkFJUhCUARIcChdWMDE0OV9QT0tFTU9O",
-            "X0RSQUdPTklURRCVARIZChRWMDE1MF9QT0tFTU9OX01FV1RXTxCWARIWChFW",
-            "MDE1MV9QT0tFTU9OX01FVxCXAWIGcHJvdG8z"));
-      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-          new pbr::FileDescriptor[] { },
-          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Unknown7", "Payload", "ErrorMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown7), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown7.Parser, new[]{ "Unknown71", "Unknown72", "Unknown73" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Parser, new[]{ "Profile", "Unknownnumber" }, null, new[]{ typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonTypes) }, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientMapCell), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientMapCell.Parser, new[]{ "S2CellId", "AsOfTimeMs", "Fort", "SpawnPoint", "WildPokemon", "IsTruncatedList", "FortSummary", "DecimatedSpawnPoint", "MapPokemon", "NearbyPokemon" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemon), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemon.Parser, new[]{ "UniqueId", "PokemonId", "Pokemon" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.MapPokemonProto), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.MapPokemonProto.Parser, new[]{ "SpawnpointId", "EncounterId", "PokedexTypeId", "ExpirationTimeMs", "Latitude", "Longitude" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonFortProto), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonFortProto.Parser, new[]{ "FortId", "LastModifiedMs", "Latitude", "Longitude", "Team", "GuardPokemonId", "GuardPokemonLevel", "Enabled", "FortType", "GymPoints", "IsInBattle", "ActivePokemon", "CooldownCompleteMs", "Sponsor", "RenderingType" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonSummaryFortProto), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonSummaryFortProto.Parser, new[]{ "FortSummaryId", "LastModifiedMs", "Latitude", "Longitude" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto.Parser, new[]{ "Latitude", "Longitude" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto.Parser, new[]{ "EncounterId", "LastModifiedMs", "Latitude", "Longitude", "SpawnPointId", "Pokemon", "TimeTillHiddenMs" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto.Types.Pokemon), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto.Types.Pokemon.Parser, new[]{ "Id", "PokemonId" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto), global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto.Parser, new[]{ "PokedexNumber", "DistanceMeters", "EncounterId" }, null, null, null)})})
-          }));
-    }
-    #endregion
-
-  }
-  #region Messages
-  public sealed partial class MapObjectsResponse : pb::IMessage<MapObjectsResponse> {
-    private static readonly pb::MessageParser<MapObjectsResponse> _parser = new pb::MessageParser<MapObjectsResponse>(() => new MapObjectsResponse());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<MapObjectsResponse> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponseReflection.Descriptor.MessageTypes[0]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public MapObjectsResponse() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public MapObjectsResponse(MapObjectsResponse other) : this() {
-      unknown1_ = other.unknown1_;
-      unknown2_ = other.unknown2_;
-      apiUrl_ = other.apiUrl_;
-      Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
-      Unknown7 = other.unknown7_ != null ? other.Unknown7.Clone() : null;
-      payload_ = other.payload_.Clone();
-      errorMessage_ = other.errorMessage_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public MapObjectsResponse Clone() {
-      return new MapObjectsResponse(this);
-    }
-
-    /// <summary>Field number for the "unknown1" field.</summary>
-    public const int Unknown1FieldNumber = 1;
-    private int unknown1_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Unknown1 {
-      get { return unknown1_; }
-      set {
-        unknown1_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown2" field.</summary>
-    public const int Unknown2FieldNumber = 2;
-    private long unknown2_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public long Unknown2 {
-      get { return unknown2_; }
-      set {
-        unknown2_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "api_url" field.</summary>
-    public const int ApiUrlFieldNumber = 3;
-    private string apiUrl_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string ApiUrl {
-      get { return apiUrl_; }
-      set {
-        apiUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "unknown6" field.</summary>
-    public const int Unknown6FieldNumber = 6;
-    private global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6 unknown6_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6 Unknown6 {
-      get { return unknown6_; }
-      set {
-        unknown6_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown7" field.</summary>
-    public const int Unknown7FieldNumber = 7;
-    private global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown7 unknown7_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown7 Unknown7 {
-      get { return unknown7_; }
-      set {
-        unknown7_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "payload" field.</summary>
-    public const int PayloadFieldNumber = 100;
-    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload> _repeated_payload_codec
-        = pb::FieldCodec.ForMessage(802, global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Parser);
-    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload> payload_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload>();
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload> Payload {
-      get { return payload_; }
-    }
-
-    /// <summary>Field number for the "errorMessage" field.</summary>
-    public const int ErrorMessageFieldNumber = 101;
-    private string errorMessage_ = "";
-    /// <summary>
-    /// Should be moved to an error-proto file if error is always 101 field
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string ErrorMessage {
-      get { return errorMessage_; }
-      set {
-        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as MapObjectsResponse);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(MapObjectsResponse other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Unknown1 != other.Unknown1) return false;
-      if (Unknown2 != other.Unknown2) return false;
-      if (ApiUrl != other.ApiUrl) return false;
-      if (!object.Equals(Unknown6, other.Unknown6)) return false;
-      if (!object.Equals(Unknown7, other.Unknown7)) return false;
-      if(!payload_.Equals(other.payload_)) return false;
-      if (ErrorMessage != other.ErrorMessage) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-      if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
-      if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
-      if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
-      if (unknown7_ != null) hash ^= Unknown7.GetHashCode();
-      hash ^= payload_.GetHashCode();
-      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Unknown1 != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        output.WriteRawTag(16);
-        output.WriteInt64(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        output.WriteRawTag(50);
-        output.WriteMessage(Unknown6);
-      }
-      if (unknown7_ != null) {
-        output.WriteRawTag(58);
-        output.WriteMessage(Unknown7);
-      }
-      payload_.WriteTo(output, _repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        output.WriteRawTag(170, 6);
-        output.WriteString(ErrorMessage);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Unknown1 != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
-      }
-      if (unknown7_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown7);
-      }
-      size += payload_.CalculateSize(_repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        size += 2 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(MapObjectsResponse other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Unknown1 != 0) {
-        Unknown1 = other.Unknown1;
-      }
-      if (other.Unknown2 != 0L) {
-        Unknown2 = other.Unknown2;
-      }
-      if (other.ApiUrl.Length != 0) {
-        ApiUrl = other.ApiUrl;
-      }
-      if (other.unknown6_ != null) {
-        if (unknown6_ == null) {
-          unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6();
-        }
-        Unknown6.MergeFrom(other.Unknown6);
-      }
-      if (other.unknown7_ != null) {
-        if (unknown7_ == null) {
-          unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown7();
-        }
-        Unknown7.MergeFrom(other.Unknown7);
-      }
-      payload_.Add(other.payload_);
-      if (other.ErrorMessage.Length != 0) {
-        ErrorMessage = other.ErrorMessage;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Unknown1 = input.ReadInt32();
-            break;
-          }
-          case 16: {
-            Unknown2 = input.ReadInt64();
-            break;
-          }
-          case 26: {
-            ApiUrl = input.ReadString();
-            break;
-          }
-          case 50: {
-            if (unknown6_ == null) {
-              unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6();
-            }
-            input.ReadMessage(unknown6_);
-            break;
-          }
-          case 58: {
-            if (unknown7_ == null) {
-              unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown7();
-            }
-            input.ReadMessage(unknown7_);
-            break;
-          }
-          case 802: {
-            payload_.AddEntriesFrom(input, _repeated_payload_codec);
-            break;
-          }
-          case 810: {
-            ErrorMessage = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-    #region Nested types
-    /// <summary>Container for nested types declared in the MapObjectsResponse message type.</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static partial class Types {
-      public sealed partial class Unknown6 : pb::IMessage<Unknown6> {
-        private static readonly pb::MessageParser<Unknown6> _parser = new pb::MessageParser<Unknown6>(() => new Unknown6());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<Unknown6> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Descriptor.NestedTypes[0]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown6() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown6(Unknown6 other) : this() {
-          unknown1_ = other.unknown1_;
-          Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown6 Clone() {
-          return new Unknown6(this);
-        }
-
-        /// <summary>Field number for the "unknown1" field.</summary>
-        public const int Unknown1FieldNumber = 1;
-        private int unknown1_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Unknown1 {
-          get { return unknown1_; }
-          set {
-            unknown1_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown2" field.</summary>
-        public const int Unknown2FieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6.Types.Unknown2 unknown2_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6.Types.Unknown2 Unknown2 {
-          get { return unknown2_; }
-          set {
-            unknown2_ = value;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as Unknown6);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(Unknown6 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown1 != other.Unknown1) return false;
-          if (!object.Equals(Unknown2, other.Unknown2)) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-          if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown1 != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Unknown1);
-          }
-          if (unknown2_ != null) {
-            output.WriteRawTag(18);
-            output.WriteMessage(Unknown2);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown1 != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-          }
-          if (unknown2_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(Unknown6 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown1 != 0) {
-            Unknown1 = other.Unknown1;
-          }
-          if (other.unknown2_ != null) {
-            if (unknown2_ == null) {
-              unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6.Types.Unknown2();
-            }
-            Unknown2.MergeFrom(other.Unknown2);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Unknown1 = input.ReadInt32();
-                break;
-              }
-              case 18: {
-                if (unknown2_ == null) {
-                  unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6.Types.Unknown2();
-                }
-                input.ReadMessage(unknown2_);
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static partial class Types {
-          public sealed partial class Unknown2 : pb::IMessage<Unknown2> {
-            private static readonly pb::MessageParser<Unknown2> _parser = new pb::MessageParser<Unknown2>(() => new Unknown2());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<Unknown2> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Unknown6.Descriptor.NestedTypes[0]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public Unknown2() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public Unknown2(Unknown2 other) : this() {
-              unknown1_ = other.unknown1_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public Unknown2 Clone() {
-              return new Unknown2(this);
-            }
-
-            /// <summary>Field number for the "unknown1" field.</summary>
-            public const int Unknown1FieldNumber = 1;
-            private pb::ByteString unknown1_ = pb::ByteString.Empty;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public pb::ByteString Unknown1 {
-              get { return unknown1_; }
-              set {
-                unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as Unknown2);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(Unknown2 other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Unknown1 != other.Unknown1) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Unknown1.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteBytes(Unknown1);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (Unknown1.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(Unknown2 other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Unknown1.Length != 0) {
-                Unknown1 = other.Unknown1;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    Unknown1 = input.ReadBytes();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-        }
-        #endregion
-
-      }
-
-      public sealed partial class Unknown7 : pb::IMessage<Unknown7> {
-        private static readonly pb::MessageParser<Unknown7> _parser = new pb::MessageParser<Unknown7>(() => new Unknown7());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<Unknown7> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Descriptor.NestedTypes[1]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown7() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown7(Unknown7 other) : this() {
-          unknown71_ = other.unknown71_;
-          unknown72_ = other.unknown72_;
-          unknown73_ = other.unknown73_;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Unknown7 Clone() {
-          return new Unknown7(this);
-        }
-
-        /// <summary>Field number for the "unknown71" field.</summary>
-        public const int Unknown71FieldNumber = 1;
-        private pb::ByteString unknown71_ = pb::ByteString.Empty;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public pb::ByteString Unknown71 {
-          get { return unknown71_; }
-          set {
-            unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "unknown72" field.</summary>
-        public const int Unknown72FieldNumber = 2;
-        private long unknown72_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public long Unknown72 {
-          get { return unknown72_; }
-          set {
-            unknown72_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown73" field.</summary>
-        public const int Unknown73FieldNumber = 3;
-        private pb::ByteString unknown73_ = pb::ByteString.Empty;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public pb::ByteString Unknown73 {
-          get { return unknown73_; }
-          set {
-            unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as Unknown7);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(Unknown7 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown71 != other.Unknown71) return false;
-          if (Unknown72 != other.Unknown72) return false;
-          if (Unknown73 != other.Unknown73) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
-          if (Unknown72 != 0L) hash ^= Unknown72.GetHashCode();
-          if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown71.Length != 0) {
-            output.WriteRawTag(10);
-            output.WriteBytes(Unknown71);
-          }
-          if (Unknown72 != 0L) {
-            output.WriteRawTag(16);
-            output.WriteInt64(Unknown72);
-          }
-          if (Unknown73.Length != 0) {
-            output.WriteRawTag(26);
-            output.WriteBytes(Unknown73);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown71.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
-          }
-          if (Unknown72 != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown72);
-          }
-          if (Unknown73.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(Unknown7 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown71.Length != 0) {
-            Unknown71 = other.Unknown71;
-          }
-          if (other.Unknown72 != 0L) {
-            Unknown72 = other.Unknown72;
-          }
-          if (other.Unknown73.Length != 0) {
-            Unknown73 = other.Unknown73;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 10: {
-                Unknown71 = input.ReadBytes();
-                break;
-              }
-              case 16: {
-                Unknown72 = input.ReadInt64();
-                break;
-              }
-              case 26: {
-                Unknown73 = input.ReadBytes();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      public sealed partial class Payload : pb::IMessage<Payload> {
-        private static readonly pb::MessageParser<Payload> _parser = new pb::MessageParser<Payload>(() => new Payload());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<Payload> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Descriptor.NestedTypes[2]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Payload() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Payload(Payload other) : this() {
-          profile_ = other.profile_.Clone();
-          unknownnumber_ = other.unknownnumber_;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public Payload Clone() {
-          return new Payload(this);
-        }
-
-        /// <summary>Field number for the "profile" field.</summary>
-        public const int ProfileFieldNumber = 1;
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientMapCell> _repeated_profile_codec
-            = pb::FieldCodec.ForMessage(10, global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientMapCell.Parser);
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientMapCell> profile_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientMapCell>();
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientMapCell> Profile {
-          get { return profile_; }
-        }
-
-        /// <summary>Field number for the "unknownnumber" field.</summary>
-        public const int UnknownnumberFieldNumber = 2;
-        private int unknownnumber_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Unknownnumber {
-          get { return unknownnumber_; }
-          set {
-            unknownnumber_ = value;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as Payload);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(Payload other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if(!profile_.Equals(other.profile_)) return false;
-          if (Unknownnumber != other.Unknownnumber) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          hash ^= profile_.GetHashCode();
-          if (Unknownnumber != 0) hash ^= Unknownnumber.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          profile_.WriteTo(output, _repeated_profile_codec);
-          if (Unknownnumber != 0) {
-            output.WriteRawTag(16);
-            output.WriteInt32(Unknownnumber);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          size += profile_.CalculateSize(_repeated_profile_codec);
-          if (Unknownnumber != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknownnumber);
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(Payload other) {
-          if (other == null) {
-            return;
-          }
-          profile_.Add(other.profile_);
-          if (other.Unknownnumber != 0) {
-            Unknownnumber = other.Unknownnumber;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 10: {
-                profile_.AddEntriesFrom(input, _repeated_profile_codec);
-                break;
-              }
-              case 16: {
-                Unknownnumber = input.ReadInt32();
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the Payload message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static partial class Types {
-          public enum PokemonTypes {
-            [pbr::OriginalName("POKEMON_UNSET")] PokemonUnset = 0,
-            [pbr::OriginalName("V0001_POKEMON_BULBASAUR")] V0001PokemonBulbasaur = 1,
-            [pbr::OriginalName("V0002_POKEMON_IVYSAUR")] V0002PokemonIvysaur = 2,
-            [pbr::OriginalName("V0003_POKEMON_VENUSAUR")] V0003PokemonVenusaur = 3,
-            [pbr::OriginalName("V0004_POKEMON_CHARMANDER")] V0004PokemonCharmander = 4,
-            [pbr::OriginalName("V0005_POKEMON_CHARMELEON")] V0005PokemonCharmeleon = 5,
-            [pbr::OriginalName("V0006_POKEMON_CHARIZARD")] V0006PokemonCharizard = 6,
-            [pbr::OriginalName("V0007_POKEMON_SQUIRTLE")] V0007PokemonSquirtle = 7,
-            [pbr::OriginalName("V0008_POKEMON_WARTORTLE")] V0008PokemonWartortle = 8,
-            [pbr::OriginalName("V0009_POKEMON_BLASTOISE")] V0009PokemonBlastoise = 9,
-            [pbr::OriginalName("V0010_POKEMON_CATERPIE")] V0010PokemonCaterpie = 10,
-            [pbr::OriginalName("V0011_POKEMON_METAPOD")] V0011PokemonMetapod = 11,
-            [pbr::OriginalName("V0012_POKEMON_BUTTERFREE")] V0012PokemonButterfree = 12,
-            [pbr::OriginalName("V0013_POKEMON_WEEDLE")] V0013PokemonWeedle = 13,
-            [pbr::OriginalName("V0014_POKEMON_KAKUNA")] V0014PokemonKakuna = 14,
-            [pbr::OriginalName("V0015_POKEMON_BEEDRILL")] V0015PokemonBeedrill = 15,
-            [pbr::OriginalName("V0016_POKEMON_PIDGEY")] V0016PokemonPidgey = 16,
-            [pbr::OriginalName("V0017_POKEMON_PIDGEOTTO")] V0017PokemonPidgeotto = 17,
-            [pbr::OriginalName("V0018_POKEMON_PIDGEOT")] V0018PokemonPidgeot = 18,
-            [pbr::OriginalName("V0019_POKEMON_RATTATA")] V0019PokemonRattata = 19,
-            [pbr::OriginalName("V0020_POKEMON_RATICATE")] V0020PokemonRaticate = 20,
-            [pbr::OriginalName("V0021_POKEMON_SPEAROW")] V0021PokemonSpearow = 21,
-            [pbr::OriginalName("V0022_POKEMON_FEAROW")] V0022PokemonFearow = 22,
-            [pbr::OriginalName("V0023_POKEMON_EKANS")] V0023PokemonEkans = 23,
-            [pbr::OriginalName("V0024_POKEMON_ARBOK")] V0024PokemonArbok = 24,
-            [pbr::OriginalName("V0025_POKEMON_PIKACHU")] V0025PokemonPikachu = 25,
-            [pbr::OriginalName("V0026_POKEMON_RAICHU")] V0026PokemonRaichu = 26,
-            [pbr::OriginalName("V0027_POKEMON_SANDSHREW")] V0027PokemonSandshrew = 27,
-            [pbr::OriginalName("V0028_POKEMON_SANDSLASH")] V0028PokemonSandslash = 28,
-            [pbr::OriginalName("V0029_POKEMON_NIDORAN")] V0029PokemonNidoran = 29,
-            [pbr::OriginalName("V0030_POKEMON_NIDORINA")] V0030PokemonNidorina = 30,
-            [pbr::OriginalName("V0031_POKEMON_NIDOQUEEN")] V0031PokemonNidoqueen = 31,
-            [pbr::OriginalName("V0032_POKEMON_NIDORAN")] V0032PokemonNidoran = 32,
-            [pbr::OriginalName("V0033_POKEMON_NIDORINO")] V0033PokemonNidorino = 33,
-            [pbr::OriginalName("V0034_POKEMON_NIDOKING")] V0034PokemonNidoking = 34,
-            [pbr::OriginalName("V0035_POKEMON_CLEFAIRY")] V0035PokemonClefairy = 35,
-            [pbr::OriginalName("V0036_POKEMON_CLEFABLE")] V0036PokemonClefable = 36,
-            [pbr::OriginalName("V0037_POKEMON_VULPIX")] V0037PokemonVulpix = 37,
-            [pbr::OriginalName("V0038_POKEMON_NINETALES")] V0038PokemonNinetales = 38,
-            [pbr::OriginalName("V0039_POKEMON_JIGGLYPUFF")] V0039PokemonJigglypuff = 39,
-            [pbr::OriginalName("V0040_POKEMON_WIGGLYTUFF")] V0040PokemonWigglytuff = 40,
-            [pbr::OriginalName("V0041_POKEMON_ZUBAT")] V0041PokemonZubat = 41,
-            [pbr::OriginalName("V0042_POKEMON_GOLBAT")] V0042PokemonGolbat = 42,
-            [pbr::OriginalName("V0043_POKEMON_ODDISH")] V0043PokemonOddish = 43,
-            [pbr::OriginalName("V0044_POKEMON_GLOOM")] V0044PokemonGloom = 44,
-            [pbr::OriginalName("V0045_POKEMON_VILEPLUME")] V0045PokemonVileplume = 45,
-            [pbr::OriginalName("V0046_POKEMON_PARAS")] V0046PokemonParas = 46,
-            [pbr::OriginalName("V0047_POKEMON_PARASECT")] V0047PokemonParasect = 47,
-            [pbr::OriginalName("V0048_POKEMON_VENONAT")] V0048PokemonVenonat = 48,
-            [pbr::OriginalName("V0049_POKEMON_VENOMOTH")] V0049PokemonVenomoth = 49,
-            [pbr::OriginalName("V0050_POKEMON_DIGLETT")] V0050PokemonDiglett = 50,
-            [pbr::OriginalName("V0051_POKEMON_DUGTRIO")] V0051PokemonDugtrio = 51,
-            [pbr::OriginalName("V0052_POKEMON_MEOWTH")] V0052PokemonMeowth = 52,
-            [pbr::OriginalName("V0053_POKEMON_PERSIAN")] V0053PokemonPersian = 53,
-            [pbr::OriginalName("V0054_POKEMON_PSYDUCK")] V0054PokemonPsyduck = 54,
-            [pbr::OriginalName("V0055_POKEMON_GOLDUCK")] V0055PokemonGolduck = 55,
-            [pbr::OriginalName("V0056_POKEMON_MANKEY")] V0056PokemonMankey = 56,
-            [pbr::OriginalName("V0057_POKEMON_PRIMEAPE")] V0057PokemonPrimeape = 57,
-            [pbr::OriginalName("V0058_POKEMON_GROWLITHE")] V0058PokemonGrowlithe = 58,
-            [pbr::OriginalName("V0059_POKEMON_ARCANINE")] V0059PokemonArcanine = 59,
-            [pbr::OriginalName("V0060_POKEMON_POLIWAG")] V0060PokemonPoliwag = 60,
-            [pbr::OriginalName("V0061_POKEMON_POLIWHIRL")] V0061PokemonPoliwhirl = 61,
-            [pbr::OriginalName("V0062_POKEMON_POLIWRATH")] V0062PokemonPoliwrath = 62,
-            [pbr::OriginalName("V0063_POKEMON_ABRA")] V0063PokemonAbra = 63,
-            [pbr::OriginalName("V0064_POKEMON_KADABRA")] V0064PokemonKadabra = 64,
-            [pbr::OriginalName("V0065_POKEMON_ALAKAZAM")] V0065PokemonAlakazam = 65,
-            [pbr::OriginalName("V0066_POKEMON_MACHOP")] V0066PokemonMachop = 66,
-            [pbr::OriginalName("V0067_POKEMON_MACHOKE")] V0067PokemonMachoke = 67,
-            [pbr::OriginalName("V0068_POKEMON_MACHAMP")] V0068PokemonMachamp = 68,
-            [pbr::OriginalName("V0069_POKEMON_BELLSPROUT")] V0069PokemonBellsprout = 69,
-            [pbr::OriginalName("V0070_POKEMON_WEEPINBELL")] V0070PokemonWeepinbell = 70,
-            [pbr::OriginalName("V0071_POKEMON_VICTREEBEL")] V0071PokemonVictreebel = 71,
-            [pbr::OriginalName("V0072_POKEMON_TENTACOOL")] V0072PokemonTentacool = 72,
-            [pbr::OriginalName("V0073_POKEMON_TENTACRUEL")] V0073PokemonTentacruel = 73,
-            [pbr::OriginalName("V0074_POKEMON_GEODUDE")] V0074PokemonGeodude = 74,
-            [pbr::OriginalName("V0075_POKEMON_GRAVELER")] V0075PokemonGraveler = 75,
-            [pbr::OriginalName("V0076_POKEMON_GOLEM")] V0076PokemonGolem = 76,
-            [pbr::OriginalName("V0077_POKEMON_PONYTA")] V0077PokemonPonyta = 77,
-            [pbr::OriginalName("V0078_POKEMON_RAPIDASH")] V0078PokemonRapidash = 78,
-            [pbr::OriginalName("V0079_POKEMON_SLOWPOKE")] V0079PokemonSlowpoke = 79,
-            [pbr::OriginalName("V0080_POKEMON_SLOWBRO")] V0080PokemonSlowbro = 80,
-            [pbr::OriginalName("V0081_POKEMON_MAGNEMITE")] V0081PokemonMagnemite = 81,
-            [pbr::OriginalName("V0082_POKEMON_MAGNETON")] V0082PokemonMagneton = 82,
-            [pbr::OriginalName("V0083_POKEMON_FARFETCHD")] V0083PokemonFarfetchd = 83,
-            [pbr::OriginalName("V0084_POKEMON_DODUO")] V0084PokemonDoduo = 84,
-            [pbr::OriginalName("V0085_POKEMON_DODRIO")] V0085PokemonDodrio = 85,
-            [pbr::OriginalName("V0086_POKEMON_SEEL")] V0086PokemonSeel = 86,
-            [pbr::OriginalName("V0087_POKEMON_DEWGONG")] V0087PokemonDewgong = 87,
-            [pbr::OriginalName("V0088_POKEMON_GRIMER")] V0088PokemonGrimer = 88,
-            [pbr::OriginalName("V0089_POKEMON_MUK")] V0089PokemonMuk = 89,
-            [pbr::OriginalName("V0090_POKEMON_SHELLDER")] V0090PokemonShellder = 90,
-            [pbr::OriginalName("V0091_POKEMON_CLOYSTER")] V0091PokemonCloyster = 91,
-            [pbr::OriginalName("V0092_POKEMON_GASTLY")] V0092PokemonGastly = 92,
-            [pbr::OriginalName("V0093_POKEMON_HAUNTER")] V0093PokemonHaunter = 93,
-            [pbr::OriginalName("V0094_POKEMON_GENGAR")] V0094PokemonGengar = 94,
-            [pbr::OriginalName("V0095_POKEMON_ONIX")] V0095PokemonOnix = 95,
-            [pbr::OriginalName("V0096_POKEMON_DROWZEE")] V0096PokemonDrowzee = 96,
-            [pbr::OriginalName("V0097_POKEMON_HYPNO")] V0097PokemonHypno = 97,
-            [pbr::OriginalName("V0098_POKEMON_KRABBY")] V0098PokemonKrabby = 98,
-            [pbr::OriginalName("V0099_POKEMON_KINGLER")] V0099PokemonKingler = 99,
-            [pbr::OriginalName("V0100_POKEMON_VOLTORB")] V0100PokemonVoltorb = 100,
-            [pbr::OriginalName("V0101_POKEMON_ELECTRODE")] V0101PokemonElectrode = 101,
-            [pbr::OriginalName("V0102_POKEMON_EXEGGCUTE")] V0102PokemonExeggcute = 102,
-            [pbr::OriginalName("V0103_POKEMON_EXEGGUTOR")] V0103PokemonExeggutor = 103,
-            [pbr::OriginalName("V0104_POKEMON_CUBONE")] V0104PokemonCubone = 104,
-            [pbr::OriginalName("V0105_POKEMON_MAROWAK")] V0105PokemonMarowak = 105,
-            [pbr::OriginalName("V0106_POKEMON_HITMONLEE")] V0106PokemonHitmonlee = 106,
-            [pbr::OriginalName("V0107_POKEMON_HITMONCHAN")] V0107PokemonHitmonchan = 107,
-            [pbr::OriginalName("V0108_POKEMON_LICKITUNG")] V0108PokemonLickitung = 108,
-            [pbr::OriginalName("V0109_POKEMON_KOFFING")] V0109PokemonKoffing = 109,
-            [pbr::OriginalName("V0110_POKEMON_WEEZING")] V0110PokemonWeezing = 110,
-            [pbr::OriginalName("V0111_POKEMON_RHYHORN")] V0111PokemonRhyhorn = 111,
-            [pbr::OriginalName("V0112_POKEMON_RHYDON")] V0112PokemonRhydon = 112,
-            [pbr::OriginalName("V0113_POKEMON_CHANSEY")] V0113PokemonChansey = 113,
-            [pbr::OriginalName("V0114_POKEMON_TANGELA")] V0114PokemonTangela = 114,
-            [pbr::OriginalName("V0115_POKEMON_KANGASKHAN")] V0115PokemonKangaskhan = 115,
-            [pbr::OriginalName("V0116_POKEMON_HORSEA")] V0116PokemonHorsea = 116,
-            [pbr::OriginalName("V0117_POKEMON_SEADRA")] V0117PokemonSeadra = 117,
-            [pbr::OriginalName("V0118_POKEMON_GOLDEEN")] V0118PokemonGoldeen = 118,
-            [pbr::OriginalName("V0119_POKEMON_SEAKING")] V0119PokemonSeaking = 119,
-            [pbr::OriginalName("V0120_POKEMON_STARYU")] V0120PokemonStaryu = 120,
-            [pbr::OriginalName("V0121_POKEMON_STARMIE")] V0121PokemonStarmie = 121,
-            [pbr::OriginalName("V0122_POKEMON_MR_MIME")] V0122PokemonMrMime = 122,
-            [pbr::OriginalName("V0123_POKEMON_SCYTHER")] V0123PokemonScyther = 123,
-            [pbr::OriginalName("V0124_POKEMON_JYNX")] V0124PokemonJynx = 124,
-            [pbr::OriginalName("V0125_POKEMON_ELECTABUZZ")] V0125PokemonElectabuzz = 125,
-            [pbr::OriginalName("V0126_POKEMON_MAGMAR")] V0126PokemonMagmar = 126,
-            [pbr::OriginalName("V0127_POKEMON_PINSIR")] V0127PokemonPinsir = 127,
-            [pbr::OriginalName("V0128_POKEMON_TAUROS")] V0128PokemonTauros = 128,
-            [pbr::OriginalName("V0129_POKEMON_MAGIKARP")] V0129PokemonMagikarp = 129,
-            [pbr::OriginalName("V0130_POKEMON_GYARADOS")] V0130PokemonGyarados = 130,
-            [pbr::OriginalName("V0131_POKEMON_LAPRAS")] V0131PokemonLapras = 131,
-            [pbr::OriginalName("V0132_POKEMON_DITTO")] V0132PokemonDitto = 132,
-            [pbr::OriginalName("V0133_POKEMON_EEVEE")] V0133PokemonEevee = 133,
-            [pbr::OriginalName("V0134_POKEMON_VAPOREON")] V0134PokemonVaporeon = 134,
-            [pbr::OriginalName("V0135_POKEMON_JOLTEON")] V0135PokemonJolteon = 135,
-            [pbr::OriginalName("V0136_POKEMON_FLAREON")] V0136PokemonFlareon = 136,
-            [pbr::OriginalName("V0137_POKEMON_PORYGON")] V0137PokemonPorygon = 137,
-            [pbr::OriginalName("V0138_POKEMON_OMANYTE")] V0138PokemonOmanyte = 138,
-            [pbr::OriginalName("V0139_POKEMON_OMASTAR")] V0139PokemonOmastar = 139,
-            [pbr::OriginalName("V0140_POKEMON_KABUTO")] V0140PokemonKabuto = 140,
-            [pbr::OriginalName("V0141_POKEMON_KABUTOPS")] V0141PokemonKabutops = 141,
-            [pbr::OriginalName("V0142_POKEMON_AERODACTYL")] V0142PokemonAerodactyl = 142,
-            [pbr::OriginalName("V0143_POKEMON_SNORLAX")] V0143PokemonSnorlax = 143,
-            [pbr::OriginalName("V0144_POKEMON_ARTICUNO")] V0144PokemonArticuno = 144,
-            [pbr::OriginalName("V0145_POKEMON_ZAPDOS")] V0145PokemonZapdos = 145,
-            [pbr::OriginalName("V0146_POKEMON_MOLTRES")] V0146PokemonMoltres = 146,
-            [pbr::OriginalName("V0147_POKEMON_DRATINI")] V0147PokemonDratini = 147,
-            [pbr::OriginalName("V0148_POKEMON_DRAGONAIR")] V0148PokemonDragonair = 148,
-            [pbr::OriginalName("V0149_POKEMON_DRAGONITE")] V0149PokemonDragonite = 149,
-            [pbr::OriginalName("V0150_POKEMON_MEWTWO")] V0150PokemonMewtwo = 150,
-            [pbr::OriginalName("V0151_POKEMON_MEW")] V0151PokemonMew = 151,
-          }
-
-          public sealed partial class ClientMapCell : pb::IMessage<ClientMapCell> {
-            private static readonly pb::MessageParser<ClientMapCell> _parser = new pb::MessageParser<ClientMapCell>(() => new ClientMapCell());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<ClientMapCell> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Descriptor.NestedTypes[0]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ClientMapCell() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ClientMapCell(ClientMapCell other) : this() {
-              s2CellId_ = other.s2CellId_;
-              asOfTimeMs_ = other.asOfTimeMs_;
-              fort_ = other.fort_.Clone();
-              spawnPoint_ = other.spawnPoint_.Clone();
-              wildPokemon_ = other.wildPokemon_.Clone();
-              isTruncatedList_ = other.isTruncatedList_;
-              fortSummary_ = other.fortSummary_.Clone();
-              decimatedSpawnPoint_ = other.decimatedSpawnPoint_.Clone();
-              mapPokemon_ = other.mapPokemon_.Clone();
-              nearbyPokemon_ = other.nearbyPokemon_.Clone();
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ClientMapCell Clone() {
-              return new ClientMapCell(this);
-            }
-
-            /// <summary>Field number for the "S2CellId" field.</summary>
-            public const int S2CellIdFieldNumber = 1;
-            private ulong s2CellId_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ulong S2CellId {
-              get { return s2CellId_; }
-              set {
-                s2CellId_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "AsOfTimeMs" field.</summary>
-            public const int AsOfTimeMsFieldNumber = 2;
-            private long asOfTimeMs_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long AsOfTimeMs {
-              get { return asOfTimeMs_; }
-              set {
-                asOfTimeMs_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Fort" field.</summary>
-            public const int FortFieldNumber = 3;
-            private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonFortProto> _repeated_fort_codec
-                = pb::FieldCodec.ForMessage(26, global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonFortProto.Parser);
-            private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonFortProto> fort_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonFortProto>();
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonFortProto> Fort {
-              get { return fort_; }
-            }
-
-            /// <summary>Field number for the "SpawnPoint" field.</summary>
-            public const int SpawnPointFieldNumber = 4;
-            private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto> _repeated_spawnPoint_codec
-                = pb::FieldCodec.ForMessage(34, global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto.Parser);
-            private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto> spawnPoint_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto>();
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto> SpawnPoint {
-              get { return spawnPoint_; }
-            }
-
-            /// <summary>Field number for the "WildPokemon" field.</summary>
-            public const int WildPokemonFieldNumber = 5;
-            private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto> _repeated_wildPokemon_codec
-                = pb::FieldCodec.ForMessage(42, global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto.Parser);
-            private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto> wildPokemon_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto>();
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto> WildPokemon {
-              get { return wildPokemon_; }
-            }
-
-            /// <summary>Field number for the "IsTruncatedList" field.</summary>
-            public const int IsTruncatedListFieldNumber = 7;
-            private bool isTruncatedList_;
-            /// <summary>
-            /// unknown DeletedObject = 6;
-            /// </summary>
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool IsTruncatedList {
-              get { return isTruncatedList_; }
-              set {
-                isTruncatedList_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "FortSummary" field.</summary>
-            public const int FortSummaryFieldNumber = 8;
-            private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonSummaryFortProto> _repeated_fortSummary_codec
-                = pb::FieldCodec.ForMessage(66, global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonSummaryFortProto.Parser);
-            private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonSummaryFortProto> fortSummary_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonSummaryFortProto>();
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonSummaryFortProto> FortSummary {
-              get { return fortSummary_; }
-            }
-
-            /// <summary>Field number for the "DecimatedSpawnPoint" field.</summary>
-            public const int DecimatedSpawnPointFieldNumber = 9;
-            private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto> _repeated_decimatedSpawnPoint_codec
-                = pb::FieldCodec.ForMessage(74, global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto.Parser);
-            private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto> decimatedSpawnPoint_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto>();
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.ClientSpawnPointProto> DecimatedSpawnPoint {
-              get { return decimatedSpawnPoint_; }
-            }
-
-            /// <summary>Field number for the "MapPokemon" field.</summary>
-            public const int MapPokemonFieldNumber = 10;
-            private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.MapPokemonProto> _repeated_mapPokemon_codec
-                = pb::FieldCodec.ForMessage(82, global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.MapPokemonProto.Parser);
-            private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.MapPokemonProto> mapPokemon_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.MapPokemonProto>();
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.MapPokemonProto> MapPokemon {
-              get { return mapPokemon_; }
-            }
-
-            /// <summary>Field number for the "NearbyPokemon" field.</summary>
-            public const int NearbyPokemonFieldNumber = 11;
-            private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto> _repeated_nearbyPokemon_codec
-                = pb::FieldCodec.ForMessage(90, global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto.Parser);
-            private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto> nearbyPokemon_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto>();
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto> NearbyPokemon {
-              get { return nearbyPokemon_; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as ClientMapCell);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(ClientMapCell other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (S2CellId != other.S2CellId) return false;
-              if (AsOfTimeMs != other.AsOfTimeMs) return false;
-              if(!fort_.Equals(other.fort_)) return false;
-              if(!spawnPoint_.Equals(other.spawnPoint_)) return false;
-              if(!wildPokemon_.Equals(other.wildPokemon_)) return false;
-              if (IsTruncatedList != other.IsTruncatedList) return false;
-              if(!fortSummary_.Equals(other.fortSummary_)) return false;
-              if(!decimatedSpawnPoint_.Equals(other.decimatedSpawnPoint_)) return false;
-              if(!mapPokemon_.Equals(other.mapPokemon_)) return false;
-              if(!nearbyPokemon_.Equals(other.nearbyPokemon_)) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (S2CellId != 0UL) hash ^= S2CellId.GetHashCode();
-              if (AsOfTimeMs != 0L) hash ^= AsOfTimeMs.GetHashCode();
-              hash ^= fort_.GetHashCode();
-              hash ^= spawnPoint_.GetHashCode();
-              hash ^= wildPokemon_.GetHashCode();
-              if (IsTruncatedList != false) hash ^= IsTruncatedList.GetHashCode();
-              hash ^= fortSummary_.GetHashCode();
-              hash ^= decimatedSpawnPoint_.GetHashCode();
-              hash ^= mapPokemon_.GetHashCode();
-              hash ^= nearbyPokemon_.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (S2CellId != 0UL) {
-                output.WriteRawTag(8);
-                output.WriteUInt64(S2CellId);
-              }
-              if (AsOfTimeMs != 0L) {
-                output.WriteRawTag(16);
-                output.WriteInt64(AsOfTimeMs);
-              }
-              fort_.WriteTo(output, _repeated_fort_codec);
-              spawnPoint_.WriteTo(output, _repeated_spawnPoint_codec);
-              wildPokemon_.WriteTo(output, _repeated_wildPokemon_codec);
-              if (IsTruncatedList != false) {
-                output.WriteRawTag(56);
-                output.WriteBool(IsTruncatedList);
-              }
-              fortSummary_.WriteTo(output, _repeated_fortSummary_codec);
-              decimatedSpawnPoint_.WriteTo(output, _repeated_decimatedSpawnPoint_codec);
-              mapPokemon_.WriteTo(output, _repeated_mapPokemon_codec);
-              nearbyPokemon_.WriteTo(output, _repeated_nearbyPokemon_codec);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (S2CellId != 0UL) {
-                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(S2CellId);
-              }
-              if (AsOfTimeMs != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(AsOfTimeMs);
-              }
-              size += fort_.CalculateSize(_repeated_fort_codec);
-              size += spawnPoint_.CalculateSize(_repeated_spawnPoint_codec);
-              size += wildPokemon_.CalculateSize(_repeated_wildPokemon_codec);
-              if (IsTruncatedList != false) {
-                size += 1 + 1;
-              }
-              size += fortSummary_.CalculateSize(_repeated_fortSummary_codec);
-              size += decimatedSpawnPoint_.CalculateSize(_repeated_decimatedSpawnPoint_codec);
-              size += mapPokemon_.CalculateSize(_repeated_mapPokemon_codec);
-              size += nearbyPokemon_.CalculateSize(_repeated_nearbyPokemon_codec);
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(ClientMapCell other) {
-              if (other == null) {
-                return;
-              }
-              if (other.S2CellId != 0UL) {
-                S2CellId = other.S2CellId;
-              }
-              if (other.AsOfTimeMs != 0L) {
-                AsOfTimeMs = other.AsOfTimeMs;
-              }
-              fort_.Add(other.fort_);
-              spawnPoint_.Add(other.spawnPoint_);
-              wildPokemon_.Add(other.wildPokemon_);
-              if (other.IsTruncatedList != false) {
-                IsTruncatedList = other.IsTruncatedList;
-              }
-              fortSummary_.Add(other.fortSummary_);
-              decimatedSpawnPoint_.Add(other.decimatedSpawnPoint_);
-              mapPokemon_.Add(other.mapPokemon_);
-              nearbyPokemon_.Add(other.nearbyPokemon_);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    S2CellId = input.ReadUInt64();
-                    break;
-                  }
-                  case 16: {
-                    AsOfTimeMs = input.ReadInt64();
-                    break;
-                  }
-                  case 26: {
-                    fort_.AddEntriesFrom(input, _repeated_fort_codec);
-                    break;
-                  }
-                  case 34: {
-                    spawnPoint_.AddEntriesFrom(input, _repeated_spawnPoint_codec);
-                    break;
-                  }
-                  case 42: {
-                    wildPokemon_.AddEntriesFrom(input, _repeated_wildPokemon_codec);
-                    break;
-                  }
-                  case 56: {
-                    IsTruncatedList = input.ReadBool();
-                    break;
-                  }
-                  case 66: {
-                    fortSummary_.AddEntriesFrom(input, _repeated_fortSummary_codec);
-                    break;
-                  }
-                  case 74: {
-                    decimatedSpawnPoint_.AddEntriesFrom(input, _repeated_decimatedSpawnPoint_codec);
-                    break;
-                  }
-                  case 82: {
-                    mapPokemon_.AddEntriesFrom(input, _repeated_mapPokemon_codec);
-                    break;
-                  }
-                  case 90: {
-                    nearbyPokemon_.AddEntriesFrom(input, _repeated_nearbyPokemon_codec);
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class WildPokemon : pb::IMessage<WildPokemon> {
-            private static readonly pb::MessageParser<WildPokemon> _parser = new pb::MessageParser<WildPokemon>(() => new WildPokemon());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<WildPokemon> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Descriptor.NestedTypes[1]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public WildPokemon() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public WildPokemon(WildPokemon other) : this() {
-              uniqueId_ = other.uniqueId_;
-              pokemonId_ = other.pokemonId_;
-              pokemon_ = other.pokemon_.Clone();
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public WildPokemon Clone() {
-              return new WildPokemon(this);
-            }
-
-            /// <summary>Field number for the "UniqueId" field.</summary>
-            public const int UniqueIdFieldNumber = 1;
-            private string uniqueId_ = "";
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public string UniqueId {
-              get { return uniqueId_; }
-              set {
-                uniqueId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            /// <summary>Field number for the "PokemonId" field.</summary>
-            public const int PokemonIdFieldNumber = 2;
-            private string pokemonId_ = "";
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public string PokemonId {
-              get { return pokemonId_; }
-              set {
-                pokemonId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            /// <summary>Field number for the "pokemon" field.</summary>
-            public const int PokemonFieldNumber = 11;
-            private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto> _repeated_pokemon_codec
-                = pb::FieldCodec.ForMessage(90, global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto.Parser);
-            private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto> pokemon_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto>();
-            /// <summary>
-            ///  int64 three = 3;
-            ///  float four = 4;
-            ///  int32 five = 5;
-            ///  unknown six = 6;
-            /// </summary>
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.NearbyPokemonProto> Pokemon {
-              get { return pokemon_; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as WildPokemon);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(WildPokemon other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (UniqueId != other.UniqueId) return false;
-              if (PokemonId != other.PokemonId) return false;
-              if(!pokemon_.Equals(other.pokemon_)) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (UniqueId.Length != 0) hash ^= UniqueId.GetHashCode();
-              if (PokemonId.Length != 0) hash ^= PokemonId.GetHashCode();
-              hash ^= pokemon_.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (UniqueId.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteString(UniqueId);
-              }
-              if (PokemonId.Length != 0) {
-                output.WriteRawTag(18);
-                output.WriteString(PokemonId);
-              }
-              pokemon_.WriteTo(output, _repeated_pokemon_codec);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (UniqueId.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(UniqueId);
-              }
-              if (PokemonId.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(PokemonId);
-              }
-              size += pokemon_.CalculateSize(_repeated_pokemon_codec);
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(WildPokemon other) {
-              if (other == null) {
-                return;
-              }
-              if (other.UniqueId.Length != 0) {
-                UniqueId = other.UniqueId;
-              }
-              if (other.PokemonId.Length != 0) {
-                PokemonId = other.PokemonId;
-              }
-              pokemon_.Add(other.pokemon_);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    UniqueId = input.ReadString();
-                    break;
-                  }
-                  case 18: {
-                    PokemonId = input.ReadString();
-                    break;
-                  }
-                  case 90: {
-                    pokemon_.AddEntriesFrom(input, _repeated_pokemon_codec);
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class MapPokemonProto : pb::IMessage<MapPokemonProto> {
-            private static readonly pb::MessageParser<MapPokemonProto> _parser = new pb::MessageParser<MapPokemonProto>(() => new MapPokemonProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<MapPokemonProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Descriptor.NestedTypes[2]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public MapPokemonProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public MapPokemonProto(MapPokemonProto other) : this() {
-              spawnpointId_ = other.spawnpointId_;
-              encounterId_ = other.encounterId_;
-              pokedexTypeId_ = other.pokedexTypeId_;
-              expirationTimeMs_ = other.expirationTimeMs_;
-              latitude_ = other.latitude_;
-              longitude_ = other.longitude_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public MapPokemonProto Clone() {
-              return new MapPokemonProto(this);
-            }
-
-            /// <summary>Field number for the "SpawnpointId" field.</summary>
-            public const int SpawnpointIdFieldNumber = 1;
-            private string spawnpointId_ = "";
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public string SpawnpointId {
-              get { return spawnpointId_; }
-              set {
-                spawnpointId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            /// <summary>Field number for the "EncounterId" field.</summary>
-            public const int EncounterIdFieldNumber = 2;
-            private ulong encounterId_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ulong EncounterId {
-              get { return encounterId_; }
-              set {
-                encounterId_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "PokedexTypeId" field.</summary>
-            public const int PokedexTypeIdFieldNumber = 3;
-            private global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonTypes pokedexTypeId_ = 0;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonTypes PokedexTypeId {
-              get { return pokedexTypeId_; }
-              set {
-                pokedexTypeId_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "ExpirationTimeMs" field.</summary>
-            public const int ExpirationTimeMsFieldNumber = 4;
-            private long expirationTimeMs_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long ExpirationTimeMs {
-              get { return expirationTimeMs_; }
-              set {
-                expirationTimeMs_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Latitude" field.</summary>
-            public const int LatitudeFieldNumber = 5;
-            private double latitude_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double Latitude {
-              get { return latitude_; }
-              set {
-                latitude_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Longitude" field.</summary>
-            public const int LongitudeFieldNumber = 6;
-            private double longitude_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double Longitude {
-              get { return longitude_; }
-              set {
-                longitude_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as MapPokemonProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(MapPokemonProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (SpawnpointId != other.SpawnpointId) return false;
-              if (EncounterId != other.EncounterId) return false;
-              if (PokedexTypeId != other.PokedexTypeId) return false;
-              if (ExpirationTimeMs != other.ExpirationTimeMs) return false;
-              if (Latitude != other.Latitude) return false;
-              if (Longitude != other.Longitude) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (SpawnpointId.Length != 0) hash ^= SpawnpointId.GetHashCode();
-              if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-              if (PokedexTypeId != 0) hash ^= PokedexTypeId.GetHashCode();
-              if (ExpirationTimeMs != 0L) hash ^= ExpirationTimeMs.GetHashCode();
-              if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-              if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (SpawnpointId.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteString(SpawnpointId);
-              }
-              if (EncounterId != 0UL) {
-                output.WriteRawTag(17);
-                output.WriteFixed64(EncounterId);
-              }
-              if (PokedexTypeId != 0) {
-                output.WriteRawTag(24);
-                output.WriteEnum((int) PokedexTypeId);
-              }
-              if (ExpirationTimeMs != 0L) {
-                output.WriteRawTag(32);
-                output.WriteInt64(ExpirationTimeMs);
-              }
-              if (Latitude != 0D) {
-                output.WriteRawTag(41);
-                output.WriteDouble(Latitude);
-              }
-              if (Longitude != 0D) {
-                output.WriteRawTag(49);
-                output.WriteDouble(Longitude);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (SpawnpointId.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnpointId);
-              }
-              if (EncounterId != 0UL) {
-                size += 1 + 8;
-              }
-              if (PokedexTypeId != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PokedexTypeId);
-              }
-              if (ExpirationTimeMs != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpirationTimeMs);
-              }
-              if (Latitude != 0D) {
-                size += 1 + 8;
-              }
-              if (Longitude != 0D) {
-                size += 1 + 8;
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(MapPokemonProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.SpawnpointId.Length != 0) {
-                SpawnpointId = other.SpawnpointId;
-              }
-              if (other.EncounterId != 0UL) {
-                EncounterId = other.EncounterId;
-              }
-              if (other.PokedexTypeId != 0) {
-                PokedexTypeId = other.PokedexTypeId;
-              }
-              if (other.ExpirationTimeMs != 0L) {
-                ExpirationTimeMs = other.ExpirationTimeMs;
-              }
-              if (other.Latitude != 0D) {
-                Latitude = other.Latitude;
-              }
-              if (other.Longitude != 0D) {
-                Longitude = other.Longitude;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    SpawnpointId = input.ReadString();
-                    break;
-                  }
-                  case 17: {
-                    EncounterId = input.ReadFixed64();
-                    break;
-                  }
-                  case 24: {
-                    pokedexTypeId_ = (global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.PokemonTypes) input.ReadEnum();
-                    break;
-                  }
-                  case 32: {
-                    ExpirationTimeMs = input.ReadInt64();
-                    break;
-                  }
-                  case 41: {
-                    Latitude = input.ReadDouble();
-                    break;
-                  }
-                  case 49: {
-                    Longitude = input.ReadDouble();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class PokemonFortProto : pb::IMessage<PokemonFortProto> {
-            private static readonly pb::MessageParser<PokemonFortProto> _parser = new pb::MessageParser<PokemonFortProto>(() => new PokemonFortProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<PokemonFortProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Descriptor.NestedTypes[3]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokemonFortProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokemonFortProto(PokemonFortProto other) : this() {
-              fortId_ = other.fortId_;
-              lastModifiedMs_ = other.lastModifiedMs_;
-              latitude_ = other.latitude_;
-              longitude_ = other.longitude_;
-              team_ = other.team_;
-              guardPokemonId_ = other.guardPokemonId_;
-              guardPokemonLevel_ = other.guardPokemonLevel_;
-              enabled_ = other.enabled_;
-              fortType_ = other.fortType_;
-              gymPoints_ = other.gymPoints_;
-              isInBattle_ = other.isInBattle_;
-              ActivePokemon = other.activePokemon_ != null ? other.ActivePokemon.Clone() : null;
-              cooldownCompleteMs_ = other.cooldownCompleteMs_;
-              sponsor_ = other.sponsor_;
-              renderingType_ = other.renderingType_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokemonFortProto Clone() {
-              return new PokemonFortProto(this);
-            }
-
-            /// <summary>Field number for the "FortId" field.</summary>
-            public const int FortIdFieldNumber = 1;
-            private string fortId_ = "";
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public string FortId {
-              get { return fortId_; }
-              set {
-                fortId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            /// <summary>Field number for the "LastModifiedMs" field.</summary>
-            public const int LastModifiedMsFieldNumber = 2;
-            private long lastModifiedMs_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long LastModifiedMs {
-              get { return lastModifiedMs_; }
-              set {
-                lastModifiedMs_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Latitude" field.</summary>
-            public const int LatitudeFieldNumber = 3;
-            private double latitude_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double Latitude {
-              get { return latitude_; }
-              set {
-                latitude_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Longitude" field.</summary>
-            public const int LongitudeFieldNumber = 4;
-            private double longitude_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double Longitude {
-              get { return longitude_; }
-              set {
-                longitude_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Team" field.</summary>
-            public const int TeamFieldNumber = 5;
-            private int team_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int Team {
-              get { return team_; }
-              set {
-                team_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "GuardPokemonId" field.</summary>
-            public const int GuardPokemonIdFieldNumber = 6;
-            private int guardPokemonId_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int GuardPokemonId {
-              get { return guardPokemonId_; }
-              set {
-                guardPokemonId_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "GuardPokemonLevel" field.</summary>
-            public const int GuardPokemonLevelFieldNumber = 7;
-            private int guardPokemonLevel_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int GuardPokemonLevel {
-              get { return guardPokemonLevel_; }
-              set {
-                guardPokemonLevel_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Enabled" field.</summary>
-            public const int EnabledFieldNumber = 8;
-            private bool enabled_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Enabled {
-              get { return enabled_; }
-              set {
-                enabled_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "FortType" field.</summary>
-            public const int FortTypeFieldNumber = 9;
-            private int fortType_;
-            /// <summary>
-            ///  ENUM.Holoholo.Rpc.FortType FortType = 9;
-            /// </summary>
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int FortType {
-              get { return fortType_; }
-              set {
-                fortType_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "GymPoints" field.</summary>
-            public const int GymPointsFieldNumber = 10;
-            private long gymPoints_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long GymPoints {
-              get { return gymPoints_; }
-              set {
-                gymPoints_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "IsInBattle" field.</summary>
-            public const int IsInBattleFieldNumber = 11;
-            private bool isInBattle_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool IsInBattle {
-              get { return isInBattle_; }
-              set {
-                isInBattle_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "ActivePokemon" field.</summary>
-            public const int ActivePokemonFieldNumber = 13;
-            private global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.MapPokemonProto activePokemon_;
-            /// <summary>
-            /// unknown ActiveFortModifier = 12;
-            /// </summary>
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.MapPokemonProto ActivePokemon {
-              get { return activePokemon_; }
-              set {
-                activePokemon_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "CooldownCompleteMs" field.</summary>
-            public const int CooldownCompleteMsFieldNumber = 14;
-            private long cooldownCompleteMs_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long CooldownCompleteMs {
-              get { return cooldownCompleteMs_; }
-              set {
-                cooldownCompleteMs_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Sponsor" field.</summary>
-            public const int SponsorFieldNumber = 15;
-            private int sponsor_;
-            /// <summary>
-            ///  ENUM.Holoholo.Rpc.Sponsor.Types.FortSponsor.Sponsor Sponsor = 15;
-            /// </summary>
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int Sponsor {
-              get { return sponsor_; }
-              set {
-                sponsor_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "RenderingType" field.</summary>
-            public const int RenderingTypeFieldNumber = 16;
-            private int renderingType_;
-            /// <summary>
-            ///  ENUM.Holoholo.Rpc.RenderingType.Types.FortRenderingType.RenderingType RenderingType = 16;
-            /// </summary>
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int RenderingType {
-              get { return renderingType_; }
-              set {
-                renderingType_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as PokemonFortProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(PokemonFortProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (FortId != other.FortId) return false;
-              if (LastModifiedMs != other.LastModifiedMs) return false;
-              if (Latitude != other.Latitude) return false;
-              if (Longitude != other.Longitude) return false;
-              if (Team != other.Team) return false;
-              if (GuardPokemonId != other.GuardPokemonId) return false;
-              if (GuardPokemonLevel != other.GuardPokemonLevel) return false;
-              if (Enabled != other.Enabled) return false;
-              if (FortType != other.FortType) return false;
-              if (GymPoints != other.GymPoints) return false;
-              if (IsInBattle != other.IsInBattle) return false;
-              if (!object.Equals(ActivePokemon, other.ActivePokemon)) return false;
-              if (CooldownCompleteMs != other.CooldownCompleteMs) return false;
-              if (Sponsor != other.Sponsor) return false;
-              if (RenderingType != other.RenderingType) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (FortId.Length != 0) hash ^= FortId.GetHashCode();
-              if (LastModifiedMs != 0L) hash ^= LastModifiedMs.GetHashCode();
-              if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-              if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-              if (Team != 0) hash ^= Team.GetHashCode();
-              if (GuardPokemonId != 0) hash ^= GuardPokemonId.GetHashCode();
-              if (GuardPokemonLevel != 0) hash ^= GuardPokemonLevel.GetHashCode();
-              if (Enabled != false) hash ^= Enabled.GetHashCode();
-              if (FortType != 0) hash ^= FortType.GetHashCode();
-              if (GymPoints != 0L) hash ^= GymPoints.GetHashCode();
-              if (IsInBattle != false) hash ^= IsInBattle.GetHashCode();
-              if (activePokemon_ != null) hash ^= ActivePokemon.GetHashCode();
-              if (CooldownCompleteMs != 0L) hash ^= CooldownCompleteMs.GetHashCode();
-              if (Sponsor != 0) hash ^= Sponsor.GetHashCode();
-              if (RenderingType != 0) hash ^= RenderingType.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (FortId.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteString(FortId);
-              }
-              if (LastModifiedMs != 0L) {
-                output.WriteRawTag(16);
-                output.WriteInt64(LastModifiedMs);
-              }
-              if (Latitude != 0D) {
-                output.WriteRawTag(25);
-                output.WriteDouble(Latitude);
-              }
-              if (Longitude != 0D) {
-                output.WriteRawTag(33);
-                output.WriteDouble(Longitude);
-              }
-              if (Team != 0) {
-                output.WriteRawTag(40);
-                output.WriteInt32(Team);
-              }
-              if (GuardPokemonId != 0) {
-                output.WriteRawTag(48);
-                output.WriteInt32(GuardPokemonId);
-              }
-              if (GuardPokemonLevel != 0) {
-                output.WriteRawTag(56);
-                output.WriteInt32(GuardPokemonLevel);
-              }
-              if (Enabled != false) {
-                output.WriteRawTag(64);
-                output.WriteBool(Enabled);
-              }
-              if (FortType != 0) {
-                output.WriteRawTag(72);
-                output.WriteInt32(FortType);
-              }
-              if (GymPoints != 0L) {
-                output.WriteRawTag(80);
-                output.WriteInt64(GymPoints);
-              }
-              if (IsInBattle != false) {
-                output.WriteRawTag(88);
-                output.WriteBool(IsInBattle);
-              }
-              if (activePokemon_ != null) {
-                output.WriteRawTag(106);
-                output.WriteMessage(ActivePokemon);
-              }
-              if (CooldownCompleteMs != 0L) {
-                output.WriteRawTag(112);
-                output.WriteInt64(CooldownCompleteMs);
-              }
-              if (Sponsor != 0) {
-                output.WriteRawTag(120);
-                output.WriteInt32(Sponsor);
-              }
-              if (RenderingType != 0) {
-                output.WriteRawTag(128, 1);
-                output.WriteInt32(RenderingType);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (FortId.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(FortId);
-              }
-              if (LastModifiedMs != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(LastModifiedMs);
-              }
-              if (Latitude != 0D) {
-                size += 1 + 8;
-              }
-              if (Longitude != 0D) {
-                size += 1 + 8;
-              }
-              if (Team != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Team);
-              }
-              if (GuardPokemonId != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(GuardPokemonId);
-              }
-              if (GuardPokemonLevel != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(GuardPokemonLevel);
-              }
-              if (Enabled != false) {
-                size += 1 + 1;
-              }
-              if (FortType != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(FortType);
-              }
-              if (GymPoints != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(GymPoints);
-              }
-              if (IsInBattle != false) {
-                size += 1 + 1;
-              }
-              if (activePokemon_ != null) {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(ActivePokemon);
-              }
-              if (CooldownCompleteMs != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(CooldownCompleteMs);
-              }
-              if (Sponsor != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Sponsor);
-              }
-              if (RenderingType != 0) {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(RenderingType);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(PokemonFortProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.FortId.Length != 0) {
-                FortId = other.FortId;
-              }
-              if (other.LastModifiedMs != 0L) {
-                LastModifiedMs = other.LastModifiedMs;
-              }
-              if (other.Latitude != 0D) {
-                Latitude = other.Latitude;
-              }
-              if (other.Longitude != 0D) {
-                Longitude = other.Longitude;
-              }
-              if (other.Team != 0) {
-                Team = other.Team;
-              }
-              if (other.GuardPokemonId != 0) {
-                GuardPokemonId = other.GuardPokemonId;
-              }
-              if (other.GuardPokemonLevel != 0) {
-                GuardPokemonLevel = other.GuardPokemonLevel;
-              }
-              if (other.Enabled != false) {
-                Enabled = other.Enabled;
-              }
-              if (other.FortType != 0) {
-                FortType = other.FortType;
-              }
-              if (other.GymPoints != 0L) {
-                GymPoints = other.GymPoints;
-              }
-              if (other.IsInBattle != false) {
-                IsInBattle = other.IsInBattle;
-              }
-              if (other.activePokemon_ != null) {
-                if (activePokemon_ == null) {
-                  activePokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.MapPokemonProto();
-                }
-                ActivePokemon.MergeFrom(other.ActivePokemon);
-              }
-              if (other.CooldownCompleteMs != 0L) {
-                CooldownCompleteMs = other.CooldownCompleteMs;
-              }
-              if (other.Sponsor != 0) {
-                Sponsor = other.Sponsor;
-              }
-              if (other.RenderingType != 0) {
-                RenderingType = other.RenderingType;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    FortId = input.ReadString();
-                    break;
-                  }
-                  case 16: {
-                    LastModifiedMs = input.ReadInt64();
-                    break;
-                  }
-                  case 25: {
-                    Latitude = input.ReadDouble();
-                    break;
-                  }
-                  case 33: {
-                    Longitude = input.ReadDouble();
-                    break;
-                  }
-                  case 40: {
-                    Team = input.ReadInt32();
-                    break;
-                  }
-                  case 48: {
-                    GuardPokemonId = input.ReadInt32();
-                    break;
-                  }
-                  case 56: {
-                    GuardPokemonLevel = input.ReadInt32();
-                    break;
-                  }
-                  case 64: {
-                    Enabled = input.ReadBool();
-                    break;
-                  }
-                  case 72: {
-                    FortType = input.ReadInt32();
-                    break;
-                  }
-                  case 80: {
-                    GymPoints = input.ReadInt64();
-                    break;
-                  }
-                  case 88: {
-                    IsInBattle = input.ReadBool();
-                    break;
-                  }
-                  case 106: {
-                    if (activePokemon_ == null) {
-                      activePokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.MapPokemonProto();
-                    }
-                    input.ReadMessage(activePokemon_);
-                    break;
-                  }
-                  case 112: {
-                    CooldownCompleteMs = input.ReadInt64();
-                    break;
-                  }
-                  case 120: {
-                    Sponsor = input.ReadInt32();
-                    break;
-                  }
-                  case 128: {
-                    RenderingType = input.ReadInt32();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class PokemonSummaryFortProto : pb::IMessage<PokemonSummaryFortProto> {
-            private static readonly pb::MessageParser<PokemonSummaryFortProto> _parser = new pb::MessageParser<PokemonSummaryFortProto>(() => new PokemonSummaryFortProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<PokemonSummaryFortProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Descriptor.NestedTypes[4]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokemonSummaryFortProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokemonSummaryFortProto(PokemonSummaryFortProto other) : this() {
-              fortSummaryId_ = other.fortSummaryId_;
-              lastModifiedMs_ = other.lastModifiedMs_;
-              latitude_ = other.latitude_;
-              longitude_ = other.longitude_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public PokemonSummaryFortProto Clone() {
-              return new PokemonSummaryFortProto(this);
-            }
-
-            /// <summary>Field number for the "FortSummaryId" field.</summary>
-            public const int FortSummaryIdFieldNumber = 1;
-            private string fortSummaryId_ = "";
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public string FortSummaryId {
-              get { return fortSummaryId_; }
-              set {
-                fortSummaryId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            /// <summary>Field number for the "LastModifiedMs" field.</summary>
-            public const int LastModifiedMsFieldNumber = 2;
-            private long lastModifiedMs_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long LastModifiedMs {
-              get { return lastModifiedMs_; }
-              set {
-                lastModifiedMs_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Latitude" field.</summary>
-            public const int LatitudeFieldNumber = 3;
-            private double latitude_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double Latitude {
-              get { return latitude_; }
-              set {
-                latitude_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Longitude" field.</summary>
-            public const int LongitudeFieldNumber = 4;
-            private double longitude_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double Longitude {
-              get { return longitude_; }
-              set {
-                longitude_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as PokemonSummaryFortProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(PokemonSummaryFortProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (FortSummaryId != other.FortSummaryId) return false;
-              if (LastModifiedMs != other.LastModifiedMs) return false;
-              if (Latitude != other.Latitude) return false;
-              if (Longitude != other.Longitude) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (FortSummaryId.Length != 0) hash ^= FortSummaryId.GetHashCode();
-              if (LastModifiedMs != 0L) hash ^= LastModifiedMs.GetHashCode();
-              if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-              if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (FortSummaryId.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteString(FortSummaryId);
-              }
-              if (LastModifiedMs != 0L) {
-                output.WriteRawTag(16);
-                output.WriteInt64(LastModifiedMs);
-              }
-              if (Latitude != 0D) {
-                output.WriteRawTag(25);
-                output.WriteDouble(Latitude);
-              }
-              if (Longitude != 0D) {
-                output.WriteRawTag(33);
-                output.WriteDouble(Longitude);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (FortSummaryId.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(FortSummaryId);
-              }
-              if (LastModifiedMs != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(LastModifiedMs);
-              }
-              if (Latitude != 0D) {
-                size += 1 + 8;
-              }
-              if (Longitude != 0D) {
-                size += 1 + 8;
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(PokemonSummaryFortProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.FortSummaryId.Length != 0) {
-                FortSummaryId = other.FortSummaryId;
-              }
-              if (other.LastModifiedMs != 0L) {
-                LastModifiedMs = other.LastModifiedMs;
-              }
-              if (other.Latitude != 0D) {
-                Latitude = other.Latitude;
-              }
-              if (other.Longitude != 0D) {
-                Longitude = other.Longitude;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    FortSummaryId = input.ReadString();
-                    break;
-                  }
-                  case 16: {
-                    LastModifiedMs = input.ReadInt64();
-                    break;
-                  }
-                  case 25: {
-                    Latitude = input.ReadDouble();
-                    break;
-                  }
-                  case 33: {
-                    Longitude = input.ReadDouble();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class ClientSpawnPointProto : pb::IMessage<ClientSpawnPointProto> {
-            private static readonly pb::MessageParser<ClientSpawnPointProto> _parser = new pb::MessageParser<ClientSpawnPointProto>(() => new ClientSpawnPointProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<ClientSpawnPointProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Descriptor.NestedTypes[5]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ClientSpawnPointProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ClientSpawnPointProto(ClientSpawnPointProto other) : this() {
-              latitude_ = other.latitude_;
-              longitude_ = other.longitude_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ClientSpawnPointProto Clone() {
-              return new ClientSpawnPointProto(this);
-            }
-
-            /// <summary>Field number for the "Latitude" field.</summary>
-            public const int LatitudeFieldNumber = 2;
-            private double latitude_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double Latitude {
-              get { return latitude_; }
-              set {
-                latitude_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Longitude" field.</summary>
-            public const int LongitudeFieldNumber = 3;
-            private double longitude_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double Longitude {
-              get { return longitude_; }
-              set {
-                longitude_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as ClientSpawnPointProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(ClientSpawnPointProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Latitude != other.Latitude) return false;
-              if (Longitude != other.Longitude) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-              if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Latitude != 0D) {
-                output.WriteRawTag(17);
-                output.WriteDouble(Latitude);
-              }
-              if (Longitude != 0D) {
-                output.WriteRawTag(25);
-                output.WriteDouble(Longitude);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (Latitude != 0D) {
-                size += 1 + 8;
-              }
-              if (Longitude != 0D) {
-                size += 1 + 8;
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(ClientSpawnPointProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Latitude != 0D) {
-                Latitude = other.Latitude;
-              }
-              if (other.Longitude != 0D) {
-                Longitude = other.Longitude;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 17: {
-                    Latitude = input.ReadDouble();
-                    break;
-                  }
-                  case 25: {
-                    Longitude = input.ReadDouble();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          public sealed partial class WildPokemonProto : pb::IMessage<WildPokemonProto> {
-            private static readonly pb::MessageParser<WildPokemonProto> _parser = new pb::MessageParser<WildPokemonProto>(() => new WildPokemonProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<WildPokemonProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Descriptor.NestedTypes[6]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public WildPokemonProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public WildPokemonProto(WildPokemonProto other) : this() {
-              encounterId_ = other.encounterId_;
-              lastModifiedMs_ = other.lastModifiedMs_;
-              latitude_ = other.latitude_;
-              longitude_ = other.longitude_;
-              spawnPointId_ = other.spawnPointId_;
-              Pokemon = other.pokemon_ != null ? other.Pokemon.Clone() : null;
-              timeTillHiddenMs_ = other.timeTillHiddenMs_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public WildPokemonProto Clone() {
-              return new WildPokemonProto(this);
-            }
-
-            /// <summary>Field number for the "EncounterId" field.</summary>
-            public const int EncounterIdFieldNumber = 1;
-            private ulong encounterId_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ulong EncounterId {
-              get { return encounterId_; }
-              set {
-                encounterId_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "LastModifiedMs" field.</summary>
-            public const int LastModifiedMsFieldNumber = 2;
-            private long lastModifiedMs_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public long LastModifiedMs {
-              get { return lastModifiedMs_; }
-              set {
-                lastModifiedMs_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Latitude" field.</summary>
-            public const int LatitudeFieldNumber = 3;
-            private double latitude_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double Latitude {
-              get { return latitude_; }
-              set {
-                latitude_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "Longitude" field.</summary>
-            public const int LongitudeFieldNumber = 4;
-            private double longitude_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public double Longitude {
-              get { return longitude_; }
-              set {
-                longitude_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "SpawnPointId" field.</summary>
-            public const int SpawnPointIdFieldNumber = 5;
-            private string spawnPointId_ = "";
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public string SpawnPointId {
-              get { return spawnPointId_; }
-              set {
-                spawnPointId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            /// <summary>Field number for the "pokemon" field.</summary>
-            public const int PokemonFieldNumber = 7;
-            private global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto.Types.Pokemon pokemon_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto.Types.Pokemon Pokemon {
-              get { return pokemon_; }
-              set {
-                pokemon_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "TimeTillHiddenMs" field.</summary>
-            public const int TimeTillHiddenMsFieldNumber = 11;
-            private int timeTillHiddenMs_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int TimeTillHiddenMs {
-              get { return timeTillHiddenMs_; }
-              set {
-                timeTillHiddenMs_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as WildPokemonProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(WildPokemonProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (EncounterId != other.EncounterId) return false;
-              if (LastModifiedMs != other.LastModifiedMs) return false;
-              if (Latitude != other.Latitude) return false;
-              if (Longitude != other.Longitude) return false;
-              if (SpawnPointId != other.SpawnPointId) return false;
-              if (!object.Equals(Pokemon, other.Pokemon)) return false;
-              if (TimeTillHiddenMs != other.TimeTillHiddenMs) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-              if (LastModifiedMs != 0L) hash ^= LastModifiedMs.GetHashCode();
-              if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-              if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-              if (SpawnPointId.Length != 0) hash ^= SpawnPointId.GetHashCode();
-              if (pokemon_ != null) hash ^= Pokemon.GetHashCode();
-              if (TimeTillHiddenMs != 0) hash ^= TimeTillHiddenMs.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (EncounterId != 0UL) {
-                output.WriteRawTag(8);
-                output.WriteUInt64(EncounterId);
-              }
-              if (LastModifiedMs != 0L) {
-                output.WriteRawTag(16);
-                output.WriteInt64(LastModifiedMs);
-              }
-              if (Latitude != 0D) {
-                output.WriteRawTag(25);
-                output.WriteDouble(Latitude);
-              }
-              if (Longitude != 0D) {
-                output.WriteRawTag(33);
-                output.WriteDouble(Longitude);
-              }
-              if (SpawnPointId.Length != 0) {
-                output.WriteRawTag(42);
-                output.WriteString(SpawnPointId);
-              }
-              if (pokemon_ != null) {
-                output.WriteRawTag(58);
-                output.WriteMessage(Pokemon);
-              }
-              if (TimeTillHiddenMs != 0) {
-                output.WriteRawTag(88);
-                output.WriteInt32(TimeTillHiddenMs);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (EncounterId != 0UL) {
-                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(EncounterId);
-              }
-              if (LastModifiedMs != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(LastModifiedMs);
-              }
-              if (Latitude != 0D) {
-                size += 1 + 8;
-              }
-              if (Longitude != 0D) {
-                size += 1 + 8;
-              }
-              if (SpawnPointId.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnPointId);
-              }
-              if (pokemon_ != null) {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Pokemon);
-              }
-              if (TimeTillHiddenMs != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimeTillHiddenMs);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(WildPokemonProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.EncounterId != 0UL) {
-                EncounterId = other.EncounterId;
-              }
-              if (other.LastModifiedMs != 0L) {
-                LastModifiedMs = other.LastModifiedMs;
-              }
-              if (other.Latitude != 0D) {
-                Latitude = other.Latitude;
-              }
-              if (other.Longitude != 0D) {
-                Longitude = other.Longitude;
-              }
-              if (other.SpawnPointId.Length != 0) {
-                SpawnPointId = other.SpawnPointId;
-              }
-              if (other.pokemon_ != null) {
-                if (pokemon_ == null) {
-                  pokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto.Types.Pokemon();
-                }
-                Pokemon.MergeFrom(other.Pokemon);
-              }
-              if (other.TimeTillHiddenMs != 0) {
-                TimeTillHiddenMs = other.TimeTillHiddenMs;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    EncounterId = input.ReadUInt64();
-                    break;
-                  }
-                  case 16: {
-                    LastModifiedMs = input.ReadInt64();
-                    break;
-                  }
-                  case 25: {
-                    Latitude = input.ReadDouble();
-                    break;
-                  }
-                  case 33: {
-                    Longitude = input.ReadDouble();
-                    break;
-                  }
-                  case 42: {
-                    SpawnPointId = input.ReadString();
-                    break;
-                  }
-                  case 58: {
-                    if (pokemon_ == null) {
-                      pokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto.Types.Pokemon();
-                    }
-                    input.ReadMessage(pokemon_);
-                    break;
-                  }
-                  case 88: {
-                    TimeTillHiddenMs = input.ReadInt32();
-                    break;
-                  }
-                }
-              }
-            }
-
-            #region Nested types
-            /// <summary>Container for nested types declared in the WildPokemonProto message type.</summary>
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static partial class Types {
-              public sealed partial class Pokemon : pb::IMessage<Pokemon> {
-                private static readonly pb::MessageParser<Pokemon> _parser = new pb::MessageParser<Pokemon>(() => new Pokemon());
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public static pb::MessageParser<Pokemon> Parser { get { return _parser; } }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public static pbr::MessageDescriptor Descriptor {
-                  get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Types.WildPokemonProto.Descriptor.NestedTypes[0]; }
-                }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                pbr::MessageDescriptor pb::IMessage.Descriptor {
-                  get { return Descriptor; }
-                }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public Pokemon() {
-                  OnConstruction();
-                }
-
-                partial void OnConstruction();
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public Pokemon(Pokemon other) : this() {
-                  id_ = other.id_;
-                  pokemonId_ = other.pokemonId_;
-                }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public Pokemon Clone() {
-                  return new Pokemon(this);
-                }
-
-                /// <summary>Field number for the "Id" field.</summary>
-                public const int IdFieldNumber = 1;
-                private ulong id_;
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public ulong Id {
-                  get { return id_; }
-                  set {
-                    id_ = value;
-                  }
-                }
-
-                /// <summary>Field number for the "PokemonId" field.</summary>
-                public const int PokemonIdFieldNumber = 2;
-                private int pokemonId_;
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public int PokemonId {
-                  get { return pokemonId_; }
-                  set {
-                    pokemonId_ = value;
-                  }
-                }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public override bool Equals(object other) {
-                  return Equals(other as Pokemon);
-                }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public bool Equals(Pokemon other) {
-                  if (ReferenceEquals(other, null)) {
-                    return false;
-                  }
-                  if (ReferenceEquals(other, this)) {
-                    return true;
-                  }
-                  if (Id != other.Id) return false;
-                  if (PokemonId != other.PokemonId) return false;
-                  return true;
-                }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public override int GetHashCode() {
-                  int hash = 1;
-                  if (Id != 0UL) hash ^= Id.GetHashCode();
-                  if (PokemonId != 0) hash ^= PokemonId.GetHashCode();
-                  return hash;
-                }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public override string ToString() {
-                  return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public void WriteTo(pb::CodedOutputStream output) {
-                  if (Id != 0UL) {
-                    output.WriteRawTag(8);
-                    output.WriteUInt64(Id);
-                  }
-                  if (PokemonId != 0) {
-                    output.WriteRawTag(16);
-                    output.WriteInt32(PokemonId);
-                  }
-                }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public int CalculateSize() {
-                  int size = 0;
-                  if (Id != 0UL) {
-                    size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Id);
-                  }
-                  if (PokemonId != 0) {
-                    size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokemonId);
-                  }
-                  return size;
-                }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public void MergeFrom(Pokemon other) {
-                  if (other == null) {
-                    return;
-                  }
-                  if (other.Id != 0UL) {
-                    Id = other.Id;
-                  }
-                  if (other.PokemonId != 0) {
-                    PokemonId = other.PokemonId;
-                  }
-                }
-
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-                public void MergeFrom(pb::CodedInputStream input) {
-                  uint tag;
-                  while ((tag = input.ReadTag()) != 0) {
-                    switch(tag) {
-                      default:
-                        input.SkipLastField();
-                        break;
-                      case 8: {
-                        Id = input.ReadUInt64();
-                        break;
-                      }
-                      case 16: {
-                        PokemonId = input.ReadInt32();
-                        break;
-                      }
-                    }
-                  }
-                }
-
-              }
-
-            }
-            #endregion
-
-          }
-
-          public sealed partial class NearbyPokemonProto : pb::IMessage<NearbyPokemonProto> {
-            private static readonly pb::MessageParser<NearbyPokemonProto> _parser = new pb::MessageParser<NearbyPokemonProto>(() => new NearbyPokemonProto());
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pb::MessageParser<NearbyPokemonProto> Parser { get { return _parser; } }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.MapObjectsResponse.Types.Payload.Descriptor.NestedTypes[7]; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public NearbyPokemonProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public NearbyPokemonProto(NearbyPokemonProto other) : this() {
-              pokedexNumber_ = other.pokedexNumber_;
-              distanceMeters_ = other.distanceMeters_;
-              encounterId_ = other.encounterId_;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public NearbyPokemonProto Clone() {
-              return new NearbyPokemonProto(this);
-            }
-
-            /// <summary>Field number for the "PokedexNumber" field.</summary>
-            public const int PokedexNumberFieldNumber = 1;
-            private int pokedexNumber_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int PokedexNumber {
-              get { return pokedexNumber_; }
-              set {
-                pokedexNumber_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "DistanceMeters" field.</summary>
-            public const int DistanceMetersFieldNumber = 2;
-            private float distanceMeters_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public float DistanceMeters {
-              get { return distanceMeters_; }
-              set {
-                distanceMeters_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "EncounterId" field.</summary>
-            public const int EncounterIdFieldNumber = 3;
-            private ulong encounterId_;
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public ulong EncounterId {
-              get { return encounterId_; }
-              set {
-                encounterId_ = value;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override bool Equals(object other) {
-              return Equals(other as NearbyPokemonProto);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public bool Equals(NearbyPokemonProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (PokedexNumber != other.PokedexNumber) return false;
-              if (DistanceMeters != other.DistanceMeters) return false;
-              if (EncounterId != other.EncounterId) return false;
-              return true;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override int GetHashCode() {
-              int hash = 1;
-              if (PokedexNumber != 0) hash ^= PokedexNumber.GetHashCode();
-              if (DistanceMeters != 0F) hash ^= DistanceMeters.GetHashCode();
-              if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-              return hash;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (PokedexNumber != 0) {
-                output.WriteRawTag(8);
-                output.WriteInt32(PokedexNumber);
-              }
-              if (DistanceMeters != 0F) {
-                output.WriteRawTag(21);
-                output.WriteFloat(DistanceMeters);
-              }
-              if (EncounterId != 0UL) {
-                output.WriteRawTag(24);
-                output.WriteUInt64(EncounterId);
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public int CalculateSize() {
-              int size = 0;
-              if (PokedexNumber != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokedexNumber);
-              }
-              if (DistanceMeters != 0F) {
-                size += 1 + 4;
-              }
-              if (EncounterId != 0UL) {
-                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(EncounterId);
-              }
-              return size;
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(NearbyPokemonProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.PokedexNumber != 0) {
-                PokedexNumber = other.PokedexNumber;
-              }
-              if (other.DistanceMeters != 0F) {
-                DistanceMeters = other.DistanceMeters;
-              }
-              if (other.EncounterId != 0UL) {
-                EncounterId = other.EncounterId;
-              }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    PokedexNumber = input.ReadInt32();
-                    break;
-                  }
-                  case 21: {
-                    DistanceMeters = input.ReadFloat();
-                    break;
-                  }
-                  case 24: {
-                    EncounterId = input.ReadUInt64();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-        }
-        #endregion
-
-      }
-
-    }
-    #endregion
-
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/GeneratedCode/Payloads.cs b/PokemonGo/RocketAPI/GeneratedCode/Payloads.cs
new file mode 100644
index 0000000..deecbe1
--- /dev/null
+++ b/PokemonGo/RocketAPI/GeneratedCode/Payloads.cs
@@ -0,0 +1,22248 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: Payloads.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace PokemonGo.RocketAPI.GeneratedCode {
+
+  /// <summary>Holder for reflection information generated from Payloads.proto</summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public static partial class PayloadsReflection {
+
+    #region Descriptor
+    /// <summary>File descriptor for Payloads.proto</summary>
+    public static pbr::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbr::FileDescriptor descriptor;
+
+    static PayloadsReflection() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          string.Concat(
+            "Cg5QYXlsb2Fkcy5wcm90bxIhUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0",
+            "ZWRDb2RlGg1BbGxFbnVtLnByb3RvImIKEUdldFBsYXllclJlc3BvbnNlEhAK",
+            "CHVua25vd24xGAEgASgFEjsKB3Byb2ZpbGUYAiABKAsyKi5Qb2tlbW9uR28u",
+            "Um9ja2V0QVBJLkdlbmVyYXRlZENvZGUuUHJvZmlsZSL9AgoHUHJvZmlsZRIV",
+            "Cg1jcmVhdGlvbl90aW1lGAEgASgDEhAKCHVzZXJuYW1lGAIgASgJEiAKBHRl",
+            "YW0YBSABKA4yEi5BbGxFbnVtLlRlYW1Db2xvchIQCgh0dXRvcmlhbBgHIAEo",
+            "DBJACgZhdmF0YXIYCCABKAsyMC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVy",
+            "YXRlZENvZGUuQXZhdGFyRGV0YWlscxIUCgxwb2tlX3N0b3JhZ2UYCSABKAUS",
+            "FAoMaXRlbV9zdG9yYWdlGAogASgFEkIKC2RhaWx5X2JvbnVzGAsgASgLMi0u",
+            "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkRhaWx5Qm9udXMS",
+            "EQoJdW5rbm93bjEyGAwgASgMEhEKCXVua25vd24xMxgNIAEoDBI9CghjdXJy",
+            "ZW5jeRgOIAMoCzIrLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
+            "ZS5DdXJyZW5jeSJZCgpEYWlseUJvbnVzEh4KFk5leHRDb2xsZWN0VGltZXN0",
+            "YW1wTXMYASABKAMSKwojTmV4dERlZmVuZGVyQm9udXNDb2xsZWN0VGltZXN0",
+            "YW1wTXMYAiABKAMiKAoIQ3VycmVuY3kSDAoEdHlwZRgBIAEoCRIOCgZhbW91",
+            "bnQYAiABKAUiWAoNQXZhdGFyRGV0YWlscxIQCgh1bmtub3duMhgCIAEoBRIQ",
+            "Cgh1bmtub3duMxgDIAEoBRIQCgh1bmtub3duORgJIAEoBRIRCgl1bmtub3du",
+            "MTAYCiABKAUiJwoXRG93bmxvYWRTZXR0aW5nc1JlcXVlc3QSDAoEaGFzaBgB",
+            "IAEoCSJzChRHZXRJbnZlbnRvcnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgI",
+            "EkoKD2ludmVudG9yeV9kZWx0YRgCIAEoCzIxLlBva2Vtb25Hby5Sb2NrZXRB",
+            "UEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRvcnlEZWx0YSKUAQoOSW52ZW50b3J5",
+            "RGVsdGESHQoVb3JpZ2luYWxfdGltZXN0YW1wX21zGAEgASgDEhgKEG5ld190",
+            "aW1lc3RhbXBfbXMYAiABKAMSSQoPaW52ZW50b3J5X2l0ZW1zGAMgAygLMjAu",
+            "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeUl0",
+            "ZW0imwEKDUludmVudG9yeUl0ZW0SHQoVbW9kaWZpZWRfdGltZXN0YW1wX21z",
+            "GAEgASgDEhgKEGRlbGV0ZWRfaXRlbV9rZXkYAiABKAMSUQoTaW52ZW50b3J5",
+            "X2l0ZW1fZGF0YRgDIAEoCzI0LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJh",
+            "dGVkQ29kZS5JbnZlbnRvcnlJdGVtRGF0YSLbBQoRSW52ZW50b3J5SXRlbURh",
+            "dGESPwoHcG9rZW1vbhgBIAEoCzIuLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2Vu",
+            "ZXJhdGVkQ29kZS5Qb2tlbW9uRGF0YRI1CgRpdGVtGAIgASgLMicuUG9rZW1v",
+            "bkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkl0ZW0SRgoNcG9rZWRleF9l",
+            "bnRyeRgDIAEoCzIvLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
+            "ZS5Qb2tlZGV4RW50cnkSRAoMcGxheWVyX3N0YXRzGAQgASgLMi4uUG9rZW1v",
+            "bkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlBsYXllclN0YXRzEkoKD3Bs",
+            "YXllcl9jdXJyZW5jeRgFIAEoCzIxLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2Vu",
+            "ZXJhdGVkQ29kZS5QbGF5ZXJDdXJyZW5jeRJGCg1wbGF5ZXJfY2FtZXJhGAYg",
+            "ASgLMi8uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlBsYXll",
+            "ckNhbWVyYRJQChJpbnZlbnRvcnlfdXBncmFkZXMYByABKAsyNC5Qb2tlbW9u",
+            "R28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuSW52ZW50b3J5VXBncmFkZXMS",
+            "RgoNYXBwbGllZF9pdGVtcxgIIAEoCzIvLlBva2Vtb25Hby5Sb2NrZXRBUEku",
+            "R2VuZXJhdGVkQ29kZS5BcHBsaWVkSXRlbXMSSAoOZWdnX2luY3ViYXRvcnMY",
+            "CSABKAsyMC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRWdn",
+            "SW5jdWJhdG9ycxJICg5wb2tlbW9uX2ZhbWlseRgKIAEoCzIwLlBva2Vtb25H",
+            "by5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5Qb2tlbW9uRmFtaWx5ItgFCgdQ",
+            "b2tlbW9uEgoKAmlkGAEgASgFEigKDHBva2Vtb25fdHlwZRgCIAEoDjISLkFs",
+            "bEVudW0uUG9rZW1vbklkEgoKAmNwGAMgASgFEg8KB3N0YW1pbmEYBCABKAUS",
+            "EwoLc3RhbWluYV9tYXgYBSABKAUSJAoGbW92ZV8xGAYgASgOMhQuQWxsRW51",
+            "bS5Qb2tlbW9uTW92ZRIkCgZtb3ZlXzIYByABKA4yFC5BbGxFbnVtLlBva2Vt",
+            "b25Nb3ZlEhgKEGRlcGxveWVkX2ZvcnRfaWQYCCABKAUSEgoKb3duZXJfbmFt",
+            "ZRgJIAEoCRIOCgZpc19lZ2cYCiABKAgSHAoUZWdnX2ttX3dhbGtlZF90YXJn",
+            "ZXQYCyABKAUSGwoTZWdnX2ttX3dhbGtlZF9zdGFydBgMIAEoBRIOCgZvcmln",
+            "aW4YDiABKAUSEAoIaGVpZ2h0X20YDyABKAISEQoJd2VpZ2h0X2tnGBAgASgC",
+            "EhkKEWluZGl2aWR1YWxfYXR0YWNrGBEgASgFEhoKEmluZGl2aWR1YWxfZGVm",
+            "ZW5zZRgSIAEoBRIaChJpbmRpdmlkdWFsX3N0YW1pbmEYEyABKAUSFQoNY3Bf",
+            "bXVsdGlwbGllchgUIAEoBRIQCghwb2tlYmFsbBgVIAEoBRIYChBjYXB0dXJl",
+            "ZF9jZWxsX2lkGBYgASgEEhgKEGJhdHRsZXNfYXR0YWNrZWQYFyABKAUSGAoQ",
+            "YmF0dGxlc19kZWZlbmRlZBgYIAEoBRIYChBlZ2dfaW5jdWJhdG9yX2lkGBkg",
+            "ASgFEhgKEGNyZWF0aW9uX3RpbWVfbXMYGiABKAQSFAoMbnVtX3VwZ3JhZGVz",
+            "GBsgASgFEiAKGGFkZGl0aW9uYWxfY3BfbXVsdGlwbGllchgcIAEoBRIQCghm",
+            "YXZvcml0ZRgdIAEoBRIQCghuaWNrbmFtZRgeIAEoCRIRCglmcm9tX2ZvcnQY",
+            "HyABKAUiRgoESXRlbRIfCgRpdGVtGAEgASgOMhEuQWxsRW51bS5JdGVtVHlw",
+            "ZRINCgVjb3VudBgCIAEoBRIOCgZ1bnNlZW4YAyABKAgimQEKDFBva2VkZXhF",
+            "bnRyeRIcChRwb2tlZGV4X2VudHJ5X251bWJlchgBIAEoBRIZChF0aW1lc19l",
+            "bmNvdW50ZXJlZBgCIAEoBRIWCg50aW1lc19jYXB0dXJlZBgDIAEoBRIeChZl",
+            "dm9sdXRpb25fc3RvbmVfcGllY2VzGAQgASgFEhgKEGV2b2x1dGlvbl9zdG9u",
+            "ZXMYBSABKAUi7QQKC1BsYXllclN0YXRzEg0KBWxldmVsGAEgASgFEhIKCmV4",
+            "cGVyaWVuY2UYAiABKAMSFQoNcHJldl9sZXZlbF94cBgDIAEoAxIVCg1uZXh0",
+            "X2xldmVsX3hwGAQgASgDEhEKCWttX3dhbGtlZBgFIAEoAhIcChRwb2tlbW9u",
+            "c19lbmNvdW50ZXJlZBgGIAEoBRIeChZ1bmlxdWVfcG9rZWRleF9lbnRyaWVz",
+            "GAcgASgFEhkKEXBva2Vtb25zX2NhcHR1cmVkGAggASgFEhIKCmV2b2x1dGlv",
+            "bnMYCSABKAUSGAoQcG9rZV9zdG9wX3Zpc2l0cxgKIAEoBRIYChBwb2tlYmFs",
+            "bHNfdGhyb3duGAsgASgFEhQKDGVnZ3NfaGF0Y2hlZBgMIAEoBRIbChNiaWdf",
+            "bWFnaWthcnBfY2F1Z2h0GA0gASgFEhkKEWJhdHRsZV9hdHRhY2tfd29uGA4g",
+            "ASgFEhsKE2JhdHRsZV9hdHRhY2tfdG90YWwYDyABKAUSGwoTYmF0dGxlX2Rl",
+            "ZmVuZGVkX3dvbhgQIAEoBRIbChNiYXR0bGVfdHJhaW5pbmdfd29uGBEgASgF",
+            "Eh0KFWJhdHRsZV90cmFpbmluZ190b3RhbBgSIAEoBRIdChVwcmVzdGlnZV9y",
+            "YWlzZWRfdG90YWwYEyABKAUSHgoWcHJlc3RpZ2VfZHJvcHBlZF90b3RhbBgU",
+            "IAEoBRIYChBwb2tlbW9uX2RlcGxveWVkGBUgASgFEh4KFnBva2Vtb25fY2F1",
+            "Z2h0X2J5X3R5cGUYFiABKAwSHAoUc21hbGxfcmF0dGF0YV9jYXVnaHQYFyAB",
+            "KAUiHgoOUGxheWVyQ3VycmVuY3kSDAoEZ2VtcxgBIAEoBSIpCgxQbGF5ZXJD",
+            "YW1lcmESGQoRaXNfZGVmYXVsdF9jYW1lcmEYASABKAgiZAoRSW52ZW50b3J5",
+            "VXBncmFkZXMSTwoSaW52ZW50b3J5X3VwZ3JhZGVzGAEgAygLMjMuUG9rZW1v",
+            "bkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeVVwZ3JhZGUi",
+            "hAEKEEludmVudG9yeVVwZ3JhZGUSHwoEaXRlbRgBIAEoDjIRLkFsbEVudW0u",
+            "SXRlbVR5cGUSMwoMdXBncmFkZV90eXBlGAIgASgOMh0uQWxsRW51bS5JbnZl",
+            "bnRvcnlVcGdyYWRlVHlwZRIaChJhZGRpdGlvbmFsX3N0b3JhZ2UYAyABKAUi",
+            "TAoMQXBwbGllZEl0ZW1zEjwKBGl0ZW0YBCABKAsyLi5Qb2tlbW9uR28uUm9j",
+            "a2V0QVBJLkdlbmVyYXRlZENvZGUuQXBwbGllZEl0ZW0ihwEKC0FwcGxpZWRJ",
+            "dGVtEiIKCWl0ZW1fdHlwZRgBIAEoDjIPLkFsbEVudW0uSXRlbUlkEi0KEml0",
+            "ZW1fdHlwZV9jYXRlZ29yeRgCIAEoDjIRLkFsbEVudW0uSXRlbVR5cGUSEQoJ",
+            "ZXhwaXJlX21zGAMgASgDEhIKCmFwcGxpZWRfbXMYBCABKAMiVwoNRWdnSW5j",
+            "dWJhdG9ycxJGCg1lZ2dfaW5jdWJhdG9yGAEgASgLMi8uUG9rZW1vbkdvLlJv",
+            "Y2tldEFQSS5HZW5lcmF0ZWRDb2RlLkVnZ0luY3ViYXRvciLXAQoMRWdnSW5j",
+            "dWJhdG9yEg8KB2l0ZW1faWQYASABKAkSJAoJaXRlbV90eXBlGAIgASgOMhEu",
+            "QWxsRW51bS5JdGVtVHlwZRIxCg5pbmN1YmF0b3JfdHlwZRgDIAEoDjIZLkFs",
+            "bEVudW0uRWdnSW5jdWJhdG9yVHlwZRIWCg51c2VzX3JlbWFpbmluZxgEIAEo",
+            "BRISCgpwb2tlbW9uX2lkGAUgASgDEhcKD3N0YXJ0X2ttX3dhbGtlZBgGIAEo",
+            "ARIYChB0YXJnZXRfa21fd2Fsa2VkGAcgASgBIksKDVBva2Vtb25GYW1pbHkS",
+            "KwoJZmFtaWx5X2lkGAEgASgOMhguQWxsRW51bS5Qb2tlbW9uRmFtaWx5SWQS",
+            "DQoFY2FuZHkYAiABKAUiaAoUR2V0TWFwT2JqZWN0c1JlcXVlc3QSDwoHY2Vs",
+            "bF9pZBgBIAEoDBIaChJzaW5jZV90aW1lc3RhbXBfbXMYAiABKAwSEAoIbGF0",
+            "aXR1ZGUYAyABKAESEQoJbG9uZ2l0dWRlGAQgASgBIoEBChVHZXRNYXBPYmpl",
+            "Y3RzUmVzcG9uc2USPQoJbWFwX2NlbGxzGAEgAygLMiouUG9rZW1vbkdvLlJv",
+            "Y2tldEFQSS5HZW5lcmF0ZWRDb2RlLk1hcENlbGwSKQoGc3RhdHVzGAIgASgO",
+            "MhkuQWxsRW51bS5NYXBPYmplY3RzU3RhdHVzIuQECgdNYXBDZWxsEhIKCnMy",
+            "X2NlbGxfaWQYASABKAQSHAoUY3VycmVudF90aW1lc3RhbXBfbXMYAiABKAMS",
+            "OgoFZm9ydHMYAyADKAsyKy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
+            "ZENvZGUuRm9ydERhdGESQwoMc3Bhd25fcG9pbnRzGAQgAygLMi0uUG9rZW1v",
+            "bkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlNwYXduUG9pbnQSFwoPZGVs",
+            "ZXRlZF9vYmplY3RzGAYgAygJEhkKEWlzX3RydW5jYXRlZF9saXN0GAcgASgI",
+            "EkYKDmZvcnRfc3VtbWFyaWVzGAggAygLMi4uUG9rZW1vbkdvLlJvY2tldEFQ",
+            "SS5HZW5lcmF0ZWRDb2RlLkZvcnRTdW1tYXJ5Ek0KFmRlY2ltYXRlZF9zcGF3",
+            "bl9wb2ludHMYCSADKAsyLS5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
+            "ZENvZGUuU3Bhd25Qb2ludBJFCg13aWxkX3Bva2Vtb25zGAUgAygLMi4uUG9r",
+            "ZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLldpbGRQb2tlbW9uEkkK",
+            "EmNhdGNoYWJsZV9wb2tlbW9ucxgKIAMoCzItLlBva2Vtb25Hby5Sb2NrZXRB",
+            "UEkuR2VuZXJhdGVkQ29kZS5NYXBQb2tlbW9uEkkKD25lYXJieV9wb2tlbW9u",
+            "cxgLIAMoCzIwLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5O",
+            "ZWFyYnlQb2tlbW9uIpMECghGb3J0RGF0YRIKCgJpZBgBIAEoCRIiChpsYXN0",
+            "X21vZGlmaWVkX3RpbWVzdGFtcF9tcxgCIAEoAxIQCghsYXRpdHVkZRgDIAEo",
+            "ARIRCglsb25naXR1ZGUYBCABKAESDwoHZW5hYmxlZBgIIAEoCBIfCgR0eXBl",
+            "GAkgASgOMhEuQWxsRW51bS5Gb3J0VHlwZRIpCg1vd25lZF9ieV90ZWFtGAUg",
+            "ASgOMhIuQWxsRW51bS5UZWFtQ29sb3ISLAoQZ3VhcmRfcG9rZW1vbl9pZBgG",
+            "IAEoDjISLkFsbEVudW0uUG9rZW1vbklkEhgKEGd1YXJkX3Bva2Vtb25fY3AY",
+            "ByABKAUSEgoKZ3ltX3BvaW50cxgKIAEoAxIUCgxpc19pbl9iYXR0bGUYCyAB",
+            "KAgSJgoeY29vbGRvd25fY29tcGxldGVfdGltZXN0YW1wX21zGA4gASgDEiUK",
+            "B3Nwb25zb3IYDyABKA4yFC5BbGxFbnVtLkZvcnRTcG9uc29yEjIKDnJlbmRl",
+            "cmluZ190eXBlGBAgASgOMhouQWxsRW51bS5Gb3J0UmVuZGVyaW5nVHlwZRIc",
+            "ChRhY3RpdmVfZm9ydF9tb2RpZmllchgMIAEoDBJCCglsdXJlX2luZm8YDSAB",
+            "KAsyLy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRm9ydEx1",
+            "cmVJbmZvIoMBCgxGb3J0THVyZUluZm8SDwoHZm9ydF9pZBgBIAEoCRIQCgh1",
+            "bmtub3duMhgCIAEoARItChFhY3RpdmVfcG9rZW1vbl9pZBgDIAEoDjISLkFs",
+            "bEVudW0uUG9rZW1vbklkEiEKGWx1cmVfZXhwaXJlc190aW1lc3RhbXBfbXMY",
+            "BCABKAMiMQoKU3Bhd25Qb2ludBIQCghsYXRpdHVkZRgCIAEoARIRCglsb25n",
+            "aXR1ZGUYAyABKAEibwoLRm9ydFN1bW1hcnkSFwoPZm9ydF9zdW1tYXJ5X2lk",
+            "GAEgASgFEiIKGmxhc3RfbW9kaWZpZWRfdGltZXN0YW1wX21zGAIgASgFEhAK",
+            "CGxhdGl0dWRlGAMgASgFEhEKCWxvbmdpdHVkZRgEIAEoBSLmAQoLV2lsZFBv",
+            "a2Vtb24SFAoMZW5jb3VudGVyX2lkGAEgASgGEiIKGmxhc3RfbW9kaWZpZWRf",
+            "dGltZXN0YW1wX21zGAIgASgDEhAKCGxhdGl0dWRlGAMgASgBEhEKCWxvbmdp",
+            "dHVkZRgEIAEoARIVCg1zcGF3bnBvaW50X2lkGAUgASgJEkQKDHBva2Vtb25f",
+            "ZGF0YRgHIAEoCzIuLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
+            "ZS5Qb2tlbW9uRGF0YRIbChN0aW1lX3RpbGxfaGlkZGVuX21zGAsgASgFItoF",
+            "CgtQb2tlbW9uRGF0YRIKCgJpZBgBIAEoBhImCgpwb2tlbW9uX2lkGAIgASgO",
+            "MhIuQWxsRW51bS5Qb2tlbW9uSWQSCgoCY3AYAyABKAUSDwoHc3RhbWluYRgE",
+            "IAEoBRITCgtzdGFtaW5hX21heBgFIAEoBRIkCgZtb3ZlXzEYBiABKA4yFC5B",
+            "bGxFbnVtLlBva2Vtb25Nb3ZlEiQKBm1vdmVfMhgHIAEoDjIULkFsbEVudW0u",
+            "UG9rZW1vbk1vdmUSGAoQZGVwbG95ZWRfZm9ydF9pZBgIIAEoBRISCgpvd25l",
+            "cl9uYW1lGAkgASgJEg4KBmlzX2VnZxgKIAEoCBIcChRlZ2dfa21fd2Fsa2Vk",
+            "X3RhcmdldBgLIAEoBRIbChNlZ2dfa21fd2Fsa2VkX3N0YXJ0GAwgASgFEg4K",
+            "Bm9yaWdpbhgOIAEoBRIQCghoZWlnaHRfbRgPIAEoAhIRCgl3ZWlnaHRfa2cY",
+            "ECABKAISGQoRaW5kaXZpZHVhbF9hdHRhY2sYESABKAUSGgoSaW5kaXZpZHVh",
+            "bF9kZWZlbnNlGBIgASgFEhoKEmluZGl2aWR1YWxfc3RhbWluYRgTIAEoBRIV",
+            "Cg1jcF9tdWx0aXBsaWVyGBQgASgFEhAKCHBva2ViYWxsGBUgASgFEhgKEGNh",
+            "cHR1cmVkX2NlbGxfaWQYFiABKAQSGAoQYmF0dGxlc19hdHRhY2tlZBgXIAEo",
+            "BRIYChBiYXR0bGVzX2RlZmVuZGVkGBggASgFEhgKEGVnZ19pbmN1YmF0b3Jf",
+            "aWQYGSABKAUSGAoQY3JlYXRpb25fdGltZV9tcxgaIAEoBBIUCgxudW1fdXBn",
+            "cmFkZXMYGyABKAUSIAoYYWRkaXRpb25hbF9jcF9tdWx0aXBsaWVyGBwgASgF",
+            "EhAKCGZhdm9yaXRlGB0gASgFEhAKCG5pY2tuYW1lGB4gASgJEhEKCWZyb21f",
+            "Zm9ydBgfIAEoBSKnAQoKTWFwUG9rZW1vbhIVCg1zcGF3bnBvaW50X2lkGAEg",
+            "ASgJEhQKDGVuY291bnRlcl9pZBgCIAEoBhImCgpwb2tlbW9uX2lkGAMgASgO",
+            "MhIuQWxsRW51bS5Qb2tlbW9uSWQSHwoXZXhwaXJhdGlvbl90aW1lc3RhbXBf",
+            "bXMYBCABKAMSEAoIbGF0aXR1ZGUYBSABKAESEQoJbG9uZ2l0dWRlGAYgASgB",
+            "ImkKDU5lYXJieVBva2Vtb24SJgoKcG9rZW1vbl9pZBgBIAEoDjISLkFsbEVu",
+            "dW0uUG9rZW1vbklkEhoKEmRpc3RhbmNlX2luX21ldGVycxgCIAEoAhIUCgxl",
+            "bmNvdW50ZXJfaWQYAyABKAYifAoYRG93bmxvYWRTZXR0aW5nc1Jlc3BvbnNl",
+            "Eg0KBWVycm9yGAEgASgJEgwKBGhhc2gYAiABKAkSQwoIc2V0dGluZ3MYAyAB",
+            "KAsyMS5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuR2xvYmFs",
+            "U2V0dGluZ3Mi2gIKDkdsb2JhbFNldHRpbmdzEkYKDWZvcnRfc2V0dGluZ3MY",
+            "AiABKAsyLy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRm9y",
+            "dFNldHRpbmdzEkQKDG1hcF9zZXR0aW5ncxgDIAEoCzIuLlBva2Vtb25Hby5S",
+            "b2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5NYXBTZXR0aW5ncxJICg5sZXZlbF9z",
+            "ZXR0aW5ncxgEIAEoCzIwLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
+            "Q29kZS5MZXZlbFNldHRpbmdzElAKEmludmVudG9yeV9zZXR0aW5ncxgFIAEo",
+            "CzI0LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRv",
+            "cnlTZXR0aW5ncxIeChZtaW5pbXVtX2NsaWVudF92ZXJzaW9uGAYgASgJIuQB",
+            "CgxGb3J0U2V0dGluZ3MSIAoYaW50ZXJhY3Rpb25fcmFuZ2VfbWV0ZXJzGAEg",
+            "ASgBEiIKGm1heF90b3RhbF9kZXBsb3llZF9wb2tlbW9uGAIgASgFEiMKG21h",
+            "eF9wbGF5ZXJfZGVwbG95ZWRfcG9rZW1vbhgDIAEoBRIhChlkZXBsb3lfc3Rh",
+            "bWluYV9tdWx0aXBsaWVyGAQgASgBEiAKGGRlcGxveV9hdHRhY2tfbXVsdGlw",
+            "bGllchgFIAEoARIkChxmYXJfaW50ZXJhY3Rpb25fcmFuZ2VfbWV0ZXJzGAYg",
+            "ASgBIo8CCgtNYXBTZXR0aW5ncxIdChVwb2tlbW9uX3Zpc2libGVfcmFuZ2UY",
+            "ASABKAESHQoVcG9rZV9uYXZfcmFuZ2VfbWV0ZXJzGAIgASgBEh4KFmVuY291",
+            "bnRlcl9yYW5nZV9tZXRlcnMYAyABKAESKwojZ2V0X21hcF9vYmplY3RzX21p",
+            "bl9yZWZyZXNoX3NlY29uZHMYBCABKAISKwojZ2V0X21hcF9vYmplY3RzX21h",
+            "eF9yZWZyZXNoX3NlY29uZHMYBSABKAISKwojZ2V0X21hcF9vYmplY3RzX21p",
+            "bl9kaXN0YW5jZV9tZXRlcnMYBiABKAISGwoTZ29vZ2xlX21hcHNfYXBpX2tl",
+            "eRgHIAEoCSJRCg1MZXZlbFNldHRpbmdzEhsKE3RyYWluZXJfY3BfbW9kaWZp",
+            "ZXIYAiABKAESIwobdHJhaW5lcl9kaWZmaWN1bHR5X21vZGlmaWVyGAMgASgB",
+            "IoABChFJbnZlbnRvcnlTZXR0aW5ncxITCgttYXhfcG9rZW1vbhgBIAEoBRIV",
+            "Cg1tYXhfYmFnX2l0ZW1zGAIgASgFEhQKDGJhc2VfcG9rZW1vbhgDIAEoBRIW",
+            "Cg5iYXNlX2JhZ19pdGVtcxgEIAEoBRIRCgliYXNlX2VnZ3MYBSABKAUiOgoT",
+            "UGxheWVyVXBkYXRlUmVxdWVzdBIQCghsYXRpdHVkZRgBIAEoARIRCglsb25n",
+            "aXR1ZGUYAiABKAEirwEKFFBsYXllclVwZGF0ZVJlc3BvbnNlEkUKDXdpbGRf",
+            "cG9rZW1vbnMYASADKAsyLi5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
+            "ZENvZGUuV2lsZFBva2Vtb24SOgoFZm9ydHMYAiADKAsyKy5Qb2tlbW9uR28u",
+            "Um9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRm9ydERhdGESFAoMZm9ydHNfbmVh",
+            "cmJ5GAMgASgFIh4KHERvd25sb2FkSXRlbVRlbXBsYXRlc1JlcXVlc3Qi2woK",
+            "HURvd25sb2FkSXRlbVRlbXBsYXRlc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASAB",
+            "KAgSZQoOaXRlbV90ZW1wbGF0ZXMYAiADKAsyTS5Qb2tlbW9uR28uUm9ja2V0",
+            "QVBJLkdlbmVyYXRlZENvZGUuRG93bmxvYWRJdGVtVGVtcGxhdGVzUmVzcG9u",
+            "c2UuSXRlbVRlbXBsYXRlEhQKDHRpbWVzdGFtcF9tcxgDIAEoBBqrCQoMSXRl",
+            "bVRlbXBsYXRlEhMKC3RlbXBsYXRlX2lkGAEgASgJEkwKEHBva2Vtb25fc2V0",
+            "dGluZ3MYAiABKAsyMi5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENv",
+            "ZGUuUG9rZW1vblNldHRpbmdzEkYKDWl0ZW1fc2V0dGluZ3MYAyABKAsyLy5Q",
+            "b2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuSXRlbVNldHRpbmdz",
+            "EkYKDW1vdmVfc2V0dGluZ3MYBCABKAsyLy5Qb2tlbW9uR28uUm9ja2V0QVBJ",
+            "LkdlbmVyYXRlZENvZGUuTW92ZVNldHRpbmdzElcKFm1vdmVfc2VxdWVuY2Vf",
+            "c2V0dGluZ3MYBSABKAsyNy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
+            "ZENvZGUuTW92ZVNlcXVlbmNlU2V0dGluZ3MSUAoOdHlwZV9lZmZlY3RpdmUY",
+            "CCABKAsyOC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuVHlw",
+            "ZUVmZmVjdGl2ZVNldHRpbmdzEkgKDmJhZGdlX3NldHRpbmdzGAogASgLMjAu",
+            "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkJhZGdlU2V0dGlu",
+            "Z3MSQQoGY2FtZXJhGAsgASgLMjEuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5l",
+            "cmF0ZWRDb2RlLkNhbWVyYVNldHRpbmdzEkwKDHBsYXllcl9sZXZlbBgMIAEo",
+            "CzI2LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5QbGF5ZXJM",
+            "ZXZlbFNldHRpbmdzEkYKCWd5bV9sZXZlbBgNIAEoCzIzLlBva2Vtb25Hby5S",
+            "b2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5HeW1MZXZlbFNldHRpbmdzEk0KD2Jh",
+            "dHRsZV9zZXR0aW5ncxgOIAEoCzI0LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2Vu",
+            "ZXJhdGVkQ29kZS5HeW1CYXR0bGVTZXR0aW5ncxJQChJlbmNvdW50ZXJfc2V0",
+            "dGluZ3MYDyABKAsyNC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENv",
+            "ZGUuRW5jb3VudGVyU2V0dGluZ3MSSwoQaWFwX2l0ZW1fZGlzcGxheRgQIAEo",
+            "CzIxLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5JYXBJdGVt",
+            "RGlzcGxheRJECgxpYXBfc2V0dGluZ3MYESABKAsyLi5Qb2tlbW9uR28uUm9j",
+            "a2V0QVBJLkdlbmVyYXRlZENvZGUuSWFwU2V0dGluZ3MSUwoQcG9rZW1vbl91",
+            "cGdyYWRlcxgSIAEoCzI5LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
+            "Q29kZS5Qb2tlbW9uVXBncmFkZVNldHRpbmdzElEKD2VxdWlwcGVkX2JhZGdl",
+            "cxgTIAEoCzI4LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5F",
+            "cXVpcHBlZEJhZGdlU2V0dGluZ3MiaQoVVXNlSXRlbUNhcHR1cmVSZXF1ZXN0",
+            "EiAKB2l0ZW1faWQYASABKA4yDy5BbGxFbnVtLkl0ZW1JZBIUCgxlbmNvdW50",
+            "ZXJfaWQYAiABKAYSGAoQc3Bhd25fcG9pbnRfZ3VpZBgDIAEoCSKxAQoWVXNl",
+            "SXRlbUNhcHR1cmVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhkKEWl0ZW1f",
+            "Y2FwdHVyZV9tdWx0GAIgASgBEhYKDml0ZW1fZmxlZV9tdWx0GAMgASgBEhUK",
+            "DXN0b3BfbW92ZW1lbnQYBCABKAgSEwoLc3RvcF9hdHRhY2sYBSABKAgSEgoK",
+            "dGFyZ2V0X21heBgGIAEoCBITCgt0YXJnZXRfc2xvdxgHIAEoCCIrChVSZWxl",
+            "YXNlUG9rZW1vblJlcXVlc3QSEgoKcG9rZW1vbl9pZBgBIAEoBiLfAQoWUmVs",
+            "ZWFzZVBva2Vtb25SZXNwb25zZRJQCgZyZXN1bHQYASABKA4yQC5Qb2tlbW9u",
+            "R28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuUmVsZWFzZVBva2Vtb25SZXNw",
+            "b25zZS5SZXN1bHQSFQoNY2FuZHlfYXdhcmRlZBgCIAEoBSJcCgZSZXN1bHQS",
+            "CQoFVU5TRVQQABILCgdTVUNDRVNTEAESFAoQUE9LRU1PTl9ERVBMT1lFRBAC",
+            "EgoKBkZBSUxFRBADEhgKFEVSUk9SX1BPS0VNT05fSVNfRUdHEAQiFwoVR2V0",
+            "SGF0Y2hlZEVnZ3NSZXF1ZXN0Io4BChZHZXRIYXRjaGVkRWdnc1Jlc3BvbnNl",
+            "Eg8KB3N1Y2Nlc3MYASABKAgSFgoKcG9rZW1vbl9pZBgCIAMoBEICEAESGgoS",
+            "ZXhwZXJpZW5jZV9hd2FyZGVkGAMgAygFEhUKDWNhbmR5X2F3YXJkZWQYBCAD",
+            "KAUSGAoQc3RhcmR1c3RfYXdhcmRlZBgFIAMoBSKGAQoRRm9ydFNlYXJjaFJl",
+            "cXVlc3QSDwoHZm9ydF9pZBgBIAEoCRIXCg9wbGF5ZXJfbGF0aXR1ZGUYAiAB",
+            "KAESGAoQcGxheWVyX2xvbmdpdHVkZRgDIAEoARIVCg1mb3J0X2xhdGl0dWRl",
+            "GAQgASgBEhYKDmZvcnRfbG9uZ2l0dWRlGAUgASgBIq0EChJGb3J0U2VhcmNo",
+            "UmVzcG9uc2USTAoGcmVzdWx0GAEgASgOMjwuUG9rZW1vbkdvLlJvY2tldEFQ",
+            "SS5HZW5lcmF0ZWRDb2RlLkZvcnRTZWFyY2hSZXNwb25zZS5SZXN1bHQSVgoN",
+            "aXRlbXNfYXdhcmRlZBgCIAMoCzI/LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2Vu",
+            "ZXJhdGVkQ29kZS5Gb3J0U2VhcmNoUmVzcG9uc2UuSXRlbUF3YXJkEhQKDGdl",
+            "bXNfYXdhcmRlZBgDIAEoBRJIChBwb2tlbW9uX2RhdGFfZWdnGAQgASgLMi4u",
+            "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlBva2Vtb25EYXRh",
+            "EhoKEmV4cGVyaWVuY2VfYXdhcmRlZBgFIAEoBRImCh5jb29sZG93bl9jb21w",
+            "bGV0ZV90aW1lc3RhbXBfbXMYBiABKAMSIgoaY2hhaW5faGFja19zZXF1ZW5j",
+            "ZV9udW1iZXIYByABKAUaQQoJSXRlbUF3YXJkEiAKB2l0ZW1faWQYASABKA4y",
+            "Dy5BbGxFbnVtLkl0ZW1JZBISCgppdGVtX2NvdW50GAIgASgFImYKBlJlc3Vs",
+            "dBIRCg1OT19SRVNVTFRfU0VUEAASCwoHU1VDQ0VTUxABEhAKDE9VVF9PRl9S",
+            "QU5HRRACEhYKEklOX0NPT0xET1dOX1BFUklPRBADEhIKDklOVkVOVE9SWV9G",
+            "VUxMEAQiSgoSRm9ydERldGFpbHNSZXF1ZXN0Eg8KB2ZvcnRfaWQYASABKAkS",
+            "EAoIbGF0aXR1ZGUYAiABKAESEQoJbG9uZ2l0dWRlGAMgASgBIocDChNGb3J0",
+            "RGV0YWlsc1Jlc3BvbnNlEg8KB2ZvcnRfaWQYASABKAkSJgoKdGVhbV9jb2xv",
+            "chgCIAEoDjISLkFsbEVudW0uVGVhbUNvbG9yEkQKDHBva2Vtb25fZGF0YRgD",
+            "IAEoCzIuLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5Qb2tl",
+            "bW9uRGF0YRIMCgRuYW1lGAQgASgJEhIKCmltYWdlX3VybHMYBSADKAkSCgoC",
+            "ZnAYBiABKAUSDwoHc3RhbWluYRgHIAEoBRITCgttYXhfc3RhbWluYRgIIAEo",
+            "BRIfCgR0eXBlGAkgASgOMhEuQWxsRW51bS5Gb3J0VHlwZRIQCghsYXRpdHVk",
+            "ZRgKIAEoARIRCglsb25naXR1ZGUYCyABKAESEwoLZGVzY3JpcHRpb24YDCAB",
+            "KAkSQgoJbW9kaWZpZXJzGA0gAygLMi8uUG9rZW1vbkdvLlJvY2tldEFQSS5H",
+            "ZW5lcmF0ZWRDb2RlLkZvcnRNb2RpZmllciJzCgxGb3J0TW9kaWZpZXISIAoH",
+            "aXRlbV9pZBgBIAEoDjIPLkFsbEVudW0uSXRlbUlkEh8KF2V4cGlyYXRpb25f",
+            "dGltZXN0YW1wX21zGAIgASgDEiAKGGRlcGxveWVyX3BsYXllcl9jb2RlbmFt",
+            "ZRgDIAEoCSJyChBFbmNvdW50ZXJSZXF1ZXN0EhQKDGVuY291bnRlcl9pZBgB",
+            "IAEoBhIVCg1zcGF3bnBvaW50X2lkGAIgASgJEhcKD3BsYXllcl9sYXRpdHVk",
+            "ZRgDIAEoARIYChBwbGF5ZXJfbG9uZ2l0dWRlGAQgASgBIs0EChFFbmNvdW50",
+            "ZXJSZXNwb25zZRJECgx3aWxkX3Bva2Vtb24YASABKAsyLi5Qb2tlbW9uR28u",
+            "Um9ja2V0QVBJLkdlbmVyYXRlZENvZGUuV2lsZFBva2Vtb24SUwoKYmFja2dy",
+            "b3VuZBgCIAEoDjI/LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
+            "ZS5FbmNvdW50ZXJSZXNwb25zZS5CYWNrZ3JvdW5kEksKBnN0YXR1cxgDIAEo",
+            "DjI7LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5FbmNvdW50",
+            "ZXJSZXNwb25zZS5TdGF0dXMSUgoTY2FwdHVyZV9wcm9iYWJpbGl0eRgEIAEo",
+            "CzI1LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5DYXB0dXJl",
+            "UHJvYmFiaWxpdHkiIgoKQmFja2dyb3VuZBIICgRQQVJLEAASCgoGREVTRVJU",
+            "EAEi1wEKBlN0YXR1cxITCg9FTkNPVU5URVJfRVJST1IQABIVChFFTkNPVU5U",
+            "RVJfU1VDQ0VTUxABEhcKE0VOQ09VTlRFUl9OT1RfRk9VTkQQAhIUChBFTkNP",
+            "VU5URVJfQ0xPU0VEEAMSGgoWRU5DT1VOVEVSX1BPS0VNT05fRkxFRBAEEhoK",
+            "FkVOQ09VTlRFUl9OT1RfSU5fUkFOR0UQBRIeChpFTkNPVU5URVJfQUxSRUFE",
+            "WV9IQVBQRU5FRBAGEhoKFlBPS0VNT05fSU5WRU5UT1JZX0ZVTEwQByJ7ChJD",
+            "YXB0dXJlUHJvYmFiaWxpdHkSJgoNcG9rZWJhbGxfdHlwZRgBIAMoDjIPLkFs",
+            "bEVudW0uSXRlbUlkEhsKE2NhcHR1cmVfcHJvYmFiaWxpdHkYAiADKAISIAoY",
+            "cmV0aWNsZV9kaWZmaWN1bHR5X3NjYWxlGAwgASgBInAKFERpc2tFbmNvdW50",
+            "ZXJSZXF1ZXN0EhQKDGVuY291bnRlcl9pZBgBIAEoBhIPCgdmb3J0X2lkGAIg",
+            "ASgJEhcKD3BsYXllcl9sYXRpdHVkZRgDIAEoARIYChBwbGF5ZXJfbG9uZ2l0",
+            "dWRlGAQgASgBIogDChVEaXNrRW5jb3VudGVyUmVzcG9uc2USTwoGcmVzdWx0",
+            "GAEgASgOMj8uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkRp",
+            "c2tFbmNvdW50ZXJSZXNwb25zZS5SZXN1bHQSRAoMcG9rZW1vbl9kYXRhGAIg",
+            "ASgLMi4uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlBva2Vt",
+            "b25EYXRhElIKE2NhcHR1cmVfcHJvYmFiaWxpdHkYAyABKAsyNS5Qb2tlbW9u",
+            "R28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuQ2FwdHVyZVByb2JhYmlsaXR5",
+            "IoMBCgZSZXN1bHQSCwoHVU5LTk9XThAAEgsKB1NVQ0NFU1MQARIRCg1OT1Rf",
+            "QVZBSUxBQkxFEAISEAoMTk9UX0lOX1JBTkdFEAMSHgoaRU5DT1VOVEVSX0FM",
+            "UkVBRFlfRklOSVNIRUQQBBIaChZQT0tFTU9OX0lOVkVOVE9SWV9GVUxMEAUi",
+            "wwEKE0NhdGNoUG9rZW1vblJlcXVlc3QSFAoMZW5jb3VudGVyX2lkGAEgASgG",
+            "EhAKCHBva2ViYWxsGAIgASgFEh8KF25vcm1hbGl6ZWRfcmV0aWNsZV9zaXpl",
+            "GAMgASgBEhgKEHNwYXduX3BvaW50X2d1aWQYBCABKAkSEwoLaGl0X3Bva2Vt",
+            "b24YBSABKAgSFQoNc3Bpbl9tb2RpZmllchgGIAEoARIdChVOb3JtYWxpemVk",
+            "SGl0UG9zaXRpb24YByABKAEixgIKFENhdGNoUG9rZW1vblJlc3BvbnNlElMK",
+            "BnN0YXR1cxgBIAEoDjJDLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
+            "Q29kZS5DYXRjaFBva2Vtb25SZXNwb25zZS5DYXRjaFN0YXR1cxIUCgxtaXNz",
+            "X3BlcmNlbnQYAiABKAESGwoTY2FwdHVyZWRfcG9rZW1vbl9pZBgDIAEoBBI/",
+            "CgZzY29yZXMYBCABKAsyLy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
+            "ZENvZGUuQ2FwdHVyZVNjb3JlImUKC0NhdGNoU3RhdHVzEg8KC0NBVENIX0VS",
+            "Uk9SEAASEQoNQ0FUQ0hfU1VDQ0VTUxABEhAKDENBVENIX0VTQ0FQRRACEg4K",
+            "CkNBVENIX0ZMRUUQAxIQCgxDQVRDSF9NSVNTRUQQBCJpCgxDYXB0dXJlU2Nv",
+            "cmUSLAoNYWN0aXZpdHlfdHlwZRgBIAMoDjIVLkFsbEVudW0uQWN0aXZpdHlU",
+            "eXBlEgoKAnhwGAIgAygFEg0KBWNhbmR5GAMgAygFEhAKCHN0YXJkdXN0GAQg",
+            "AygFIhsKGUNoZWNrQXdhcmRlZEJhZGdlc1JlcXVlc3QidwoaQ2hlY2tBd2Fy",
+            "ZGVkQmFkZ2VzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIqCg5hd2FyZGVk",
+            "X2JhZGdlcxgCIAMoDjISLkFsbEVudW0uQmFkZ2VUeXBlEhwKFGF3YXJkZWRf",
+            "YmFkZ2VfbGV2ZWxzGAMgAygFInkKFUVxdWlwcGVkQmFkZ2VTZXR0aW5ncxIf",
+            "ChdlcXVpcF9iYWRnZV9jb29sZG93bl9tcxgBIAEoAxIfChdjYXRjaF9wcm9i",
+            "YWJpbGl0eV9ib251cxgCIAMoAhIeChZmbGVlX3Byb2JhYmlsaXR5X2JvbnVz",
+            "GAMgAygCIoQBChZQb2tlbW9uVXBncmFkZVNldHRpbmdzEhoKEnVwZ3JhZGVz",
+            "X3Blcl9sZXZlbBgBIAEoBRIjChthbGxvd2VkX2xldmVsc19hYm92ZV9wbGF5",
+            "ZXIYAiABKAUSEgoKY2FuZHlfY29zdBgDIAMoBRIVCg1zdGFyZHVzdF9jb3N0",
+            "GAQgAygFIowCCgtJYXBTZXR0aW5ncxIZChFkYWlseV9ib251c19jb2lucxgB",
+            "IAEoBRIoCiBkYWlseV9kZWZlbmRlcl9ib251c19wZXJfcG9rZW1vbhgCIAMo",
+            "BRIqCiJkYWlseV9kZWZlbmRlcl9ib251c19tYXhfZGVmZW5kZXJzGAMgASgF",
+            "EiUKHWRhaWx5X2RlZmVuZGVyX2JvbnVzX2N1cnJlbmN5GAQgAygJEiIKGm1p",
+            "bl90aW1lX2JldHdlZW5fY2xhaW1zX21zGAUgASgDEhsKE2RhaWx5X2JvbnVz",
+            "X2VuYWJsZWQYBiABKAgSJAocZGFpbHlfZGVmZW5kZXJfYm9udXNfZW5hYmxl",
+            "ZBgHIAEoCCKUAQoOSWFwSXRlbURpc3BsYXkSCwoDc2t1GAEgASgJEi4KCGNh",
+            "dGVnb3J5GAIgASgOMhwuQWxsRW51bS5Ib2xvSWFwSXRlbUNhdGVnb3J5EhIK",
+            "CnNvcnRfb3JkZXIYAyABKAUSIQoIaXRlbV9pZHMYBCADKA4yDy5BbGxFbnVt",
+            "Lkl0ZW1JZBIOCgZjb3VudHMYBSADKAUirgEKEUVuY291bnRlclNldHRpbmdz",
+            "EhwKFHNwaW5fYm9udXNfdGhyZXNob2xkGAEgASgCEiEKGWV4Y2VsbGVudF90",
+            "aHJvd190aHJlc2hvbGQYAiABKAISHQoVZ3JlYXRfdGhyb3dfdGhyZXNob2xk",
+            "GAMgASgCEhwKFG5pY2VfdGhyb3dfdGhyZXNob2xkGAQgASgCEhsKE21pbGVz",
+            "dG9uZV90aHJlc2hvbGQYBSABKAUixgMKEUd5bUJhdHRsZVNldHRpbmdzEhYK",
+            "DmVuZXJneV9wZXJfc2VjGAEgASgCEhkKEWRvZGdlX2VuZXJneV9jb3N0GAIg",
+            "ASgCEhgKEHJldGFyZ2V0X3NlY29uZHMYAyABKAISHQoVZW5lbXlfYXR0YWNr",
+            "X2ludGVydmFsGAQgASgCEh4KFmF0dGFja19zZXJ2ZXJfaW50ZXJ2YWwYBSAB",
+            "KAISHgoWcm91bmRfZHVyYXRpb25fc2Vjb25kcxgGIAEoAhIjChtib251c190",
+            "aW1lX3Blcl9hbGx5X3NlY29uZHMYByABKAISJAocbWF4aW11bV9hdHRhY2tl",
+            "cnNfcGVyX2JhdHRsZRgIIAEoBRIpCiFzYW1lX3R5cGVfYXR0YWNrX2JvbnVz",
+            "X211bHRpcGxpZXIYCSABKAISFgoObWF4aW11bV9lbmVyZ3kYCiABKAUSJAoc",
+            "ZW5lcmd5X2RlbHRhX3Blcl9oZWFsdGhfbG9zdBgLIAEoAhIZChFkb2RnZV9k",
+            "dXJhdGlvbl9tcxgMIAEoBRIcChRtaW5pbXVtX3BsYXllcl9sZXZlbBgNIAEo",
+            "BRIYChBzd2FwX2R1cmF0aW9uX21zGA4gASgFIncKEEd5bUxldmVsU2V0dGlu",
+            "Z3MSGwoTcmVxdWlyZWRfZXhwZXJpZW5jZRgBIAMoBRIUCgxsZWFkZXJfc2xv",
+            "dHMYAiADKAUSFQoNdHJhaW5lcl9zbG90cxgDIAMoBRIZChFzZWFyY2hfcm9s",
+            "bF9ib251cxgEIAMoBSKdAQoTUGxheWVyTGV2ZWxTZXR0aW5ncxIQCghyYW5r",
+            "X251bRgBIAMoBRIbChNyZXF1aXJlZF9leHBlcmllbmNlGAIgAygFEhUKDWNw",
+            "X211bHRpcGxpZXIYAyADKAISHAoUbWF4X2VnZ19wbGF5ZXJfbGV2ZWwYBCAB",
+            "KAUSIgoabWF4X2VuY291bnRlcl9wbGF5ZXJfbGV2ZWwYBSABKAUixQMKDkNh",
+            "bWVyYVNldHRpbmdzEhMKC25leHRfY2FtZXJhGAEgASgJEjMKDWludGVycG9s",
+            "YXRpb24YAiADKA4yHC5BbGxFbnVtLkNhbWVyYUludGVycG9sYXRpb24SKgoL",
+            "dGFyZ2V0X3R5cGUYAyADKA4yFS5BbGxFbnVtLkNhbWVyYVRhcmdldBIVCg1l",
+            "YXNlX2luX3NwZWVkGAQgAygCEhYKDmVhc3Rfb3V0X3NwZWVkGAUgAygCEhgK",
+            "EGR1cmF0aW9uX3NlY29uZHMYBiADKAISFAoMd2FpdF9zZWNvbmRzGAcgAygC",
+            "EhoKEnRyYW5zaXRpb25fc2Vjb25kcxgIIAMoAhIUCgxhbmdsZV9kZWdyZWUY",
+            "CSADKAISGwoTYW5nbGVfb2Zmc2V0X2RlZ3JlZRgKIAMoAhIUCgxwaXRjaF9k",
+            "ZWdyZWUYCyADKAISGwoTcGl0Y2hfb2Zmc2V0X2RlZ3JlZRgMIAMoAhITCgty",
+            "b2xsX2RlZ3JlZRgNIAMoAhIXCg9kaXN0YW5jZV9tZXRlcnMYDiADKAISFgoO",
+            "aGVpZ2h0X3BlcmNlbnQYDyADKAISFgoOdmVydF9jdHJfcmF0aW8YECADKAIi",
+            "XAoNQmFkZ2VTZXR0aW5ncxImCgpiYWRnZV90eXBlGAEgASgOMhIuQWxsRW51",
+            "bS5CYWRnZVR5cGUSEgoKYmFkZ2VfcmFuaxgCIAEoBRIPCgd0YXJnZXRzGAMg",
+            "AygFIlkKFVR5cGVFZmZlY3RpdmVTZXR0aW5ncxIVCg1hdHRhY2tfc2NhbGFy",
+            "GAEgAygCEikKC2F0dGFja190eXBlGAIgASgOMhQuQWxsRW51bS5Qb2tlbW9u",
+            "VHlwZSIoChRNb3ZlU2VxdWVuY2VTZXR0aW5ncxIQCghzZXF1ZW5jZRgBIAMo",
+            "CSKnAwoMTW92ZVNldHRpbmdzEjEKC21vdmVtZW50X2lkGAEgASgOMhwuQWxs",
+            "RW51bS5Qb2tlbW9uTW92ZW1lbnRUeXBlEhQKDGFuaW1hdGlvbl9pZBgCIAEo",
+            "BRIqCgxwb2tlbW9uX3R5cGUYAyABKA4yFC5BbGxFbnVtLlBva2Vtb25UeXBl",
+            "Eg0KBXBvd2VyGAQgASgCEhcKD2FjY3VyYWN5X2NoYW5jZRgFIAEoAhIXCg9j",
+            "cml0aWNhbF9jaGFuY2UYBiABKAISEwoLaGVhbF9zY2FsYXIYByABKAISGwoT",
+            "c3RhbWluYV9sb3NzX3NjYWxhchgIIAEoAhIZChF0cmFpbmVyX2xldmVsX21p",
+            "bhgJIAEoBRIZChF0cmFpbmVyX2xldmVsX21heBgKIAEoBRIQCgh2ZnhfbmFt",
+            "ZRgLIAEoCRITCgtkdXJhdGlvbl9tcxgMIAEoBRIeChZkYW1hZ2Vfd2luZG93",
+            "X3N0YXJ0X21zGA0gASgFEhwKFGRhbWFnZV93aW5kb3dfZW5kX21zGA4gASgF",
+            "EhQKDGVuZXJneV9kZWx0YRgPIAEoBSK+BgoPUG9rZW1vblNldHRpbmdzEiYK",
+            "CnBva2Vtb25faWQYASABKA4yEi5BbGxFbnVtLlBva2Vtb25JZBITCgttb2Rl",
+            "bF9zY2FsZRgDIAEoAhIiCgR0eXBlGAQgASgOMhQuQWxsRW51bS5Qb2tlbW9u",
+            "VHlwZRIkCgZ0eXBlXzIYBSABKA4yFC5BbGxFbnVtLlBva2Vtb25UeXBlEkMK",
+            "BmNhbWVyYRgGIAEoCzIzLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
+            "Q29kZS5DYW1lcmFBdHRyaWJ1dGVzEkkKCWVuY291bnRlchgHIAEoCzI2LlBv",
+            "a2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5FbmNvdW50ZXJBdHRy",
+            "aWJ1dGVzEkEKBXN0YXRzGAggASgLMjIuUG9rZW1vbkdvLlJvY2tldEFQSS5H",
+            "ZW5lcmF0ZWRDb2RlLlN0YXRzQXR0cmlidXRlcxIpCgtxdWlja19tb3ZlcxgJ",
+            "IAMoDjIULkFsbEVudW0uUG9rZW1vbk1vdmUSLQoPY2luZW1hdGljX21vdmVz",
+            "GAogAygOMhQuQWxsRW51bS5Qb2tlbW9uTW92ZRIWCg5hbmltYXRpb25fdGlt",
+            "ZRgLIAMoAhIpCg1ldm9sdXRpb25faWRzGAwgAygOMhIuQWxsRW51bS5Qb2tl",
+            "bW9uSWQSFgoOZXZvbHV0aW9uX3BpcHMYDSABKAUSJAoFY2xhc3MYDiABKA4y",
+            "FS5BbGxFbnVtLlBva2Vtb25DbGFzcxIYChBwb2tlZGV4X2hlaWdodF9tGA8g",
+            "ASgCEhkKEXBva2VkZXhfd2VpZ2h0X2tnGBAgASgCEi0KEXBhcmVudF9wb2tl",
+            "bW9uX2lkGBEgASgOMhIuQWxsRW51bS5Qb2tlbW9uSWQSFgoOaGVpZ2h0X3N0",
+            "ZF9kZXYYEiABKAISFgoOd2VpZ2h0X3N0ZF9kZXYYEyABKAISHAoUa21fZGlz",
+            "dGFuY2VfdG9faGF0Y2gYFCABKAISKwoJZmFtaWx5X2lkGBUgASgOMhguQWxs",
+            "RW51bS5Qb2tlbW9uRmFtaWx5SWQSFwoPY2FuZHlfdG9fZXZvbHZlGBYgASgF",
+            "IpcBChBDYW1lcmFBdHRyaWJ1dGVzEhUKDWRpc2tfcmFkaXVzX20YASABKAIS",
+            "GQoRY3lsaW5kZXJfcmFkaXVzX20YAiABKAISGQoRY3lsaW5kZXJfaGVpZ2h0",
+            "X20YAyABKAISGQoRY3lsaW5kZXJfZ3JvdW5kX20YBCABKAISGwoTc2hvdWxk",
+            "ZXJfbW9kZV9zY2FsZRgFIAEoAiKdAgoTRW5jb3VudGVyQXR0cmlidXRlcxIZ",
+            "ChFiYXNlX2NhcHR1cmVfcmF0ZRgBIAEoAhIWCg5iYXNlX2ZsZWVfcmF0ZRgC",
+            "IAEoAhIaChJjb2xsaXNpb25fcmFkaXVzX20YAyABKAISGgoSY29sbGlzaW9u",
+            "X2hlaWdodF9tGAQgASgCEh8KF2NvbGxpc2lvbl9oZWFkX3JhZGl1c19tGAUg",
+            "ASgCEjMKDW1vdmVtZW50X3R5cGUYBiABKA4yHC5BbGxFbnVtLlBva2Vtb25N",
+            "b3ZlbWVudFR5cGUSGAoQbW92ZW1lbnRfdGltZXJfcxgHIAEoAhITCgtqdW1w",
+            "X3RpbWVfcxgIIAEoAhIWCg5hdHRhY2tfdGltZXJfcxgJIAEoAiJuCg9TdGF0",
+            "c0F0dHJpYnV0ZXMSFAoMYmFzZV9zdGFtaW5hGAEgASgFEhMKC2Jhc2VfYXR0",
+            "YWNrGAIgASgFEhQKDGJhc2VfZGVmZW5zZRgDIAEoBRIaChJkb2RnZV9lbmVy",
+            "Z3lfZGVsdGEYCCABKAUinAcKDEl0ZW1TZXR0aW5ncxIgCgdpdGVtX2lkGAEg",
+            "ASgOMg8uQWxsRW51bS5JdGVtSWQSJAoJaXRlbV90eXBlGAIgASgOMhEuQWxs",
+            "RW51bS5JdGVtVHlwZRInCghjYXRlZ29yeRgDIAEoDjIVLkFsbEVudW0uSXRl",
+            "bUNhdGVnb3J5EhEKCWRyb3BfZnJlcRgEIAEoAhIaChJkcm9wX3RyYWluZXJf",
+            "bGV2ZWwYBSABKAUSRwoIcG9rZWJhbGwYBiABKAsyNS5Qb2tlbW9uR28uUm9j",
+            "a2V0QVBJLkdlbmVyYXRlZENvZGUuUG9rZWJhbGxBdHRyaWJ1dGVzEkMKBnBv",
+            "dGlvbhgHIAEoCzIzLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
+            "ZS5Qb3Rpb25BdHRyaWJ1dGVzEkMKBnJldml2ZRgIIAEoCzIzLlBva2Vtb25H",
+            "by5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5SZXZpdmVBdHRyaWJ1dGVzEkMK",
+            "BmJhdHRsZRgJIAEoCzIzLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
+            "Q29kZS5CYXR0bGVBdHRyaWJ1dGVzEj8KBGZvb2QYCiABKAsyMS5Qb2tlbW9u",
+            "R28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRm9vZEF0dHJpYnV0ZXMSWAoR",
+            "aW52ZW50b3J5X3VwZ3JhZGUYCyABKAsyPS5Qb2tlbW9uR28uUm9ja2V0QVBJ",
+            "LkdlbmVyYXRlZENvZGUuSW52ZW50b3J5VXBncmFkZUF0dHJpYnV0ZXMSTgoI",
+            "eHBfYm9vc3QYDCABKAsyPC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
+            "ZENvZGUuRXhwZXJpZW5jZUJvb3N0QXR0cmlidXRlcxJFCgdpbmNlbnNlGA0g",
+            "ASgLMjQuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkluY2Vu",
+            "c2VBdHRyaWJ1dGVzElAKDWVnZ19pbmN1YmF0b3IYDiABKAsyOS5Qb2tlbW9u",
+            "R28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRWdnSW5jdWJhdG9yQXR0cmli",
+            "dXRlcxJQCg1mb3J0X21vZGlmaWVyGA8gASgLMjkuUG9rZW1vbkdvLlJvY2tl",
+            "dEFQSS5HZW5lcmF0ZWRDb2RlLkZvcnRNb2RpZmllckF0dHJpYnV0ZXMiJwoQ",
+            "QmF0dGxlQXR0cmlidXRlcxITCgtzdGFfcGVyY2VudBgBIAEoAiJ2ChZFZ2dJ",
+            "bmN1YmF0b3JBdHRyaWJ1dGVzEjEKDmluY3ViYXRvcl90eXBlGAEgASgOMhku",
+            "QWxsRW51bS5FZ2dJbmN1YmF0b3JUeXBlEgwKBHVzZXMYAiABKAUSGwoTZGlz",
+            "dGFuY2VfbXVsdGlwbGllchgDIAEoAiJNChlFeHBlcmllbmNlQm9vc3RBdHRy",
+            "aWJ1dGVzEhUKDXhwX211bHRpcGxpZXIYASABKAISGQoRYm9vc3RfZHVyYXRp",
+            "b25fbXMYAiABKAUibwoORm9vZEF0dHJpYnV0ZXMSKAoLaXRlbV9lZmZlY3QY",
+            "ASADKA4yEy5BbGxFbnVtLkl0ZW1FZmZlY3QSGwoTaXRlbV9lZmZlY3RfcGVy",
+            "Y2VudBgCIAMoAhIWCg5ncm93dGhfcGVyY2VudBgDIAEoAiJiChZGb3J0TW9k",
+            "aWZpZXJBdHRyaWJ1dGVzEiEKGW1vZGlmaWVyX2xpZmV0aW1lX3NlY29uZHMY",
+            "ASABKAUSJQoddHJveV9kaXNrX251bV9wb2tlbW9uX3NwYXduZWQYAiABKAUi",
+            "yQIKEUluY2Vuc2VBdHRyaWJ1dGVzEiAKGGluY2Vuc2VfbGlmZXRpbWVfc2Vj",
+            "b25kcxgBIAEoBRIqCgxwb2tlbW9uX3R5cGUYAiADKA4yFC5BbGxFbnVtLlBv",
+            "a2Vtb25UeXBlEigKIHBva2Vtb25faW5jZW5zZV90eXBlX3Byb2JhYmlsaXR5",
+            "GAMgASgCEjAKKHN0YW5kaW5nX3RpbWVfYmV0d2Vlbl9lbmNvdW50ZXJzX3Nl",
+            "Y29uZHMYBCABKAUSLQolbW92aW5nX3RpbWVfYmV0d2Vlbl9lbmNvdW50ZXJf",
+            "c2Vjb25kcxgFIAEoBRI1Ci1kaXN0YW5jZV9yZXF1aXJlZF9mb3Jfc2hvcnRl",
+            "cl9pbnRlcnZhbF9tZXRlcnMYBiABKAUSJAoccG9rZW1vbl9hdHRyYWN0ZWRf",
+            "bGVuZ3RoX3NlYxgHIAEoBSJtChpJbnZlbnRvcnlVcGdyYWRlQXR0cmlidXRl",
+            "cxIaChJhZGRpdGlvbmFsX3N0b3JhZ2UYASABKAUSMwoMdXBncmFkZV90eXBl",
+            "GAIgASgOMh0uQWxsRW51bS5JbnZlbnRvcnlVcGdyYWRlVHlwZSKMAQoSUG9r",
+            "ZWJhbGxBdHRyaWJ1dGVzEigKC2l0ZW1fZWZmZWN0GAEgASgOMhMuQWxsRW51",
+            "bS5JdGVtRWZmZWN0EhUKDWNhcHR1cmVfbXVsdGkYAiABKAISHAoUY2FwdHVy",
+            "ZV9tdWx0aV9lZmZlY3QYAyABKAISFwoPaXRlbV9lZmZlY3RfbW9kGAQgASgC",
+            "IjsKEFBvdGlvbkF0dHJpYnV0ZXMSEwoLc3RhX3BlcmNlbnQYASABKAISEgoK",
+            "c3RhX2Ftb3VudBgCIAEoBSInChBSZXZpdmVBdHRyaWJ1dGVzEhMKC3N0YV9w",
+            "ZXJjZW50GAEgASgCIiQKD1RyYW5zZmVyUG9rZW1vbhIRCglQb2tlbW9uSWQY",
+            "ASABKAYiOgoSVHJhbnNmZXJQb2tlbW9uT3V0Eg4KBlN0YXR1cxgBIAEoBRIU",
+            "CgxDYW5keUF3YXJkZWQYAiABKAUiIgoNRXZvbHZlUG9rZW1vbhIRCglQb2tl",
+            "bW9uSWQYASABKAYikAEKEEV2b2x2ZVBva2Vtb25PdXQSDgoGUmVzdWx0GAEg",
+            "ASgFEkIKDkV2b2x2ZWRQb2tlbW9uGAIgASgLMiouUG9rZW1vbkdvLlJvY2tl",
+            "dEFQSS5HZW5lcmF0ZWRDb2RlLlBva2Vtb24SEgoKRXhwQXdhcmRlZBgDIAEo",
+            "BRIUCgxDYW5keUF3YXJkZWQYBCABKAViBnByb3RvMw=="));
+      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+          new pbr::FileDescriptor[] { global::AllEnum.AllEnumReflection.Descriptor, },
+          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetPlayerResponse), global::PokemonGo.RocketAPI.GeneratedCode.GetPlayerResponse.Parser, new[]{ "Unknown1", "Profile" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Profile), global::PokemonGo.RocketAPI.GeneratedCode.Profile.Parser, new[]{ "CreationTime", "Username", "Team", "Tutorial", "Avatar", "PokeStorage", "ItemStorage", "DailyBonus", "Unknown12", "Unknown13", "Currency" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus), global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus.Parser, new[]{ "NextCollectTimestampMs", "NextDefenderBonusCollectTimestampMs" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Currency), global::PokemonGo.RocketAPI.GeneratedCode.Currency.Parser, new[]{ "Type", "Amount" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails), global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails.Parser, new[]{ "Unknown2", "Unknown3", "Unknown9", "Unknown10" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.DownloadSettingsRequest), global::PokemonGo.RocketAPI.GeneratedCode.DownloadSettingsRequest.Parser, new[]{ "Hash" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetInventoryResponse), global::PokemonGo.RocketAPI.GeneratedCode.GetInventoryResponse.Parser, new[]{ "Success", "InventoryDelta" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta), global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta.Parser, new[]{ "OriginalTimestampMs", "NewTimestampMs", "InventoryItems" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem), global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem.Parser, new[]{ "ModifiedTimestampMs", "DeletedItemKey", "InventoryItemData" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData), global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData.Parser, new[]{ "Pokemon", "Item", "PokedexEntry", "PlayerStats", "PlayerCurrency", "PlayerCamera", "InventoryUpgrades", "AppliedItems", "EggIncubators", "PokemonFamily" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Pokemon), global::PokemonGo.RocketAPI.GeneratedCode.Pokemon.Parser, new[]{ "Id", "PokemonType", "Cp", "Stamina", "StaminaMax", "Move1", "Move2", "DeployedFortId", "OwnerName", "IsEgg", "EggKmWalkedTarget", "EggKmWalkedStart", "Origin", "HeightM", "WeightKg", "IndividualAttack", "IndividualDefense", "IndividualStamina", "CpMultiplier", "Pokeball", "CapturedCellId", "BattlesAttacked", "BattlesDefended", "EggIncubatorId", "CreationTimeMs", "NumUpgrades", "AdditionalCpMultiplier", "Favorite", "Nickname", "FromFort" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Item), global::PokemonGo.RocketAPI.GeneratedCode.Item.Parser, new[]{ "Item_", "Count", "Unseen" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry), global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry.Parser, new[]{ "PokedexEntryNumber", "TimesEncountered", "TimesCaptured", "EvolutionStonePieces", "EvolutionStones" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats), global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats.Parser, new[]{ "Level", "Experience", "PrevLevelXp", "NextLevelXp", "KmWalked", "PokemonsEncountered", "UniquePokedexEntries", "PokemonsCaptured", "Evolutions", "PokeStopVisits", "PokeballsThrown", "EggsHatched", "BigMagikarpCaught", "BattleAttackWon", "BattleAttackTotal", "BattleDefendedWon", "BattleTrainingWon", "BattleTrainingTotal", "PrestigeRaisedTotal", "PrestigeDroppedTotal", "PokemonDeployed", "PokemonCaughtByType", "SmallRattataCaught" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency), global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency.Parser, new[]{ "Gems" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera), global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera.Parser, new[]{ "IsDefaultCamera" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades), global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades.Parser, new[]{ "InventoryUpgrades_" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade), global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade.Parser, new[]{ "Item", "UpgradeType", "AdditionalStorage" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems), global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems.Parser, new[]{ "Item" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem), global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem.Parser, new[]{ "ItemType", "ItemTypeCategory", "ExpireMs", "AppliedMs" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators), global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators.Parser, new[]{ "EggIncubator" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator), global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator.Parser, new[]{ "ItemId", "ItemType", "IncubatorType", "UsesRemaining", "PokemonId", "StartKmWalked", "TargetKmWalked" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily), global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily.Parser, new[]{ "FamilyId", "Candy" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetMapObjectsRequest), global::PokemonGo.RocketAPI.GeneratedCode.GetMapObjectsRequest.Parser, new[]{ "CellId", "SinceTimestampMs", "Latitude", "Longitude" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetMapObjectsResponse), global::PokemonGo.RocketAPI.GeneratedCode.GetMapObjectsResponse.Parser, new[]{ "MapCells", "Status" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapCell), global::PokemonGo.RocketAPI.GeneratedCode.MapCell.Parser, new[]{ "S2CellId", "CurrentTimestampMs", "Forts", "SpawnPoints", "DeletedObjects", "IsTruncatedList", "FortSummaries", "DecimatedSpawnPoints", "WildPokemons", "CatchablePokemons", "NearbyPokemons" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortData), global::PokemonGo.RocketAPI.GeneratedCode.FortData.Parser, new[]{ "Id", "LastModifiedTimestampMs", "Latitude", "Longitude", "Enabled", "Type", "OwnedByTeam", "GuardPokemonId", "GuardPokemonCp", "GymPoints", "IsInBattle", "CooldownCompleteTimestampMs", "Sponsor", "RenderingType", "ActiveFortModifier", "LureInfo" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo), global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo.Parser, new[]{ "FortId", "Unknown2", "ActivePokemonId", "LureExpiresTimestampMs" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint), global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint.Parser, new[]{ "Latitude", "Longitude" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSummary), global::PokemonGo.RocketAPI.GeneratedCode.FortSummary.Parser, new[]{ "FortSummaryId", "LastModifiedTimestampMs", "Latitude", "Longitude" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon), global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon.Parser, new[]{ "EncounterId", "LastModifiedTimestampMs", "Latitude", "Longitude", "SpawnpointId", "PokemonData", "TimeTillHiddenMs" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokemonData), global::PokemonGo.RocketAPI.GeneratedCode.PokemonData.Parser, new[]{ "Id", "PokemonId", "Cp", "Stamina", "StaminaMax", "Move1", "Move2", "DeployedFortId", "OwnerName", "IsEgg", "EggKmWalkedTarget", "EggKmWalkedStart", "Origin", "HeightM", "WeightKg", "IndividualAttack", "IndividualDefense", "IndividualStamina", "CpMultiplier", "Pokeball", "CapturedCellId", "BattlesAttacked", "BattlesDefended", "EggIncubatorId", "CreationTimeMs", "NumUpgrades", "AdditionalCpMultiplier", "Favorite", "Nickname", "FromFort" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon), global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon.Parser, new[]{ "SpawnpointId", "EncounterId", "PokemonId", "ExpirationTimestampMs", "Latitude", "Longitude" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon), global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon.Parser, new[]{ "PokemonId", "DistanceInMeters", "EncounterId" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.DownloadSettingsResponse), global::PokemonGo.RocketAPI.GeneratedCode.DownloadSettingsResponse.Parser, new[]{ "Error", "Hash", "Settings" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings), global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings.Parser, new[]{ "FortSettings", "MapSettings", "LevelSettings", "InventorySettings", "MinimumClientVersion" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSettings), global::PokemonGo.RocketAPI.GeneratedCode.FortSettings.Parser, new[]{ "InteractionRangeMeters", "MaxTotalDeployedPokemon", "MaxPlayerDeployedPokemon", "DeployStaminaMultiplier", "DeployAttackMultiplier", "FarInteractionRangeMeters" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapSettings), global::PokemonGo.RocketAPI.GeneratedCode.MapSettings.Parser, new[]{ "PokemonVisibleRange", "PokeNavRangeMeters", "EncounterRangeMeters", "GetMapObjectsMinRefreshSeconds", "GetMapObjectsMaxRefreshSeconds", "GetMapObjectsMinDistanceMeters", "GoogleMapsApiKey" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings), global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings.Parser, new[]{ "TrainerCpModifier", "TrainerDifficultyModifier" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings), global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings.Parser, new[]{ "MaxPokemon", "MaxBagItems", "BasePokemon", "BaseBagItems", "BaseEggs" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerUpdateRequest), global::PokemonGo.RocketAPI.GeneratedCode.PlayerUpdateRequest.Parser, new[]{ "Latitude", "Longitude" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerUpdateResponse), global::PokemonGo.RocketAPI.GeneratedCode.PlayerUpdateResponse.Parser, new[]{ "WildPokemons", "Forts", "FortsNearby" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesRequest), global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesRequest.Parser, null, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse), global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Parser, new[]{ "Success", "ItemTemplates", "TimestampMs" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate), global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate.Parser, new[]{ "TemplateId", "PokemonSettings", "ItemSettings", "MoveSettings", "MoveSequenceSettings", "TypeEffective", "BadgeSettings", "Camera", "PlayerLevel", "GymLevel", "BattleSettings", "EncounterSettings", "IapItemDisplay", "IapSettings", "PokemonUpgrades", "EquippedBadges" }, null, null, null)}),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.UseItemCaptureRequest), global::PokemonGo.RocketAPI.GeneratedCode.UseItemCaptureRequest.Parser, new[]{ "ItemId", "EncounterId", "SpawnPointGuid" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.UseItemCaptureResponse), global::PokemonGo.RocketAPI.GeneratedCode.UseItemCaptureResponse.Parser, new[]{ "Success", "ItemCaptureMult", "ItemFleeMult", "StopMovement", "StopAttack", "TargetMax", "TargetSlow" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonRequest), global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonRequest.Parser, new[]{ "PokemonId" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse), global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse.Parser, new[]{ "Result", "CandyAwarded" }, null, new[]{ typeof(global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse.Types.Result) }, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetHatchedEggsRequest), global::PokemonGo.RocketAPI.GeneratedCode.GetHatchedEggsRequest.Parser, null, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetHatchedEggsResponse), global::PokemonGo.RocketAPI.GeneratedCode.GetHatchedEggsResponse.Parser, new[]{ "Success", "PokemonId", "ExperienceAwarded", "CandyAwarded", "StardustAwarded" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchRequest), global::PokemonGo.RocketAPI.GeneratedCode.FortSearchRequest.Parser, new[]{ "FortId", "PlayerLatitude", "PlayerLongitude", "FortLatitude", "FortLongitude" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse), global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Parser, new[]{ "Result", "ItemsAwarded", "GemsAwarded", "PokemonDataEgg", "ExperienceAwarded", "CooldownCompleteTimestampMs", "ChainHackSequenceNumber" }, null, new[]{ typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Result) }, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward), global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward.Parser, new[]{ "ItemId", "ItemCount" }, null, null, null)}),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortDetailsRequest), global::PokemonGo.RocketAPI.GeneratedCode.FortDetailsRequest.Parser, new[]{ "FortId", "Latitude", "Longitude" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortDetailsResponse), global::PokemonGo.RocketAPI.GeneratedCode.FortDetailsResponse.Parser, new[]{ "FortId", "TeamColor", "PokemonData", "Name", "ImageUrls", "Fp", "Stamina", "MaxStamina", "Type", "Latitude", "Longitude", "Description", "Modifiers" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortModifier), global::PokemonGo.RocketAPI.GeneratedCode.FortModifier.Parser, new[]{ "ItemId", "ExpirationTimestampMs", "DeployerPlayerCodename" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterRequest), global::PokemonGo.RocketAPI.GeneratedCode.EncounterRequest.Parser, new[]{ "EncounterId", "SpawnpointId", "PlayerLatitude", "PlayerLongitude" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse), global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Parser, new[]{ "WildPokemon", "Background", "Status", "CaptureProbability" }, null, new[]{ typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Background), typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Status) }, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability), global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability.Parser, new[]{ "PokeballType", "CaptureProbability_", "ReticleDifficultyScale" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterRequest), global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterRequest.Parser, new[]{ "EncounterId", "FortId", "PlayerLatitude", "PlayerLongitude" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse), global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse.Parser, new[]{ "Result", "PokemonData", "CaptureProbability" }, null, new[]{ typeof(global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse.Types.Result) }, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonRequest), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonRequest.Parser, new[]{ "EncounterId", "Pokeball", "NormalizedReticleSize", "SpawnPointGuid", "HitPokemon", "SpinModifier", "NormalizedHitPosition" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Parser, new[]{ "Status", "MissPercent", "CapturedPokemonId", "Scores" }, null, new[]{ typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.CatchStatus) }, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore), global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore.Parser, new[]{ "ActivityType", "Xp", "Candy", "Stardust" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CheckAwardedBadgesRequest), global::PokemonGo.RocketAPI.GeneratedCode.CheckAwardedBadgesRequest.Parser, null, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CheckAwardedBadgesResponse), global::PokemonGo.RocketAPI.GeneratedCode.CheckAwardedBadgesResponse.Parser, new[]{ "Success", "AwardedBadges", "AwardedBadgeLevels" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings), global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings.Parser, new[]{ "EquipBadgeCooldownMs", "CatchProbabilityBonus", "FleeProbabilityBonus" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings), global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings.Parser, new[]{ "UpgradesPerLevel", "AllowedLevelsAbovePlayer", "CandyCost", "StardustCost" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.IapSettings), global::PokemonGo.RocketAPI.GeneratedCode.IapSettings.Parser, new[]{ "DailyBonusCoins", "DailyDefenderBonusPerPokemon", "DailyDefenderBonusMaxDefenders", "DailyDefenderBonusCurrency", "MinTimeBetweenClaimsMs", "DailyBonusEnabled", "DailyDefenderBonusEnabled" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay), global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay.Parser, new[]{ "Sku", "Category", "SortOrder", "ItemIds", "Counts" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings), global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings.Parser, new[]{ "SpinBonusThreshold", "ExcellentThrowThreshold", "GreatThrowThreshold", "NiceThrowThreshold", "MilestoneThreshold" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings), global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings.Parser, new[]{ "EnergyPerSec", "DodgeEnergyCost", "RetargetSeconds", "EnemyAttackInterval", "AttackServerInterval", "RoundDurationSeconds", "BonusTimePerAllySeconds", "MaximumAttackersPerBattle", "SameTypeAttackBonusMultiplier", "MaximumEnergy", "EnergyDeltaPerHealthLost", "DodgeDurationMs", "MinimumPlayerLevel", "SwapDurationMs" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings), global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings.Parser, new[]{ "RequiredExperience", "LeaderSlots", "TrainerSlots", "SearchRollBonus" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings), global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings.Parser, new[]{ "RankNum", "RequiredExperience", "CpMultiplier", "MaxEggPlayerLevel", "MaxEncounterPlayerLevel" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings), global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings.Parser, new[]{ "NextCamera", "Interpolation", "TargetType", "EaseInSpeed", "EastOutSpeed", "DurationSeconds", "WaitSeconds", "TransitionSeconds", "AngleDegree", "AngleOffsetDegree", "PitchDegree", "PitchOffsetDegree", "RollDegree", "DistanceMeters", "HeightPercent", "VertCtrRatio" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings), global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings.Parser, new[]{ "BadgeType", "BadgeRank", "Targets" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings), global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings.Parser, new[]{ "AttackScalar", "AttackType" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings), global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings.Parser, new[]{ "Sequence" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings), global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings.Parser, new[]{ "MovementId", "AnimationId", "PokemonType", "Power", "AccuracyChance", "CriticalChance", "HealScalar", "StaminaLossScalar", "TrainerLevelMin", "TrainerLevelMax", "VfxName", "DurationMs", "DamageWindowStartMs", "DamageWindowEndMs", "EnergyDelta" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings), global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings.Parser, new[]{ "PokemonId", "ModelScale", "Type", "Type2", "Camera", "Encounter", "Stats", "QuickMoves", "CinematicMoves", "AnimationTime", "EvolutionIds", "EvolutionPips", "Class", "PokedexHeightM", "PokedexWeightKg", "ParentPokemonId", "HeightStdDev", "WeightStdDev", "KmDistanceToHatch", "FamilyId", "CandyToEvolve" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes), global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes.Parser, new[]{ "DiskRadiusM", "CylinderRadiusM", "CylinderHeightM", "CylinderGroundM", "ShoulderModeScale" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes), global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes.Parser, new[]{ "BaseCaptureRate", "BaseFleeRate", "CollisionRadiusM", "CollisionHeightM", "CollisionHeadRadiusM", "MovementType", "MovementTimerS", "JumpTimeS", "AttackTimerS" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes), global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes.Parser, new[]{ "BaseStamina", "BaseAttack", "BaseDefense", "DodgeEnergyDelta" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings), global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings.Parser, new[]{ "ItemId", "ItemType", "Category", "DropFreq", "DropTrainerLevel", "Pokeball", "Potion", "Revive", "Battle", "Food", "InventoryUpgrade", "XpBoost", "Incense", "EggIncubator", "FortModifier" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes), global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes.Parser, new[]{ "StaPercent" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes), global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes.Parser, new[]{ "IncubatorType", "Uses", "DistanceMultiplier" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes), global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes.Parser, new[]{ "XpMultiplier", "BoostDurationMs" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes), global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes.Parser, new[]{ "ItemEffect", "ItemEffectPercent", "GrowthPercent" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes), global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes.Parser, new[]{ "ModifierLifetimeSeconds", "TroyDiskNumPokemonSpawned" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes), global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes.Parser, new[]{ "IncenseLifetimeSeconds", "PokemonType", "PokemonIncenseTypeProbability", "StandingTimeBetweenEncountersSeconds", "MovingTimeBetweenEncounterSeconds", "DistanceRequiredForShorterIntervalMeters", "PokemonAttractedLengthSec" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes), global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes.Parser, new[]{ "AdditionalStorage", "UpgradeType" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes), global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes.Parser, new[]{ "ItemEffect", "CaptureMulti", "CaptureMultiEffect", "ItemEffectMod" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes), global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes.Parser, new[]{ "StaPercent", "StaAmount" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes), global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes.Parser, new[]{ "StaPercent" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.TransferPokemon), global::PokemonGo.RocketAPI.GeneratedCode.TransferPokemon.Parser, new[]{ "PokemonId" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.TransferPokemonOut), global::PokemonGo.RocketAPI.GeneratedCode.TransferPokemonOut.Parser, new[]{ "Status", "CandyAwarded" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EvolvePokemon), global::PokemonGo.RocketAPI.GeneratedCode.EvolvePokemon.Parser, new[]{ "PokemonId" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EvolvePokemonOut), global::PokemonGo.RocketAPI.GeneratedCode.EvolvePokemonOut.Parser, new[]{ "Result", "EvolvedPokemon", "ExpAwarded", "CandyAwarded" }, null, null, null)
+          }));
+    }
+    #endregion
+
+  }
+  #region Messages
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class GetPlayerResponse : pb::IMessage<GetPlayerResponse> {
+    private static readonly pb::MessageParser<GetPlayerResponse> _parser = new pb::MessageParser<GetPlayerResponse>(() => new GetPlayerResponse());
+    public static pb::MessageParser<GetPlayerResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[0]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public GetPlayerResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public GetPlayerResponse(GetPlayerResponse other) : this() {
+      unknown1_ = other.unknown1_;
+      Profile = other.profile_ != null ? other.Profile.Clone() : null;
+    }
+
+    public GetPlayerResponse Clone() {
+      return new GetPlayerResponse(this);
+    }
+
+    /// <summary>Field number for the "unknown1" field.</summary>
+    public const int Unknown1FieldNumber = 1;
+    private int unknown1_;
+    public int Unknown1 {
+      get { return unknown1_; }
+      set {
+        unknown1_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "profile" field.</summary>
+    public const int ProfileFieldNumber = 2;
+    private global::PokemonGo.RocketAPI.GeneratedCode.Profile profile_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.Profile Profile {
+      get { return profile_; }
+      set {
+        profile_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as GetPlayerResponse);
+    }
+
+    public bool Equals(GetPlayerResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Unknown1 != other.Unknown1) return false;
+      if (!object.Equals(Profile, other.Profile)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
+      if (profile_ != null) hash ^= Profile.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Unknown1 != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(Unknown1);
+      }
+      if (profile_ != null) {
+        output.WriteRawTag(18);
+        output.WriteMessage(Profile);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Unknown1 != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
+      }
+      if (profile_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Profile);
+      }
+      return size;
+    }
+
+    public void MergeFrom(GetPlayerResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Unknown1 != 0) {
+        Unknown1 = other.Unknown1;
+      }
+      if (other.profile_ != null) {
+        if (profile_ == null) {
+          profile_ = new global::PokemonGo.RocketAPI.GeneratedCode.Profile();
+        }
+        Profile.MergeFrom(other.Profile);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Unknown1 = input.ReadInt32();
+            break;
+          }
+          case 18: {
+            if (profile_ == null) {
+              profile_ = new global::PokemonGo.RocketAPI.GeneratedCode.Profile();
+            }
+            input.ReadMessage(profile_);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class Profile : pb::IMessage<Profile> {
+    private static readonly pb::MessageParser<Profile> _parser = new pb::MessageParser<Profile>(() => new Profile());
+    public static pb::MessageParser<Profile> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[1]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public Profile() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public Profile(Profile other) : this() {
+      creationTime_ = other.creationTime_;
+      username_ = other.username_;
+      team_ = other.team_;
+      tutorial_ = other.tutorial_;
+      Avatar = other.avatar_ != null ? other.Avatar.Clone() : null;
+      pokeStorage_ = other.pokeStorage_;
+      itemStorage_ = other.itemStorage_;
+      DailyBonus = other.dailyBonus_ != null ? other.DailyBonus.Clone() : null;
+      unknown12_ = other.unknown12_;
+      unknown13_ = other.unknown13_;
+      currency_ = other.currency_.Clone();
+    }
+
+    public Profile Clone() {
+      return new Profile(this);
+    }
+
+    /// <summary>Field number for the "creation_time" field.</summary>
+    public const int CreationTimeFieldNumber = 1;
+    private long creationTime_;
+    public long CreationTime {
+      get { return creationTime_; }
+      set {
+        creationTime_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "username" field.</summary>
+    public const int UsernameFieldNumber = 2;
+    private string username_ = "";
+    public string Username {
+      get { return username_; }
+      set {
+        username_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "team" field.</summary>
+    public const int TeamFieldNumber = 5;
+    private global::AllEnum.TeamColor team_ = 0;
+    public global::AllEnum.TeamColor Team {
+      get { return team_; }
+      set {
+        team_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "tutorial" field.</summary>
+    public const int TutorialFieldNumber = 7;
+    private pb::ByteString tutorial_ = pb::ByteString.Empty;
+    public pb::ByteString Tutorial {
+      get { return tutorial_; }
+      set {
+        tutorial_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "avatar" field.</summary>
+    public const int AvatarFieldNumber = 8;
+    private global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails avatar_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails Avatar {
+      get { return avatar_; }
+      set {
+        avatar_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "poke_storage" field.</summary>
+    public const int PokeStorageFieldNumber = 9;
+    private int pokeStorage_;
+    public int PokeStorage {
+      get { return pokeStorage_; }
+      set {
+        pokeStorage_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "item_storage" field.</summary>
+    public const int ItemStorageFieldNumber = 10;
+    private int itemStorage_;
+    public int ItemStorage {
+      get { return itemStorage_; }
+      set {
+        itemStorage_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "daily_bonus" field.</summary>
+    public const int DailyBonusFieldNumber = 11;
+    private global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus dailyBonus_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus DailyBonus {
+      get { return dailyBonus_; }
+      set {
+        dailyBonus_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "unknown12" field.</summary>
+    public const int Unknown12FieldNumber = 12;
+    private pb::ByteString unknown12_ = pb::ByteString.Empty;
+    public pb::ByteString Unknown12 {
+      get { return unknown12_; }
+      set {
+        unknown12_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "unknown13" field.</summary>
+    public const int Unknown13FieldNumber = 13;
+    private pb::ByteString unknown13_ = pb::ByteString.Empty;
+    public pb::ByteString Unknown13 {
+      get { return unknown13_; }
+      set {
+        unknown13_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "currency" field.</summary>
+    public const int CurrencyFieldNumber = 14;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.Currency> _repeated_currency_codec
+        = pb::FieldCodec.ForMessage(114, global::PokemonGo.RocketAPI.GeneratedCode.Currency.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.Currency> currency_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.Currency>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.Currency> Currency {
+      get { return currency_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as Profile);
+    }
+
+    public bool Equals(Profile other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (CreationTime != other.CreationTime) return false;
+      if (Username != other.Username) return false;
+      if (Team != other.Team) return false;
+      if (Tutorial != other.Tutorial) return false;
+      if (!object.Equals(Avatar, other.Avatar)) return false;
+      if (PokeStorage != other.PokeStorage) return false;
+      if (ItemStorage != other.ItemStorage) return false;
+      if (!object.Equals(DailyBonus, other.DailyBonus)) return false;
+      if (Unknown12 != other.Unknown12) return false;
+      if (Unknown13 != other.Unknown13) return false;
+      if(!currency_.Equals(other.currency_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (CreationTime != 0L) hash ^= CreationTime.GetHashCode();
+      if (Username.Length != 0) hash ^= Username.GetHashCode();
+      if (Team != 0) hash ^= Team.GetHashCode();
+      if (Tutorial.Length != 0) hash ^= Tutorial.GetHashCode();
+      if (avatar_ != null) hash ^= Avatar.GetHashCode();
+      if (PokeStorage != 0) hash ^= PokeStorage.GetHashCode();
+      if (ItemStorage != 0) hash ^= ItemStorage.GetHashCode();
+      if (dailyBonus_ != null) hash ^= DailyBonus.GetHashCode();
+      if (Unknown12.Length != 0) hash ^= Unknown12.GetHashCode();
+      if (Unknown13.Length != 0) hash ^= Unknown13.GetHashCode();
+      hash ^= currency_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (CreationTime != 0L) {
+        output.WriteRawTag(8);
+        output.WriteInt64(CreationTime);
+      }
+      if (Username.Length != 0) {
+        output.WriteRawTag(18);
+        output.WriteString(Username);
+      }
+      if (Team != 0) {
+        output.WriteRawTag(40);
+        output.WriteEnum((int) Team);
+      }
+      if (Tutorial.Length != 0) {
+        output.WriteRawTag(58);
+        output.WriteBytes(Tutorial);
+      }
+      if (avatar_ != null) {
+        output.WriteRawTag(66);
+        output.WriteMessage(Avatar);
+      }
+      if (PokeStorage != 0) {
+        output.WriteRawTag(72);
+        output.WriteInt32(PokeStorage);
+      }
+      if (ItemStorage != 0) {
+        output.WriteRawTag(80);
+        output.WriteInt32(ItemStorage);
+      }
+      if (dailyBonus_ != null) {
+        output.WriteRawTag(90);
+        output.WriteMessage(DailyBonus);
+      }
+      if (Unknown12.Length != 0) {
+        output.WriteRawTag(98);
+        output.WriteBytes(Unknown12);
+      }
+      if (Unknown13.Length != 0) {
+        output.WriteRawTag(106);
+        output.WriteBytes(Unknown13);
+      }
+      currency_.WriteTo(output, _repeated_currency_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (CreationTime != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(CreationTime);
+      }
+      if (Username.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Username);
+      }
+      if (Team != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Team);
+      }
+      if (Tutorial.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Tutorial);
+      }
+      if (avatar_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Avatar);
+      }
+      if (PokeStorage != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokeStorage);
+      }
+      if (ItemStorage != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemStorage);
+      }
+      if (dailyBonus_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DailyBonus);
+      }
+      if (Unknown12.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown12);
+      }
+      if (Unknown13.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown13);
+      }
+      size += currency_.CalculateSize(_repeated_currency_codec);
+      return size;
+    }
+
+    public void MergeFrom(Profile other) {
+      if (other == null) {
+        return;
+      }
+      if (other.CreationTime != 0L) {
+        CreationTime = other.CreationTime;
+      }
+      if (other.Username.Length != 0) {
+        Username = other.Username;
+      }
+      if (other.Team != 0) {
+        Team = other.Team;
+      }
+      if (other.Tutorial.Length != 0) {
+        Tutorial = other.Tutorial;
+      }
+      if (other.avatar_ != null) {
+        if (avatar_ == null) {
+          avatar_ = new global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails();
+        }
+        Avatar.MergeFrom(other.Avatar);
+      }
+      if (other.PokeStorage != 0) {
+        PokeStorage = other.PokeStorage;
+      }
+      if (other.ItemStorage != 0) {
+        ItemStorage = other.ItemStorage;
+      }
+      if (other.dailyBonus_ != null) {
+        if (dailyBonus_ == null) {
+          dailyBonus_ = new global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus();
+        }
+        DailyBonus.MergeFrom(other.DailyBonus);
+      }
+      if (other.Unknown12.Length != 0) {
+        Unknown12 = other.Unknown12;
+      }
+      if (other.Unknown13.Length != 0) {
+        Unknown13 = other.Unknown13;
+      }
+      currency_.Add(other.currency_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            CreationTime = input.ReadInt64();
+            break;
+          }
+          case 18: {
+            Username = input.ReadString();
+            break;
+          }
+          case 40: {
+            team_ = (global::AllEnum.TeamColor) input.ReadEnum();
+            break;
+          }
+          case 58: {
+            Tutorial = input.ReadBytes();
+            break;
+          }
+          case 66: {
+            if (avatar_ == null) {
+              avatar_ = new global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails();
+            }
+            input.ReadMessage(avatar_);
+            break;
+          }
+          case 72: {
+            PokeStorage = input.ReadInt32();
+            break;
+          }
+          case 80: {
+            ItemStorage = input.ReadInt32();
+            break;
+          }
+          case 90: {
+            if (dailyBonus_ == null) {
+              dailyBonus_ = new global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus();
+            }
+            input.ReadMessage(dailyBonus_);
+            break;
+          }
+          case 98: {
+            Unknown12 = input.ReadBytes();
+            break;
+          }
+          case 106: {
+            Unknown13 = input.ReadBytes();
+            break;
+          }
+          case 114: {
+            currency_.AddEntriesFrom(input, _repeated_currency_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class DailyBonus : pb::IMessage<DailyBonus> {
+    private static readonly pb::MessageParser<DailyBonus> _parser = new pb::MessageParser<DailyBonus>(() => new DailyBonus());
+    public static pb::MessageParser<DailyBonus> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[2]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public DailyBonus() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public DailyBonus(DailyBonus other) : this() {
+      nextCollectTimestampMs_ = other.nextCollectTimestampMs_;
+      nextDefenderBonusCollectTimestampMs_ = other.nextDefenderBonusCollectTimestampMs_;
+    }
+
+    public DailyBonus Clone() {
+      return new DailyBonus(this);
+    }
+
+    /// <summary>Field number for the "NextCollectTimestampMs" field.</summary>
+    public const int NextCollectTimestampMsFieldNumber = 1;
+    private long nextCollectTimestampMs_;
+    public long NextCollectTimestampMs {
+      get { return nextCollectTimestampMs_; }
+      set {
+        nextCollectTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "NextDefenderBonusCollectTimestampMs" field.</summary>
+    public const int NextDefenderBonusCollectTimestampMsFieldNumber = 2;
+    private long nextDefenderBonusCollectTimestampMs_;
+    public long NextDefenderBonusCollectTimestampMs {
+      get { return nextDefenderBonusCollectTimestampMs_; }
+      set {
+        nextDefenderBonusCollectTimestampMs_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as DailyBonus);
+    }
+
+    public bool Equals(DailyBonus other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (NextCollectTimestampMs != other.NextCollectTimestampMs) return false;
+      if (NextDefenderBonusCollectTimestampMs != other.NextDefenderBonusCollectTimestampMs) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (NextCollectTimestampMs != 0L) hash ^= NextCollectTimestampMs.GetHashCode();
+      if (NextDefenderBonusCollectTimestampMs != 0L) hash ^= NextDefenderBonusCollectTimestampMs.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (NextCollectTimestampMs != 0L) {
+        output.WriteRawTag(8);
+        output.WriteInt64(NextCollectTimestampMs);
+      }
+      if (NextDefenderBonusCollectTimestampMs != 0L) {
+        output.WriteRawTag(16);
+        output.WriteInt64(NextDefenderBonusCollectTimestampMs);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (NextCollectTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextCollectTimestampMs);
+      }
+      if (NextDefenderBonusCollectTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextDefenderBonusCollectTimestampMs);
+      }
+      return size;
+    }
+
+    public void MergeFrom(DailyBonus other) {
+      if (other == null) {
+        return;
+      }
+      if (other.NextCollectTimestampMs != 0L) {
+        NextCollectTimestampMs = other.NextCollectTimestampMs;
+      }
+      if (other.NextDefenderBonusCollectTimestampMs != 0L) {
+        NextDefenderBonusCollectTimestampMs = other.NextDefenderBonusCollectTimestampMs;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            NextCollectTimestampMs = input.ReadInt64();
+            break;
+          }
+          case 16: {
+            NextDefenderBonusCollectTimestampMs = input.ReadInt64();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class Currency : pb::IMessage<Currency> {
+    private static readonly pb::MessageParser<Currency> _parser = new pb::MessageParser<Currency>(() => new Currency());
+    public static pb::MessageParser<Currency> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[3]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public Currency() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public Currency(Currency other) : this() {
+      type_ = other.type_;
+      amount_ = other.amount_;
+    }
+
+    public Currency Clone() {
+      return new Currency(this);
+    }
+
+    /// <summary>Field number for the "type" field.</summary>
+    public const int TypeFieldNumber = 1;
+    private string type_ = "";
+    public string Type {
+      get { return type_; }
+      set {
+        type_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "amount" field.</summary>
+    public const int AmountFieldNumber = 2;
+    private int amount_;
+    public int Amount {
+      get { return amount_; }
+      set {
+        amount_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as Currency);
+    }
+
+    public bool Equals(Currency other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Type != other.Type) return false;
+      if (Amount != other.Amount) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Type.Length != 0) hash ^= Type.GetHashCode();
+      if (Amount != 0) hash ^= Amount.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Type.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(Type);
+      }
+      if (Amount != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(Amount);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Type.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Type);
+      }
+      if (Amount != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Amount);
+      }
+      return size;
+    }
+
+    public void MergeFrom(Currency other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Type.Length != 0) {
+        Type = other.Type;
+      }
+      if (other.Amount != 0) {
+        Amount = other.Amount;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            Type = input.ReadString();
+            break;
+          }
+          case 16: {
+            Amount = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class AvatarDetails : pb::IMessage<AvatarDetails> {
+    private static readonly pb::MessageParser<AvatarDetails> _parser = new pb::MessageParser<AvatarDetails>(() => new AvatarDetails());
+    public static pb::MessageParser<AvatarDetails> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[4]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public AvatarDetails() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public AvatarDetails(AvatarDetails other) : this() {
+      unknown2_ = other.unknown2_;
+      unknown3_ = other.unknown3_;
+      unknown9_ = other.unknown9_;
+      unknown10_ = other.unknown10_;
+    }
+
+    public AvatarDetails Clone() {
+      return new AvatarDetails(this);
+    }
+
+    /// <summary>Field number for the "unknown2" field.</summary>
+    public const int Unknown2FieldNumber = 2;
+    private int unknown2_;
+    public int Unknown2 {
+      get { return unknown2_; }
+      set {
+        unknown2_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "unknown3" field.</summary>
+    public const int Unknown3FieldNumber = 3;
+    private int unknown3_;
+    public int Unknown3 {
+      get { return unknown3_; }
+      set {
+        unknown3_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "unknown9" field.</summary>
+    public const int Unknown9FieldNumber = 9;
+    private int unknown9_;
+    public int Unknown9 {
+      get { return unknown9_; }
+      set {
+        unknown9_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "unknown10" field.</summary>
+    public const int Unknown10FieldNumber = 10;
+    private int unknown10_;
+    public int Unknown10 {
+      get { return unknown10_; }
+      set {
+        unknown10_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as AvatarDetails);
+    }
+
+    public bool Equals(AvatarDetails other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Unknown2 != other.Unknown2) return false;
+      if (Unknown3 != other.Unknown3) return false;
+      if (Unknown9 != other.Unknown9) return false;
+      if (Unknown10 != other.Unknown10) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Unknown2 != 0) hash ^= Unknown2.GetHashCode();
+      if (Unknown3 != 0) hash ^= Unknown3.GetHashCode();
+      if (Unknown9 != 0) hash ^= Unknown9.GetHashCode();
+      if (Unknown10 != 0) hash ^= Unknown10.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Unknown2 != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(Unknown2);
+      }
+      if (Unknown3 != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(Unknown3);
+      }
+      if (Unknown9 != 0) {
+        output.WriteRawTag(72);
+        output.WriteInt32(Unknown9);
+      }
+      if (Unknown10 != 0) {
+        output.WriteRawTag(80);
+        output.WriteInt32(Unknown10);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Unknown2 != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown2);
+      }
+      if (Unknown3 != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown3);
+      }
+      if (Unknown9 != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown9);
+      }
+      if (Unknown10 != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown10);
+      }
+      return size;
+    }
+
+    public void MergeFrom(AvatarDetails other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Unknown2 != 0) {
+        Unknown2 = other.Unknown2;
+      }
+      if (other.Unknown3 != 0) {
+        Unknown3 = other.Unknown3;
+      }
+      if (other.Unknown9 != 0) {
+        Unknown9 = other.Unknown9;
+      }
+      if (other.Unknown10 != 0) {
+        Unknown10 = other.Unknown10;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 16: {
+            Unknown2 = input.ReadInt32();
+            break;
+          }
+          case 24: {
+            Unknown3 = input.ReadInt32();
+            break;
+          }
+          case 72: {
+            Unknown9 = input.ReadInt32();
+            break;
+          }
+          case 80: {
+            Unknown10 = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class DownloadSettingsRequest : pb::IMessage<DownloadSettingsRequest> {
+    private static readonly pb::MessageParser<DownloadSettingsRequest> _parser = new pb::MessageParser<DownloadSettingsRequest>(() => new DownloadSettingsRequest());
+    public static pb::MessageParser<DownloadSettingsRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[5]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public DownloadSettingsRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public DownloadSettingsRequest(DownloadSettingsRequest other) : this() {
+      hash_ = other.hash_;
+    }
+
+    public DownloadSettingsRequest Clone() {
+      return new DownloadSettingsRequest(this);
+    }
+
+    /// <summary>Field number for the "hash" field.</summary>
+    public const int HashFieldNumber = 1;
+    private string hash_ = "";
+    public string Hash {
+      get { return hash_; }
+      set {
+        hash_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as DownloadSettingsRequest);
+    }
+
+    public bool Equals(DownloadSettingsRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Hash != other.Hash) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Hash.Length != 0) hash ^= Hash.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Hash.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(Hash);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Hash.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Hash);
+      }
+      return size;
+    }
+
+    public void MergeFrom(DownloadSettingsRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Hash.Length != 0) {
+        Hash = other.Hash;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            Hash = input.ReadString();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class GetInventoryResponse : pb::IMessage<GetInventoryResponse> {
+    private static readonly pb::MessageParser<GetInventoryResponse> _parser = new pb::MessageParser<GetInventoryResponse>(() => new GetInventoryResponse());
+    public static pb::MessageParser<GetInventoryResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[6]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public GetInventoryResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public GetInventoryResponse(GetInventoryResponse other) : this() {
+      success_ = other.success_;
+      InventoryDelta = other.inventoryDelta_ != null ? other.InventoryDelta.Clone() : null;
+    }
+
+    public GetInventoryResponse Clone() {
+      return new GetInventoryResponse(this);
+    }
+
+    /// <summary>Field number for the "success" field.</summary>
+    public const int SuccessFieldNumber = 1;
+    private bool success_;
+    public bool Success {
+      get { return success_; }
+      set {
+        success_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "inventory_delta" field.</summary>
+    public const int InventoryDeltaFieldNumber = 2;
+    private global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta inventoryDelta_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta InventoryDelta {
+      get { return inventoryDelta_; }
+      set {
+        inventoryDelta_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as GetInventoryResponse);
+    }
+
+    public bool Equals(GetInventoryResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Success != other.Success) return false;
+      if (!object.Equals(InventoryDelta, other.InventoryDelta)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Success != false) hash ^= Success.GetHashCode();
+      if (inventoryDelta_ != null) hash ^= InventoryDelta.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Success != false) {
+        output.WriteRawTag(8);
+        output.WriteBool(Success);
+      }
+      if (inventoryDelta_ != null) {
+        output.WriteRawTag(18);
+        output.WriteMessage(InventoryDelta);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Success != false) {
+        size += 1 + 1;
+      }
+      if (inventoryDelta_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventoryDelta);
+      }
+      return size;
+    }
+
+    public void MergeFrom(GetInventoryResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Success != false) {
+        Success = other.Success;
+      }
+      if (other.inventoryDelta_ != null) {
+        if (inventoryDelta_ == null) {
+          inventoryDelta_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta();
+        }
+        InventoryDelta.MergeFrom(other.InventoryDelta);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Success = input.ReadBool();
+            break;
+          }
+          case 18: {
+            if (inventoryDelta_ == null) {
+              inventoryDelta_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta();
+            }
+            input.ReadMessage(inventoryDelta_);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class InventoryDelta : pb::IMessage<InventoryDelta> {
+    private static readonly pb::MessageParser<InventoryDelta> _parser = new pb::MessageParser<InventoryDelta>(() => new InventoryDelta());
+    public static pb::MessageParser<InventoryDelta> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[7]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public InventoryDelta() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public InventoryDelta(InventoryDelta other) : this() {
+      originalTimestampMs_ = other.originalTimestampMs_;
+      newTimestampMs_ = other.newTimestampMs_;
+      inventoryItems_ = other.inventoryItems_.Clone();
+    }
+
+    public InventoryDelta Clone() {
+      return new InventoryDelta(this);
+    }
+
+    /// <summary>Field number for the "original_timestamp_ms" field.</summary>
+    public const int OriginalTimestampMsFieldNumber = 1;
+    private long originalTimestampMs_;
+    public long OriginalTimestampMs {
+      get { return originalTimestampMs_; }
+      set {
+        originalTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "new_timestamp_ms" field.</summary>
+    public const int NewTimestampMsFieldNumber = 2;
+    private long newTimestampMs_;
+    public long NewTimestampMs {
+      get { return newTimestampMs_; }
+      set {
+        newTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "inventory_items" field.</summary>
+    public const int InventoryItemsFieldNumber = 3;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem> _repeated_inventoryItems_codec
+        = pb::FieldCodec.ForMessage(26, global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem> inventoryItems_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem> InventoryItems {
+      get { return inventoryItems_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as InventoryDelta);
+    }
+
+    public bool Equals(InventoryDelta other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (OriginalTimestampMs != other.OriginalTimestampMs) return false;
+      if (NewTimestampMs != other.NewTimestampMs) return false;
+      if(!inventoryItems_.Equals(other.inventoryItems_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (OriginalTimestampMs != 0L) hash ^= OriginalTimestampMs.GetHashCode();
+      if (NewTimestampMs != 0L) hash ^= NewTimestampMs.GetHashCode();
+      hash ^= inventoryItems_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (OriginalTimestampMs != 0L) {
+        output.WriteRawTag(8);
+        output.WriteInt64(OriginalTimestampMs);
+      }
+      if (NewTimestampMs != 0L) {
+        output.WriteRawTag(16);
+        output.WriteInt64(NewTimestampMs);
+      }
+      inventoryItems_.WriteTo(output, _repeated_inventoryItems_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (OriginalTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(OriginalTimestampMs);
+      }
+      if (NewTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(NewTimestampMs);
+      }
+      size += inventoryItems_.CalculateSize(_repeated_inventoryItems_codec);
+      return size;
+    }
+
+    public void MergeFrom(InventoryDelta other) {
+      if (other == null) {
+        return;
+      }
+      if (other.OriginalTimestampMs != 0L) {
+        OriginalTimestampMs = other.OriginalTimestampMs;
+      }
+      if (other.NewTimestampMs != 0L) {
+        NewTimestampMs = other.NewTimestampMs;
+      }
+      inventoryItems_.Add(other.inventoryItems_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            OriginalTimestampMs = input.ReadInt64();
+            break;
+          }
+          case 16: {
+            NewTimestampMs = input.ReadInt64();
+            break;
+          }
+          case 26: {
+            inventoryItems_.AddEntriesFrom(input, _repeated_inventoryItems_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class InventoryItem : pb::IMessage<InventoryItem> {
+    private static readonly pb::MessageParser<InventoryItem> _parser = new pb::MessageParser<InventoryItem>(() => new InventoryItem());
+    public static pb::MessageParser<InventoryItem> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[8]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public InventoryItem() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public InventoryItem(InventoryItem other) : this() {
+      modifiedTimestampMs_ = other.modifiedTimestampMs_;
+      deletedItemKey_ = other.deletedItemKey_;
+      InventoryItemData = other.inventoryItemData_ != null ? other.InventoryItemData.Clone() : null;
+    }
+
+    public InventoryItem Clone() {
+      return new InventoryItem(this);
+    }
+
+    /// <summary>Field number for the "modified_timestamp_ms" field.</summary>
+    public const int ModifiedTimestampMsFieldNumber = 1;
+    private long modifiedTimestampMs_;
+    public long ModifiedTimestampMs {
+      get { return modifiedTimestampMs_; }
+      set {
+        modifiedTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "deleted_item_key" field.</summary>
+    public const int DeletedItemKeyFieldNumber = 2;
+    private long deletedItemKey_;
+    public long DeletedItemKey {
+      get { return deletedItemKey_; }
+      set {
+        deletedItemKey_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "inventory_item_data" field.</summary>
+    public const int InventoryItemDataFieldNumber = 3;
+    private global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData inventoryItemData_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData InventoryItemData {
+      get { return inventoryItemData_; }
+      set {
+        inventoryItemData_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as InventoryItem);
+    }
+
+    public bool Equals(InventoryItem other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (ModifiedTimestampMs != other.ModifiedTimestampMs) return false;
+      if (DeletedItemKey != other.DeletedItemKey) return false;
+      if (!object.Equals(InventoryItemData, other.InventoryItemData)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (ModifiedTimestampMs != 0L) hash ^= ModifiedTimestampMs.GetHashCode();
+      if (DeletedItemKey != 0L) hash ^= DeletedItemKey.GetHashCode();
+      if (inventoryItemData_ != null) hash ^= InventoryItemData.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (ModifiedTimestampMs != 0L) {
+        output.WriteRawTag(8);
+        output.WriteInt64(ModifiedTimestampMs);
+      }
+      if (DeletedItemKey != 0L) {
+        output.WriteRawTag(16);
+        output.WriteInt64(DeletedItemKey);
+      }
+      if (inventoryItemData_ != null) {
+        output.WriteRawTag(26);
+        output.WriteMessage(InventoryItemData);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (ModifiedTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ModifiedTimestampMs);
+      }
+      if (DeletedItemKey != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(DeletedItemKey);
+      }
+      if (inventoryItemData_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventoryItemData);
+      }
+      return size;
+    }
+
+    public void MergeFrom(InventoryItem other) {
+      if (other == null) {
+        return;
+      }
+      if (other.ModifiedTimestampMs != 0L) {
+        ModifiedTimestampMs = other.ModifiedTimestampMs;
+      }
+      if (other.DeletedItemKey != 0L) {
+        DeletedItemKey = other.DeletedItemKey;
+      }
+      if (other.inventoryItemData_ != null) {
+        if (inventoryItemData_ == null) {
+          inventoryItemData_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData();
+        }
+        InventoryItemData.MergeFrom(other.InventoryItemData);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            ModifiedTimestampMs = input.ReadInt64();
+            break;
+          }
+          case 16: {
+            DeletedItemKey = input.ReadInt64();
+            break;
+          }
+          case 26: {
+            if (inventoryItemData_ == null) {
+              inventoryItemData_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData();
+            }
+            input.ReadMessage(inventoryItemData_);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class InventoryItemData : pb::IMessage<InventoryItemData> {
+    private static readonly pb::MessageParser<InventoryItemData> _parser = new pb::MessageParser<InventoryItemData>(() => new InventoryItemData());
+    public static pb::MessageParser<InventoryItemData> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[9]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public InventoryItemData() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public InventoryItemData(InventoryItemData other) : this() {
+      Pokemon = other.pokemon_ != null ? other.Pokemon.Clone() : null;
+      Item = other.item_ != null ? other.Item.Clone() : null;
+      PokedexEntry = other.pokedexEntry_ != null ? other.PokedexEntry.Clone() : null;
+      PlayerStats = other.playerStats_ != null ? other.PlayerStats.Clone() : null;
+      PlayerCurrency = other.playerCurrency_ != null ? other.PlayerCurrency.Clone() : null;
+      PlayerCamera = other.playerCamera_ != null ? other.PlayerCamera.Clone() : null;
+      InventoryUpgrades = other.inventoryUpgrades_ != null ? other.InventoryUpgrades.Clone() : null;
+      AppliedItems = other.appliedItems_ != null ? other.AppliedItems.Clone() : null;
+      EggIncubators = other.eggIncubators_ != null ? other.EggIncubators.Clone() : null;
+      PokemonFamily = other.pokemonFamily_ != null ? other.PokemonFamily.Clone() : null;
+    }
+
+    public InventoryItemData Clone() {
+      return new InventoryItemData(this);
+    }
+
+    /// <summary>Field number for the "pokemon" field.</summary>
+    public const int PokemonFieldNumber = 1;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PokemonData pokemon_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PokemonData Pokemon {
+      get { return pokemon_; }
+      set {
+        pokemon_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "item" field.</summary>
+    public const int ItemFieldNumber = 2;
+    private global::PokemonGo.RocketAPI.GeneratedCode.Item item_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.Item Item {
+      get { return item_; }
+      set {
+        item_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokedex_entry" field.</summary>
+    public const int PokedexEntryFieldNumber = 3;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry pokedexEntry_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry PokedexEntry {
+      get { return pokedexEntry_; }
+      set {
+        pokedexEntry_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "player_stats" field.</summary>
+    public const int PlayerStatsFieldNumber = 4;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats playerStats_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats PlayerStats {
+      get { return playerStats_; }
+      set {
+        playerStats_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "player_currency" field.</summary>
+    public const int PlayerCurrencyFieldNumber = 5;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency playerCurrency_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency PlayerCurrency {
+      get { return playerCurrency_; }
+      set {
+        playerCurrency_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "player_camera" field.</summary>
+    public const int PlayerCameraFieldNumber = 6;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera playerCamera_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera PlayerCamera {
+      get { return playerCamera_; }
+      set {
+        playerCamera_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "inventory_upgrades" field.</summary>
+    public const int InventoryUpgradesFieldNumber = 7;
+    private global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades inventoryUpgrades_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades InventoryUpgrades {
+      get { return inventoryUpgrades_; }
+      set {
+        inventoryUpgrades_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "applied_items" field.</summary>
+    public const int AppliedItemsFieldNumber = 8;
+    private global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems appliedItems_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems AppliedItems {
+      get { return appliedItems_; }
+      set {
+        appliedItems_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "egg_incubators" field.</summary>
+    public const int EggIncubatorsFieldNumber = 9;
+    private global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators eggIncubators_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators EggIncubators {
+      get { return eggIncubators_; }
+      set {
+        eggIncubators_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_family" field.</summary>
+    public const int PokemonFamilyFieldNumber = 10;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily pokemonFamily_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily PokemonFamily {
+      get { return pokemonFamily_; }
+      set {
+        pokemonFamily_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as InventoryItemData);
+    }
+
+    public bool Equals(InventoryItemData other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (!object.Equals(Pokemon, other.Pokemon)) return false;
+      if (!object.Equals(Item, other.Item)) return false;
+      if (!object.Equals(PokedexEntry, other.PokedexEntry)) return false;
+      if (!object.Equals(PlayerStats, other.PlayerStats)) return false;
+      if (!object.Equals(PlayerCurrency, other.PlayerCurrency)) return false;
+      if (!object.Equals(PlayerCamera, other.PlayerCamera)) return false;
+      if (!object.Equals(InventoryUpgrades, other.InventoryUpgrades)) return false;
+      if (!object.Equals(AppliedItems, other.AppliedItems)) return false;
+      if (!object.Equals(EggIncubators, other.EggIncubators)) return false;
+      if (!object.Equals(PokemonFamily, other.PokemonFamily)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (pokemon_ != null) hash ^= Pokemon.GetHashCode();
+      if (item_ != null) hash ^= Item.GetHashCode();
+      if (pokedexEntry_ != null) hash ^= PokedexEntry.GetHashCode();
+      if (playerStats_ != null) hash ^= PlayerStats.GetHashCode();
+      if (playerCurrency_ != null) hash ^= PlayerCurrency.GetHashCode();
+      if (playerCamera_ != null) hash ^= PlayerCamera.GetHashCode();
+      if (inventoryUpgrades_ != null) hash ^= InventoryUpgrades.GetHashCode();
+      if (appliedItems_ != null) hash ^= AppliedItems.GetHashCode();
+      if (eggIncubators_ != null) hash ^= EggIncubators.GetHashCode();
+      if (pokemonFamily_ != null) hash ^= PokemonFamily.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (pokemon_ != null) {
+        output.WriteRawTag(10);
+        output.WriteMessage(Pokemon);
+      }
+      if (item_ != null) {
+        output.WriteRawTag(18);
+        output.WriteMessage(Item);
+      }
+      if (pokedexEntry_ != null) {
+        output.WriteRawTag(26);
+        output.WriteMessage(PokedexEntry);
+      }
+      if (playerStats_ != null) {
+        output.WriteRawTag(34);
+        output.WriteMessage(PlayerStats);
+      }
+      if (playerCurrency_ != null) {
+        output.WriteRawTag(42);
+        output.WriteMessage(PlayerCurrency);
+      }
+      if (playerCamera_ != null) {
+        output.WriteRawTag(50);
+        output.WriteMessage(PlayerCamera);
+      }
+      if (inventoryUpgrades_ != null) {
+        output.WriteRawTag(58);
+        output.WriteMessage(InventoryUpgrades);
+      }
+      if (appliedItems_ != null) {
+        output.WriteRawTag(66);
+        output.WriteMessage(AppliedItems);
+      }
+      if (eggIncubators_ != null) {
+        output.WriteRawTag(74);
+        output.WriteMessage(EggIncubators);
+      }
+      if (pokemonFamily_ != null) {
+        output.WriteRawTag(82);
+        output.WriteMessage(PokemonFamily);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (pokemon_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Pokemon);
+      }
+      if (item_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
+      }
+      if (pokedexEntry_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokedexEntry);
+      }
+      if (playerStats_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerStats);
+      }
+      if (playerCurrency_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerCurrency);
+      }
+      if (playerCamera_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerCamera);
+      }
+      if (inventoryUpgrades_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventoryUpgrades);
+      }
+      if (appliedItems_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppliedItems);
+      }
+      if (eggIncubators_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EggIncubators);
+      }
+      if (pokemonFamily_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonFamily);
+      }
+      return size;
+    }
+
+    public void MergeFrom(InventoryItemData other) {
+      if (other == null) {
+        return;
+      }
+      if (other.pokemon_ != null) {
+        if (pokemon_ == null) {
+          pokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
+        }
+        Pokemon.MergeFrom(other.Pokemon);
+      }
+      if (other.item_ != null) {
+        if (item_ == null) {
+          item_ = new global::PokemonGo.RocketAPI.GeneratedCode.Item();
+        }
+        Item.MergeFrom(other.Item);
+      }
+      if (other.pokedexEntry_ != null) {
+        if (pokedexEntry_ == null) {
+          pokedexEntry_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry();
+        }
+        PokedexEntry.MergeFrom(other.PokedexEntry);
+      }
+      if (other.playerStats_ != null) {
+        if (playerStats_ == null) {
+          playerStats_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats();
+        }
+        PlayerStats.MergeFrom(other.PlayerStats);
+      }
+      if (other.playerCurrency_ != null) {
+        if (playerCurrency_ == null) {
+          playerCurrency_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency();
+        }
+        PlayerCurrency.MergeFrom(other.PlayerCurrency);
+      }
+      if (other.playerCamera_ != null) {
+        if (playerCamera_ == null) {
+          playerCamera_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera();
+        }
+        PlayerCamera.MergeFrom(other.PlayerCamera);
+      }
+      if (other.inventoryUpgrades_ != null) {
+        if (inventoryUpgrades_ == null) {
+          inventoryUpgrades_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades();
+        }
+        InventoryUpgrades.MergeFrom(other.InventoryUpgrades);
+      }
+      if (other.appliedItems_ != null) {
+        if (appliedItems_ == null) {
+          appliedItems_ = new global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems();
+        }
+        AppliedItems.MergeFrom(other.AppliedItems);
+      }
+      if (other.eggIncubators_ != null) {
+        if (eggIncubators_ == null) {
+          eggIncubators_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators();
+        }
+        EggIncubators.MergeFrom(other.EggIncubators);
+      }
+      if (other.pokemonFamily_ != null) {
+        if (pokemonFamily_ == null) {
+          pokemonFamily_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily();
+        }
+        PokemonFamily.MergeFrom(other.PokemonFamily);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            if (pokemon_ == null) {
+              pokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
+            }
+            input.ReadMessage(pokemon_);
+            break;
+          }
+          case 18: {
+            if (item_ == null) {
+              item_ = new global::PokemonGo.RocketAPI.GeneratedCode.Item();
+            }
+            input.ReadMessage(item_);
+            break;
+          }
+          case 26: {
+            if (pokedexEntry_ == null) {
+              pokedexEntry_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry();
+            }
+            input.ReadMessage(pokedexEntry_);
+            break;
+          }
+          case 34: {
+            if (playerStats_ == null) {
+              playerStats_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats();
+            }
+            input.ReadMessage(playerStats_);
+            break;
+          }
+          case 42: {
+            if (playerCurrency_ == null) {
+              playerCurrency_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency();
+            }
+            input.ReadMessage(playerCurrency_);
+            break;
+          }
+          case 50: {
+            if (playerCamera_ == null) {
+              playerCamera_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera();
+            }
+            input.ReadMessage(playerCamera_);
+            break;
+          }
+          case 58: {
+            if (inventoryUpgrades_ == null) {
+              inventoryUpgrades_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades();
+            }
+            input.ReadMessage(inventoryUpgrades_);
+            break;
+          }
+          case 66: {
+            if (appliedItems_ == null) {
+              appliedItems_ = new global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems();
+            }
+            input.ReadMessage(appliedItems_);
+            break;
+          }
+          case 74: {
+            if (eggIncubators_ == null) {
+              eggIncubators_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators();
+            }
+            input.ReadMessage(eggIncubators_);
+            break;
+          }
+          case 82: {
+            if (pokemonFamily_ == null) {
+              pokemonFamily_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily();
+            }
+            input.ReadMessage(pokemonFamily_);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class Pokemon : pb::IMessage<Pokemon> {
+    private static readonly pb::MessageParser<Pokemon> _parser = new pb::MessageParser<Pokemon>(() => new Pokemon());
+    public static pb::MessageParser<Pokemon> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[10]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public Pokemon() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public Pokemon(Pokemon other) : this() {
+      id_ = other.id_;
+      pokemonType_ = other.pokemonType_;
+      cp_ = other.cp_;
+      stamina_ = other.stamina_;
+      staminaMax_ = other.staminaMax_;
+      move1_ = other.move1_;
+      move2_ = other.move2_;
+      deployedFortId_ = other.deployedFortId_;
+      ownerName_ = other.ownerName_;
+      isEgg_ = other.isEgg_;
+      eggKmWalkedTarget_ = other.eggKmWalkedTarget_;
+      eggKmWalkedStart_ = other.eggKmWalkedStart_;
+      origin_ = other.origin_;
+      heightM_ = other.heightM_;
+      weightKg_ = other.weightKg_;
+      individualAttack_ = other.individualAttack_;
+      individualDefense_ = other.individualDefense_;
+      individualStamina_ = other.individualStamina_;
+      cpMultiplier_ = other.cpMultiplier_;
+      pokeball_ = other.pokeball_;
+      capturedCellId_ = other.capturedCellId_;
+      battlesAttacked_ = other.battlesAttacked_;
+      battlesDefended_ = other.battlesDefended_;
+      eggIncubatorId_ = other.eggIncubatorId_;
+      creationTimeMs_ = other.creationTimeMs_;
+      numUpgrades_ = other.numUpgrades_;
+      additionalCpMultiplier_ = other.additionalCpMultiplier_;
+      favorite_ = other.favorite_;
+      nickname_ = other.nickname_;
+      fromFort_ = other.fromFort_;
+    }
+
+    public Pokemon Clone() {
+      return new Pokemon(this);
+    }
+
+    /// <summary>Field number for the "id" field.</summary>
+    public const int IdFieldNumber = 1;
+    private int id_;
+    public int Id {
+      get { return id_; }
+      set {
+        id_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_type" field.</summary>
+    public const int PokemonTypeFieldNumber = 2;
+    private global::AllEnum.PokemonId pokemonType_ = 0;
+    public global::AllEnum.PokemonId PokemonType {
+      get { return pokemonType_; }
+      set {
+        pokemonType_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "cp" field.</summary>
+    public const int CpFieldNumber = 3;
+    private int cp_;
+    public int Cp {
+      get { return cp_; }
+      set {
+        cp_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "stamina" field.</summary>
+    public const int StaminaFieldNumber = 4;
+    private int stamina_;
+    public int Stamina {
+      get { return stamina_; }
+      set {
+        stamina_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "stamina_max" field.</summary>
+    public const int StaminaMaxFieldNumber = 5;
+    private int staminaMax_;
+    public int StaminaMax {
+      get { return staminaMax_; }
+      set {
+        staminaMax_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "move_1" field.</summary>
+    public const int Move1FieldNumber = 6;
+    private global::AllEnum.PokemonMove move1_ = 0;
+    public global::AllEnum.PokemonMove Move1 {
+      get { return move1_; }
+      set {
+        move1_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "move_2" field.</summary>
+    public const int Move2FieldNumber = 7;
+    private global::AllEnum.PokemonMove move2_ = 0;
+    public global::AllEnum.PokemonMove Move2 {
+      get { return move2_; }
+      set {
+        move2_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "deployed_fort_id" field.</summary>
+    public const int DeployedFortIdFieldNumber = 8;
+    private int deployedFortId_;
+    public int DeployedFortId {
+      get { return deployedFortId_; }
+      set {
+        deployedFortId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "owner_name" field.</summary>
+    public const int OwnerNameFieldNumber = 9;
+    private string ownerName_ = "";
+    public string OwnerName {
+      get { return ownerName_; }
+      set {
+        ownerName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "is_egg" field.</summary>
+    public const int IsEggFieldNumber = 10;
+    private bool isEgg_;
+    public bool IsEgg {
+      get { return isEgg_; }
+      set {
+        isEgg_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "egg_km_walked_target" field.</summary>
+    public const int EggKmWalkedTargetFieldNumber = 11;
+    private int eggKmWalkedTarget_;
+    public int EggKmWalkedTarget {
+      get { return eggKmWalkedTarget_; }
+      set {
+        eggKmWalkedTarget_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "egg_km_walked_start" field.</summary>
+    public const int EggKmWalkedStartFieldNumber = 12;
+    private int eggKmWalkedStart_;
+    public int EggKmWalkedStart {
+      get { return eggKmWalkedStart_; }
+      set {
+        eggKmWalkedStart_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "origin" field.</summary>
+    public const int OriginFieldNumber = 14;
+    private int origin_;
+    public int Origin {
+      get { return origin_; }
+      set {
+        origin_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "height_m" field.</summary>
+    public const int HeightMFieldNumber = 15;
+    private float heightM_;
+    public float HeightM {
+      get { return heightM_; }
+      set {
+        heightM_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "weight_kg" field.</summary>
+    public const int WeightKgFieldNumber = 16;
+    private float weightKg_;
+    public float WeightKg {
+      get { return weightKg_; }
+      set {
+        weightKg_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "individual_attack" field.</summary>
+    public const int IndividualAttackFieldNumber = 17;
+    private int individualAttack_;
+    public int IndividualAttack {
+      get { return individualAttack_; }
+      set {
+        individualAttack_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "individual_defense" field.</summary>
+    public const int IndividualDefenseFieldNumber = 18;
+    private int individualDefense_;
+    public int IndividualDefense {
+      get { return individualDefense_; }
+      set {
+        individualDefense_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "individual_stamina" field.</summary>
+    public const int IndividualStaminaFieldNumber = 19;
+    private int individualStamina_;
+    public int IndividualStamina {
+      get { return individualStamina_; }
+      set {
+        individualStamina_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "cp_multiplier" field.</summary>
+    public const int CpMultiplierFieldNumber = 20;
+    private int cpMultiplier_;
+    public int CpMultiplier {
+      get { return cpMultiplier_; }
+      set {
+        cpMultiplier_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokeball" field.</summary>
+    public const int PokeballFieldNumber = 21;
+    private int pokeball_;
+    public int Pokeball {
+      get { return pokeball_; }
+      set {
+        pokeball_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "captured_cell_id" field.</summary>
+    public const int CapturedCellIdFieldNumber = 22;
+    private ulong capturedCellId_;
+    public ulong CapturedCellId {
+      get { return capturedCellId_; }
+      set {
+        capturedCellId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "battles_attacked" field.</summary>
+    public const int BattlesAttackedFieldNumber = 23;
+    private int battlesAttacked_;
+    public int BattlesAttacked {
+      get { return battlesAttacked_; }
+      set {
+        battlesAttacked_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "battles_defended" field.</summary>
+    public const int BattlesDefendedFieldNumber = 24;
+    private int battlesDefended_;
+    public int BattlesDefended {
+      get { return battlesDefended_; }
+      set {
+        battlesDefended_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "egg_incubator_id" field.</summary>
+    public const int EggIncubatorIdFieldNumber = 25;
+    private int eggIncubatorId_;
+    public int EggIncubatorId {
+      get { return eggIncubatorId_; }
+      set {
+        eggIncubatorId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "creation_time_ms" field.</summary>
+    public const int CreationTimeMsFieldNumber = 26;
+    private ulong creationTimeMs_;
+    public ulong CreationTimeMs {
+      get { return creationTimeMs_; }
+      set {
+        creationTimeMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "num_upgrades" field.</summary>
+    public const int NumUpgradesFieldNumber = 27;
+    private int numUpgrades_;
+    public int NumUpgrades {
+      get { return numUpgrades_; }
+      set {
+        numUpgrades_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "additional_cp_multiplier" field.</summary>
+    public const int AdditionalCpMultiplierFieldNumber = 28;
+    private int additionalCpMultiplier_;
+    public int AdditionalCpMultiplier {
+      get { return additionalCpMultiplier_; }
+      set {
+        additionalCpMultiplier_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "favorite" field.</summary>
+    public const int FavoriteFieldNumber = 29;
+    private int favorite_;
+    public int Favorite {
+      get { return favorite_; }
+      set {
+        favorite_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "nickname" field.</summary>
+    public const int NicknameFieldNumber = 30;
+    private string nickname_ = "";
+    public string Nickname {
+      get { return nickname_; }
+      set {
+        nickname_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "from_fort" field.</summary>
+    public const int FromFortFieldNumber = 31;
+    private int fromFort_;
+    public int FromFort {
+      get { return fromFort_; }
+      set {
+        fromFort_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as Pokemon);
+    }
+
+    public bool Equals(Pokemon other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Id != other.Id) return false;
+      if (PokemonType != other.PokemonType) return false;
+      if (Cp != other.Cp) return false;
+      if (Stamina != other.Stamina) return false;
+      if (StaminaMax != other.StaminaMax) return false;
+      if (Move1 != other.Move1) return false;
+      if (Move2 != other.Move2) return false;
+      if (DeployedFortId != other.DeployedFortId) return false;
+      if (OwnerName != other.OwnerName) return false;
+      if (IsEgg != other.IsEgg) return false;
+      if (EggKmWalkedTarget != other.EggKmWalkedTarget) return false;
+      if (EggKmWalkedStart != other.EggKmWalkedStart) return false;
+      if (Origin != other.Origin) return false;
+      if (HeightM != other.HeightM) return false;
+      if (WeightKg != other.WeightKg) return false;
+      if (IndividualAttack != other.IndividualAttack) return false;
+      if (IndividualDefense != other.IndividualDefense) return false;
+      if (IndividualStamina != other.IndividualStamina) return false;
+      if (CpMultiplier != other.CpMultiplier) return false;
+      if (Pokeball != other.Pokeball) return false;
+      if (CapturedCellId != other.CapturedCellId) return false;
+      if (BattlesAttacked != other.BattlesAttacked) return false;
+      if (BattlesDefended != other.BattlesDefended) return false;
+      if (EggIncubatorId != other.EggIncubatorId) return false;
+      if (CreationTimeMs != other.CreationTimeMs) return false;
+      if (NumUpgrades != other.NumUpgrades) return false;
+      if (AdditionalCpMultiplier != other.AdditionalCpMultiplier) return false;
+      if (Favorite != other.Favorite) return false;
+      if (Nickname != other.Nickname) return false;
+      if (FromFort != other.FromFort) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Id != 0) hash ^= Id.GetHashCode();
+      if (PokemonType != 0) hash ^= PokemonType.GetHashCode();
+      if (Cp != 0) hash ^= Cp.GetHashCode();
+      if (Stamina != 0) hash ^= Stamina.GetHashCode();
+      if (StaminaMax != 0) hash ^= StaminaMax.GetHashCode();
+      if (Move1 != 0) hash ^= Move1.GetHashCode();
+      if (Move2 != 0) hash ^= Move2.GetHashCode();
+      if (DeployedFortId != 0) hash ^= DeployedFortId.GetHashCode();
+      if (OwnerName.Length != 0) hash ^= OwnerName.GetHashCode();
+      if (IsEgg != false) hash ^= IsEgg.GetHashCode();
+      if (EggKmWalkedTarget != 0) hash ^= EggKmWalkedTarget.GetHashCode();
+      if (EggKmWalkedStart != 0) hash ^= EggKmWalkedStart.GetHashCode();
+      if (Origin != 0) hash ^= Origin.GetHashCode();
+      if (HeightM != 0F) hash ^= HeightM.GetHashCode();
+      if (WeightKg != 0F) hash ^= WeightKg.GetHashCode();
+      if (IndividualAttack != 0) hash ^= IndividualAttack.GetHashCode();
+      if (IndividualDefense != 0) hash ^= IndividualDefense.GetHashCode();
+      if (IndividualStamina != 0) hash ^= IndividualStamina.GetHashCode();
+      if (CpMultiplier != 0) hash ^= CpMultiplier.GetHashCode();
+      if (Pokeball != 0) hash ^= Pokeball.GetHashCode();
+      if (CapturedCellId != 0UL) hash ^= CapturedCellId.GetHashCode();
+      if (BattlesAttacked != 0) hash ^= BattlesAttacked.GetHashCode();
+      if (BattlesDefended != 0) hash ^= BattlesDefended.GetHashCode();
+      if (EggIncubatorId != 0) hash ^= EggIncubatorId.GetHashCode();
+      if (CreationTimeMs != 0UL) hash ^= CreationTimeMs.GetHashCode();
+      if (NumUpgrades != 0) hash ^= NumUpgrades.GetHashCode();
+      if (AdditionalCpMultiplier != 0) hash ^= AdditionalCpMultiplier.GetHashCode();
+      if (Favorite != 0) hash ^= Favorite.GetHashCode();
+      if (Nickname.Length != 0) hash ^= Nickname.GetHashCode();
+      if (FromFort != 0) hash ^= FromFort.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.WriteInt32(Id);
+      }
+      if (PokemonType != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) PokemonType);
+      }
+      if (Cp != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(Cp);
+      }
+      if (Stamina != 0) {
+        output.WriteRawTag(32);
+        output.WriteInt32(Stamina);
+      }
+      if (StaminaMax != 0) {
+        output.WriteRawTag(40);
+        output.WriteInt32(StaminaMax);
+      }
+      if (Move1 != 0) {
+        output.WriteRawTag(48);
+        output.WriteEnum((int) Move1);
+      }
+      if (Move2 != 0) {
+        output.WriteRawTag(56);
+        output.WriteEnum((int) Move2);
+      }
+      if (DeployedFortId != 0) {
+        output.WriteRawTag(64);
+        output.WriteInt32(DeployedFortId);
+      }
+      if (OwnerName.Length != 0) {
+        output.WriteRawTag(74);
+        output.WriteString(OwnerName);
+      }
+      if (IsEgg != false) {
+        output.WriteRawTag(80);
+        output.WriteBool(IsEgg);
+      }
+      if (EggKmWalkedTarget != 0) {
+        output.WriteRawTag(88);
+        output.WriteInt32(EggKmWalkedTarget);
+      }
+      if (EggKmWalkedStart != 0) {
+        output.WriteRawTag(96);
+        output.WriteInt32(EggKmWalkedStart);
+      }
+      if (Origin != 0) {
+        output.WriteRawTag(112);
+        output.WriteInt32(Origin);
+      }
+      if (HeightM != 0F) {
+        output.WriteRawTag(125);
+        output.WriteFloat(HeightM);
+      }
+      if (WeightKg != 0F) {
+        output.WriteRawTag(133, 1);
+        output.WriteFloat(WeightKg);
+      }
+      if (IndividualAttack != 0) {
+        output.WriteRawTag(136, 1);
+        output.WriteInt32(IndividualAttack);
+      }
+      if (IndividualDefense != 0) {
+        output.WriteRawTag(144, 1);
+        output.WriteInt32(IndividualDefense);
+      }
+      if (IndividualStamina != 0) {
+        output.WriteRawTag(152, 1);
+        output.WriteInt32(IndividualStamina);
+      }
+      if (CpMultiplier != 0) {
+        output.WriteRawTag(160, 1);
+        output.WriteInt32(CpMultiplier);
+      }
+      if (Pokeball != 0) {
+        output.WriteRawTag(168, 1);
+        output.WriteInt32(Pokeball);
+      }
+      if (CapturedCellId != 0UL) {
+        output.WriteRawTag(176, 1);
+        output.WriteUInt64(CapturedCellId);
+      }
+      if (BattlesAttacked != 0) {
+        output.WriteRawTag(184, 1);
+        output.WriteInt32(BattlesAttacked);
+      }
+      if (BattlesDefended != 0) {
+        output.WriteRawTag(192, 1);
+        output.WriteInt32(BattlesDefended);
+      }
+      if (EggIncubatorId != 0) {
+        output.WriteRawTag(200, 1);
+        output.WriteInt32(EggIncubatorId);
+      }
+      if (CreationTimeMs != 0UL) {
+        output.WriteRawTag(208, 1);
+        output.WriteUInt64(CreationTimeMs);
+      }
+      if (NumUpgrades != 0) {
+        output.WriteRawTag(216, 1);
+        output.WriteInt32(NumUpgrades);
+      }
+      if (AdditionalCpMultiplier != 0) {
+        output.WriteRawTag(224, 1);
+        output.WriteInt32(AdditionalCpMultiplier);
+      }
+      if (Favorite != 0) {
+        output.WriteRawTag(232, 1);
+        output.WriteInt32(Favorite);
+      }
+      if (Nickname.Length != 0) {
+        output.WriteRawTag(242, 1);
+        output.WriteString(Nickname);
+      }
+      if (FromFort != 0) {
+        output.WriteRawTag(248, 1);
+        output.WriteInt32(FromFort);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Id != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
+      }
+      if (PokemonType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PokemonType);
+      }
+      if (Cp != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Cp);
+      }
+      if (Stamina != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stamina);
+      }
+      if (StaminaMax != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(StaminaMax);
+      }
+      if (Move1 != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Move1);
+      }
+      if (Move2 != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Move2);
+      }
+      if (DeployedFortId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DeployedFortId);
+      }
+      if (OwnerName.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(OwnerName);
+      }
+      if (IsEgg != false) {
+        size += 1 + 1;
+      }
+      if (EggKmWalkedTarget != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedTarget);
+      }
+      if (EggKmWalkedStart != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedStart);
+      }
+      if (Origin != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Origin);
+      }
+      if (HeightM != 0F) {
+        size += 1 + 4;
+      }
+      if (WeightKg != 0F) {
+        size += 2 + 4;
+      }
+      if (IndividualAttack != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualAttack);
+      }
+      if (IndividualDefense != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualDefense);
+      }
+      if (IndividualStamina != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualStamina);
+      }
+      if (CpMultiplier != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(CpMultiplier);
+      }
+      if (Pokeball != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(Pokeball);
+      }
+      if (CapturedCellId != 0UL) {
+        size += 2 + pb::CodedOutputStream.ComputeUInt64Size(CapturedCellId);
+      }
+      if (BattlesAttacked != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesAttacked);
+      }
+      if (BattlesDefended != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesDefended);
+      }
+      if (EggIncubatorId != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(EggIncubatorId);
+      }
+      if (CreationTimeMs != 0UL) {
+        size += 2 + pb::CodedOutputStream.ComputeUInt64Size(CreationTimeMs);
+      }
+      if (NumUpgrades != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumUpgrades);
+      }
+      if (AdditionalCpMultiplier != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(AdditionalCpMultiplier);
+      }
+      if (Favorite != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(Favorite);
+      }
+      if (Nickname.Length != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeStringSize(Nickname);
+      }
+      if (FromFort != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(FromFort);
+      }
+      return size;
+    }
+
+    public void MergeFrom(Pokemon other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Id != 0) {
+        Id = other.Id;
+      }
+      if (other.PokemonType != 0) {
+        PokemonType = other.PokemonType;
+      }
+      if (other.Cp != 0) {
+        Cp = other.Cp;
+      }
+      if (other.Stamina != 0) {
+        Stamina = other.Stamina;
+      }
+      if (other.StaminaMax != 0) {
+        StaminaMax = other.StaminaMax;
+      }
+      if (other.Move1 != 0) {
+        Move1 = other.Move1;
+      }
+      if (other.Move2 != 0) {
+        Move2 = other.Move2;
+      }
+      if (other.DeployedFortId != 0) {
+        DeployedFortId = other.DeployedFortId;
+      }
+      if (other.OwnerName.Length != 0) {
+        OwnerName = other.OwnerName;
+      }
+      if (other.IsEgg != false) {
+        IsEgg = other.IsEgg;
+      }
+      if (other.EggKmWalkedTarget != 0) {
+        EggKmWalkedTarget = other.EggKmWalkedTarget;
+      }
+      if (other.EggKmWalkedStart != 0) {
+        EggKmWalkedStart = other.EggKmWalkedStart;
+      }
+      if (other.Origin != 0) {
+        Origin = other.Origin;
+      }
+      if (other.HeightM != 0F) {
+        HeightM = other.HeightM;
+      }
+      if (other.WeightKg != 0F) {
+        WeightKg = other.WeightKg;
+      }
+      if (other.IndividualAttack != 0) {
+        IndividualAttack = other.IndividualAttack;
+      }
+      if (other.IndividualDefense != 0) {
+        IndividualDefense = other.IndividualDefense;
+      }
+      if (other.IndividualStamina != 0) {
+        IndividualStamina = other.IndividualStamina;
+      }
+      if (other.CpMultiplier != 0) {
+        CpMultiplier = other.CpMultiplier;
+      }
+      if (other.Pokeball != 0) {
+        Pokeball = other.Pokeball;
+      }
+      if (other.CapturedCellId != 0UL) {
+        CapturedCellId = other.CapturedCellId;
+      }
+      if (other.BattlesAttacked != 0) {
+        BattlesAttacked = other.BattlesAttacked;
+      }
+      if (other.BattlesDefended != 0) {
+        BattlesDefended = other.BattlesDefended;
+      }
+      if (other.EggIncubatorId != 0) {
+        EggIncubatorId = other.EggIncubatorId;
+      }
+      if (other.CreationTimeMs != 0UL) {
+        CreationTimeMs = other.CreationTimeMs;
+      }
+      if (other.NumUpgrades != 0) {
+        NumUpgrades = other.NumUpgrades;
+      }
+      if (other.AdditionalCpMultiplier != 0) {
+        AdditionalCpMultiplier = other.AdditionalCpMultiplier;
+      }
+      if (other.Favorite != 0) {
+        Favorite = other.Favorite;
+      }
+      if (other.Nickname.Length != 0) {
+        Nickname = other.Nickname;
+      }
+      if (other.FromFort != 0) {
+        FromFort = other.FromFort;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Id = input.ReadInt32();
+            break;
+          }
+          case 16: {
+            pokemonType_ = (global::AllEnum.PokemonId) input.ReadEnum();
+            break;
+          }
+          case 24: {
+            Cp = input.ReadInt32();
+            break;
+          }
+          case 32: {
+            Stamina = input.ReadInt32();
+            break;
+          }
+          case 40: {
+            StaminaMax = input.ReadInt32();
+            break;
+          }
+          case 48: {
+            move1_ = (global::AllEnum.PokemonMove) input.ReadEnum();
+            break;
+          }
+          case 56: {
+            move2_ = (global::AllEnum.PokemonMove) input.ReadEnum();
+            break;
+          }
+          case 64: {
+            DeployedFortId = input.ReadInt32();
+            break;
+          }
+          case 74: {
+            OwnerName = input.ReadString();
+            break;
+          }
+          case 80: {
+            IsEgg = input.ReadBool();
+            break;
+          }
+          case 88: {
+            EggKmWalkedTarget = input.ReadInt32();
+            break;
+          }
+          case 96: {
+            EggKmWalkedStart = input.ReadInt32();
+            break;
+          }
+          case 112: {
+            Origin = input.ReadInt32();
+            break;
+          }
+          case 125: {
+            HeightM = input.ReadFloat();
+            break;
+          }
+          case 133: {
+            WeightKg = input.ReadFloat();
+            break;
+          }
+          case 136: {
+            IndividualAttack = input.ReadInt32();
+            break;
+          }
+          case 144: {
+            IndividualDefense = input.ReadInt32();
+            break;
+          }
+          case 152: {
+            IndividualStamina = input.ReadInt32();
+            break;
+          }
+          case 160: {
+            CpMultiplier = input.ReadInt32();
+            break;
+          }
+          case 168: {
+            Pokeball = input.ReadInt32();
+            break;
+          }
+          case 176: {
+            CapturedCellId = input.ReadUInt64();
+            break;
+          }
+          case 184: {
+            BattlesAttacked = input.ReadInt32();
+            break;
+          }
+          case 192: {
+            BattlesDefended = input.ReadInt32();
+            break;
+          }
+          case 200: {
+            EggIncubatorId = input.ReadInt32();
+            break;
+          }
+          case 208: {
+            CreationTimeMs = input.ReadUInt64();
+            break;
+          }
+          case 216: {
+            NumUpgrades = input.ReadInt32();
+            break;
+          }
+          case 224: {
+            AdditionalCpMultiplier = input.ReadInt32();
+            break;
+          }
+          case 232: {
+            Favorite = input.ReadInt32();
+            break;
+          }
+          case 242: {
+            Nickname = input.ReadString();
+            break;
+          }
+          case 248: {
+            FromFort = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class Item : pb::IMessage<Item> {
+    private static readonly pb::MessageParser<Item> _parser = new pb::MessageParser<Item>(() => new Item());
+    public static pb::MessageParser<Item> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[11]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public Item() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public Item(Item other) : this() {
+      item_ = other.item_;
+      count_ = other.count_;
+      unseen_ = other.unseen_;
+    }
+
+    public Item Clone() {
+      return new Item(this);
+    }
+
+    /// <summary>Field number for the "item" field.</summary>
+    public const int Item_FieldNumber = 1;
+    private global::AllEnum.ItemType item_ = 0;
+    public global::AllEnum.ItemType Item_ {
+      get { return item_; }
+      set {
+        item_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "count" field.</summary>
+    public const int CountFieldNumber = 2;
+    private int count_;
+    public int Count {
+      get { return count_; }
+      set {
+        count_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "unseen" field.</summary>
+    public const int UnseenFieldNumber = 3;
+    private bool unseen_;
+    public bool Unseen {
+      get { return unseen_; }
+      set {
+        unseen_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as Item);
+    }
+
+    public bool Equals(Item other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Item_ != other.Item_) return false;
+      if (Count != other.Count) return false;
+      if (Unseen != other.Unseen) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Item_ != 0) hash ^= Item_.GetHashCode();
+      if (Count != 0) hash ^= Count.GetHashCode();
+      if (Unseen != false) hash ^= Unseen.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Item_ != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) Item_);
+      }
+      if (Count != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(Count);
+      }
+      if (Unseen != false) {
+        output.WriteRawTag(24);
+        output.WriteBool(Unseen);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Item_ != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Item_);
+      }
+      if (Count != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Count);
+      }
+      if (Unseen != false) {
+        size += 1 + 1;
+      }
+      return size;
+    }
+
+    public void MergeFrom(Item other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Item_ != 0) {
+        Item_ = other.Item_;
+      }
+      if (other.Count != 0) {
+        Count = other.Count;
+      }
+      if (other.Unseen != false) {
+        Unseen = other.Unseen;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            item_ = (global::AllEnum.ItemType) input.ReadEnum();
+            break;
+          }
+          case 16: {
+            Count = input.ReadInt32();
+            break;
+          }
+          case 24: {
+            Unseen = input.ReadBool();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PokedexEntry : pb::IMessage<PokedexEntry> {
+    private static readonly pb::MessageParser<PokedexEntry> _parser = new pb::MessageParser<PokedexEntry>(() => new PokedexEntry());
+    public static pb::MessageParser<PokedexEntry> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[12]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PokedexEntry() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PokedexEntry(PokedexEntry other) : this() {
+      pokedexEntryNumber_ = other.pokedexEntryNumber_;
+      timesEncountered_ = other.timesEncountered_;
+      timesCaptured_ = other.timesCaptured_;
+      evolutionStonePieces_ = other.evolutionStonePieces_;
+      evolutionStones_ = other.evolutionStones_;
+    }
+
+    public PokedexEntry Clone() {
+      return new PokedexEntry(this);
+    }
+
+    /// <summary>Field number for the "pokedex_entry_number" field.</summary>
+    public const int PokedexEntryNumberFieldNumber = 1;
+    private int pokedexEntryNumber_;
+    public int PokedexEntryNumber {
+      get { return pokedexEntryNumber_; }
+      set {
+        pokedexEntryNumber_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "times_encountered" field.</summary>
+    public const int TimesEncounteredFieldNumber = 2;
+    private int timesEncountered_;
+    public int TimesEncountered {
+      get { return timesEncountered_; }
+      set {
+        timesEncountered_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "times_captured" field.</summary>
+    public const int TimesCapturedFieldNumber = 3;
+    private int timesCaptured_;
+    public int TimesCaptured {
+      get { return timesCaptured_; }
+      set {
+        timesCaptured_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "evolution_stone_pieces" field.</summary>
+    public const int EvolutionStonePiecesFieldNumber = 4;
+    private int evolutionStonePieces_;
+    public int EvolutionStonePieces {
+      get { return evolutionStonePieces_; }
+      set {
+        evolutionStonePieces_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "evolution_stones" field.</summary>
+    public const int EvolutionStonesFieldNumber = 5;
+    private int evolutionStones_;
+    public int EvolutionStones {
+      get { return evolutionStones_; }
+      set {
+        evolutionStones_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PokedexEntry);
+    }
+
+    public bool Equals(PokedexEntry other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (PokedexEntryNumber != other.PokedexEntryNumber) return false;
+      if (TimesEncountered != other.TimesEncountered) return false;
+      if (TimesCaptured != other.TimesCaptured) return false;
+      if (EvolutionStonePieces != other.EvolutionStonePieces) return false;
+      if (EvolutionStones != other.EvolutionStones) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (PokedexEntryNumber != 0) hash ^= PokedexEntryNumber.GetHashCode();
+      if (TimesEncountered != 0) hash ^= TimesEncountered.GetHashCode();
+      if (TimesCaptured != 0) hash ^= TimesCaptured.GetHashCode();
+      if (EvolutionStonePieces != 0) hash ^= EvolutionStonePieces.GetHashCode();
+      if (EvolutionStones != 0) hash ^= EvolutionStones.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (PokedexEntryNumber != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(PokedexEntryNumber);
+      }
+      if (TimesEncountered != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(TimesEncountered);
+      }
+      if (TimesCaptured != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(TimesCaptured);
+      }
+      if (EvolutionStonePieces != 0) {
+        output.WriteRawTag(32);
+        output.WriteInt32(EvolutionStonePieces);
+      }
+      if (EvolutionStones != 0) {
+        output.WriteRawTag(40);
+        output.WriteInt32(EvolutionStones);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (PokedexEntryNumber != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokedexEntryNumber);
+      }
+      if (TimesEncountered != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimesEncountered);
+      }
+      if (TimesCaptured != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimesCaptured);
+      }
+      if (EvolutionStonePieces != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EvolutionStonePieces);
+      }
+      if (EvolutionStones != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EvolutionStones);
+      }
+      return size;
+    }
+
+    public void MergeFrom(PokedexEntry other) {
+      if (other == null) {
+        return;
+      }
+      if (other.PokedexEntryNumber != 0) {
+        PokedexEntryNumber = other.PokedexEntryNumber;
+      }
+      if (other.TimesEncountered != 0) {
+        TimesEncountered = other.TimesEncountered;
+      }
+      if (other.TimesCaptured != 0) {
+        TimesCaptured = other.TimesCaptured;
+      }
+      if (other.EvolutionStonePieces != 0) {
+        EvolutionStonePieces = other.EvolutionStonePieces;
+      }
+      if (other.EvolutionStones != 0) {
+        EvolutionStones = other.EvolutionStones;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            PokedexEntryNumber = input.ReadInt32();
+            break;
+          }
+          case 16: {
+            TimesEncountered = input.ReadInt32();
+            break;
+          }
+          case 24: {
+            TimesCaptured = input.ReadInt32();
+            break;
+          }
+          case 32: {
+            EvolutionStonePieces = input.ReadInt32();
+            break;
+          }
+          case 40: {
+            EvolutionStones = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PlayerStats : pb::IMessage<PlayerStats> {
+    private static readonly pb::MessageParser<PlayerStats> _parser = new pb::MessageParser<PlayerStats>(() => new PlayerStats());
+    public static pb::MessageParser<PlayerStats> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[13]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PlayerStats() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PlayerStats(PlayerStats other) : this() {
+      level_ = other.level_;
+      experience_ = other.experience_;
+      prevLevelXp_ = other.prevLevelXp_;
+      nextLevelXp_ = other.nextLevelXp_;
+      kmWalked_ = other.kmWalked_;
+      pokemonsEncountered_ = other.pokemonsEncountered_;
+      uniquePokedexEntries_ = other.uniquePokedexEntries_;
+      pokemonsCaptured_ = other.pokemonsCaptured_;
+      evolutions_ = other.evolutions_;
+      pokeStopVisits_ = other.pokeStopVisits_;
+      pokeballsThrown_ = other.pokeballsThrown_;
+      eggsHatched_ = other.eggsHatched_;
+      bigMagikarpCaught_ = other.bigMagikarpCaught_;
+      battleAttackWon_ = other.battleAttackWon_;
+      battleAttackTotal_ = other.battleAttackTotal_;
+      battleDefendedWon_ = other.battleDefendedWon_;
+      battleTrainingWon_ = other.battleTrainingWon_;
+      battleTrainingTotal_ = other.battleTrainingTotal_;
+      prestigeRaisedTotal_ = other.prestigeRaisedTotal_;
+      prestigeDroppedTotal_ = other.prestigeDroppedTotal_;
+      pokemonDeployed_ = other.pokemonDeployed_;
+      pokemonCaughtByType_ = other.pokemonCaughtByType_;
+      smallRattataCaught_ = other.smallRattataCaught_;
+    }
+
+    public PlayerStats Clone() {
+      return new PlayerStats(this);
+    }
+
+    /// <summary>Field number for the "level" field.</summary>
+    public const int LevelFieldNumber = 1;
+    private int level_;
+    public int Level {
+      get { return level_; }
+      set {
+        level_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "experience" field.</summary>
+    public const int ExperienceFieldNumber = 2;
+    private long experience_;
+    public long Experience {
+      get { return experience_; }
+      set {
+        experience_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "prev_level_xp" field.</summary>
+    public const int PrevLevelXpFieldNumber = 3;
+    private long prevLevelXp_;
+    public long PrevLevelXp {
+      get { return prevLevelXp_; }
+      set {
+        prevLevelXp_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "next_level_xp" field.</summary>
+    public const int NextLevelXpFieldNumber = 4;
+    private long nextLevelXp_;
+    public long NextLevelXp {
+      get { return nextLevelXp_; }
+      set {
+        nextLevelXp_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "km_walked" field.</summary>
+    public const int KmWalkedFieldNumber = 5;
+    private float kmWalked_;
+    public float KmWalked {
+      get { return kmWalked_; }
+      set {
+        kmWalked_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemons_encountered" field.</summary>
+    public const int PokemonsEncounteredFieldNumber = 6;
+    private int pokemonsEncountered_;
+    public int PokemonsEncountered {
+      get { return pokemonsEncountered_; }
+      set {
+        pokemonsEncountered_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "unique_pokedex_entries" field.</summary>
+    public const int UniquePokedexEntriesFieldNumber = 7;
+    private int uniquePokedexEntries_;
+    public int UniquePokedexEntries {
+      get { return uniquePokedexEntries_; }
+      set {
+        uniquePokedexEntries_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemons_captured" field.</summary>
+    public const int PokemonsCapturedFieldNumber = 8;
+    private int pokemonsCaptured_;
+    public int PokemonsCaptured {
+      get { return pokemonsCaptured_; }
+      set {
+        pokemonsCaptured_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "evolutions" field.</summary>
+    public const int EvolutionsFieldNumber = 9;
+    private int evolutions_;
+    public int Evolutions {
+      get { return evolutions_; }
+      set {
+        evolutions_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "poke_stop_visits" field.</summary>
+    public const int PokeStopVisitsFieldNumber = 10;
+    private int pokeStopVisits_;
+    public int PokeStopVisits {
+      get { return pokeStopVisits_; }
+      set {
+        pokeStopVisits_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokeballs_thrown" field.</summary>
+    public const int PokeballsThrownFieldNumber = 11;
+    private int pokeballsThrown_;
+    public int PokeballsThrown {
+      get { return pokeballsThrown_; }
+      set {
+        pokeballsThrown_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "eggs_hatched" field.</summary>
+    public const int EggsHatchedFieldNumber = 12;
+    private int eggsHatched_;
+    public int EggsHatched {
+      get { return eggsHatched_; }
+      set {
+        eggsHatched_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "big_magikarp_caught" field.</summary>
+    public const int BigMagikarpCaughtFieldNumber = 13;
+    private int bigMagikarpCaught_;
+    public int BigMagikarpCaught {
+      get { return bigMagikarpCaught_; }
+      set {
+        bigMagikarpCaught_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "battle_attack_won" field.</summary>
+    public const int BattleAttackWonFieldNumber = 14;
+    private int battleAttackWon_;
+    public int BattleAttackWon {
+      get { return battleAttackWon_; }
+      set {
+        battleAttackWon_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "battle_attack_total" field.</summary>
+    public const int BattleAttackTotalFieldNumber = 15;
+    private int battleAttackTotal_;
+    public int BattleAttackTotal {
+      get { return battleAttackTotal_; }
+      set {
+        battleAttackTotal_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "battle_defended_won" field.</summary>
+    public const int BattleDefendedWonFieldNumber = 16;
+    private int battleDefendedWon_;
+    public int BattleDefendedWon {
+      get { return battleDefendedWon_; }
+      set {
+        battleDefendedWon_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "battle_training_won" field.</summary>
+    public const int BattleTrainingWonFieldNumber = 17;
+    private int battleTrainingWon_;
+    public int BattleTrainingWon {
+      get { return battleTrainingWon_; }
+      set {
+        battleTrainingWon_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "battle_training_total" field.</summary>
+    public const int BattleTrainingTotalFieldNumber = 18;
+    private int battleTrainingTotal_;
+    public int BattleTrainingTotal {
+      get { return battleTrainingTotal_; }
+      set {
+        battleTrainingTotal_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "prestige_raised_total" field.</summary>
+    public const int PrestigeRaisedTotalFieldNumber = 19;
+    private int prestigeRaisedTotal_;
+    public int PrestigeRaisedTotal {
+      get { return prestigeRaisedTotal_; }
+      set {
+        prestigeRaisedTotal_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "prestige_dropped_total" field.</summary>
+    public const int PrestigeDroppedTotalFieldNumber = 20;
+    private int prestigeDroppedTotal_;
+    public int PrestigeDroppedTotal {
+      get { return prestigeDroppedTotal_; }
+      set {
+        prestigeDroppedTotal_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_deployed" field.</summary>
+    public const int PokemonDeployedFieldNumber = 21;
+    private int pokemonDeployed_;
+    public int PokemonDeployed {
+      get { return pokemonDeployed_; }
+      set {
+        pokemonDeployed_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_caught_by_type" field.</summary>
+    public const int PokemonCaughtByTypeFieldNumber = 22;
+    private pb::ByteString pokemonCaughtByType_ = pb::ByteString.Empty;
+    /// <summary>
+    ///  TODO: repeated PokemonType ??
+    /// </summary>
+    public pb::ByteString PokemonCaughtByType {
+      get { return pokemonCaughtByType_; }
+      set {
+        pokemonCaughtByType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "small_rattata_caught" field.</summary>
+    public const int SmallRattataCaughtFieldNumber = 23;
+    private int smallRattataCaught_;
+    public int SmallRattataCaught {
+      get { return smallRattataCaught_; }
+      set {
+        smallRattataCaught_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PlayerStats);
+    }
+
+    public bool Equals(PlayerStats other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Level != other.Level) return false;
+      if (Experience != other.Experience) return false;
+      if (PrevLevelXp != other.PrevLevelXp) return false;
+      if (NextLevelXp != other.NextLevelXp) return false;
+      if (KmWalked != other.KmWalked) return false;
+      if (PokemonsEncountered != other.PokemonsEncountered) return false;
+      if (UniquePokedexEntries != other.UniquePokedexEntries) return false;
+      if (PokemonsCaptured != other.PokemonsCaptured) return false;
+      if (Evolutions != other.Evolutions) return false;
+      if (PokeStopVisits != other.PokeStopVisits) return false;
+      if (PokeballsThrown != other.PokeballsThrown) return false;
+      if (EggsHatched != other.EggsHatched) return false;
+      if (BigMagikarpCaught != other.BigMagikarpCaught) return false;
+      if (BattleAttackWon != other.BattleAttackWon) return false;
+      if (BattleAttackTotal != other.BattleAttackTotal) return false;
+      if (BattleDefendedWon != other.BattleDefendedWon) return false;
+      if (BattleTrainingWon != other.BattleTrainingWon) return false;
+      if (BattleTrainingTotal != other.BattleTrainingTotal) return false;
+      if (PrestigeRaisedTotal != other.PrestigeRaisedTotal) return false;
+      if (PrestigeDroppedTotal != other.PrestigeDroppedTotal) return false;
+      if (PokemonDeployed != other.PokemonDeployed) return false;
+      if (PokemonCaughtByType != other.PokemonCaughtByType) return false;
+      if (SmallRattataCaught != other.SmallRattataCaught) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Level != 0) hash ^= Level.GetHashCode();
+      if (Experience != 0L) hash ^= Experience.GetHashCode();
+      if (PrevLevelXp != 0L) hash ^= PrevLevelXp.GetHashCode();
+      if (NextLevelXp != 0L) hash ^= NextLevelXp.GetHashCode();
+      if (KmWalked != 0F) hash ^= KmWalked.GetHashCode();
+      if (PokemonsEncountered != 0) hash ^= PokemonsEncountered.GetHashCode();
+      if (UniquePokedexEntries != 0) hash ^= UniquePokedexEntries.GetHashCode();
+      if (PokemonsCaptured != 0) hash ^= PokemonsCaptured.GetHashCode();
+      if (Evolutions != 0) hash ^= Evolutions.GetHashCode();
+      if (PokeStopVisits != 0) hash ^= PokeStopVisits.GetHashCode();
+      if (PokeballsThrown != 0) hash ^= PokeballsThrown.GetHashCode();
+      if (EggsHatched != 0) hash ^= EggsHatched.GetHashCode();
+      if (BigMagikarpCaught != 0) hash ^= BigMagikarpCaught.GetHashCode();
+      if (BattleAttackWon != 0) hash ^= BattleAttackWon.GetHashCode();
+      if (BattleAttackTotal != 0) hash ^= BattleAttackTotal.GetHashCode();
+      if (BattleDefendedWon != 0) hash ^= BattleDefendedWon.GetHashCode();
+      if (BattleTrainingWon != 0) hash ^= BattleTrainingWon.GetHashCode();
+      if (BattleTrainingTotal != 0) hash ^= BattleTrainingTotal.GetHashCode();
+      if (PrestigeRaisedTotal != 0) hash ^= PrestigeRaisedTotal.GetHashCode();
+      if (PrestigeDroppedTotal != 0) hash ^= PrestigeDroppedTotal.GetHashCode();
+      if (PokemonDeployed != 0) hash ^= PokemonDeployed.GetHashCode();
+      if (PokemonCaughtByType.Length != 0) hash ^= PokemonCaughtByType.GetHashCode();
+      if (SmallRattataCaught != 0) hash ^= SmallRattataCaught.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Level != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(Level);
+      }
+      if (Experience != 0L) {
+        output.WriteRawTag(16);
+        output.WriteInt64(Experience);
+      }
+      if (PrevLevelXp != 0L) {
+        output.WriteRawTag(24);
+        output.WriteInt64(PrevLevelXp);
+      }
+      if (NextLevelXp != 0L) {
+        output.WriteRawTag(32);
+        output.WriteInt64(NextLevelXp);
+      }
+      if (KmWalked != 0F) {
+        output.WriteRawTag(45);
+        output.WriteFloat(KmWalked);
+      }
+      if (PokemonsEncountered != 0) {
+        output.WriteRawTag(48);
+        output.WriteInt32(PokemonsEncountered);
+      }
+      if (UniquePokedexEntries != 0) {
+        output.WriteRawTag(56);
+        output.WriteInt32(UniquePokedexEntries);
+      }
+      if (PokemonsCaptured != 0) {
+        output.WriteRawTag(64);
+        output.WriteInt32(PokemonsCaptured);
+      }
+      if (Evolutions != 0) {
+        output.WriteRawTag(72);
+        output.WriteInt32(Evolutions);
+      }
+      if (PokeStopVisits != 0) {
+        output.WriteRawTag(80);
+        output.WriteInt32(PokeStopVisits);
+      }
+      if (PokeballsThrown != 0) {
+        output.WriteRawTag(88);
+        output.WriteInt32(PokeballsThrown);
+      }
+      if (EggsHatched != 0) {
+        output.WriteRawTag(96);
+        output.WriteInt32(EggsHatched);
+      }
+      if (BigMagikarpCaught != 0) {
+        output.WriteRawTag(104);
+        output.WriteInt32(BigMagikarpCaught);
+      }
+      if (BattleAttackWon != 0) {
+        output.WriteRawTag(112);
+        output.WriteInt32(BattleAttackWon);
+      }
+      if (BattleAttackTotal != 0) {
+        output.WriteRawTag(120);
+        output.WriteInt32(BattleAttackTotal);
+      }
+      if (BattleDefendedWon != 0) {
+        output.WriteRawTag(128, 1);
+        output.WriteInt32(BattleDefendedWon);
+      }
+      if (BattleTrainingWon != 0) {
+        output.WriteRawTag(136, 1);
+        output.WriteInt32(BattleTrainingWon);
+      }
+      if (BattleTrainingTotal != 0) {
+        output.WriteRawTag(144, 1);
+        output.WriteInt32(BattleTrainingTotal);
+      }
+      if (PrestigeRaisedTotal != 0) {
+        output.WriteRawTag(152, 1);
+        output.WriteInt32(PrestigeRaisedTotal);
+      }
+      if (PrestigeDroppedTotal != 0) {
+        output.WriteRawTag(160, 1);
+        output.WriteInt32(PrestigeDroppedTotal);
+      }
+      if (PokemonDeployed != 0) {
+        output.WriteRawTag(168, 1);
+        output.WriteInt32(PokemonDeployed);
+      }
+      if (PokemonCaughtByType.Length != 0) {
+        output.WriteRawTag(178, 1);
+        output.WriteBytes(PokemonCaughtByType);
+      }
+      if (SmallRattataCaught != 0) {
+        output.WriteRawTag(184, 1);
+        output.WriteInt32(SmallRattataCaught);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Level != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Level);
+      }
+      if (Experience != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Experience);
+      }
+      if (PrevLevelXp != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(PrevLevelXp);
+      }
+      if (NextLevelXp != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextLevelXp);
+      }
+      if (KmWalked != 0F) {
+        size += 1 + 4;
+      }
+      if (PokemonsEncountered != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokemonsEncountered);
+      }
+      if (UniquePokedexEntries != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UniquePokedexEntries);
+      }
+      if (PokemonsCaptured != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokemonsCaptured);
+      }
+      if (Evolutions != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Evolutions);
+      }
+      if (PokeStopVisits != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokeStopVisits);
+      }
+      if (PokeballsThrown != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokeballsThrown);
+      }
+      if (EggsHatched != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggsHatched);
+      }
+      if (BigMagikarpCaught != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BigMagikarpCaught);
+      }
+      if (BattleAttackWon != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BattleAttackWon);
+      }
+      if (BattleAttackTotal != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BattleAttackTotal);
+      }
+      if (BattleDefendedWon != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattleDefendedWon);
+      }
+      if (BattleTrainingWon != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattleTrainingWon);
+      }
+      if (BattleTrainingTotal != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattleTrainingTotal);
+      }
+      if (PrestigeRaisedTotal != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(PrestigeRaisedTotal);
+      }
+      if (PrestigeDroppedTotal != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(PrestigeDroppedTotal);
+      }
+      if (PokemonDeployed != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(PokemonDeployed);
+      }
+      if (PokemonCaughtByType.Length != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeBytesSize(PokemonCaughtByType);
+      }
+      if (SmallRattataCaught != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(SmallRattataCaught);
+      }
+      return size;
+    }
+
+    public void MergeFrom(PlayerStats other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Level != 0) {
+        Level = other.Level;
+      }
+      if (other.Experience != 0L) {
+        Experience = other.Experience;
+      }
+      if (other.PrevLevelXp != 0L) {
+        PrevLevelXp = other.PrevLevelXp;
+      }
+      if (other.NextLevelXp != 0L) {
+        NextLevelXp = other.NextLevelXp;
+      }
+      if (other.KmWalked != 0F) {
+        KmWalked = other.KmWalked;
+      }
+      if (other.PokemonsEncountered != 0) {
+        PokemonsEncountered = other.PokemonsEncountered;
+      }
+      if (other.UniquePokedexEntries != 0) {
+        UniquePokedexEntries = other.UniquePokedexEntries;
+      }
+      if (other.PokemonsCaptured != 0) {
+        PokemonsCaptured = other.PokemonsCaptured;
+      }
+      if (other.Evolutions != 0) {
+        Evolutions = other.Evolutions;
+      }
+      if (other.PokeStopVisits != 0) {
+        PokeStopVisits = other.PokeStopVisits;
+      }
+      if (other.PokeballsThrown != 0) {
+        PokeballsThrown = other.PokeballsThrown;
+      }
+      if (other.EggsHatched != 0) {
+        EggsHatched = other.EggsHatched;
+      }
+      if (other.BigMagikarpCaught != 0) {
+        BigMagikarpCaught = other.BigMagikarpCaught;
+      }
+      if (other.BattleAttackWon != 0) {
+        BattleAttackWon = other.BattleAttackWon;
+      }
+      if (other.BattleAttackTotal != 0) {
+        BattleAttackTotal = other.BattleAttackTotal;
+      }
+      if (other.BattleDefendedWon != 0) {
+        BattleDefendedWon = other.BattleDefendedWon;
+      }
+      if (other.BattleTrainingWon != 0) {
+        BattleTrainingWon = other.BattleTrainingWon;
+      }
+      if (other.BattleTrainingTotal != 0) {
+        BattleTrainingTotal = other.BattleTrainingTotal;
+      }
+      if (other.PrestigeRaisedTotal != 0) {
+        PrestigeRaisedTotal = other.PrestigeRaisedTotal;
+      }
+      if (other.PrestigeDroppedTotal != 0) {
+        PrestigeDroppedTotal = other.PrestigeDroppedTotal;
+      }
+      if (other.PokemonDeployed != 0) {
+        PokemonDeployed = other.PokemonDeployed;
+      }
+      if (other.PokemonCaughtByType.Length != 0) {
+        PokemonCaughtByType = other.PokemonCaughtByType;
+      }
+      if (other.SmallRattataCaught != 0) {
+        SmallRattataCaught = other.SmallRattataCaught;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Level = input.ReadInt32();
+            break;
+          }
+          case 16: {
+            Experience = input.ReadInt64();
+            break;
+          }
+          case 24: {
+            PrevLevelXp = input.ReadInt64();
+            break;
+          }
+          case 32: {
+            NextLevelXp = input.ReadInt64();
+            break;
+          }
+          case 45: {
+            KmWalked = input.ReadFloat();
+            break;
+          }
+          case 48: {
+            PokemonsEncountered = input.ReadInt32();
+            break;
+          }
+          case 56: {
+            UniquePokedexEntries = input.ReadInt32();
+            break;
+          }
+          case 64: {
+            PokemonsCaptured = input.ReadInt32();
+            break;
+          }
+          case 72: {
+            Evolutions = input.ReadInt32();
+            break;
+          }
+          case 80: {
+            PokeStopVisits = input.ReadInt32();
+            break;
+          }
+          case 88: {
+            PokeballsThrown = input.ReadInt32();
+            break;
+          }
+          case 96: {
+            EggsHatched = input.ReadInt32();
+            break;
+          }
+          case 104: {
+            BigMagikarpCaught = input.ReadInt32();
+            break;
+          }
+          case 112: {
+            BattleAttackWon = input.ReadInt32();
+            break;
+          }
+          case 120: {
+            BattleAttackTotal = input.ReadInt32();
+            break;
+          }
+          case 128: {
+            BattleDefendedWon = input.ReadInt32();
+            break;
+          }
+          case 136: {
+            BattleTrainingWon = input.ReadInt32();
+            break;
+          }
+          case 144: {
+            BattleTrainingTotal = input.ReadInt32();
+            break;
+          }
+          case 152: {
+            PrestigeRaisedTotal = input.ReadInt32();
+            break;
+          }
+          case 160: {
+            PrestigeDroppedTotal = input.ReadInt32();
+            break;
+          }
+          case 168: {
+            PokemonDeployed = input.ReadInt32();
+            break;
+          }
+          case 178: {
+            PokemonCaughtByType = input.ReadBytes();
+            break;
+          }
+          case 184: {
+            SmallRattataCaught = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PlayerCurrency : pb::IMessage<PlayerCurrency> {
+    private static readonly pb::MessageParser<PlayerCurrency> _parser = new pb::MessageParser<PlayerCurrency>(() => new PlayerCurrency());
+    public static pb::MessageParser<PlayerCurrency> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[14]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PlayerCurrency() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PlayerCurrency(PlayerCurrency other) : this() {
+      gems_ = other.gems_;
+    }
+
+    public PlayerCurrency Clone() {
+      return new PlayerCurrency(this);
+    }
+
+    /// <summary>Field number for the "gems" field.</summary>
+    public const int GemsFieldNumber = 1;
+    private int gems_;
+    public int Gems {
+      get { return gems_; }
+      set {
+        gems_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PlayerCurrency);
+    }
+
+    public bool Equals(PlayerCurrency other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Gems != other.Gems) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Gems != 0) hash ^= Gems.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Gems != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(Gems);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Gems != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Gems);
+      }
+      return size;
+    }
+
+    public void MergeFrom(PlayerCurrency other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Gems != 0) {
+        Gems = other.Gems;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Gems = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PlayerCamera : pb::IMessage<PlayerCamera> {
+    private static readonly pb::MessageParser<PlayerCamera> _parser = new pb::MessageParser<PlayerCamera>(() => new PlayerCamera());
+    public static pb::MessageParser<PlayerCamera> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[15]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PlayerCamera() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PlayerCamera(PlayerCamera other) : this() {
+      isDefaultCamera_ = other.isDefaultCamera_;
+    }
+
+    public PlayerCamera Clone() {
+      return new PlayerCamera(this);
+    }
+
+    /// <summary>Field number for the "is_default_camera" field.</summary>
+    public const int IsDefaultCameraFieldNumber = 1;
+    private bool isDefaultCamera_;
+    public bool IsDefaultCamera {
+      get { return isDefaultCamera_; }
+      set {
+        isDefaultCamera_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PlayerCamera);
+    }
+
+    public bool Equals(PlayerCamera other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (IsDefaultCamera != other.IsDefaultCamera) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (IsDefaultCamera != false) hash ^= IsDefaultCamera.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (IsDefaultCamera != false) {
+        output.WriteRawTag(8);
+        output.WriteBool(IsDefaultCamera);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (IsDefaultCamera != false) {
+        size += 1 + 1;
+      }
+      return size;
+    }
+
+    public void MergeFrom(PlayerCamera other) {
+      if (other == null) {
+        return;
+      }
+      if (other.IsDefaultCamera != false) {
+        IsDefaultCamera = other.IsDefaultCamera;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            IsDefaultCamera = input.ReadBool();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class InventoryUpgrades : pb::IMessage<InventoryUpgrades> {
+    private static readonly pb::MessageParser<InventoryUpgrades> _parser = new pb::MessageParser<InventoryUpgrades>(() => new InventoryUpgrades());
+    public static pb::MessageParser<InventoryUpgrades> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[16]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public InventoryUpgrades() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public InventoryUpgrades(InventoryUpgrades other) : this() {
+      inventoryUpgrades_ = other.inventoryUpgrades_.Clone();
+    }
+
+    public InventoryUpgrades Clone() {
+      return new InventoryUpgrades(this);
+    }
+
+    /// <summary>Field number for the "inventory_upgrades" field.</summary>
+    public const int InventoryUpgrades_FieldNumber = 1;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade> _repeated_inventoryUpgrades_codec
+        = pb::FieldCodec.ForMessage(10, global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade> inventoryUpgrades_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade> InventoryUpgrades_ {
+      get { return inventoryUpgrades_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as InventoryUpgrades);
+    }
+
+    public bool Equals(InventoryUpgrades other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!inventoryUpgrades_.Equals(other.inventoryUpgrades_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= inventoryUpgrades_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      inventoryUpgrades_.WriteTo(output, _repeated_inventoryUpgrades_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      size += inventoryUpgrades_.CalculateSize(_repeated_inventoryUpgrades_codec);
+      return size;
+    }
+
+    public void MergeFrom(InventoryUpgrades other) {
+      if (other == null) {
+        return;
+      }
+      inventoryUpgrades_.Add(other.inventoryUpgrades_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            inventoryUpgrades_.AddEntriesFrom(input, _repeated_inventoryUpgrades_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class InventoryUpgrade : pb::IMessage<InventoryUpgrade> {
+    private static readonly pb::MessageParser<InventoryUpgrade> _parser = new pb::MessageParser<InventoryUpgrade>(() => new InventoryUpgrade());
+    public static pb::MessageParser<InventoryUpgrade> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[17]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public InventoryUpgrade() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public InventoryUpgrade(InventoryUpgrade other) : this() {
+      item_ = other.item_;
+      upgradeType_ = other.upgradeType_;
+      additionalStorage_ = other.additionalStorage_;
+    }
+
+    public InventoryUpgrade Clone() {
+      return new InventoryUpgrade(this);
+    }
+
+    /// <summary>Field number for the "item" field.</summary>
+    public const int ItemFieldNumber = 1;
+    private global::AllEnum.ItemType item_ = 0;
+    public global::AllEnum.ItemType Item {
+      get { return item_; }
+      set {
+        item_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "upgrade_type" field.</summary>
+    public const int UpgradeTypeFieldNumber = 2;
+    private global::AllEnum.InventoryUpgradeType upgradeType_ = 0;
+    public global::AllEnum.InventoryUpgradeType UpgradeType {
+      get { return upgradeType_; }
+      set {
+        upgradeType_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "additional_storage" field.</summary>
+    public const int AdditionalStorageFieldNumber = 3;
+    private int additionalStorage_;
+    public int AdditionalStorage {
+      get { return additionalStorage_; }
+      set {
+        additionalStorage_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as InventoryUpgrade);
+    }
+
+    public bool Equals(InventoryUpgrade other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Item != other.Item) return false;
+      if (UpgradeType != other.UpgradeType) return false;
+      if (AdditionalStorage != other.AdditionalStorage) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Item != 0) hash ^= Item.GetHashCode();
+      if (UpgradeType != 0) hash ^= UpgradeType.GetHashCode();
+      if (AdditionalStorage != 0) hash ^= AdditionalStorage.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Item != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) Item);
+      }
+      if (UpgradeType != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) UpgradeType);
+      }
+      if (AdditionalStorage != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(AdditionalStorage);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Item != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Item);
+      }
+      if (UpgradeType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UpgradeType);
+      }
+      if (AdditionalStorage != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(AdditionalStorage);
+      }
+      return size;
+    }
+
+    public void MergeFrom(InventoryUpgrade other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Item != 0) {
+        Item = other.Item;
+      }
+      if (other.UpgradeType != 0) {
+        UpgradeType = other.UpgradeType;
+      }
+      if (other.AdditionalStorage != 0) {
+        AdditionalStorage = other.AdditionalStorage;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            item_ = (global::AllEnum.ItemType) input.ReadEnum();
+            break;
+          }
+          case 16: {
+            upgradeType_ = (global::AllEnum.InventoryUpgradeType) input.ReadEnum();
+            break;
+          }
+          case 24: {
+            AdditionalStorage = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class AppliedItems : pb::IMessage<AppliedItems> {
+    private static readonly pb::MessageParser<AppliedItems> _parser = new pb::MessageParser<AppliedItems>(() => new AppliedItems());
+    public static pb::MessageParser<AppliedItems> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[18]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public AppliedItems() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public AppliedItems(AppliedItems other) : this() {
+      Item = other.item_ != null ? other.Item.Clone() : null;
+    }
+
+    public AppliedItems Clone() {
+      return new AppliedItems(this);
+    }
+
+    /// <summary>Field number for the "item" field.</summary>
+    public const int ItemFieldNumber = 4;
+    private global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem item_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem Item {
+      get { return item_; }
+      set {
+        item_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as AppliedItems);
+    }
+
+    public bool Equals(AppliedItems other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (!object.Equals(Item, other.Item)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (item_ != null) hash ^= Item.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (item_ != null) {
+        output.WriteRawTag(34);
+        output.WriteMessage(Item);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (item_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
+      }
+      return size;
+    }
+
+    public void MergeFrom(AppliedItems other) {
+      if (other == null) {
+        return;
+      }
+      if (other.item_ != null) {
+        if (item_ == null) {
+          item_ = new global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem();
+        }
+        Item.MergeFrom(other.Item);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 34: {
+            if (item_ == null) {
+              item_ = new global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem();
+            }
+            input.ReadMessage(item_);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class AppliedItem : pb::IMessage<AppliedItem> {
+    private static readonly pb::MessageParser<AppliedItem> _parser = new pb::MessageParser<AppliedItem>(() => new AppliedItem());
+    public static pb::MessageParser<AppliedItem> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[19]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public AppliedItem() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public AppliedItem(AppliedItem other) : this() {
+      itemType_ = other.itemType_;
+      itemTypeCategory_ = other.itemTypeCategory_;
+      expireMs_ = other.expireMs_;
+      appliedMs_ = other.appliedMs_;
+    }
+
+    public AppliedItem Clone() {
+      return new AppliedItem(this);
+    }
+
+    /// <summary>Field number for the "item_type" field.</summary>
+    public const int ItemTypeFieldNumber = 1;
+    private global::AllEnum.ItemId itemType_ = 0;
+    public global::AllEnum.ItemId ItemType {
+      get { return itemType_; }
+      set {
+        itemType_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "item_type_category" field.</summary>
+    public const int ItemTypeCategoryFieldNumber = 2;
+    private global::AllEnum.ItemType itemTypeCategory_ = 0;
+    public global::AllEnum.ItemType ItemTypeCategory {
+      get { return itemTypeCategory_; }
+      set {
+        itemTypeCategory_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "expire_ms" field.</summary>
+    public const int ExpireMsFieldNumber = 3;
+    private long expireMs_;
+    public long ExpireMs {
+      get { return expireMs_; }
+      set {
+        expireMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "applied_ms" field.</summary>
+    public const int AppliedMsFieldNumber = 4;
+    private long appliedMs_;
+    public long AppliedMs {
+      get { return appliedMs_; }
+      set {
+        appliedMs_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as AppliedItem);
+    }
+
+    public bool Equals(AppliedItem other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (ItemType != other.ItemType) return false;
+      if (ItemTypeCategory != other.ItemTypeCategory) return false;
+      if (ExpireMs != other.ExpireMs) return false;
+      if (AppliedMs != other.AppliedMs) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (ItemType != 0) hash ^= ItemType.GetHashCode();
+      if (ItemTypeCategory != 0) hash ^= ItemTypeCategory.GetHashCode();
+      if (ExpireMs != 0L) hash ^= ExpireMs.GetHashCode();
+      if (AppliedMs != 0L) hash ^= AppliedMs.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (ItemType != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) ItemType);
+      }
+      if (ItemTypeCategory != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) ItemTypeCategory);
+      }
+      if (ExpireMs != 0L) {
+        output.WriteRawTag(24);
+        output.WriteInt64(ExpireMs);
+      }
+      if (AppliedMs != 0L) {
+        output.WriteRawTag(32);
+        output.WriteInt64(AppliedMs);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (ItemType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ItemType);
+      }
+      if (ItemTypeCategory != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ItemTypeCategory);
+      }
+      if (ExpireMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpireMs);
+      }
+      if (AppliedMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(AppliedMs);
+      }
+      return size;
+    }
+
+    public void MergeFrom(AppliedItem other) {
+      if (other == null) {
+        return;
+      }
+      if (other.ItemType != 0) {
+        ItemType = other.ItemType;
+      }
+      if (other.ItemTypeCategory != 0) {
+        ItemTypeCategory = other.ItemTypeCategory;
+      }
+      if (other.ExpireMs != 0L) {
+        ExpireMs = other.ExpireMs;
+      }
+      if (other.AppliedMs != 0L) {
+        AppliedMs = other.AppliedMs;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            itemType_ = (global::AllEnum.ItemId) input.ReadEnum();
+            break;
+          }
+          case 16: {
+            itemTypeCategory_ = (global::AllEnum.ItemType) input.ReadEnum();
+            break;
+          }
+          case 24: {
+            ExpireMs = input.ReadInt64();
+            break;
+          }
+          case 32: {
+            AppliedMs = input.ReadInt64();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class EggIncubators : pb::IMessage<EggIncubators> {
+    private static readonly pb::MessageParser<EggIncubators> _parser = new pb::MessageParser<EggIncubators>(() => new EggIncubators());
+    public static pb::MessageParser<EggIncubators> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[20]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public EggIncubators() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public EggIncubators(EggIncubators other) : this() {
+      EggIncubator = other.eggIncubator_ != null ? other.EggIncubator.Clone() : null;
+    }
+
+    public EggIncubators Clone() {
+      return new EggIncubators(this);
+    }
+
+    /// <summary>Field number for the "egg_incubator" field.</summary>
+    public const int EggIncubatorFieldNumber = 1;
+    private global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator eggIncubator_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator EggIncubator {
+      get { return eggIncubator_; }
+      set {
+        eggIncubator_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as EggIncubators);
+    }
+
+    public bool Equals(EggIncubators other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (!object.Equals(EggIncubator, other.EggIncubator)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (eggIncubator_ != null) hash ^= EggIncubator.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (eggIncubator_ != null) {
+        output.WriteRawTag(10);
+        output.WriteMessage(EggIncubator);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (eggIncubator_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EggIncubator);
+      }
+      return size;
+    }
+
+    public void MergeFrom(EggIncubators other) {
+      if (other == null) {
+        return;
+      }
+      if (other.eggIncubator_ != null) {
+        if (eggIncubator_ == null) {
+          eggIncubator_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator();
+        }
+        EggIncubator.MergeFrom(other.EggIncubator);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            if (eggIncubator_ == null) {
+              eggIncubator_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator();
+            }
+            input.ReadMessage(eggIncubator_);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class EggIncubator : pb::IMessage<EggIncubator> {
+    private static readonly pb::MessageParser<EggIncubator> _parser = new pb::MessageParser<EggIncubator>(() => new EggIncubator());
+    public static pb::MessageParser<EggIncubator> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[21]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public EggIncubator() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public EggIncubator(EggIncubator other) : this() {
+      itemId_ = other.itemId_;
+      itemType_ = other.itemType_;
+      incubatorType_ = other.incubatorType_;
+      usesRemaining_ = other.usesRemaining_;
+      pokemonId_ = other.pokemonId_;
+      startKmWalked_ = other.startKmWalked_;
+      targetKmWalked_ = other.targetKmWalked_;
+    }
+
+    public EggIncubator Clone() {
+      return new EggIncubator(this);
+    }
+
+    /// <summary>Field number for the "item_id" field.</summary>
+    public const int ItemIdFieldNumber = 1;
+    private string itemId_ = "";
+    public string ItemId {
+      get { return itemId_; }
+      set {
+        itemId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "item_type" field.</summary>
+    public const int ItemTypeFieldNumber = 2;
+    private global::AllEnum.ItemType itemType_ = 0;
+    public global::AllEnum.ItemType ItemType {
+      get { return itemType_; }
+      set {
+        itemType_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "incubator_type" field.</summary>
+    public const int IncubatorTypeFieldNumber = 3;
+    private global::AllEnum.EggIncubatorType incubatorType_ = 0;
+    public global::AllEnum.EggIncubatorType IncubatorType {
+      get { return incubatorType_; }
+      set {
+        incubatorType_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "uses_remaining" field.</summary>
+    public const int UsesRemainingFieldNumber = 4;
+    private int usesRemaining_;
+    public int UsesRemaining {
+      get { return usesRemaining_; }
+      set {
+        usesRemaining_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_id" field.</summary>
+    public const int PokemonIdFieldNumber = 5;
+    private long pokemonId_;
+    /// <summary>
+    ///  TODO: Check if is PokemonType
+    /// </summary>
+    public long PokemonId {
+      get { return pokemonId_; }
+      set {
+        pokemonId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "start_km_walked" field.</summary>
+    public const int StartKmWalkedFieldNumber = 6;
+    private double startKmWalked_;
+    public double StartKmWalked {
+      get { return startKmWalked_; }
+      set {
+        startKmWalked_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "target_km_walked" field.</summary>
+    public const int TargetKmWalkedFieldNumber = 7;
+    private double targetKmWalked_;
+    public double TargetKmWalked {
+      get { return targetKmWalked_; }
+      set {
+        targetKmWalked_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as EggIncubator);
+    }
+
+    public bool Equals(EggIncubator other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (ItemId != other.ItemId) return false;
+      if (ItemType != other.ItemType) return false;
+      if (IncubatorType != other.IncubatorType) return false;
+      if (UsesRemaining != other.UsesRemaining) return false;
+      if (PokemonId != other.PokemonId) return false;
+      if (StartKmWalked != other.StartKmWalked) return false;
+      if (TargetKmWalked != other.TargetKmWalked) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (ItemId.Length != 0) hash ^= ItemId.GetHashCode();
+      if (ItemType != 0) hash ^= ItemType.GetHashCode();
+      if (IncubatorType != 0) hash ^= IncubatorType.GetHashCode();
+      if (UsesRemaining != 0) hash ^= UsesRemaining.GetHashCode();
+      if (PokemonId != 0L) hash ^= PokemonId.GetHashCode();
+      if (StartKmWalked != 0D) hash ^= StartKmWalked.GetHashCode();
+      if (TargetKmWalked != 0D) hash ^= TargetKmWalked.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (ItemId.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(ItemId);
+      }
+      if (ItemType != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) ItemType);
+      }
+      if (IncubatorType != 0) {
+        output.WriteRawTag(24);
+        output.WriteEnum((int) IncubatorType);
+      }
+      if (UsesRemaining != 0) {
+        output.WriteRawTag(32);
+        output.WriteInt32(UsesRemaining);
+      }
+      if (PokemonId != 0L) {
+        output.WriteRawTag(40);
+        output.WriteInt64(PokemonId);
+      }
+      if (StartKmWalked != 0D) {
+        output.WriteRawTag(49);
+        output.WriteDouble(StartKmWalked);
+      }
+      if (TargetKmWalked != 0D) {
+        output.WriteRawTag(57);
+        output.WriteDouble(TargetKmWalked);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (ItemId.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(ItemId);
+      }
+      if (ItemType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ItemType);
+      }
+      if (IncubatorType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) IncubatorType);
+      }
+      if (UsesRemaining != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UsesRemaining);
+      }
+      if (PokemonId != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(PokemonId);
+      }
+      if (StartKmWalked != 0D) {
+        size += 1 + 8;
+      }
+      if (TargetKmWalked != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(EggIncubator other) {
+      if (other == null) {
+        return;
+      }
+      if (other.ItemId.Length != 0) {
+        ItemId = other.ItemId;
+      }
+      if (other.ItemType != 0) {
+        ItemType = other.ItemType;
+      }
+      if (other.IncubatorType != 0) {
+        IncubatorType = other.IncubatorType;
+      }
+      if (other.UsesRemaining != 0) {
+        UsesRemaining = other.UsesRemaining;
+      }
+      if (other.PokemonId != 0L) {
+        PokemonId = other.PokemonId;
+      }
+      if (other.StartKmWalked != 0D) {
+        StartKmWalked = other.StartKmWalked;
+      }
+      if (other.TargetKmWalked != 0D) {
+        TargetKmWalked = other.TargetKmWalked;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            ItemId = input.ReadString();
+            break;
+          }
+          case 16: {
+            itemType_ = (global::AllEnum.ItemType) input.ReadEnum();
+            break;
+          }
+          case 24: {
+            incubatorType_ = (global::AllEnum.EggIncubatorType) input.ReadEnum();
+            break;
+          }
+          case 32: {
+            UsesRemaining = input.ReadInt32();
+            break;
+          }
+          case 40: {
+            PokemonId = input.ReadInt64();
+            break;
+          }
+          case 49: {
+            StartKmWalked = input.ReadDouble();
+            break;
+          }
+          case 57: {
+            TargetKmWalked = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PokemonFamily : pb::IMessage<PokemonFamily> {
+    private static readonly pb::MessageParser<PokemonFamily> _parser = new pb::MessageParser<PokemonFamily>(() => new PokemonFamily());
+    public static pb::MessageParser<PokemonFamily> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[22]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PokemonFamily() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PokemonFamily(PokemonFamily other) : this() {
+      familyId_ = other.familyId_;
+      candy_ = other.candy_;
+    }
+
+    public PokemonFamily Clone() {
+      return new PokemonFamily(this);
+    }
+
+    /// <summary>Field number for the "family_id" field.</summary>
+    public const int FamilyIdFieldNumber = 1;
+    private global::AllEnum.PokemonFamilyId familyId_ = 0;
+    public global::AllEnum.PokemonFamilyId FamilyId {
+      get { return familyId_; }
+      set {
+        familyId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "candy" field.</summary>
+    public const int CandyFieldNumber = 2;
+    private int candy_;
+    public int Candy {
+      get { return candy_; }
+      set {
+        candy_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PokemonFamily);
+    }
+
+    public bool Equals(PokemonFamily other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (FamilyId != other.FamilyId) return false;
+      if (Candy != other.Candy) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (FamilyId != 0) hash ^= FamilyId.GetHashCode();
+      if (Candy != 0) hash ^= Candy.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (FamilyId != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) FamilyId);
+      }
+      if (Candy != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(Candy);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (FamilyId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FamilyId);
+      }
+      if (Candy != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Candy);
+      }
+      return size;
+    }
+
+    public void MergeFrom(PokemonFamily other) {
+      if (other == null) {
+        return;
+      }
+      if (other.FamilyId != 0) {
+        FamilyId = other.FamilyId;
+      }
+      if (other.Candy != 0) {
+        Candy = other.Candy;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            familyId_ = (global::AllEnum.PokemonFamilyId) input.ReadEnum();
+            break;
+          }
+          case 16: {
+            Candy = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class GetMapObjectsRequest : pb::IMessage<GetMapObjectsRequest> {
+    private static readonly pb::MessageParser<GetMapObjectsRequest> _parser = new pb::MessageParser<GetMapObjectsRequest>(() => new GetMapObjectsRequest());
+    public static pb::MessageParser<GetMapObjectsRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[23]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public GetMapObjectsRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public GetMapObjectsRequest(GetMapObjectsRequest other) : this() {
+      cellId_ = other.cellId_;
+      sinceTimestampMs_ = other.sinceTimestampMs_;
+      latitude_ = other.latitude_;
+      longitude_ = other.longitude_;
+    }
+
+    public GetMapObjectsRequest Clone() {
+      return new GetMapObjectsRequest(this);
+    }
+
+    /// <summary>Field number for the "cell_id" field.</summary>
+    public const int CellIdFieldNumber = 1;
+    private pb::ByteString cellId_ = pb::ByteString.Empty;
+    public pb::ByteString CellId {
+      get { return cellId_; }
+      set {
+        cellId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "since_timestamp_ms" field.</summary>
+    public const int SinceTimestampMsFieldNumber = 2;
+    private pb::ByteString sinceTimestampMs_ = pb::ByteString.Empty;
+    public pb::ByteString SinceTimestampMs {
+      get { return sinceTimestampMs_; }
+      set {
+        sinceTimestampMs_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "latitude" field.</summary>
+    public const int LatitudeFieldNumber = 3;
+    private double latitude_;
+    public double Latitude {
+      get { return latitude_; }
+      set {
+        latitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "longitude" field.</summary>
+    public const int LongitudeFieldNumber = 4;
+    private double longitude_;
+    public double Longitude {
+      get { return longitude_; }
+      set {
+        longitude_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as GetMapObjectsRequest);
+    }
+
+    public bool Equals(GetMapObjectsRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (CellId != other.CellId) return false;
+      if (SinceTimestampMs != other.SinceTimestampMs) return false;
+      if (Latitude != other.Latitude) return false;
+      if (Longitude != other.Longitude) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (CellId.Length != 0) hash ^= CellId.GetHashCode();
+      if (SinceTimestampMs.Length != 0) hash ^= SinceTimestampMs.GetHashCode();
+      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
+      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (CellId.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteBytes(CellId);
+      }
+      if (SinceTimestampMs.Length != 0) {
+        output.WriteRawTag(18);
+        output.WriteBytes(SinceTimestampMs);
+      }
+      if (Latitude != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(Latitude);
+      }
+      if (Longitude != 0D) {
+        output.WriteRawTag(33);
+        output.WriteDouble(Longitude);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (CellId.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeBytesSize(CellId);
+      }
+      if (SinceTimestampMs.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeBytesSize(SinceTimestampMs);
+      }
+      if (Latitude != 0D) {
+        size += 1 + 8;
+      }
+      if (Longitude != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(GetMapObjectsRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.CellId.Length != 0) {
+        CellId = other.CellId;
+      }
+      if (other.SinceTimestampMs.Length != 0) {
+        SinceTimestampMs = other.SinceTimestampMs;
+      }
+      if (other.Latitude != 0D) {
+        Latitude = other.Latitude;
+      }
+      if (other.Longitude != 0D) {
+        Longitude = other.Longitude;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            CellId = input.ReadBytes();
+            break;
+          }
+          case 18: {
+            SinceTimestampMs = input.ReadBytes();
+            break;
+          }
+          case 25: {
+            Latitude = input.ReadDouble();
+            break;
+          }
+          case 33: {
+            Longitude = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class GetMapObjectsResponse : pb::IMessage<GetMapObjectsResponse> {
+    private static readonly pb::MessageParser<GetMapObjectsResponse> _parser = new pb::MessageParser<GetMapObjectsResponse>(() => new GetMapObjectsResponse());
+    public static pb::MessageParser<GetMapObjectsResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[24]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public GetMapObjectsResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public GetMapObjectsResponse(GetMapObjectsResponse other) : this() {
+      mapCells_ = other.mapCells_.Clone();
+      status_ = other.status_;
+    }
+
+    public GetMapObjectsResponse Clone() {
+      return new GetMapObjectsResponse(this);
+    }
+
+    /// <summary>Field number for the "map_cells" field.</summary>
+    public const int MapCellsFieldNumber = 1;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapCell> _repeated_mapCells_codec
+        = pb::FieldCodec.ForMessage(10, global::PokemonGo.RocketAPI.GeneratedCode.MapCell.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapCell> mapCells_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapCell>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapCell> MapCells {
+      get { return mapCells_; }
+    }
+
+    /// <summary>Field number for the "status" field.</summary>
+    public const int StatusFieldNumber = 2;
+    private global::AllEnum.MapObjectsStatus status_ = 0;
+    public global::AllEnum.MapObjectsStatus Status {
+      get { return status_; }
+      set {
+        status_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as GetMapObjectsResponse);
+    }
+
+    public bool Equals(GetMapObjectsResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!mapCells_.Equals(other.mapCells_)) return false;
+      if (Status != other.Status) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= mapCells_.GetHashCode();
+      if (Status != 0) hash ^= Status.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      mapCells_.WriteTo(output, _repeated_mapCells_codec);
+      if (Status != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) Status);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      size += mapCells_.CalculateSize(_repeated_mapCells_codec);
+      if (Status != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
+      }
+      return size;
+    }
+
+    public void MergeFrom(GetMapObjectsResponse other) {
+      if (other == null) {
+        return;
+      }
+      mapCells_.Add(other.mapCells_);
+      if (other.Status != 0) {
+        Status = other.Status;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            mapCells_.AddEntriesFrom(input, _repeated_mapCells_codec);
+            break;
+          }
+          case 16: {
+            status_ = (global::AllEnum.MapObjectsStatus) input.ReadEnum();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class MapCell : pb::IMessage<MapCell> {
+    private static readonly pb::MessageParser<MapCell> _parser = new pb::MessageParser<MapCell>(() => new MapCell());
+    public static pb::MessageParser<MapCell> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[25]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public MapCell() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public MapCell(MapCell other) : this() {
+      s2CellId_ = other.s2CellId_;
+      currentTimestampMs_ = other.currentTimestampMs_;
+      forts_ = other.forts_.Clone();
+      spawnPoints_ = other.spawnPoints_.Clone();
+      deletedObjects_ = other.deletedObjects_.Clone();
+      isTruncatedList_ = other.isTruncatedList_;
+      fortSummaries_ = other.fortSummaries_.Clone();
+      decimatedSpawnPoints_ = other.decimatedSpawnPoints_.Clone();
+      wildPokemons_ = other.wildPokemons_.Clone();
+      catchablePokemons_ = other.catchablePokemons_.Clone();
+      nearbyPokemons_ = other.nearbyPokemons_.Clone();
+    }
+
+    public MapCell Clone() {
+      return new MapCell(this);
+    }
+
+    /// <summary>Field number for the "s2_cell_id" field.</summary>
+    public const int S2CellIdFieldNumber = 1;
+    private ulong s2CellId_;
+    /// <summary>
+    ///  S2 geographic area that the cell covers (http://s2map.com/) (https://code.google.com/archive/p/s2-geometry-library/)
+    /// </summary>
+    public ulong S2CellId {
+      get { return s2CellId_; }
+      set {
+        s2CellId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "current_timestamp_ms" field.</summary>
+    public const int CurrentTimestampMsFieldNumber = 2;
+    private long currentTimestampMs_;
+    public long CurrentTimestampMs {
+      get { return currentTimestampMs_; }
+      set {
+        currentTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "forts" field.</summary>
+    public const int FortsFieldNumber = 3;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortData> _repeated_forts_codec
+        = pb::FieldCodec.ForMessage(26, global::PokemonGo.RocketAPI.GeneratedCode.FortData.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData> forts_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData> Forts {
+      get { return forts_; }
+    }
+
+    /// <summary>Field number for the "spawn_points" field.</summary>
+    public const int SpawnPointsFieldNumber = 4;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint> _repeated_spawnPoints_codec
+        = pb::FieldCodec.ForMessage(34, global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint> spawnPoints_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint> SpawnPoints {
+      get { return spawnPoints_; }
+    }
+
+    /// <summary>Field number for the "deleted_objects" field.</summary>
+    public const int DeletedObjectsFieldNumber = 6;
+    private static readonly pb::FieldCodec<string> _repeated_deletedObjects_codec
+        = pb::FieldCodec.ForString(50);
+    private readonly pbc::RepeatedField<string> deletedObjects_ = new pbc::RepeatedField<string>();
+    public pbc::RepeatedField<string> DeletedObjects {
+      get { return deletedObjects_; }
+    }
+
+    /// <summary>Field number for the "is_truncated_list" field.</summary>
+    public const int IsTruncatedListFieldNumber = 7;
+    private bool isTruncatedList_;
+    public bool IsTruncatedList {
+      get { return isTruncatedList_; }
+      set {
+        isTruncatedList_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "fort_summaries" field.</summary>
+    public const int FortSummariesFieldNumber = 8;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortSummary> _repeated_fortSummaries_codec
+        = pb::FieldCodec.ForMessage(66, global::PokemonGo.RocketAPI.GeneratedCode.FortSummary.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSummary> fortSummaries_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSummary>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSummary> FortSummaries {
+      get { return fortSummaries_; }
+    }
+
+    /// <summary>Field number for the "decimated_spawn_points" field.</summary>
+    public const int DecimatedSpawnPointsFieldNumber = 9;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint> _repeated_decimatedSpawnPoints_codec
+        = pb::FieldCodec.ForMessage(74, global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint> decimatedSpawnPoints_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint> DecimatedSpawnPoints {
+      get { return decimatedSpawnPoints_; }
+    }
+
+    /// <summary>Field number for the "wild_pokemons" field.</summary>
+    public const int WildPokemonsFieldNumber = 5;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon> _repeated_wildPokemons_codec
+        = pb::FieldCodec.ForMessage(42, global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon> wildPokemons_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon>();
+    /// <summary>
+    ///  Pokemon within 2 steps or less.
+    /// </summary>
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon> WildPokemons {
+      get { return wildPokemons_; }
+    }
+
+    /// <summary>Field number for the "catchable_pokemons" field.</summary>
+    public const int CatchablePokemonsFieldNumber = 10;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon> _repeated_catchablePokemons_codec
+        = pb::FieldCodec.ForMessage(82, global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon> catchablePokemons_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon>();
+    /// <summary>
+    ///  Pokemon within 1 step or none.
+    /// </summary>
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon> CatchablePokemons {
+      get { return catchablePokemons_; }
+    }
+
+    /// <summary>Field number for the "nearby_pokemons" field.</summary>
+    public const int NearbyPokemonsFieldNumber = 11;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon> _repeated_nearbyPokemons_codec
+        = pb::FieldCodec.ForMessage(90, global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon> nearbyPokemons_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon>();
+    /// <summary>
+    ///  Pokemon farther away than 2 steps, but still in the area.
+    /// </summary>
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon> NearbyPokemons {
+      get { return nearbyPokemons_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as MapCell);
+    }
+
+    public bool Equals(MapCell other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (S2CellId != other.S2CellId) return false;
+      if (CurrentTimestampMs != other.CurrentTimestampMs) return false;
+      if(!forts_.Equals(other.forts_)) return false;
+      if(!spawnPoints_.Equals(other.spawnPoints_)) return false;
+      if(!deletedObjects_.Equals(other.deletedObjects_)) return false;
+      if (IsTruncatedList != other.IsTruncatedList) return false;
+      if(!fortSummaries_.Equals(other.fortSummaries_)) return false;
+      if(!decimatedSpawnPoints_.Equals(other.decimatedSpawnPoints_)) return false;
+      if(!wildPokemons_.Equals(other.wildPokemons_)) return false;
+      if(!catchablePokemons_.Equals(other.catchablePokemons_)) return false;
+      if(!nearbyPokemons_.Equals(other.nearbyPokemons_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (S2CellId != 0UL) hash ^= S2CellId.GetHashCode();
+      if (CurrentTimestampMs != 0L) hash ^= CurrentTimestampMs.GetHashCode();
+      hash ^= forts_.GetHashCode();
+      hash ^= spawnPoints_.GetHashCode();
+      hash ^= deletedObjects_.GetHashCode();
+      if (IsTruncatedList != false) hash ^= IsTruncatedList.GetHashCode();
+      hash ^= fortSummaries_.GetHashCode();
+      hash ^= decimatedSpawnPoints_.GetHashCode();
+      hash ^= wildPokemons_.GetHashCode();
+      hash ^= catchablePokemons_.GetHashCode();
+      hash ^= nearbyPokemons_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (S2CellId != 0UL) {
+        output.WriteRawTag(8);
+        output.WriteUInt64(S2CellId);
+      }
+      if (CurrentTimestampMs != 0L) {
+        output.WriteRawTag(16);
+        output.WriteInt64(CurrentTimestampMs);
+      }
+      forts_.WriteTo(output, _repeated_forts_codec);
+      spawnPoints_.WriteTo(output, _repeated_spawnPoints_codec);
+      wildPokemons_.WriteTo(output, _repeated_wildPokemons_codec);
+      deletedObjects_.WriteTo(output, _repeated_deletedObjects_codec);
+      if (IsTruncatedList != false) {
+        output.WriteRawTag(56);
+        output.WriteBool(IsTruncatedList);
+      }
+      fortSummaries_.WriteTo(output, _repeated_fortSummaries_codec);
+      decimatedSpawnPoints_.WriteTo(output, _repeated_decimatedSpawnPoints_codec);
+      catchablePokemons_.WriteTo(output, _repeated_catchablePokemons_codec);
+      nearbyPokemons_.WriteTo(output, _repeated_nearbyPokemons_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (S2CellId != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(S2CellId);
+      }
+      if (CurrentTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(CurrentTimestampMs);
+      }
+      size += forts_.CalculateSize(_repeated_forts_codec);
+      size += spawnPoints_.CalculateSize(_repeated_spawnPoints_codec);
+      size += deletedObjects_.CalculateSize(_repeated_deletedObjects_codec);
+      if (IsTruncatedList != false) {
+        size += 1 + 1;
+      }
+      size += fortSummaries_.CalculateSize(_repeated_fortSummaries_codec);
+      size += decimatedSpawnPoints_.CalculateSize(_repeated_decimatedSpawnPoints_codec);
+      size += wildPokemons_.CalculateSize(_repeated_wildPokemons_codec);
+      size += catchablePokemons_.CalculateSize(_repeated_catchablePokemons_codec);
+      size += nearbyPokemons_.CalculateSize(_repeated_nearbyPokemons_codec);
+      return size;
+    }
+
+    public void MergeFrom(MapCell other) {
+      if (other == null) {
+        return;
+      }
+      if (other.S2CellId != 0UL) {
+        S2CellId = other.S2CellId;
+      }
+      if (other.CurrentTimestampMs != 0L) {
+        CurrentTimestampMs = other.CurrentTimestampMs;
+      }
+      forts_.Add(other.forts_);
+      spawnPoints_.Add(other.spawnPoints_);
+      deletedObjects_.Add(other.deletedObjects_);
+      if (other.IsTruncatedList != false) {
+        IsTruncatedList = other.IsTruncatedList;
+      }
+      fortSummaries_.Add(other.fortSummaries_);
+      decimatedSpawnPoints_.Add(other.decimatedSpawnPoints_);
+      wildPokemons_.Add(other.wildPokemons_);
+      catchablePokemons_.Add(other.catchablePokemons_);
+      nearbyPokemons_.Add(other.nearbyPokemons_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            S2CellId = input.ReadUInt64();
+            break;
+          }
+          case 16: {
+            CurrentTimestampMs = input.ReadInt64();
+            break;
+          }
+          case 26: {
+            forts_.AddEntriesFrom(input, _repeated_forts_codec);
+            break;
+          }
+          case 34: {
+            spawnPoints_.AddEntriesFrom(input, _repeated_spawnPoints_codec);
+            break;
+          }
+          case 42: {
+            wildPokemons_.AddEntriesFrom(input, _repeated_wildPokemons_codec);
+            break;
+          }
+          case 50: {
+            deletedObjects_.AddEntriesFrom(input, _repeated_deletedObjects_codec);
+            break;
+          }
+          case 56: {
+            IsTruncatedList = input.ReadBool();
+            break;
+          }
+          case 66: {
+            fortSummaries_.AddEntriesFrom(input, _repeated_fortSummaries_codec);
+            break;
+          }
+          case 74: {
+            decimatedSpawnPoints_.AddEntriesFrom(input, _repeated_decimatedSpawnPoints_codec);
+            break;
+          }
+          case 82: {
+            catchablePokemons_.AddEntriesFrom(input, _repeated_catchablePokemons_codec);
+            break;
+          }
+          case 90: {
+            nearbyPokemons_.AddEntriesFrom(input, _repeated_nearbyPokemons_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class FortData : pb::IMessage<FortData> {
+    private static readonly pb::MessageParser<FortData> _parser = new pb::MessageParser<FortData>(() => new FortData());
+    public static pb::MessageParser<FortData> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[26]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public FortData() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public FortData(FortData other) : this() {
+      id_ = other.id_;
+      lastModifiedTimestampMs_ = other.lastModifiedTimestampMs_;
+      latitude_ = other.latitude_;
+      longitude_ = other.longitude_;
+      enabled_ = other.enabled_;
+      type_ = other.type_;
+      ownedByTeam_ = other.ownedByTeam_;
+      guardPokemonId_ = other.guardPokemonId_;
+      guardPokemonCp_ = other.guardPokemonCp_;
+      gymPoints_ = other.gymPoints_;
+      isInBattle_ = other.isInBattle_;
+      cooldownCompleteTimestampMs_ = other.cooldownCompleteTimestampMs_;
+      sponsor_ = other.sponsor_;
+      renderingType_ = other.renderingType_;
+      activeFortModifier_ = other.activeFortModifier_;
+      LureInfo = other.lureInfo_ != null ? other.LureInfo.Clone() : null;
+    }
+
+    public FortData Clone() {
+      return new FortData(this);
+    }
+
+    /// <summary>Field number for the "id" field.</summary>
+    public const int IdFieldNumber = 1;
+    private string id_ = "";
+    public string Id {
+      get { return id_; }
+      set {
+        id_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "last_modified_timestamp_ms" field.</summary>
+    public const int LastModifiedTimestampMsFieldNumber = 2;
+    private long lastModifiedTimestampMs_;
+    public long LastModifiedTimestampMs {
+      get { return lastModifiedTimestampMs_; }
+      set {
+        lastModifiedTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "latitude" field.</summary>
+    public const int LatitudeFieldNumber = 3;
+    private double latitude_;
+    public double Latitude {
+      get { return latitude_; }
+      set {
+        latitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "longitude" field.</summary>
+    public const int LongitudeFieldNumber = 4;
+    private double longitude_;
+    public double Longitude {
+      get { return longitude_; }
+      set {
+        longitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "enabled" field.</summary>
+    public const int EnabledFieldNumber = 8;
+    private bool enabled_;
+    public bool Enabled {
+      get { return enabled_; }
+      set {
+        enabled_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "type" field.</summary>
+    public const int TypeFieldNumber = 9;
+    private global::AllEnum.FortType type_ = 0;
+    public global::AllEnum.FortType Type {
+      get { return type_; }
+      set {
+        type_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "owned_by_team" field.</summary>
+    public const int OwnedByTeamFieldNumber = 5;
+    private global::AllEnum.TeamColor ownedByTeam_ = 0;
+    /// <summary>
+    ///  Team that owns the gym
+    /// </summary>
+    public global::AllEnum.TeamColor OwnedByTeam {
+      get { return ownedByTeam_; }
+      set {
+        ownedByTeam_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "guard_pokemon_id" field.</summary>
+    public const int GuardPokemonIdFieldNumber = 6;
+    private global::AllEnum.PokemonId guardPokemonId_ = 0;
+    /// <summary>
+    ///  Highest CP Pokemon at the gym
+    /// </summary>
+    public global::AllEnum.PokemonId GuardPokemonId {
+      get { return guardPokemonId_; }
+      set {
+        guardPokemonId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "guard_pokemon_cp" field.</summary>
+    public const int GuardPokemonCpFieldNumber = 7;
+    private int guardPokemonCp_;
+    public int GuardPokemonCp {
+      get { return guardPokemonCp_; }
+      set {
+        guardPokemonCp_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "gym_points" field.</summary>
+    public const int GymPointsFieldNumber = 10;
+    private long gymPoints_;
+    /// <summary>
+    ///  Prestigate / experience of the gym
+    /// </summary>
+    public long GymPoints {
+      get { return gymPoints_; }
+      set {
+        gymPoints_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "is_in_battle" field.</summary>
+    public const int IsInBattleFieldNumber = 11;
+    private bool isInBattle_;
+    /// <summary>
+    ///  Whether someone is battling at the gym currently
+    /// </summary>
+    public bool IsInBattle {
+      get { return isInBattle_; }
+      set {
+        isInBattle_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "cooldown_complete_timestamp_ms" field.</summary>
+    public const int CooldownCompleteTimestampMsFieldNumber = 14;
+    private long cooldownCompleteTimestampMs_;
+    /// <summary>
+    ///  Timestamp when the pokestop can be activated again to get items / xp
+    /// </summary>
+    public long CooldownCompleteTimestampMs {
+      get { return cooldownCompleteTimestampMs_; }
+      set {
+        cooldownCompleteTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "sponsor" field.</summary>
+    public const int SponsorFieldNumber = 15;
+    private global::AllEnum.FortSponsor sponsor_ = 0;
+    public global::AllEnum.FortSponsor Sponsor {
+      get { return sponsor_; }
+      set {
+        sponsor_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "rendering_type" field.</summary>
+    public const int RenderingTypeFieldNumber = 16;
+    private global::AllEnum.FortRenderingType renderingType_ = 0;
+    public global::AllEnum.FortRenderingType RenderingType {
+      get { return renderingType_; }
+      set {
+        renderingType_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "active_fort_modifier" field.</summary>
+    public const int ActiveFortModifierFieldNumber = 12;
+    private pb::ByteString activeFortModifier_ = pb::ByteString.Empty;
+    /// <summary>
+    ///  Might represent the type of item applied to the pokestop, right now only lures can be applied
+    /// </summary>
+    public pb::ByteString ActiveFortModifier {
+      get { return activeFortModifier_; }
+      set {
+        activeFortModifier_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "lure_info" field.</summary>
+    public const int LureInfoFieldNumber = 13;
+    private global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo lureInfo_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo LureInfo {
+      get { return lureInfo_; }
+      set {
+        lureInfo_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as FortData);
+    }
+
+    public bool Equals(FortData other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Id != other.Id) return false;
+      if (LastModifiedTimestampMs != other.LastModifiedTimestampMs) return false;
+      if (Latitude != other.Latitude) return false;
+      if (Longitude != other.Longitude) return false;
+      if (Enabled != other.Enabled) return false;
+      if (Type != other.Type) return false;
+      if (OwnedByTeam != other.OwnedByTeam) return false;
+      if (GuardPokemonId != other.GuardPokemonId) return false;
+      if (GuardPokemonCp != other.GuardPokemonCp) return false;
+      if (GymPoints != other.GymPoints) return false;
+      if (IsInBattle != other.IsInBattle) return false;
+      if (CooldownCompleteTimestampMs != other.CooldownCompleteTimestampMs) return false;
+      if (Sponsor != other.Sponsor) return false;
+      if (RenderingType != other.RenderingType) return false;
+      if (ActiveFortModifier != other.ActiveFortModifier) return false;
+      if (!object.Equals(LureInfo, other.LureInfo)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Id.Length != 0) hash ^= Id.GetHashCode();
+      if (LastModifiedTimestampMs != 0L) hash ^= LastModifiedTimestampMs.GetHashCode();
+      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
+      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
+      if (Enabled != false) hash ^= Enabled.GetHashCode();
+      if (Type != 0) hash ^= Type.GetHashCode();
+      if (OwnedByTeam != 0) hash ^= OwnedByTeam.GetHashCode();
+      if (GuardPokemonId != 0) hash ^= GuardPokemonId.GetHashCode();
+      if (GuardPokemonCp != 0) hash ^= GuardPokemonCp.GetHashCode();
+      if (GymPoints != 0L) hash ^= GymPoints.GetHashCode();
+      if (IsInBattle != false) hash ^= IsInBattle.GetHashCode();
+      if (CooldownCompleteTimestampMs != 0L) hash ^= CooldownCompleteTimestampMs.GetHashCode();
+      if (Sponsor != 0) hash ^= Sponsor.GetHashCode();
+      if (RenderingType != 0) hash ^= RenderingType.GetHashCode();
+      if (ActiveFortModifier.Length != 0) hash ^= ActiveFortModifier.GetHashCode();
+      if (lureInfo_ != null) hash ^= LureInfo.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Id.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(Id);
+      }
+      if (LastModifiedTimestampMs != 0L) {
+        output.WriteRawTag(16);
+        output.WriteInt64(LastModifiedTimestampMs);
+      }
+      if (Latitude != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(Latitude);
+      }
+      if (Longitude != 0D) {
+        output.WriteRawTag(33);
+        output.WriteDouble(Longitude);
+      }
+      if (OwnedByTeam != 0) {
+        output.WriteRawTag(40);
+        output.WriteEnum((int) OwnedByTeam);
+      }
+      if (GuardPokemonId != 0) {
+        output.WriteRawTag(48);
+        output.WriteEnum((int) GuardPokemonId);
+      }
+      if (GuardPokemonCp != 0) {
+        output.WriteRawTag(56);
+        output.WriteInt32(GuardPokemonCp);
+      }
+      if (Enabled != false) {
+        output.WriteRawTag(64);
+        output.WriteBool(Enabled);
+      }
+      if (Type != 0) {
+        output.WriteRawTag(72);
+        output.WriteEnum((int) Type);
+      }
+      if (GymPoints != 0L) {
+        output.WriteRawTag(80);
+        output.WriteInt64(GymPoints);
+      }
+      if (IsInBattle != false) {
+        output.WriteRawTag(88);
+        output.WriteBool(IsInBattle);
+      }
+      if (ActiveFortModifier.Length != 0) {
+        output.WriteRawTag(98);
+        output.WriteBytes(ActiveFortModifier);
+      }
+      if (lureInfo_ != null) {
+        output.WriteRawTag(106);
+        output.WriteMessage(LureInfo);
+      }
+      if (CooldownCompleteTimestampMs != 0L) {
+        output.WriteRawTag(112);
+        output.WriteInt64(CooldownCompleteTimestampMs);
+      }
+      if (Sponsor != 0) {
+        output.WriteRawTag(120);
+        output.WriteEnum((int) Sponsor);
+      }
+      if (RenderingType != 0) {
+        output.WriteRawTag(128, 1);
+        output.WriteEnum((int) RenderingType);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Id.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Id);
+      }
+      if (LastModifiedTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(LastModifiedTimestampMs);
+      }
+      if (Latitude != 0D) {
+        size += 1 + 8;
+      }
+      if (Longitude != 0D) {
+        size += 1 + 8;
+      }
+      if (Enabled != false) {
+        size += 1 + 1;
+      }
+      if (Type != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
+      }
+      if (OwnedByTeam != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OwnedByTeam);
+      }
+      if (GuardPokemonId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) GuardPokemonId);
+      }
+      if (GuardPokemonCp != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(GuardPokemonCp);
+      }
+      if (GymPoints != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(GymPoints);
+      }
+      if (IsInBattle != false) {
+        size += 1 + 1;
+      }
+      if (CooldownCompleteTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(CooldownCompleteTimestampMs);
+      }
+      if (Sponsor != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Sponsor);
+      }
+      if (RenderingType != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) RenderingType);
+      }
+      if (ActiveFortModifier.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeBytesSize(ActiveFortModifier);
+      }
+      if (lureInfo_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LureInfo);
+      }
+      return size;
+    }
+
+    public void MergeFrom(FortData other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Id.Length != 0) {
+        Id = other.Id;
+      }
+      if (other.LastModifiedTimestampMs != 0L) {
+        LastModifiedTimestampMs = other.LastModifiedTimestampMs;
+      }
+      if (other.Latitude != 0D) {
+        Latitude = other.Latitude;
+      }
+      if (other.Longitude != 0D) {
+        Longitude = other.Longitude;
+      }
+      if (other.Enabled != false) {
+        Enabled = other.Enabled;
+      }
+      if (other.Type != 0) {
+        Type = other.Type;
+      }
+      if (other.OwnedByTeam != 0) {
+        OwnedByTeam = other.OwnedByTeam;
+      }
+      if (other.GuardPokemonId != 0) {
+        GuardPokemonId = other.GuardPokemonId;
+      }
+      if (other.GuardPokemonCp != 0) {
+        GuardPokemonCp = other.GuardPokemonCp;
+      }
+      if (other.GymPoints != 0L) {
+        GymPoints = other.GymPoints;
+      }
+      if (other.IsInBattle != false) {
+        IsInBattle = other.IsInBattle;
+      }
+      if (other.CooldownCompleteTimestampMs != 0L) {
+        CooldownCompleteTimestampMs = other.CooldownCompleteTimestampMs;
+      }
+      if (other.Sponsor != 0) {
+        Sponsor = other.Sponsor;
+      }
+      if (other.RenderingType != 0) {
+        RenderingType = other.RenderingType;
+      }
+      if (other.ActiveFortModifier.Length != 0) {
+        ActiveFortModifier = other.ActiveFortModifier;
+      }
+      if (other.lureInfo_ != null) {
+        if (lureInfo_ == null) {
+          lureInfo_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo();
+        }
+        LureInfo.MergeFrom(other.LureInfo);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            Id = input.ReadString();
+            break;
+          }
+          case 16: {
+            LastModifiedTimestampMs = input.ReadInt64();
+            break;
+          }
+          case 25: {
+            Latitude = input.ReadDouble();
+            break;
+          }
+          case 33: {
+            Longitude = input.ReadDouble();
+            break;
+          }
+          case 40: {
+            ownedByTeam_ = (global::AllEnum.TeamColor) input.ReadEnum();
+            break;
+          }
+          case 48: {
+            guardPokemonId_ = (global::AllEnum.PokemonId) input.ReadEnum();
+            break;
+          }
+          case 56: {
+            GuardPokemonCp = input.ReadInt32();
+            break;
+          }
+          case 64: {
+            Enabled = input.ReadBool();
+            break;
+          }
+          case 72: {
+            type_ = (global::AllEnum.FortType) input.ReadEnum();
+            break;
+          }
+          case 80: {
+            GymPoints = input.ReadInt64();
+            break;
+          }
+          case 88: {
+            IsInBattle = input.ReadBool();
+            break;
+          }
+          case 98: {
+            ActiveFortModifier = input.ReadBytes();
+            break;
+          }
+          case 106: {
+            if (lureInfo_ == null) {
+              lureInfo_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo();
+            }
+            input.ReadMessage(lureInfo_);
+            break;
+          }
+          case 112: {
+            CooldownCompleteTimestampMs = input.ReadInt64();
+            break;
+          }
+          case 120: {
+            sponsor_ = (global::AllEnum.FortSponsor) input.ReadEnum();
+            break;
+          }
+          case 128: {
+            renderingType_ = (global::AllEnum.FortRenderingType) input.ReadEnum();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class FortLureInfo : pb::IMessage<FortLureInfo> {
+    private static readonly pb::MessageParser<FortLureInfo> _parser = new pb::MessageParser<FortLureInfo>(() => new FortLureInfo());
+    public static pb::MessageParser<FortLureInfo> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[27]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public FortLureInfo() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public FortLureInfo(FortLureInfo other) : this() {
+      fortId_ = other.fortId_;
+      unknown2_ = other.unknown2_;
+      activePokemonId_ = other.activePokemonId_;
+      lureExpiresTimestampMs_ = other.lureExpiresTimestampMs_;
+    }
+
+    public FortLureInfo Clone() {
+      return new FortLureInfo(this);
+    }
+
+    /// <summary>Field number for the "fort_id" field.</summary>
+    public const int FortIdFieldNumber = 1;
+    private string fortId_ = "";
+    public string FortId {
+      get { return fortId_; }
+      set {
+        fortId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "unknown2" field.</summary>
+    public const int Unknown2FieldNumber = 2;
+    private double unknown2_;
+    public double Unknown2 {
+      get { return unknown2_; }
+      set {
+        unknown2_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "active_pokemon_id" field.</summary>
+    public const int ActivePokemonIdFieldNumber = 3;
+    private global::AllEnum.PokemonId activePokemonId_ = 0;
+    public global::AllEnum.PokemonId ActivePokemonId {
+      get { return activePokemonId_; }
+      set {
+        activePokemonId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "lure_expires_timestamp_ms" field.</summary>
+    public const int LureExpiresTimestampMsFieldNumber = 4;
+    private long lureExpiresTimestampMs_;
+    public long LureExpiresTimestampMs {
+      get { return lureExpiresTimestampMs_; }
+      set {
+        lureExpiresTimestampMs_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as FortLureInfo);
+    }
+
+    public bool Equals(FortLureInfo other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (FortId != other.FortId) return false;
+      if (Unknown2 != other.Unknown2) return false;
+      if (ActivePokemonId != other.ActivePokemonId) return false;
+      if (LureExpiresTimestampMs != other.LureExpiresTimestampMs) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (FortId.Length != 0) hash ^= FortId.GetHashCode();
+      if (Unknown2 != 0D) hash ^= Unknown2.GetHashCode();
+      if (ActivePokemonId != 0) hash ^= ActivePokemonId.GetHashCode();
+      if (LureExpiresTimestampMs != 0L) hash ^= LureExpiresTimestampMs.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (FortId.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(FortId);
+      }
+      if (Unknown2 != 0D) {
+        output.WriteRawTag(17);
+        output.WriteDouble(Unknown2);
+      }
+      if (ActivePokemonId != 0) {
+        output.WriteRawTag(24);
+        output.WriteEnum((int) ActivePokemonId);
+      }
+      if (LureExpiresTimestampMs != 0L) {
+        output.WriteRawTag(32);
+        output.WriteInt64(LureExpiresTimestampMs);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (FortId.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(FortId);
+      }
+      if (Unknown2 != 0D) {
+        size += 1 + 8;
+      }
+      if (ActivePokemonId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ActivePokemonId);
+      }
+      if (LureExpiresTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(LureExpiresTimestampMs);
+      }
+      return size;
+    }
+
+    public void MergeFrom(FortLureInfo other) {
+      if (other == null) {
+        return;
+      }
+      if (other.FortId.Length != 0) {
+        FortId = other.FortId;
+      }
+      if (other.Unknown2 != 0D) {
+        Unknown2 = other.Unknown2;
+      }
+      if (other.ActivePokemonId != 0) {
+        ActivePokemonId = other.ActivePokemonId;
+      }
+      if (other.LureExpiresTimestampMs != 0L) {
+        LureExpiresTimestampMs = other.LureExpiresTimestampMs;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            FortId = input.ReadString();
+            break;
+          }
+          case 17: {
+            Unknown2 = input.ReadDouble();
+            break;
+          }
+          case 24: {
+            activePokemonId_ = (global::AllEnum.PokemonId) input.ReadEnum();
+            break;
+          }
+          case 32: {
+            LureExpiresTimestampMs = input.ReadInt64();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class SpawnPoint : pb::IMessage<SpawnPoint> {
+    private static readonly pb::MessageParser<SpawnPoint> _parser = new pb::MessageParser<SpawnPoint>(() => new SpawnPoint());
+    public static pb::MessageParser<SpawnPoint> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[28]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public SpawnPoint() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public SpawnPoint(SpawnPoint other) : this() {
+      latitude_ = other.latitude_;
+      longitude_ = other.longitude_;
+    }
+
+    public SpawnPoint Clone() {
+      return new SpawnPoint(this);
+    }
+
+    /// <summary>Field number for the "latitude" field.</summary>
+    public const int LatitudeFieldNumber = 2;
+    private double latitude_;
+    public double Latitude {
+      get { return latitude_; }
+      set {
+        latitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "longitude" field.</summary>
+    public const int LongitudeFieldNumber = 3;
+    private double longitude_;
+    public double Longitude {
+      get { return longitude_; }
+      set {
+        longitude_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as SpawnPoint);
+    }
+
+    public bool Equals(SpawnPoint other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Latitude != other.Latitude) return false;
+      if (Longitude != other.Longitude) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
+      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Latitude != 0D) {
+        output.WriteRawTag(17);
+        output.WriteDouble(Latitude);
+      }
+      if (Longitude != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(Longitude);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Latitude != 0D) {
+        size += 1 + 8;
+      }
+      if (Longitude != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(SpawnPoint other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Latitude != 0D) {
+        Latitude = other.Latitude;
+      }
+      if (other.Longitude != 0D) {
+        Longitude = other.Longitude;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 17: {
+            Latitude = input.ReadDouble();
+            break;
+          }
+          case 25: {
+            Longitude = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class FortSummary : pb::IMessage<FortSummary> {
+    private static readonly pb::MessageParser<FortSummary> _parser = new pb::MessageParser<FortSummary>(() => new FortSummary());
+    public static pb::MessageParser<FortSummary> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[29]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public FortSummary() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public FortSummary(FortSummary other) : this() {
+      fortSummaryId_ = other.fortSummaryId_;
+      lastModifiedTimestampMs_ = other.lastModifiedTimestampMs_;
+      latitude_ = other.latitude_;
+      longitude_ = other.longitude_;
+    }
+
+    public FortSummary Clone() {
+      return new FortSummary(this);
+    }
+
+    /// <summary>Field number for the "fort_summary_id" field.</summary>
+    public const int FortSummaryIdFieldNumber = 1;
+    private int fortSummaryId_;
+    public int FortSummaryId {
+      get { return fortSummaryId_; }
+      set {
+        fortSummaryId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "last_modified_timestamp_ms" field.</summary>
+    public const int LastModifiedTimestampMsFieldNumber = 2;
+    private int lastModifiedTimestampMs_;
+    public int LastModifiedTimestampMs {
+      get { return lastModifiedTimestampMs_; }
+      set {
+        lastModifiedTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "latitude" field.</summary>
+    public const int LatitudeFieldNumber = 3;
+    private int latitude_;
+    public int Latitude {
+      get { return latitude_; }
+      set {
+        latitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "longitude" field.</summary>
+    public const int LongitudeFieldNumber = 4;
+    private int longitude_;
+    public int Longitude {
+      get { return longitude_; }
+      set {
+        longitude_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as FortSummary);
+    }
+
+    public bool Equals(FortSummary other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (FortSummaryId != other.FortSummaryId) return false;
+      if (LastModifiedTimestampMs != other.LastModifiedTimestampMs) return false;
+      if (Latitude != other.Latitude) return false;
+      if (Longitude != other.Longitude) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (FortSummaryId != 0) hash ^= FortSummaryId.GetHashCode();
+      if (LastModifiedTimestampMs != 0) hash ^= LastModifiedTimestampMs.GetHashCode();
+      if (Latitude != 0) hash ^= Latitude.GetHashCode();
+      if (Longitude != 0) hash ^= Longitude.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (FortSummaryId != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(FortSummaryId);
+      }
+      if (LastModifiedTimestampMs != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(LastModifiedTimestampMs);
+      }
+      if (Latitude != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(Latitude);
+      }
+      if (Longitude != 0) {
+        output.WriteRawTag(32);
+        output.WriteInt32(Longitude);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (FortSummaryId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FortSummaryId);
+      }
+      if (LastModifiedTimestampMs != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(LastModifiedTimestampMs);
+      }
+      if (Latitude != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Latitude);
+      }
+      if (Longitude != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Longitude);
+      }
+      return size;
+    }
+
+    public void MergeFrom(FortSummary other) {
+      if (other == null) {
+        return;
+      }
+      if (other.FortSummaryId != 0) {
+        FortSummaryId = other.FortSummaryId;
+      }
+      if (other.LastModifiedTimestampMs != 0) {
+        LastModifiedTimestampMs = other.LastModifiedTimestampMs;
+      }
+      if (other.Latitude != 0) {
+        Latitude = other.Latitude;
+      }
+      if (other.Longitude != 0) {
+        Longitude = other.Longitude;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            FortSummaryId = input.ReadInt32();
+            break;
+          }
+          case 16: {
+            LastModifiedTimestampMs = input.ReadInt32();
+            break;
+          }
+          case 24: {
+            Latitude = input.ReadInt32();
+            break;
+          }
+          case 32: {
+            Longitude = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class WildPokemon : pb::IMessage<WildPokemon> {
+    private static readonly pb::MessageParser<WildPokemon> _parser = new pb::MessageParser<WildPokemon>(() => new WildPokemon());
+    public static pb::MessageParser<WildPokemon> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[30]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public WildPokemon() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public WildPokemon(WildPokemon other) : this() {
+      encounterId_ = other.encounterId_;
+      lastModifiedTimestampMs_ = other.lastModifiedTimestampMs_;
+      latitude_ = other.latitude_;
+      longitude_ = other.longitude_;
+      spawnpointId_ = other.spawnpointId_;
+      PokemonData = other.pokemonData_ != null ? other.PokemonData.Clone() : null;
+      timeTillHiddenMs_ = other.timeTillHiddenMs_;
+    }
+
+    public WildPokemon Clone() {
+      return new WildPokemon(this);
+    }
+
+    /// <summary>Field number for the "encounter_id" field.</summary>
+    public const int EncounterIdFieldNumber = 1;
+    private ulong encounterId_;
+    public ulong EncounterId {
+      get { return encounterId_; }
+      set {
+        encounterId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "last_modified_timestamp_ms" field.</summary>
+    public const int LastModifiedTimestampMsFieldNumber = 2;
+    private long lastModifiedTimestampMs_;
+    public long LastModifiedTimestampMs {
+      get { return lastModifiedTimestampMs_; }
+      set {
+        lastModifiedTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "latitude" field.</summary>
+    public const int LatitudeFieldNumber = 3;
+    private double latitude_;
+    public double Latitude {
+      get { return latitude_; }
+      set {
+        latitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "longitude" field.</summary>
+    public const int LongitudeFieldNumber = 4;
+    private double longitude_;
+    public double Longitude {
+      get { return longitude_; }
+      set {
+        longitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "spawnpoint_id" field.</summary>
+    public const int SpawnpointIdFieldNumber = 5;
+    private string spawnpointId_ = "";
+    public string SpawnpointId {
+      get { return spawnpointId_; }
+      set {
+        spawnpointId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_data" field.</summary>
+    public const int PokemonDataFieldNumber = 7;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PokemonData pokemonData_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PokemonData PokemonData {
+      get { return pokemonData_; }
+      set {
+        pokemonData_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "time_till_hidden_ms" field.</summary>
+    public const int TimeTillHiddenMsFieldNumber = 11;
+    private int timeTillHiddenMs_;
+    public int TimeTillHiddenMs {
+      get { return timeTillHiddenMs_; }
+      set {
+        timeTillHiddenMs_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as WildPokemon);
+    }
+
+    public bool Equals(WildPokemon other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (EncounterId != other.EncounterId) return false;
+      if (LastModifiedTimestampMs != other.LastModifiedTimestampMs) return false;
+      if (Latitude != other.Latitude) return false;
+      if (Longitude != other.Longitude) return false;
+      if (SpawnpointId != other.SpawnpointId) return false;
+      if (!object.Equals(PokemonData, other.PokemonData)) return false;
+      if (TimeTillHiddenMs != other.TimeTillHiddenMs) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
+      if (LastModifiedTimestampMs != 0L) hash ^= LastModifiedTimestampMs.GetHashCode();
+      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
+      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
+      if (SpawnpointId.Length != 0) hash ^= SpawnpointId.GetHashCode();
+      if (pokemonData_ != null) hash ^= PokemonData.GetHashCode();
+      if (TimeTillHiddenMs != 0) hash ^= TimeTillHiddenMs.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (EncounterId != 0UL) {
+        output.WriteRawTag(9);
+        output.WriteFixed64(EncounterId);
+      }
+      if (LastModifiedTimestampMs != 0L) {
+        output.WriteRawTag(16);
+        output.WriteInt64(LastModifiedTimestampMs);
+      }
+      if (Latitude != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(Latitude);
+      }
+      if (Longitude != 0D) {
+        output.WriteRawTag(33);
+        output.WriteDouble(Longitude);
+      }
+      if (SpawnpointId.Length != 0) {
+        output.WriteRawTag(42);
+        output.WriteString(SpawnpointId);
+      }
+      if (pokemonData_ != null) {
+        output.WriteRawTag(58);
+        output.WriteMessage(PokemonData);
+      }
+      if (TimeTillHiddenMs != 0) {
+        output.WriteRawTag(88);
+        output.WriteInt32(TimeTillHiddenMs);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (EncounterId != 0UL) {
+        size += 1 + 8;
+      }
+      if (LastModifiedTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(LastModifiedTimestampMs);
+      }
+      if (Latitude != 0D) {
+        size += 1 + 8;
+      }
+      if (Longitude != 0D) {
+        size += 1 + 8;
+      }
+      if (SpawnpointId.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnpointId);
+      }
+      if (pokemonData_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonData);
+      }
+      if (TimeTillHiddenMs != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimeTillHiddenMs);
+      }
+      return size;
+    }
+
+    public void MergeFrom(WildPokemon other) {
+      if (other == null) {
+        return;
+      }
+      if (other.EncounterId != 0UL) {
+        EncounterId = other.EncounterId;
+      }
+      if (other.LastModifiedTimestampMs != 0L) {
+        LastModifiedTimestampMs = other.LastModifiedTimestampMs;
+      }
+      if (other.Latitude != 0D) {
+        Latitude = other.Latitude;
+      }
+      if (other.Longitude != 0D) {
+        Longitude = other.Longitude;
+      }
+      if (other.SpawnpointId.Length != 0) {
+        SpawnpointId = other.SpawnpointId;
+      }
+      if (other.pokemonData_ != null) {
+        if (pokemonData_ == null) {
+          pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
+        }
+        PokemonData.MergeFrom(other.PokemonData);
+      }
+      if (other.TimeTillHiddenMs != 0) {
+        TimeTillHiddenMs = other.TimeTillHiddenMs;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            EncounterId = input.ReadFixed64();
+            break;
+          }
+          case 16: {
+            LastModifiedTimestampMs = input.ReadInt64();
+            break;
+          }
+          case 25: {
+            Latitude = input.ReadDouble();
+            break;
+          }
+          case 33: {
+            Longitude = input.ReadDouble();
+            break;
+          }
+          case 42: {
+            SpawnpointId = input.ReadString();
+            break;
+          }
+          case 58: {
+            if (pokemonData_ == null) {
+              pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
+            }
+            input.ReadMessage(pokemonData_);
+            break;
+          }
+          case 88: {
+            TimeTillHiddenMs = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PokemonData : pb::IMessage<PokemonData> {
+    private static readonly pb::MessageParser<PokemonData> _parser = new pb::MessageParser<PokemonData>(() => new PokemonData());
+    public static pb::MessageParser<PokemonData> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[31]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PokemonData() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PokemonData(PokemonData other) : this() {
+      id_ = other.id_;
+      pokemonId_ = other.pokemonId_;
+      cp_ = other.cp_;
+      stamina_ = other.stamina_;
+      staminaMax_ = other.staminaMax_;
+      move1_ = other.move1_;
+      move2_ = other.move2_;
+      deployedFortId_ = other.deployedFortId_;
+      ownerName_ = other.ownerName_;
+      isEgg_ = other.isEgg_;
+      eggKmWalkedTarget_ = other.eggKmWalkedTarget_;
+      eggKmWalkedStart_ = other.eggKmWalkedStart_;
+      origin_ = other.origin_;
+      heightM_ = other.heightM_;
+      weightKg_ = other.weightKg_;
+      individualAttack_ = other.individualAttack_;
+      individualDefense_ = other.individualDefense_;
+      individualStamina_ = other.individualStamina_;
+      cpMultiplier_ = other.cpMultiplier_;
+      pokeball_ = other.pokeball_;
+      capturedCellId_ = other.capturedCellId_;
+      battlesAttacked_ = other.battlesAttacked_;
+      battlesDefended_ = other.battlesDefended_;
+      eggIncubatorId_ = other.eggIncubatorId_;
+      creationTimeMs_ = other.creationTimeMs_;
+      numUpgrades_ = other.numUpgrades_;
+      additionalCpMultiplier_ = other.additionalCpMultiplier_;
+      favorite_ = other.favorite_;
+      nickname_ = other.nickname_;
+      fromFort_ = other.fromFort_;
+    }
+
+    public PokemonData Clone() {
+      return new PokemonData(this);
+    }
+
+    /// <summary>Field number for the "id" field.</summary>
+    public const int IdFieldNumber = 1;
+    private ulong id_;
+    public ulong Id {
+      get { return id_; }
+      set {
+        id_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_id" field.</summary>
+    public const int PokemonIdFieldNumber = 2;
+    private global::AllEnum.PokemonId pokemonId_ = 0;
+    public global::AllEnum.PokemonId PokemonId {
+      get { return pokemonId_; }
+      set {
+        pokemonId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "cp" field.</summary>
+    public const int CpFieldNumber = 3;
+    private int cp_;
+    public int Cp {
+      get { return cp_; }
+      set {
+        cp_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "stamina" field.</summary>
+    public const int StaminaFieldNumber = 4;
+    private int stamina_;
+    public int Stamina {
+      get { return stamina_; }
+      set {
+        stamina_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "stamina_max" field.</summary>
+    public const int StaminaMaxFieldNumber = 5;
+    private int staminaMax_;
+    public int StaminaMax {
+      get { return staminaMax_; }
+      set {
+        staminaMax_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "move_1" field.</summary>
+    public const int Move1FieldNumber = 6;
+    private global::AllEnum.PokemonMove move1_ = 0;
+    public global::AllEnum.PokemonMove Move1 {
+      get { return move1_; }
+      set {
+        move1_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "move_2" field.</summary>
+    public const int Move2FieldNumber = 7;
+    private global::AllEnum.PokemonMove move2_ = 0;
+    public global::AllEnum.PokemonMove Move2 {
+      get { return move2_; }
+      set {
+        move2_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "deployed_fort_id" field.</summary>
+    public const int DeployedFortIdFieldNumber = 8;
+    private int deployedFortId_;
+    public int DeployedFortId {
+      get { return deployedFortId_; }
+      set {
+        deployedFortId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "owner_name" field.</summary>
+    public const int OwnerNameFieldNumber = 9;
+    private string ownerName_ = "";
+    public string OwnerName {
+      get { return ownerName_; }
+      set {
+        ownerName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "is_egg" field.</summary>
+    public const int IsEggFieldNumber = 10;
+    private bool isEgg_;
+    public bool IsEgg {
+      get { return isEgg_; }
+      set {
+        isEgg_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "egg_km_walked_target" field.</summary>
+    public const int EggKmWalkedTargetFieldNumber = 11;
+    private int eggKmWalkedTarget_;
+    public int EggKmWalkedTarget {
+      get { return eggKmWalkedTarget_; }
+      set {
+        eggKmWalkedTarget_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "egg_km_walked_start" field.</summary>
+    public const int EggKmWalkedStartFieldNumber = 12;
+    private int eggKmWalkedStart_;
+    public int EggKmWalkedStart {
+      get { return eggKmWalkedStart_; }
+      set {
+        eggKmWalkedStart_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "origin" field.</summary>
+    public const int OriginFieldNumber = 14;
+    private int origin_;
+    public int Origin {
+      get { return origin_; }
+      set {
+        origin_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "height_m" field.</summary>
+    public const int HeightMFieldNumber = 15;
+    private float heightM_;
+    public float HeightM {
+      get { return heightM_; }
+      set {
+        heightM_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "weight_kg" field.</summary>
+    public const int WeightKgFieldNumber = 16;
+    private float weightKg_;
+    public float WeightKg {
+      get { return weightKg_; }
+      set {
+        weightKg_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "individual_attack" field.</summary>
+    public const int IndividualAttackFieldNumber = 17;
+    private int individualAttack_;
+    public int IndividualAttack {
+      get { return individualAttack_; }
+      set {
+        individualAttack_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "individual_defense" field.</summary>
+    public const int IndividualDefenseFieldNumber = 18;
+    private int individualDefense_;
+    public int IndividualDefense {
+      get { return individualDefense_; }
+      set {
+        individualDefense_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "individual_stamina" field.</summary>
+    public const int IndividualStaminaFieldNumber = 19;
+    private int individualStamina_;
+    public int IndividualStamina {
+      get { return individualStamina_; }
+      set {
+        individualStamina_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "cp_multiplier" field.</summary>
+    public const int CpMultiplierFieldNumber = 20;
+    private int cpMultiplier_;
+    public int CpMultiplier {
+      get { return cpMultiplier_; }
+      set {
+        cpMultiplier_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokeball" field.</summary>
+    public const int PokeballFieldNumber = 21;
+    private int pokeball_;
+    public int Pokeball {
+      get { return pokeball_; }
+      set {
+        pokeball_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "captured_cell_id" field.</summary>
+    public const int CapturedCellIdFieldNumber = 22;
+    private ulong capturedCellId_;
+    public ulong CapturedCellId {
+      get { return capturedCellId_; }
+      set {
+        capturedCellId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "battles_attacked" field.</summary>
+    public const int BattlesAttackedFieldNumber = 23;
+    private int battlesAttacked_;
+    public int BattlesAttacked {
+      get { return battlesAttacked_; }
+      set {
+        battlesAttacked_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "battles_defended" field.</summary>
+    public const int BattlesDefendedFieldNumber = 24;
+    private int battlesDefended_;
+    public int BattlesDefended {
+      get { return battlesDefended_; }
+      set {
+        battlesDefended_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "egg_incubator_id" field.</summary>
+    public const int EggIncubatorIdFieldNumber = 25;
+    private int eggIncubatorId_;
+    public int EggIncubatorId {
+      get { return eggIncubatorId_; }
+      set {
+        eggIncubatorId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "creation_time_ms" field.</summary>
+    public const int CreationTimeMsFieldNumber = 26;
+    private ulong creationTimeMs_;
+    public ulong CreationTimeMs {
+      get { return creationTimeMs_; }
+      set {
+        creationTimeMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "num_upgrades" field.</summary>
+    public const int NumUpgradesFieldNumber = 27;
+    private int numUpgrades_;
+    public int NumUpgrades {
+      get { return numUpgrades_; }
+      set {
+        numUpgrades_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "additional_cp_multiplier" field.</summary>
+    public const int AdditionalCpMultiplierFieldNumber = 28;
+    private int additionalCpMultiplier_;
+    public int AdditionalCpMultiplier {
+      get { return additionalCpMultiplier_; }
+      set {
+        additionalCpMultiplier_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "favorite" field.</summary>
+    public const int FavoriteFieldNumber = 29;
+    private int favorite_;
+    public int Favorite {
+      get { return favorite_; }
+      set {
+        favorite_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "nickname" field.</summary>
+    public const int NicknameFieldNumber = 30;
+    private string nickname_ = "";
+    public string Nickname {
+      get { return nickname_; }
+      set {
+        nickname_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "from_fort" field.</summary>
+    public const int FromFortFieldNumber = 31;
+    private int fromFort_;
+    public int FromFort {
+      get { return fromFort_; }
+      set {
+        fromFort_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PokemonData);
+    }
+
+    public bool Equals(PokemonData other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Id != other.Id) return false;
+      if (PokemonId != other.PokemonId) return false;
+      if (Cp != other.Cp) return false;
+      if (Stamina != other.Stamina) return false;
+      if (StaminaMax != other.StaminaMax) return false;
+      if (Move1 != other.Move1) return false;
+      if (Move2 != other.Move2) return false;
+      if (DeployedFortId != other.DeployedFortId) return false;
+      if (OwnerName != other.OwnerName) return false;
+      if (IsEgg != other.IsEgg) return false;
+      if (EggKmWalkedTarget != other.EggKmWalkedTarget) return false;
+      if (EggKmWalkedStart != other.EggKmWalkedStart) return false;
+      if (Origin != other.Origin) return false;
+      if (HeightM != other.HeightM) return false;
+      if (WeightKg != other.WeightKg) return false;
+      if (IndividualAttack != other.IndividualAttack) return false;
+      if (IndividualDefense != other.IndividualDefense) return false;
+      if (IndividualStamina != other.IndividualStamina) return false;
+      if (CpMultiplier != other.CpMultiplier) return false;
+      if (Pokeball != other.Pokeball) return false;
+      if (CapturedCellId != other.CapturedCellId) return false;
+      if (BattlesAttacked != other.BattlesAttacked) return false;
+      if (BattlesDefended != other.BattlesDefended) return false;
+      if (EggIncubatorId != other.EggIncubatorId) return false;
+      if (CreationTimeMs != other.CreationTimeMs) return false;
+      if (NumUpgrades != other.NumUpgrades) return false;
+      if (AdditionalCpMultiplier != other.AdditionalCpMultiplier) return false;
+      if (Favorite != other.Favorite) return false;
+      if (Nickname != other.Nickname) return false;
+      if (FromFort != other.FromFort) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Id != 0UL) hash ^= Id.GetHashCode();
+      if (PokemonId != 0) hash ^= PokemonId.GetHashCode();
+      if (Cp != 0) hash ^= Cp.GetHashCode();
+      if (Stamina != 0) hash ^= Stamina.GetHashCode();
+      if (StaminaMax != 0) hash ^= StaminaMax.GetHashCode();
+      if (Move1 != 0) hash ^= Move1.GetHashCode();
+      if (Move2 != 0) hash ^= Move2.GetHashCode();
+      if (DeployedFortId != 0) hash ^= DeployedFortId.GetHashCode();
+      if (OwnerName.Length != 0) hash ^= OwnerName.GetHashCode();
+      if (IsEgg != false) hash ^= IsEgg.GetHashCode();
+      if (EggKmWalkedTarget != 0) hash ^= EggKmWalkedTarget.GetHashCode();
+      if (EggKmWalkedStart != 0) hash ^= EggKmWalkedStart.GetHashCode();
+      if (Origin != 0) hash ^= Origin.GetHashCode();
+      if (HeightM != 0F) hash ^= HeightM.GetHashCode();
+      if (WeightKg != 0F) hash ^= WeightKg.GetHashCode();
+      if (IndividualAttack != 0) hash ^= IndividualAttack.GetHashCode();
+      if (IndividualDefense != 0) hash ^= IndividualDefense.GetHashCode();
+      if (IndividualStamina != 0) hash ^= IndividualStamina.GetHashCode();
+      if (CpMultiplier != 0) hash ^= CpMultiplier.GetHashCode();
+      if (Pokeball != 0) hash ^= Pokeball.GetHashCode();
+      if (CapturedCellId != 0UL) hash ^= CapturedCellId.GetHashCode();
+      if (BattlesAttacked != 0) hash ^= BattlesAttacked.GetHashCode();
+      if (BattlesDefended != 0) hash ^= BattlesDefended.GetHashCode();
+      if (EggIncubatorId != 0) hash ^= EggIncubatorId.GetHashCode();
+      if (CreationTimeMs != 0UL) hash ^= CreationTimeMs.GetHashCode();
+      if (NumUpgrades != 0) hash ^= NumUpgrades.GetHashCode();
+      if (AdditionalCpMultiplier != 0) hash ^= AdditionalCpMultiplier.GetHashCode();
+      if (Favorite != 0) hash ^= Favorite.GetHashCode();
+      if (Nickname.Length != 0) hash ^= Nickname.GetHashCode();
+      if (FromFort != 0) hash ^= FromFort.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Id != 0UL) {
+        output.WriteRawTag(9);
+        output.WriteFixed64(Id);
+      }
+      if (PokemonId != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) PokemonId);
+      }
+      if (Cp != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(Cp);
+      }
+      if (Stamina != 0) {
+        output.WriteRawTag(32);
+        output.WriteInt32(Stamina);
+      }
+      if (StaminaMax != 0) {
+        output.WriteRawTag(40);
+        output.WriteInt32(StaminaMax);
+      }
+      if (Move1 != 0) {
+        output.WriteRawTag(48);
+        output.WriteEnum((int) Move1);
+      }
+      if (Move2 != 0) {
+        output.WriteRawTag(56);
+        output.WriteEnum((int) Move2);
+      }
+      if (DeployedFortId != 0) {
+        output.WriteRawTag(64);
+        output.WriteInt32(DeployedFortId);
+      }
+      if (OwnerName.Length != 0) {
+        output.WriteRawTag(74);
+        output.WriteString(OwnerName);
+      }
+      if (IsEgg != false) {
+        output.WriteRawTag(80);
+        output.WriteBool(IsEgg);
+      }
+      if (EggKmWalkedTarget != 0) {
+        output.WriteRawTag(88);
+        output.WriteInt32(EggKmWalkedTarget);
+      }
+      if (EggKmWalkedStart != 0) {
+        output.WriteRawTag(96);
+        output.WriteInt32(EggKmWalkedStart);
+      }
+      if (Origin != 0) {
+        output.WriteRawTag(112);
+        output.WriteInt32(Origin);
+      }
+      if (HeightM != 0F) {
+        output.WriteRawTag(125);
+        output.WriteFloat(HeightM);
+      }
+      if (WeightKg != 0F) {
+        output.WriteRawTag(133, 1);
+        output.WriteFloat(WeightKg);
+      }
+      if (IndividualAttack != 0) {
+        output.WriteRawTag(136, 1);
+        output.WriteInt32(IndividualAttack);
+      }
+      if (IndividualDefense != 0) {
+        output.WriteRawTag(144, 1);
+        output.WriteInt32(IndividualDefense);
+      }
+      if (IndividualStamina != 0) {
+        output.WriteRawTag(152, 1);
+        output.WriteInt32(IndividualStamina);
+      }
+      if (CpMultiplier != 0) {
+        output.WriteRawTag(160, 1);
+        output.WriteInt32(CpMultiplier);
+      }
+      if (Pokeball != 0) {
+        output.WriteRawTag(168, 1);
+        output.WriteInt32(Pokeball);
+      }
+      if (CapturedCellId != 0UL) {
+        output.WriteRawTag(176, 1);
+        output.WriteUInt64(CapturedCellId);
+      }
+      if (BattlesAttacked != 0) {
+        output.WriteRawTag(184, 1);
+        output.WriteInt32(BattlesAttacked);
+      }
+      if (BattlesDefended != 0) {
+        output.WriteRawTag(192, 1);
+        output.WriteInt32(BattlesDefended);
+      }
+      if (EggIncubatorId != 0) {
+        output.WriteRawTag(200, 1);
+        output.WriteInt32(EggIncubatorId);
+      }
+      if (CreationTimeMs != 0UL) {
+        output.WriteRawTag(208, 1);
+        output.WriteUInt64(CreationTimeMs);
+      }
+      if (NumUpgrades != 0) {
+        output.WriteRawTag(216, 1);
+        output.WriteInt32(NumUpgrades);
+      }
+      if (AdditionalCpMultiplier != 0) {
+        output.WriteRawTag(224, 1);
+        output.WriteInt32(AdditionalCpMultiplier);
+      }
+      if (Favorite != 0) {
+        output.WriteRawTag(232, 1);
+        output.WriteInt32(Favorite);
+      }
+      if (Nickname.Length != 0) {
+        output.WriteRawTag(242, 1);
+        output.WriteString(Nickname);
+      }
+      if (FromFort != 0) {
+        output.WriteRawTag(248, 1);
+        output.WriteInt32(FromFort);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Id != 0UL) {
+        size += 1 + 8;
+      }
+      if (PokemonId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PokemonId);
+      }
+      if (Cp != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Cp);
+      }
+      if (Stamina != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stamina);
+      }
+      if (StaminaMax != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(StaminaMax);
+      }
+      if (Move1 != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Move1);
+      }
+      if (Move2 != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Move2);
+      }
+      if (DeployedFortId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DeployedFortId);
+      }
+      if (OwnerName.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(OwnerName);
+      }
+      if (IsEgg != false) {
+        size += 1 + 1;
+      }
+      if (EggKmWalkedTarget != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedTarget);
+      }
+      if (EggKmWalkedStart != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedStart);
+      }
+      if (Origin != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Origin);
+      }
+      if (HeightM != 0F) {
+        size += 1 + 4;
+      }
+      if (WeightKg != 0F) {
+        size += 2 + 4;
+      }
+      if (IndividualAttack != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualAttack);
+      }
+      if (IndividualDefense != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualDefense);
+      }
+      if (IndividualStamina != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualStamina);
+      }
+      if (CpMultiplier != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(CpMultiplier);
+      }
+      if (Pokeball != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(Pokeball);
+      }
+      if (CapturedCellId != 0UL) {
+        size += 2 + pb::CodedOutputStream.ComputeUInt64Size(CapturedCellId);
+      }
+      if (BattlesAttacked != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesAttacked);
+      }
+      if (BattlesDefended != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesDefended);
+      }
+      if (EggIncubatorId != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(EggIncubatorId);
+      }
+      if (CreationTimeMs != 0UL) {
+        size += 2 + pb::CodedOutputStream.ComputeUInt64Size(CreationTimeMs);
+      }
+      if (NumUpgrades != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumUpgrades);
+      }
+      if (AdditionalCpMultiplier != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(AdditionalCpMultiplier);
+      }
+      if (Favorite != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(Favorite);
+      }
+      if (Nickname.Length != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeStringSize(Nickname);
+      }
+      if (FromFort != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(FromFort);
+      }
+      return size;
+    }
+
+    public void MergeFrom(PokemonData other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Id != 0UL) {
+        Id = other.Id;
+      }
+      if (other.PokemonId != 0) {
+        PokemonId = other.PokemonId;
+      }
+      if (other.Cp != 0) {
+        Cp = other.Cp;
+      }
+      if (other.Stamina != 0) {
+        Stamina = other.Stamina;
+      }
+      if (other.StaminaMax != 0) {
+        StaminaMax = other.StaminaMax;
+      }
+      if (other.Move1 != 0) {
+        Move1 = other.Move1;
+      }
+      if (other.Move2 != 0) {
+        Move2 = other.Move2;
+      }
+      if (other.DeployedFortId != 0) {
+        DeployedFortId = other.DeployedFortId;
+      }
+      if (other.OwnerName.Length != 0) {
+        OwnerName = other.OwnerName;
+      }
+      if (other.IsEgg != false) {
+        IsEgg = other.IsEgg;
+      }
+      if (other.EggKmWalkedTarget != 0) {
+        EggKmWalkedTarget = other.EggKmWalkedTarget;
+      }
+      if (other.EggKmWalkedStart != 0) {
+        EggKmWalkedStart = other.EggKmWalkedStart;
+      }
+      if (other.Origin != 0) {
+        Origin = other.Origin;
+      }
+      if (other.HeightM != 0F) {
+        HeightM = other.HeightM;
+      }
+      if (other.WeightKg != 0F) {
+        WeightKg = other.WeightKg;
+      }
+      if (other.IndividualAttack != 0) {
+        IndividualAttack = other.IndividualAttack;
+      }
+      if (other.IndividualDefense != 0) {
+        IndividualDefense = other.IndividualDefense;
+      }
+      if (other.IndividualStamina != 0) {
+        IndividualStamina = other.IndividualStamina;
+      }
+      if (other.CpMultiplier != 0) {
+        CpMultiplier = other.CpMultiplier;
+      }
+      if (other.Pokeball != 0) {
+        Pokeball = other.Pokeball;
+      }
+      if (other.CapturedCellId != 0UL) {
+        CapturedCellId = other.CapturedCellId;
+      }
+      if (other.BattlesAttacked != 0) {
+        BattlesAttacked = other.BattlesAttacked;
+      }
+      if (other.BattlesDefended != 0) {
+        BattlesDefended = other.BattlesDefended;
+      }
+      if (other.EggIncubatorId != 0) {
+        EggIncubatorId = other.EggIncubatorId;
+      }
+      if (other.CreationTimeMs != 0UL) {
+        CreationTimeMs = other.CreationTimeMs;
+      }
+      if (other.NumUpgrades != 0) {
+        NumUpgrades = other.NumUpgrades;
+      }
+      if (other.AdditionalCpMultiplier != 0) {
+        AdditionalCpMultiplier = other.AdditionalCpMultiplier;
+      }
+      if (other.Favorite != 0) {
+        Favorite = other.Favorite;
+      }
+      if (other.Nickname.Length != 0) {
+        Nickname = other.Nickname;
+      }
+      if (other.FromFort != 0) {
+        FromFort = other.FromFort;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            Id = input.ReadFixed64();
+            break;
+          }
+          case 16: {
+            pokemonId_ = (global::AllEnum.PokemonId) input.ReadEnum();
+            break;
+          }
+          case 24: {
+            Cp = input.ReadInt32();
+            break;
+          }
+          case 32: {
+            Stamina = input.ReadInt32();
+            break;
+          }
+          case 40: {
+            StaminaMax = input.ReadInt32();
+            break;
+          }
+          case 48: {
+            move1_ = (global::AllEnum.PokemonMove) input.ReadEnum();
+            break;
+          }
+          case 56: {
+            move2_ = (global::AllEnum.PokemonMove) input.ReadEnum();
+            break;
+          }
+          case 64: {
+            DeployedFortId = input.ReadInt32();
+            break;
+          }
+          case 74: {
+            OwnerName = input.ReadString();
+            break;
+          }
+          case 80: {
+            IsEgg = input.ReadBool();
+            break;
+          }
+          case 88: {
+            EggKmWalkedTarget = input.ReadInt32();
+            break;
+          }
+          case 96: {
+            EggKmWalkedStart = input.ReadInt32();
+            break;
+          }
+          case 112: {
+            Origin = input.ReadInt32();
+            break;
+          }
+          case 125: {
+            HeightM = input.ReadFloat();
+            break;
+          }
+          case 133: {
+            WeightKg = input.ReadFloat();
+            break;
+          }
+          case 136: {
+            IndividualAttack = input.ReadInt32();
+            break;
+          }
+          case 144: {
+            IndividualDefense = input.ReadInt32();
+            break;
+          }
+          case 152: {
+            IndividualStamina = input.ReadInt32();
+            break;
+          }
+          case 160: {
+            CpMultiplier = input.ReadInt32();
+            break;
+          }
+          case 168: {
+            Pokeball = input.ReadInt32();
+            break;
+          }
+          case 176: {
+            CapturedCellId = input.ReadUInt64();
+            break;
+          }
+          case 184: {
+            BattlesAttacked = input.ReadInt32();
+            break;
+          }
+          case 192: {
+            BattlesDefended = input.ReadInt32();
+            break;
+          }
+          case 200: {
+            EggIncubatorId = input.ReadInt32();
+            break;
+          }
+          case 208: {
+            CreationTimeMs = input.ReadUInt64();
+            break;
+          }
+          case 216: {
+            NumUpgrades = input.ReadInt32();
+            break;
+          }
+          case 224: {
+            AdditionalCpMultiplier = input.ReadInt32();
+            break;
+          }
+          case 232: {
+            Favorite = input.ReadInt32();
+            break;
+          }
+          case 242: {
+            Nickname = input.ReadString();
+            break;
+          }
+          case 248: {
+            FromFort = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class MapPokemon : pb::IMessage<MapPokemon> {
+    private static readonly pb::MessageParser<MapPokemon> _parser = new pb::MessageParser<MapPokemon>(() => new MapPokemon());
+    public static pb::MessageParser<MapPokemon> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[32]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public MapPokemon() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public MapPokemon(MapPokemon other) : this() {
+      spawnpointId_ = other.spawnpointId_;
+      encounterId_ = other.encounterId_;
+      pokemonId_ = other.pokemonId_;
+      expirationTimestampMs_ = other.expirationTimestampMs_;
+      latitude_ = other.latitude_;
+      longitude_ = other.longitude_;
+    }
+
+    public MapPokemon Clone() {
+      return new MapPokemon(this);
+    }
+
+    /// <summary>Field number for the "spawnpoint_id" field.</summary>
+    public const int SpawnpointIdFieldNumber = 1;
+    private string spawnpointId_ = "";
+    public string SpawnpointId {
+      get { return spawnpointId_; }
+      set {
+        spawnpointId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "encounter_id" field.</summary>
+    public const int EncounterIdFieldNumber = 2;
+    private ulong encounterId_;
+    public ulong EncounterId {
+      get { return encounterId_; }
+      set {
+        encounterId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_id" field.</summary>
+    public const int PokemonIdFieldNumber = 3;
+    private global::AllEnum.PokemonId pokemonId_ = 0;
+    public global::AllEnum.PokemonId PokemonId {
+      get { return pokemonId_; }
+      set {
+        pokemonId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "expiration_timestamp_ms" field.</summary>
+    public const int ExpirationTimestampMsFieldNumber = 4;
+    private long expirationTimestampMs_;
+    /// <summary>
+    ///  After this timestamp, the pokemon will be gone.
+    /// </summary>
+    public long ExpirationTimestampMs {
+      get { return expirationTimestampMs_; }
+      set {
+        expirationTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "latitude" field.</summary>
+    public const int LatitudeFieldNumber = 5;
+    private double latitude_;
+    public double Latitude {
+      get { return latitude_; }
+      set {
+        latitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "longitude" field.</summary>
+    public const int LongitudeFieldNumber = 6;
+    private double longitude_;
+    public double Longitude {
+      get { return longitude_; }
+      set {
+        longitude_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as MapPokemon);
+    }
+
+    public bool Equals(MapPokemon other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (SpawnpointId != other.SpawnpointId) return false;
+      if (EncounterId != other.EncounterId) return false;
+      if (PokemonId != other.PokemonId) return false;
+      if (ExpirationTimestampMs != other.ExpirationTimestampMs) return false;
+      if (Latitude != other.Latitude) return false;
+      if (Longitude != other.Longitude) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (SpawnpointId.Length != 0) hash ^= SpawnpointId.GetHashCode();
+      if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
+      if (PokemonId != 0) hash ^= PokemonId.GetHashCode();
+      if (ExpirationTimestampMs != 0L) hash ^= ExpirationTimestampMs.GetHashCode();
+      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
+      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (SpawnpointId.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(SpawnpointId);
+      }
+      if (EncounterId != 0UL) {
+        output.WriteRawTag(17);
+        output.WriteFixed64(EncounterId);
+      }
+      if (PokemonId != 0) {
+        output.WriteRawTag(24);
+        output.WriteEnum((int) PokemonId);
+      }
+      if (ExpirationTimestampMs != 0L) {
+        output.WriteRawTag(32);
+        output.WriteInt64(ExpirationTimestampMs);
+      }
+      if (Latitude != 0D) {
+        output.WriteRawTag(41);
+        output.WriteDouble(Latitude);
+      }
+      if (Longitude != 0D) {
+        output.WriteRawTag(49);
+        output.WriteDouble(Longitude);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (SpawnpointId.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnpointId);
+      }
+      if (EncounterId != 0UL) {
+        size += 1 + 8;
+      }
+      if (PokemonId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PokemonId);
+      }
+      if (ExpirationTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpirationTimestampMs);
+      }
+      if (Latitude != 0D) {
+        size += 1 + 8;
+      }
+      if (Longitude != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(MapPokemon other) {
+      if (other == null) {
+        return;
+      }
+      if (other.SpawnpointId.Length != 0) {
+        SpawnpointId = other.SpawnpointId;
+      }
+      if (other.EncounterId != 0UL) {
+        EncounterId = other.EncounterId;
+      }
+      if (other.PokemonId != 0) {
+        PokemonId = other.PokemonId;
+      }
+      if (other.ExpirationTimestampMs != 0L) {
+        ExpirationTimestampMs = other.ExpirationTimestampMs;
+      }
+      if (other.Latitude != 0D) {
+        Latitude = other.Latitude;
+      }
+      if (other.Longitude != 0D) {
+        Longitude = other.Longitude;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            SpawnpointId = input.ReadString();
+            break;
+          }
+          case 17: {
+            EncounterId = input.ReadFixed64();
+            break;
+          }
+          case 24: {
+            pokemonId_ = (global::AllEnum.PokemonId) input.ReadEnum();
+            break;
+          }
+          case 32: {
+            ExpirationTimestampMs = input.ReadInt64();
+            break;
+          }
+          case 41: {
+            Latitude = input.ReadDouble();
+            break;
+          }
+          case 49: {
+            Longitude = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class NearbyPokemon : pb::IMessage<NearbyPokemon> {
+    private static readonly pb::MessageParser<NearbyPokemon> _parser = new pb::MessageParser<NearbyPokemon>(() => new NearbyPokemon());
+    public static pb::MessageParser<NearbyPokemon> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[33]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public NearbyPokemon() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public NearbyPokemon(NearbyPokemon other) : this() {
+      pokemonId_ = other.pokemonId_;
+      distanceInMeters_ = other.distanceInMeters_;
+      encounterId_ = other.encounterId_;
+    }
+
+    public NearbyPokemon Clone() {
+      return new NearbyPokemon(this);
+    }
+
+    /// <summary>Field number for the "pokemon_id" field.</summary>
+    public const int PokemonIdFieldNumber = 1;
+    private global::AllEnum.PokemonId pokemonId_ = 0;
+    public global::AllEnum.PokemonId PokemonId {
+      get { return pokemonId_; }
+      set {
+        pokemonId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "distance_in_meters" field.</summary>
+    public const int DistanceInMetersFieldNumber = 2;
+    private float distanceInMeters_;
+    public float DistanceInMeters {
+      get { return distanceInMeters_; }
+      set {
+        distanceInMeters_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "encounter_id" field.</summary>
+    public const int EncounterIdFieldNumber = 3;
+    private ulong encounterId_;
+    public ulong EncounterId {
+      get { return encounterId_; }
+      set {
+        encounterId_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as NearbyPokemon);
+    }
+
+    public bool Equals(NearbyPokemon other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (PokemonId != other.PokemonId) return false;
+      if (DistanceInMeters != other.DistanceInMeters) return false;
+      if (EncounterId != other.EncounterId) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (PokemonId != 0) hash ^= PokemonId.GetHashCode();
+      if (DistanceInMeters != 0F) hash ^= DistanceInMeters.GetHashCode();
+      if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (PokemonId != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) PokemonId);
+      }
+      if (DistanceInMeters != 0F) {
+        output.WriteRawTag(21);
+        output.WriteFloat(DistanceInMeters);
+      }
+      if (EncounterId != 0UL) {
+        output.WriteRawTag(25);
+        output.WriteFixed64(EncounterId);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (PokemonId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PokemonId);
+      }
+      if (DistanceInMeters != 0F) {
+        size += 1 + 4;
+      }
+      if (EncounterId != 0UL) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(NearbyPokemon other) {
+      if (other == null) {
+        return;
+      }
+      if (other.PokemonId != 0) {
+        PokemonId = other.PokemonId;
+      }
+      if (other.DistanceInMeters != 0F) {
+        DistanceInMeters = other.DistanceInMeters;
+      }
+      if (other.EncounterId != 0UL) {
+        EncounterId = other.EncounterId;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            pokemonId_ = (global::AllEnum.PokemonId) input.ReadEnum();
+            break;
+          }
+          case 21: {
+            DistanceInMeters = input.ReadFloat();
+            break;
+          }
+          case 25: {
+            EncounterId = input.ReadFixed64();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class DownloadSettingsResponse : pb::IMessage<DownloadSettingsResponse> {
+    private static readonly pb::MessageParser<DownloadSettingsResponse> _parser = new pb::MessageParser<DownloadSettingsResponse>(() => new DownloadSettingsResponse());
+    public static pb::MessageParser<DownloadSettingsResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[34]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public DownloadSettingsResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public DownloadSettingsResponse(DownloadSettingsResponse other) : this() {
+      error_ = other.error_;
+      hash_ = other.hash_;
+      Settings = other.settings_ != null ? other.Settings.Clone() : null;
+    }
+
+    public DownloadSettingsResponse Clone() {
+      return new DownloadSettingsResponse(this);
+    }
+
+    /// <summary>Field number for the "error" field.</summary>
+    public const int ErrorFieldNumber = 1;
+    private string error_ = "";
+    public string Error {
+      get { return error_; }
+      set {
+        error_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "hash" field.</summary>
+    public const int HashFieldNumber = 2;
+    private string hash_ = "";
+    public string Hash {
+      get { return hash_; }
+      set {
+        hash_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "settings" field.</summary>
+    public const int SettingsFieldNumber = 3;
+    private global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings settings_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings Settings {
+      get { return settings_; }
+      set {
+        settings_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as DownloadSettingsResponse);
+    }
+
+    public bool Equals(DownloadSettingsResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Error != other.Error) return false;
+      if (Hash != other.Hash) return false;
+      if (!object.Equals(Settings, other.Settings)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Error.Length != 0) hash ^= Error.GetHashCode();
+      if (Hash.Length != 0) hash ^= Hash.GetHashCode();
+      if (settings_ != null) hash ^= Settings.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Error.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(Error);
+      }
+      if (Hash.Length != 0) {
+        output.WriteRawTag(18);
+        output.WriteString(Hash);
+      }
+      if (settings_ != null) {
+        output.WriteRawTag(26);
+        output.WriteMessage(Settings);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Error.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Error);
+      }
+      if (Hash.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Hash);
+      }
+      if (settings_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Settings);
+      }
+      return size;
+    }
+
+    public void MergeFrom(DownloadSettingsResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Error.Length != 0) {
+        Error = other.Error;
+      }
+      if (other.Hash.Length != 0) {
+        Hash = other.Hash;
+      }
+      if (other.settings_ != null) {
+        if (settings_ == null) {
+          settings_ = new global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings();
+        }
+        Settings.MergeFrom(other.Settings);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            Error = input.ReadString();
+            break;
+          }
+          case 18: {
+            Hash = input.ReadString();
+            break;
+          }
+          case 26: {
+            if (settings_ == null) {
+              settings_ = new global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings();
+            }
+            input.ReadMessage(settings_);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class GlobalSettings : pb::IMessage<GlobalSettings> {
+    private static readonly pb::MessageParser<GlobalSettings> _parser = new pb::MessageParser<GlobalSettings>(() => new GlobalSettings());
+    public static pb::MessageParser<GlobalSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[35]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public GlobalSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public GlobalSettings(GlobalSettings other) : this() {
+      FortSettings = other.fortSettings_ != null ? other.FortSettings.Clone() : null;
+      MapSettings = other.mapSettings_ != null ? other.MapSettings.Clone() : null;
+      LevelSettings = other.levelSettings_ != null ? other.LevelSettings.Clone() : null;
+      InventorySettings = other.inventorySettings_ != null ? other.InventorySettings.Clone() : null;
+      minimumClientVersion_ = other.minimumClientVersion_;
+    }
+
+    public GlobalSettings Clone() {
+      return new GlobalSettings(this);
+    }
+
+    /// <summary>Field number for the "fort_settings" field.</summary>
+    public const int FortSettingsFieldNumber = 2;
+    private global::PokemonGo.RocketAPI.GeneratedCode.FortSettings fortSettings_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.FortSettings FortSettings {
+      get { return fortSettings_; }
+      set {
+        fortSettings_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "map_settings" field.</summary>
+    public const int MapSettingsFieldNumber = 3;
+    private global::PokemonGo.RocketAPI.GeneratedCode.MapSettings mapSettings_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.MapSettings MapSettings {
+      get { return mapSettings_; }
+      set {
+        mapSettings_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "level_settings" field.</summary>
+    public const int LevelSettingsFieldNumber = 4;
+    private global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings levelSettings_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings LevelSettings {
+      get { return levelSettings_; }
+      set {
+        levelSettings_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "inventory_settings" field.</summary>
+    public const int InventorySettingsFieldNumber = 5;
+    private global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings inventorySettings_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings InventorySettings {
+      get { return inventorySettings_; }
+      set {
+        inventorySettings_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "minimum_client_version" field.</summary>
+    public const int MinimumClientVersionFieldNumber = 6;
+    private string minimumClientVersion_ = "";
+    public string MinimumClientVersion {
+      get { return minimumClientVersion_; }
+      set {
+        minimumClientVersion_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as GlobalSettings);
+    }
+
+    public bool Equals(GlobalSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (!object.Equals(FortSettings, other.FortSettings)) return false;
+      if (!object.Equals(MapSettings, other.MapSettings)) return false;
+      if (!object.Equals(LevelSettings, other.LevelSettings)) return false;
+      if (!object.Equals(InventorySettings, other.InventorySettings)) return false;
+      if (MinimumClientVersion != other.MinimumClientVersion) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (fortSettings_ != null) hash ^= FortSettings.GetHashCode();
+      if (mapSettings_ != null) hash ^= MapSettings.GetHashCode();
+      if (levelSettings_ != null) hash ^= LevelSettings.GetHashCode();
+      if (inventorySettings_ != null) hash ^= InventorySettings.GetHashCode();
+      if (MinimumClientVersion.Length != 0) hash ^= MinimumClientVersion.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (fortSettings_ != null) {
+        output.WriteRawTag(18);
+        output.WriteMessage(FortSettings);
+      }
+      if (mapSettings_ != null) {
+        output.WriteRawTag(26);
+        output.WriteMessage(MapSettings);
+      }
+      if (levelSettings_ != null) {
+        output.WriteRawTag(34);
+        output.WriteMessage(LevelSettings);
+      }
+      if (inventorySettings_ != null) {
+        output.WriteRawTag(42);
+        output.WriteMessage(InventorySettings);
+      }
+      if (MinimumClientVersion.Length != 0) {
+        output.WriteRawTag(50);
+        output.WriteString(MinimumClientVersion);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (fortSettings_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FortSettings);
+      }
+      if (mapSettings_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MapSettings);
+      }
+      if (levelSettings_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LevelSettings);
+      }
+      if (inventorySettings_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventorySettings);
+      }
+      if (MinimumClientVersion.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(MinimumClientVersion);
+      }
+      return size;
+    }
+
+    public void MergeFrom(GlobalSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.fortSettings_ != null) {
+        if (fortSettings_ == null) {
+          fortSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortSettings();
+        }
+        FortSettings.MergeFrom(other.FortSettings);
+      }
+      if (other.mapSettings_ != null) {
+        if (mapSettings_ == null) {
+          mapSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapSettings();
+        }
+        MapSettings.MergeFrom(other.MapSettings);
+      }
+      if (other.levelSettings_ != null) {
+        if (levelSettings_ == null) {
+          levelSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings();
+        }
+        LevelSettings.MergeFrom(other.LevelSettings);
+      }
+      if (other.inventorySettings_ != null) {
+        if (inventorySettings_ == null) {
+          inventorySettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings();
+        }
+        InventorySettings.MergeFrom(other.InventorySettings);
+      }
+      if (other.MinimumClientVersion.Length != 0) {
+        MinimumClientVersion = other.MinimumClientVersion;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 18: {
+            if (fortSettings_ == null) {
+              fortSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortSettings();
+            }
+            input.ReadMessage(fortSettings_);
+            break;
+          }
+          case 26: {
+            if (mapSettings_ == null) {
+              mapSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapSettings();
+            }
+            input.ReadMessage(mapSettings_);
+            break;
+          }
+          case 34: {
+            if (levelSettings_ == null) {
+              levelSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings();
+            }
+            input.ReadMessage(levelSettings_);
+            break;
+          }
+          case 42: {
+            if (inventorySettings_ == null) {
+              inventorySettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings();
+            }
+            input.ReadMessage(inventorySettings_);
+            break;
+          }
+          case 50: {
+            MinimumClientVersion = input.ReadString();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class FortSettings : pb::IMessage<FortSettings> {
+    private static readonly pb::MessageParser<FortSettings> _parser = new pb::MessageParser<FortSettings>(() => new FortSettings());
+    public static pb::MessageParser<FortSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[36]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public FortSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public FortSettings(FortSettings other) : this() {
+      interactionRangeMeters_ = other.interactionRangeMeters_;
+      maxTotalDeployedPokemon_ = other.maxTotalDeployedPokemon_;
+      maxPlayerDeployedPokemon_ = other.maxPlayerDeployedPokemon_;
+      deployStaminaMultiplier_ = other.deployStaminaMultiplier_;
+      deployAttackMultiplier_ = other.deployAttackMultiplier_;
+      farInteractionRangeMeters_ = other.farInteractionRangeMeters_;
+    }
+
+    public FortSettings Clone() {
+      return new FortSettings(this);
+    }
+
+    /// <summary>Field number for the "interaction_range_meters" field.</summary>
+    public const int InteractionRangeMetersFieldNumber = 1;
+    private double interactionRangeMeters_;
+    public double InteractionRangeMeters {
+      get { return interactionRangeMeters_; }
+      set {
+        interactionRangeMeters_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "max_total_deployed_pokemon" field.</summary>
+    public const int MaxTotalDeployedPokemonFieldNumber = 2;
+    private int maxTotalDeployedPokemon_;
+    public int MaxTotalDeployedPokemon {
+      get { return maxTotalDeployedPokemon_; }
+      set {
+        maxTotalDeployedPokemon_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "max_player_deployed_pokemon" field.</summary>
+    public const int MaxPlayerDeployedPokemonFieldNumber = 3;
+    private int maxPlayerDeployedPokemon_;
+    public int MaxPlayerDeployedPokemon {
+      get { return maxPlayerDeployedPokemon_; }
+      set {
+        maxPlayerDeployedPokemon_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "deploy_stamina_multiplier" field.</summary>
+    public const int DeployStaminaMultiplierFieldNumber = 4;
+    private double deployStaminaMultiplier_;
+    public double DeployStaminaMultiplier {
+      get { return deployStaminaMultiplier_; }
+      set {
+        deployStaminaMultiplier_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "deploy_attack_multiplier" field.</summary>
+    public const int DeployAttackMultiplierFieldNumber = 5;
+    private double deployAttackMultiplier_;
+    public double DeployAttackMultiplier {
+      get { return deployAttackMultiplier_; }
+      set {
+        deployAttackMultiplier_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "far_interaction_range_meters" field.</summary>
+    public const int FarInteractionRangeMetersFieldNumber = 6;
+    private double farInteractionRangeMeters_;
+    public double FarInteractionRangeMeters {
+      get { return farInteractionRangeMeters_; }
+      set {
+        farInteractionRangeMeters_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as FortSettings);
+    }
+
+    public bool Equals(FortSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (InteractionRangeMeters != other.InteractionRangeMeters) return false;
+      if (MaxTotalDeployedPokemon != other.MaxTotalDeployedPokemon) return false;
+      if (MaxPlayerDeployedPokemon != other.MaxPlayerDeployedPokemon) return false;
+      if (DeployStaminaMultiplier != other.DeployStaminaMultiplier) return false;
+      if (DeployAttackMultiplier != other.DeployAttackMultiplier) return false;
+      if (FarInteractionRangeMeters != other.FarInteractionRangeMeters) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (InteractionRangeMeters != 0D) hash ^= InteractionRangeMeters.GetHashCode();
+      if (MaxTotalDeployedPokemon != 0) hash ^= MaxTotalDeployedPokemon.GetHashCode();
+      if (MaxPlayerDeployedPokemon != 0) hash ^= MaxPlayerDeployedPokemon.GetHashCode();
+      if (DeployStaminaMultiplier != 0D) hash ^= DeployStaminaMultiplier.GetHashCode();
+      if (DeployAttackMultiplier != 0D) hash ^= DeployAttackMultiplier.GetHashCode();
+      if (FarInteractionRangeMeters != 0D) hash ^= FarInteractionRangeMeters.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (InteractionRangeMeters != 0D) {
+        output.WriteRawTag(9);
+        output.WriteDouble(InteractionRangeMeters);
+      }
+      if (MaxTotalDeployedPokemon != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(MaxTotalDeployedPokemon);
+      }
+      if (MaxPlayerDeployedPokemon != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(MaxPlayerDeployedPokemon);
+      }
+      if (DeployStaminaMultiplier != 0D) {
+        output.WriteRawTag(33);
+        output.WriteDouble(DeployStaminaMultiplier);
+      }
+      if (DeployAttackMultiplier != 0D) {
+        output.WriteRawTag(41);
+        output.WriteDouble(DeployAttackMultiplier);
+      }
+      if (FarInteractionRangeMeters != 0D) {
+        output.WriteRawTag(49);
+        output.WriteDouble(FarInteractionRangeMeters);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (InteractionRangeMeters != 0D) {
+        size += 1 + 8;
+      }
+      if (MaxTotalDeployedPokemon != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxTotalDeployedPokemon);
+      }
+      if (MaxPlayerDeployedPokemon != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxPlayerDeployedPokemon);
+      }
+      if (DeployStaminaMultiplier != 0D) {
+        size += 1 + 8;
+      }
+      if (DeployAttackMultiplier != 0D) {
+        size += 1 + 8;
+      }
+      if (FarInteractionRangeMeters != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(FortSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.InteractionRangeMeters != 0D) {
+        InteractionRangeMeters = other.InteractionRangeMeters;
+      }
+      if (other.MaxTotalDeployedPokemon != 0) {
+        MaxTotalDeployedPokemon = other.MaxTotalDeployedPokemon;
+      }
+      if (other.MaxPlayerDeployedPokemon != 0) {
+        MaxPlayerDeployedPokemon = other.MaxPlayerDeployedPokemon;
+      }
+      if (other.DeployStaminaMultiplier != 0D) {
+        DeployStaminaMultiplier = other.DeployStaminaMultiplier;
+      }
+      if (other.DeployAttackMultiplier != 0D) {
+        DeployAttackMultiplier = other.DeployAttackMultiplier;
+      }
+      if (other.FarInteractionRangeMeters != 0D) {
+        FarInteractionRangeMeters = other.FarInteractionRangeMeters;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            InteractionRangeMeters = input.ReadDouble();
+            break;
+          }
+          case 16: {
+            MaxTotalDeployedPokemon = input.ReadInt32();
+            break;
+          }
+          case 24: {
+            MaxPlayerDeployedPokemon = input.ReadInt32();
+            break;
+          }
+          case 33: {
+            DeployStaminaMultiplier = input.ReadDouble();
+            break;
+          }
+          case 41: {
+            DeployAttackMultiplier = input.ReadDouble();
+            break;
+          }
+          case 49: {
+            FarInteractionRangeMeters = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class MapSettings : pb::IMessage<MapSettings> {
+    private static readonly pb::MessageParser<MapSettings> _parser = new pb::MessageParser<MapSettings>(() => new MapSettings());
+    public static pb::MessageParser<MapSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[37]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public MapSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public MapSettings(MapSettings other) : this() {
+      pokemonVisibleRange_ = other.pokemonVisibleRange_;
+      pokeNavRangeMeters_ = other.pokeNavRangeMeters_;
+      encounterRangeMeters_ = other.encounterRangeMeters_;
+      getMapObjectsMinRefreshSeconds_ = other.getMapObjectsMinRefreshSeconds_;
+      getMapObjectsMaxRefreshSeconds_ = other.getMapObjectsMaxRefreshSeconds_;
+      getMapObjectsMinDistanceMeters_ = other.getMapObjectsMinDistanceMeters_;
+      googleMapsApiKey_ = other.googleMapsApiKey_;
+    }
+
+    public MapSettings Clone() {
+      return new MapSettings(this);
+    }
+
+    /// <summary>Field number for the "pokemon_visible_range" field.</summary>
+    public const int PokemonVisibleRangeFieldNumber = 1;
+    private double pokemonVisibleRange_;
+    public double PokemonVisibleRange {
+      get { return pokemonVisibleRange_; }
+      set {
+        pokemonVisibleRange_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "poke_nav_range_meters" field.</summary>
+    public const int PokeNavRangeMetersFieldNumber = 2;
+    private double pokeNavRangeMeters_;
+    public double PokeNavRangeMeters {
+      get { return pokeNavRangeMeters_; }
+      set {
+        pokeNavRangeMeters_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "encounter_range_meters" field.</summary>
+    public const int EncounterRangeMetersFieldNumber = 3;
+    private double encounterRangeMeters_;
+    public double EncounterRangeMeters {
+      get { return encounterRangeMeters_; }
+      set {
+        encounterRangeMeters_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "get_map_objects_min_refresh_seconds" field.</summary>
+    public const int GetMapObjectsMinRefreshSecondsFieldNumber = 4;
+    private float getMapObjectsMinRefreshSeconds_;
+    public float GetMapObjectsMinRefreshSeconds {
+      get { return getMapObjectsMinRefreshSeconds_; }
+      set {
+        getMapObjectsMinRefreshSeconds_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "get_map_objects_max_refresh_seconds" field.</summary>
+    public const int GetMapObjectsMaxRefreshSecondsFieldNumber = 5;
+    private float getMapObjectsMaxRefreshSeconds_;
+    public float GetMapObjectsMaxRefreshSeconds {
+      get { return getMapObjectsMaxRefreshSeconds_; }
+      set {
+        getMapObjectsMaxRefreshSeconds_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "get_map_objects_min_distance_meters" field.</summary>
+    public const int GetMapObjectsMinDistanceMetersFieldNumber = 6;
+    private float getMapObjectsMinDistanceMeters_;
+    public float GetMapObjectsMinDistanceMeters {
+      get { return getMapObjectsMinDistanceMeters_; }
+      set {
+        getMapObjectsMinDistanceMeters_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "google_maps_api_key" field.</summary>
+    public const int GoogleMapsApiKeyFieldNumber = 7;
+    private string googleMapsApiKey_ = "";
+    public string GoogleMapsApiKey {
+      get { return googleMapsApiKey_; }
+      set {
+        googleMapsApiKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as MapSettings);
+    }
+
+    public bool Equals(MapSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (PokemonVisibleRange != other.PokemonVisibleRange) return false;
+      if (PokeNavRangeMeters != other.PokeNavRangeMeters) return false;
+      if (EncounterRangeMeters != other.EncounterRangeMeters) return false;
+      if (GetMapObjectsMinRefreshSeconds != other.GetMapObjectsMinRefreshSeconds) return false;
+      if (GetMapObjectsMaxRefreshSeconds != other.GetMapObjectsMaxRefreshSeconds) return false;
+      if (GetMapObjectsMinDistanceMeters != other.GetMapObjectsMinDistanceMeters) return false;
+      if (GoogleMapsApiKey != other.GoogleMapsApiKey) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (PokemonVisibleRange != 0D) hash ^= PokemonVisibleRange.GetHashCode();
+      if (PokeNavRangeMeters != 0D) hash ^= PokeNavRangeMeters.GetHashCode();
+      if (EncounterRangeMeters != 0D) hash ^= EncounterRangeMeters.GetHashCode();
+      if (GetMapObjectsMinRefreshSeconds != 0F) hash ^= GetMapObjectsMinRefreshSeconds.GetHashCode();
+      if (GetMapObjectsMaxRefreshSeconds != 0F) hash ^= GetMapObjectsMaxRefreshSeconds.GetHashCode();
+      if (GetMapObjectsMinDistanceMeters != 0F) hash ^= GetMapObjectsMinDistanceMeters.GetHashCode();
+      if (GoogleMapsApiKey.Length != 0) hash ^= GoogleMapsApiKey.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (PokemonVisibleRange != 0D) {
+        output.WriteRawTag(9);
+        output.WriteDouble(PokemonVisibleRange);
+      }
+      if (PokeNavRangeMeters != 0D) {
+        output.WriteRawTag(17);
+        output.WriteDouble(PokeNavRangeMeters);
+      }
+      if (EncounterRangeMeters != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(EncounterRangeMeters);
+      }
+      if (GetMapObjectsMinRefreshSeconds != 0F) {
+        output.WriteRawTag(37);
+        output.WriteFloat(GetMapObjectsMinRefreshSeconds);
+      }
+      if (GetMapObjectsMaxRefreshSeconds != 0F) {
+        output.WriteRawTag(45);
+        output.WriteFloat(GetMapObjectsMaxRefreshSeconds);
+      }
+      if (GetMapObjectsMinDistanceMeters != 0F) {
+        output.WriteRawTag(53);
+        output.WriteFloat(GetMapObjectsMinDistanceMeters);
+      }
+      if (GoogleMapsApiKey.Length != 0) {
+        output.WriteRawTag(58);
+        output.WriteString(GoogleMapsApiKey);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (PokemonVisibleRange != 0D) {
+        size += 1 + 8;
+      }
+      if (PokeNavRangeMeters != 0D) {
+        size += 1 + 8;
+      }
+      if (EncounterRangeMeters != 0D) {
+        size += 1 + 8;
+      }
+      if (GetMapObjectsMinRefreshSeconds != 0F) {
+        size += 1 + 4;
+      }
+      if (GetMapObjectsMaxRefreshSeconds != 0F) {
+        size += 1 + 4;
+      }
+      if (GetMapObjectsMinDistanceMeters != 0F) {
+        size += 1 + 4;
+      }
+      if (GoogleMapsApiKey.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(GoogleMapsApiKey);
+      }
+      return size;
+    }
+
+    public void MergeFrom(MapSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.PokemonVisibleRange != 0D) {
+        PokemonVisibleRange = other.PokemonVisibleRange;
+      }
+      if (other.PokeNavRangeMeters != 0D) {
+        PokeNavRangeMeters = other.PokeNavRangeMeters;
+      }
+      if (other.EncounterRangeMeters != 0D) {
+        EncounterRangeMeters = other.EncounterRangeMeters;
+      }
+      if (other.GetMapObjectsMinRefreshSeconds != 0F) {
+        GetMapObjectsMinRefreshSeconds = other.GetMapObjectsMinRefreshSeconds;
+      }
+      if (other.GetMapObjectsMaxRefreshSeconds != 0F) {
+        GetMapObjectsMaxRefreshSeconds = other.GetMapObjectsMaxRefreshSeconds;
+      }
+      if (other.GetMapObjectsMinDistanceMeters != 0F) {
+        GetMapObjectsMinDistanceMeters = other.GetMapObjectsMinDistanceMeters;
+      }
+      if (other.GoogleMapsApiKey.Length != 0) {
+        GoogleMapsApiKey = other.GoogleMapsApiKey;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            PokemonVisibleRange = input.ReadDouble();
+            break;
+          }
+          case 17: {
+            PokeNavRangeMeters = input.ReadDouble();
+            break;
+          }
+          case 25: {
+            EncounterRangeMeters = input.ReadDouble();
+            break;
+          }
+          case 37: {
+            GetMapObjectsMinRefreshSeconds = input.ReadFloat();
+            break;
+          }
+          case 45: {
+            GetMapObjectsMaxRefreshSeconds = input.ReadFloat();
+            break;
+          }
+          case 53: {
+            GetMapObjectsMinDistanceMeters = input.ReadFloat();
+            break;
+          }
+          case 58: {
+            GoogleMapsApiKey = input.ReadString();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class LevelSettings : pb::IMessage<LevelSettings> {
+    private static readonly pb::MessageParser<LevelSettings> _parser = new pb::MessageParser<LevelSettings>(() => new LevelSettings());
+    public static pb::MessageParser<LevelSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[38]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public LevelSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public LevelSettings(LevelSettings other) : this() {
+      trainerCpModifier_ = other.trainerCpModifier_;
+      trainerDifficultyModifier_ = other.trainerDifficultyModifier_;
+    }
+
+    public LevelSettings Clone() {
+      return new LevelSettings(this);
+    }
+
+    /// <summary>Field number for the "trainer_cp_modifier" field.</summary>
+    public const int TrainerCpModifierFieldNumber = 2;
+    private double trainerCpModifier_;
+    public double TrainerCpModifier {
+      get { return trainerCpModifier_; }
+      set {
+        trainerCpModifier_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "trainer_difficulty_modifier" field.</summary>
+    public const int TrainerDifficultyModifierFieldNumber = 3;
+    private double trainerDifficultyModifier_;
+    public double TrainerDifficultyModifier {
+      get { return trainerDifficultyModifier_; }
+      set {
+        trainerDifficultyModifier_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as LevelSettings);
+    }
+
+    public bool Equals(LevelSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (TrainerCpModifier != other.TrainerCpModifier) return false;
+      if (TrainerDifficultyModifier != other.TrainerDifficultyModifier) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (TrainerCpModifier != 0D) hash ^= TrainerCpModifier.GetHashCode();
+      if (TrainerDifficultyModifier != 0D) hash ^= TrainerDifficultyModifier.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (TrainerCpModifier != 0D) {
+        output.WriteRawTag(17);
+        output.WriteDouble(TrainerCpModifier);
+      }
+      if (TrainerDifficultyModifier != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(TrainerDifficultyModifier);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (TrainerCpModifier != 0D) {
+        size += 1 + 8;
+      }
+      if (TrainerDifficultyModifier != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(LevelSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.TrainerCpModifier != 0D) {
+        TrainerCpModifier = other.TrainerCpModifier;
+      }
+      if (other.TrainerDifficultyModifier != 0D) {
+        TrainerDifficultyModifier = other.TrainerDifficultyModifier;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 17: {
+            TrainerCpModifier = input.ReadDouble();
+            break;
+          }
+          case 25: {
+            TrainerDifficultyModifier = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class InventorySettings : pb::IMessage<InventorySettings> {
+    private static readonly pb::MessageParser<InventorySettings> _parser = new pb::MessageParser<InventorySettings>(() => new InventorySettings());
+    public static pb::MessageParser<InventorySettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[39]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public InventorySettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public InventorySettings(InventorySettings other) : this() {
+      maxPokemon_ = other.maxPokemon_;
+      maxBagItems_ = other.maxBagItems_;
+      basePokemon_ = other.basePokemon_;
+      baseBagItems_ = other.baseBagItems_;
+      baseEggs_ = other.baseEggs_;
+    }
+
+    public InventorySettings Clone() {
+      return new InventorySettings(this);
+    }
+
+    /// <summary>Field number for the "max_pokemon" field.</summary>
+    public const int MaxPokemonFieldNumber = 1;
+    private int maxPokemon_;
+    public int MaxPokemon {
+      get { return maxPokemon_; }
+      set {
+        maxPokemon_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "max_bag_items" field.</summary>
+    public const int MaxBagItemsFieldNumber = 2;
+    private int maxBagItems_;
+    public int MaxBagItems {
+      get { return maxBagItems_; }
+      set {
+        maxBagItems_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "base_pokemon" field.</summary>
+    public const int BasePokemonFieldNumber = 3;
+    private int basePokemon_;
+    public int BasePokemon {
+      get { return basePokemon_; }
+      set {
+        basePokemon_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "base_bag_items" field.</summary>
+    public const int BaseBagItemsFieldNumber = 4;
+    private int baseBagItems_;
+    public int BaseBagItems {
+      get { return baseBagItems_; }
+      set {
+        baseBagItems_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "base_eggs" field.</summary>
+    public const int BaseEggsFieldNumber = 5;
+    private int baseEggs_;
+    public int BaseEggs {
+      get { return baseEggs_; }
+      set {
+        baseEggs_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as InventorySettings);
+    }
+
+    public bool Equals(InventorySettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (MaxPokemon != other.MaxPokemon) return false;
+      if (MaxBagItems != other.MaxBagItems) return false;
+      if (BasePokemon != other.BasePokemon) return false;
+      if (BaseBagItems != other.BaseBagItems) return false;
+      if (BaseEggs != other.BaseEggs) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (MaxPokemon != 0) hash ^= MaxPokemon.GetHashCode();
+      if (MaxBagItems != 0) hash ^= MaxBagItems.GetHashCode();
+      if (BasePokemon != 0) hash ^= BasePokemon.GetHashCode();
+      if (BaseBagItems != 0) hash ^= BaseBagItems.GetHashCode();
+      if (BaseEggs != 0) hash ^= BaseEggs.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (MaxPokemon != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(MaxPokemon);
+      }
+      if (MaxBagItems != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(MaxBagItems);
+      }
+      if (BasePokemon != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(BasePokemon);
+      }
+      if (BaseBagItems != 0) {
+        output.WriteRawTag(32);
+        output.WriteInt32(BaseBagItems);
+      }
+      if (BaseEggs != 0) {
+        output.WriteRawTag(40);
+        output.WriteInt32(BaseEggs);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (MaxPokemon != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxPokemon);
+      }
+      if (MaxBagItems != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxBagItems);
+      }
+      if (BasePokemon != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BasePokemon);
+      }
+      if (BaseBagItems != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseBagItems);
+      }
+      if (BaseEggs != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseEggs);
+      }
+      return size;
+    }
+
+    public void MergeFrom(InventorySettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.MaxPokemon != 0) {
+        MaxPokemon = other.MaxPokemon;
+      }
+      if (other.MaxBagItems != 0) {
+        MaxBagItems = other.MaxBagItems;
+      }
+      if (other.BasePokemon != 0) {
+        BasePokemon = other.BasePokemon;
+      }
+      if (other.BaseBagItems != 0) {
+        BaseBagItems = other.BaseBagItems;
+      }
+      if (other.BaseEggs != 0) {
+        BaseEggs = other.BaseEggs;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            MaxPokemon = input.ReadInt32();
+            break;
+          }
+          case 16: {
+            MaxBagItems = input.ReadInt32();
+            break;
+          }
+          case 24: {
+            BasePokemon = input.ReadInt32();
+            break;
+          }
+          case 32: {
+            BaseBagItems = input.ReadInt32();
+            break;
+          }
+          case 40: {
+            BaseEggs = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PlayerUpdateRequest : pb::IMessage<PlayerUpdateRequest> {
+    private static readonly pb::MessageParser<PlayerUpdateRequest> _parser = new pb::MessageParser<PlayerUpdateRequest>(() => new PlayerUpdateRequest());
+    public static pb::MessageParser<PlayerUpdateRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[40]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PlayerUpdateRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PlayerUpdateRequest(PlayerUpdateRequest other) : this() {
+      latitude_ = other.latitude_;
+      longitude_ = other.longitude_;
+    }
+
+    public PlayerUpdateRequest Clone() {
+      return new PlayerUpdateRequest(this);
+    }
+
+    /// <summary>Field number for the "latitude" field.</summary>
+    public const int LatitudeFieldNumber = 1;
+    private double latitude_;
+    public double Latitude {
+      get { return latitude_; }
+      set {
+        latitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "longitude" field.</summary>
+    public const int LongitudeFieldNumber = 2;
+    private double longitude_;
+    public double Longitude {
+      get { return longitude_; }
+      set {
+        longitude_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PlayerUpdateRequest);
+    }
+
+    public bool Equals(PlayerUpdateRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Latitude != other.Latitude) return false;
+      if (Longitude != other.Longitude) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
+      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Latitude != 0D) {
+        output.WriteRawTag(9);
+        output.WriteDouble(Latitude);
+      }
+      if (Longitude != 0D) {
+        output.WriteRawTag(17);
+        output.WriteDouble(Longitude);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Latitude != 0D) {
+        size += 1 + 8;
+      }
+      if (Longitude != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(PlayerUpdateRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Latitude != 0D) {
+        Latitude = other.Latitude;
+      }
+      if (other.Longitude != 0D) {
+        Longitude = other.Longitude;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            Latitude = input.ReadDouble();
+            break;
+          }
+          case 17: {
+            Longitude = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PlayerUpdateResponse : pb::IMessage<PlayerUpdateResponse> {
+    private static readonly pb::MessageParser<PlayerUpdateResponse> _parser = new pb::MessageParser<PlayerUpdateResponse>(() => new PlayerUpdateResponse());
+    public static pb::MessageParser<PlayerUpdateResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[41]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PlayerUpdateResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PlayerUpdateResponse(PlayerUpdateResponse other) : this() {
+      wildPokemons_ = other.wildPokemons_.Clone();
+      forts_ = other.forts_.Clone();
+      fortsNearby_ = other.fortsNearby_;
+    }
+
+    public PlayerUpdateResponse Clone() {
+      return new PlayerUpdateResponse(this);
+    }
+
+    /// <summary>Field number for the "wild_pokemons" field.</summary>
+    public const int WildPokemonsFieldNumber = 1;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon> _repeated_wildPokemons_codec
+        = pb::FieldCodec.ForMessage(10, global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon> wildPokemons_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon> WildPokemons {
+      get { return wildPokemons_; }
+    }
+
+    /// <summary>Field number for the "forts" field.</summary>
+    public const int FortsFieldNumber = 2;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortData> _repeated_forts_codec
+        = pb::FieldCodec.ForMessage(18, global::PokemonGo.RocketAPI.GeneratedCode.FortData.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData> forts_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData> Forts {
+      get { return forts_; }
+    }
+
+    /// <summary>Field number for the "forts_nearby" field.</summary>
+    public const int FortsNearbyFieldNumber = 3;
+    private int fortsNearby_;
+    public int FortsNearby {
+      get { return fortsNearby_; }
+      set {
+        fortsNearby_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PlayerUpdateResponse);
+    }
+
+    public bool Equals(PlayerUpdateResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!wildPokemons_.Equals(other.wildPokemons_)) return false;
+      if(!forts_.Equals(other.forts_)) return false;
+      if (FortsNearby != other.FortsNearby) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= wildPokemons_.GetHashCode();
+      hash ^= forts_.GetHashCode();
+      if (FortsNearby != 0) hash ^= FortsNearby.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      wildPokemons_.WriteTo(output, _repeated_wildPokemons_codec);
+      forts_.WriteTo(output, _repeated_forts_codec);
+      if (FortsNearby != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(FortsNearby);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      size += wildPokemons_.CalculateSize(_repeated_wildPokemons_codec);
+      size += forts_.CalculateSize(_repeated_forts_codec);
+      if (FortsNearby != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FortsNearby);
+      }
+      return size;
+    }
+
+    public void MergeFrom(PlayerUpdateResponse other) {
+      if (other == null) {
+        return;
+      }
+      wildPokemons_.Add(other.wildPokemons_);
+      forts_.Add(other.forts_);
+      if (other.FortsNearby != 0) {
+        FortsNearby = other.FortsNearby;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            wildPokemons_.AddEntriesFrom(input, _repeated_wildPokemons_codec);
+            break;
+          }
+          case 18: {
+            forts_.AddEntriesFrom(input, _repeated_forts_codec);
+            break;
+          }
+          case 24: {
+            FortsNearby = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  /// <summary>
+  ///  No message needed.
+  /// </summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class DownloadItemTemplatesRequest : pb::IMessage<DownloadItemTemplatesRequest> {
+    private static readonly pb::MessageParser<DownloadItemTemplatesRequest> _parser = new pb::MessageParser<DownloadItemTemplatesRequest>(() => new DownloadItemTemplatesRequest());
+    public static pb::MessageParser<DownloadItemTemplatesRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[42]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public DownloadItemTemplatesRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public DownloadItemTemplatesRequest(DownloadItemTemplatesRequest other) : this() {
+    }
+
+    public DownloadItemTemplatesRequest Clone() {
+      return new DownloadItemTemplatesRequest(this);
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as DownloadItemTemplatesRequest);
+    }
+
+    public bool Equals(DownloadItemTemplatesRequest 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(DownloadItemTemplatesRequest other) {
+      if (other == null) {
+        return;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class DownloadItemTemplatesResponse : pb::IMessage<DownloadItemTemplatesResponse> {
+    private static readonly pb::MessageParser<DownloadItemTemplatesResponse> _parser = new pb::MessageParser<DownloadItemTemplatesResponse>(() => new DownloadItemTemplatesResponse());
+    public static pb::MessageParser<DownloadItemTemplatesResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[43]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public DownloadItemTemplatesResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public DownloadItemTemplatesResponse(DownloadItemTemplatesResponse other) : this() {
+      success_ = other.success_;
+      itemTemplates_ = other.itemTemplates_.Clone();
+      timestampMs_ = other.timestampMs_;
+    }
+
+    public DownloadItemTemplatesResponse Clone() {
+      return new DownloadItemTemplatesResponse(this);
+    }
+
+    /// <summary>Field number for the "success" field.</summary>
+    public const int SuccessFieldNumber = 1;
+    private bool success_;
+    public bool Success {
+      get { return success_; }
+      set {
+        success_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "item_templates" field.</summary>
+    public const int ItemTemplatesFieldNumber = 2;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate> _repeated_itemTemplates_codec
+        = pb::FieldCodec.ForMessage(18, global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate> itemTemplates_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate> ItemTemplates {
+      get { return itemTemplates_; }
+    }
+
+    /// <summary>Field number for the "timestamp_ms" field.</summary>
+    public const int TimestampMsFieldNumber = 3;
+    private ulong timestampMs_;
+    public ulong TimestampMs {
+      get { return timestampMs_; }
+      set {
+        timestampMs_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as DownloadItemTemplatesResponse);
+    }
+
+    public bool Equals(DownloadItemTemplatesResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Success != other.Success) return false;
+      if(!itemTemplates_.Equals(other.itemTemplates_)) return false;
+      if (TimestampMs != other.TimestampMs) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Success != false) hash ^= Success.GetHashCode();
+      hash ^= itemTemplates_.GetHashCode();
+      if (TimestampMs != 0UL) hash ^= TimestampMs.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Success != false) {
+        output.WriteRawTag(8);
+        output.WriteBool(Success);
+      }
+      itemTemplates_.WriteTo(output, _repeated_itemTemplates_codec);
+      if (TimestampMs != 0UL) {
+        output.WriteRawTag(24);
+        output.WriteUInt64(TimestampMs);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Success != false) {
+        size += 1 + 1;
+      }
+      size += itemTemplates_.CalculateSize(_repeated_itemTemplates_codec);
+      if (TimestampMs != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(TimestampMs);
+      }
+      return size;
+    }
+
+    public void MergeFrom(DownloadItemTemplatesResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Success != false) {
+        Success = other.Success;
+      }
+      itemTemplates_.Add(other.itemTemplates_);
+      if (other.TimestampMs != 0UL) {
+        TimestampMs = other.TimestampMs;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Success = input.ReadBool();
+            break;
+          }
+          case 18: {
+            itemTemplates_.AddEntriesFrom(input, _repeated_itemTemplates_codec);
+            break;
+          }
+          case 24: {
+            TimestampMs = input.ReadUInt64();
+            break;
+          }
+        }
+      }
+    }
+
+    #region Nested types
+    /// <summary>Container for nested types declared in the DownloadItemTemplatesResponse message type.</summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    public static partial class Types {
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class ItemTemplate : pb::IMessage<ItemTemplate> {
+        private static readonly pb::MessageParser<ItemTemplate> _parser = new pb::MessageParser<ItemTemplate>(() => new ItemTemplate());
+        public static pb::MessageParser<ItemTemplate> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Descriptor.NestedTypes[0]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public ItemTemplate() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public ItemTemplate(ItemTemplate other) : this() {
+          templateId_ = other.templateId_;
+          PokemonSettings = other.pokemonSettings_ != null ? other.PokemonSettings.Clone() : null;
+          ItemSettings = other.itemSettings_ != null ? other.ItemSettings.Clone() : null;
+          MoveSettings = other.moveSettings_ != null ? other.MoveSettings.Clone() : null;
+          MoveSequenceSettings = other.moveSequenceSettings_ != null ? other.MoveSequenceSettings.Clone() : null;
+          TypeEffective = other.typeEffective_ != null ? other.TypeEffective.Clone() : null;
+          BadgeSettings = other.badgeSettings_ != null ? other.BadgeSettings.Clone() : null;
+          Camera = other.camera_ != null ? other.Camera.Clone() : null;
+          PlayerLevel = other.playerLevel_ != null ? other.PlayerLevel.Clone() : null;
+          GymLevel = other.gymLevel_ != null ? other.GymLevel.Clone() : null;
+          BattleSettings = other.battleSettings_ != null ? other.BattleSettings.Clone() : null;
+          EncounterSettings = other.encounterSettings_ != null ? other.EncounterSettings.Clone() : null;
+          IapItemDisplay = other.iapItemDisplay_ != null ? other.IapItemDisplay.Clone() : null;
+          IapSettings = other.iapSettings_ != null ? other.IapSettings.Clone() : null;
+          PokemonUpgrades = other.pokemonUpgrades_ != null ? other.PokemonUpgrades.Clone() : null;
+          EquippedBadges = other.equippedBadges_ != null ? other.EquippedBadges.Clone() : null;
+        }
+
+        public ItemTemplate Clone() {
+          return new ItemTemplate(this);
+        }
+
+        /// <summary>Field number for the "template_id" field.</summary>
+        public const int TemplateIdFieldNumber = 1;
+        private string templateId_ = "";
+        public string TemplateId {
+          get { return templateId_; }
+          set {
+            templateId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+          }
+        }
+
+        /// <summary>Field number for the "pokemon_settings" field.</summary>
+        public const int PokemonSettingsFieldNumber = 2;
+        private global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings pokemonSettings_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings PokemonSettings {
+          get { return pokemonSettings_; }
+          set {
+            pokemonSettings_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "item_settings" field.</summary>
+        public const int ItemSettingsFieldNumber = 3;
+        private global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings itemSettings_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings ItemSettings {
+          get { return itemSettings_; }
+          set {
+            itemSettings_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "move_settings" field.</summary>
+        public const int MoveSettingsFieldNumber = 4;
+        private global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings moveSettings_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings MoveSettings {
+          get { return moveSettings_; }
+          set {
+            moveSettings_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "move_sequence_settings" field.</summary>
+        public const int MoveSequenceSettingsFieldNumber = 5;
+        private global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings moveSequenceSettings_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings MoveSequenceSettings {
+          get { return moveSequenceSettings_; }
+          set {
+            moveSequenceSettings_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "type_effective" field.</summary>
+        public const int TypeEffectiveFieldNumber = 8;
+        private global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings typeEffective_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings TypeEffective {
+          get { return typeEffective_; }
+          set {
+            typeEffective_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "badge_settings" field.</summary>
+        public const int BadgeSettingsFieldNumber = 10;
+        private global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings badgeSettings_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings BadgeSettings {
+          get { return badgeSettings_; }
+          set {
+            badgeSettings_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "camera" field.</summary>
+        public const int CameraFieldNumber = 11;
+        private global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings camera_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings Camera {
+          get { return camera_; }
+          set {
+            camera_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "player_level" field.</summary>
+        public const int PlayerLevelFieldNumber = 12;
+        private global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings playerLevel_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings PlayerLevel {
+          get { return playerLevel_; }
+          set {
+            playerLevel_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "gym_level" field.</summary>
+        public const int GymLevelFieldNumber = 13;
+        private global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings gymLevel_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings GymLevel {
+          get { return gymLevel_; }
+          set {
+            gymLevel_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "battle_settings" field.</summary>
+        public const int BattleSettingsFieldNumber = 14;
+        private global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings battleSettings_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings BattleSettings {
+          get { return battleSettings_; }
+          set {
+            battleSettings_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "encounter_settings" field.</summary>
+        public const int EncounterSettingsFieldNumber = 15;
+        private global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings encounterSettings_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings EncounterSettings {
+          get { return encounterSettings_; }
+          set {
+            encounterSettings_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "iap_item_display" field.</summary>
+        public const int IapItemDisplayFieldNumber = 16;
+        private global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay iapItemDisplay_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay IapItemDisplay {
+          get { return iapItemDisplay_; }
+          set {
+            iapItemDisplay_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "iap_settings" field.</summary>
+        public const int IapSettingsFieldNumber = 17;
+        private global::PokemonGo.RocketAPI.GeneratedCode.IapSettings iapSettings_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.IapSettings IapSettings {
+          get { return iapSettings_; }
+          set {
+            iapSettings_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "pokemon_upgrades" field.</summary>
+        public const int PokemonUpgradesFieldNumber = 18;
+        private global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings pokemonUpgrades_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings PokemonUpgrades {
+          get { return pokemonUpgrades_; }
+          set {
+            pokemonUpgrades_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "equipped_badges" field.</summary>
+        public const int EquippedBadgesFieldNumber = 19;
+        private global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings equippedBadges_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings EquippedBadges {
+          get { return equippedBadges_; }
+          set {
+            equippedBadges_ = value;
+          }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as ItemTemplate);
+        }
+
+        public bool Equals(ItemTemplate other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (TemplateId != other.TemplateId) return false;
+          if (!object.Equals(PokemonSettings, other.PokemonSettings)) return false;
+          if (!object.Equals(ItemSettings, other.ItemSettings)) return false;
+          if (!object.Equals(MoveSettings, other.MoveSettings)) return false;
+          if (!object.Equals(MoveSequenceSettings, other.MoveSequenceSettings)) return false;
+          if (!object.Equals(TypeEffective, other.TypeEffective)) return false;
+          if (!object.Equals(BadgeSettings, other.BadgeSettings)) return false;
+          if (!object.Equals(Camera, other.Camera)) return false;
+          if (!object.Equals(PlayerLevel, other.PlayerLevel)) return false;
+          if (!object.Equals(GymLevel, other.GymLevel)) return false;
+          if (!object.Equals(BattleSettings, other.BattleSettings)) return false;
+          if (!object.Equals(EncounterSettings, other.EncounterSettings)) return false;
+          if (!object.Equals(IapItemDisplay, other.IapItemDisplay)) return false;
+          if (!object.Equals(IapSettings, other.IapSettings)) return false;
+          if (!object.Equals(PokemonUpgrades, other.PokemonUpgrades)) return false;
+          if (!object.Equals(EquippedBadges, other.EquippedBadges)) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (TemplateId.Length != 0) hash ^= TemplateId.GetHashCode();
+          if (pokemonSettings_ != null) hash ^= PokemonSettings.GetHashCode();
+          if (itemSettings_ != null) hash ^= ItemSettings.GetHashCode();
+          if (moveSettings_ != null) hash ^= MoveSettings.GetHashCode();
+          if (moveSequenceSettings_ != null) hash ^= MoveSequenceSettings.GetHashCode();
+          if (typeEffective_ != null) hash ^= TypeEffective.GetHashCode();
+          if (badgeSettings_ != null) hash ^= BadgeSettings.GetHashCode();
+          if (camera_ != null) hash ^= Camera.GetHashCode();
+          if (playerLevel_ != null) hash ^= PlayerLevel.GetHashCode();
+          if (gymLevel_ != null) hash ^= GymLevel.GetHashCode();
+          if (battleSettings_ != null) hash ^= BattleSettings.GetHashCode();
+          if (encounterSettings_ != null) hash ^= EncounterSettings.GetHashCode();
+          if (iapItemDisplay_ != null) hash ^= IapItemDisplay.GetHashCode();
+          if (iapSettings_ != null) hash ^= IapSettings.GetHashCode();
+          if (pokemonUpgrades_ != null) hash ^= PokemonUpgrades.GetHashCode();
+          if (equippedBadges_ != null) hash ^= EquippedBadges.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (TemplateId.Length != 0) {
+            output.WriteRawTag(10);
+            output.WriteString(TemplateId);
+          }
+          if (pokemonSettings_ != null) {
+            output.WriteRawTag(18);
+            output.WriteMessage(PokemonSettings);
+          }
+          if (itemSettings_ != null) {
+            output.WriteRawTag(26);
+            output.WriteMessage(ItemSettings);
+          }
+          if (moveSettings_ != null) {
+            output.WriteRawTag(34);
+            output.WriteMessage(MoveSettings);
+          }
+          if (moveSequenceSettings_ != null) {
+            output.WriteRawTag(42);
+            output.WriteMessage(MoveSequenceSettings);
+          }
+          if (typeEffective_ != null) {
+            output.WriteRawTag(66);
+            output.WriteMessage(TypeEffective);
+          }
+          if (badgeSettings_ != null) {
+            output.WriteRawTag(82);
+            output.WriteMessage(BadgeSettings);
+          }
+          if (camera_ != null) {
+            output.WriteRawTag(90);
+            output.WriteMessage(Camera);
+          }
+          if (playerLevel_ != null) {
+            output.WriteRawTag(98);
+            output.WriteMessage(PlayerLevel);
+          }
+          if (gymLevel_ != null) {
+            output.WriteRawTag(106);
+            output.WriteMessage(GymLevel);
+          }
+          if (battleSettings_ != null) {
+            output.WriteRawTag(114);
+            output.WriteMessage(BattleSettings);
+          }
+          if (encounterSettings_ != null) {
+            output.WriteRawTag(122);
+            output.WriteMessage(EncounterSettings);
+          }
+          if (iapItemDisplay_ != null) {
+            output.WriteRawTag(130, 1);
+            output.WriteMessage(IapItemDisplay);
+          }
+          if (iapSettings_ != null) {
+            output.WriteRawTag(138, 1);
+            output.WriteMessage(IapSettings);
+          }
+          if (pokemonUpgrades_ != null) {
+            output.WriteRawTag(146, 1);
+            output.WriteMessage(PokemonUpgrades);
+          }
+          if (equippedBadges_ != null) {
+            output.WriteRawTag(154, 1);
+            output.WriteMessage(EquippedBadges);
+          }
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (TemplateId.Length != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeStringSize(TemplateId);
+          }
+          if (pokemonSettings_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonSettings);
+          }
+          if (itemSettings_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(ItemSettings);
+          }
+          if (moveSettings_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(MoveSettings);
+          }
+          if (moveSequenceSettings_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(MoveSequenceSettings);
+          }
+          if (typeEffective_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(TypeEffective);
+          }
+          if (badgeSettings_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(BadgeSettings);
+          }
+          if (camera_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Camera);
+          }
+          if (playerLevel_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerLevel);
+          }
+          if (gymLevel_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(GymLevel);
+          }
+          if (battleSettings_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(BattleSettings);
+          }
+          if (encounterSettings_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(EncounterSettings);
+          }
+          if (iapItemDisplay_ != null) {
+            size += 2 + pb::CodedOutputStream.ComputeMessageSize(IapItemDisplay);
+          }
+          if (iapSettings_ != null) {
+            size += 2 + pb::CodedOutputStream.ComputeMessageSize(IapSettings);
+          }
+          if (pokemonUpgrades_ != null) {
+            size += 2 + pb::CodedOutputStream.ComputeMessageSize(PokemonUpgrades);
+          }
+          if (equippedBadges_ != null) {
+            size += 2 + pb::CodedOutputStream.ComputeMessageSize(EquippedBadges);
+          }
+          return size;
+        }
+
+        public void MergeFrom(ItemTemplate other) {
+          if (other == null) {
+            return;
+          }
+          if (other.TemplateId.Length != 0) {
+            TemplateId = other.TemplateId;
+          }
+          if (other.pokemonSettings_ != null) {
+            if (pokemonSettings_ == null) {
+              pokemonSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings();
+            }
+            PokemonSettings.MergeFrom(other.PokemonSettings);
+          }
+          if (other.itemSettings_ != null) {
+            if (itemSettings_ == null) {
+              itemSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings();
+            }
+            ItemSettings.MergeFrom(other.ItemSettings);
+          }
+          if (other.moveSettings_ != null) {
+            if (moveSettings_ == null) {
+              moveSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings();
+            }
+            MoveSettings.MergeFrom(other.MoveSettings);
+          }
+          if (other.moveSequenceSettings_ != null) {
+            if (moveSequenceSettings_ == null) {
+              moveSequenceSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings();
+            }
+            MoveSequenceSettings.MergeFrom(other.MoveSequenceSettings);
+          }
+          if (other.typeEffective_ != null) {
+            if (typeEffective_ == null) {
+              typeEffective_ = new global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings();
+            }
+            TypeEffective.MergeFrom(other.TypeEffective);
+          }
+          if (other.badgeSettings_ != null) {
+            if (badgeSettings_ == null) {
+              badgeSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings();
+            }
+            BadgeSettings.MergeFrom(other.BadgeSettings);
+          }
+          if (other.camera_ != null) {
+            if (camera_ == null) {
+              camera_ = new global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings();
+            }
+            Camera.MergeFrom(other.Camera);
+          }
+          if (other.playerLevel_ != null) {
+            if (playerLevel_ == null) {
+              playerLevel_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings();
+            }
+            PlayerLevel.MergeFrom(other.PlayerLevel);
+          }
+          if (other.gymLevel_ != null) {
+            if (gymLevel_ == null) {
+              gymLevel_ = new global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings();
+            }
+            GymLevel.MergeFrom(other.GymLevel);
+          }
+          if (other.battleSettings_ != null) {
+            if (battleSettings_ == null) {
+              battleSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings();
+            }
+            BattleSettings.MergeFrom(other.BattleSettings);
+          }
+          if (other.encounterSettings_ != null) {
+            if (encounterSettings_ == null) {
+              encounterSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings();
+            }
+            EncounterSettings.MergeFrom(other.EncounterSettings);
+          }
+          if (other.iapItemDisplay_ != null) {
+            if (iapItemDisplay_ == null) {
+              iapItemDisplay_ = new global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay();
+            }
+            IapItemDisplay.MergeFrom(other.IapItemDisplay);
+          }
+          if (other.iapSettings_ != null) {
+            if (iapSettings_ == null) {
+              iapSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.IapSettings();
+            }
+            IapSettings.MergeFrom(other.IapSettings);
+          }
+          if (other.pokemonUpgrades_ != null) {
+            if (pokemonUpgrades_ == null) {
+              pokemonUpgrades_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings();
+            }
+            PokemonUpgrades.MergeFrom(other.PokemonUpgrades);
+          }
+          if (other.equippedBadges_ != null) {
+            if (equippedBadges_ == null) {
+              equippedBadges_ = new global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings();
+            }
+            EquippedBadges.MergeFrom(other.EquippedBadges);
+          }
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 10: {
+                TemplateId = input.ReadString();
+                break;
+              }
+              case 18: {
+                if (pokemonSettings_ == null) {
+                  pokemonSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings();
+                }
+                input.ReadMessage(pokemonSettings_);
+                break;
+              }
+              case 26: {
+                if (itemSettings_ == null) {
+                  itemSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings();
+                }
+                input.ReadMessage(itemSettings_);
+                break;
+              }
+              case 34: {
+                if (moveSettings_ == null) {
+                  moveSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings();
+                }
+                input.ReadMessage(moveSettings_);
+                break;
+              }
+              case 42: {
+                if (moveSequenceSettings_ == null) {
+                  moveSequenceSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings();
+                }
+                input.ReadMessage(moveSequenceSettings_);
+                break;
+              }
+              case 66: {
+                if (typeEffective_ == null) {
+                  typeEffective_ = new global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings();
+                }
+                input.ReadMessage(typeEffective_);
+                break;
+              }
+              case 82: {
+                if (badgeSettings_ == null) {
+                  badgeSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings();
+                }
+                input.ReadMessage(badgeSettings_);
+                break;
+              }
+              case 90: {
+                if (camera_ == null) {
+                  camera_ = new global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings();
+                }
+                input.ReadMessage(camera_);
+                break;
+              }
+              case 98: {
+                if (playerLevel_ == null) {
+                  playerLevel_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings();
+                }
+                input.ReadMessage(playerLevel_);
+                break;
+              }
+              case 106: {
+                if (gymLevel_ == null) {
+                  gymLevel_ = new global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings();
+                }
+                input.ReadMessage(gymLevel_);
+                break;
+              }
+              case 114: {
+                if (battleSettings_ == null) {
+                  battleSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings();
+                }
+                input.ReadMessage(battleSettings_);
+                break;
+              }
+              case 122: {
+                if (encounterSettings_ == null) {
+                  encounterSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings();
+                }
+                input.ReadMessage(encounterSettings_);
+                break;
+              }
+              case 130: {
+                if (iapItemDisplay_ == null) {
+                  iapItemDisplay_ = new global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay();
+                }
+                input.ReadMessage(iapItemDisplay_);
+                break;
+              }
+              case 138: {
+                if (iapSettings_ == null) {
+                  iapSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.IapSettings();
+                }
+                input.ReadMessage(iapSettings_);
+                break;
+              }
+              case 146: {
+                if (pokemonUpgrades_ == null) {
+                  pokemonUpgrades_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings();
+                }
+                input.ReadMessage(pokemonUpgrades_);
+                break;
+              }
+              case 154: {
+                if (equippedBadges_ == null) {
+                  equippedBadges_ = new global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings();
+                }
+                input.ReadMessage(equippedBadges_);
+                break;
+              }
+            }
+          }
+        }
+
+      }
+
+    }
+    #endregion
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class UseItemCaptureRequest : pb::IMessage<UseItemCaptureRequest> {
+    private static readonly pb::MessageParser<UseItemCaptureRequest> _parser = new pb::MessageParser<UseItemCaptureRequest>(() => new UseItemCaptureRequest());
+    public static pb::MessageParser<UseItemCaptureRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[44]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public UseItemCaptureRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public UseItemCaptureRequest(UseItemCaptureRequest other) : this() {
+      itemId_ = other.itemId_;
+      encounterId_ = other.encounterId_;
+      spawnPointGuid_ = other.spawnPointGuid_;
+    }
+
+    public UseItemCaptureRequest Clone() {
+      return new UseItemCaptureRequest(this);
+    }
+
+    /// <summary>Field number for the "item_id" field.</summary>
+    public const int ItemIdFieldNumber = 1;
+    private global::AllEnum.ItemId itemId_ = 0;
+    public global::AllEnum.ItemId ItemId {
+      get { return itemId_; }
+      set {
+        itemId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "encounter_id" field.</summary>
+    public const int EncounterIdFieldNumber = 2;
+    private ulong encounterId_;
+    public ulong EncounterId {
+      get { return encounterId_; }
+      set {
+        encounterId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "spawn_point_guid" field.</summary>
+    public const int SpawnPointGuidFieldNumber = 3;
+    private string spawnPointGuid_ = "";
+    public string SpawnPointGuid {
+      get { return spawnPointGuid_; }
+      set {
+        spawnPointGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as UseItemCaptureRequest);
+    }
+
+    public bool Equals(UseItemCaptureRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (ItemId != other.ItemId) return false;
+      if (EncounterId != other.EncounterId) return false;
+      if (SpawnPointGuid != other.SpawnPointGuid) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (ItemId != 0) hash ^= ItemId.GetHashCode();
+      if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
+      if (SpawnPointGuid.Length != 0) hash ^= SpawnPointGuid.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (ItemId != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) ItemId);
+      }
+      if (EncounterId != 0UL) {
+        output.WriteRawTag(17);
+        output.WriteFixed64(EncounterId);
+      }
+      if (SpawnPointGuid.Length != 0) {
+        output.WriteRawTag(26);
+        output.WriteString(SpawnPointGuid);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (ItemId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ItemId);
+      }
+      if (EncounterId != 0UL) {
+        size += 1 + 8;
+      }
+      if (SpawnPointGuid.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnPointGuid);
+      }
+      return size;
+    }
+
+    public void MergeFrom(UseItemCaptureRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.ItemId != 0) {
+        ItemId = other.ItemId;
+      }
+      if (other.EncounterId != 0UL) {
+        EncounterId = other.EncounterId;
+      }
+      if (other.SpawnPointGuid.Length != 0) {
+        SpawnPointGuid = other.SpawnPointGuid;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            itemId_ = (global::AllEnum.ItemId) input.ReadEnum();
+            break;
+          }
+          case 17: {
+            EncounterId = input.ReadFixed64();
+            break;
+          }
+          case 26: {
+            SpawnPointGuid = input.ReadString();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class UseItemCaptureResponse : pb::IMessage<UseItemCaptureResponse> {
+    private static readonly pb::MessageParser<UseItemCaptureResponse> _parser = new pb::MessageParser<UseItemCaptureResponse>(() => new UseItemCaptureResponse());
+    public static pb::MessageParser<UseItemCaptureResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[45]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public UseItemCaptureResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public UseItemCaptureResponse(UseItemCaptureResponse other) : this() {
+      success_ = other.success_;
+      itemCaptureMult_ = other.itemCaptureMult_;
+      itemFleeMult_ = other.itemFleeMult_;
+      stopMovement_ = other.stopMovement_;
+      stopAttack_ = other.stopAttack_;
+      targetMax_ = other.targetMax_;
+      targetSlow_ = other.targetSlow_;
+    }
+
+    public UseItemCaptureResponse Clone() {
+      return new UseItemCaptureResponse(this);
+    }
+
+    /// <summary>Field number for the "success" field.</summary>
+    public const int SuccessFieldNumber = 1;
+    private bool success_;
+    public bool Success {
+      get { return success_; }
+      set {
+        success_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "item_capture_mult" field.</summary>
+    public const int ItemCaptureMultFieldNumber = 2;
+    private double itemCaptureMult_;
+    public double ItemCaptureMult {
+      get { return itemCaptureMult_; }
+      set {
+        itemCaptureMult_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "item_flee_mult" field.</summary>
+    public const int ItemFleeMultFieldNumber = 3;
+    private double itemFleeMult_;
+    public double ItemFleeMult {
+      get { return itemFleeMult_; }
+      set {
+        itemFleeMult_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "stop_movement" field.</summary>
+    public const int StopMovementFieldNumber = 4;
+    private bool stopMovement_;
+    public bool StopMovement {
+      get { return stopMovement_; }
+      set {
+        stopMovement_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "stop_attack" field.</summary>
+    public const int StopAttackFieldNumber = 5;
+    private bool stopAttack_;
+    public bool StopAttack {
+      get { return stopAttack_; }
+      set {
+        stopAttack_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "target_max" field.</summary>
+    public const int TargetMaxFieldNumber = 6;
+    private bool targetMax_;
+    public bool TargetMax {
+      get { return targetMax_; }
+      set {
+        targetMax_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "target_slow" field.</summary>
+    public const int TargetSlowFieldNumber = 7;
+    private bool targetSlow_;
+    public bool TargetSlow {
+      get { return targetSlow_; }
+      set {
+        targetSlow_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as UseItemCaptureResponse);
+    }
+
+    public bool Equals(UseItemCaptureResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Success != other.Success) return false;
+      if (ItemCaptureMult != other.ItemCaptureMult) return false;
+      if (ItemFleeMult != other.ItemFleeMult) return false;
+      if (StopMovement != other.StopMovement) return false;
+      if (StopAttack != other.StopAttack) return false;
+      if (TargetMax != other.TargetMax) return false;
+      if (TargetSlow != other.TargetSlow) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Success != false) hash ^= Success.GetHashCode();
+      if (ItemCaptureMult != 0D) hash ^= ItemCaptureMult.GetHashCode();
+      if (ItemFleeMult != 0D) hash ^= ItemFleeMult.GetHashCode();
+      if (StopMovement != false) hash ^= StopMovement.GetHashCode();
+      if (StopAttack != false) hash ^= StopAttack.GetHashCode();
+      if (TargetMax != false) hash ^= TargetMax.GetHashCode();
+      if (TargetSlow != false) hash ^= TargetSlow.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Success != false) {
+        output.WriteRawTag(8);
+        output.WriteBool(Success);
+      }
+      if (ItemCaptureMult != 0D) {
+        output.WriteRawTag(17);
+        output.WriteDouble(ItemCaptureMult);
+      }
+      if (ItemFleeMult != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(ItemFleeMult);
+      }
+      if (StopMovement != false) {
+        output.WriteRawTag(32);
+        output.WriteBool(StopMovement);
+      }
+      if (StopAttack != false) {
+        output.WriteRawTag(40);
+        output.WriteBool(StopAttack);
+      }
+      if (TargetMax != false) {
+        output.WriteRawTag(48);
+        output.WriteBool(TargetMax);
+      }
+      if (TargetSlow != false) {
+        output.WriteRawTag(56);
+        output.WriteBool(TargetSlow);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Success != false) {
+        size += 1 + 1;
+      }
+      if (ItemCaptureMult != 0D) {
+        size += 1 + 8;
+      }
+      if (ItemFleeMult != 0D) {
+        size += 1 + 8;
+      }
+      if (StopMovement != false) {
+        size += 1 + 1;
+      }
+      if (StopAttack != false) {
+        size += 1 + 1;
+      }
+      if (TargetMax != false) {
+        size += 1 + 1;
+      }
+      if (TargetSlow != false) {
+        size += 1 + 1;
+      }
+      return size;
+    }
+
+    public void MergeFrom(UseItemCaptureResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Success != false) {
+        Success = other.Success;
+      }
+      if (other.ItemCaptureMult != 0D) {
+        ItemCaptureMult = other.ItemCaptureMult;
+      }
+      if (other.ItemFleeMult != 0D) {
+        ItemFleeMult = other.ItemFleeMult;
+      }
+      if (other.StopMovement != false) {
+        StopMovement = other.StopMovement;
+      }
+      if (other.StopAttack != false) {
+        StopAttack = other.StopAttack;
+      }
+      if (other.TargetMax != false) {
+        TargetMax = other.TargetMax;
+      }
+      if (other.TargetSlow != false) {
+        TargetSlow = other.TargetSlow;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Success = input.ReadBool();
+            break;
+          }
+          case 17: {
+            ItemCaptureMult = input.ReadDouble();
+            break;
+          }
+          case 25: {
+            ItemFleeMult = input.ReadDouble();
+            break;
+          }
+          case 32: {
+            StopMovement = input.ReadBool();
+            break;
+          }
+          case 40: {
+            StopAttack = input.ReadBool();
+            break;
+          }
+          case 48: {
+            TargetMax = input.ReadBool();
+            break;
+          }
+          case 56: {
+            TargetSlow = input.ReadBool();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class ReleasePokemonRequest : pb::IMessage<ReleasePokemonRequest> {
+    private static readonly pb::MessageParser<ReleasePokemonRequest> _parser = new pb::MessageParser<ReleasePokemonRequest>(() => new ReleasePokemonRequest());
+    public static pb::MessageParser<ReleasePokemonRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[46]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public ReleasePokemonRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public ReleasePokemonRequest(ReleasePokemonRequest other) : this() {
+      pokemonId_ = other.pokemonId_;
+    }
+
+    public ReleasePokemonRequest Clone() {
+      return new ReleasePokemonRequest(this);
+    }
+
+    /// <summary>Field number for the "pokemon_id" field.</summary>
+    public const int PokemonIdFieldNumber = 1;
+    private ulong pokemonId_;
+    public ulong PokemonId {
+      get { return pokemonId_; }
+      set {
+        pokemonId_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as ReleasePokemonRequest);
+    }
+
+    public bool Equals(ReleasePokemonRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (PokemonId != other.PokemonId) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (PokemonId != 0UL) hash ^= PokemonId.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (PokemonId != 0UL) {
+        output.WriteRawTag(9);
+        output.WriteFixed64(PokemonId);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (PokemonId != 0UL) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(ReleasePokemonRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.PokemonId != 0UL) {
+        PokemonId = other.PokemonId;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            PokemonId = input.ReadFixed64();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class ReleasePokemonResponse : pb::IMessage<ReleasePokemonResponse> {
+    private static readonly pb::MessageParser<ReleasePokemonResponse> _parser = new pb::MessageParser<ReleasePokemonResponse>(() => new ReleasePokemonResponse());
+    public static pb::MessageParser<ReleasePokemonResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[47]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public ReleasePokemonResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public ReleasePokemonResponse(ReleasePokemonResponse other) : this() {
+      result_ = other.result_;
+      candyAwarded_ = other.candyAwarded_;
+    }
+
+    public ReleasePokemonResponse Clone() {
+      return new ReleasePokemonResponse(this);
+    }
+
+    /// <summary>Field number for the "result" field.</summary>
+    public const int ResultFieldNumber = 1;
+    private global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse.Types.Result result_ = 0;
+    public global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse.Types.Result Result {
+      get { return result_; }
+      set {
+        result_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "candy_awarded" field.</summary>
+    public const int CandyAwardedFieldNumber = 2;
+    private int candyAwarded_;
+    public int CandyAwarded {
+      get { return candyAwarded_; }
+      set {
+        candyAwarded_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as ReleasePokemonResponse);
+    }
+
+    public bool Equals(ReleasePokemonResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Result != other.Result) return false;
+      if (CandyAwarded != other.CandyAwarded) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Result != 0) hash ^= Result.GetHashCode();
+      if (CandyAwarded != 0) hash ^= CandyAwarded.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Result != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) Result);
+      }
+      if (CandyAwarded != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(CandyAwarded);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Result != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Result);
+      }
+      if (CandyAwarded != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CandyAwarded);
+      }
+      return size;
+    }
+
+    public void MergeFrom(ReleasePokemonResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Result != 0) {
+        Result = other.Result;
+      }
+      if (other.CandyAwarded != 0) {
+        CandyAwarded = other.CandyAwarded;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            result_ = (global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse.Types.Result) input.ReadEnum();
+            break;
+          }
+          case 16: {
+            CandyAwarded = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+    #region Nested types
+    /// <summary>Container for nested types declared in the ReleasePokemonResponse message type.</summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    public static partial class Types {
+      public enum Result {
+        [pbr::OriginalName("UNSET")] Unset = 0,
+        [pbr::OriginalName("SUCCESS")] Success = 1,
+        [pbr::OriginalName("POKEMON_DEPLOYED")] PokemonDeployed = 2,
+        [pbr::OriginalName("FAILED")] Failed = 3,
+        [pbr::OriginalName("ERROR_POKEMON_IS_EGG")] ErrorPokemonIsEgg = 4,
+      }
+
+    }
+    #endregion
+
+  }
+
+  /// <summary>
+  ///  No message needed.
+  /// </summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class GetHatchedEggsRequest : pb::IMessage<GetHatchedEggsRequest> {
+    private static readonly pb::MessageParser<GetHatchedEggsRequest> _parser = new pb::MessageParser<GetHatchedEggsRequest>(() => new GetHatchedEggsRequest());
+    public static pb::MessageParser<GetHatchedEggsRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[48]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public GetHatchedEggsRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public GetHatchedEggsRequest(GetHatchedEggsRequest other) : this() {
+    }
+
+    public GetHatchedEggsRequest Clone() {
+      return new GetHatchedEggsRequest(this);
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as GetHatchedEggsRequest);
+    }
+
+    public bool Equals(GetHatchedEggsRequest 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(GetHatchedEggsRequest other) {
+      if (other == null) {
+        return;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+        }
+      }
+    }
+
+  }
+
+  /// <summary>
+  ///  Confirm if this is correct, I think that it should be "repeated HatchedEgg hatched_eggs" or something like that.
+  /// </summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class GetHatchedEggsResponse : pb::IMessage<GetHatchedEggsResponse> {
+    private static readonly pb::MessageParser<GetHatchedEggsResponse> _parser = new pb::MessageParser<GetHatchedEggsResponse>(() => new GetHatchedEggsResponse());
+    public static pb::MessageParser<GetHatchedEggsResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[49]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public GetHatchedEggsResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public GetHatchedEggsResponse(GetHatchedEggsResponse other) : this() {
+      success_ = other.success_;
+      pokemonId_ = other.pokemonId_.Clone();
+      experienceAwarded_ = other.experienceAwarded_.Clone();
+      candyAwarded_ = other.candyAwarded_.Clone();
+      stardustAwarded_ = other.stardustAwarded_.Clone();
+    }
+
+    public GetHatchedEggsResponse Clone() {
+      return new GetHatchedEggsResponse(this);
+    }
+
+    /// <summary>Field number for the "success" field.</summary>
+    public const int SuccessFieldNumber = 1;
+    private bool success_;
+    public bool Success {
+      get { return success_; }
+      set {
+        success_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_id" field.</summary>
+    public const int PokemonIdFieldNumber = 2;
+    private static readonly pb::FieldCodec<ulong> _repeated_pokemonId_codec
+        = pb::FieldCodec.ForUInt64(18);
+    private readonly pbc::RepeatedField<ulong> pokemonId_ = new pbc::RepeatedField<ulong>();
+    /// <summary>
+    ///  Might be POGOProtos.Enums.Pokemon
+    /// </summary>
+    public pbc::RepeatedField<ulong> PokemonId {
+      get { return pokemonId_; }
+    }
+
+    /// <summary>Field number for the "experience_awarded" field.</summary>
+    public const int ExperienceAwardedFieldNumber = 3;
+    private static readonly pb::FieldCodec<int> _repeated_experienceAwarded_codec
+        = pb::FieldCodec.ForInt32(26);
+    private readonly pbc::RepeatedField<int> experienceAwarded_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> ExperienceAwarded {
+      get { return experienceAwarded_; }
+    }
+
+    /// <summary>Field number for the "candy_awarded" field.</summary>
+    public const int CandyAwardedFieldNumber = 4;
+    private static readonly pb::FieldCodec<int> _repeated_candyAwarded_codec
+        = pb::FieldCodec.ForInt32(34);
+    private readonly pbc::RepeatedField<int> candyAwarded_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> CandyAwarded {
+      get { return candyAwarded_; }
+    }
+
+    /// <summary>Field number for the "stardust_awarded" field.</summary>
+    public const int StardustAwardedFieldNumber = 5;
+    private static readonly pb::FieldCodec<int> _repeated_stardustAwarded_codec
+        = pb::FieldCodec.ForInt32(42);
+    private readonly pbc::RepeatedField<int> stardustAwarded_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> StardustAwarded {
+      get { return stardustAwarded_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as GetHatchedEggsResponse);
+    }
+
+    public bool Equals(GetHatchedEggsResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Success != other.Success) return false;
+      if(!pokemonId_.Equals(other.pokemonId_)) return false;
+      if(!experienceAwarded_.Equals(other.experienceAwarded_)) return false;
+      if(!candyAwarded_.Equals(other.candyAwarded_)) return false;
+      if(!stardustAwarded_.Equals(other.stardustAwarded_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Success != false) hash ^= Success.GetHashCode();
+      hash ^= pokemonId_.GetHashCode();
+      hash ^= experienceAwarded_.GetHashCode();
+      hash ^= candyAwarded_.GetHashCode();
+      hash ^= stardustAwarded_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Success != false) {
+        output.WriteRawTag(8);
+        output.WriteBool(Success);
+      }
+      pokemonId_.WriteTo(output, _repeated_pokemonId_codec);
+      experienceAwarded_.WriteTo(output, _repeated_experienceAwarded_codec);
+      candyAwarded_.WriteTo(output, _repeated_candyAwarded_codec);
+      stardustAwarded_.WriteTo(output, _repeated_stardustAwarded_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Success != false) {
+        size += 1 + 1;
+      }
+      size += pokemonId_.CalculateSize(_repeated_pokemonId_codec);
+      size += experienceAwarded_.CalculateSize(_repeated_experienceAwarded_codec);
+      size += candyAwarded_.CalculateSize(_repeated_candyAwarded_codec);
+      size += stardustAwarded_.CalculateSize(_repeated_stardustAwarded_codec);
+      return size;
+    }
+
+    public void MergeFrom(GetHatchedEggsResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Success != false) {
+        Success = other.Success;
+      }
+      pokemonId_.Add(other.pokemonId_);
+      experienceAwarded_.Add(other.experienceAwarded_);
+      candyAwarded_.Add(other.candyAwarded_);
+      stardustAwarded_.Add(other.stardustAwarded_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Success = input.ReadBool();
+            break;
+          }
+          case 18:
+          case 16: {
+            pokemonId_.AddEntriesFrom(input, _repeated_pokemonId_codec);
+            break;
+          }
+          case 26:
+          case 24: {
+            experienceAwarded_.AddEntriesFrom(input, _repeated_experienceAwarded_codec);
+            break;
+          }
+          case 34:
+          case 32: {
+            candyAwarded_.AddEntriesFrom(input, _repeated_candyAwarded_codec);
+            break;
+          }
+          case 42:
+          case 40: {
+            stardustAwarded_.AddEntriesFrom(input, _repeated_stardustAwarded_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class FortSearchRequest : pb::IMessage<FortSearchRequest> {
+    private static readonly pb::MessageParser<FortSearchRequest> _parser = new pb::MessageParser<FortSearchRequest>(() => new FortSearchRequest());
+    public static pb::MessageParser<FortSearchRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[50]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public FortSearchRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public FortSearchRequest(FortSearchRequest other) : this() {
+      fortId_ = other.fortId_;
+      playerLatitude_ = other.playerLatitude_;
+      playerLongitude_ = other.playerLongitude_;
+      fortLatitude_ = other.fortLatitude_;
+      fortLongitude_ = other.fortLongitude_;
+    }
+
+    public FortSearchRequest Clone() {
+      return new FortSearchRequest(this);
+    }
+
+    /// <summary>Field number for the "fort_id" field.</summary>
+    public const int FortIdFieldNumber = 1;
+    private string fortId_ = "";
+    public string FortId {
+      get { return fortId_; }
+      set {
+        fortId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "player_latitude" field.</summary>
+    public const int PlayerLatitudeFieldNumber = 2;
+    private double playerLatitude_;
+    public double PlayerLatitude {
+      get { return playerLatitude_; }
+      set {
+        playerLatitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "player_longitude" field.</summary>
+    public const int PlayerLongitudeFieldNumber = 3;
+    private double playerLongitude_;
+    public double PlayerLongitude {
+      get { return playerLongitude_; }
+      set {
+        playerLongitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "fort_latitude" field.</summary>
+    public const int FortLatitudeFieldNumber = 4;
+    private double fortLatitude_;
+    public double FortLatitude {
+      get { return fortLatitude_; }
+      set {
+        fortLatitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "fort_longitude" field.</summary>
+    public const int FortLongitudeFieldNumber = 5;
+    private double fortLongitude_;
+    public double FortLongitude {
+      get { return fortLongitude_; }
+      set {
+        fortLongitude_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as FortSearchRequest);
+    }
+
+    public bool Equals(FortSearchRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (FortId != other.FortId) return false;
+      if (PlayerLatitude != other.PlayerLatitude) return false;
+      if (PlayerLongitude != other.PlayerLongitude) return false;
+      if (FortLatitude != other.FortLatitude) return false;
+      if (FortLongitude != other.FortLongitude) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (FortId.Length != 0) hash ^= FortId.GetHashCode();
+      if (PlayerLatitude != 0D) hash ^= PlayerLatitude.GetHashCode();
+      if (PlayerLongitude != 0D) hash ^= PlayerLongitude.GetHashCode();
+      if (FortLatitude != 0D) hash ^= FortLatitude.GetHashCode();
+      if (FortLongitude != 0D) hash ^= FortLongitude.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (FortId.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(FortId);
+      }
+      if (PlayerLatitude != 0D) {
+        output.WriteRawTag(17);
+        output.WriteDouble(PlayerLatitude);
+      }
+      if (PlayerLongitude != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(PlayerLongitude);
+      }
+      if (FortLatitude != 0D) {
+        output.WriteRawTag(33);
+        output.WriteDouble(FortLatitude);
+      }
+      if (FortLongitude != 0D) {
+        output.WriteRawTag(41);
+        output.WriteDouble(FortLongitude);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (FortId.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(FortId);
+      }
+      if (PlayerLatitude != 0D) {
+        size += 1 + 8;
+      }
+      if (PlayerLongitude != 0D) {
+        size += 1 + 8;
+      }
+      if (FortLatitude != 0D) {
+        size += 1 + 8;
+      }
+      if (FortLongitude != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(FortSearchRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.FortId.Length != 0) {
+        FortId = other.FortId;
+      }
+      if (other.PlayerLatitude != 0D) {
+        PlayerLatitude = other.PlayerLatitude;
+      }
+      if (other.PlayerLongitude != 0D) {
+        PlayerLongitude = other.PlayerLongitude;
+      }
+      if (other.FortLatitude != 0D) {
+        FortLatitude = other.FortLatitude;
+      }
+      if (other.FortLongitude != 0D) {
+        FortLongitude = other.FortLongitude;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            FortId = input.ReadString();
+            break;
+          }
+          case 17: {
+            PlayerLatitude = input.ReadDouble();
+            break;
+          }
+          case 25: {
+            PlayerLongitude = input.ReadDouble();
+            break;
+          }
+          case 33: {
+            FortLatitude = input.ReadDouble();
+            break;
+          }
+          case 41: {
+            FortLongitude = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class FortSearchResponse : pb::IMessage<FortSearchResponse> {
+    private static readonly pb::MessageParser<FortSearchResponse> _parser = new pb::MessageParser<FortSearchResponse>(() => new FortSearchResponse());
+    public static pb::MessageParser<FortSearchResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[51]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public FortSearchResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public FortSearchResponse(FortSearchResponse other) : this() {
+      result_ = other.result_;
+      itemsAwarded_ = other.itemsAwarded_.Clone();
+      gemsAwarded_ = other.gemsAwarded_;
+      PokemonDataEgg = other.pokemonDataEgg_ != null ? other.PokemonDataEgg.Clone() : null;
+      experienceAwarded_ = other.experienceAwarded_;
+      cooldownCompleteTimestampMs_ = other.cooldownCompleteTimestampMs_;
+      chainHackSequenceNumber_ = other.chainHackSequenceNumber_;
+    }
+
+    public FortSearchResponse Clone() {
+      return new FortSearchResponse(this);
+    }
+
+    /// <summary>Field number for the "result" field.</summary>
+    public const int ResultFieldNumber = 1;
+    private global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Result result_ = 0;
+    public global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Result Result {
+      get { return result_; }
+      set {
+        result_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "items_awarded" field.</summary>
+    public const int ItemsAwardedFieldNumber = 2;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward> _repeated_itemsAwarded_codec
+        = pb::FieldCodec.ForMessage(18, global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward> itemsAwarded_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward> ItemsAwarded {
+      get { return itemsAwarded_; }
+    }
+
+    /// <summary>Field number for the "gems_awarded" field.</summary>
+    public const int GemsAwardedFieldNumber = 3;
+    private int gemsAwarded_;
+    public int GemsAwarded {
+      get { return gemsAwarded_; }
+      set {
+        gemsAwarded_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_data_egg" field.</summary>
+    public const int PokemonDataEggFieldNumber = 4;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PokemonData pokemonDataEgg_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PokemonData PokemonDataEgg {
+      get { return pokemonDataEgg_; }
+      set {
+        pokemonDataEgg_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "experience_awarded" field.</summary>
+    public const int ExperienceAwardedFieldNumber = 5;
+    private int experienceAwarded_;
+    public int ExperienceAwarded {
+      get { return experienceAwarded_; }
+      set {
+        experienceAwarded_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "cooldown_complete_timestamp_ms" field.</summary>
+    public const int CooldownCompleteTimestampMsFieldNumber = 6;
+    private long cooldownCompleteTimestampMs_;
+    public long CooldownCompleteTimestampMs {
+      get { return cooldownCompleteTimestampMs_; }
+      set {
+        cooldownCompleteTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "chain_hack_sequence_number" field.</summary>
+    public const int ChainHackSequenceNumberFieldNumber = 7;
+    private int chainHackSequenceNumber_;
+    public int ChainHackSequenceNumber {
+      get { return chainHackSequenceNumber_; }
+      set {
+        chainHackSequenceNumber_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as FortSearchResponse);
+    }
+
+    public bool Equals(FortSearchResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Result != other.Result) return false;
+      if(!itemsAwarded_.Equals(other.itemsAwarded_)) return false;
+      if (GemsAwarded != other.GemsAwarded) return false;
+      if (!object.Equals(PokemonDataEgg, other.PokemonDataEgg)) return false;
+      if (ExperienceAwarded != other.ExperienceAwarded) return false;
+      if (CooldownCompleteTimestampMs != other.CooldownCompleteTimestampMs) return false;
+      if (ChainHackSequenceNumber != other.ChainHackSequenceNumber) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Result != 0) hash ^= Result.GetHashCode();
+      hash ^= itemsAwarded_.GetHashCode();
+      if (GemsAwarded != 0) hash ^= GemsAwarded.GetHashCode();
+      if (pokemonDataEgg_ != null) hash ^= PokemonDataEgg.GetHashCode();
+      if (ExperienceAwarded != 0) hash ^= ExperienceAwarded.GetHashCode();
+      if (CooldownCompleteTimestampMs != 0L) hash ^= CooldownCompleteTimestampMs.GetHashCode();
+      if (ChainHackSequenceNumber != 0) hash ^= ChainHackSequenceNumber.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Result != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) Result);
+      }
+      itemsAwarded_.WriteTo(output, _repeated_itemsAwarded_codec);
+      if (GemsAwarded != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(GemsAwarded);
+      }
+      if (pokemonDataEgg_ != null) {
+        output.WriteRawTag(34);
+        output.WriteMessage(PokemonDataEgg);
+      }
+      if (ExperienceAwarded != 0) {
+        output.WriteRawTag(40);
+        output.WriteInt32(ExperienceAwarded);
+      }
+      if (CooldownCompleteTimestampMs != 0L) {
+        output.WriteRawTag(48);
+        output.WriteInt64(CooldownCompleteTimestampMs);
+      }
+      if (ChainHackSequenceNumber != 0) {
+        output.WriteRawTag(56);
+        output.WriteInt32(ChainHackSequenceNumber);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Result != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Result);
+      }
+      size += itemsAwarded_.CalculateSize(_repeated_itemsAwarded_codec);
+      if (GemsAwarded != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(GemsAwarded);
+      }
+      if (pokemonDataEgg_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonDataEgg);
+      }
+      if (ExperienceAwarded != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ExperienceAwarded);
+      }
+      if (CooldownCompleteTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(CooldownCompleteTimestampMs);
+      }
+      if (ChainHackSequenceNumber != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ChainHackSequenceNumber);
+      }
+      return size;
+    }
+
+    public void MergeFrom(FortSearchResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Result != 0) {
+        Result = other.Result;
+      }
+      itemsAwarded_.Add(other.itemsAwarded_);
+      if (other.GemsAwarded != 0) {
+        GemsAwarded = other.GemsAwarded;
+      }
+      if (other.pokemonDataEgg_ != null) {
+        if (pokemonDataEgg_ == null) {
+          pokemonDataEgg_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
+        }
+        PokemonDataEgg.MergeFrom(other.PokemonDataEgg);
+      }
+      if (other.ExperienceAwarded != 0) {
+        ExperienceAwarded = other.ExperienceAwarded;
+      }
+      if (other.CooldownCompleteTimestampMs != 0L) {
+        CooldownCompleteTimestampMs = other.CooldownCompleteTimestampMs;
+      }
+      if (other.ChainHackSequenceNumber != 0) {
+        ChainHackSequenceNumber = other.ChainHackSequenceNumber;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            result_ = (global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Result) input.ReadEnum();
+            break;
+          }
+          case 18: {
+            itemsAwarded_.AddEntriesFrom(input, _repeated_itemsAwarded_codec);
+            break;
+          }
+          case 24: {
+            GemsAwarded = input.ReadInt32();
+            break;
+          }
+          case 34: {
+            if (pokemonDataEgg_ == null) {
+              pokemonDataEgg_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
+            }
+            input.ReadMessage(pokemonDataEgg_);
+            break;
+          }
+          case 40: {
+            ExperienceAwarded = input.ReadInt32();
+            break;
+          }
+          case 48: {
+            CooldownCompleteTimestampMs = input.ReadInt64();
+            break;
+          }
+          case 56: {
+            ChainHackSequenceNumber = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+    #region Nested types
+    /// <summary>Container for nested types declared in the FortSearchResponse message type.</summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    public static partial class Types {
+      public enum Result {
+        [pbr::OriginalName("NO_RESULT_SET")] NoResultSet = 0,
+        [pbr::OriginalName("SUCCESS")] Success = 1,
+        [pbr::OriginalName("OUT_OF_RANGE")] OutOfRange = 2,
+        [pbr::OriginalName("IN_COOLDOWN_PERIOD")] InCooldownPeriod = 3,
+        [pbr::OriginalName("INVENTORY_FULL")] InventoryFull = 4,
+      }
+
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class ItemAward : pb::IMessage<ItemAward> {
+        private static readonly pb::MessageParser<ItemAward> _parser = new pb::MessageParser<ItemAward>(() => new ItemAward());
+        public static pb::MessageParser<ItemAward> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Descriptor.NestedTypes[0]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public ItemAward() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public ItemAward(ItemAward other) : this() {
+          itemId_ = other.itemId_;
+          itemCount_ = other.itemCount_;
+        }
+
+        public ItemAward Clone() {
+          return new ItemAward(this);
+        }
+
+        /// <summary>Field number for the "item_id" field.</summary>
+        public const int ItemIdFieldNumber = 1;
+        private global::AllEnum.ItemId itemId_ = 0;
+        public global::AllEnum.ItemId ItemId {
+          get { return itemId_; }
+          set {
+            itemId_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "item_count" field.</summary>
+        public const int ItemCountFieldNumber = 2;
+        private int itemCount_;
+        public int ItemCount {
+          get { return itemCount_; }
+          set {
+            itemCount_ = value;
+          }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as ItemAward);
+        }
+
+        public bool Equals(ItemAward other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (ItemId != other.ItemId) return false;
+          if (ItemCount != other.ItemCount) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (ItemId != 0) hash ^= ItemId.GetHashCode();
+          if (ItemCount != 0) hash ^= ItemCount.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (ItemId != 0) {
+            output.WriteRawTag(8);
+            output.WriteEnum((int) ItemId);
+          }
+          if (ItemCount != 0) {
+            output.WriteRawTag(16);
+            output.WriteInt32(ItemCount);
+          }
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (ItemId != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ItemId);
+          }
+          if (ItemCount != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemCount);
+          }
+          return size;
+        }
+
+        public void MergeFrom(ItemAward other) {
+          if (other == null) {
+            return;
+          }
+          if (other.ItemId != 0) {
+            ItemId = other.ItemId;
+          }
+          if (other.ItemCount != 0) {
+            ItemCount = other.ItemCount;
+          }
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 8: {
+                itemId_ = (global::AllEnum.ItemId) input.ReadEnum();
+                break;
+              }
+              case 16: {
+                ItemCount = input.ReadInt32();
+                break;
+              }
+            }
+          }
+        }
+
+      }
+
+    }
+    #endregion
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class FortDetailsRequest : pb::IMessage<FortDetailsRequest> {
+    private static readonly pb::MessageParser<FortDetailsRequest> _parser = new pb::MessageParser<FortDetailsRequest>(() => new FortDetailsRequest());
+    public static pb::MessageParser<FortDetailsRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[52]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public FortDetailsRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public FortDetailsRequest(FortDetailsRequest other) : this() {
+      fortId_ = other.fortId_;
+      latitude_ = other.latitude_;
+      longitude_ = other.longitude_;
+    }
+
+    public FortDetailsRequest Clone() {
+      return new FortDetailsRequest(this);
+    }
+
+    /// <summary>Field number for the "fort_id" field.</summary>
+    public const int FortIdFieldNumber = 1;
+    private string fortId_ = "";
+    public string FortId {
+      get { return fortId_; }
+      set {
+        fortId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "latitude" field.</summary>
+    public const int LatitudeFieldNumber = 2;
+    private double latitude_;
+    public double Latitude {
+      get { return latitude_; }
+      set {
+        latitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "longitude" field.</summary>
+    public const int LongitudeFieldNumber = 3;
+    private double longitude_;
+    public double Longitude {
+      get { return longitude_; }
+      set {
+        longitude_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as FortDetailsRequest);
+    }
+
+    public bool Equals(FortDetailsRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (FortId != other.FortId) return false;
+      if (Latitude != other.Latitude) return false;
+      if (Longitude != other.Longitude) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (FortId.Length != 0) hash ^= FortId.GetHashCode();
+      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
+      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (FortId.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(FortId);
+      }
+      if (Latitude != 0D) {
+        output.WriteRawTag(17);
+        output.WriteDouble(Latitude);
+      }
+      if (Longitude != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(Longitude);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (FortId.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(FortId);
+      }
+      if (Latitude != 0D) {
+        size += 1 + 8;
+      }
+      if (Longitude != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(FortDetailsRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.FortId.Length != 0) {
+        FortId = other.FortId;
+      }
+      if (other.Latitude != 0D) {
+        Latitude = other.Latitude;
+      }
+      if (other.Longitude != 0D) {
+        Longitude = other.Longitude;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            FortId = input.ReadString();
+            break;
+          }
+          case 17: {
+            Latitude = input.ReadDouble();
+            break;
+          }
+          case 25: {
+            Longitude = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class FortDetailsResponse : pb::IMessage<FortDetailsResponse> {
+    private static readonly pb::MessageParser<FortDetailsResponse> _parser = new pb::MessageParser<FortDetailsResponse>(() => new FortDetailsResponse());
+    public static pb::MessageParser<FortDetailsResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[53]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public FortDetailsResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public FortDetailsResponse(FortDetailsResponse other) : this() {
+      fortId_ = other.fortId_;
+      teamColor_ = other.teamColor_;
+      PokemonData = other.pokemonData_ != null ? other.PokemonData.Clone() : null;
+      name_ = other.name_;
+      imageUrls_ = other.imageUrls_.Clone();
+      fp_ = other.fp_;
+      stamina_ = other.stamina_;
+      maxStamina_ = other.maxStamina_;
+      type_ = other.type_;
+      latitude_ = other.latitude_;
+      longitude_ = other.longitude_;
+      description_ = other.description_;
+      modifiers_ = other.modifiers_.Clone();
+    }
+
+    public FortDetailsResponse Clone() {
+      return new FortDetailsResponse(this);
+    }
+
+    /// <summary>Field number for the "fort_id" field.</summary>
+    public const int FortIdFieldNumber = 1;
+    private string fortId_ = "";
+    public string FortId {
+      get { return fortId_; }
+      set {
+        fortId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "team_color" field.</summary>
+    public const int TeamColorFieldNumber = 2;
+    private global::AllEnum.TeamColor teamColor_ = 0;
+    public global::AllEnum.TeamColor TeamColor {
+      get { return teamColor_; }
+      set {
+        teamColor_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_data" field.</summary>
+    public const int PokemonDataFieldNumber = 3;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PokemonData pokemonData_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PokemonData PokemonData {
+      get { return pokemonData_; }
+      set {
+        pokemonData_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "name" field.</summary>
+    public const int NameFieldNumber = 4;
+    private string name_ = "";
+    public string Name {
+      get { return name_; }
+      set {
+        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "image_urls" field.</summary>
+    public const int ImageUrlsFieldNumber = 5;
+    private static readonly pb::FieldCodec<string> _repeated_imageUrls_codec
+        = pb::FieldCodec.ForString(42);
+    private readonly pbc::RepeatedField<string> imageUrls_ = new pbc::RepeatedField<string>();
+    public pbc::RepeatedField<string> ImageUrls {
+      get { return imageUrls_; }
+    }
+
+    /// <summary>Field number for the "fp" field.</summary>
+    public const int FpFieldNumber = 6;
+    private int fp_;
+    public int Fp {
+      get { return fp_; }
+      set {
+        fp_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "stamina" field.</summary>
+    public const int StaminaFieldNumber = 7;
+    private int stamina_;
+    public int Stamina {
+      get { return stamina_; }
+      set {
+        stamina_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "max_stamina" field.</summary>
+    public const int MaxStaminaFieldNumber = 8;
+    private int maxStamina_;
+    public int MaxStamina {
+      get { return maxStamina_; }
+      set {
+        maxStamina_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "type" field.</summary>
+    public const int TypeFieldNumber = 9;
+    private global::AllEnum.FortType type_ = 0;
+    public global::AllEnum.FortType Type {
+      get { return type_; }
+      set {
+        type_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "latitude" field.</summary>
+    public const int LatitudeFieldNumber = 10;
+    private double latitude_;
+    public double Latitude {
+      get { return latitude_; }
+      set {
+        latitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "longitude" field.</summary>
+    public const int LongitudeFieldNumber = 11;
+    private double longitude_;
+    public double Longitude {
+      get { return longitude_; }
+      set {
+        longitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "description" field.</summary>
+    public const int DescriptionFieldNumber = 12;
+    private string description_ = "";
+    public string Description {
+      get { return description_; }
+      set {
+        description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "modifiers" field.</summary>
+    public const int ModifiersFieldNumber = 13;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortModifier> _repeated_modifiers_codec
+        = pb::FieldCodec.ForMessage(106, global::PokemonGo.RocketAPI.GeneratedCode.FortModifier.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortModifier> modifiers_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortModifier>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortModifier> Modifiers {
+      get { return modifiers_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as FortDetailsResponse);
+    }
+
+    public bool Equals(FortDetailsResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (FortId != other.FortId) return false;
+      if (TeamColor != other.TeamColor) return false;
+      if (!object.Equals(PokemonData, other.PokemonData)) return false;
+      if (Name != other.Name) return false;
+      if(!imageUrls_.Equals(other.imageUrls_)) return false;
+      if (Fp != other.Fp) return false;
+      if (Stamina != other.Stamina) return false;
+      if (MaxStamina != other.MaxStamina) return false;
+      if (Type != other.Type) return false;
+      if (Latitude != other.Latitude) return false;
+      if (Longitude != other.Longitude) return false;
+      if (Description != other.Description) return false;
+      if(!modifiers_.Equals(other.modifiers_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (FortId.Length != 0) hash ^= FortId.GetHashCode();
+      if (TeamColor != 0) hash ^= TeamColor.GetHashCode();
+      if (pokemonData_ != null) hash ^= PokemonData.GetHashCode();
+      if (Name.Length != 0) hash ^= Name.GetHashCode();
+      hash ^= imageUrls_.GetHashCode();
+      if (Fp != 0) hash ^= Fp.GetHashCode();
+      if (Stamina != 0) hash ^= Stamina.GetHashCode();
+      if (MaxStamina != 0) hash ^= MaxStamina.GetHashCode();
+      if (Type != 0) hash ^= Type.GetHashCode();
+      if (Latitude != 0D) hash ^= Latitude.GetHashCode();
+      if (Longitude != 0D) hash ^= Longitude.GetHashCode();
+      if (Description.Length != 0) hash ^= Description.GetHashCode();
+      hash ^= modifiers_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (FortId.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(FortId);
+      }
+      if (TeamColor != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) TeamColor);
+      }
+      if (pokemonData_ != null) {
+        output.WriteRawTag(26);
+        output.WriteMessage(PokemonData);
+      }
+      if (Name.Length != 0) {
+        output.WriteRawTag(34);
+        output.WriteString(Name);
+      }
+      imageUrls_.WriteTo(output, _repeated_imageUrls_codec);
+      if (Fp != 0) {
+        output.WriteRawTag(48);
+        output.WriteInt32(Fp);
+      }
+      if (Stamina != 0) {
+        output.WriteRawTag(56);
+        output.WriteInt32(Stamina);
+      }
+      if (MaxStamina != 0) {
+        output.WriteRawTag(64);
+        output.WriteInt32(MaxStamina);
+      }
+      if (Type != 0) {
+        output.WriteRawTag(72);
+        output.WriteEnum((int) Type);
+      }
+      if (Latitude != 0D) {
+        output.WriteRawTag(81);
+        output.WriteDouble(Latitude);
+      }
+      if (Longitude != 0D) {
+        output.WriteRawTag(89);
+        output.WriteDouble(Longitude);
+      }
+      if (Description.Length != 0) {
+        output.WriteRawTag(98);
+        output.WriteString(Description);
+      }
+      modifiers_.WriteTo(output, _repeated_modifiers_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (FortId.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(FortId);
+      }
+      if (TeamColor != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) TeamColor);
+      }
+      if (pokemonData_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonData);
+      }
+      if (Name.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+      }
+      size += imageUrls_.CalculateSize(_repeated_imageUrls_codec);
+      if (Fp != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Fp);
+      }
+      if (Stamina != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stamina);
+      }
+      if (MaxStamina != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxStamina);
+      }
+      if (Type != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
+      }
+      if (Latitude != 0D) {
+        size += 1 + 8;
+      }
+      if (Longitude != 0D) {
+        size += 1 + 8;
+      }
+      if (Description.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
+      }
+      size += modifiers_.CalculateSize(_repeated_modifiers_codec);
+      return size;
+    }
+
+    public void MergeFrom(FortDetailsResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.FortId.Length != 0) {
+        FortId = other.FortId;
+      }
+      if (other.TeamColor != 0) {
+        TeamColor = other.TeamColor;
+      }
+      if (other.pokemonData_ != null) {
+        if (pokemonData_ == null) {
+          pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
+        }
+        PokemonData.MergeFrom(other.PokemonData);
+      }
+      if (other.Name.Length != 0) {
+        Name = other.Name;
+      }
+      imageUrls_.Add(other.imageUrls_);
+      if (other.Fp != 0) {
+        Fp = other.Fp;
+      }
+      if (other.Stamina != 0) {
+        Stamina = other.Stamina;
+      }
+      if (other.MaxStamina != 0) {
+        MaxStamina = other.MaxStamina;
+      }
+      if (other.Type != 0) {
+        Type = other.Type;
+      }
+      if (other.Latitude != 0D) {
+        Latitude = other.Latitude;
+      }
+      if (other.Longitude != 0D) {
+        Longitude = other.Longitude;
+      }
+      if (other.Description.Length != 0) {
+        Description = other.Description;
+      }
+      modifiers_.Add(other.modifiers_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            FortId = input.ReadString();
+            break;
+          }
+          case 16: {
+            teamColor_ = (global::AllEnum.TeamColor) input.ReadEnum();
+            break;
+          }
+          case 26: {
+            if (pokemonData_ == null) {
+              pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
+            }
+            input.ReadMessage(pokemonData_);
+            break;
+          }
+          case 34: {
+            Name = input.ReadString();
+            break;
+          }
+          case 42: {
+            imageUrls_.AddEntriesFrom(input, _repeated_imageUrls_codec);
+            break;
+          }
+          case 48: {
+            Fp = input.ReadInt32();
+            break;
+          }
+          case 56: {
+            Stamina = input.ReadInt32();
+            break;
+          }
+          case 64: {
+            MaxStamina = input.ReadInt32();
+            break;
+          }
+          case 72: {
+            type_ = (global::AllEnum.FortType) input.ReadEnum();
+            break;
+          }
+          case 81: {
+            Latitude = input.ReadDouble();
+            break;
+          }
+          case 89: {
+            Longitude = input.ReadDouble();
+            break;
+          }
+          case 98: {
+            Description = input.ReadString();
+            break;
+          }
+          case 106: {
+            modifiers_.AddEntriesFrom(input, _repeated_modifiers_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class FortModifier : pb::IMessage<FortModifier> {
+    private static readonly pb::MessageParser<FortModifier> _parser = new pb::MessageParser<FortModifier>(() => new FortModifier());
+    public static pb::MessageParser<FortModifier> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[54]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public FortModifier() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public FortModifier(FortModifier other) : this() {
+      itemId_ = other.itemId_;
+      expirationTimestampMs_ = other.expirationTimestampMs_;
+      deployerPlayerCodename_ = other.deployerPlayerCodename_;
+    }
+
+    public FortModifier Clone() {
+      return new FortModifier(this);
+    }
+
+    /// <summary>Field number for the "item_id" field.</summary>
+    public const int ItemIdFieldNumber = 1;
+    private global::AllEnum.ItemId itemId_ = 0;
+    public global::AllEnum.ItemId ItemId {
+      get { return itemId_; }
+      set {
+        itemId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "expiration_timestamp_ms" field.</summary>
+    public const int ExpirationTimestampMsFieldNumber = 2;
+    private long expirationTimestampMs_;
+    public long ExpirationTimestampMs {
+      get { return expirationTimestampMs_; }
+      set {
+        expirationTimestampMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "deployer_player_codename" field.</summary>
+    public const int DeployerPlayerCodenameFieldNumber = 3;
+    private string deployerPlayerCodename_ = "";
+    public string DeployerPlayerCodename {
+      get { return deployerPlayerCodename_; }
+      set {
+        deployerPlayerCodename_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as FortModifier);
+    }
+
+    public bool Equals(FortModifier other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (ItemId != other.ItemId) return false;
+      if (ExpirationTimestampMs != other.ExpirationTimestampMs) return false;
+      if (DeployerPlayerCodename != other.DeployerPlayerCodename) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (ItemId != 0) hash ^= ItemId.GetHashCode();
+      if (ExpirationTimestampMs != 0L) hash ^= ExpirationTimestampMs.GetHashCode();
+      if (DeployerPlayerCodename.Length != 0) hash ^= DeployerPlayerCodename.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (ItemId != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) ItemId);
+      }
+      if (ExpirationTimestampMs != 0L) {
+        output.WriteRawTag(16);
+        output.WriteInt64(ExpirationTimestampMs);
+      }
+      if (DeployerPlayerCodename.Length != 0) {
+        output.WriteRawTag(26);
+        output.WriteString(DeployerPlayerCodename);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (ItemId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ItemId);
+      }
+      if (ExpirationTimestampMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpirationTimestampMs);
+      }
+      if (DeployerPlayerCodename.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(DeployerPlayerCodename);
+      }
+      return size;
+    }
+
+    public void MergeFrom(FortModifier other) {
+      if (other == null) {
+        return;
+      }
+      if (other.ItemId != 0) {
+        ItemId = other.ItemId;
+      }
+      if (other.ExpirationTimestampMs != 0L) {
+        ExpirationTimestampMs = other.ExpirationTimestampMs;
+      }
+      if (other.DeployerPlayerCodename.Length != 0) {
+        DeployerPlayerCodename = other.DeployerPlayerCodename;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            itemId_ = (global::AllEnum.ItemId) input.ReadEnum();
+            break;
+          }
+          case 16: {
+            ExpirationTimestampMs = input.ReadInt64();
+            break;
+          }
+          case 26: {
+            DeployerPlayerCodename = input.ReadString();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class EncounterRequest : pb::IMessage<EncounterRequest> {
+    private static readonly pb::MessageParser<EncounterRequest> _parser = new pb::MessageParser<EncounterRequest>(() => new EncounterRequest());
+    public static pb::MessageParser<EncounterRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[55]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public EncounterRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public EncounterRequest(EncounterRequest other) : this() {
+      encounterId_ = other.encounterId_;
+      spawnpointId_ = other.spawnpointId_;
+      playerLatitude_ = other.playerLatitude_;
+      playerLongitude_ = other.playerLongitude_;
+    }
+
+    public EncounterRequest Clone() {
+      return new EncounterRequest(this);
+    }
+
+    /// <summary>Field number for the "encounter_id" field.</summary>
+    public const int EncounterIdFieldNumber = 1;
+    private ulong encounterId_;
+    public ulong EncounterId {
+      get { return encounterId_; }
+      set {
+        encounterId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "spawnpoint_id" field.</summary>
+    public const int SpawnpointIdFieldNumber = 2;
+    private string spawnpointId_ = "";
+    public string SpawnpointId {
+      get { return spawnpointId_; }
+      set {
+        spawnpointId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "player_latitude" field.</summary>
+    public const int PlayerLatitudeFieldNumber = 3;
+    private double playerLatitude_;
+    public double PlayerLatitude {
+      get { return playerLatitude_; }
+      set {
+        playerLatitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "player_longitude" field.</summary>
+    public const int PlayerLongitudeFieldNumber = 4;
+    private double playerLongitude_;
+    public double PlayerLongitude {
+      get { return playerLongitude_; }
+      set {
+        playerLongitude_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as EncounterRequest);
+    }
+
+    public bool Equals(EncounterRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (EncounterId != other.EncounterId) return false;
+      if (SpawnpointId != other.SpawnpointId) return false;
+      if (PlayerLatitude != other.PlayerLatitude) return false;
+      if (PlayerLongitude != other.PlayerLongitude) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
+      if (SpawnpointId.Length != 0) hash ^= SpawnpointId.GetHashCode();
+      if (PlayerLatitude != 0D) hash ^= PlayerLatitude.GetHashCode();
+      if (PlayerLongitude != 0D) hash ^= PlayerLongitude.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (EncounterId != 0UL) {
+        output.WriteRawTag(9);
+        output.WriteFixed64(EncounterId);
+      }
+      if (SpawnpointId.Length != 0) {
+        output.WriteRawTag(18);
+        output.WriteString(SpawnpointId);
+      }
+      if (PlayerLatitude != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(PlayerLatitude);
+      }
+      if (PlayerLongitude != 0D) {
+        output.WriteRawTag(33);
+        output.WriteDouble(PlayerLongitude);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (EncounterId != 0UL) {
+        size += 1 + 8;
+      }
+      if (SpawnpointId.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnpointId);
+      }
+      if (PlayerLatitude != 0D) {
+        size += 1 + 8;
+      }
+      if (PlayerLongitude != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(EncounterRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.EncounterId != 0UL) {
+        EncounterId = other.EncounterId;
+      }
+      if (other.SpawnpointId.Length != 0) {
+        SpawnpointId = other.SpawnpointId;
+      }
+      if (other.PlayerLatitude != 0D) {
+        PlayerLatitude = other.PlayerLatitude;
+      }
+      if (other.PlayerLongitude != 0D) {
+        PlayerLongitude = other.PlayerLongitude;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            EncounterId = input.ReadFixed64();
+            break;
+          }
+          case 18: {
+            SpawnpointId = input.ReadString();
+            break;
+          }
+          case 25: {
+            PlayerLatitude = input.ReadDouble();
+            break;
+          }
+          case 33: {
+            PlayerLongitude = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class EncounterResponse : pb::IMessage<EncounterResponse> {
+    private static readonly pb::MessageParser<EncounterResponse> _parser = new pb::MessageParser<EncounterResponse>(() => new EncounterResponse());
+    public static pb::MessageParser<EncounterResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[56]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public EncounterResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public EncounterResponse(EncounterResponse other) : this() {
+      WildPokemon = other.wildPokemon_ != null ? other.WildPokemon.Clone() : null;
+      background_ = other.background_;
+      status_ = other.status_;
+      CaptureProbability = other.captureProbability_ != null ? other.CaptureProbability.Clone() : null;
+    }
+
+    public EncounterResponse Clone() {
+      return new EncounterResponse(this);
+    }
+
+    /// <summary>Field number for the "wild_pokemon" field.</summary>
+    public const int WildPokemonFieldNumber = 1;
+    private global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon wildPokemon_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon WildPokemon {
+      get { return wildPokemon_; }
+      set {
+        wildPokemon_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "background" field.</summary>
+    public const int BackgroundFieldNumber = 2;
+    private global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Background background_ = 0;
+    public global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Background Background {
+      get { return background_; }
+      set {
+        background_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "status" field.</summary>
+    public const int StatusFieldNumber = 3;
+    private global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Status status_ = 0;
+    public global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Status Status {
+      get { return status_; }
+      set {
+        status_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "capture_probability" field.</summary>
+    public const int CaptureProbabilityFieldNumber = 4;
+    private global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability captureProbability_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability CaptureProbability {
+      get { return captureProbability_; }
+      set {
+        captureProbability_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as EncounterResponse);
+    }
+
+    public bool Equals(EncounterResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (!object.Equals(WildPokemon, other.WildPokemon)) return false;
+      if (Background != other.Background) return false;
+      if (Status != other.Status) return false;
+      if (!object.Equals(CaptureProbability, other.CaptureProbability)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (wildPokemon_ != null) hash ^= WildPokemon.GetHashCode();
+      if (Background != 0) hash ^= Background.GetHashCode();
+      if (Status != 0) hash ^= Status.GetHashCode();
+      if (captureProbability_ != null) hash ^= CaptureProbability.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (wildPokemon_ != null) {
+        output.WriteRawTag(10);
+        output.WriteMessage(WildPokemon);
+      }
+      if (Background != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) Background);
+      }
+      if (Status != 0) {
+        output.WriteRawTag(24);
+        output.WriteEnum((int) Status);
+      }
+      if (captureProbability_ != null) {
+        output.WriteRawTag(34);
+        output.WriteMessage(CaptureProbability);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (wildPokemon_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(WildPokemon);
+      }
+      if (Background != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Background);
+      }
+      if (Status != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
+      }
+      if (captureProbability_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CaptureProbability);
+      }
+      return size;
+    }
+
+    public void MergeFrom(EncounterResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.wildPokemon_ != null) {
+        if (wildPokemon_ == null) {
+          wildPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon();
+        }
+        WildPokemon.MergeFrom(other.WildPokemon);
+      }
+      if (other.Background != 0) {
+        Background = other.Background;
+      }
+      if (other.Status != 0) {
+        Status = other.Status;
+      }
+      if (other.captureProbability_ != null) {
+        if (captureProbability_ == null) {
+          captureProbability_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability();
+        }
+        CaptureProbability.MergeFrom(other.CaptureProbability);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            if (wildPokemon_ == null) {
+              wildPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon();
+            }
+            input.ReadMessage(wildPokemon_);
+            break;
+          }
+          case 16: {
+            background_ = (global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Background) input.ReadEnum();
+            break;
+          }
+          case 24: {
+            status_ = (global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Status) input.ReadEnum();
+            break;
+          }
+          case 34: {
+            if (captureProbability_ == null) {
+              captureProbability_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability();
+            }
+            input.ReadMessage(captureProbability_);
+            break;
+          }
+        }
+      }
+    }
+
+    #region Nested types
+    /// <summary>Container for nested types declared in the EncounterResponse message type.</summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    public static partial class Types {
+      public enum Background {
+        [pbr::OriginalName("PARK")] Park = 0,
+        [pbr::OriginalName("DESERT")] Desert = 1,
+      }
+
+      public enum Status {
+        [pbr::OriginalName("ENCOUNTER_ERROR")] EncounterError = 0,
+        [pbr::OriginalName("ENCOUNTER_SUCCESS")] EncounterSuccess = 1,
+        [pbr::OriginalName("ENCOUNTER_NOT_FOUND")] EncounterNotFound = 2,
+        [pbr::OriginalName("ENCOUNTER_CLOSED")] EncounterClosed = 3,
+        [pbr::OriginalName("ENCOUNTER_POKEMON_FLED")] EncounterPokemonFled = 4,
+        [pbr::OriginalName("ENCOUNTER_NOT_IN_RANGE")] EncounterNotInRange = 5,
+        [pbr::OriginalName("ENCOUNTER_ALREADY_HAPPENED")] EncounterAlreadyHappened = 6,
+        [pbr::OriginalName("POKEMON_INVENTORY_FULL")] PokemonInventoryFull = 7,
+      }
+
+    }
+    #endregion
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class CaptureProbability : pb::IMessage<CaptureProbability> {
+    private static readonly pb::MessageParser<CaptureProbability> _parser = new pb::MessageParser<CaptureProbability>(() => new CaptureProbability());
+    public static pb::MessageParser<CaptureProbability> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[57]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public CaptureProbability() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public CaptureProbability(CaptureProbability other) : this() {
+      pokeballType_ = other.pokeballType_.Clone();
+      captureProbability_ = other.captureProbability_.Clone();
+      reticleDifficultyScale_ = other.reticleDifficultyScale_;
+    }
+
+    public CaptureProbability Clone() {
+      return new CaptureProbability(this);
+    }
+
+    /// <summary>Field number for the "pokeball_type" field.</summary>
+    public const int PokeballTypeFieldNumber = 1;
+    private static readonly pb::FieldCodec<global::AllEnum.ItemId> _repeated_pokeballType_codec
+        = pb::FieldCodec.ForEnum(10, x => (int) x, x => (global::AllEnum.ItemId) x);
+    private readonly pbc::RepeatedField<global::AllEnum.ItemId> pokeballType_ = new pbc::RepeatedField<global::AllEnum.ItemId>();
+    public pbc::RepeatedField<global::AllEnum.ItemId> PokeballType {
+      get { return pokeballType_; }
+    }
+
+    /// <summary>Field number for the "capture_probability" field.</summary>
+    public const int CaptureProbability_FieldNumber = 2;
+    private static readonly pb::FieldCodec<float> _repeated_captureProbability_codec
+        = pb::FieldCodec.ForFloat(18);
+    private readonly pbc::RepeatedField<float> captureProbability_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> CaptureProbability_ {
+      get { return captureProbability_; }
+    }
+
+    /// <summary>Field number for the "reticle_difficulty_scale" field.</summary>
+    public const int ReticleDifficultyScaleFieldNumber = 12;
+    private double reticleDifficultyScale_;
+    public double ReticleDifficultyScale {
+      get { return reticleDifficultyScale_; }
+      set {
+        reticleDifficultyScale_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as CaptureProbability);
+    }
+
+    public bool Equals(CaptureProbability other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!pokeballType_.Equals(other.pokeballType_)) return false;
+      if(!captureProbability_.Equals(other.captureProbability_)) return false;
+      if (ReticleDifficultyScale != other.ReticleDifficultyScale) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= pokeballType_.GetHashCode();
+      hash ^= captureProbability_.GetHashCode();
+      if (ReticleDifficultyScale != 0D) hash ^= ReticleDifficultyScale.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      pokeballType_.WriteTo(output, _repeated_pokeballType_codec);
+      captureProbability_.WriteTo(output, _repeated_captureProbability_codec);
+      if (ReticleDifficultyScale != 0D) {
+        output.WriteRawTag(97);
+        output.WriteDouble(ReticleDifficultyScale);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      size += pokeballType_.CalculateSize(_repeated_pokeballType_codec);
+      size += captureProbability_.CalculateSize(_repeated_captureProbability_codec);
+      if (ReticleDifficultyScale != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(CaptureProbability other) {
+      if (other == null) {
+        return;
+      }
+      pokeballType_.Add(other.pokeballType_);
+      captureProbability_.Add(other.captureProbability_);
+      if (other.ReticleDifficultyScale != 0D) {
+        ReticleDifficultyScale = other.ReticleDifficultyScale;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10:
+          case 8: {
+            pokeballType_.AddEntriesFrom(input, _repeated_pokeballType_codec);
+            break;
+          }
+          case 18:
+          case 21: {
+            captureProbability_.AddEntriesFrom(input, _repeated_captureProbability_codec);
+            break;
+          }
+          case 97: {
+            ReticleDifficultyScale = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class DiskEncounterRequest : pb::IMessage<DiskEncounterRequest> {
+    private static readonly pb::MessageParser<DiskEncounterRequest> _parser = new pb::MessageParser<DiskEncounterRequest>(() => new DiskEncounterRequest());
+    public static pb::MessageParser<DiskEncounterRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[58]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public DiskEncounterRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public DiskEncounterRequest(DiskEncounterRequest other) : this() {
+      encounterId_ = other.encounterId_;
+      fortId_ = other.fortId_;
+      playerLatitude_ = other.playerLatitude_;
+      playerLongitude_ = other.playerLongitude_;
+    }
+
+    public DiskEncounterRequest Clone() {
+      return new DiskEncounterRequest(this);
+    }
+
+    /// <summary>Field number for the "encounter_id" field.</summary>
+    public const int EncounterIdFieldNumber = 1;
+    private ulong encounterId_;
+    public ulong EncounterId {
+      get { return encounterId_; }
+      set {
+        encounterId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "fort_id" field.</summary>
+    public const int FortIdFieldNumber = 2;
+    private string fortId_ = "";
+    public string FortId {
+      get { return fortId_; }
+      set {
+        fortId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "player_latitude" field.</summary>
+    public const int PlayerLatitudeFieldNumber = 3;
+    private double playerLatitude_;
+    public double PlayerLatitude {
+      get { return playerLatitude_; }
+      set {
+        playerLatitude_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "player_longitude" field.</summary>
+    public const int PlayerLongitudeFieldNumber = 4;
+    private double playerLongitude_;
+    public double PlayerLongitude {
+      get { return playerLongitude_; }
+      set {
+        playerLongitude_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as DiskEncounterRequest);
+    }
+
+    public bool Equals(DiskEncounterRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (EncounterId != other.EncounterId) return false;
+      if (FortId != other.FortId) return false;
+      if (PlayerLatitude != other.PlayerLatitude) return false;
+      if (PlayerLongitude != other.PlayerLongitude) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
+      if (FortId.Length != 0) hash ^= FortId.GetHashCode();
+      if (PlayerLatitude != 0D) hash ^= PlayerLatitude.GetHashCode();
+      if (PlayerLongitude != 0D) hash ^= PlayerLongitude.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (EncounterId != 0UL) {
+        output.WriteRawTag(9);
+        output.WriteFixed64(EncounterId);
+      }
+      if (FortId.Length != 0) {
+        output.WriteRawTag(18);
+        output.WriteString(FortId);
+      }
+      if (PlayerLatitude != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(PlayerLatitude);
+      }
+      if (PlayerLongitude != 0D) {
+        output.WriteRawTag(33);
+        output.WriteDouble(PlayerLongitude);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (EncounterId != 0UL) {
+        size += 1 + 8;
+      }
+      if (FortId.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(FortId);
+      }
+      if (PlayerLatitude != 0D) {
+        size += 1 + 8;
+      }
+      if (PlayerLongitude != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(DiskEncounterRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.EncounterId != 0UL) {
+        EncounterId = other.EncounterId;
+      }
+      if (other.FortId.Length != 0) {
+        FortId = other.FortId;
+      }
+      if (other.PlayerLatitude != 0D) {
+        PlayerLatitude = other.PlayerLatitude;
+      }
+      if (other.PlayerLongitude != 0D) {
+        PlayerLongitude = other.PlayerLongitude;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            EncounterId = input.ReadFixed64();
+            break;
+          }
+          case 18: {
+            FortId = input.ReadString();
+            break;
+          }
+          case 25: {
+            PlayerLatitude = input.ReadDouble();
+            break;
+          }
+          case 33: {
+            PlayerLongitude = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class DiskEncounterResponse : pb::IMessage<DiskEncounterResponse> {
+    private static readonly pb::MessageParser<DiskEncounterResponse> _parser = new pb::MessageParser<DiskEncounterResponse>(() => new DiskEncounterResponse());
+    public static pb::MessageParser<DiskEncounterResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[59]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public DiskEncounterResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public DiskEncounterResponse(DiskEncounterResponse other) : this() {
+      result_ = other.result_;
+      PokemonData = other.pokemonData_ != null ? other.PokemonData.Clone() : null;
+      CaptureProbability = other.captureProbability_ != null ? other.CaptureProbability.Clone() : null;
+    }
+
+    public DiskEncounterResponse Clone() {
+      return new DiskEncounterResponse(this);
+    }
+
+    /// <summary>Field number for the "result" field.</summary>
+    public const int ResultFieldNumber = 1;
+    private global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse.Types.Result result_ = 0;
+    public global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse.Types.Result Result {
+      get { return result_; }
+      set {
+        result_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_data" field.</summary>
+    public const int PokemonDataFieldNumber = 2;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PokemonData pokemonData_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PokemonData PokemonData {
+      get { return pokemonData_; }
+      set {
+        pokemonData_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "capture_probability" field.</summary>
+    public const int CaptureProbabilityFieldNumber = 3;
+    private global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability captureProbability_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability CaptureProbability {
+      get { return captureProbability_; }
+      set {
+        captureProbability_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as DiskEncounterResponse);
+    }
+
+    public bool Equals(DiskEncounterResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Result != other.Result) return false;
+      if (!object.Equals(PokemonData, other.PokemonData)) return false;
+      if (!object.Equals(CaptureProbability, other.CaptureProbability)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Result != 0) hash ^= Result.GetHashCode();
+      if (pokemonData_ != null) hash ^= PokemonData.GetHashCode();
+      if (captureProbability_ != null) hash ^= CaptureProbability.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Result != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) Result);
+      }
+      if (pokemonData_ != null) {
+        output.WriteRawTag(18);
+        output.WriteMessage(PokemonData);
+      }
+      if (captureProbability_ != null) {
+        output.WriteRawTag(26);
+        output.WriteMessage(CaptureProbability);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Result != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Result);
+      }
+      if (pokemonData_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonData);
+      }
+      if (captureProbability_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CaptureProbability);
+      }
+      return size;
+    }
+
+    public void MergeFrom(DiskEncounterResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Result != 0) {
+        Result = other.Result;
+      }
+      if (other.pokemonData_ != null) {
+        if (pokemonData_ == null) {
+          pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
+        }
+        PokemonData.MergeFrom(other.PokemonData);
+      }
+      if (other.captureProbability_ != null) {
+        if (captureProbability_ == null) {
+          captureProbability_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability();
+        }
+        CaptureProbability.MergeFrom(other.CaptureProbability);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            result_ = (global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse.Types.Result) input.ReadEnum();
+            break;
+          }
+          case 18: {
+            if (pokemonData_ == null) {
+              pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
+            }
+            input.ReadMessage(pokemonData_);
+            break;
+          }
+          case 26: {
+            if (captureProbability_ == null) {
+              captureProbability_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability();
+            }
+            input.ReadMessage(captureProbability_);
+            break;
+          }
+        }
+      }
+    }
+
+    #region Nested types
+    /// <summary>Container for nested types declared in the DiskEncounterResponse message type.</summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    public static partial class Types {
+      public enum Result {
+        [pbr::OriginalName("UNKNOWN")] Unknown = 0,
+        [pbr::OriginalName("SUCCESS")] Success = 1,
+        [pbr::OriginalName("NOT_AVAILABLE")] NotAvailable = 2,
+        [pbr::OriginalName("NOT_IN_RANGE")] NotInRange = 3,
+        [pbr::OriginalName("ENCOUNTER_ALREADY_FINISHED")] EncounterAlreadyFinished = 4,
+        [pbr::OriginalName("POKEMON_INVENTORY_FULL")] PokemonInventoryFull = 5,
+      }
+
+    }
+    #endregion
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class CatchPokemonRequest : pb::IMessage<CatchPokemonRequest> {
+    private static readonly pb::MessageParser<CatchPokemonRequest> _parser = new pb::MessageParser<CatchPokemonRequest>(() => new CatchPokemonRequest());
+    public static pb::MessageParser<CatchPokemonRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[60]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public CatchPokemonRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public CatchPokemonRequest(CatchPokemonRequest other) : this() {
+      encounterId_ = other.encounterId_;
+      pokeball_ = other.pokeball_;
+      normalizedReticleSize_ = other.normalizedReticleSize_;
+      spawnPointGuid_ = other.spawnPointGuid_;
+      hitPokemon_ = other.hitPokemon_;
+      spinModifier_ = other.spinModifier_;
+      normalizedHitPosition_ = other.normalizedHitPosition_;
+    }
+
+    public CatchPokemonRequest Clone() {
+      return new CatchPokemonRequest(this);
+    }
+
+    /// <summary>Field number for the "encounter_id" field.</summary>
+    public const int EncounterIdFieldNumber = 1;
+    private ulong encounterId_;
+    public ulong EncounterId {
+      get { return encounterId_; }
+      set {
+        encounterId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokeball" field.</summary>
+    public const int PokeballFieldNumber = 2;
+    private int pokeball_;
+    public int Pokeball {
+      get { return pokeball_; }
+      set {
+        pokeball_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "normalized_reticle_size" field.</summary>
+    public const int NormalizedReticleSizeFieldNumber = 3;
+    private double normalizedReticleSize_;
+    public double NormalizedReticleSize {
+      get { return normalizedReticleSize_; }
+      set {
+        normalizedReticleSize_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "spawn_point_guid" field.</summary>
+    public const int SpawnPointGuidFieldNumber = 4;
+    private string spawnPointGuid_ = "";
+    public string SpawnPointGuid {
+      get { return spawnPointGuid_; }
+      set {
+        spawnPointGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "hit_pokemon" field.</summary>
+    public const int HitPokemonFieldNumber = 5;
+    private bool hitPokemon_;
+    public bool HitPokemon {
+      get { return hitPokemon_; }
+      set {
+        hitPokemon_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "spin_modifier" field.</summary>
+    public const int SpinModifierFieldNumber = 6;
+    private double spinModifier_;
+    public double SpinModifier {
+      get { return spinModifier_; }
+      set {
+        spinModifier_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "NormalizedHitPosition" field.</summary>
+    public const int NormalizedHitPositionFieldNumber = 7;
+    private double normalizedHitPosition_;
+    public double NormalizedHitPosition {
+      get { return normalizedHitPosition_; }
+      set {
+        normalizedHitPosition_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as CatchPokemonRequest);
+    }
+
+    public bool Equals(CatchPokemonRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (EncounterId != other.EncounterId) return false;
+      if (Pokeball != other.Pokeball) return false;
+      if (NormalizedReticleSize != other.NormalizedReticleSize) return false;
+      if (SpawnPointGuid != other.SpawnPointGuid) return false;
+      if (HitPokemon != other.HitPokemon) return false;
+      if (SpinModifier != other.SpinModifier) return false;
+      if (NormalizedHitPosition != other.NormalizedHitPosition) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
+      if (Pokeball != 0) hash ^= Pokeball.GetHashCode();
+      if (NormalizedReticleSize != 0D) hash ^= NormalizedReticleSize.GetHashCode();
+      if (SpawnPointGuid.Length != 0) hash ^= SpawnPointGuid.GetHashCode();
+      if (HitPokemon != false) hash ^= HitPokemon.GetHashCode();
+      if (SpinModifier != 0D) hash ^= SpinModifier.GetHashCode();
+      if (NormalizedHitPosition != 0D) hash ^= NormalizedHitPosition.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (EncounterId != 0UL) {
+        output.WriteRawTag(9);
+        output.WriteFixed64(EncounterId);
+      }
+      if (Pokeball != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(Pokeball);
+      }
+      if (NormalizedReticleSize != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(NormalizedReticleSize);
+      }
+      if (SpawnPointGuid.Length != 0) {
+        output.WriteRawTag(34);
+        output.WriteString(SpawnPointGuid);
+      }
+      if (HitPokemon != false) {
+        output.WriteRawTag(40);
+        output.WriteBool(HitPokemon);
+      }
+      if (SpinModifier != 0D) {
+        output.WriteRawTag(49);
+        output.WriteDouble(SpinModifier);
+      }
+      if (NormalizedHitPosition != 0D) {
+        output.WriteRawTag(57);
+        output.WriteDouble(NormalizedHitPosition);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (EncounterId != 0UL) {
+        size += 1 + 8;
+      }
+      if (Pokeball != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Pokeball);
+      }
+      if (NormalizedReticleSize != 0D) {
+        size += 1 + 8;
+      }
+      if (SpawnPointGuid.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnPointGuid);
+      }
+      if (HitPokemon != false) {
+        size += 1 + 1;
+      }
+      if (SpinModifier != 0D) {
+        size += 1 + 8;
+      }
+      if (NormalizedHitPosition != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(CatchPokemonRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.EncounterId != 0UL) {
+        EncounterId = other.EncounterId;
+      }
+      if (other.Pokeball != 0) {
+        Pokeball = other.Pokeball;
+      }
+      if (other.NormalizedReticleSize != 0D) {
+        NormalizedReticleSize = other.NormalizedReticleSize;
+      }
+      if (other.SpawnPointGuid.Length != 0) {
+        SpawnPointGuid = other.SpawnPointGuid;
+      }
+      if (other.HitPokemon != false) {
+        HitPokemon = other.HitPokemon;
+      }
+      if (other.SpinModifier != 0D) {
+        SpinModifier = other.SpinModifier;
+      }
+      if (other.NormalizedHitPosition != 0D) {
+        NormalizedHitPosition = other.NormalizedHitPosition;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            EncounterId = input.ReadFixed64();
+            break;
+          }
+          case 16: {
+            Pokeball = input.ReadInt32();
+            break;
+          }
+          case 25: {
+            NormalizedReticleSize = input.ReadDouble();
+            break;
+          }
+          case 34: {
+            SpawnPointGuid = input.ReadString();
+            break;
+          }
+          case 40: {
+            HitPokemon = input.ReadBool();
+            break;
+          }
+          case 49: {
+            SpinModifier = input.ReadDouble();
+            break;
+          }
+          case 57: {
+            NormalizedHitPosition = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class CatchPokemonResponse : pb::IMessage<CatchPokemonResponse> {
+    private static readonly pb::MessageParser<CatchPokemonResponse> _parser = new pb::MessageParser<CatchPokemonResponse>(() => new CatchPokemonResponse());
+    public static pb::MessageParser<CatchPokemonResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[61]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public CatchPokemonResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public CatchPokemonResponse(CatchPokemonResponse other) : this() {
+      status_ = other.status_;
+      missPercent_ = other.missPercent_;
+      capturedPokemonId_ = other.capturedPokemonId_;
+      Scores = other.scores_ != null ? other.Scores.Clone() : null;
+    }
+
+    public CatchPokemonResponse Clone() {
+      return new CatchPokemonResponse(this);
+    }
+
+    /// <summary>Field number for the "status" field.</summary>
+    public const int StatusFieldNumber = 1;
+    private global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.CatchStatus status_ = 0;
+    public global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.CatchStatus Status {
+      get { return status_; }
+      set {
+        status_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "miss_percent" field.</summary>
+    public const int MissPercentFieldNumber = 2;
+    private double missPercent_;
+    public double MissPercent {
+      get { return missPercent_; }
+      set {
+        missPercent_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "captured_pokemon_id" field.</summary>
+    public const int CapturedPokemonIdFieldNumber = 3;
+    private ulong capturedPokemonId_;
+    public ulong CapturedPokemonId {
+      get { return capturedPokemonId_; }
+      set {
+        capturedPokemonId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "scores" field.</summary>
+    public const int ScoresFieldNumber = 4;
+    private global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore scores_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore Scores {
+      get { return scores_; }
+      set {
+        scores_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as CatchPokemonResponse);
+    }
+
+    public bool Equals(CatchPokemonResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Status != other.Status) return false;
+      if (MissPercent != other.MissPercent) return false;
+      if (CapturedPokemonId != other.CapturedPokemonId) return false;
+      if (!object.Equals(Scores, other.Scores)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Status != 0) hash ^= Status.GetHashCode();
+      if (MissPercent != 0D) hash ^= MissPercent.GetHashCode();
+      if (CapturedPokemonId != 0UL) hash ^= CapturedPokemonId.GetHashCode();
+      if (scores_ != null) hash ^= Scores.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Status != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) Status);
+      }
+      if (MissPercent != 0D) {
+        output.WriteRawTag(17);
+        output.WriteDouble(MissPercent);
+      }
+      if (CapturedPokemonId != 0UL) {
+        output.WriteRawTag(24);
+        output.WriteUInt64(CapturedPokemonId);
+      }
+      if (scores_ != null) {
+        output.WriteRawTag(34);
+        output.WriteMessage(Scores);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Status != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
+      }
+      if (MissPercent != 0D) {
+        size += 1 + 8;
+      }
+      if (CapturedPokemonId != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(CapturedPokemonId);
+      }
+      if (scores_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Scores);
+      }
+      return size;
+    }
+
+    public void MergeFrom(CatchPokemonResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Status != 0) {
+        Status = other.Status;
+      }
+      if (other.MissPercent != 0D) {
+        MissPercent = other.MissPercent;
+      }
+      if (other.CapturedPokemonId != 0UL) {
+        CapturedPokemonId = other.CapturedPokemonId;
+      }
+      if (other.scores_ != null) {
+        if (scores_ == null) {
+          scores_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore();
+        }
+        Scores.MergeFrom(other.Scores);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            status_ = (global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.CatchStatus) input.ReadEnum();
+            break;
+          }
+          case 17: {
+            MissPercent = input.ReadDouble();
+            break;
+          }
+          case 24: {
+            CapturedPokemonId = input.ReadUInt64();
+            break;
+          }
+          case 34: {
+            if (scores_ == null) {
+              scores_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore();
+            }
+            input.ReadMessage(scores_);
+            break;
+          }
+        }
+      }
+    }
+
+    #region Nested types
+    /// <summary>Container for nested types declared in the CatchPokemonResponse message type.</summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    public static partial class Types {
+      public enum CatchStatus {
+        [pbr::OriginalName("CATCH_ERROR")] CatchError = 0,
+        [pbr::OriginalName("CATCH_SUCCESS")] CatchSuccess = 1,
+        [pbr::OriginalName("CATCH_ESCAPE")] CatchEscape = 2,
+        [pbr::OriginalName("CATCH_FLEE")] CatchFlee = 3,
+        [pbr::OriginalName("CATCH_MISSED")] CatchMissed = 4,
+      }
+
+    }
+    #endregion
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class CaptureScore : pb::IMessage<CaptureScore> {
+    private static readonly pb::MessageParser<CaptureScore> _parser = new pb::MessageParser<CaptureScore>(() => new CaptureScore());
+    public static pb::MessageParser<CaptureScore> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[62]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public CaptureScore() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public CaptureScore(CaptureScore other) : this() {
+      activityType_ = other.activityType_.Clone();
+      xp_ = other.xp_.Clone();
+      candy_ = other.candy_.Clone();
+      stardust_ = other.stardust_.Clone();
+    }
+
+    public CaptureScore Clone() {
+      return new CaptureScore(this);
+    }
+
+    /// <summary>Field number for the "activity_type" field.</summary>
+    public const int ActivityTypeFieldNumber = 1;
+    private static readonly pb::FieldCodec<global::AllEnum.ActivityType> _repeated_activityType_codec
+        = pb::FieldCodec.ForEnum(10, x => (int) x, x => (global::AllEnum.ActivityType) x);
+    private readonly pbc::RepeatedField<global::AllEnum.ActivityType> activityType_ = new pbc::RepeatedField<global::AllEnum.ActivityType>();
+    public pbc::RepeatedField<global::AllEnum.ActivityType> ActivityType {
+      get { return activityType_; }
+    }
+
+    /// <summary>Field number for the "xp" field.</summary>
+    public const int XpFieldNumber = 2;
+    private static readonly pb::FieldCodec<int> _repeated_xp_codec
+        = pb::FieldCodec.ForInt32(18);
+    private readonly pbc::RepeatedField<int> xp_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> Xp {
+      get { return xp_; }
+    }
+
+    /// <summary>Field number for the "candy" field.</summary>
+    public const int CandyFieldNumber = 3;
+    private static readonly pb::FieldCodec<int> _repeated_candy_codec
+        = pb::FieldCodec.ForInt32(26);
+    private readonly pbc::RepeatedField<int> candy_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> Candy {
+      get { return candy_; }
+    }
+
+    /// <summary>Field number for the "stardust" field.</summary>
+    public const int StardustFieldNumber = 4;
+    private static readonly pb::FieldCodec<int> _repeated_stardust_codec
+        = pb::FieldCodec.ForInt32(34);
+    private readonly pbc::RepeatedField<int> stardust_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> Stardust {
+      get { return stardust_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as CaptureScore);
+    }
+
+    public bool Equals(CaptureScore other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!activityType_.Equals(other.activityType_)) return false;
+      if(!xp_.Equals(other.xp_)) return false;
+      if(!candy_.Equals(other.candy_)) return false;
+      if(!stardust_.Equals(other.stardust_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= activityType_.GetHashCode();
+      hash ^= xp_.GetHashCode();
+      hash ^= candy_.GetHashCode();
+      hash ^= stardust_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      activityType_.WriteTo(output, _repeated_activityType_codec);
+      xp_.WriteTo(output, _repeated_xp_codec);
+      candy_.WriteTo(output, _repeated_candy_codec);
+      stardust_.WriteTo(output, _repeated_stardust_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      size += activityType_.CalculateSize(_repeated_activityType_codec);
+      size += xp_.CalculateSize(_repeated_xp_codec);
+      size += candy_.CalculateSize(_repeated_candy_codec);
+      size += stardust_.CalculateSize(_repeated_stardust_codec);
+      return size;
+    }
+
+    public void MergeFrom(CaptureScore other) {
+      if (other == null) {
+        return;
+      }
+      activityType_.Add(other.activityType_);
+      xp_.Add(other.xp_);
+      candy_.Add(other.candy_);
+      stardust_.Add(other.stardust_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10:
+          case 8: {
+            activityType_.AddEntriesFrom(input, _repeated_activityType_codec);
+            break;
+          }
+          case 18:
+          case 16: {
+            xp_.AddEntriesFrom(input, _repeated_xp_codec);
+            break;
+          }
+          case 26:
+          case 24: {
+            candy_.AddEntriesFrom(input, _repeated_candy_codec);
+            break;
+          }
+          case 34:
+          case 32: {
+            stardust_.AddEntriesFrom(input, _repeated_stardust_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  /// <summary>
+  ///  No message needed.
+  /// </summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class CheckAwardedBadgesRequest : pb::IMessage<CheckAwardedBadgesRequest> {
+    private static readonly pb::MessageParser<CheckAwardedBadgesRequest> _parser = new pb::MessageParser<CheckAwardedBadgesRequest>(() => new CheckAwardedBadgesRequest());
+    public static pb::MessageParser<CheckAwardedBadgesRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[63]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public CheckAwardedBadgesRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public CheckAwardedBadgesRequest(CheckAwardedBadgesRequest other) : this() {
+    }
+
+    public CheckAwardedBadgesRequest Clone() {
+      return new CheckAwardedBadgesRequest(this);
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as CheckAwardedBadgesRequest);
+    }
+
+    public bool Equals(CheckAwardedBadgesRequest 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(CheckAwardedBadgesRequest other) {
+      if (other == null) {
+        return;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+        }
+      }
+    }
+
+  }
+
+  /// <summary>
+  ///  Confirm if this is correct, I think that it should be "repeated AwardedBadge awarded_badges" or something like that.
+  /// </summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class CheckAwardedBadgesResponse : pb::IMessage<CheckAwardedBadgesResponse> {
+    private static readonly pb::MessageParser<CheckAwardedBadgesResponse> _parser = new pb::MessageParser<CheckAwardedBadgesResponse>(() => new CheckAwardedBadgesResponse());
+    public static pb::MessageParser<CheckAwardedBadgesResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[64]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public CheckAwardedBadgesResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public CheckAwardedBadgesResponse(CheckAwardedBadgesResponse other) : this() {
+      success_ = other.success_;
+      awardedBadges_ = other.awardedBadges_.Clone();
+      awardedBadgeLevels_ = other.awardedBadgeLevels_.Clone();
+    }
+
+    public CheckAwardedBadgesResponse Clone() {
+      return new CheckAwardedBadgesResponse(this);
+    }
+
+    /// <summary>Field number for the "success" field.</summary>
+    public const int SuccessFieldNumber = 1;
+    private bool success_;
+    public bool Success {
+      get { return success_; }
+      set {
+        success_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "awarded_badges" field.</summary>
+    public const int AwardedBadgesFieldNumber = 2;
+    private static readonly pb::FieldCodec<global::AllEnum.BadgeType> _repeated_awardedBadges_codec
+        = pb::FieldCodec.ForEnum(18, x => (int) x, x => (global::AllEnum.BadgeType) x);
+    private readonly pbc::RepeatedField<global::AllEnum.BadgeType> awardedBadges_ = new pbc::RepeatedField<global::AllEnum.BadgeType>();
+    public pbc::RepeatedField<global::AllEnum.BadgeType> AwardedBadges {
+      get { return awardedBadges_; }
+    }
+
+    /// <summary>Field number for the "awarded_badge_levels" field.</summary>
+    public const int AwardedBadgeLevelsFieldNumber = 3;
+    private static readonly pb::FieldCodec<int> _repeated_awardedBadgeLevels_codec
+        = pb::FieldCodec.ForInt32(26);
+    private readonly pbc::RepeatedField<int> awardedBadgeLevels_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> AwardedBadgeLevels {
+      get { return awardedBadgeLevels_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as CheckAwardedBadgesResponse);
+    }
+
+    public bool Equals(CheckAwardedBadgesResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Success != other.Success) return false;
+      if(!awardedBadges_.Equals(other.awardedBadges_)) return false;
+      if(!awardedBadgeLevels_.Equals(other.awardedBadgeLevels_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Success != false) hash ^= Success.GetHashCode();
+      hash ^= awardedBadges_.GetHashCode();
+      hash ^= awardedBadgeLevels_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Success != false) {
+        output.WriteRawTag(8);
+        output.WriteBool(Success);
+      }
+      awardedBadges_.WriteTo(output, _repeated_awardedBadges_codec);
+      awardedBadgeLevels_.WriteTo(output, _repeated_awardedBadgeLevels_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Success != false) {
+        size += 1 + 1;
+      }
+      size += awardedBadges_.CalculateSize(_repeated_awardedBadges_codec);
+      size += awardedBadgeLevels_.CalculateSize(_repeated_awardedBadgeLevels_codec);
+      return size;
+    }
+
+    public void MergeFrom(CheckAwardedBadgesResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Success != false) {
+        Success = other.Success;
+      }
+      awardedBadges_.Add(other.awardedBadges_);
+      awardedBadgeLevels_.Add(other.awardedBadgeLevels_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Success = input.ReadBool();
+            break;
+          }
+          case 18:
+          case 16: {
+            awardedBadges_.AddEntriesFrom(input, _repeated_awardedBadges_codec);
+            break;
+          }
+          case 26:
+          case 24: {
+            awardedBadgeLevels_.AddEntriesFrom(input, _repeated_awardedBadgeLevels_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class EquippedBadgeSettings : pb::IMessage<EquippedBadgeSettings> {
+    private static readonly pb::MessageParser<EquippedBadgeSettings> _parser = new pb::MessageParser<EquippedBadgeSettings>(() => new EquippedBadgeSettings());
+    public static pb::MessageParser<EquippedBadgeSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[65]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public EquippedBadgeSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public EquippedBadgeSettings(EquippedBadgeSettings other) : this() {
+      equipBadgeCooldownMs_ = other.equipBadgeCooldownMs_;
+      catchProbabilityBonus_ = other.catchProbabilityBonus_.Clone();
+      fleeProbabilityBonus_ = other.fleeProbabilityBonus_.Clone();
+    }
+
+    public EquippedBadgeSettings Clone() {
+      return new EquippedBadgeSettings(this);
+    }
+
+    /// <summary>Field number for the "equip_badge_cooldown_ms" field.</summary>
+    public const int EquipBadgeCooldownMsFieldNumber = 1;
+    private long equipBadgeCooldownMs_;
+    public long EquipBadgeCooldownMs {
+      get { return equipBadgeCooldownMs_; }
+      set {
+        equipBadgeCooldownMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "catch_probability_bonus" field.</summary>
+    public const int CatchProbabilityBonusFieldNumber = 2;
+    private static readonly pb::FieldCodec<float> _repeated_catchProbabilityBonus_codec
+        = pb::FieldCodec.ForFloat(18);
+    private readonly pbc::RepeatedField<float> catchProbabilityBonus_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> CatchProbabilityBonus {
+      get { return catchProbabilityBonus_; }
+    }
+
+    /// <summary>Field number for the "flee_probability_bonus" field.</summary>
+    public const int FleeProbabilityBonusFieldNumber = 3;
+    private static readonly pb::FieldCodec<float> _repeated_fleeProbabilityBonus_codec
+        = pb::FieldCodec.ForFloat(26);
+    private readonly pbc::RepeatedField<float> fleeProbabilityBonus_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> FleeProbabilityBonus {
+      get { return fleeProbabilityBonus_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as EquippedBadgeSettings);
+    }
+
+    public bool Equals(EquippedBadgeSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (EquipBadgeCooldownMs != other.EquipBadgeCooldownMs) return false;
+      if(!catchProbabilityBonus_.Equals(other.catchProbabilityBonus_)) return false;
+      if(!fleeProbabilityBonus_.Equals(other.fleeProbabilityBonus_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (EquipBadgeCooldownMs != 0L) hash ^= EquipBadgeCooldownMs.GetHashCode();
+      hash ^= catchProbabilityBonus_.GetHashCode();
+      hash ^= fleeProbabilityBonus_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (EquipBadgeCooldownMs != 0L) {
+        output.WriteRawTag(8);
+        output.WriteInt64(EquipBadgeCooldownMs);
+      }
+      catchProbabilityBonus_.WriteTo(output, _repeated_catchProbabilityBonus_codec);
+      fleeProbabilityBonus_.WriteTo(output, _repeated_fleeProbabilityBonus_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (EquipBadgeCooldownMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(EquipBadgeCooldownMs);
+      }
+      size += catchProbabilityBonus_.CalculateSize(_repeated_catchProbabilityBonus_codec);
+      size += fleeProbabilityBonus_.CalculateSize(_repeated_fleeProbabilityBonus_codec);
+      return size;
+    }
+
+    public void MergeFrom(EquippedBadgeSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.EquipBadgeCooldownMs != 0L) {
+        EquipBadgeCooldownMs = other.EquipBadgeCooldownMs;
+      }
+      catchProbabilityBonus_.Add(other.catchProbabilityBonus_);
+      fleeProbabilityBonus_.Add(other.fleeProbabilityBonus_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            EquipBadgeCooldownMs = input.ReadInt64();
+            break;
+          }
+          case 18:
+          case 21: {
+            catchProbabilityBonus_.AddEntriesFrom(input, _repeated_catchProbabilityBonus_codec);
+            break;
+          }
+          case 26:
+          case 29: {
+            fleeProbabilityBonus_.AddEntriesFrom(input, _repeated_fleeProbabilityBonus_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PokemonUpgradeSettings : pb::IMessage<PokemonUpgradeSettings> {
+    private static readonly pb::MessageParser<PokemonUpgradeSettings> _parser = new pb::MessageParser<PokemonUpgradeSettings>(() => new PokemonUpgradeSettings());
+    public static pb::MessageParser<PokemonUpgradeSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[66]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PokemonUpgradeSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PokemonUpgradeSettings(PokemonUpgradeSettings other) : this() {
+      upgradesPerLevel_ = other.upgradesPerLevel_;
+      allowedLevelsAbovePlayer_ = other.allowedLevelsAbovePlayer_;
+      candyCost_ = other.candyCost_.Clone();
+      stardustCost_ = other.stardustCost_.Clone();
+    }
+
+    public PokemonUpgradeSettings Clone() {
+      return new PokemonUpgradeSettings(this);
+    }
+
+    /// <summary>Field number for the "upgrades_per_level" field.</summary>
+    public const int UpgradesPerLevelFieldNumber = 1;
+    private int upgradesPerLevel_;
+    public int UpgradesPerLevel {
+      get { return upgradesPerLevel_; }
+      set {
+        upgradesPerLevel_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "allowed_levels_above_player" field.</summary>
+    public const int AllowedLevelsAbovePlayerFieldNumber = 2;
+    private int allowedLevelsAbovePlayer_;
+    public int AllowedLevelsAbovePlayer {
+      get { return allowedLevelsAbovePlayer_; }
+      set {
+        allowedLevelsAbovePlayer_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "candy_cost" field.</summary>
+    public const int CandyCostFieldNumber = 3;
+    private static readonly pb::FieldCodec<int> _repeated_candyCost_codec
+        = pb::FieldCodec.ForInt32(26);
+    private readonly pbc::RepeatedField<int> candyCost_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> CandyCost {
+      get { return candyCost_; }
+    }
+
+    /// <summary>Field number for the "stardust_cost" field.</summary>
+    public const int StardustCostFieldNumber = 4;
+    private static readonly pb::FieldCodec<int> _repeated_stardustCost_codec
+        = pb::FieldCodec.ForInt32(34);
+    private readonly pbc::RepeatedField<int> stardustCost_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> StardustCost {
+      get { return stardustCost_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PokemonUpgradeSettings);
+    }
+
+    public bool Equals(PokemonUpgradeSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (UpgradesPerLevel != other.UpgradesPerLevel) return false;
+      if (AllowedLevelsAbovePlayer != other.AllowedLevelsAbovePlayer) return false;
+      if(!candyCost_.Equals(other.candyCost_)) return false;
+      if(!stardustCost_.Equals(other.stardustCost_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (UpgradesPerLevel != 0) hash ^= UpgradesPerLevel.GetHashCode();
+      if (AllowedLevelsAbovePlayer != 0) hash ^= AllowedLevelsAbovePlayer.GetHashCode();
+      hash ^= candyCost_.GetHashCode();
+      hash ^= stardustCost_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (UpgradesPerLevel != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(UpgradesPerLevel);
+      }
+      if (AllowedLevelsAbovePlayer != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(AllowedLevelsAbovePlayer);
+      }
+      candyCost_.WriteTo(output, _repeated_candyCost_codec);
+      stardustCost_.WriteTo(output, _repeated_stardustCost_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (UpgradesPerLevel != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UpgradesPerLevel);
+      }
+      if (AllowedLevelsAbovePlayer != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(AllowedLevelsAbovePlayer);
+      }
+      size += candyCost_.CalculateSize(_repeated_candyCost_codec);
+      size += stardustCost_.CalculateSize(_repeated_stardustCost_codec);
+      return size;
+    }
+
+    public void MergeFrom(PokemonUpgradeSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.UpgradesPerLevel != 0) {
+        UpgradesPerLevel = other.UpgradesPerLevel;
+      }
+      if (other.AllowedLevelsAbovePlayer != 0) {
+        AllowedLevelsAbovePlayer = other.AllowedLevelsAbovePlayer;
+      }
+      candyCost_.Add(other.candyCost_);
+      stardustCost_.Add(other.stardustCost_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            UpgradesPerLevel = input.ReadInt32();
+            break;
+          }
+          case 16: {
+            AllowedLevelsAbovePlayer = input.ReadInt32();
+            break;
+          }
+          case 26:
+          case 24: {
+            candyCost_.AddEntriesFrom(input, _repeated_candyCost_codec);
+            break;
+          }
+          case 34:
+          case 32: {
+            stardustCost_.AddEntriesFrom(input, _repeated_stardustCost_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class IapSettings : pb::IMessage<IapSettings> {
+    private static readonly pb::MessageParser<IapSettings> _parser = new pb::MessageParser<IapSettings>(() => new IapSettings());
+    public static pb::MessageParser<IapSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[67]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public IapSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public IapSettings(IapSettings other) : this() {
+      dailyBonusCoins_ = other.dailyBonusCoins_;
+      dailyDefenderBonusPerPokemon_ = other.dailyDefenderBonusPerPokemon_.Clone();
+      dailyDefenderBonusMaxDefenders_ = other.dailyDefenderBonusMaxDefenders_;
+      dailyDefenderBonusCurrency_ = other.dailyDefenderBonusCurrency_.Clone();
+      minTimeBetweenClaimsMs_ = other.minTimeBetweenClaimsMs_;
+      dailyBonusEnabled_ = other.dailyBonusEnabled_;
+      dailyDefenderBonusEnabled_ = other.dailyDefenderBonusEnabled_;
+    }
+
+    public IapSettings Clone() {
+      return new IapSettings(this);
+    }
+
+    /// <summary>Field number for the "daily_bonus_coins" field.</summary>
+    public const int DailyBonusCoinsFieldNumber = 1;
+    private int dailyBonusCoins_;
+    public int DailyBonusCoins {
+      get { return dailyBonusCoins_; }
+      set {
+        dailyBonusCoins_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "daily_defender_bonus_per_pokemon" field.</summary>
+    public const int DailyDefenderBonusPerPokemonFieldNumber = 2;
+    private static readonly pb::FieldCodec<int> _repeated_dailyDefenderBonusPerPokemon_codec
+        = pb::FieldCodec.ForInt32(18);
+    private readonly pbc::RepeatedField<int> dailyDefenderBonusPerPokemon_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> DailyDefenderBonusPerPokemon {
+      get { return dailyDefenderBonusPerPokemon_; }
+    }
+
+    /// <summary>Field number for the "daily_defender_bonus_max_defenders" field.</summary>
+    public const int DailyDefenderBonusMaxDefendersFieldNumber = 3;
+    private int dailyDefenderBonusMaxDefenders_;
+    public int DailyDefenderBonusMaxDefenders {
+      get { return dailyDefenderBonusMaxDefenders_; }
+      set {
+        dailyDefenderBonusMaxDefenders_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "daily_defender_bonus_currency" field.</summary>
+    public const int DailyDefenderBonusCurrencyFieldNumber = 4;
+    private static readonly pb::FieldCodec<string> _repeated_dailyDefenderBonusCurrency_codec
+        = pb::FieldCodec.ForString(34);
+    private readonly pbc::RepeatedField<string> dailyDefenderBonusCurrency_ = new pbc::RepeatedField<string>();
+    public pbc::RepeatedField<string> DailyDefenderBonusCurrency {
+      get { return dailyDefenderBonusCurrency_; }
+    }
+
+    /// <summary>Field number for the "min_time_between_claims_ms" field.</summary>
+    public const int MinTimeBetweenClaimsMsFieldNumber = 5;
+    private long minTimeBetweenClaimsMs_;
+    public long MinTimeBetweenClaimsMs {
+      get { return minTimeBetweenClaimsMs_; }
+      set {
+        minTimeBetweenClaimsMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "daily_bonus_enabled" field.</summary>
+    public const int DailyBonusEnabledFieldNumber = 6;
+    private bool dailyBonusEnabled_;
+    public bool DailyBonusEnabled {
+      get { return dailyBonusEnabled_; }
+      set {
+        dailyBonusEnabled_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "daily_defender_bonus_enabled" field.</summary>
+    public const int DailyDefenderBonusEnabledFieldNumber = 7;
+    private bool dailyDefenderBonusEnabled_;
+    public bool DailyDefenderBonusEnabled {
+      get { return dailyDefenderBonusEnabled_; }
+      set {
+        dailyDefenderBonusEnabled_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as IapSettings);
+    }
+
+    public bool Equals(IapSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (DailyBonusCoins != other.DailyBonusCoins) return false;
+      if(!dailyDefenderBonusPerPokemon_.Equals(other.dailyDefenderBonusPerPokemon_)) return false;
+      if (DailyDefenderBonusMaxDefenders != other.DailyDefenderBonusMaxDefenders) return false;
+      if(!dailyDefenderBonusCurrency_.Equals(other.dailyDefenderBonusCurrency_)) return false;
+      if (MinTimeBetweenClaimsMs != other.MinTimeBetweenClaimsMs) return false;
+      if (DailyBonusEnabled != other.DailyBonusEnabled) return false;
+      if (DailyDefenderBonusEnabled != other.DailyDefenderBonusEnabled) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (DailyBonusCoins != 0) hash ^= DailyBonusCoins.GetHashCode();
+      hash ^= dailyDefenderBonusPerPokemon_.GetHashCode();
+      if (DailyDefenderBonusMaxDefenders != 0) hash ^= DailyDefenderBonusMaxDefenders.GetHashCode();
+      hash ^= dailyDefenderBonusCurrency_.GetHashCode();
+      if (MinTimeBetweenClaimsMs != 0L) hash ^= MinTimeBetweenClaimsMs.GetHashCode();
+      if (DailyBonusEnabled != false) hash ^= DailyBonusEnabled.GetHashCode();
+      if (DailyDefenderBonusEnabled != false) hash ^= DailyDefenderBonusEnabled.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (DailyBonusCoins != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(DailyBonusCoins);
+      }
+      dailyDefenderBonusPerPokemon_.WriteTo(output, _repeated_dailyDefenderBonusPerPokemon_codec);
+      if (DailyDefenderBonusMaxDefenders != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(DailyDefenderBonusMaxDefenders);
+      }
+      dailyDefenderBonusCurrency_.WriteTo(output, _repeated_dailyDefenderBonusCurrency_codec);
+      if (MinTimeBetweenClaimsMs != 0L) {
+        output.WriteRawTag(40);
+        output.WriteInt64(MinTimeBetweenClaimsMs);
+      }
+      if (DailyBonusEnabled != false) {
+        output.WriteRawTag(48);
+        output.WriteBool(DailyBonusEnabled);
+      }
+      if (DailyDefenderBonusEnabled != false) {
+        output.WriteRawTag(56);
+        output.WriteBool(DailyDefenderBonusEnabled);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (DailyBonusCoins != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DailyBonusCoins);
+      }
+      size += dailyDefenderBonusPerPokemon_.CalculateSize(_repeated_dailyDefenderBonusPerPokemon_codec);
+      if (DailyDefenderBonusMaxDefenders != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DailyDefenderBonusMaxDefenders);
+      }
+      size += dailyDefenderBonusCurrency_.CalculateSize(_repeated_dailyDefenderBonusCurrency_codec);
+      if (MinTimeBetweenClaimsMs != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(MinTimeBetweenClaimsMs);
+      }
+      if (DailyBonusEnabled != false) {
+        size += 1 + 1;
+      }
+      if (DailyDefenderBonusEnabled != false) {
+        size += 1 + 1;
+      }
+      return size;
+    }
+
+    public void MergeFrom(IapSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.DailyBonusCoins != 0) {
+        DailyBonusCoins = other.DailyBonusCoins;
+      }
+      dailyDefenderBonusPerPokemon_.Add(other.dailyDefenderBonusPerPokemon_);
+      if (other.DailyDefenderBonusMaxDefenders != 0) {
+        DailyDefenderBonusMaxDefenders = other.DailyDefenderBonusMaxDefenders;
+      }
+      dailyDefenderBonusCurrency_.Add(other.dailyDefenderBonusCurrency_);
+      if (other.MinTimeBetweenClaimsMs != 0L) {
+        MinTimeBetweenClaimsMs = other.MinTimeBetweenClaimsMs;
+      }
+      if (other.DailyBonusEnabled != false) {
+        DailyBonusEnabled = other.DailyBonusEnabled;
+      }
+      if (other.DailyDefenderBonusEnabled != false) {
+        DailyDefenderBonusEnabled = other.DailyDefenderBonusEnabled;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            DailyBonusCoins = input.ReadInt32();
+            break;
+          }
+          case 18:
+          case 16: {
+            dailyDefenderBonusPerPokemon_.AddEntriesFrom(input, _repeated_dailyDefenderBonusPerPokemon_codec);
+            break;
+          }
+          case 24: {
+            DailyDefenderBonusMaxDefenders = input.ReadInt32();
+            break;
+          }
+          case 34: {
+            dailyDefenderBonusCurrency_.AddEntriesFrom(input, _repeated_dailyDefenderBonusCurrency_codec);
+            break;
+          }
+          case 40: {
+            MinTimeBetweenClaimsMs = input.ReadInt64();
+            break;
+          }
+          case 48: {
+            DailyBonusEnabled = input.ReadBool();
+            break;
+          }
+          case 56: {
+            DailyDefenderBonusEnabled = input.ReadBool();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class IapItemDisplay : pb::IMessage<IapItemDisplay> {
+    private static readonly pb::MessageParser<IapItemDisplay> _parser = new pb::MessageParser<IapItemDisplay>(() => new IapItemDisplay());
+    public static pb::MessageParser<IapItemDisplay> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[68]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public IapItemDisplay() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public IapItemDisplay(IapItemDisplay other) : this() {
+      sku_ = other.sku_;
+      category_ = other.category_;
+      sortOrder_ = other.sortOrder_;
+      itemIds_ = other.itemIds_.Clone();
+      counts_ = other.counts_.Clone();
+    }
+
+    public IapItemDisplay Clone() {
+      return new IapItemDisplay(this);
+    }
+
+    /// <summary>Field number for the "sku" field.</summary>
+    public const int SkuFieldNumber = 1;
+    private string sku_ = "";
+    public string Sku {
+      get { return sku_; }
+      set {
+        sku_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "category" field.</summary>
+    public const int CategoryFieldNumber = 2;
+    private global::AllEnum.HoloIapItemCategory category_ = 0;
+    public global::AllEnum.HoloIapItemCategory Category {
+      get { return category_; }
+      set {
+        category_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "sort_order" field.</summary>
+    public const int SortOrderFieldNumber = 3;
+    private int sortOrder_;
+    public int SortOrder {
+      get { return sortOrder_; }
+      set {
+        sortOrder_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "item_ids" field.</summary>
+    public const int ItemIdsFieldNumber = 4;
+    private static readonly pb::FieldCodec<global::AllEnum.ItemId> _repeated_itemIds_codec
+        = pb::FieldCodec.ForEnum(34, x => (int) x, x => (global::AllEnum.ItemId) x);
+    private readonly pbc::RepeatedField<global::AllEnum.ItemId> itemIds_ = new pbc::RepeatedField<global::AllEnum.ItemId>();
+    public pbc::RepeatedField<global::AllEnum.ItemId> ItemIds {
+      get { return itemIds_; }
+    }
+
+    /// <summary>Field number for the "counts" field.</summary>
+    public const int CountsFieldNumber = 5;
+    private static readonly pb::FieldCodec<int> _repeated_counts_codec
+        = pb::FieldCodec.ForInt32(42);
+    private readonly pbc::RepeatedField<int> counts_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> Counts {
+      get { return counts_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as IapItemDisplay);
+    }
+
+    public bool Equals(IapItemDisplay other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Sku != other.Sku) return false;
+      if (Category != other.Category) return false;
+      if (SortOrder != other.SortOrder) return false;
+      if(!itemIds_.Equals(other.itemIds_)) return false;
+      if(!counts_.Equals(other.counts_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Sku.Length != 0) hash ^= Sku.GetHashCode();
+      if (Category != 0) hash ^= Category.GetHashCode();
+      if (SortOrder != 0) hash ^= SortOrder.GetHashCode();
+      hash ^= itemIds_.GetHashCode();
+      hash ^= counts_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Sku.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(Sku);
+      }
+      if (Category != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) Category);
+      }
+      if (SortOrder != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(SortOrder);
+      }
+      itemIds_.WriteTo(output, _repeated_itemIds_codec);
+      counts_.WriteTo(output, _repeated_counts_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Sku.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Sku);
+      }
+      if (Category != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Category);
+      }
+      if (SortOrder != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(SortOrder);
+      }
+      size += itemIds_.CalculateSize(_repeated_itemIds_codec);
+      size += counts_.CalculateSize(_repeated_counts_codec);
+      return size;
+    }
+
+    public void MergeFrom(IapItemDisplay other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Sku.Length != 0) {
+        Sku = other.Sku;
+      }
+      if (other.Category != 0) {
+        Category = other.Category;
+      }
+      if (other.SortOrder != 0) {
+        SortOrder = other.SortOrder;
+      }
+      itemIds_.Add(other.itemIds_);
+      counts_.Add(other.counts_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            Sku = input.ReadString();
+            break;
+          }
+          case 16: {
+            category_ = (global::AllEnum.HoloIapItemCategory) input.ReadEnum();
+            break;
+          }
+          case 24: {
+            SortOrder = input.ReadInt32();
+            break;
+          }
+          case 34:
+          case 32: {
+            itemIds_.AddEntriesFrom(input, _repeated_itemIds_codec);
+            break;
+          }
+          case 42:
+          case 40: {
+            counts_.AddEntriesFrom(input, _repeated_counts_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class EncounterSettings : pb::IMessage<EncounterSettings> {
+    private static readonly pb::MessageParser<EncounterSettings> _parser = new pb::MessageParser<EncounterSettings>(() => new EncounterSettings());
+    public static pb::MessageParser<EncounterSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[69]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public EncounterSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public EncounterSettings(EncounterSettings other) : this() {
+      spinBonusThreshold_ = other.spinBonusThreshold_;
+      excellentThrowThreshold_ = other.excellentThrowThreshold_;
+      greatThrowThreshold_ = other.greatThrowThreshold_;
+      niceThrowThreshold_ = other.niceThrowThreshold_;
+      milestoneThreshold_ = other.milestoneThreshold_;
+    }
+
+    public EncounterSettings Clone() {
+      return new EncounterSettings(this);
+    }
+
+    /// <summary>Field number for the "spin_bonus_threshold" field.</summary>
+    public const int SpinBonusThresholdFieldNumber = 1;
+    private float spinBonusThreshold_;
+    public float SpinBonusThreshold {
+      get { return spinBonusThreshold_; }
+      set {
+        spinBonusThreshold_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "excellent_throw_threshold" field.</summary>
+    public const int ExcellentThrowThresholdFieldNumber = 2;
+    private float excellentThrowThreshold_;
+    public float ExcellentThrowThreshold {
+      get { return excellentThrowThreshold_; }
+      set {
+        excellentThrowThreshold_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "great_throw_threshold" field.</summary>
+    public const int GreatThrowThresholdFieldNumber = 3;
+    private float greatThrowThreshold_;
+    public float GreatThrowThreshold {
+      get { return greatThrowThreshold_; }
+      set {
+        greatThrowThreshold_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "nice_throw_threshold" field.</summary>
+    public const int NiceThrowThresholdFieldNumber = 4;
+    private float niceThrowThreshold_;
+    public float NiceThrowThreshold {
+      get { return niceThrowThreshold_; }
+      set {
+        niceThrowThreshold_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "milestone_threshold" field.</summary>
+    public const int MilestoneThresholdFieldNumber = 5;
+    private int milestoneThreshold_;
+    public int MilestoneThreshold {
+      get { return milestoneThreshold_; }
+      set {
+        milestoneThreshold_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as EncounterSettings);
+    }
+
+    public bool Equals(EncounterSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (SpinBonusThreshold != other.SpinBonusThreshold) return false;
+      if (ExcellentThrowThreshold != other.ExcellentThrowThreshold) return false;
+      if (GreatThrowThreshold != other.GreatThrowThreshold) return false;
+      if (NiceThrowThreshold != other.NiceThrowThreshold) return false;
+      if (MilestoneThreshold != other.MilestoneThreshold) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (SpinBonusThreshold != 0F) hash ^= SpinBonusThreshold.GetHashCode();
+      if (ExcellentThrowThreshold != 0F) hash ^= ExcellentThrowThreshold.GetHashCode();
+      if (GreatThrowThreshold != 0F) hash ^= GreatThrowThreshold.GetHashCode();
+      if (NiceThrowThreshold != 0F) hash ^= NiceThrowThreshold.GetHashCode();
+      if (MilestoneThreshold != 0) hash ^= MilestoneThreshold.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (SpinBonusThreshold != 0F) {
+        output.WriteRawTag(13);
+        output.WriteFloat(SpinBonusThreshold);
+      }
+      if (ExcellentThrowThreshold != 0F) {
+        output.WriteRawTag(21);
+        output.WriteFloat(ExcellentThrowThreshold);
+      }
+      if (GreatThrowThreshold != 0F) {
+        output.WriteRawTag(29);
+        output.WriteFloat(GreatThrowThreshold);
+      }
+      if (NiceThrowThreshold != 0F) {
+        output.WriteRawTag(37);
+        output.WriteFloat(NiceThrowThreshold);
+      }
+      if (MilestoneThreshold != 0) {
+        output.WriteRawTag(40);
+        output.WriteInt32(MilestoneThreshold);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (SpinBonusThreshold != 0F) {
+        size += 1 + 4;
+      }
+      if (ExcellentThrowThreshold != 0F) {
+        size += 1 + 4;
+      }
+      if (GreatThrowThreshold != 0F) {
+        size += 1 + 4;
+      }
+      if (NiceThrowThreshold != 0F) {
+        size += 1 + 4;
+      }
+      if (MilestoneThreshold != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MilestoneThreshold);
+      }
+      return size;
+    }
+
+    public void MergeFrom(EncounterSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.SpinBonusThreshold != 0F) {
+        SpinBonusThreshold = other.SpinBonusThreshold;
+      }
+      if (other.ExcellentThrowThreshold != 0F) {
+        ExcellentThrowThreshold = other.ExcellentThrowThreshold;
+      }
+      if (other.GreatThrowThreshold != 0F) {
+        GreatThrowThreshold = other.GreatThrowThreshold;
+      }
+      if (other.NiceThrowThreshold != 0F) {
+        NiceThrowThreshold = other.NiceThrowThreshold;
+      }
+      if (other.MilestoneThreshold != 0) {
+        MilestoneThreshold = other.MilestoneThreshold;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 13: {
+            SpinBonusThreshold = input.ReadFloat();
+            break;
+          }
+          case 21: {
+            ExcellentThrowThreshold = input.ReadFloat();
+            break;
+          }
+          case 29: {
+            GreatThrowThreshold = input.ReadFloat();
+            break;
+          }
+          case 37: {
+            NiceThrowThreshold = input.ReadFloat();
+            break;
+          }
+          case 40: {
+            MilestoneThreshold = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class GymBattleSettings : pb::IMessage<GymBattleSettings> {
+    private static readonly pb::MessageParser<GymBattleSettings> _parser = new pb::MessageParser<GymBattleSettings>(() => new GymBattleSettings());
+    public static pb::MessageParser<GymBattleSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[70]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public GymBattleSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public GymBattleSettings(GymBattleSettings other) : this() {
+      energyPerSec_ = other.energyPerSec_;
+      dodgeEnergyCost_ = other.dodgeEnergyCost_;
+      retargetSeconds_ = other.retargetSeconds_;
+      enemyAttackInterval_ = other.enemyAttackInterval_;
+      attackServerInterval_ = other.attackServerInterval_;
+      roundDurationSeconds_ = other.roundDurationSeconds_;
+      bonusTimePerAllySeconds_ = other.bonusTimePerAllySeconds_;
+      maximumAttackersPerBattle_ = other.maximumAttackersPerBattle_;
+      sameTypeAttackBonusMultiplier_ = other.sameTypeAttackBonusMultiplier_;
+      maximumEnergy_ = other.maximumEnergy_;
+      energyDeltaPerHealthLost_ = other.energyDeltaPerHealthLost_;
+      dodgeDurationMs_ = other.dodgeDurationMs_;
+      minimumPlayerLevel_ = other.minimumPlayerLevel_;
+      swapDurationMs_ = other.swapDurationMs_;
+    }
+
+    public GymBattleSettings Clone() {
+      return new GymBattleSettings(this);
+    }
+
+    /// <summary>Field number for the "energy_per_sec" field.</summary>
+    public const int EnergyPerSecFieldNumber = 1;
+    private float energyPerSec_;
+    public float EnergyPerSec {
+      get { return energyPerSec_; }
+      set {
+        energyPerSec_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "dodge_energy_cost" field.</summary>
+    public const int DodgeEnergyCostFieldNumber = 2;
+    private float dodgeEnergyCost_;
+    public float DodgeEnergyCost {
+      get { return dodgeEnergyCost_; }
+      set {
+        dodgeEnergyCost_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "retarget_seconds" field.</summary>
+    public const int RetargetSecondsFieldNumber = 3;
+    private float retargetSeconds_;
+    public float RetargetSeconds {
+      get { return retargetSeconds_; }
+      set {
+        retargetSeconds_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "enemy_attack_interval" field.</summary>
+    public const int EnemyAttackIntervalFieldNumber = 4;
+    private float enemyAttackInterval_;
+    public float EnemyAttackInterval {
+      get { return enemyAttackInterval_; }
+      set {
+        enemyAttackInterval_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "attack_server_interval" field.</summary>
+    public const int AttackServerIntervalFieldNumber = 5;
+    private float attackServerInterval_;
+    public float AttackServerInterval {
+      get { return attackServerInterval_; }
+      set {
+        attackServerInterval_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "round_duration_seconds" field.</summary>
+    public const int RoundDurationSecondsFieldNumber = 6;
+    private float roundDurationSeconds_;
+    public float RoundDurationSeconds {
+      get { return roundDurationSeconds_; }
+      set {
+        roundDurationSeconds_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "bonus_time_per_ally_seconds" field.</summary>
+    public const int BonusTimePerAllySecondsFieldNumber = 7;
+    private float bonusTimePerAllySeconds_;
+    public float BonusTimePerAllySeconds {
+      get { return bonusTimePerAllySeconds_; }
+      set {
+        bonusTimePerAllySeconds_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "maximum_attackers_per_battle" field.</summary>
+    public const int MaximumAttackersPerBattleFieldNumber = 8;
+    private int maximumAttackersPerBattle_;
+    public int MaximumAttackersPerBattle {
+      get { return maximumAttackersPerBattle_; }
+      set {
+        maximumAttackersPerBattle_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "same_type_attack_bonus_multiplier" field.</summary>
+    public const int SameTypeAttackBonusMultiplierFieldNumber = 9;
+    private float sameTypeAttackBonusMultiplier_;
+    public float SameTypeAttackBonusMultiplier {
+      get { return sameTypeAttackBonusMultiplier_; }
+      set {
+        sameTypeAttackBonusMultiplier_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "maximum_energy" field.</summary>
+    public const int MaximumEnergyFieldNumber = 10;
+    private int maximumEnergy_;
+    public int MaximumEnergy {
+      get { return maximumEnergy_; }
+      set {
+        maximumEnergy_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "energy_delta_per_health_lost" field.</summary>
+    public const int EnergyDeltaPerHealthLostFieldNumber = 11;
+    private float energyDeltaPerHealthLost_;
+    public float EnergyDeltaPerHealthLost {
+      get { return energyDeltaPerHealthLost_; }
+      set {
+        energyDeltaPerHealthLost_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "dodge_duration_ms" field.</summary>
+    public const int DodgeDurationMsFieldNumber = 12;
+    private int dodgeDurationMs_;
+    public int DodgeDurationMs {
+      get { return dodgeDurationMs_; }
+      set {
+        dodgeDurationMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "minimum_player_level" field.</summary>
+    public const int MinimumPlayerLevelFieldNumber = 13;
+    private int minimumPlayerLevel_;
+    public int MinimumPlayerLevel {
+      get { return minimumPlayerLevel_; }
+      set {
+        minimumPlayerLevel_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "swap_duration_ms" field.</summary>
+    public const int SwapDurationMsFieldNumber = 14;
+    private int swapDurationMs_;
+    public int SwapDurationMs {
+      get { return swapDurationMs_; }
+      set {
+        swapDurationMs_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as GymBattleSettings);
+    }
+
+    public bool Equals(GymBattleSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (EnergyPerSec != other.EnergyPerSec) return false;
+      if (DodgeEnergyCost != other.DodgeEnergyCost) return false;
+      if (RetargetSeconds != other.RetargetSeconds) return false;
+      if (EnemyAttackInterval != other.EnemyAttackInterval) return false;
+      if (AttackServerInterval != other.AttackServerInterval) return false;
+      if (RoundDurationSeconds != other.RoundDurationSeconds) return false;
+      if (BonusTimePerAllySeconds != other.BonusTimePerAllySeconds) return false;
+      if (MaximumAttackersPerBattle != other.MaximumAttackersPerBattle) return false;
+      if (SameTypeAttackBonusMultiplier != other.SameTypeAttackBonusMultiplier) return false;
+      if (MaximumEnergy != other.MaximumEnergy) return false;
+      if (EnergyDeltaPerHealthLost != other.EnergyDeltaPerHealthLost) return false;
+      if (DodgeDurationMs != other.DodgeDurationMs) return false;
+      if (MinimumPlayerLevel != other.MinimumPlayerLevel) return false;
+      if (SwapDurationMs != other.SwapDurationMs) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (EnergyPerSec != 0F) hash ^= EnergyPerSec.GetHashCode();
+      if (DodgeEnergyCost != 0F) hash ^= DodgeEnergyCost.GetHashCode();
+      if (RetargetSeconds != 0F) hash ^= RetargetSeconds.GetHashCode();
+      if (EnemyAttackInterval != 0F) hash ^= EnemyAttackInterval.GetHashCode();
+      if (AttackServerInterval != 0F) hash ^= AttackServerInterval.GetHashCode();
+      if (RoundDurationSeconds != 0F) hash ^= RoundDurationSeconds.GetHashCode();
+      if (BonusTimePerAllySeconds != 0F) hash ^= BonusTimePerAllySeconds.GetHashCode();
+      if (MaximumAttackersPerBattle != 0) hash ^= MaximumAttackersPerBattle.GetHashCode();
+      if (SameTypeAttackBonusMultiplier != 0F) hash ^= SameTypeAttackBonusMultiplier.GetHashCode();
+      if (MaximumEnergy != 0) hash ^= MaximumEnergy.GetHashCode();
+      if (EnergyDeltaPerHealthLost != 0F) hash ^= EnergyDeltaPerHealthLost.GetHashCode();
+      if (DodgeDurationMs != 0) hash ^= DodgeDurationMs.GetHashCode();
+      if (MinimumPlayerLevel != 0) hash ^= MinimumPlayerLevel.GetHashCode();
+      if (SwapDurationMs != 0) hash ^= SwapDurationMs.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (EnergyPerSec != 0F) {
+        output.WriteRawTag(13);
+        output.WriteFloat(EnergyPerSec);
+      }
+      if (DodgeEnergyCost != 0F) {
+        output.WriteRawTag(21);
+        output.WriteFloat(DodgeEnergyCost);
+      }
+      if (RetargetSeconds != 0F) {
+        output.WriteRawTag(29);
+        output.WriteFloat(RetargetSeconds);
+      }
+      if (EnemyAttackInterval != 0F) {
+        output.WriteRawTag(37);
+        output.WriteFloat(EnemyAttackInterval);
+      }
+      if (AttackServerInterval != 0F) {
+        output.WriteRawTag(45);
+        output.WriteFloat(AttackServerInterval);
+      }
+      if (RoundDurationSeconds != 0F) {
+        output.WriteRawTag(53);
+        output.WriteFloat(RoundDurationSeconds);
+      }
+      if (BonusTimePerAllySeconds != 0F) {
+        output.WriteRawTag(61);
+        output.WriteFloat(BonusTimePerAllySeconds);
+      }
+      if (MaximumAttackersPerBattle != 0) {
+        output.WriteRawTag(64);
+        output.WriteInt32(MaximumAttackersPerBattle);
+      }
+      if (SameTypeAttackBonusMultiplier != 0F) {
+        output.WriteRawTag(77);
+        output.WriteFloat(SameTypeAttackBonusMultiplier);
+      }
+      if (MaximumEnergy != 0) {
+        output.WriteRawTag(80);
+        output.WriteInt32(MaximumEnergy);
+      }
+      if (EnergyDeltaPerHealthLost != 0F) {
+        output.WriteRawTag(93);
+        output.WriteFloat(EnergyDeltaPerHealthLost);
+      }
+      if (DodgeDurationMs != 0) {
+        output.WriteRawTag(96);
+        output.WriteInt32(DodgeDurationMs);
+      }
+      if (MinimumPlayerLevel != 0) {
+        output.WriteRawTag(104);
+        output.WriteInt32(MinimumPlayerLevel);
+      }
+      if (SwapDurationMs != 0) {
+        output.WriteRawTag(112);
+        output.WriteInt32(SwapDurationMs);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (EnergyPerSec != 0F) {
+        size += 1 + 4;
+      }
+      if (DodgeEnergyCost != 0F) {
+        size += 1 + 4;
+      }
+      if (RetargetSeconds != 0F) {
+        size += 1 + 4;
+      }
+      if (EnemyAttackInterval != 0F) {
+        size += 1 + 4;
+      }
+      if (AttackServerInterval != 0F) {
+        size += 1 + 4;
+      }
+      if (RoundDurationSeconds != 0F) {
+        size += 1 + 4;
+      }
+      if (BonusTimePerAllySeconds != 0F) {
+        size += 1 + 4;
+      }
+      if (MaximumAttackersPerBattle != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaximumAttackersPerBattle);
+      }
+      if (SameTypeAttackBonusMultiplier != 0F) {
+        size += 1 + 4;
+      }
+      if (MaximumEnergy != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaximumEnergy);
+      }
+      if (EnergyDeltaPerHealthLost != 0F) {
+        size += 1 + 4;
+      }
+      if (DodgeDurationMs != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DodgeDurationMs);
+      }
+      if (MinimumPlayerLevel != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MinimumPlayerLevel);
+      }
+      if (SwapDurationMs != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(SwapDurationMs);
+      }
+      return size;
+    }
+
+    public void MergeFrom(GymBattleSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.EnergyPerSec != 0F) {
+        EnergyPerSec = other.EnergyPerSec;
+      }
+      if (other.DodgeEnergyCost != 0F) {
+        DodgeEnergyCost = other.DodgeEnergyCost;
+      }
+      if (other.RetargetSeconds != 0F) {
+        RetargetSeconds = other.RetargetSeconds;
+      }
+      if (other.EnemyAttackInterval != 0F) {
+        EnemyAttackInterval = other.EnemyAttackInterval;
+      }
+      if (other.AttackServerInterval != 0F) {
+        AttackServerInterval = other.AttackServerInterval;
+      }
+      if (other.RoundDurationSeconds != 0F) {
+        RoundDurationSeconds = other.RoundDurationSeconds;
+      }
+      if (other.BonusTimePerAllySeconds != 0F) {
+        BonusTimePerAllySeconds = other.BonusTimePerAllySeconds;
+      }
+      if (other.MaximumAttackersPerBattle != 0) {
+        MaximumAttackersPerBattle = other.MaximumAttackersPerBattle;
+      }
+      if (other.SameTypeAttackBonusMultiplier != 0F) {
+        SameTypeAttackBonusMultiplier = other.SameTypeAttackBonusMultiplier;
+      }
+      if (other.MaximumEnergy != 0) {
+        MaximumEnergy = other.MaximumEnergy;
+      }
+      if (other.EnergyDeltaPerHealthLost != 0F) {
+        EnergyDeltaPerHealthLost = other.EnergyDeltaPerHealthLost;
+      }
+      if (other.DodgeDurationMs != 0) {
+        DodgeDurationMs = other.DodgeDurationMs;
+      }
+      if (other.MinimumPlayerLevel != 0) {
+        MinimumPlayerLevel = other.MinimumPlayerLevel;
+      }
+      if (other.SwapDurationMs != 0) {
+        SwapDurationMs = other.SwapDurationMs;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 13: {
+            EnergyPerSec = input.ReadFloat();
+            break;
+          }
+          case 21: {
+            DodgeEnergyCost = input.ReadFloat();
+            break;
+          }
+          case 29: {
+            RetargetSeconds = input.ReadFloat();
+            break;
+          }
+          case 37: {
+            EnemyAttackInterval = input.ReadFloat();
+            break;
+          }
+          case 45: {
+            AttackServerInterval = input.ReadFloat();
+            break;
+          }
+          case 53: {
+            RoundDurationSeconds = input.ReadFloat();
+            break;
+          }
+          case 61: {
+            BonusTimePerAllySeconds = input.ReadFloat();
+            break;
+          }
+          case 64: {
+            MaximumAttackersPerBattle = input.ReadInt32();
+            break;
+          }
+          case 77: {
+            SameTypeAttackBonusMultiplier = input.ReadFloat();
+            break;
+          }
+          case 80: {
+            MaximumEnergy = input.ReadInt32();
+            break;
+          }
+          case 93: {
+            EnergyDeltaPerHealthLost = input.ReadFloat();
+            break;
+          }
+          case 96: {
+            DodgeDurationMs = input.ReadInt32();
+            break;
+          }
+          case 104: {
+            MinimumPlayerLevel = input.ReadInt32();
+            break;
+          }
+          case 112: {
+            SwapDurationMs = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class GymLevelSettings : pb::IMessage<GymLevelSettings> {
+    private static readonly pb::MessageParser<GymLevelSettings> _parser = new pb::MessageParser<GymLevelSettings>(() => new GymLevelSettings());
+    public static pb::MessageParser<GymLevelSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[71]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public GymLevelSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public GymLevelSettings(GymLevelSettings other) : this() {
+      requiredExperience_ = other.requiredExperience_.Clone();
+      leaderSlots_ = other.leaderSlots_.Clone();
+      trainerSlots_ = other.trainerSlots_.Clone();
+      searchRollBonus_ = other.searchRollBonus_.Clone();
+    }
+
+    public GymLevelSettings Clone() {
+      return new GymLevelSettings(this);
+    }
+
+    /// <summary>Field number for the "required_experience" field.</summary>
+    public const int RequiredExperienceFieldNumber = 1;
+    private static readonly pb::FieldCodec<int> _repeated_requiredExperience_codec
+        = pb::FieldCodec.ForInt32(10);
+    private readonly pbc::RepeatedField<int> requiredExperience_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> RequiredExperience {
+      get { return requiredExperience_; }
+    }
+
+    /// <summary>Field number for the "leader_slots" field.</summary>
+    public const int LeaderSlotsFieldNumber = 2;
+    private static readonly pb::FieldCodec<int> _repeated_leaderSlots_codec
+        = pb::FieldCodec.ForInt32(18);
+    private readonly pbc::RepeatedField<int> leaderSlots_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> LeaderSlots {
+      get { return leaderSlots_; }
+    }
+
+    /// <summary>Field number for the "trainer_slots" field.</summary>
+    public const int TrainerSlotsFieldNumber = 3;
+    private static readonly pb::FieldCodec<int> _repeated_trainerSlots_codec
+        = pb::FieldCodec.ForInt32(26);
+    private readonly pbc::RepeatedField<int> trainerSlots_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> TrainerSlots {
+      get { return trainerSlots_; }
+    }
+
+    /// <summary>Field number for the "search_roll_bonus" field.</summary>
+    public const int SearchRollBonusFieldNumber = 4;
+    private static readonly pb::FieldCodec<int> _repeated_searchRollBonus_codec
+        = pb::FieldCodec.ForInt32(34);
+    private readonly pbc::RepeatedField<int> searchRollBonus_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> SearchRollBonus {
+      get { return searchRollBonus_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as GymLevelSettings);
+    }
+
+    public bool Equals(GymLevelSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!requiredExperience_.Equals(other.requiredExperience_)) return false;
+      if(!leaderSlots_.Equals(other.leaderSlots_)) return false;
+      if(!trainerSlots_.Equals(other.trainerSlots_)) return false;
+      if(!searchRollBonus_.Equals(other.searchRollBonus_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= requiredExperience_.GetHashCode();
+      hash ^= leaderSlots_.GetHashCode();
+      hash ^= trainerSlots_.GetHashCode();
+      hash ^= searchRollBonus_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      requiredExperience_.WriteTo(output, _repeated_requiredExperience_codec);
+      leaderSlots_.WriteTo(output, _repeated_leaderSlots_codec);
+      trainerSlots_.WriteTo(output, _repeated_trainerSlots_codec);
+      searchRollBonus_.WriteTo(output, _repeated_searchRollBonus_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      size += requiredExperience_.CalculateSize(_repeated_requiredExperience_codec);
+      size += leaderSlots_.CalculateSize(_repeated_leaderSlots_codec);
+      size += trainerSlots_.CalculateSize(_repeated_trainerSlots_codec);
+      size += searchRollBonus_.CalculateSize(_repeated_searchRollBonus_codec);
+      return size;
+    }
+
+    public void MergeFrom(GymLevelSettings other) {
+      if (other == null) {
+        return;
+      }
+      requiredExperience_.Add(other.requiredExperience_);
+      leaderSlots_.Add(other.leaderSlots_);
+      trainerSlots_.Add(other.trainerSlots_);
+      searchRollBonus_.Add(other.searchRollBonus_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10:
+          case 8: {
+            requiredExperience_.AddEntriesFrom(input, _repeated_requiredExperience_codec);
+            break;
+          }
+          case 18:
+          case 16: {
+            leaderSlots_.AddEntriesFrom(input, _repeated_leaderSlots_codec);
+            break;
+          }
+          case 26:
+          case 24: {
+            trainerSlots_.AddEntriesFrom(input, _repeated_trainerSlots_codec);
+            break;
+          }
+          case 34:
+          case 32: {
+            searchRollBonus_.AddEntriesFrom(input, _repeated_searchRollBonus_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PlayerLevelSettings : pb::IMessage<PlayerLevelSettings> {
+    private static readonly pb::MessageParser<PlayerLevelSettings> _parser = new pb::MessageParser<PlayerLevelSettings>(() => new PlayerLevelSettings());
+    public static pb::MessageParser<PlayerLevelSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[72]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PlayerLevelSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PlayerLevelSettings(PlayerLevelSettings other) : this() {
+      rankNum_ = other.rankNum_.Clone();
+      requiredExperience_ = other.requiredExperience_.Clone();
+      cpMultiplier_ = other.cpMultiplier_.Clone();
+      maxEggPlayerLevel_ = other.maxEggPlayerLevel_;
+      maxEncounterPlayerLevel_ = other.maxEncounterPlayerLevel_;
+    }
+
+    public PlayerLevelSettings Clone() {
+      return new PlayerLevelSettings(this);
+    }
+
+    /// <summary>Field number for the "rank_num" field.</summary>
+    public const int RankNumFieldNumber = 1;
+    private static readonly pb::FieldCodec<int> _repeated_rankNum_codec
+        = pb::FieldCodec.ForInt32(10);
+    private readonly pbc::RepeatedField<int> rankNum_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> RankNum {
+      get { return rankNum_; }
+    }
+
+    /// <summary>Field number for the "required_experience" field.</summary>
+    public const int RequiredExperienceFieldNumber = 2;
+    private static readonly pb::FieldCodec<int> _repeated_requiredExperience_codec
+        = pb::FieldCodec.ForInt32(18);
+    private readonly pbc::RepeatedField<int> requiredExperience_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> RequiredExperience {
+      get { return requiredExperience_; }
+    }
+
+    /// <summary>Field number for the "cp_multiplier" field.</summary>
+    public const int CpMultiplierFieldNumber = 3;
+    private static readonly pb::FieldCodec<float> _repeated_cpMultiplier_codec
+        = pb::FieldCodec.ForFloat(26);
+    private readonly pbc::RepeatedField<float> cpMultiplier_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> CpMultiplier {
+      get { return cpMultiplier_; }
+    }
+
+    /// <summary>Field number for the "max_egg_player_level" field.</summary>
+    public const int MaxEggPlayerLevelFieldNumber = 4;
+    private int maxEggPlayerLevel_;
+    public int MaxEggPlayerLevel {
+      get { return maxEggPlayerLevel_; }
+      set {
+        maxEggPlayerLevel_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "max_encounter_player_level" field.</summary>
+    public const int MaxEncounterPlayerLevelFieldNumber = 5;
+    private int maxEncounterPlayerLevel_;
+    public int MaxEncounterPlayerLevel {
+      get { return maxEncounterPlayerLevel_; }
+      set {
+        maxEncounterPlayerLevel_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PlayerLevelSettings);
+    }
+
+    public bool Equals(PlayerLevelSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!rankNum_.Equals(other.rankNum_)) return false;
+      if(!requiredExperience_.Equals(other.requiredExperience_)) return false;
+      if(!cpMultiplier_.Equals(other.cpMultiplier_)) return false;
+      if (MaxEggPlayerLevel != other.MaxEggPlayerLevel) return false;
+      if (MaxEncounterPlayerLevel != other.MaxEncounterPlayerLevel) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= rankNum_.GetHashCode();
+      hash ^= requiredExperience_.GetHashCode();
+      hash ^= cpMultiplier_.GetHashCode();
+      if (MaxEggPlayerLevel != 0) hash ^= MaxEggPlayerLevel.GetHashCode();
+      if (MaxEncounterPlayerLevel != 0) hash ^= MaxEncounterPlayerLevel.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      rankNum_.WriteTo(output, _repeated_rankNum_codec);
+      requiredExperience_.WriteTo(output, _repeated_requiredExperience_codec);
+      cpMultiplier_.WriteTo(output, _repeated_cpMultiplier_codec);
+      if (MaxEggPlayerLevel != 0) {
+        output.WriteRawTag(32);
+        output.WriteInt32(MaxEggPlayerLevel);
+      }
+      if (MaxEncounterPlayerLevel != 0) {
+        output.WriteRawTag(40);
+        output.WriteInt32(MaxEncounterPlayerLevel);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      size += rankNum_.CalculateSize(_repeated_rankNum_codec);
+      size += requiredExperience_.CalculateSize(_repeated_requiredExperience_codec);
+      size += cpMultiplier_.CalculateSize(_repeated_cpMultiplier_codec);
+      if (MaxEggPlayerLevel != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxEggPlayerLevel);
+      }
+      if (MaxEncounterPlayerLevel != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxEncounterPlayerLevel);
+      }
+      return size;
+    }
+
+    public void MergeFrom(PlayerLevelSettings other) {
+      if (other == null) {
+        return;
+      }
+      rankNum_.Add(other.rankNum_);
+      requiredExperience_.Add(other.requiredExperience_);
+      cpMultiplier_.Add(other.cpMultiplier_);
+      if (other.MaxEggPlayerLevel != 0) {
+        MaxEggPlayerLevel = other.MaxEggPlayerLevel;
+      }
+      if (other.MaxEncounterPlayerLevel != 0) {
+        MaxEncounterPlayerLevel = other.MaxEncounterPlayerLevel;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10:
+          case 8: {
+            rankNum_.AddEntriesFrom(input, _repeated_rankNum_codec);
+            break;
+          }
+          case 18:
+          case 16: {
+            requiredExperience_.AddEntriesFrom(input, _repeated_requiredExperience_codec);
+            break;
+          }
+          case 26:
+          case 29: {
+            cpMultiplier_.AddEntriesFrom(input, _repeated_cpMultiplier_codec);
+            break;
+          }
+          case 32: {
+            MaxEggPlayerLevel = input.ReadInt32();
+            break;
+          }
+          case 40: {
+            MaxEncounterPlayerLevel = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class CameraSettings : pb::IMessage<CameraSettings> {
+    private static readonly pb::MessageParser<CameraSettings> _parser = new pb::MessageParser<CameraSettings>(() => new CameraSettings());
+    public static pb::MessageParser<CameraSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[73]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public CameraSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public CameraSettings(CameraSettings other) : this() {
+      nextCamera_ = other.nextCamera_;
+      interpolation_ = other.interpolation_.Clone();
+      targetType_ = other.targetType_.Clone();
+      easeInSpeed_ = other.easeInSpeed_.Clone();
+      eastOutSpeed_ = other.eastOutSpeed_.Clone();
+      durationSeconds_ = other.durationSeconds_.Clone();
+      waitSeconds_ = other.waitSeconds_.Clone();
+      transitionSeconds_ = other.transitionSeconds_.Clone();
+      angleDegree_ = other.angleDegree_.Clone();
+      angleOffsetDegree_ = other.angleOffsetDegree_.Clone();
+      pitchDegree_ = other.pitchDegree_.Clone();
+      pitchOffsetDegree_ = other.pitchOffsetDegree_.Clone();
+      rollDegree_ = other.rollDegree_.Clone();
+      distanceMeters_ = other.distanceMeters_.Clone();
+      heightPercent_ = other.heightPercent_.Clone();
+      vertCtrRatio_ = other.vertCtrRatio_.Clone();
+    }
+
+    public CameraSettings Clone() {
+      return new CameraSettings(this);
+    }
+
+    /// <summary>Field number for the "next_camera" field.</summary>
+    public const int NextCameraFieldNumber = 1;
+    private string nextCamera_ = "";
+    public string NextCamera {
+      get { return nextCamera_; }
+      set {
+        nextCamera_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "interpolation" field.</summary>
+    public const int InterpolationFieldNumber = 2;
+    private static readonly pb::FieldCodec<global::AllEnum.CameraInterpolation> _repeated_interpolation_codec
+        = pb::FieldCodec.ForEnum(18, x => (int) x, x => (global::AllEnum.CameraInterpolation) x);
+    private readonly pbc::RepeatedField<global::AllEnum.CameraInterpolation> interpolation_ = new pbc::RepeatedField<global::AllEnum.CameraInterpolation>();
+    public pbc::RepeatedField<global::AllEnum.CameraInterpolation> Interpolation {
+      get { return interpolation_; }
+    }
+
+    /// <summary>Field number for the "target_type" field.</summary>
+    public const int TargetTypeFieldNumber = 3;
+    private static readonly pb::FieldCodec<global::AllEnum.CameraTarget> _repeated_targetType_codec
+        = pb::FieldCodec.ForEnum(26, x => (int) x, x => (global::AllEnum.CameraTarget) x);
+    private readonly pbc::RepeatedField<global::AllEnum.CameraTarget> targetType_ = new pbc::RepeatedField<global::AllEnum.CameraTarget>();
+    public pbc::RepeatedField<global::AllEnum.CameraTarget> TargetType {
+      get { return targetType_; }
+    }
+
+    /// <summary>Field number for the "ease_in_speed" field.</summary>
+    public const int EaseInSpeedFieldNumber = 4;
+    private static readonly pb::FieldCodec<float> _repeated_easeInSpeed_codec
+        = pb::FieldCodec.ForFloat(34);
+    private readonly pbc::RepeatedField<float> easeInSpeed_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> EaseInSpeed {
+      get { return easeInSpeed_; }
+    }
+
+    /// <summary>Field number for the "east_out_speed" field.</summary>
+    public const int EastOutSpeedFieldNumber = 5;
+    private static readonly pb::FieldCodec<float> _repeated_eastOutSpeed_codec
+        = pb::FieldCodec.ForFloat(42);
+    private readonly pbc::RepeatedField<float> eastOutSpeed_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> EastOutSpeed {
+      get { return eastOutSpeed_; }
+    }
+
+    /// <summary>Field number for the "duration_seconds" field.</summary>
+    public const int DurationSecondsFieldNumber = 6;
+    private static readonly pb::FieldCodec<float> _repeated_durationSeconds_codec
+        = pb::FieldCodec.ForFloat(50);
+    private readonly pbc::RepeatedField<float> durationSeconds_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> DurationSeconds {
+      get { return durationSeconds_; }
+    }
+
+    /// <summary>Field number for the "wait_seconds" field.</summary>
+    public const int WaitSecondsFieldNumber = 7;
+    private static readonly pb::FieldCodec<float> _repeated_waitSeconds_codec
+        = pb::FieldCodec.ForFloat(58);
+    private readonly pbc::RepeatedField<float> waitSeconds_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> WaitSeconds {
+      get { return waitSeconds_; }
+    }
+
+    /// <summary>Field number for the "transition_seconds" field.</summary>
+    public const int TransitionSecondsFieldNumber = 8;
+    private static readonly pb::FieldCodec<float> _repeated_transitionSeconds_codec
+        = pb::FieldCodec.ForFloat(66);
+    private readonly pbc::RepeatedField<float> transitionSeconds_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> TransitionSeconds {
+      get { return transitionSeconds_; }
+    }
+
+    /// <summary>Field number for the "angle_degree" field.</summary>
+    public const int AngleDegreeFieldNumber = 9;
+    private static readonly pb::FieldCodec<float> _repeated_angleDegree_codec
+        = pb::FieldCodec.ForFloat(74);
+    private readonly pbc::RepeatedField<float> angleDegree_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> AngleDegree {
+      get { return angleDegree_; }
+    }
+
+    /// <summary>Field number for the "angle_offset_degree" field.</summary>
+    public const int AngleOffsetDegreeFieldNumber = 10;
+    private static readonly pb::FieldCodec<float> _repeated_angleOffsetDegree_codec
+        = pb::FieldCodec.ForFloat(82);
+    private readonly pbc::RepeatedField<float> angleOffsetDegree_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> AngleOffsetDegree {
+      get { return angleOffsetDegree_; }
+    }
+
+    /// <summary>Field number for the "pitch_degree" field.</summary>
+    public const int PitchDegreeFieldNumber = 11;
+    private static readonly pb::FieldCodec<float> _repeated_pitchDegree_codec
+        = pb::FieldCodec.ForFloat(90);
+    private readonly pbc::RepeatedField<float> pitchDegree_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> PitchDegree {
+      get { return pitchDegree_; }
+    }
+
+    /// <summary>Field number for the "pitch_offset_degree" field.</summary>
+    public const int PitchOffsetDegreeFieldNumber = 12;
+    private static readonly pb::FieldCodec<float> _repeated_pitchOffsetDegree_codec
+        = pb::FieldCodec.ForFloat(98);
+    private readonly pbc::RepeatedField<float> pitchOffsetDegree_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> PitchOffsetDegree {
+      get { return pitchOffsetDegree_; }
+    }
+
+    /// <summary>Field number for the "roll_degree" field.</summary>
+    public const int RollDegreeFieldNumber = 13;
+    private static readonly pb::FieldCodec<float> _repeated_rollDegree_codec
+        = pb::FieldCodec.ForFloat(106);
+    private readonly pbc::RepeatedField<float> rollDegree_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> RollDegree {
+      get { return rollDegree_; }
+    }
+
+    /// <summary>Field number for the "distance_meters" field.</summary>
+    public const int DistanceMetersFieldNumber = 14;
+    private static readonly pb::FieldCodec<float> _repeated_distanceMeters_codec
+        = pb::FieldCodec.ForFloat(114);
+    private readonly pbc::RepeatedField<float> distanceMeters_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> DistanceMeters {
+      get { return distanceMeters_; }
+    }
+
+    /// <summary>Field number for the "height_percent" field.</summary>
+    public const int HeightPercentFieldNumber = 15;
+    private static readonly pb::FieldCodec<float> _repeated_heightPercent_codec
+        = pb::FieldCodec.ForFloat(122);
+    private readonly pbc::RepeatedField<float> heightPercent_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> HeightPercent {
+      get { return heightPercent_; }
+    }
+
+    /// <summary>Field number for the "vert_ctr_ratio" field.</summary>
+    public const int VertCtrRatioFieldNumber = 16;
+    private static readonly pb::FieldCodec<float> _repeated_vertCtrRatio_codec
+        = pb::FieldCodec.ForFloat(130);
+    private readonly pbc::RepeatedField<float> vertCtrRatio_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> VertCtrRatio {
+      get { return vertCtrRatio_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as CameraSettings);
+    }
+
+    public bool Equals(CameraSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (NextCamera != other.NextCamera) return false;
+      if(!interpolation_.Equals(other.interpolation_)) return false;
+      if(!targetType_.Equals(other.targetType_)) return false;
+      if(!easeInSpeed_.Equals(other.easeInSpeed_)) return false;
+      if(!eastOutSpeed_.Equals(other.eastOutSpeed_)) return false;
+      if(!durationSeconds_.Equals(other.durationSeconds_)) return false;
+      if(!waitSeconds_.Equals(other.waitSeconds_)) return false;
+      if(!transitionSeconds_.Equals(other.transitionSeconds_)) return false;
+      if(!angleDegree_.Equals(other.angleDegree_)) return false;
+      if(!angleOffsetDegree_.Equals(other.angleOffsetDegree_)) return false;
+      if(!pitchDegree_.Equals(other.pitchDegree_)) return false;
+      if(!pitchOffsetDegree_.Equals(other.pitchOffsetDegree_)) return false;
+      if(!rollDegree_.Equals(other.rollDegree_)) return false;
+      if(!distanceMeters_.Equals(other.distanceMeters_)) return false;
+      if(!heightPercent_.Equals(other.heightPercent_)) return false;
+      if(!vertCtrRatio_.Equals(other.vertCtrRatio_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (NextCamera.Length != 0) hash ^= NextCamera.GetHashCode();
+      hash ^= interpolation_.GetHashCode();
+      hash ^= targetType_.GetHashCode();
+      hash ^= easeInSpeed_.GetHashCode();
+      hash ^= eastOutSpeed_.GetHashCode();
+      hash ^= durationSeconds_.GetHashCode();
+      hash ^= waitSeconds_.GetHashCode();
+      hash ^= transitionSeconds_.GetHashCode();
+      hash ^= angleDegree_.GetHashCode();
+      hash ^= angleOffsetDegree_.GetHashCode();
+      hash ^= pitchDegree_.GetHashCode();
+      hash ^= pitchOffsetDegree_.GetHashCode();
+      hash ^= rollDegree_.GetHashCode();
+      hash ^= distanceMeters_.GetHashCode();
+      hash ^= heightPercent_.GetHashCode();
+      hash ^= vertCtrRatio_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (NextCamera.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(NextCamera);
+      }
+      interpolation_.WriteTo(output, _repeated_interpolation_codec);
+      targetType_.WriteTo(output, _repeated_targetType_codec);
+      easeInSpeed_.WriteTo(output, _repeated_easeInSpeed_codec);
+      eastOutSpeed_.WriteTo(output, _repeated_eastOutSpeed_codec);
+      durationSeconds_.WriteTo(output, _repeated_durationSeconds_codec);
+      waitSeconds_.WriteTo(output, _repeated_waitSeconds_codec);
+      transitionSeconds_.WriteTo(output, _repeated_transitionSeconds_codec);
+      angleDegree_.WriteTo(output, _repeated_angleDegree_codec);
+      angleOffsetDegree_.WriteTo(output, _repeated_angleOffsetDegree_codec);
+      pitchDegree_.WriteTo(output, _repeated_pitchDegree_codec);
+      pitchOffsetDegree_.WriteTo(output, _repeated_pitchOffsetDegree_codec);
+      rollDegree_.WriteTo(output, _repeated_rollDegree_codec);
+      distanceMeters_.WriteTo(output, _repeated_distanceMeters_codec);
+      heightPercent_.WriteTo(output, _repeated_heightPercent_codec);
+      vertCtrRatio_.WriteTo(output, _repeated_vertCtrRatio_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (NextCamera.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(NextCamera);
+      }
+      size += interpolation_.CalculateSize(_repeated_interpolation_codec);
+      size += targetType_.CalculateSize(_repeated_targetType_codec);
+      size += easeInSpeed_.CalculateSize(_repeated_easeInSpeed_codec);
+      size += eastOutSpeed_.CalculateSize(_repeated_eastOutSpeed_codec);
+      size += durationSeconds_.CalculateSize(_repeated_durationSeconds_codec);
+      size += waitSeconds_.CalculateSize(_repeated_waitSeconds_codec);
+      size += transitionSeconds_.CalculateSize(_repeated_transitionSeconds_codec);
+      size += angleDegree_.CalculateSize(_repeated_angleDegree_codec);
+      size += angleOffsetDegree_.CalculateSize(_repeated_angleOffsetDegree_codec);
+      size += pitchDegree_.CalculateSize(_repeated_pitchDegree_codec);
+      size += pitchOffsetDegree_.CalculateSize(_repeated_pitchOffsetDegree_codec);
+      size += rollDegree_.CalculateSize(_repeated_rollDegree_codec);
+      size += distanceMeters_.CalculateSize(_repeated_distanceMeters_codec);
+      size += heightPercent_.CalculateSize(_repeated_heightPercent_codec);
+      size += vertCtrRatio_.CalculateSize(_repeated_vertCtrRatio_codec);
+      return size;
+    }
+
+    public void MergeFrom(CameraSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.NextCamera.Length != 0) {
+        NextCamera = other.NextCamera;
+      }
+      interpolation_.Add(other.interpolation_);
+      targetType_.Add(other.targetType_);
+      easeInSpeed_.Add(other.easeInSpeed_);
+      eastOutSpeed_.Add(other.eastOutSpeed_);
+      durationSeconds_.Add(other.durationSeconds_);
+      waitSeconds_.Add(other.waitSeconds_);
+      transitionSeconds_.Add(other.transitionSeconds_);
+      angleDegree_.Add(other.angleDegree_);
+      angleOffsetDegree_.Add(other.angleOffsetDegree_);
+      pitchDegree_.Add(other.pitchDegree_);
+      pitchOffsetDegree_.Add(other.pitchOffsetDegree_);
+      rollDegree_.Add(other.rollDegree_);
+      distanceMeters_.Add(other.distanceMeters_);
+      heightPercent_.Add(other.heightPercent_);
+      vertCtrRatio_.Add(other.vertCtrRatio_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            NextCamera = input.ReadString();
+            break;
+          }
+          case 18:
+          case 16: {
+            interpolation_.AddEntriesFrom(input, _repeated_interpolation_codec);
+            break;
+          }
+          case 26:
+          case 24: {
+            targetType_.AddEntriesFrom(input, _repeated_targetType_codec);
+            break;
+          }
+          case 34:
+          case 37: {
+            easeInSpeed_.AddEntriesFrom(input, _repeated_easeInSpeed_codec);
+            break;
+          }
+          case 42:
+          case 45: {
+            eastOutSpeed_.AddEntriesFrom(input, _repeated_eastOutSpeed_codec);
+            break;
+          }
+          case 50:
+          case 53: {
+            durationSeconds_.AddEntriesFrom(input, _repeated_durationSeconds_codec);
+            break;
+          }
+          case 58:
+          case 61: {
+            waitSeconds_.AddEntriesFrom(input, _repeated_waitSeconds_codec);
+            break;
+          }
+          case 66:
+          case 69: {
+            transitionSeconds_.AddEntriesFrom(input, _repeated_transitionSeconds_codec);
+            break;
+          }
+          case 74:
+          case 77: {
+            angleDegree_.AddEntriesFrom(input, _repeated_angleDegree_codec);
+            break;
+          }
+          case 82:
+          case 85: {
+            angleOffsetDegree_.AddEntriesFrom(input, _repeated_angleOffsetDegree_codec);
+            break;
+          }
+          case 90:
+          case 93: {
+            pitchDegree_.AddEntriesFrom(input, _repeated_pitchDegree_codec);
+            break;
+          }
+          case 98:
+          case 101: {
+            pitchOffsetDegree_.AddEntriesFrom(input, _repeated_pitchOffsetDegree_codec);
+            break;
+          }
+          case 106:
+          case 109: {
+            rollDegree_.AddEntriesFrom(input, _repeated_rollDegree_codec);
+            break;
+          }
+          case 114:
+          case 117: {
+            distanceMeters_.AddEntriesFrom(input, _repeated_distanceMeters_codec);
+            break;
+          }
+          case 122:
+          case 125: {
+            heightPercent_.AddEntriesFrom(input, _repeated_heightPercent_codec);
+            break;
+          }
+          case 130:
+          case 133: {
+            vertCtrRatio_.AddEntriesFrom(input, _repeated_vertCtrRatio_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class BadgeSettings : pb::IMessage<BadgeSettings> {
+    private static readonly pb::MessageParser<BadgeSettings> _parser = new pb::MessageParser<BadgeSettings>(() => new BadgeSettings());
+    public static pb::MessageParser<BadgeSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[74]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public BadgeSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public BadgeSettings(BadgeSettings other) : this() {
+      badgeType_ = other.badgeType_;
+      badgeRank_ = other.badgeRank_;
+      targets_ = other.targets_.Clone();
+    }
+
+    public BadgeSettings Clone() {
+      return new BadgeSettings(this);
+    }
+
+    /// <summary>Field number for the "badge_type" field.</summary>
+    public const int BadgeTypeFieldNumber = 1;
+    private global::AllEnum.BadgeType badgeType_ = 0;
+    public global::AllEnum.BadgeType BadgeType {
+      get { return badgeType_; }
+      set {
+        badgeType_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "badge_rank" field.</summary>
+    public const int BadgeRankFieldNumber = 2;
+    private int badgeRank_;
+    public int BadgeRank {
+      get { return badgeRank_; }
+      set {
+        badgeRank_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "targets" field.</summary>
+    public const int TargetsFieldNumber = 3;
+    private static readonly pb::FieldCodec<int> _repeated_targets_codec
+        = pb::FieldCodec.ForInt32(26);
+    private readonly pbc::RepeatedField<int> targets_ = new pbc::RepeatedField<int>();
+    public pbc::RepeatedField<int> Targets {
+      get { return targets_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as BadgeSettings);
+    }
+
+    public bool Equals(BadgeSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (BadgeType != other.BadgeType) return false;
+      if (BadgeRank != other.BadgeRank) return false;
+      if(!targets_.Equals(other.targets_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (BadgeType != 0) hash ^= BadgeType.GetHashCode();
+      if (BadgeRank != 0) hash ^= BadgeRank.GetHashCode();
+      hash ^= targets_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (BadgeType != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) BadgeType);
+      }
+      if (BadgeRank != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(BadgeRank);
+      }
+      targets_.WriteTo(output, _repeated_targets_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (BadgeType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) BadgeType);
+      }
+      if (BadgeRank != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BadgeRank);
+      }
+      size += targets_.CalculateSize(_repeated_targets_codec);
+      return size;
+    }
+
+    public void MergeFrom(BadgeSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.BadgeType != 0) {
+        BadgeType = other.BadgeType;
+      }
+      if (other.BadgeRank != 0) {
+        BadgeRank = other.BadgeRank;
+      }
+      targets_.Add(other.targets_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            badgeType_ = (global::AllEnum.BadgeType) input.ReadEnum();
+            break;
+          }
+          case 16: {
+            BadgeRank = input.ReadInt32();
+            break;
+          }
+          case 26:
+          case 24: {
+            targets_.AddEntriesFrom(input, _repeated_targets_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class TypeEffectiveSettings : pb::IMessage<TypeEffectiveSettings> {
+    private static readonly pb::MessageParser<TypeEffectiveSettings> _parser = new pb::MessageParser<TypeEffectiveSettings>(() => new TypeEffectiveSettings());
+    public static pb::MessageParser<TypeEffectiveSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[75]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public TypeEffectiveSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public TypeEffectiveSettings(TypeEffectiveSettings other) : this() {
+      attackScalar_ = other.attackScalar_.Clone();
+      attackType_ = other.attackType_;
+    }
+
+    public TypeEffectiveSettings Clone() {
+      return new TypeEffectiveSettings(this);
+    }
+
+    /// <summary>Field number for the "attack_scalar" field.</summary>
+    public const int AttackScalarFieldNumber = 1;
+    private static readonly pb::FieldCodec<float> _repeated_attackScalar_codec
+        = pb::FieldCodec.ForFloat(10);
+    private readonly pbc::RepeatedField<float> attackScalar_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> AttackScalar {
+      get { return attackScalar_; }
+    }
+
+    /// <summary>Field number for the "attack_type" field.</summary>
+    public const int AttackTypeFieldNumber = 2;
+    private global::AllEnum.PokemonType attackType_ = 0;
+    public global::AllEnum.PokemonType AttackType {
+      get { return attackType_; }
+      set {
+        attackType_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as TypeEffectiveSettings);
+    }
+
+    public bool Equals(TypeEffectiveSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!attackScalar_.Equals(other.attackScalar_)) return false;
+      if (AttackType != other.AttackType) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= attackScalar_.GetHashCode();
+      if (AttackType != 0) hash ^= AttackType.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      attackScalar_.WriteTo(output, _repeated_attackScalar_codec);
+      if (AttackType != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) AttackType);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      size += attackScalar_.CalculateSize(_repeated_attackScalar_codec);
+      if (AttackType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) AttackType);
+      }
+      return size;
+    }
+
+    public void MergeFrom(TypeEffectiveSettings other) {
+      if (other == null) {
+        return;
+      }
+      attackScalar_.Add(other.attackScalar_);
+      if (other.AttackType != 0) {
+        AttackType = other.AttackType;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10:
+          case 13: {
+            attackScalar_.AddEntriesFrom(input, _repeated_attackScalar_codec);
+            break;
+          }
+          case 16: {
+            attackType_ = (global::AllEnum.PokemonType) input.ReadEnum();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class MoveSequenceSettings : pb::IMessage<MoveSequenceSettings> {
+    private static readonly pb::MessageParser<MoveSequenceSettings> _parser = new pb::MessageParser<MoveSequenceSettings>(() => new MoveSequenceSettings());
+    public static pb::MessageParser<MoveSequenceSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[76]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public MoveSequenceSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public MoveSequenceSettings(MoveSequenceSettings other) : this() {
+      sequence_ = other.sequence_.Clone();
+    }
+
+    public MoveSequenceSettings Clone() {
+      return new MoveSequenceSettings(this);
+    }
+
+    /// <summary>Field number for the "sequence" field.</summary>
+    public const int SequenceFieldNumber = 1;
+    private static readonly pb::FieldCodec<string> _repeated_sequence_codec
+        = pb::FieldCodec.ForString(10);
+    private readonly pbc::RepeatedField<string> sequence_ = new pbc::RepeatedField<string>();
+    public pbc::RepeatedField<string> Sequence {
+      get { return sequence_; }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as MoveSequenceSettings);
+    }
+
+    public bool Equals(MoveSequenceSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!sequence_.Equals(other.sequence_)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= sequence_.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      sequence_.WriteTo(output, _repeated_sequence_codec);
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      size += sequence_.CalculateSize(_repeated_sequence_codec);
+      return size;
+    }
+
+    public void MergeFrom(MoveSequenceSettings other) {
+      if (other == null) {
+        return;
+      }
+      sequence_.Add(other.sequence_);
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            sequence_.AddEntriesFrom(input, _repeated_sequence_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class MoveSettings : pb::IMessage<MoveSettings> {
+    private static readonly pb::MessageParser<MoveSettings> _parser = new pb::MessageParser<MoveSettings>(() => new MoveSettings());
+    public static pb::MessageParser<MoveSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[77]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public MoveSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public MoveSettings(MoveSettings other) : this() {
+      movementId_ = other.movementId_;
+      animationId_ = other.animationId_;
+      pokemonType_ = other.pokemonType_;
+      power_ = other.power_;
+      accuracyChance_ = other.accuracyChance_;
+      criticalChance_ = other.criticalChance_;
+      healScalar_ = other.healScalar_;
+      staminaLossScalar_ = other.staminaLossScalar_;
+      trainerLevelMin_ = other.trainerLevelMin_;
+      trainerLevelMax_ = other.trainerLevelMax_;
+      vfxName_ = other.vfxName_;
+      durationMs_ = other.durationMs_;
+      damageWindowStartMs_ = other.damageWindowStartMs_;
+      damageWindowEndMs_ = other.damageWindowEndMs_;
+      energyDelta_ = other.energyDelta_;
+    }
+
+    public MoveSettings Clone() {
+      return new MoveSettings(this);
+    }
+
+    /// <summary>Field number for the "movement_id" field.</summary>
+    public const int MovementIdFieldNumber = 1;
+    private global::AllEnum.PokemonMovementType movementId_ = 0;
+    public global::AllEnum.PokemonMovementType MovementId {
+      get { return movementId_; }
+      set {
+        movementId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "animation_id" field.</summary>
+    public const int AnimationIdFieldNumber = 2;
+    private int animationId_;
+    public int AnimationId {
+      get { return animationId_; }
+      set {
+        animationId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_type" field.</summary>
+    public const int PokemonTypeFieldNumber = 3;
+    private global::AllEnum.PokemonType pokemonType_ = 0;
+    public global::AllEnum.PokemonType PokemonType {
+      get { return pokemonType_; }
+      set {
+        pokemonType_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "power" field.</summary>
+    public const int PowerFieldNumber = 4;
+    private float power_;
+    public float Power {
+      get { return power_; }
+      set {
+        power_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "accuracy_chance" field.</summary>
+    public const int AccuracyChanceFieldNumber = 5;
+    private float accuracyChance_;
+    public float AccuracyChance {
+      get { return accuracyChance_; }
+      set {
+        accuracyChance_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "critical_chance" field.</summary>
+    public const int CriticalChanceFieldNumber = 6;
+    private float criticalChance_;
+    public float CriticalChance {
+      get { return criticalChance_; }
+      set {
+        criticalChance_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "heal_scalar" field.</summary>
+    public const int HealScalarFieldNumber = 7;
+    private float healScalar_;
+    public float HealScalar {
+      get { return healScalar_; }
+      set {
+        healScalar_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "stamina_loss_scalar" field.</summary>
+    public const int StaminaLossScalarFieldNumber = 8;
+    private float staminaLossScalar_;
+    public float StaminaLossScalar {
+      get { return staminaLossScalar_; }
+      set {
+        staminaLossScalar_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "trainer_level_min" field.</summary>
+    public const int TrainerLevelMinFieldNumber = 9;
+    private int trainerLevelMin_;
+    public int TrainerLevelMin {
+      get { return trainerLevelMin_; }
+      set {
+        trainerLevelMin_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "trainer_level_max" field.</summary>
+    public const int TrainerLevelMaxFieldNumber = 10;
+    private int trainerLevelMax_;
+    public int TrainerLevelMax {
+      get { return trainerLevelMax_; }
+      set {
+        trainerLevelMax_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "vfx_name" field.</summary>
+    public const int VfxNameFieldNumber = 11;
+    private string vfxName_ = "";
+    public string VfxName {
+      get { return vfxName_; }
+      set {
+        vfxName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "duration_ms" field.</summary>
+    public const int DurationMsFieldNumber = 12;
+    private int durationMs_;
+    public int DurationMs {
+      get { return durationMs_; }
+      set {
+        durationMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "damage_window_start_ms" field.</summary>
+    public const int DamageWindowStartMsFieldNumber = 13;
+    private int damageWindowStartMs_;
+    public int DamageWindowStartMs {
+      get { return damageWindowStartMs_; }
+      set {
+        damageWindowStartMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "damage_window_end_ms" field.</summary>
+    public const int DamageWindowEndMsFieldNumber = 14;
+    private int damageWindowEndMs_;
+    public int DamageWindowEndMs {
+      get { return damageWindowEndMs_; }
+      set {
+        damageWindowEndMs_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "energy_delta" field.</summary>
+    public const int EnergyDeltaFieldNumber = 15;
+    private int energyDelta_;
+    public int EnergyDelta {
+      get { return energyDelta_; }
+      set {
+        energyDelta_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as MoveSettings);
+    }
+
+    public bool Equals(MoveSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (MovementId != other.MovementId) return false;
+      if (AnimationId != other.AnimationId) return false;
+      if (PokemonType != other.PokemonType) return false;
+      if (Power != other.Power) return false;
+      if (AccuracyChance != other.AccuracyChance) return false;
+      if (CriticalChance != other.CriticalChance) return false;
+      if (HealScalar != other.HealScalar) return false;
+      if (StaminaLossScalar != other.StaminaLossScalar) return false;
+      if (TrainerLevelMin != other.TrainerLevelMin) return false;
+      if (TrainerLevelMax != other.TrainerLevelMax) return false;
+      if (VfxName != other.VfxName) return false;
+      if (DurationMs != other.DurationMs) return false;
+      if (DamageWindowStartMs != other.DamageWindowStartMs) return false;
+      if (DamageWindowEndMs != other.DamageWindowEndMs) return false;
+      if (EnergyDelta != other.EnergyDelta) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (MovementId != 0) hash ^= MovementId.GetHashCode();
+      if (AnimationId != 0) hash ^= AnimationId.GetHashCode();
+      if (PokemonType != 0) hash ^= PokemonType.GetHashCode();
+      if (Power != 0F) hash ^= Power.GetHashCode();
+      if (AccuracyChance != 0F) hash ^= AccuracyChance.GetHashCode();
+      if (CriticalChance != 0F) hash ^= CriticalChance.GetHashCode();
+      if (HealScalar != 0F) hash ^= HealScalar.GetHashCode();
+      if (StaminaLossScalar != 0F) hash ^= StaminaLossScalar.GetHashCode();
+      if (TrainerLevelMin != 0) hash ^= TrainerLevelMin.GetHashCode();
+      if (TrainerLevelMax != 0) hash ^= TrainerLevelMax.GetHashCode();
+      if (VfxName.Length != 0) hash ^= VfxName.GetHashCode();
+      if (DurationMs != 0) hash ^= DurationMs.GetHashCode();
+      if (DamageWindowStartMs != 0) hash ^= DamageWindowStartMs.GetHashCode();
+      if (DamageWindowEndMs != 0) hash ^= DamageWindowEndMs.GetHashCode();
+      if (EnergyDelta != 0) hash ^= EnergyDelta.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (MovementId != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) MovementId);
+      }
+      if (AnimationId != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(AnimationId);
+      }
+      if (PokemonType != 0) {
+        output.WriteRawTag(24);
+        output.WriteEnum((int) PokemonType);
+      }
+      if (Power != 0F) {
+        output.WriteRawTag(37);
+        output.WriteFloat(Power);
+      }
+      if (AccuracyChance != 0F) {
+        output.WriteRawTag(45);
+        output.WriteFloat(AccuracyChance);
+      }
+      if (CriticalChance != 0F) {
+        output.WriteRawTag(53);
+        output.WriteFloat(CriticalChance);
+      }
+      if (HealScalar != 0F) {
+        output.WriteRawTag(61);
+        output.WriteFloat(HealScalar);
+      }
+      if (StaminaLossScalar != 0F) {
+        output.WriteRawTag(69);
+        output.WriteFloat(StaminaLossScalar);
+      }
+      if (TrainerLevelMin != 0) {
+        output.WriteRawTag(72);
+        output.WriteInt32(TrainerLevelMin);
+      }
+      if (TrainerLevelMax != 0) {
+        output.WriteRawTag(80);
+        output.WriteInt32(TrainerLevelMax);
+      }
+      if (VfxName.Length != 0) {
+        output.WriteRawTag(90);
+        output.WriteString(VfxName);
+      }
+      if (DurationMs != 0) {
+        output.WriteRawTag(96);
+        output.WriteInt32(DurationMs);
+      }
+      if (DamageWindowStartMs != 0) {
+        output.WriteRawTag(104);
+        output.WriteInt32(DamageWindowStartMs);
+      }
+      if (DamageWindowEndMs != 0) {
+        output.WriteRawTag(112);
+        output.WriteInt32(DamageWindowEndMs);
+      }
+      if (EnergyDelta != 0) {
+        output.WriteRawTag(120);
+        output.WriteInt32(EnergyDelta);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (MovementId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MovementId);
+      }
+      if (AnimationId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(AnimationId);
+      }
+      if (PokemonType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PokemonType);
+      }
+      if (Power != 0F) {
+        size += 1 + 4;
+      }
+      if (AccuracyChance != 0F) {
+        size += 1 + 4;
+      }
+      if (CriticalChance != 0F) {
+        size += 1 + 4;
+      }
+      if (HealScalar != 0F) {
+        size += 1 + 4;
+      }
+      if (StaminaLossScalar != 0F) {
+        size += 1 + 4;
+      }
+      if (TrainerLevelMin != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TrainerLevelMin);
+      }
+      if (TrainerLevelMax != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TrainerLevelMax);
+      }
+      if (VfxName.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(VfxName);
+      }
+      if (DurationMs != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DurationMs);
+      }
+      if (DamageWindowStartMs != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DamageWindowStartMs);
+      }
+      if (DamageWindowEndMs != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DamageWindowEndMs);
+      }
+      if (EnergyDelta != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EnergyDelta);
+      }
+      return size;
+    }
+
+    public void MergeFrom(MoveSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.MovementId != 0) {
+        MovementId = other.MovementId;
+      }
+      if (other.AnimationId != 0) {
+        AnimationId = other.AnimationId;
+      }
+      if (other.PokemonType != 0) {
+        PokemonType = other.PokemonType;
+      }
+      if (other.Power != 0F) {
+        Power = other.Power;
+      }
+      if (other.AccuracyChance != 0F) {
+        AccuracyChance = other.AccuracyChance;
+      }
+      if (other.CriticalChance != 0F) {
+        CriticalChance = other.CriticalChance;
+      }
+      if (other.HealScalar != 0F) {
+        HealScalar = other.HealScalar;
+      }
+      if (other.StaminaLossScalar != 0F) {
+        StaminaLossScalar = other.StaminaLossScalar;
+      }
+      if (other.TrainerLevelMin != 0) {
+        TrainerLevelMin = other.TrainerLevelMin;
+      }
+      if (other.TrainerLevelMax != 0) {
+        TrainerLevelMax = other.TrainerLevelMax;
+      }
+      if (other.VfxName.Length != 0) {
+        VfxName = other.VfxName;
+      }
+      if (other.DurationMs != 0) {
+        DurationMs = other.DurationMs;
+      }
+      if (other.DamageWindowStartMs != 0) {
+        DamageWindowStartMs = other.DamageWindowStartMs;
+      }
+      if (other.DamageWindowEndMs != 0) {
+        DamageWindowEndMs = other.DamageWindowEndMs;
+      }
+      if (other.EnergyDelta != 0) {
+        EnergyDelta = other.EnergyDelta;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            movementId_ = (global::AllEnum.PokemonMovementType) input.ReadEnum();
+            break;
+          }
+          case 16: {
+            AnimationId = input.ReadInt32();
+            break;
+          }
+          case 24: {
+            pokemonType_ = (global::AllEnum.PokemonType) input.ReadEnum();
+            break;
+          }
+          case 37: {
+            Power = input.ReadFloat();
+            break;
+          }
+          case 45: {
+            AccuracyChance = input.ReadFloat();
+            break;
+          }
+          case 53: {
+            CriticalChance = input.ReadFloat();
+            break;
+          }
+          case 61: {
+            HealScalar = input.ReadFloat();
+            break;
+          }
+          case 69: {
+            StaminaLossScalar = input.ReadFloat();
+            break;
+          }
+          case 72: {
+            TrainerLevelMin = input.ReadInt32();
+            break;
+          }
+          case 80: {
+            TrainerLevelMax = input.ReadInt32();
+            break;
+          }
+          case 90: {
+            VfxName = input.ReadString();
+            break;
+          }
+          case 96: {
+            DurationMs = input.ReadInt32();
+            break;
+          }
+          case 104: {
+            DamageWindowStartMs = input.ReadInt32();
+            break;
+          }
+          case 112: {
+            DamageWindowEndMs = input.ReadInt32();
+            break;
+          }
+          case 120: {
+            EnergyDelta = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PokemonSettings : pb::IMessage<PokemonSettings> {
+    private static readonly pb::MessageParser<PokemonSettings> _parser = new pb::MessageParser<PokemonSettings>(() => new PokemonSettings());
+    public static pb::MessageParser<PokemonSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[78]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PokemonSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PokemonSettings(PokemonSettings other) : this() {
+      pokemonId_ = other.pokemonId_;
+      modelScale_ = other.modelScale_;
+      type_ = other.type_;
+      type2_ = other.type2_;
+      Camera = other.camera_ != null ? other.Camera.Clone() : null;
+      Encounter = other.encounter_ != null ? other.Encounter.Clone() : null;
+      Stats = other.stats_ != null ? other.Stats.Clone() : null;
+      quickMoves_ = other.quickMoves_.Clone();
+      cinematicMoves_ = other.cinematicMoves_.Clone();
+      animationTime_ = other.animationTime_.Clone();
+      evolutionIds_ = other.evolutionIds_.Clone();
+      evolutionPips_ = other.evolutionPips_;
+      class_ = other.class_;
+      pokedexHeightM_ = other.pokedexHeightM_;
+      pokedexWeightKg_ = other.pokedexWeightKg_;
+      parentPokemonId_ = other.parentPokemonId_;
+      heightStdDev_ = other.heightStdDev_;
+      weightStdDev_ = other.weightStdDev_;
+      kmDistanceToHatch_ = other.kmDistanceToHatch_;
+      familyId_ = other.familyId_;
+      candyToEvolve_ = other.candyToEvolve_;
+    }
+
+    public PokemonSettings Clone() {
+      return new PokemonSettings(this);
+    }
+
+    /// <summary>Field number for the "pokemon_id" field.</summary>
+    public const int PokemonIdFieldNumber = 1;
+    private global::AllEnum.PokemonId pokemonId_ = 0;
+    public global::AllEnum.PokemonId PokemonId {
+      get { return pokemonId_; }
+      set {
+        pokemonId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "model_scale" field.</summary>
+    public const int ModelScaleFieldNumber = 3;
+    private float modelScale_;
+    public float ModelScale {
+      get { return modelScale_; }
+      set {
+        modelScale_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "type" field.</summary>
+    public const int TypeFieldNumber = 4;
+    private global::AllEnum.PokemonType type_ = 0;
+    public global::AllEnum.PokemonType Type {
+      get { return type_; }
+      set {
+        type_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "type_2" field.</summary>
+    public const int Type2FieldNumber = 5;
+    private global::AllEnum.PokemonType type2_ = 0;
+    public global::AllEnum.PokemonType Type2 {
+      get { return type2_; }
+      set {
+        type2_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "camera" field.</summary>
+    public const int CameraFieldNumber = 6;
+    private global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes camera_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes Camera {
+      get { return camera_; }
+      set {
+        camera_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "encounter" field.</summary>
+    public const int EncounterFieldNumber = 7;
+    private global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes encounter_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes Encounter {
+      get { return encounter_; }
+      set {
+        encounter_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "stats" field.</summary>
+    public const int StatsFieldNumber = 8;
+    private global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes stats_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes Stats {
+      get { return stats_; }
+      set {
+        stats_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "quick_moves" field.</summary>
+    public const int QuickMovesFieldNumber = 9;
+    private static readonly pb::FieldCodec<global::AllEnum.PokemonMove> _repeated_quickMoves_codec
+        = pb::FieldCodec.ForEnum(74, x => (int) x, x => (global::AllEnum.PokemonMove) x);
+    private readonly pbc::RepeatedField<global::AllEnum.PokemonMove> quickMoves_ = new pbc::RepeatedField<global::AllEnum.PokemonMove>();
+    public pbc::RepeatedField<global::AllEnum.PokemonMove> QuickMoves {
+      get { return quickMoves_; }
+    }
+
+    /// <summary>Field number for the "cinematic_moves" field.</summary>
+    public const int CinematicMovesFieldNumber = 10;
+    private static readonly pb::FieldCodec<global::AllEnum.PokemonMove> _repeated_cinematicMoves_codec
+        = pb::FieldCodec.ForEnum(82, x => (int) x, x => (global::AllEnum.PokemonMove) x);
+    private readonly pbc::RepeatedField<global::AllEnum.PokemonMove> cinematicMoves_ = new pbc::RepeatedField<global::AllEnum.PokemonMove>();
+    public pbc::RepeatedField<global::AllEnum.PokemonMove> CinematicMoves {
+      get { return cinematicMoves_; }
+    }
+
+    /// <summary>Field number for the "animation_time" field.</summary>
+    public const int AnimationTimeFieldNumber = 11;
+    private static readonly pb::FieldCodec<float> _repeated_animationTime_codec
+        = pb::FieldCodec.ForFloat(90);
+    private readonly pbc::RepeatedField<float> animationTime_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> AnimationTime {
+      get { return animationTime_; }
+    }
+
+    /// <summary>Field number for the "evolution_ids" field.</summary>
+    public const int EvolutionIdsFieldNumber = 12;
+    private static readonly pb::FieldCodec<global::AllEnum.PokemonId> _repeated_evolutionIds_codec
+        = pb::FieldCodec.ForEnum(98, x => (int) x, x => (global::AllEnum.PokemonId) x);
+    private readonly pbc::RepeatedField<global::AllEnum.PokemonId> evolutionIds_ = new pbc::RepeatedField<global::AllEnum.PokemonId>();
+    public pbc::RepeatedField<global::AllEnum.PokemonId> EvolutionIds {
+      get { return evolutionIds_; }
+    }
+
+    /// <summary>Field number for the "evolution_pips" field.</summary>
+    public const int EvolutionPipsFieldNumber = 13;
+    private int evolutionPips_;
+    public int EvolutionPips {
+      get { return evolutionPips_; }
+      set {
+        evolutionPips_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "class" field.</summary>
+    public const int ClassFieldNumber = 14;
+    private global::AllEnum.PokemonClass class_ = 0;
+    public global::AllEnum.PokemonClass Class {
+      get { return class_; }
+      set {
+        class_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokedex_height_m" field.</summary>
+    public const int PokedexHeightMFieldNumber = 15;
+    private float pokedexHeightM_;
+    public float PokedexHeightM {
+      get { return pokedexHeightM_; }
+      set {
+        pokedexHeightM_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokedex_weight_kg" field.</summary>
+    public const int PokedexWeightKgFieldNumber = 16;
+    private float pokedexWeightKg_;
+    public float PokedexWeightKg {
+      get { return pokedexWeightKg_; }
+      set {
+        pokedexWeightKg_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "parent_pokemon_id" field.</summary>
+    public const int ParentPokemonIdFieldNumber = 17;
+    private global::AllEnum.PokemonId parentPokemonId_ = 0;
+    public global::AllEnum.PokemonId ParentPokemonId {
+      get { return parentPokemonId_; }
+      set {
+        parentPokemonId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "height_std_dev" field.</summary>
+    public const int HeightStdDevFieldNumber = 18;
+    private float heightStdDev_;
+    public float HeightStdDev {
+      get { return heightStdDev_; }
+      set {
+        heightStdDev_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "weight_std_dev" field.</summary>
+    public const int WeightStdDevFieldNumber = 19;
+    private float weightStdDev_;
+    public float WeightStdDev {
+      get { return weightStdDev_; }
+      set {
+        weightStdDev_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "km_distance_to_hatch" field.</summary>
+    public const int KmDistanceToHatchFieldNumber = 20;
+    private float kmDistanceToHatch_;
+    public float KmDistanceToHatch {
+      get { return kmDistanceToHatch_; }
+      set {
+        kmDistanceToHatch_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "family_id" field.</summary>
+    public const int FamilyIdFieldNumber = 21;
+    private global::AllEnum.PokemonFamilyId familyId_ = 0;
+    public global::AllEnum.PokemonFamilyId FamilyId {
+      get { return familyId_; }
+      set {
+        familyId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "candy_to_evolve" field.</summary>
+    public const int CandyToEvolveFieldNumber = 22;
+    private int candyToEvolve_;
+    public int CandyToEvolve {
+      get { return candyToEvolve_; }
+      set {
+        candyToEvolve_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PokemonSettings);
+    }
+
+    public bool Equals(PokemonSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (PokemonId != other.PokemonId) return false;
+      if (ModelScale != other.ModelScale) return false;
+      if (Type != other.Type) return false;
+      if (Type2 != other.Type2) return false;
+      if (!object.Equals(Camera, other.Camera)) return false;
+      if (!object.Equals(Encounter, other.Encounter)) return false;
+      if (!object.Equals(Stats, other.Stats)) return false;
+      if(!quickMoves_.Equals(other.quickMoves_)) return false;
+      if(!cinematicMoves_.Equals(other.cinematicMoves_)) return false;
+      if(!animationTime_.Equals(other.animationTime_)) return false;
+      if(!evolutionIds_.Equals(other.evolutionIds_)) return false;
+      if (EvolutionPips != other.EvolutionPips) return false;
+      if (Class != other.Class) return false;
+      if (PokedexHeightM != other.PokedexHeightM) return false;
+      if (PokedexWeightKg != other.PokedexWeightKg) return false;
+      if (ParentPokemonId != other.ParentPokemonId) return false;
+      if (HeightStdDev != other.HeightStdDev) return false;
+      if (WeightStdDev != other.WeightStdDev) return false;
+      if (KmDistanceToHatch != other.KmDistanceToHatch) return false;
+      if (FamilyId != other.FamilyId) return false;
+      if (CandyToEvolve != other.CandyToEvolve) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (PokemonId != 0) hash ^= PokemonId.GetHashCode();
+      if (ModelScale != 0F) hash ^= ModelScale.GetHashCode();
+      if (Type != 0) hash ^= Type.GetHashCode();
+      if (Type2 != 0) hash ^= Type2.GetHashCode();
+      if (camera_ != null) hash ^= Camera.GetHashCode();
+      if (encounter_ != null) hash ^= Encounter.GetHashCode();
+      if (stats_ != null) hash ^= Stats.GetHashCode();
+      hash ^= quickMoves_.GetHashCode();
+      hash ^= cinematicMoves_.GetHashCode();
+      hash ^= animationTime_.GetHashCode();
+      hash ^= evolutionIds_.GetHashCode();
+      if (EvolutionPips != 0) hash ^= EvolutionPips.GetHashCode();
+      if (Class != 0) hash ^= Class.GetHashCode();
+      if (PokedexHeightM != 0F) hash ^= PokedexHeightM.GetHashCode();
+      if (PokedexWeightKg != 0F) hash ^= PokedexWeightKg.GetHashCode();
+      if (ParentPokemonId != 0) hash ^= ParentPokemonId.GetHashCode();
+      if (HeightStdDev != 0F) hash ^= HeightStdDev.GetHashCode();
+      if (WeightStdDev != 0F) hash ^= WeightStdDev.GetHashCode();
+      if (KmDistanceToHatch != 0F) hash ^= KmDistanceToHatch.GetHashCode();
+      if (FamilyId != 0) hash ^= FamilyId.GetHashCode();
+      if (CandyToEvolve != 0) hash ^= CandyToEvolve.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (PokemonId != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) PokemonId);
+      }
+      if (ModelScale != 0F) {
+        output.WriteRawTag(29);
+        output.WriteFloat(ModelScale);
+      }
+      if (Type != 0) {
+        output.WriteRawTag(32);
+        output.WriteEnum((int) Type);
+      }
+      if (Type2 != 0) {
+        output.WriteRawTag(40);
+        output.WriteEnum((int) Type2);
+      }
+      if (camera_ != null) {
+        output.WriteRawTag(50);
+        output.WriteMessage(Camera);
+      }
+      if (encounter_ != null) {
+        output.WriteRawTag(58);
+        output.WriteMessage(Encounter);
+      }
+      if (stats_ != null) {
+        output.WriteRawTag(66);
+        output.WriteMessage(Stats);
+      }
+      quickMoves_.WriteTo(output, _repeated_quickMoves_codec);
+      cinematicMoves_.WriteTo(output, _repeated_cinematicMoves_codec);
+      animationTime_.WriteTo(output, _repeated_animationTime_codec);
+      evolutionIds_.WriteTo(output, _repeated_evolutionIds_codec);
+      if (EvolutionPips != 0) {
+        output.WriteRawTag(104);
+        output.WriteInt32(EvolutionPips);
+      }
+      if (Class != 0) {
+        output.WriteRawTag(112);
+        output.WriteEnum((int) Class);
+      }
+      if (PokedexHeightM != 0F) {
+        output.WriteRawTag(125);
+        output.WriteFloat(PokedexHeightM);
+      }
+      if (PokedexWeightKg != 0F) {
+        output.WriteRawTag(133, 1);
+        output.WriteFloat(PokedexWeightKg);
+      }
+      if (ParentPokemonId != 0) {
+        output.WriteRawTag(136, 1);
+        output.WriteEnum((int) ParentPokemonId);
+      }
+      if (HeightStdDev != 0F) {
+        output.WriteRawTag(149, 1);
+        output.WriteFloat(HeightStdDev);
+      }
+      if (WeightStdDev != 0F) {
+        output.WriteRawTag(157, 1);
+        output.WriteFloat(WeightStdDev);
+      }
+      if (KmDistanceToHatch != 0F) {
+        output.WriteRawTag(165, 1);
+        output.WriteFloat(KmDistanceToHatch);
+      }
+      if (FamilyId != 0) {
+        output.WriteRawTag(168, 1);
+        output.WriteEnum((int) FamilyId);
+      }
+      if (CandyToEvolve != 0) {
+        output.WriteRawTag(176, 1);
+        output.WriteInt32(CandyToEvolve);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (PokemonId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PokemonId);
+      }
+      if (ModelScale != 0F) {
+        size += 1 + 4;
+      }
+      if (Type != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
+      }
+      if (Type2 != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type2);
+      }
+      if (camera_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Camera);
+      }
+      if (encounter_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Encounter);
+      }
+      if (stats_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Stats);
+      }
+      size += quickMoves_.CalculateSize(_repeated_quickMoves_codec);
+      size += cinematicMoves_.CalculateSize(_repeated_cinematicMoves_codec);
+      size += animationTime_.CalculateSize(_repeated_animationTime_codec);
+      size += evolutionIds_.CalculateSize(_repeated_evolutionIds_codec);
+      if (EvolutionPips != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EvolutionPips);
+      }
+      if (Class != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Class);
+      }
+      if (PokedexHeightM != 0F) {
+        size += 1 + 4;
+      }
+      if (PokedexWeightKg != 0F) {
+        size += 2 + 4;
+      }
+      if (ParentPokemonId != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) ParentPokemonId);
+      }
+      if (HeightStdDev != 0F) {
+        size += 2 + 4;
+      }
+      if (WeightStdDev != 0F) {
+        size += 2 + 4;
+      }
+      if (KmDistanceToHatch != 0F) {
+        size += 2 + 4;
+      }
+      if (FamilyId != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) FamilyId);
+      }
+      if (CandyToEvolve != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeInt32Size(CandyToEvolve);
+      }
+      return size;
+    }
+
+    public void MergeFrom(PokemonSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.PokemonId != 0) {
+        PokemonId = other.PokemonId;
+      }
+      if (other.ModelScale != 0F) {
+        ModelScale = other.ModelScale;
+      }
+      if (other.Type != 0) {
+        Type = other.Type;
+      }
+      if (other.Type2 != 0) {
+        Type2 = other.Type2;
+      }
+      if (other.camera_ != null) {
+        if (camera_ == null) {
+          camera_ = new global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes();
+        }
+        Camera.MergeFrom(other.Camera);
+      }
+      if (other.encounter_ != null) {
+        if (encounter_ == null) {
+          encounter_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes();
+        }
+        Encounter.MergeFrom(other.Encounter);
+      }
+      if (other.stats_ != null) {
+        if (stats_ == null) {
+          stats_ = new global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes();
+        }
+        Stats.MergeFrom(other.Stats);
+      }
+      quickMoves_.Add(other.quickMoves_);
+      cinematicMoves_.Add(other.cinematicMoves_);
+      animationTime_.Add(other.animationTime_);
+      evolutionIds_.Add(other.evolutionIds_);
+      if (other.EvolutionPips != 0) {
+        EvolutionPips = other.EvolutionPips;
+      }
+      if (other.Class != 0) {
+        Class = other.Class;
+      }
+      if (other.PokedexHeightM != 0F) {
+        PokedexHeightM = other.PokedexHeightM;
+      }
+      if (other.PokedexWeightKg != 0F) {
+        PokedexWeightKg = other.PokedexWeightKg;
+      }
+      if (other.ParentPokemonId != 0) {
+        ParentPokemonId = other.ParentPokemonId;
+      }
+      if (other.HeightStdDev != 0F) {
+        HeightStdDev = other.HeightStdDev;
+      }
+      if (other.WeightStdDev != 0F) {
+        WeightStdDev = other.WeightStdDev;
+      }
+      if (other.KmDistanceToHatch != 0F) {
+        KmDistanceToHatch = other.KmDistanceToHatch;
+      }
+      if (other.FamilyId != 0) {
+        FamilyId = other.FamilyId;
+      }
+      if (other.CandyToEvolve != 0) {
+        CandyToEvolve = other.CandyToEvolve;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            pokemonId_ = (global::AllEnum.PokemonId) input.ReadEnum();
+            break;
+          }
+          case 29: {
+            ModelScale = input.ReadFloat();
+            break;
+          }
+          case 32: {
+            type_ = (global::AllEnum.PokemonType) input.ReadEnum();
+            break;
+          }
+          case 40: {
+            type2_ = (global::AllEnum.PokemonType) input.ReadEnum();
+            break;
+          }
+          case 50: {
+            if (camera_ == null) {
+              camera_ = new global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes();
+            }
+            input.ReadMessage(camera_);
+            break;
+          }
+          case 58: {
+            if (encounter_ == null) {
+              encounter_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes();
+            }
+            input.ReadMessage(encounter_);
+            break;
+          }
+          case 66: {
+            if (stats_ == null) {
+              stats_ = new global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes();
+            }
+            input.ReadMessage(stats_);
+            break;
+          }
+          case 74:
+          case 72: {
+            quickMoves_.AddEntriesFrom(input, _repeated_quickMoves_codec);
+            break;
+          }
+          case 82:
+          case 80: {
+            cinematicMoves_.AddEntriesFrom(input, _repeated_cinematicMoves_codec);
+            break;
+          }
+          case 90:
+          case 93: {
+            animationTime_.AddEntriesFrom(input, _repeated_animationTime_codec);
+            break;
+          }
+          case 98:
+          case 96: {
+            evolutionIds_.AddEntriesFrom(input, _repeated_evolutionIds_codec);
+            break;
+          }
+          case 104: {
+            EvolutionPips = input.ReadInt32();
+            break;
+          }
+          case 112: {
+            class_ = (global::AllEnum.PokemonClass) input.ReadEnum();
+            break;
+          }
+          case 125: {
+            PokedexHeightM = input.ReadFloat();
+            break;
+          }
+          case 133: {
+            PokedexWeightKg = input.ReadFloat();
+            break;
+          }
+          case 136: {
+            parentPokemonId_ = (global::AllEnum.PokemonId) input.ReadEnum();
+            break;
+          }
+          case 149: {
+            HeightStdDev = input.ReadFloat();
+            break;
+          }
+          case 157: {
+            WeightStdDev = input.ReadFloat();
+            break;
+          }
+          case 165: {
+            KmDistanceToHatch = input.ReadFloat();
+            break;
+          }
+          case 168: {
+            familyId_ = (global::AllEnum.PokemonFamilyId) input.ReadEnum();
+            break;
+          }
+          case 176: {
+            CandyToEvolve = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class CameraAttributes : pb::IMessage<CameraAttributes> {
+    private static readonly pb::MessageParser<CameraAttributes> _parser = new pb::MessageParser<CameraAttributes>(() => new CameraAttributes());
+    public static pb::MessageParser<CameraAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[79]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public CameraAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public CameraAttributes(CameraAttributes other) : this() {
+      diskRadiusM_ = other.diskRadiusM_;
+      cylinderRadiusM_ = other.cylinderRadiusM_;
+      cylinderHeightM_ = other.cylinderHeightM_;
+      cylinderGroundM_ = other.cylinderGroundM_;
+      shoulderModeScale_ = other.shoulderModeScale_;
+    }
+
+    public CameraAttributes Clone() {
+      return new CameraAttributes(this);
+    }
+
+    /// <summary>Field number for the "disk_radius_m" field.</summary>
+    public const int DiskRadiusMFieldNumber = 1;
+    private float diskRadiusM_;
+    public float DiskRadiusM {
+      get { return diskRadiusM_; }
+      set {
+        diskRadiusM_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "cylinder_radius_m" field.</summary>
+    public const int CylinderRadiusMFieldNumber = 2;
+    private float cylinderRadiusM_;
+    public float CylinderRadiusM {
+      get { return cylinderRadiusM_; }
+      set {
+        cylinderRadiusM_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "cylinder_height_m" field.</summary>
+    public const int CylinderHeightMFieldNumber = 3;
+    private float cylinderHeightM_;
+    public float CylinderHeightM {
+      get { return cylinderHeightM_; }
+      set {
+        cylinderHeightM_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "cylinder_ground_m" field.</summary>
+    public const int CylinderGroundMFieldNumber = 4;
+    private float cylinderGroundM_;
+    public float CylinderGroundM {
+      get { return cylinderGroundM_; }
+      set {
+        cylinderGroundM_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "shoulder_mode_scale" field.</summary>
+    public const int ShoulderModeScaleFieldNumber = 5;
+    private float shoulderModeScale_;
+    public float ShoulderModeScale {
+      get { return shoulderModeScale_; }
+      set {
+        shoulderModeScale_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as CameraAttributes);
+    }
+
+    public bool Equals(CameraAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (DiskRadiusM != other.DiskRadiusM) return false;
+      if (CylinderRadiusM != other.CylinderRadiusM) return false;
+      if (CylinderHeightM != other.CylinderHeightM) return false;
+      if (CylinderGroundM != other.CylinderGroundM) return false;
+      if (ShoulderModeScale != other.ShoulderModeScale) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (DiskRadiusM != 0F) hash ^= DiskRadiusM.GetHashCode();
+      if (CylinderRadiusM != 0F) hash ^= CylinderRadiusM.GetHashCode();
+      if (CylinderHeightM != 0F) hash ^= CylinderHeightM.GetHashCode();
+      if (CylinderGroundM != 0F) hash ^= CylinderGroundM.GetHashCode();
+      if (ShoulderModeScale != 0F) hash ^= ShoulderModeScale.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (DiskRadiusM != 0F) {
+        output.WriteRawTag(13);
+        output.WriteFloat(DiskRadiusM);
+      }
+      if (CylinderRadiusM != 0F) {
+        output.WriteRawTag(21);
+        output.WriteFloat(CylinderRadiusM);
+      }
+      if (CylinderHeightM != 0F) {
+        output.WriteRawTag(29);
+        output.WriteFloat(CylinderHeightM);
+      }
+      if (CylinderGroundM != 0F) {
+        output.WriteRawTag(37);
+        output.WriteFloat(CylinderGroundM);
+      }
+      if (ShoulderModeScale != 0F) {
+        output.WriteRawTag(45);
+        output.WriteFloat(ShoulderModeScale);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (DiskRadiusM != 0F) {
+        size += 1 + 4;
+      }
+      if (CylinderRadiusM != 0F) {
+        size += 1 + 4;
+      }
+      if (CylinderHeightM != 0F) {
+        size += 1 + 4;
+      }
+      if (CylinderGroundM != 0F) {
+        size += 1 + 4;
+      }
+      if (ShoulderModeScale != 0F) {
+        size += 1 + 4;
+      }
+      return size;
+    }
+
+    public void MergeFrom(CameraAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.DiskRadiusM != 0F) {
+        DiskRadiusM = other.DiskRadiusM;
+      }
+      if (other.CylinderRadiusM != 0F) {
+        CylinderRadiusM = other.CylinderRadiusM;
+      }
+      if (other.CylinderHeightM != 0F) {
+        CylinderHeightM = other.CylinderHeightM;
+      }
+      if (other.CylinderGroundM != 0F) {
+        CylinderGroundM = other.CylinderGroundM;
+      }
+      if (other.ShoulderModeScale != 0F) {
+        ShoulderModeScale = other.ShoulderModeScale;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 13: {
+            DiskRadiusM = input.ReadFloat();
+            break;
+          }
+          case 21: {
+            CylinderRadiusM = input.ReadFloat();
+            break;
+          }
+          case 29: {
+            CylinderHeightM = input.ReadFloat();
+            break;
+          }
+          case 37: {
+            CylinderGroundM = input.ReadFloat();
+            break;
+          }
+          case 45: {
+            ShoulderModeScale = input.ReadFloat();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class EncounterAttributes : pb::IMessage<EncounterAttributes> {
+    private static readonly pb::MessageParser<EncounterAttributes> _parser = new pb::MessageParser<EncounterAttributes>(() => new EncounterAttributes());
+    public static pb::MessageParser<EncounterAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[80]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public EncounterAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public EncounterAttributes(EncounterAttributes other) : this() {
+      baseCaptureRate_ = other.baseCaptureRate_;
+      baseFleeRate_ = other.baseFleeRate_;
+      collisionRadiusM_ = other.collisionRadiusM_;
+      collisionHeightM_ = other.collisionHeightM_;
+      collisionHeadRadiusM_ = other.collisionHeadRadiusM_;
+      movementType_ = other.movementType_;
+      movementTimerS_ = other.movementTimerS_;
+      jumpTimeS_ = other.jumpTimeS_;
+      attackTimerS_ = other.attackTimerS_;
+    }
+
+    public EncounterAttributes Clone() {
+      return new EncounterAttributes(this);
+    }
+
+    /// <summary>Field number for the "base_capture_rate" field.</summary>
+    public const int BaseCaptureRateFieldNumber = 1;
+    private float baseCaptureRate_;
+    public float BaseCaptureRate {
+      get { return baseCaptureRate_; }
+      set {
+        baseCaptureRate_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "base_flee_rate" field.</summary>
+    public const int BaseFleeRateFieldNumber = 2;
+    private float baseFleeRate_;
+    public float BaseFleeRate {
+      get { return baseFleeRate_; }
+      set {
+        baseFleeRate_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "collision_radius_m" field.</summary>
+    public const int CollisionRadiusMFieldNumber = 3;
+    private float collisionRadiusM_;
+    public float CollisionRadiusM {
+      get { return collisionRadiusM_; }
+      set {
+        collisionRadiusM_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "collision_height_m" field.</summary>
+    public const int CollisionHeightMFieldNumber = 4;
+    private float collisionHeightM_;
+    public float CollisionHeightM {
+      get { return collisionHeightM_; }
+      set {
+        collisionHeightM_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "collision_head_radius_m" field.</summary>
+    public const int CollisionHeadRadiusMFieldNumber = 5;
+    private float collisionHeadRadiusM_;
+    public float CollisionHeadRadiusM {
+      get { return collisionHeadRadiusM_; }
+      set {
+        collisionHeadRadiusM_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "movement_type" field.</summary>
+    public const int MovementTypeFieldNumber = 6;
+    private global::AllEnum.PokemonMovementType movementType_ = 0;
+    public global::AllEnum.PokemonMovementType MovementType {
+      get { return movementType_; }
+      set {
+        movementType_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "movement_timer_s" field.</summary>
+    public const int MovementTimerSFieldNumber = 7;
+    private float movementTimerS_;
+    public float MovementTimerS {
+      get { return movementTimerS_; }
+      set {
+        movementTimerS_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "jump_time_s" field.</summary>
+    public const int JumpTimeSFieldNumber = 8;
+    private float jumpTimeS_;
+    public float JumpTimeS {
+      get { return jumpTimeS_; }
+      set {
+        jumpTimeS_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "attack_timer_s" field.</summary>
+    public const int AttackTimerSFieldNumber = 9;
+    private float attackTimerS_;
+    public float AttackTimerS {
+      get { return attackTimerS_; }
+      set {
+        attackTimerS_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as EncounterAttributes);
+    }
+
+    public bool Equals(EncounterAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (BaseCaptureRate != other.BaseCaptureRate) return false;
+      if (BaseFleeRate != other.BaseFleeRate) return false;
+      if (CollisionRadiusM != other.CollisionRadiusM) return false;
+      if (CollisionHeightM != other.CollisionHeightM) return false;
+      if (CollisionHeadRadiusM != other.CollisionHeadRadiusM) return false;
+      if (MovementType != other.MovementType) return false;
+      if (MovementTimerS != other.MovementTimerS) return false;
+      if (JumpTimeS != other.JumpTimeS) return false;
+      if (AttackTimerS != other.AttackTimerS) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (BaseCaptureRate != 0F) hash ^= BaseCaptureRate.GetHashCode();
+      if (BaseFleeRate != 0F) hash ^= BaseFleeRate.GetHashCode();
+      if (CollisionRadiusM != 0F) hash ^= CollisionRadiusM.GetHashCode();
+      if (CollisionHeightM != 0F) hash ^= CollisionHeightM.GetHashCode();
+      if (CollisionHeadRadiusM != 0F) hash ^= CollisionHeadRadiusM.GetHashCode();
+      if (MovementType != 0) hash ^= MovementType.GetHashCode();
+      if (MovementTimerS != 0F) hash ^= MovementTimerS.GetHashCode();
+      if (JumpTimeS != 0F) hash ^= JumpTimeS.GetHashCode();
+      if (AttackTimerS != 0F) hash ^= AttackTimerS.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (BaseCaptureRate != 0F) {
+        output.WriteRawTag(13);
+        output.WriteFloat(BaseCaptureRate);
+      }
+      if (BaseFleeRate != 0F) {
+        output.WriteRawTag(21);
+        output.WriteFloat(BaseFleeRate);
+      }
+      if (CollisionRadiusM != 0F) {
+        output.WriteRawTag(29);
+        output.WriteFloat(CollisionRadiusM);
+      }
+      if (CollisionHeightM != 0F) {
+        output.WriteRawTag(37);
+        output.WriteFloat(CollisionHeightM);
+      }
+      if (CollisionHeadRadiusM != 0F) {
+        output.WriteRawTag(45);
+        output.WriteFloat(CollisionHeadRadiusM);
+      }
+      if (MovementType != 0) {
+        output.WriteRawTag(48);
+        output.WriteEnum((int) MovementType);
+      }
+      if (MovementTimerS != 0F) {
+        output.WriteRawTag(61);
+        output.WriteFloat(MovementTimerS);
+      }
+      if (JumpTimeS != 0F) {
+        output.WriteRawTag(69);
+        output.WriteFloat(JumpTimeS);
+      }
+      if (AttackTimerS != 0F) {
+        output.WriteRawTag(77);
+        output.WriteFloat(AttackTimerS);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (BaseCaptureRate != 0F) {
+        size += 1 + 4;
+      }
+      if (BaseFleeRate != 0F) {
+        size += 1 + 4;
+      }
+      if (CollisionRadiusM != 0F) {
+        size += 1 + 4;
+      }
+      if (CollisionHeightM != 0F) {
+        size += 1 + 4;
+      }
+      if (CollisionHeadRadiusM != 0F) {
+        size += 1 + 4;
+      }
+      if (MovementType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MovementType);
+      }
+      if (MovementTimerS != 0F) {
+        size += 1 + 4;
+      }
+      if (JumpTimeS != 0F) {
+        size += 1 + 4;
+      }
+      if (AttackTimerS != 0F) {
+        size += 1 + 4;
+      }
+      return size;
+    }
+
+    public void MergeFrom(EncounterAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.BaseCaptureRate != 0F) {
+        BaseCaptureRate = other.BaseCaptureRate;
+      }
+      if (other.BaseFleeRate != 0F) {
+        BaseFleeRate = other.BaseFleeRate;
+      }
+      if (other.CollisionRadiusM != 0F) {
+        CollisionRadiusM = other.CollisionRadiusM;
+      }
+      if (other.CollisionHeightM != 0F) {
+        CollisionHeightM = other.CollisionHeightM;
+      }
+      if (other.CollisionHeadRadiusM != 0F) {
+        CollisionHeadRadiusM = other.CollisionHeadRadiusM;
+      }
+      if (other.MovementType != 0) {
+        MovementType = other.MovementType;
+      }
+      if (other.MovementTimerS != 0F) {
+        MovementTimerS = other.MovementTimerS;
+      }
+      if (other.JumpTimeS != 0F) {
+        JumpTimeS = other.JumpTimeS;
+      }
+      if (other.AttackTimerS != 0F) {
+        AttackTimerS = other.AttackTimerS;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 13: {
+            BaseCaptureRate = input.ReadFloat();
+            break;
+          }
+          case 21: {
+            BaseFleeRate = input.ReadFloat();
+            break;
+          }
+          case 29: {
+            CollisionRadiusM = input.ReadFloat();
+            break;
+          }
+          case 37: {
+            CollisionHeightM = input.ReadFloat();
+            break;
+          }
+          case 45: {
+            CollisionHeadRadiusM = input.ReadFloat();
+            break;
+          }
+          case 48: {
+            movementType_ = (global::AllEnum.PokemonMovementType) input.ReadEnum();
+            break;
+          }
+          case 61: {
+            MovementTimerS = input.ReadFloat();
+            break;
+          }
+          case 69: {
+            JumpTimeS = input.ReadFloat();
+            break;
+          }
+          case 77: {
+            AttackTimerS = input.ReadFloat();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class StatsAttributes : pb::IMessage<StatsAttributes> {
+    private static readonly pb::MessageParser<StatsAttributes> _parser = new pb::MessageParser<StatsAttributes>(() => new StatsAttributes());
+    public static pb::MessageParser<StatsAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[81]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public StatsAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public StatsAttributes(StatsAttributes other) : this() {
+      baseStamina_ = other.baseStamina_;
+      baseAttack_ = other.baseAttack_;
+      baseDefense_ = other.baseDefense_;
+      dodgeEnergyDelta_ = other.dodgeEnergyDelta_;
+    }
+
+    public StatsAttributes Clone() {
+      return new StatsAttributes(this);
+    }
+
+    /// <summary>Field number for the "base_stamina" field.</summary>
+    public const int BaseStaminaFieldNumber = 1;
+    private int baseStamina_;
+    public int BaseStamina {
+      get { return baseStamina_; }
+      set {
+        baseStamina_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "base_attack" field.</summary>
+    public const int BaseAttackFieldNumber = 2;
+    private int baseAttack_;
+    public int BaseAttack {
+      get { return baseAttack_; }
+      set {
+        baseAttack_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "base_defense" field.</summary>
+    public const int BaseDefenseFieldNumber = 3;
+    private int baseDefense_;
+    public int BaseDefense {
+      get { return baseDefense_; }
+      set {
+        baseDefense_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "dodge_energy_delta" field.</summary>
+    public const int DodgeEnergyDeltaFieldNumber = 8;
+    private int dodgeEnergyDelta_;
+    public int DodgeEnergyDelta {
+      get { return dodgeEnergyDelta_; }
+      set {
+        dodgeEnergyDelta_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as StatsAttributes);
+    }
+
+    public bool Equals(StatsAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (BaseStamina != other.BaseStamina) return false;
+      if (BaseAttack != other.BaseAttack) return false;
+      if (BaseDefense != other.BaseDefense) return false;
+      if (DodgeEnergyDelta != other.DodgeEnergyDelta) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (BaseStamina != 0) hash ^= BaseStamina.GetHashCode();
+      if (BaseAttack != 0) hash ^= BaseAttack.GetHashCode();
+      if (BaseDefense != 0) hash ^= BaseDefense.GetHashCode();
+      if (DodgeEnergyDelta != 0) hash ^= DodgeEnergyDelta.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (BaseStamina != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(BaseStamina);
+      }
+      if (BaseAttack != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(BaseAttack);
+      }
+      if (BaseDefense != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(BaseDefense);
+      }
+      if (DodgeEnergyDelta != 0) {
+        output.WriteRawTag(64);
+        output.WriteInt32(DodgeEnergyDelta);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (BaseStamina != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseStamina);
+      }
+      if (BaseAttack != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseAttack);
+      }
+      if (BaseDefense != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseDefense);
+      }
+      if (DodgeEnergyDelta != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DodgeEnergyDelta);
+      }
+      return size;
+    }
+
+    public void MergeFrom(StatsAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.BaseStamina != 0) {
+        BaseStamina = other.BaseStamina;
+      }
+      if (other.BaseAttack != 0) {
+        BaseAttack = other.BaseAttack;
+      }
+      if (other.BaseDefense != 0) {
+        BaseDefense = other.BaseDefense;
+      }
+      if (other.DodgeEnergyDelta != 0) {
+        DodgeEnergyDelta = other.DodgeEnergyDelta;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            BaseStamina = input.ReadInt32();
+            break;
+          }
+          case 16: {
+            BaseAttack = input.ReadInt32();
+            break;
+          }
+          case 24: {
+            BaseDefense = input.ReadInt32();
+            break;
+          }
+          case 64: {
+            DodgeEnergyDelta = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class ItemSettings : pb::IMessage<ItemSettings> {
+    private static readonly pb::MessageParser<ItemSettings> _parser = new pb::MessageParser<ItemSettings>(() => new ItemSettings());
+    public static pb::MessageParser<ItemSettings> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[82]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public ItemSettings() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public ItemSettings(ItemSettings other) : this() {
+      itemId_ = other.itemId_;
+      itemType_ = other.itemType_;
+      category_ = other.category_;
+      dropFreq_ = other.dropFreq_;
+      dropTrainerLevel_ = other.dropTrainerLevel_;
+      Pokeball = other.pokeball_ != null ? other.Pokeball.Clone() : null;
+      Potion = other.potion_ != null ? other.Potion.Clone() : null;
+      Revive = other.revive_ != null ? other.Revive.Clone() : null;
+      Battle = other.battle_ != null ? other.Battle.Clone() : null;
+      Food = other.food_ != null ? other.Food.Clone() : null;
+      InventoryUpgrade = other.inventoryUpgrade_ != null ? other.InventoryUpgrade.Clone() : null;
+      XpBoost = other.xpBoost_ != null ? other.XpBoost.Clone() : null;
+      Incense = other.incense_ != null ? other.Incense.Clone() : null;
+      EggIncubator = other.eggIncubator_ != null ? other.EggIncubator.Clone() : null;
+      FortModifier = other.fortModifier_ != null ? other.FortModifier.Clone() : null;
+    }
+
+    public ItemSettings Clone() {
+      return new ItemSettings(this);
+    }
+
+    /// <summary>Field number for the "item_id" field.</summary>
+    public const int ItemIdFieldNumber = 1;
+    private global::AllEnum.ItemId itemId_ = 0;
+    public global::AllEnum.ItemId ItemId {
+      get { return itemId_; }
+      set {
+        itemId_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "item_type" field.</summary>
+    public const int ItemTypeFieldNumber = 2;
+    private global::AllEnum.ItemType itemType_ = 0;
+    public global::AllEnum.ItemType ItemType {
+      get { return itemType_; }
+      set {
+        itemType_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "category" field.</summary>
+    public const int CategoryFieldNumber = 3;
+    private global::AllEnum.ItemCategory category_ = 0;
+    public global::AllEnum.ItemCategory Category {
+      get { return category_; }
+      set {
+        category_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "drop_freq" field.</summary>
+    public const int DropFreqFieldNumber = 4;
+    private float dropFreq_;
+    public float DropFreq {
+      get { return dropFreq_; }
+      set {
+        dropFreq_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "drop_trainer_level" field.</summary>
+    public const int DropTrainerLevelFieldNumber = 5;
+    private int dropTrainerLevel_;
+    public int DropTrainerLevel {
+      get { return dropTrainerLevel_; }
+      set {
+        dropTrainerLevel_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokeball" field.</summary>
+    public const int PokeballFieldNumber = 6;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes pokeball_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes Pokeball {
+      get { return pokeball_; }
+      set {
+        pokeball_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "potion" field.</summary>
+    public const int PotionFieldNumber = 7;
+    private global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes potion_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes Potion {
+      get { return potion_; }
+      set {
+        potion_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "revive" field.</summary>
+    public const int ReviveFieldNumber = 8;
+    private global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes revive_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes Revive {
+      get { return revive_; }
+      set {
+        revive_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "battle" field.</summary>
+    public const int BattleFieldNumber = 9;
+    private global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes battle_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes Battle {
+      get { return battle_; }
+      set {
+        battle_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "food" field.</summary>
+    public const int FoodFieldNumber = 10;
+    private global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes food_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes Food {
+      get { return food_; }
+      set {
+        food_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "inventory_upgrade" field.</summary>
+    public const int InventoryUpgradeFieldNumber = 11;
+    private global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes inventoryUpgrade_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes InventoryUpgrade {
+      get { return inventoryUpgrade_; }
+      set {
+        inventoryUpgrade_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "xp_boost" field.</summary>
+    public const int XpBoostFieldNumber = 12;
+    private global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes xpBoost_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes XpBoost {
+      get { return xpBoost_; }
+      set {
+        xpBoost_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "incense" field.</summary>
+    public const int IncenseFieldNumber = 13;
+    private global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes incense_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes Incense {
+      get { return incense_; }
+      set {
+        incense_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "egg_incubator" field.</summary>
+    public const int EggIncubatorFieldNumber = 14;
+    private global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes eggIncubator_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes EggIncubator {
+      get { return eggIncubator_; }
+      set {
+        eggIncubator_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "fort_modifier" field.</summary>
+    public const int FortModifierFieldNumber = 15;
+    private global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes fortModifier_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes FortModifier {
+      get { return fortModifier_; }
+      set {
+        fortModifier_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as ItemSettings);
+    }
+
+    public bool Equals(ItemSettings other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (ItemId != other.ItemId) return false;
+      if (ItemType != other.ItemType) return false;
+      if (Category != other.Category) return false;
+      if (DropFreq != other.DropFreq) return false;
+      if (DropTrainerLevel != other.DropTrainerLevel) return false;
+      if (!object.Equals(Pokeball, other.Pokeball)) return false;
+      if (!object.Equals(Potion, other.Potion)) return false;
+      if (!object.Equals(Revive, other.Revive)) return false;
+      if (!object.Equals(Battle, other.Battle)) return false;
+      if (!object.Equals(Food, other.Food)) return false;
+      if (!object.Equals(InventoryUpgrade, other.InventoryUpgrade)) return false;
+      if (!object.Equals(XpBoost, other.XpBoost)) return false;
+      if (!object.Equals(Incense, other.Incense)) return false;
+      if (!object.Equals(EggIncubator, other.EggIncubator)) return false;
+      if (!object.Equals(FortModifier, other.FortModifier)) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (ItemId != 0) hash ^= ItemId.GetHashCode();
+      if (ItemType != 0) hash ^= ItemType.GetHashCode();
+      if (Category != 0) hash ^= Category.GetHashCode();
+      if (DropFreq != 0F) hash ^= DropFreq.GetHashCode();
+      if (DropTrainerLevel != 0) hash ^= DropTrainerLevel.GetHashCode();
+      if (pokeball_ != null) hash ^= Pokeball.GetHashCode();
+      if (potion_ != null) hash ^= Potion.GetHashCode();
+      if (revive_ != null) hash ^= Revive.GetHashCode();
+      if (battle_ != null) hash ^= Battle.GetHashCode();
+      if (food_ != null) hash ^= Food.GetHashCode();
+      if (inventoryUpgrade_ != null) hash ^= InventoryUpgrade.GetHashCode();
+      if (xpBoost_ != null) hash ^= XpBoost.GetHashCode();
+      if (incense_ != null) hash ^= Incense.GetHashCode();
+      if (eggIncubator_ != null) hash ^= EggIncubator.GetHashCode();
+      if (fortModifier_ != null) hash ^= FortModifier.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (ItemId != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) ItemId);
+      }
+      if (ItemType != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) ItemType);
+      }
+      if (Category != 0) {
+        output.WriteRawTag(24);
+        output.WriteEnum((int) Category);
+      }
+      if (DropFreq != 0F) {
+        output.WriteRawTag(37);
+        output.WriteFloat(DropFreq);
+      }
+      if (DropTrainerLevel != 0) {
+        output.WriteRawTag(40);
+        output.WriteInt32(DropTrainerLevel);
+      }
+      if (pokeball_ != null) {
+        output.WriteRawTag(50);
+        output.WriteMessage(Pokeball);
+      }
+      if (potion_ != null) {
+        output.WriteRawTag(58);
+        output.WriteMessage(Potion);
+      }
+      if (revive_ != null) {
+        output.WriteRawTag(66);
+        output.WriteMessage(Revive);
+      }
+      if (battle_ != null) {
+        output.WriteRawTag(74);
+        output.WriteMessage(Battle);
+      }
+      if (food_ != null) {
+        output.WriteRawTag(82);
+        output.WriteMessage(Food);
+      }
+      if (inventoryUpgrade_ != null) {
+        output.WriteRawTag(90);
+        output.WriteMessage(InventoryUpgrade);
+      }
+      if (xpBoost_ != null) {
+        output.WriteRawTag(98);
+        output.WriteMessage(XpBoost);
+      }
+      if (incense_ != null) {
+        output.WriteRawTag(106);
+        output.WriteMessage(Incense);
+      }
+      if (eggIncubator_ != null) {
+        output.WriteRawTag(114);
+        output.WriteMessage(EggIncubator);
+      }
+      if (fortModifier_ != null) {
+        output.WriteRawTag(122);
+        output.WriteMessage(FortModifier);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (ItemId != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ItemId);
+      }
+      if (ItemType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ItemType);
+      }
+      if (Category != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Category);
+      }
+      if (DropFreq != 0F) {
+        size += 1 + 4;
+      }
+      if (DropTrainerLevel != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DropTrainerLevel);
+      }
+      if (pokeball_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Pokeball);
+      }
+      if (potion_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Potion);
+      }
+      if (revive_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Revive);
+      }
+      if (battle_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Battle);
+      }
+      if (food_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Food);
+      }
+      if (inventoryUpgrade_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventoryUpgrade);
+      }
+      if (xpBoost_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(XpBoost);
+      }
+      if (incense_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Incense);
+      }
+      if (eggIncubator_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EggIncubator);
+      }
+      if (fortModifier_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FortModifier);
+      }
+      return size;
+    }
+
+    public void MergeFrom(ItemSettings other) {
+      if (other == null) {
+        return;
+      }
+      if (other.ItemId != 0) {
+        ItemId = other.ItemId;
+      }
+      if (other.ItemType != 0) {
+        ItemType = other.ItemType;
+      }
+      if (other.Category != 0) {
+        Category = other.Category;
+      }
+      if (other.DropFreq != 0F) {
+        DropFreq = other.DropFreq;
+      }
+      if (other.DropTrainerLevel != 0) {
+        DropTrainerLevel = other.DropTrainerLevel;
+      }
+      if (other.pokeball_ != null) {
+        if (pokeball_ == null) {
+          pokeball_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes();
+        }
+        Pokeball.MergeFrom(other.Pokeball);
+      }
+      if (other.potion_ != null) {
+        if (potion_ == null) {
+          potion_ = new global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes();
+        }
+        Potion.MergeFrom(other.Potion);
+      }
+      if (other.revive_ != null) {
+        if (revive_ == null) {
+          revive_ = new global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes();
+        }
+        Revive.MergeFrom(other.Revive);
+      }
+      if (other.battle_ != null) {
+        if (battle_ == null) {
+          battle_ = new global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes();
+        }
+        Battle.MergeFrom(other.Battle);
+      }
+      if (other.food_ != null) {
+        if (food_ == null) {
+          food_ = new global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes();
+        }
+        Food.MergeFrom(other.Food);
+      }
+      if (other.inventoryUpgrade_ != null) {
+        if (inventoryUpgrade_ == null) {
+          inventoryUpgrade_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes();
+        }
+        InventoryUpgrade.MergeFrom(other.InventoryUpgrade);
+      }
+      if (other.xpBoost_ != null) {
+        if (xpBoost_ == null) {
+          xpBoost_ = new global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes();
+        }
+        XpBoost.MergeFrom(other.XpBoost);
+      }
+      if (other.incense_ != null) {
+        if (incense_ == null) {
+          incense_ = new global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes();
+        }
+        Incense.MergeFrom(other.Incense);
+      }
+      if (other.eggIncubator_ != null) {
+        if (eggIncubator_ == null) {
+          eggIncubator_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes();
+        }
+        EggIncubator.MergeFrom(other.EggIncubator);
+      }
+      if (other.fortModifier_ != null) {
+        if (fortModifier_ == null) {
+          fortModifier_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes();
+        }
+        FortModifier.MergeFrom(other.FortModifier);
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            itemId_ = (global::AllEnum.ItemId) input.ReadEnum();
+            break;
+          }
+          case 16: {
+            itemType_ = (global::AllEnum.ItemType) input.ReadEnum();
+            break;
+          }
+          case 24: {
+            category_ = (global::AllEnum.ItemCategory) input.ReadEnum();
+            break;
+          }
+          case 37: {
+            DropFreq = input.ReadFloat();
+            break;
+          }
+          case 40: {
+            DropTrainerLevel = input.ReadInt32();
+            break;
+          }
+          case 50: {
+            if (pokeball_ == null) {
+              pokeball_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes();
+            }
+            input.ReadMessage(pokeball_);
+            break;
+          }
+          case 58: {
+            if (potion_ == null) {
+              potion_ = new global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes();
+            }
+            input.ReadMessage(potion_);
+            break;
+          }
+          case 66: {
+            if (revive_ == null) {
+              revive_ = new global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes();
+            }
+            input.ReadMessage(revive_);
+            break;
+          }
+          case 74: {
+            if (battle_ == null) {
+              battle_ = new global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes();
+            }
+            input.ReadMessage(battle_);
+            break;
+          }
+          case 82: {
+            if (food_ == null) {
+              food_ = new global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes();
+            }
+            input.ReadMessage(food_);
+            break;
+          }
+          case 90: {
+            if (inventoryUpgrade_ == null) {
+              inventoryUpgrade_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes();
+            }
+            input.ReadMessage(inventoryUpgrade_);
+            break;
+          }
+          case 98: {
+            if (xpBoost_ == null) {
+              xpBoost_ = new global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes();
+            }
+            input.ReadMessage(xpBoost_);
+            break;
+          }
+          case 106: {
+            if (incense_ == null) {
+              incense_ = new global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes();
+            }
+            input.ReadMessage(incense_);
+            break;
+          }
+          case 114: {
+            if (eggIncubator_ == null) {
+              eggIncubator_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes();
+            }
+            input.ReadMessage(eggIncubator_);
+            break;
+          }
+          case 122: {
+            if (fortModifier_ == null) {
+              fortModifier_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes();
+            }
+            input.ReadMessage(fortModifier_);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class BattleAttributes : pb::IMessage<BattleAttributes> {
+    private static readonly pb::MessageParser<BattleAttributes> _parser = new pb::MessageParser<BattleAttributes>(() => new BattleAttributes());
+    public static pb::MessageParser<BattleAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[83]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public BattleAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public BattleAttributes(BattleAttributes other) : this() {
+      staPercent_ = other.staPercent_;
+    }
+
+    public BattleAttributes Clone() {
+      return new BattleAttributes(this);
+    }
+
+    /// <summary>Field number for the "sta_percent" field.</summary>
+    public const int StaPercentFieldNumber = 1;
+    private float staPercent_;
+    public float StaPercent {
+      get { return staPercent_; }
+      set {
+        staPercent_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as BattleAttributes);
+    }
+
+    public bool Equals(BattleAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (StaPercent != other.StaPercent) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (StaPercent != 0F) hash ^= StaPercent.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (StaPercent != 0F) {
+        output.WriteRawTag(13);
+        output.WriteFloat(StaPercent);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (StaPercent != 0F) {
+        size += 1 + 4;
+      }
+      return size;
+    }
+
+    public void MergeFrom(BattleAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.StaPercent != 0F) {
+        StaPercent = other.StaPercent;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 13: {
+            StaPercent = input.ReadFloat();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class EggIncubatorAttributes : pb::IMessage<EggIncubatorAttributes> {
+    private static readonly pb::MessageParser<EggIncubatorAttributes> _parser = new pb::MessageParser<EggIncubatorAttributes>(() => new EggIncubatorAttributes());
+    public static pb::MessageParser<EggIncubatorAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[84]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public EggIncubatorAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public EggIncubatorAttributes(EggIncubatorAttributes other) : this() {
+      incubatorType_ = other.incubatorType_;
+      uses_ = other.uses_;
+      distanceMultiplier_ = other.distanceMultiplier_;
+    }
+
+    public EggIncubatorAttributes Clone() {
+      return new EggIncubatorAttributes(this);
+    }
+
+    /// <summary>Field number for the "incubator_type" field.</summary>
+    public const int IncubatorTypeFieldNumber = 1;
+    private global::AllEnum.EggIncubatorType incubatorType_ = 0;
+    public global::AllEnum.EggIncubatorType IncubatorType {
+      get { return incubatorType_; }
+      set {
+        incubatorType_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "uses" field.</summary>
+    public const int UsesFieldNumber = 2;
+    private int uses_;
+    public int Uses {
+      get { return uses_; }
+      set {
+        uses_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "distance_multiplier" field.</summary>
+    public const int DistanceMultiplierFieldNumber = 3;
+    private float distanceMultiplier_;
+    public float DistanceMultiplier {
+      get { return distanceMultiplier_; }
+      set {
+        distanceMultiplier_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as EggIncubatorAttributes);
+    }
+
+    public bool Equals(EggIncubatorAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (IncubatorType != other.IncubatorType) return false;
+      if (Uses != other.Uses) return false;
+      if (DistanceMultiplier != other.DistanceMultiplier) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (IncubatorType != 0) hash ^= IncubatorType.GetHashCode();
+      if (Uses != 0) hash ^= Uses.GetHashCode();
+      if (DistanceMultiplier != 0F) hash ^= DistanceMultiplier.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (IncubatorType != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) IncubatorType);
+      }
+      if (Uses != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(Uses);
+      }
+      if (DistanceMultiplier != 0F) {
+        output.WriteRawTag(29);
+        output.WriteFloat(DistanceMultiplier);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (IncubatorType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) IncubatorType);
+      }
+      if (Uses != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Uses);
+      }
+      if (DistanceMultiplier != 0F) {
+        size += 1 + 4;
+      }
+      return size;
+    }
+
+    public void MergeFrom(EggIncubatorAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.IncubatorType != 0) {
+        IncubatorType = other.IncubatorType;
+      }
+      if (other.Uses != 0) {
+        Uses = other.Uses;
+      }
+      if (other.DistanceMultiplier != 0F) {
+        DistanceMultiplier = other.DistanceMultiplier;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            incubatorType_ = (global::AllEnum.EggIncubatorType) input.ReadEnum();
+            break;
+          }
+          case 16: {
+            Uses = input.ReadInt32();
+            break;
+          }
+          case 29: {
+            DistanceMultiplier = input.ReadFloat();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class ExperienceBoostAttributes : pb::IMessage<ExperienceBoostAttributes> {
+    private static readonly pb::MessageParser<ExperienceBoostAttributes> _parser = new pb::MessageParser<ExperienceBoostAttributes>(() => new ExperienceBoostAttributes());
+    public static pb::MessageParser<ExperienceBoostAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[85]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public ExperienceBoostAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public ExperienceBoostAttributes(ExperienceBoostAttributes other) : this() {
+      xpMultiplier_ = other.xpMultiplier_;
+      boostDurationMs_ = other.boostDurationMs_;
+    }
+
+    public ExperienceBoostAttributes Clone() {
+      return new ExperienceBoostAttributes(this);
+    }
+
+    /// <summary>Field number for the "xp_multiplier" field.</summary>
+    public const int XpMultiplierFieldNumber = 1;
+    private float xpMultiplier_;
+    public float XpMultiplier {
+      get { return xpMultiplier_; }
+      set {
+        xpMultiplier_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "boost_duration_ms" field.</summary>
+    public const int BoostDurationMsFieldNumber = 2;
+    private int boostDurationMs_;
+    public int BoostDurationMs {
+      get { return boostDurationMs_; }
+      set {
+        boostDurationMs_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as ExperienceBoostAttributes);
+    }
+
+    public bool Equals(ExperienceBoostAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (XpMultiplier != other.XpMultiplier) return false;
+      if (BoostDurationMs != other.BoostDurationMs) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (XpMultiplier != 0F) hash ^= XpMultiplier.GetHashCode();
+      if (BoostDurationMs != 0) hash ^= BoostDurationMs.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (XpMultiplier != 0F) {
+        output.WriteRawTag(13);
+        output.WriteFloat(XpMultiplier);
+      }
+      if (BoostDurationMs != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(BoostDurationMs);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (XpMultiplier != 0F) {
+        size += 1 + 4;
+      }
+      if (BoostDurationMs != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BoostDurationMs);
+      }
+      return size;
+    }
+
+    public void MergeFrom(ExperienceBoostAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.XpMultiplier != 0F) {
+        XpMultiplier = other.XpMultiplier;
+      }
+      if (other.BoostDurationMs != 0) {
+        BoostDurationMs = other.BoostDurationMs;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 13: {
+            XpMultiplier = input.ReadFloat();
+            break;
+          }
+          case 16: {
+            BoostDurationMs = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class FoodAttributes : pb::IMessage<FoodAttributes> {
+    private static readonly pb::MessageParser<FoodAttributes> _parser = new pb::MessageParser<FoodAttributes>(() => new FoodAttributes());
+    public static pb::MessageParser<FoodAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[86]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public FoodAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public FoodAttributes(FoodAttributes other) : this() {
+      itemEffect_ = other.itemEffect_.Clone();
+      itemEffectPercent_ = other.itemEffectPercent_.Clone();
+      growthPercent_ = other.growthPercent_;
+    }
+
+    public FoodAttributes Clone() {
+      return new FoodAttributes(this);
+    }
+
+    /// <summary>Field number for the "item_effect" field.</summary>
+    public const int ItemEffectFieldNumber = 1;
+    private static readonly pb::FieldCodec<global::AllEnum.ItemEffect> _repeated_itemEffect_codec
+        = pb::FieldCodec.ForEnum(10, x => (int) x, x => (global::AllEnum.ItemEffect) x);
+    private readonly pbc::RepeatedField<global::AllEnum.ItemEffect> itemEffect_ = new pbc::RepeatedField<global::AllEnum.ItemEffect>();
+    public pbc::RepeatedField<global::AllEnum.ItemEffect> ItemEffect {
+      get { return itemEffect_; }
+    }
+
+    /// <summary>Field number for the "item_effect_percent" field.</summary>
+    public const int ItemEffectPercentFieldNumber = 2;
+    private static readonly pb::FieldCodec<float> _repeated_itemEffectPercent_codec
+        = pb::FieldCodec.ForFloat(18);
+    private readonly pbc::RepeatedField<float> itemEffectPercent_ = new pbc::RepeatedField<float>();
+    public pbc::RepeatedField<float> ItemEffectPercent {
+      get { return itemEffectPercent_; }
+    }
+
+    /// <summary>Field number for the "growth_percent" field.</summary>
+    public const int GrowthPercentFieldNumber = 3;
+    private float growthPercent_;
+    public float GrowthPercent {
+      get { return growthPercent_; }
+      set {
+        growthPercent_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as FoodAttributes);
+    }
+
+    public bool Equals(FoodAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!itemEffect_.Equals(other.itemEffect_)) return false;
+      if(!itemEffectPercent_.Equals(other.itemEffectPercent_)) return false;
+      if (GrowthPercent != other.GrowthPercent) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= itemEffect_.GetHashCode();
+      hash ^= itemEffectPercent_.GetHashCode();
+      if (GrowthPercent != 0F) hash ^= GrowthPercent.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      itemEffect_.WriteTo(output, _repeated_itemEffect_codec);
+      itemEffectPercent_.WriteTo(output, _repeated_itemEffectPercent_codec);
+      if (GrowthPercent != 0F) {
+        output.WriteRawTag(29);
+        output.WriteFloat(GrowthPercent);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      size += itemEffect_.CalculateSize(_repeated_itemEffect_codec);
+      size += itemEffectPercent_.CalculateSize(_repeated_itemEffectPercent_codec);
+      if (GrowthPercent != 0F) {
+        size += 1 + 4;
+      }
+      return size;
+    }
+
+    public void MergeFrom(FoodAttributes other) {
+      if (other == null) {
+        return;
+      }
+      itemEffect_.Add(other.itemEffect_);
+      itemEffectPercent_.Add(other.itemEffectPercent_);
+      if (other.GrowthPercent != 0F) {
+        GrowthPercent = other.GrowthPercent;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10:
+          case 8: {
+            itemEffect_.AddEntriesFrom(input, _repeated_itemEffect_codec);
+            break;
+          }
+          case 18:
+          case 21: {
+            itemEffectPercent_.AddEntriesFrom(input, _repeated_itemEffectPercent_codec);
+            break;
+          }
+          case 29: {
+            GrowthPercent = input.ReadFloat();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class FortModifierAttributes : pb::IMessage<FortModifierAttributes> {
+    private static readonly pb::MessageParser<FortModifierAttributes> _parser = new pb::MessageParser<FortModifierAttributes>(() => new FortModifierAttributes());
+    public static pb::MessageParser<FortModifierAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[87]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public FortModifierAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public FortModifierAttributes(FortModifierAttributes other) : this() {
+      modifierLifetimeSeconds_ = other.modifierLifetimeSeconds_;
+      troyDiskNumPokemonSpawned_ = other.troyDiskNumPokemonSpawned_;
+    }
+
+    public FortModifierAttributes Clone() {
+      return new FortModifierAttributes(this);
+    }
+
+    /// <summary>Field number for the "modifier_lifetime_seconds" field.</summary>
+    public const int ModifierLifetimeSecondsFieldNumber = 1;
+    private int modifierLifetimeSeconds_;
+    public int ModifierLifetimeSeconds {
+      get { return modifierLifetimeSeconds_; }
+      set {
+        modifierLifetimeSeconds_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "troy_disk_num_pokemon_spawned" field.</summary>
+    public const int TroyDiskNumPokemonSpawnedFieldNumber = 2;
+    private int troyDiskNumPokemonSpawned_;
+    public int TroyDiskNumPokemonSpawned {
+      get { return troyDiskNumPokemonSpawned_; }
+      set {
+        troyDiskNumPokemonSpawned_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as FortModifierAttributes);
+    }
+
+    public bool Equals(FortModifierAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (ModifierLifetimeSeconds != other.ModifierLifetimeSeconds) return false;
+      if (TroyDiskNumPokemonSpawned != other.TroyDiskNumPokemonSpawned) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (ModifierLifetimeSeconds != 0) hash ^= ModifierLifetimeSeconds.GetHashCode();
+      if (TroyDiskNumPokemonSpawned != 0) hash ^= TroyDiskNumPokemonSpawned.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (ModifierLifetimeSeconds != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(ModifierLifetimeSeconds);
+      }
+      if (TroyDiskNumPokemonSpawned != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(TroyDiskNumPokemonSpawned);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (ModifierLifetimeSeconds != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ModifierLifetimeSeconds);
+      }
+      if (TroyDiskNumPokemonSpawned != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TroyDiskNumPokemonSpawned);
+      }
+      return size;
+    }
+
+    public void MergeFrom(FortModifierAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.ModifierLifetimeSeconds != 0) {
+        ModifierLifetimeSeconds = other.ModifierLifetimeSeconds;
+      }
+      if (other.TroyDiskNumPokemonSpawned != 0) {
+        TroyDiskNumPokemonSpawned = other.TroyDiskNumPokemonSpawned;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            ModifierLifetimeSeconds = input.ReadInt32();
+            break;
+          }
+          case 16: {
+            TroyDiskNumPokemonSpawned = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class IncenseAttributes : pb::IMessage<IncenseAttributes> {
+    private static readonly pb::MessageParser<IncenseAttributes> _parser = new pb::MessageParser<IncenseAttributes>(() => new IncenseAttributes());
+    public static pb::MessageParser<IncenseAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[88]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public IncenseAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public IncenseAttributes(IncenseAttributes other) : this() {
+      incenseLifetimeSeconds_ = other.incenseLifetimeSeconds_;
+      pokemonType_ = other.pokemonType_.Clone();
+      pokemonIncenseTypeProbability_ = other.pokemonIncenseTypeProbability_;
+      standingTimeBetweenEncountersSeconds_ = other.standingTimeBetweenEncountersSeconds_;
+      movingTimeBetweenEncounterSeconds_ = other.movingTimeBetweenEncounterSeconds_;
+      distanceRequiredForShorterIntervalMeters_ = other.distanceRequiredForShorterIntervalMeters_;
+      pokemonAttractedLengthSec_ = other.pokemonAttractedLengthSec_;
+    }
+
+    public IncenseAttributes Clone() {
+      return new IncenseAttributes(this);
+    }
+
+    /// <summary>Field number for the "incense_lifetime_seconds" field.</summary>
+    public const int IncenseLifetimeSecondsFieldNumber = 1;
+    private int incenseLifetimeSeconds_;
+    public int IncenseLifetimeSeconds {
+      get { return incenseLifetimeSeconds_; }
+      set {
+        incenseLifetimeSeconds_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_type" field.</summary>
+    public const int PokemonTypeFieldNumber = 2;
+    private static readonly pb::FieldCodec<global::AllEnum.PokemonType> _repeated_pokemonType_codec
+        = pb::FieldCodec.ForEnum(18, x => (int) x, x => (global::AllEnum.PokemonType) x);
+    private readonly pbc::RepeatedField<global::AllEnum.PokemonType> pokemonType_ = new pbc::RepeatedField<global::AllEnum.PokemonType>();
+    public pbc::RepeatedField<global::AllEnum.PokemonType> PokemonType {
+      get { return pokemonType_; }
+    }
+
+    /// <summary>Field number for the "pokemon_incense_type_probability" field.</summary>
+    public const int PokemonIncenseTypeProbabilityFieldNumber = 3;
+    private float pokemonIncenseTypeProbability_;
+    public float PokemonIncenseTypeProbability {
+      get { return pokemonIncenseTypeProbability_; }
+      set {
+        pokemonIncenseTypeProbability_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "standing_time_between_encounters_seconds" field.</summary>
+    public const int StandingTimeBetweenEncountersSecondsFieldNumber = 4;
+    private int standingTimeBetweenEncountersSeconds_;
+    public int StandingTimeBetweenEncountersSeconds {
+      get { return standingTimeBetweenEncountersSeconds_; }
+      set {
+        standingTimeBetweenEncountersSeconds_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "moving_time_between_encounter_seconds" field.</summary>
+    public const int MovingTimeBetweenEncounterSecondsFieldNumber = 5;
+    private int movingTimeBetweenEncounterSeconds_;
+    public int MovingTimeBetweenEncounterSeconds {
+      get { return movingTimeBetweenEncounterSeconds_; }
+      set {
+        movingTimeBetweenEncounterSeconds_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "distance_required_for_shorter_interval_meters" field.</summary>
+    public const int DistanceRequiredForShorterIntervalMetersFieldNumber = 6;
+    private int distanceRequiredForShorterIntervalMeters_;
+    public int DistanceRequiredForShorterIntervalMeters {
+      get { return distanceRequiredForShorterIntervalMeters_; }
+      set {
+        distanceRequiredForShorterIntervalMeters_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "pokemon_attracted_length_sec" field.</summary>
+    public const int PokemonAttractedLengthSecFieldNumber = 7;
+    private int pokemonAttractedLengthSec_;
+    public int PokemonAttractedLengthSec {
+      get { return pokemonAttractedLengthSec_; }
+      set {
+        pokemonAttractedLengthSec_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as IncenseAttributes);
+    }
+
+    public bool Equals(IncenseAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (IncenseLifetimeSeconds != other.IncenseLifetimeSeconds) return false;
+      if(!pokemonType_.Equals(other.pokemonType_)) return false;
+      if (PokemonIncenseTypeProbability != other.PokemonIncenseTypeProbability) return false;
+      if (StandingTimeBetweenEncountersSeconds != other.StandingTimeBetweenEncountersSeconds) return false;
+      if (MovingTimeBetweenEncounterSeconds != other.MovingTimeBetweenEncounterSeconds) return false;
+      if (DistanceRequiredForShorterIntervalMeters != other.DistanceRequiredForShorterIntervalMeters) return false;
+      if (PokemonAttractedLengthSec != other.PokemonAttractedLengthSec) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (IncenseLifetimeSeconds != 0) hash ^= IncenseLifetimeSeconds.GetHashCode();
+      hash ^= pokemonType_.GetHashCode();
+      if (PokemonIncenseTypeProbability != 0F) hash ^= PokemonIncenseTypeProbability.GetHashCode();
+      if (StandingTimeBetweenEncountersSeconds != 0) hash ^= StandingTimeBetweenEncountersSeconds.GetHashCode();
+      if (MovingTimeBetweenEncounterSeconds != 0) hash ^= MovingTimeBetweenEncounterSeconds.GetHashCode();
+      if (DistanceRequiredForShorterIntervalMeters != 0) hash ^= DistanceRequiredForShorterIntervalMeters.GetHashCode();
+      if (PokemonAttractedLengthSec != 0) hash ^= PokemonAttractedLengthSec.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (IncenseLifetimeSeconds != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(IncenseLifetimeSeconds);
+      }
+      pokemonType_.WriteTo(output, _repeated_pokemonType_codec);
+      if (PokemonIncenseTypeProbability != 0F) {
+        output.WriteRawTag(29);
+        output.WriteFloat(PokemonIncenseTypeProbability);
+      }
+      if (StandingTimeBetweenEncountersSeconds != 0) {
+        output.WriteRawTag(32);
+        output.WriteInt32(StandingTimeBetweenEncountersSeconds);
+      }
+      if (MovingTimeBetweenEncounterSeconds != 0) {
+        output.WriteRawTag(40);
+        output.WriteInt32(MovingTimeBetweenEncounterSeconds);
+      }
+      if (DistanceRequiredForShorterIntervalMeters != 0) {
+        output.WriteRawTag(48);
+        output.WriteInt32(DistanceRequiredForShorterIntervalMeters);
+      }
+      if (PokemonAttractedLengthSec != 0) {
+        output.WriteRawTag(56);
+        output.WriteInt32(PokemonAttractedLengthSec);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (IncenseLifetimeSeconds != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(IncenseLifetimeSeconds);
+      }
+      size += pokemonType_.CalculateSize(_repeated_pokemonType_codec);
+      if (PokemonIncenseTypeProbability != 0F) {
+        size += 1 + 4;
+      }
+      if (StandingTimeBetweenEncountersSeconds != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(StandingTimeBetweenEncountersSeconds);
+      }
+      if (MovingTimeBetweenEncounterSeconds != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MovingTimeBetweenEncounterSeconds);
+      }
+      if (DistanceRequiredForShorterIntervalMeters != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DistanceRequiredForShorterIntervalMeters);
+      }
+      if (PokemonAttractedLengthSec != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokemonAttractedLengthSec);
+      }
+      return size;
+    }
+
+    public void MergeFrom(IncenseAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.IncenseLifetimeSeconds != 0) {
+        IncenseLifetimeSeconds = other.IncenseLifetimeSeconds;
+      }
+      pokemonType_.Add(other.pokemonType_);
+      if (other.PokemonIncenseTypeProbability != 0F) {
+        PokemonIncenseTypeProbability = other.PokemonIncenseTypeProbability;
+      }
+      if (other.StandingTimeBetweenEncountersSeconds != 0) {
+        StandingTimeBetweenEncountersSeconds = other.StandingTimeBetweenEncountersSeconds;
+      }
+      if (other.MovingTimeBetweenEncounterSeconds != 0) {
+        MovingTimeBetweenEncounterSeconds = other.MovingTimeBetweenEncounterSeconds;
+      }
+      if (other.DistanceRequiredForShorterIntervalMeters != 0) {
+        DistanceRequiredForShorterIntervalMeters = other.DistanceRequiredForShorterIntervalMeters;
+      }
+      if (other.PokemonAttractedLengthSec != 0) {
+        PokemonAttractedLengthSec = other.PokemonAttractedLengthSec;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            IncenseLifetimeSeconds = input.ReadInt32();
+            break;
+          }
+          case 18:
+          case 16: {
+            pokemonType_.AddEntriesFrom(input, _repeated_pokemonType_codec);
+            break;
+          }
+          case 29: {
+            PokemonIncenseTypeProbability = input.ReadFloat();
+            break;
+          }
+          case 32: {
+            StandingTimeBetweenEncountersSeconds = input.ReadInt32();
+            break;
+          }
+          case 40: {
+            MovingTimeBetweenEncounterSeconds = input.ReadInt32();
+            break;
+          }
+          case 48: {
+            DistanceRequiredForShorterIntervalMeters = input.ReadInt32();
+            break;
+          }
+          case 56: {
+            PokemonAttractedLengthSec = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class InventoryUpgradeAttributes : pb::IMessage<InventoryUpgradeAttributes> {
+    private static readonly pb::MessageParser<InventoryUpgradeAttributes> _parser = new pb::MessageParser<InventoryUpgradeAttributes>(() => new InventoryUpgradeAttributes());
+    public static pb::MessageParser<InventoryUpgradeAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[89]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public InventoryUpgradeAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public InventoryUpgradeAttributes(InventoryUpgradeAttributes other) : this() {
+      additionalStorage_ = other.additionalStorage_;
+      upgradeType_ = other.upgradeType_;
+    }
+
+    public InventoryUpgradeAttributes Clone() {
+      return new InventoryUpgradeAttributes(this);
+    }
+
+    /// <summary>Field number for the "additional_storage" field.</summary>
+    public const int AdditionalStorageFieldNumber = 1;
+    private int additionalStorage_;
+    public int AdditionalStorage {
+      get { return additionalStorage_; }
+      set {
+        additionalStorage_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "upgrade_type" field.</summary>
+    public const int UpgradeTypeFieldNumber = 2;
+    private global::AllEnum.InventoryUpgradeType upgradeType_ = 0;
+    public global::AllEnum.InventoryUpgradeType UpgradeType {
+      get { return upgradeType_; }
+      set {
+        upgradeType_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as InventoryUpgradeAttributes);
+    }
+
+    public bool Equals(InventoryUpgradeAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (AdditionalStorage != other.AdditionalStorage) return false;
+      if (UpgradeType != other.UpgradeType) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (AdditionalStorage != 0) hash ^= AdditionalStorage.GetHashCode();
+      if (UpgradeType != 0) hash ^= UpgradeType.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (AdditionalStorage != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(AdditionalStorage);
+      }
+      if (UpgradeType != 0) {
+        output.WriteRawTag(16);
+        output.WriteEnum((int) UpgradeType);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (AdditionalStorage != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(AdditionalStorage);
+      }
+      if (UpgradeType != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UpgradeType);
+      }
+      return size;
+    }
+
+    public void MergeFrom(InventoryUpgradeAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.AdditionalStorage != 0) {
+        AdditionalStorage = other.AdditionalStorage;
+      }
+      if (other.UpgradeType != 0) {
+        UpgradeType = other.UpgradeType;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            AdditionalStorage = input.ReadInt32();
+            break;
+          }
+          case 16: {
+            upgradeType_ = (global::AllEnum.InventoryUpgradeType) input.ReadEnum();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PokeballAttributes : pb::IMessage<PokeballAttributes> {
+    private static readonly pb::MessageParser<PokeballAttributes> _parser = new pb::MessageParser<PokeballAttributes>(() => new PokeballAttributes());
+    public static pb::MessageParser<PokeballAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[90]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PokeballAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PokeballAttributes(PokeballAttributes other) : this() {
+      itemEffect_ = other.itemEffect_;
+      captureMulti_ = other.captureMulti_;
+      captureMultiEffect_ = other.captureMultiEffect_;
+      itemEffectMod_ = other.itemEffectMod_;
+    }
+
+    public PokeballAttributes Clone() {
+      return new PokeballAttributes(this);
+    }
+
+    /// <summary>Field number for the "item_effect" field.</summary>
+    public const int ItemEffectFieldNumber = 1;
+    private global::AllEnum.ItemEffect itemEffect_ = 0;
+    public global::AllEnum.ItemEffect ItemEffect {
+      get { return itemEffect_; }
+      set {
+        itemEffect_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "capture_multi" field.</summary>
+    public const int CaptureMultiFieldNumber = 2;
+    private float captureMulti_;
+    public float CaptureMulti {
+      get { return captureMulti_; }
+      set {
+        captureMulti_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "capture_multi_effect" field.</summary>
+    public const int CaptureMultiEffectFieldNumber = 3;
+    private float captureMultiEffect_;
+    public float CaptureMultiEffect {
+      get { return captureMultiEffect_; }
+      set {
+        captureMultiEffect_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "item_effect_mod" field.</summary>
+    public const int ItemEffectModFieldNumber = 4;
+    private float itemEffectMod_;
+    public float ItemEffectMod {
+      get { return itemEffectMod_; }
+      set {
+        itemEffectMod_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PokeballAttributes);
+    }
+
+    public bool Equals(PokeballAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (ItemEffect != other.ItemEffect) return false;
+      if (CaptureMulti != other.CaptureMulti) return false;
+      if (CaptureMultiEffect != other.CaptureMultiEffect) return false;
+      if (ItemEffectMod != other.ItemEffectMod) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (ItemEffect != 0) hash ^= ItemEffect.GetHashCode();
+      if (CaptureMulti != 0F) hash ^= CaptureMulti.GetHashCode();
+      if (CaptureMultiEffect != 0F) hash ^= CaptureMultiEffect.GetHashCode();
+      if (ItemEffectMod != 0F) hash ^= ItemEffectMod.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (ItemEffect != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) ItemEffect);
+      }
+      if (CaptureMulti != 0F) {
+        output.WriteRawTag(21);
+        output.WriteFloat(CaptureMulti);
+      }
+      if (CaptureMultiEffect != 0F) {
+        output.WriteRawTag(29);
+        output.WriteFloat(CaptureMultiEffect);
+      }
+      if (ItemEffectMod != 0F) {
+        output.WriteRawTag(37);
+        output.WriteFloat(ItemEffectMod);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (ItemEffect != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ItemEffect);
+      }
+      if (CaptureMulti != 0F) {
+        size += 1 + 4;
+      }
+      if (CaptureMultiEffect != 0F) {
+        size += 1 + 4;
+      }
+      if (ItemEffectMod != 0F) {
+        size += 1 + 4;
+      }
+      return size;
+    }
+
+    public void MergeFrom(PokeballAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.ItemEffect != 0) {
+        ItemEffect = other.ItemEffect;
+      }
+      if (other.CaptureMulti != 0F) {
+        CaptureMulti = other.CaptureMulti;
+      }
+      if (other.CaptureMultiEffect != 0F) {
+        CaptureMultiEffect = other.CaptureMultiEffect;
+      }
+      if (other.ItemEffectMod != 0F) {
+        ItemEffectMod = other.ItemEffectMod;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            itemEffect_ = (global::AllEnum.ItemEffect) input.ReadEnum();
+            break;
+          }
+          case 21: {
+            CaptureMulti = input.ReadFloat();
+            break;
+          }
+          case 29: {
+            CaptureMultiEffect = input.ReadFloat();
+            break;
+          }
+          case 37: {
+            ItemEffectMod = input.ReadFloat();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class PotionAttributes : pb::IMessage<PotionAttributes> {
+    private static readonly pb::MessageParser<PotionAttributes> _parser = new pb::MessageParser<PotionAttributes>(() => new PotionAttributes());
+    public static pb::MessageParser<PotionAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[91]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public PotionAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public PotionAttributes(PotionAttributes other) : this() {
+      staPercent_ = other.staPercent_;
+      staAmount_ = other.staAmount_;
+    }
+
+    public PotionAttributes Clone() {
+      return new PotionAttributes(this);
+    }
+
+    /// <summary>Field number for the "sta_percent" field.</summary>
+    public const int StaPercentFieldNumber = 1;
+    private float staPercent_;
+    public float StaPercent {
+      get { return staPercent_; }
+      set {
+        staPercent_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "sta_amount" field.</summary>
+    public const int StaAmountFieldNumber = 2;
+    private int staAmount_;
+    public int StaAmount {
+      get { return staAmount_; }
+      set {
+        staAmount_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as PotionAttributes);
+    }
+
+    public bool Equals(PotionAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (StaPercent != other.StaPercent) return false;
+      if (StaAmount != other.StaAmount) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (StaPercent != 0F) hash ^= StaPercent.GetHashCode();
+      if (StaAmount != 0) hash ^= StaAmount.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (StaPercent != 0F) {
+        output.WriteRawTag(13);
+        output.WriteFloat(StaPercent);
+      }
+      if (StaAmount != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(StaAmount);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (StaPercent != 0F) {
+        size += 1 + 4;
+      }
+      if (StaAmount != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(StaAmount);
+      }
+      return size;
+    }
+
+    public void MergeFrom(PotionAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.StaPercent != 0F) {
+        StaPercent = other.StaPercent;
+      }
+      if (other.StaAmount != 0) {
+        StaAmount = other.StaAmount;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 13: {
+            StaPercent = input.ReadFloat();
+            break;
+          }
+          case 16: {
+            StaAmount = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class ReviveAttributes : pb::IMessage<ReviveAttributes> {
+    private static readonly pb::MessageParser<ReviveAttributes> _parser = new pb::MessageParser<ReviveAttributes>(() => new ReviveAttributes());
+    public static pb::MessageParser<ReviveAttributes> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[92]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public ReviveAttributes() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public ReviveAttributes(ReviveAttributes other) : this() {
+      staPercent_ = other.staPercent_;
+    }
+
+    public ReviveAttributes Clone() {
+      return new ReviveAttributes(this);
+    }
+
+    /// <summary>Field number for the "sta_percent" field.</summary>
+    public const int StaPercentFieldNumber = 1;
+    private float staPercent_;
+    public float StaPercent {
+      get { return staPercent_; }
+      set {
+        staPercent_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as ReviveAttributes);
+    }
+
+    public bool Equals(ReviveAttributes other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (StaPercent != other.StaPercent) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (StaPercent != 0F) hash ^= StaPercent.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (StaPercent != 0F) {
+        output.WriteRawTag(13);
+        output.WriteFloat(StaPercent);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (StaPercent != 0F) {
+        size += 1 + 4;
+      }
+      return size;
+    }
+
+    public void MergeFrom(ReviveAttributes other) {
+      if (other == null) {
+        return;
+      }
+      if (other.StaPercent != 0F) {
+        StaPercent = other.StaPercent;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 13: {
+            StaPercent = input.ReadFloat();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  /// <summary>
+  ///  POKEMON TRANSFER
+  /// </summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class TransferPokemon : pb::IMessage<TransferPokemon> {
+    private static readonly pb::MessageParser<TransferPokemon> _parser = new pb::MessageParser<TransferPokemon>(() => new TransferPokemon());
+    public static pb::MessageParser<TransferPokemon> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[93]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public TransferPokemon() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public TransferPokemon(TransferPokemon other) : this() {
+      pokemonId_ = other.pokemonId_;
+    }
+
+    public TransferPokemon Clone() {
+      return new TransferPokemon(this);
+    }
+
+    /// <summary>Field number for the "PokemonId" field.</summary>
+    public const int PokemonIdFieldNumber = 1;
+    private ulong pokemonId_;
+    public ulong PokemonId {
+      get { return pokemonId_; }
+      set {
+        pokemonId_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as TransferPokemon);
+    }
+
+    public bool Equals(TransferPokemon other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (PokemonId != other.PokemonId) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (PokemonId != 0UL) hash ^= PokemonId.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (PokemonId != 0UL) {
+        output.WriteRawTag(9);
+        output.WriteFixed64(PokemonId);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (PokemonId != 0UL) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(TransferPokemon other) {
+      if (other == null) {
+        return;
+      }
+      if (other.PokemonId != 0UL) {
+        PokemonId = other.PokemonId;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            PokemonId = input.ReadFixed64();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class TransferPokemonOut : pb::IMessage<TransferPokemonOut> {
+    private static readonly pb::MessageParser<TransferPokemonOut> _parser = new pb::MessageParser<TransferPokemonOut>(() => new TransferPokemonOut());
+    public static pb::MessageParser<TransferPokemonOut> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[94]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public TransferPokemonOut() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public TransferPokemonOut(TransferPokemonOut other) : this() {
+      status_ = other.status_;
+      candyAwarded_ = other.candyAwarded_;
+    }
+
+    public TransferPokemonOut Clone() {
+      return new TransferPokemonOut(this);
+    }
+
+    /// <summary>Field number for the "Status" field.</summary>
+    public const int StatusFieldNumber = 1;
+    private int status_;
+    public int Status {
+      get { return status_; }
+      set {
+        status_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "CandyAwarded" field.</summary>
+    public const int CandyAwardedFieldNumber = 2;
+    private int candyAwarded_;
+    public int CandyAwarded {
+      get { return candyAwarded_; }
+      set {
+        candyAwarded_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as TransferPokemonOut);
+    }
+
+    public bool Equals(TransferPokemonOut other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Status != other.Status) return false;
+      if (CandyAwarded != other.CandyAwarded) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Status != 0) hash ^= Status.GetHashCode();
+      if (CandyAwarded != 0) hash ^= CandyAwarded.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Status != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(Status);
+      }
+      if (CandyAwarded != 0) {
+        output.WriteRawTag(16);
+        output.WriteInt32(CandyAwarded);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Status != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Status);
+      }
+      if (CandyAwarded != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CandyAwarded);
+      }
+      return size;
+    }
+
+    public void MergeFrom(TransferPokemonOut other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Status != 0) {
+        Status = other.Status;
+      }
+      if (other.CandyAwarded != 0) {
+        CandyAwarded = other.CandyAwarded;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Status = input.ReadInt32();
+            break;
+          }
+          case 16: {
+            CandyAwarded = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  /// <summary>
+  ///  EVOLVE
+  /// </summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class EvolvePokemon : pb::IMessage<EvolvePokemon> {
+    private static readonly pb::MessageParser<EvolvePokemon> _parser = new pb::MessageParser<EvolvePokemon>(() => new EvolvePokemon());
+    public static pb::MessageParser<EvolvePokemon> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[95]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public EvolvePokemon() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public EvolvePokemon(EvolvePokemon other) : this() {
+      pokemonId_ = other.pokemonId_;
+    }
+
+    public EvolvePokemon Clone() {
+      return new EvolvePokemon(this);
+    }
+
+    /// <summary>Field number for the "PokemonId" field.</summary>
+    public const int PokemonIdFieldNumber = 1;
+    private ulong pokemonId_;
+    public ulong PokemonId {
+      get { return pokemonId_; }
+      set {
+        pokemonId_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as EvolvePokemon);
+    }
+
+    public bool Equals(EvolvePokemon other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (PokemonId != other.PokemonId) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (PokemonId != 0UL) hash ^= PokemonId.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (PokemonId != 0UL) {
+        output.WriteRawTag(9);
+        output.WriteFixed64(PokemonId);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (PokemonId != 0UL) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    public void MergeFrom(EvolvePokemon other) {
+      if (other == null) {
+        return;
+      }
+      if (other.PokemonId != 0UL) {
+        PokemonId = other.PokemonId;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            PokemonId = input.ReadFixed64();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class EvolvePokemonOut : pb::IMessage<EvolvePokemonOut> {
+    private static readonly pb::MessageParser<EvolvePokemonOut> _parser = new pb::MessageParser<EvolvePokemonOut>(() => new EvolvePokemonOut());
+    public static pb::MessageParser<EvolvePokemonOut> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[96]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public EvolvePokemonOut() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public EvolvePokemonOut(EvolvePokemonOut other) : this() {
+      result_ = other.result_;
+      EvolvedPokemon = other.evolvedPokemon_ != null ? other.EvolvedPokemon.Clone() : null;
+      expAwarded_ = other.expAwarded_;
+      candyAwarded_ = other.candyAwarded_;
+    }
+
+    public EvolvePokemonOut Clone() {
+      return new EvolvePokemonOut(this);
+    }
+
+    /// <summary>Field number for the "Result" field.</summary>
+    public const int ResultFieldNumber = 1;
+    private int result_;
+    public int Result {
+      get { return result_; }
+      set {
+        result_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "EvolvedPokemon" field.</summary>
+    public const int EvolvedPokemonFieldNumber = 2;
+    private global::PokemonGo.RocketAPI.GeneratedCode.Pokemon evolvedPokemon_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.Pokemon EvolvedPokemon {
+      get { return evolvedPokemon_; }
+      set {
+        evolvedPokemon_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "ExpAwarded" field.</summary>
+    public const int ExpAwardedFieldNumber = 3;
+    private int expAwarded_;
+    public int ExpAwarded {
+      get { return expAwarded_; }
+      set {
+        expAwarded_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "CandyAwarded" field.</summary>
+    public const int CandyAwardedFieldNumber = 4;
+    private int candyAwarded_;
+    public int CandyAwarded {
+      get { return candyAwarded_; }
+      set {
+        candyAwarded_ = value;
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as EvolvePokemonOut);
+    }
+
+    public bool Equals(EvolvePokemonOut other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Result != other.Result) return false;
+      if (!object.Equals(EvolvedPokemon, other.EvolvedPokemon)) return false;
+      if (ExpAwarded != other.ExpAwarded) return false;
+      if (CandyAwarded != other.CandyAwarded) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Result != 0) hash ^= Result.GetHashCode();
+      if (evolvedPokemon_ != null) hash ^= EvolvedPokemon.GetHashCode();
+      if (ExpAwarded != 0) hash ^= ExpAwarded.GetHashCode();
+      if (CandyAwarded != 0) hash ^= CandyAwarded.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Result != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(Result);
+      }
+      if (evolvedPokemon_ != null) {
+        output.WriteRawTag(18);
+        output.WriteMessage(EvolvedPokemon);
+      }
+      if (ExpAwarded != 0) {
+        output.WriteRawTag(24);
+        output.WriteInt32(ExpAwarded);
+      }
+      if (CandyAwarded != 0) {
+        output.WriteRawTag(32);
+        output.WriteInt32(CandyAwarded);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Result != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Result);
+      }
+      if (evolvedPokemon_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EvolvedPokemon);
+      }
+      if (ExpAwarded != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ExpAwarded);
+      }
+      if (CandyAwarded != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CandyAwarded);
+      }
+      return size;
+    }
+
+    public void MergeFrom(EvolvePokemonOut other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Result != 0) {
+        Result = other.Result;
+      }
+      if (other.evolvedPokemon_ != null) {
+        if (evolvedPokemon_ == null) {
+          evolvedPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.Pokemon();
+        }
+        EvolvedPokemon.MergeFrom(other.EvolvedPokemon);
+      }
+      if (other.ExpAwarded != 0) {
+        ExpAwarded = other.ExpAwarded;
+      }
+      if (other.CandyAwarded != 0) {
+        CandyAwarded = other.CandyAwarded;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Result = input.ReadInt32();
+            break;
+          }
+          case 18: {
+            if (evolvedPokemon_ == null) {
+              evolvedPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.Pokemon();
+            }
+            input.ReadMessage(evolvedPokemon_);
+            break;
+          }
+          case 24: {
+            ExpAwarded = input.ReadInt32();
+            break;
+          }
+          case 32: {
+            CandyAwarded = input.ReadInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/GeneratedCode/PlayerUpdateResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/PlayerUpdateResponse.cs
deleted file mode 100644
index 17a5d2c..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/PlayerUpdateResponse.cs
+++ /dev/null
@@ -1,201 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: PlayerUpdateResponse.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-namespace PokemonGo.RocketAPI.GeneratedCode {
-
-  /// <summary>Holder for reflection information generated from PlayerUpdateResponse.proto</summary>
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class PlayerUpdateResponseReflection {
-
-    #region Descriptor
-    /// <summary>File descriptor for PlayerUpdateResponse.proto</summary>
-    public static pbr::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbr::FileDescriptor descriptor;
-
-    static PlayerUpdateResponseReflection() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "ChpQbGF5ZXJVcGRhdGVSZXNwb25zZS5wcm90bxIhUG9rZW1vbkdvLlJvY2tl",
-            "dEFQSS5HZW5lcmF0ZWRDb2RlIk4KFFBsYXllclVwZGF0ZVJlc3BvbnNlEhMK",
-            "C1dpbGRQb2tlbW9uGAEgASgFEgwKBEZvcnQYAiABKAUSEwoLRm9ydHNOZWFy",
-            "YnkYAyABKAViBnByb3RvMw=="));
-      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-          new pbr::FileDescriptor[] { },
-          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerUpdateResponse), global::PokemonGo.RocketAPI.GeneratedCode.PlayerUpdateResponse.Parser, new[]{ "WildPokemon", "Fort", "FortsNearby" }, null, null, null)
-          }));
-    }
-    #endregion
-
-  }
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class PlayerUpdateResponse : pb::IMessage<PlayerUpdateResponse> {
-    private static readonly pb::MessageParser<PlayerUpdateResponse> _parser = new pb::MessageParser<PlayerUpdateResponse>(() => new PlayerUpdateResponse());
-    public static pb::MessageParser<PlayerUpdateResponse> Parser { get { return _parser; } }
-
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::PokemonGo.RocketAPI.GeneratedCode.PlayerUpdateResponseReflection.Descriptor.MessageTypes[0]; }
-    }
-
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    public PlayerUpdateResponse() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    public PlayerUpdateResponse(PlayerUpdateResponse other) : this() {
-      wildPokemon_ = other.wildPokemon_;
-      fort_ = other.fort_;
-      fortsNearby_ = other.fortsNearby_;
-    }
-
-    public PlayerUpdateResponse Clone() {
-      return new PlayerUpdateResponse(this);
-    }
-
-    /// <summary>Field number for the "WildPokemon" field.</summary>
-    public const int WildPokemonFieldNumber = 1;
-    private int wildPokemon_;
-    public int WildPokemon {
-      get { return wildPokemon_; }
-      set {
-        wildPokemon_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Fort" field.</summary>
-    public const int FortFieldNumber = 2;
-    private int fort_;
-    public int Fort {
-      get { return fort_; }
-      set {
-        fort_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "FortsNearby" field.</summary>
-    public const int FortsNearbyFieldNumber = 3;
-    private int fortsNearby_;
-    public int FortsNearby {
-      get { return fortsNearby_; }
-      set {
-        fortsNearby_ = value;
-      }
-    }
-
-    public override bool Equals(object other) {
-      return Equals(other as PlayerUpdateResponse);
-    }
-
-    public bool Equals(PlayerUpdateResponse other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (WildPokemon != other.WildPokemon) return false;
-      if (Fort != other.Fort) return false;
-      if (FortsNearby != other.FortsNearby) return false;
-      return true;
-    }
-
-    public override int GetHashCode() {
-      int hash = 1;
-      if (WildPokemon != 0) hash ^= WildPokemon.GetHashCode();
-      if (Fort != 0) hash ^= Fort.GetHashCode();
-      if (FortsNearby != 0) hash ^= FortsNearby.GetHashCode();
-      return hash;
-    }
-
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (WildPokemon != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(WildPokemon);
-      }
-      if (Fort != 0) {
-        output.WriteRawTag(16);
-        output.WriteInt32(Fort);
-      }
-      if (FortsNearby != 0) {
-        output.WriteRawTag(24);
-        output.WriteInt32(FortsNearby);
-      }
-    }
-
-    public int CalculateSize() {
-      int size = 0;
-      if (WildPokemon != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(WildPokemon);
-      }
-      if (Fort != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Fort);
-      }
-      if (FortsNearby != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FortsNearby);
-      }
-      return size;
-    }
-
-    public void MergeFrom(PlayerUpdateResponse other) {
-      if (other == null) {
-        return;
-      }
-      if (other.WildPokemon != 0) {
-        WildPokemon = other.WildPokemon;
-      }
-      if (other.Fort != 0) {
-        Fort = other.Fort;
-      }
-      if (other.FortsNearby != 0) {
-        FortsNearby = other.FortsNearby;
-      }
-    }
-
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            WildPokemon = input.ReadInt32();
-            break;
-          }
-          case 16: {
-            Fort = input.ReadInt32();
-            break;
-          }
-          case 24: {
-            FortsNearby = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/GeneratedCode/ProfileResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/ProfileResponse.cs
deleted file mode 100644
index f196b94..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/ProfileResponse.cs
+++ /dev/null
@@ -1,1756 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: ProfileResponse.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-namespace PokemonGo.RocketAPI.GeneratedCode {
-
-  /// <summary>Holder for reflection information generated from ProfileResponse.proto</summary>
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class ProfileResponseReflection {
-
-    #region Descriptor
-    /// <summary>File descriptor for ProfileResponse.proto</summary>
-    public static pbr::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbr::FileDescriptor descriptor;
-
-    static ProfileResponseReflection() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "ChVQcm9maWxlUmVzcG9uc2UucHJvdG8SIVBva2Vtb25Hby5Sb2NrZXRBUEku",
-            "R2VuZXJhdGVkQ29kZSLECgoPUHJvZmlsZVJlc3BvbnNlEhAKCHVua25vd24x",
-            "GAEgASgFEhAKCHVua25vd24yGAIgASgDEg8KB2FwaV91cmwYAyABKAkSTQoI",
-            "dW5rbm93bjYYBiABKAsyOy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
-            "ZENvZGUuUHJvZmlsZVJlc3BvbnNlLlVua25vd242EkUKBGF1dGgYByABKAsy",
-            "Ny5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuUHJvZmlsZVJl",
-            "c3BvbnNlLkF1dGgSSwoHcGF5bG9hZBhkIAMoCzI6LlBva2Vtb25Hby5Sb2Nr",
-            "ZXRBUEkuR2VuZXJhdGVkQ29kZS5Qcm9maWxlUmVzcG9uc2UuUGF5bG9hZBIU",
-            "CgxlcnJvck1lc3NhZ2UYZSABKAkakgEKCFVua25vd242EhAKCHVua25vd24x",
-            "GAEgASgFElYKCHVua25vd24yGAIgASgLMkQuUG9rZW1vbkdvLlJvY2tldEFQ",
-            "SS5HZW5lcmF0ZWRDb2RlLlByb2ZpbGVSZXNwb25zZS5Vbmtub3duNi5Vbmtu",
-            "b3duMhocCghVbmtub3duMhIQCgh1bmtub3duMRgBIAEoDBo/CgRBdXRoEhEK",
-            "CXVua25vd243MRgBIAEoDBIRCgl0aW1lc3RhbXAYAiABKAMSEQoJdW5rbm93",
-            "bjczGAMgASgMGqwGCgdQYXlsb2FkEhAKCHVua25vd24xGAEgASgFElMKB3By",
-            "b2ZpbGUYAiABKAsyQi5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENv",
-            "ZGUuUHJvZmlsZVJlc3BvbnNlLlBheWxvYWQuUHJvZmlsZRIPCgdzZXR0aW5n",
-            "GAMgASgMGqgFCgdQcm9maWxlEhUKDWNyZWF0aW9uX3RpbWUYASABKAMSEAoI",
-            "dXNlcm5hbWUYAiABKAkSDAoEdGVhbRgFIAEoBRIQCgh0dXRvcmlhbBgHIAEo",
-            "DBJgCgZhdmF0YXIYCCABKAsyUC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVy",
-            "YXRlZENvZGUuUHJvZmlsZVJlc3BvbnNlLlBheWxvYWQuUHJvZmlsZS5BdmF0",
-            "YXJEZXRhaWxzEhQKDHBva2Vfc3RvcmFnZRgJIAEoBRIUCgxpdGVtX3N0b3Jh",
-            "Z2UYCiABKAUSYgoLZGFpbHlfYm9udXMYCyABKAsyTS5Qb2tlbW9uR28uUm9j",
-            "a2V0QVBJLkdlbmVyYXRlZENvZGUuUHJvZmlsZVJlc3BvbnNlLlBheWxvYWQu",
-            "UHJvZmlsZS5EYWlseUJvbnVzEhEKCXVua25vd24xMhgMIAEoDBIRCgl1bmtu",
-            "b3duMTMYDSABKAwSXQoIY3VycmVuY3kYDiADKAsySy5Qb2tlbW9uR28uUm9j",
-            "a2V0QVBJLkdlbmVyYXRlZENvZGUuUHJvZmlsZVJlc3BvbnNlLlBheWxvYWQu",
-            "UHJvZmlsZS5DdXJyZW5jeRpYCg1BdmF0YXJEZXRhaWxzEhAKCHVua25vd24y",
-            "GAIgASgFEhAKCHVua25vd24zGAMgASgFEhAKCHVua25vd245GAkgASgFEhEK",
-            "CXVua25vd24xMBgKIAEoBRpZCgpEYWlseUJvbnVzEh4KFk5leHRDb2xsZWN0",
-            "VGltZXN0YW1wTXMYASABKAMSKwojTmV4dERlZmVuZGVyQm9udXNDb2xsZWN0",
-            "VGltZXN0YW1wTXMYAiABKAMaKAoIQ3VycmVuY3kSDAoEdHlwZRgBIAEoCRIO",
-            "CgZhbW91bnQYAiABKAViBnByb3RvMw=="));
-      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-          new pbr::FileDescriptor[] { },
-          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse), global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Auth", "Payload", "ErrorMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Auth), global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Auth.Parser, new[]{ "Unknown71", "Timestamp", "Unknown73" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload), global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Parser, new[]{ "Unknown1", "Profile", "Setting" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile), global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Parser, new[]{ "CreationTime", "Username", "Team", "Tutorial", "Avatar", "PokeStorage", "ItemStorage", "DailyBonus", "Unknown12", "Unknown13", "Currency" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.AvatarDetails), global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.AvatarDetails.Parser, new[]{ "Unknown2", "Unknown3", "Unknown9", "Unknown10" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.DailyBonus), global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.DailyBonus.Parser, new[]{ "NextCollectTimestampMs", "NextDefenderBonusCollectTimestampMs" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.Currency), global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.Currency.Parser, new[]{ "Type", "Amount" }, null, null, null)})})})
-          }));
-    }
-    #endregion
-
-  }
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class ProfileResponse : pb::IMessage<ProfileResponse> {
-    private static readonly pb::MessageParser<ProfileResponse> _parser = new pb::MessageParser<ProfileResponse>(() => new ProfileResponse());
-    public static pb::MessageParser<ProfileResponse> Parser { get { return _parser; } }
-
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponseReflection.Descriptor.MessageTypes[0]; }
-    }
-
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    public ProfileResponse() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    public ProfileResponse(ProfileResponse other) : this() {
-      unknown1_ = other.unknown1_;
-      unknown2_ = other.unknown2_;
-      apiUrl_ = other.apiUrl_;
-      Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
-      Auth = other.auth_ != null ? other.Auth.Clone() : null;
-      payload_ = other.payload_.Clone();
-      errorMessage_ = other.errorMessage_;
-    }
-
-    public ProfileResponse Clone() {
-      return new ProfileResponse(this);
-    }
-
-    /// <summary>Field number for the "unknown1" field.</summary>
-    public const int Unknown1FieldNumber = 1;
-    private int unknown1_;
-    public int Unknown1 {
-      get { return unknown1_; }
-      set {
-        unknown1_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown2" field.</summary>
-    public const int Unknown2FieldNumber = 2;
-    private long unknown2_;
-    public long Unknown2 {
-      get { return unknown2_; }
-      set {
-        unknown2_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "api_url" field.</summary>
-    public const int ApiUrlFieldNumber = 3;
-    private string apiUrl_ = "";
-    public string ApiUrl {
-      get { return apiUrl_; }
-      set {
-        apiUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "unknown6" field.</summary>
-    public const int Unknown6FieldNumber = 6;
-    private global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6 unknown6_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6 Unknown6 {
-      get { return unknown6_; }
-      set {
-        unknown6_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "auth" field.</summary>
-    public const int AuthFieldNumber = 7;
-    private global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Auth auth_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Auth Auth {
-      get { return auth_; }
-      set {
-        auth_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "payload" field.</summary>
-    public const int PayloadFieldNumber = 100;
-    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload> _repeated_payload_codec
-        = pb::FieldCodec.ForMessage(802, global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Parser);
-    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload> payload_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload>();
-    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload> Payload {
-      get { return payload_; }
-    }
-
-    /// <summary>Field number for the "errorMessage" field.</summary>
-    public const int ErrorMessageFieldNumber = 101;
-    private string errorMessage_ = "";
-    /// <summary>
-    /// Should be moved to an error-proto file if error is always 101 field
-    /// </summary>
-    public string ErrorMessage {
-      get { return errorMessage_; }
-      set {
-        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    public override bool Equals(object other) {
-      return Equals(other as ProfileResponse);
-    }
-
-    public bool Equals(ProfileResponse other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Unknown1 != other.Unknown1) return false;
-      if (Unknown2 != other.Unknown2) return false;
-      if (ApiUrl != other.ApiUrl) return false;
-      if (!object.Equals(Unknown6, other.Unknown6)) return false;
-      if (!object.Equals(Auth, other.Auth)) return false;
-      if(!payload_.Equals(other.payload_)) return false;
-      if (ErrorMessage != other.ErrorMessage) return false;
-      return true;
-    }
-
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-      if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
-      if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
-      if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
-      if (auth_ != null) hash ^= Auth.GetHashCode();
-      hash ^= payload_.GetHashCode();
-      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
-      return hash;
-    }
-
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Unknown1 != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        output.WriteRawTag(16);
-        output.WriteInt64(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        output.WriteRawTag(50);
-        output.WriteMessage(Unknown6);
-      }
-      if (auth_ != null) {
-        output.WriteRawTag(58);
-        output.WriteMessage(Auth);
-      }
-      payload_.WriteTo(output, _repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        output.WriteRawTag(170, 6);
-        output.WriteString(ErrorMessage);
-      }
-    }
-
-    public int CalculateSize() {
-      int size = 0;
-      if (Unknown1 != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
-      }
-      if (auth_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Auth);
-      }
-      size += payload_.CalculateSize(_repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        size += 2 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
-      }
-      return size;
-    }
-
-    public void MergeFrom(ProfileResponse other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Unknown1 != 0) {
-        Unknown1 = other.Unknown1;
-      }
-      if (other.Unknown2 != 0L) {
-        Unknown2 = other.Unknown2;
-      }
-      if (other.ApiUrl.Length != 0) {
-        ApiUrl = other.ApiUrl;
-      }
-      if (other.unknown6_ != null) {
-        if (unknown6_ == null) {
-          unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6();
-        }
-        Unknown6.MergeFrom(other.Unknown6);
-      }
-      if (other.auth_ != null) {
-        if (auth_ == null) {
-          auth_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Auth();
-        }
-        Auth.MergeFrom(other.Auth);
-      }
-      payload_.Add(other.payload_);
-      if (other.ErrorMessage.Length != 0) {
-        ErrorMessage = other.ErrorMessage;
-      }
-    }
-
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Unknown1 = input.ReadInt32();
-            break;
-          }
-          case 16: {
-            Unknown2 = input.ReadInt64();
-            break;
-          }
-          case 26: {
-            ApiUrl = input.ReadString();
-            break;
-          }
-          case 50: {
-            if (unknown6_ == null) {
-              unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6();
-            }
-            input.ReadMessage(unknown6_);
-            break;
-          }
-          case 58: {
-            if (auth_ == null) {
-              auth_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Auth();
-            }
-            input.ReadMessage(auth_);
-            break;
-          }
-          case 802: {
-            payload_.AddEntriesFrom(input, _repeated_payload_codec);
-            break;
-          }
-          case 810: {
-            ErrorMessage = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-    #region Nested types
-    /// <summary>Container for nested types declared in the ProfileResponse message type.</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Unknown6 : pb::IMessage<Unknown6> {
-        private static readonly pb::MessageParser<Unknown6> _parser = new pb::MessageParser<Unknown6>(() => new Unknown6());
-        public static pb::MessageParser<Unknown6> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Descriptor.NestedTypes[0]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Unknown6() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Unknown6(Unknown6 other) : this() {
-          unknown1_ = other.unknown1_;
-          Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
-        }
-
-        public Unknown6 Clone() {
-          return new Unknown6(this);
-        }
-
-        /// <summary>Field number for the "unknown1" field.</summary>
-        public const int Unknown1FieldNumber = 1;
-        private int unknown1_;
-        public int Unknown1 {
-          get { return unknown1_; }
-          set {
-            unknown1_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown2" field.</summary>
-        public const int Unknown2FieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6.Types.Unknown2 unknown2_;
-        public global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6.Types.Unknown2 Unknown2 {
-          get { return unknown2_; }
-          set {
-            unknown2_ = value;
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Unknown6);
-        }
-
-        public bool Equals(Unknown6 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown1 != other.Unknown1) return false;
-          if (!object.Equals(Unknown2, other.Unknown2)) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-          if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown1 != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Unknown1);
-          }
-          if (unknown2_ != null) {
-            output.WriteRawTag(18);
-            output.WriteMessage(Unknown2);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown1 != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-          }
-          if (unknown2_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Unknown6 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown1 != 0) {
-            Unknown1 = other.Unknown1;
-          }
-          if (other.unknown2_ != null) {
-            if (unknown2_ == null) {
-              unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6.Types.Unknown2();
-            }
-            Unknown2.MergeFrom(other.Unknown2);
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Unknown1 = input.ReadInt32();
-                break;
-              }
-              case 18: {
-                if (unknown2_ == null) {
-                  unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6.Types.Unknown2();
-                }
-                input.ReadMessage(unknown2_);
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types {
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class Unknown2 : pb::IMessage<Unknown2> {
-            private static readonly pb::MessageParser<Unknown2> _parser = new pb::MessageParser<Unknown2>(() => new Unknown2());
-            public static pb::MessageParser<Unknown2> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Unknown6.Descriptor.NestedTypes[0]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            public Unknown2() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public Unknown2(Unknown2 other) : this() {
-              unknown1_ = other.unknown1_;
-            }
-
-            public Unknown2 Clone() {
-              return new Unknown2(this);
-            }
-
-            /// <summary>Field number for the "unknown1" field.</summary>
-            public const int Unknown1FieldNumber = 1;
-            private pb::ByteString unknown1_ = pb::ByteString.Empty;
-            public pb::ByteString Unknown1 {
-              get { return unknown1_; }
-              set {
-                unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            public override bool Equals(object other) {
-              return Equals(other as Unknown2);
-            }
-
-            public bool Equals(Unknown2 other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Unknown1 != other.Unknown1) return false;
-              return true;
-            }
-
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
-              return hash;
-            }
-
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Unknown1.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteBytes(Unknown1);
-              }
-            }
-
-            public int CalculateSize() {
-              int size = 0;
-              if (Unknown1.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
-              }
-              return size;
-            }
-
-            public void MergeFrom(Unknown2 other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Unknown1.Length != 0) {
-                Unknown1 = other.Unknown1;
-              }
-            }
-
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    Unknown1 = input.ReadBytes();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-        }
-        #endregion
-
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Auth : pb::IMessage<Auth> {
-        private static readonly pb::MessageParser<Auth> _parser = new pb::MessageParser<Auth>(() => new Auth());
-        public static pb::MessageParser<Auth> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Descriptor.NestedTypes[1]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Auth() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Auth(Auth other) : this() {
-          unknown71_ = other.unknown71_;
-          timestamp_ = other.timestamp_;
-          unknown73_ = other.unknown73_;
-        }
-
-        public Auth Clone() {
-          return new Auth(this);
-        }
-
-        /// <summary>Field number for the "unknown71" field.</summary>
-        public const int Unknown71FieldNumber = 1;
-        private pb::ByteString unknown71_ = pb::ByteString.Empty;
-        public pb::ByteString Unknown71 {
-          get { return unknown71_; }
-          set {
-            unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "timestamp" field.</summary>
-        public const int TimestampFieldNumber = 2;
-        private long timestamp_;
-        public long Timestamp {
-          get { return timestamp_; }
-          set {
-            timestamp_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown73" field.</summary>
-        public const int Unknown73FieldNumber = 3;
-        private pb::ByteString unknown73_ = pb::ByteString.Empty;
-        public pb::ByteString Unknown73 {
-          get { return unknown73_; }
-          set {
-            unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Auth);
-        }
-
-        public bool Equals(Auth other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown71 != other.Unknown71) return false;
-          if (Timestamp != other.Timestamp) return false;
-          if (Unknown73 != other.Unknown73) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
-          if (Timestamp != 0L) hash ^= Timestamp.GetHashCode();
-          if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown71.Length != 0) {
-            output.WriteRawTag(10);
-            output.WriteBytes(Unknown71);
-          }
-          if (Timestamp != 0L) {
-            output.WriteRawTag(16);
-            output.WriteInt64(Timestamp);
-          }
-          if (Unknown73.Length != 0) {
-            output.WriteRawTag(26);
-            output.WriteBytes(Unknown73);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown71.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
-          }
-          if (Timestamp != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Timestamp);
-          }
-          if (Unknown73.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Auth other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown71.Length != 0) {
-            Unknown71 = other.Unknown71;
-          }
-          if (other.Timestamp != 0L) {
-            Timestamp = other.Timestamp;
-          }
-          if (other.Unknown73.Length != 0) {
-            Unknown73 = other.Unknown73;
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 10: {
-                Unknown71 = input.ReadBytes();
-                break;
-              }
-              case 16: {
-                Timestamp = input.ReadInt64();
-                break;
-              }
-              case 26: {
-                Unknown73 = input.ReadBytes();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Payload : pb::IMessage<Payload> {
-        private static readonly pb::MessageParser<Payload> _parser = new pb::MessageParser<Payload>(() => new Payload());
-        public static pb::MessageParser<Payload> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Descriptor.NestedTypes[2]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Payload() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Payload(Payload other) : this() {
-          unknown1_ = other.unknown1_;
-          Profile = other.profile_ != null ? other.Profile.Clone() : null;
-          setting_ = other.setting_;
-        }
-
-        public Payload Clone() {
-          return new Payload(this);
-        }
-
-        /// <summary>Field number for the "unknown1" field.</summary>
-        public const int Unknown1FieldNumber = 1;
-        private int unknown1_;
-        public int Unknown1 {
-          get { return unknown1_; }
-          set {
-            unknown1_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "profile" field.</summary>
-        public const int ProfileFieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile profile_;
-        public global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile Profile {
-          get { return profile_; }
-          set {
-            profile_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "setting" field.</summary>
-        public const int SettingFieldNumber = 3;
-        private pb::ByteString setting_ = pb::ByteString.Empty;
-        public pb::ByteString Setting {
-          get { return setting_; }
-          set {
-            setting_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Payload);
-        }
-
-        public bool Equals(Payload other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown1 != other.Unknown1) return false;
-          if (!object.Equals(Profile, other.Profile)) return false;
-          if (Setting != other.Setting) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-          if (profile_ != null) hash ^= Profile.GetHashCode();
-          if (Setting.Length != 0) hash ^= Setting.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown1 != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Unknown1);
-          }
-          if (profile_ != null) {
-            output.WriteRawTag(18);
-            output.WriteMessage(Profile);
-          }
-          if (Setting.Length != 0) {
-            output.WriteRawTag(26);
-            output.WriteBytes(Setting);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown1 != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-          }
-          if (profile_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Profile);
-          }
-          if (Setting.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Setting);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Payload other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown1 != 0) {
-            Unknown1 = other.Unknown1;
-          }
-          if (other.profile_ != null) {
-            if (profile_ == null) {
-              profile_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile();
-            }
-            Profile.MergeFrom(other.Profile);
-          }
-          if (other.Setting.Length != 0) {
-            Setting = other.Setting;
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Unknown1 = input.ReadInt32();
-                break;
-              }
-              case 18: {
-                if (profile_ == null) {
-                  profile_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile();
-                }
-                input.ReadMessage(profile_);
-                break;
-              }
-              case 26: {
-                Setting = input.ReadBytes();
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the Payload message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types {
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class Profile : pb::IMessage<Profile> {
-            private static readonly pb::MessageParser<Profile> _parser = new pb::MessageParser<Profile>(() => new Profile());
-            public static pb::MessageParser<Profile> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Descriptor.NestedTypes[0]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            public Profile() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public Profile(Profile other) : this() {
-              creationTime_ = other.creationTime_;
-              username_ = other.username_;
-              team_ = other.team_;
-              tutorial_ = other.tutorial_;
-              Avatar = other.avatar_ != null ? other.Avatar.Clone() : null;
-              pokeStorage_ = other.pokeStorage_;
-              itemStorage_ = other.itemStorage_;
-              DailyBonus = other.dailyBonus_ != null ? other.DailyBonus.Clone() : null;
-              unknown12_ = other.unknown12_;
-              unknown13_ = other.unknown13_;
-              currency_ = other.currency_.Clone();
-            }
-
-            public Profile Clone() {
-              return new Profile(this);
-            }
-
-            /// <summary>Field number for the "creation_time" field.</summary>
-            public const int CreationTimeFieldNumber = 1;
-            private long creationTime_;
-            public long CreationTime {
-              get { return creationTime_; }
-              set {
-                creationTime_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "username" field.</summary>
-            public const int UsernameFieldNumber = 2;
-            private string username_ = "";
-            public string Username {
-              get { return username_; }
-              set {
-                username_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            /// <summary>Field number for the "team" field.</summary>
-            public const int TeamFieldNumber = 5;
-            private int team_;
-            public int Team {
-              get { return team_; }
-              set {
-                team_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "tutorial" field.</summary>
-            public const int TutorialFieldNumber = 7;
-            private pb::ByteString tutorial_ = pb::ByteString.Empty;
-            public pb::ByteString Tutorial {
-              get { return tutorial_; }
-              set {
-                tutorial_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            /// <summary>Field number for the "avatar" field.</summary>
-            public const int AvatarFieldNumber = 8;
-            private global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.AvatarDetails avatar_;
-            public global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.AvatarDetails Avatar {
-              get { return avatar_; }
-              set {
-                avatar_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "poke_storage" field.</summary>
-            public const int PokeStorageFieldNumber = 9;
-            private int pokeStorage_;
-            public int PokeStorage {
-              get { return pokeStorage_; }
-              set {
-                pokeStorage_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "item_storage" field.</summary>
-            public const int ItemStorageFieldNumber = 10;
-            private int itemStorage_;
-            public int ItemStorage {
-              get { return itemStorage_; }
-              set {
-                itemStorage_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "daily_bonus" field.</summary>
-            public const int DailyBonusFieldNumber = 11;
-            private global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.DailyBonus dailyBonus_;
-            public global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.DailyBonus DailyBonus {
-              get { return dailyBonus_; }
-              set {
-                dailyBonus_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "unknown12" field.</summary>
-            public const int Unknown12FieldNumber = 12;
-            private pb::ByteString unknown12_ = pb::ByteString.Empty;
-            public pb::ByteString Unknown12 {
-              get { return unknown12_; }
-              set {
-                unknown12_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            /// <summary>Field number for the "unknown13" field.</summary>
-            public const int Unknown13FieldNumber = 13;
-            private pb::ByteString unknown13_ = pb::ByteString.Empty;
-            public pb::ByteString Unknown13 {
-              get { return unknown13_; }
-              set {
-                unknown13_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            /// <summary>Field number for the "currency" field.</summary>
-            public const int CurrencyFieldNumber = 14;
-            private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.Currency> _repeated_currency_codec
-                = pb::FieldCodec.ForMessage(114, global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.Currency.Parser);
-            private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.Currency> currency_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.Currency>();
-            public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.Currency> Currency {
-              get { return currency_; }
-            }
-
-            public override bool Equals(object other) {
-              return Equals(other as Profile);
-            }
-
-            public bool Equals(Profile other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (CreationTime != other.CreationTime) return false;
-              if (Username != other.Username) return false;
-              if (Team != other.Team) return false;
-              if (Tutorial != other.Tutorial) return false;
-              if (!object.Equals(Avatar, other.Avatar)) return false;
-              if (PokeStorage != other.PokeStorage) return false;
-              if (ItemStorage != other.ItemStorage) return false;
-              if (!object.Equals(DailyBonus, other.DailyBonus)) return false;
-              if (Unknown12 != other.Unknown12) return false;
-              if (Unknown13 != other.Unknown13) return false;
-              if(!currency_.Equals(other.currency_)) return false;
-              return true;
-            }
-
-            public override int GetHashCode() {
-              int hash = 1;
-              if (CreationTime != 0L) hash ^= CreationTime.GetHashCode();
-              if (Username.Length != 0) hash ^= Username.GetHashCode();
-              if (Team != 0) hash ^= Team.GetHashCode();
-              if (Tutorial.Length != 0) hash ^= Tutorial.GetHashCode();
-              if (avatar_ != null) hash ^= Avatar.GetHashCode();
-              if (PokeStorage != 0) hash ^= PokeStorage.GetHashCode();
-              if (ItemStorage != 0) hash ^= ItemStorage.GetHashCode();
-              if (dailyBonus_ != null) hash ^= DailyBonus.GetHashCode();
-              if (Unknown12.Length != 0) hash ^= Unknown12.GetHashCode();
-              if (Unknown13.Length != 0) hash ^= Unknown13.GetHashCode();
-              hash ^= currency_.GetHashCode();
-              return hash;
-            }
-
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (CreationTime != 0L) {
-                output.WriteRawTag(8);
-                output.WriteInt64(CreationTime);
-              }
-              if (Username.Length != 0) {
-                output.WriteRawTag(18);
-                output.WriteString(Username);
-              }
-              if (Team != 0) {
-                output.WriteRawTag(40);
-                output.WriteInt32(Team);
-              }
-              if (Tutorial.Length != 0) {
-                output.WriteRawTag(58);
-                output.WriteBytes(Tutorial);
-              }
-              if (avatar_ != null) {
-                output.WriteRawTag(66);
-                output.WriteMessage(Avatar);
-              }
-              if (PokeStorage != 0) {
-                output.WriteRawTag(72);
-                output.WriteInt32(PokeStorage);
-              }
-              if (ItemStorage != 0) {
-                output.WriteRawTag(80);
-                output.WriteInt32(ItemStorage);
-              }
-              if (dailyBonus_ != null) {
-                output.WriteRawTag(90);
-                output.WriteMessage(DailyBonus);
-              }
-              if (Unknown12.Length != 0) {
-                output.WriteRawTag(98);
-                output.WriteBytes(Unknown12);
-              }
-              if (Unknown13.Length != 0) {
-                output.WriteRawTag(106);
-                output.WriteBytes(Unknown13);
-              }
-              currency_.WriteTo(output, _repeated_currency_codec);
-            }
-
-            public int CalculateSize() {
-              int size = 0;
-              if (CreationTime != 0L) {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(CreationTime);
-              }
-              if (Username.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(Username);
-              }
-              if (Team != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Team);
-              }
-              if (Tutorial.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Tutorial);
-              }
-              if (avatar_ != null) {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Avatar);
-              }
-              if (PokeStorage != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokeStorage);
-              }
-              if (ItemStorage != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemStorage);
-              }
-              if (dailyBonus_ != null) {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(DailyBonus);
-              }
-              if (Unknown12.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown12);
-              }
-              if (Unknown13.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown13);
-              }
-              size += currency_.CalculateSize(_repeated_currency_codec);
-              return size;
-            }
-
-            public void MergeFrom(Profile other) {
-              if (other == null) {
-                return;
-              }
-              if (other.CreationTime != 0L) {
-                CreationTime = other.CreationTime;
-              }
-              if (other.Username.Length != 0) {
-                Username = other.Username;
-              }
-              if (other.Team != 0) {
-                Team = other.Team;
-              }
-              if (other.Tutorial.Length != 0) {
-                Tutorial = other.Tutorial;
-              }
-              if (other.avatar_ != null) {
-                if (avatar_ == null) {
-                  avatar_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.AvatarDetails();
-                }
-                Avatar.MergeFrom(other.Avatar);
-              }
-              if (other.PokeStorage != 0) {
-                PokeStorage = other.PokeStorage;
-              }
-              if (other.ItemStorage != 0) {
-                ItemStorage = other.ItemStorage;
-              }
-              if (other.dailyBonus_ != null) {
-                if (dailyBonus_ == null) {
-                  dailyBonus_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.DailyBonus();
-                }
-                DailyBonus.MergeFrom(other.DailyBonus);
-              }
-              if (other.Unknown12.Length != 0) {
-                Unknown12 = other.Unknown12;
-              }
-              if (other.Unknown13.Length != 0) {
-                Unknown13 = other.Unknown13;
-              }
-              currency_.Add(other.currency_);
-            }
-
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    CreationTime = input.ReadInt64();
-                    break;
-                  }
-                  case 18: {
-                    Username = input.ReadString();
-                    break;
-                  }
-                  case 40: {
-                    Team = input.ReadInt32();
-                    break;
-                  }
-                  case 58: {
-                    Tutorial = input.ReadBytes();
-                    break;
-                  }
-                  case 66: {
-                    if (avatar_ == null) {
-                      avatar_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.AvatarDetails();
-                    }
-                    input.ReadMessage(avatar_);
-                    break;
-                  }
-                  case 72: {
-                    PokeStorage = input.ReadInt32();
-                    break;
-                  }
-                  case 80: {
-                    ItemStorage = input.ReadInt32();
-                    break;
-                  }
-                  case 90: {
-                    if (dailyBonus_ == null) {
-                      dailyBonus_ = new global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Types.DailyBonus();
-                    }
-                    input.ReadMessage(dailyBonus_);
-                    break;
-                  }
-                  case 98: {
-                    Unknown12 = input.ReadBytes();
-                    break;
-                  }
-                  case 106: {
-                    Unknown13 = input.ReadBytes();
-                    break;
-                  }
-                  case 114: {
-                    currency_.AddEntriesFrom(input, _repeated_currency_codec);
-                    break;
-                  }
-                }
-              }
-            }
-
-            #region Nested types
-            /// <summary>Container for nested types declared in the Profile message type.</summary>
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public static partial class Types {
-              [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-              public sealed partial class AvatarDetails : pb::IMessage<AvatarDetails> {
-                private static readonly pb::MessageParser<AvatarDetails> _parser = new pb::MessageParser<AvatarDetails>(() => new AvatarDetails());
-                public static pb::MessageParser<AvatarDetails> Parser { get { return _parser; } }
-
-                public static pbr::MessageDescriptor Descriptor {
-                  get { return global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Descriptor.NestedTypes[0]; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor {
-                  get { return Descriptor; }
-                }
-
-                public AvatarDetails() {
-                  OnConstruction();
-                }
-
-                partial void OnConstruction();
-
-                public AvatarDetails(AvatarDetails other) : this() {
-                  unknown2_ = other.unknown2_;
-                  unknown3_ = other.unknown3_;
-                  unknown9_ = other.unknown9_;
-                  unknown10_ = other.unknown10_;
-                }
-
-                public AvatarDetails Clone() {
-                  return new AvatarDetails(this);
-                }
-
-                /// <summary>Field number for the "unknown2" field.</summary>
-                public const int Unknown2FieldNumber = 2;
-                private int unknown2_;
-                public int Unknown2 {
-                  get { return unknown2_; }
-                  set {
-                    unknown2_ = value;
-                  }
-                }
-
-                /// <summary>Field number for the "unknown3" field.</summary>
-                public const int Unknown3FieldNumber = 3;
-                private int unknown3_;
-                public int Unknown3 {
-                  get { return unknown3_; }
-                  set {
-                    unknown3_ = value;
-                  }
-                }
-
-                /// <summary>Field number for the "unknown9" field.</summary>
-                public const int Unknown9FieldNumber = 9;
-                private int unknown9_;
-                public int Unknown9 {
-                  get { return unknown9_; }
-                  set {
-                    unknown9_ = value;
-                  }
-                }
-
-                /// <summary>Field number for the "unknown10" field.</summary>
-                public const int Unknown10FieldNumber = 10;
-                private int unknown10_;
-                public int Unknown10 {
-                  get { return unknown10_; }
-                  set {
-                    unknown10_ = value;
-                  }
-                }
-
-                public override bool Equals(object other) {
-                  return Equals(other as AvatarDetails);
-                }
-
-                public bool Equals(AvatarDetails other) {
-                  if (ReferenceEquals(other, null)) {
-                    return false;
-                  }
-                  if (ReferenceEquals(other, this)) {
-                    return true;
-                  }
-                  if (Unknown2 != other.Unknown2) return false;
-                  if (Unknown3 != other.Unknown3) return false;
-                  if (Unknown9 != other.Unknown9) return false;
-                  if (Unknown10 != other.Unknown10) return false;
-                  return true;
-                }
-
-                public override int GetHashCode() {
-                  int hash = 1;
-                  if (Unknown2 != 0) hash ^= Unknown2.GetHashCode();
-                  if (Unknown3 != 0) hash ^= Unknown3.GetHashCode();
-                  if (Unknown9 != 0) hash ^= Unknown9.GetHashCode();
-                  if (Unknown10 != 0) hash ^= Unknown10.GetHashCode();
-                  return hash;
-                }
-
-                public override string ToString() {
-                  return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-
-                public void WriteTo(pb::CodedOutputStream output) {
-                  if (Unknown2 != 0) {
-                    output.WriteRawTag(16);
-                    output.WriteInt32(Unknown2);
-                  }
-                  if (Unknown3 != 0) {
-                    output.WriteRawTag(24);
-                    output.WriteInt32(Unknown3);
-                  }
-                  if (Unknown9 != 0) {
-                    output.WriteRawTag(72);
-                    output.WriteInt32(Unknown9);
-                  }
-                  if (Unknown10 != 0) {
-                    output.WriteRawTag(80);
-                    output.WriteInt32(Unknown10);
-                  }
-                }
-
-                public int CalculateSize() {
-                  int size = 0;
-                  if (Unknown2 != 0) {
-                    size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown2);
-                  }
-                  if (Unknown3 != 0) {
-                    size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown3);
-                  }
-                  if (Unknown9 != 0) {
-                    size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown9);
-                  }
-                  if (Unknown10 != 0) {
-                    size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown10);
-                  }
-                  return size;
-                }
-
-                public void MergeFrom(AvatarDetails other) {
-                  if (other == null) {
-                    return;
-                  }
-                  if (other.Unknown2 != 0) {
-                    Unknown2 = other.Unknown2;
-                  }
-                  if (other.Unknown3 != 0) {
-                    Unknown3 = other.Unknown3;
-                  }
-                  if (other.Unknown9 != 0) {
-                    Unknown9 = other.Unknown9;
-                  }
-                  if (other.Unknown10 != 0) {
-                    Unknown10 = other.Unknown10;
-                  }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input) {
-                  uint tag;
-                  while ((tag = input.ReadTag()) != 0) {
-                    switch(tag) {
-                      default:
-                        input.SkipLastField();
-                        break;
-                      case 16: {
-                        Unknown2 = input.ReadInt32();
-                        break;
-                      }
-                      case 24: {
-                        Unknown3 = input.ReadInt32();
-                        break;
-                      }
-                      case 72: {
-                        Unknown9 = input.ReadInt32();
-                        break;
-                      }
-                      case 80: {
-                        Unknown10 = input.ReadInt32();
-                        break;
-                      }
-                    }
-                  }
-                }
-
-              }
-
-              [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-              public sealed partial class DailyBonus : pb::IMessage<DailyBonus> {
-                private static readonly pb::MessageParser<DailyBonus> _parser = new pb::MessageParser<DailyBonus>(() => new DailyBonus());
-                public static pb::MessageParser<DailyBonus> Parser { get { return _parser; } }
-
-                public static pbr::MessageDescriptor Descriptor {
-                  get { return global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Descriptor.NestedTypes[1]; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor {
-                  get { return Descriptor; }
-                }
-
-                public DailyBonus() {
-                  OnConstruction();
-                }
-
-                partial void OnConstruction();
-
-                public DailyBonus(DailyBonus other) : this() {
-                  nextCollectTimestampMs_ = other.nextCollectTimestampMs_;
-                  nextDefenderBonusCollectTimestampMs_ = other.nextDefenderBonusCollectTimestampMs_;
-                }
-
-                public DailyBonus Clone() {
-                  return new DailyBonus(this);
-                }
-
-                /// <summary>Field number for the "NextCollectTimestampMs" field.</summary>
-                public const int NextCollectTimestampMsFieldNumber = 1;
-                private long nextCollectTimestampMs_;
-                public long NextCollectTimestampMs {
-                  get { return nextCollectTimestampMs_; }
-                  set {
-                    nextCollectTimestampMs_ = value;
-                  }
-                }
-
-                /// <summary>Field number for the "NextDefenderBonusCollectTimestampMs" field.</summary>
-                public const int NextDefenderBonusCollectTimestampMsFieldNumber = 2;
-                private long nextDefenderBonusCollectTimestampMs_;
-                public long NextDefenderBonusCollectTimestampMs {
-                  get { return nextDefenderBonusCollectTimestampMs_; }
-                  set {
-                    nextDefenderBonusCollectTimestampMs_ = value;
-                  }
-                }
-
-                public override bool Equals(object other) {
-                  return Equals(other as DailyBonus);
-                }
-
-                public bool Equals(DailyBonus other) {
-                  if (ReferenceEquals(other, null)) {
-                    return false;
-                  }
-                  if (ReferenceEquals(other, this)) {
-                    return true;
-                  }
-                  if (NextCollectTimestampMs != other.NextCollectTimestampMs) return false;
-                  if (NextDefenderBonusCollectTimestampMs != other.NextDefenderBonusCollectTimestampMs) return false;
-                  return true;
-                }
-
-                public override int GetHashCode() {
-                  int hash = 1;
-                  if (NextCollectTimestampMs != 0L) hash ^= NextCollectTimestampMs.GetHashCode();
-                  if (NextDefenderBonusCollectTimestampMs != 0L) hash ^= NextDefenderBonusCollectTimestampMs.GetHashCode();
-                  return hash;
-                }
-
-                public override string ToString() {
-                  return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-
-                public void WriteTo(pb::CodedOutputStream output) {
-                  if (NextCollectTimestampMs != 0L) {
-                    output.WriteRawTag(8);
-                    output.WriteInt64(NextCollectTimestampMs);
-                  }
-                  if (NextDefenderBonusCollectTimestampMs != 0L) {
-                    output.WriteRawTag(16);
-                    output.WriteInt64(NextDefenderBonusCollectTimestampMs);
-                  }
-                }
-
-                public int CalculateSize() {
-                  int size = 0;
-                  if (NextCollectTimestampMs != 0L) {
-                    size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextCollectTimestampMs);
-                  }
-                  if (NextDefenderBonusCollectTimestampMs != 0L) {
-                    size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextDefenderBonusCollectTimestampMs);
-                  }
-                  return size;
-                }
-
-                public void MergeFrom(DailyBonus other) {
-                  if (other == null) {
-                    return;
-                  }
-                  if (other.NextCollectTimestampMs != 0L) {
-                    NextCollectTimestampMs = other.NextCollectTimestampMs;
-                  }
-                  if (other.NextDefenderBonusCollectTimestampMs != 0L) {
-                    NextDefenderBonusCollectTimestampMs = other.NextDefenderBonusCollectTimestampMs;
-                  }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input) {
-                  uint tag;
-                  while ((tag = input.ReadTag()) != 0) {
-                    switch(tag) {
-                      default:
-                        input.SkipLastField();
-                        break;
-                      case 8: {
-                        NextCollectTimestampMs = input.ReadInt64();
-                        break;
-                      }
-                      case 16: {
-                        NextDefenderBonusCollectTimestampMs = input.ReadInt64();
-                        break;
-                      }
-                    }
-                  }
-                }
-
-              }
-
-              [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-              public sealed partial class Currency : pb::IMessage<Currency> {
-                private static readonly pb::MessageParser<Currency> _parser = new pb::MessageParser<Currency>(() => new Currency());
-                public static pb::MessageParser<Currency> Parser { get { return _parser; } }
-
-                public static pbr::MessageDescriptor Descriptor {
-                  get { return global::PokemonGo.RocketAPI.GeneratedCode.ProfileResponse.Types.Payload.Types.Profile.Descriptor.NestedTypes[2]; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor {
-                  get { return Descriptor; }
-                }
-
-                public Currency() {
-                  OnConstruction();
-                }
-
-                partial void OnConstruction();
-
-                public Currency(Currency other) : this() {
-                  type_ = other.type_;
-                  amount_ = other.amount_;
-                }
-
-                public Currency Clone() {
-                  return new Currency(this);
-                }
-
-                /// <summary>Field number for the "type" field.</summary>
-                public const int TypeFieldNumber = 1;
-                private string type_ = "";
-                public string Type {
-                  get { return type_; }
-                  set {
-                    type_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-                  }
-                }
-
-                /// <summary>Field number for the "amount" field.</summary>
-                public const int AmountFieldNumber = 2;
-                private int amount_;
-                public int Amount {
-                  get { return amount_; }
-                  set {
-                    amount_ = value;
-                  }
-                }
-
-                public override bool Equals(object other) {
-                  return Equals(other as Currency);
-                }
-
-                public bool Equals(Currency other) {
-                  if (ReferenceEquals(other, null)) {
-                    return false;
-                  }
-                  if (ReferenceEquals(other, this)) {
-                    return true;
-                  }
-                  if (Type != other.Type) return false;
-                  if (Amount != other.Amount) return false;
-                  return true;
-                }
-
-                public override int GetHashCode() {
-                  int hash = 1;
-                  if (Type.Length != 0) hash ^= Type.GetHashCode();
-                  if (Amount != 0) hash ^= Amount.GetHashCode();
-                  return hash;
-                }
-
-                public override string ToString() {
-                  return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-
-                public void WriteTo(pb::CodedOutputStream output) {
-                  if (Type.Length != 0) {
-                    output.WriteRawTag(10);
-                    output.WriteString(Type);
-                  }
-                  if (Amount != 0) {
-                    output.WriteRawTag(16);
-                    output.WriteInt32(Amount);
-                  }
-                }
-
-                public int CalculateSize() {
-                  int size = 0;
-                  if (Type.Length != 0) {
-                    size += 1 + pb::CodedOutputStream.ComputeStringSize(Type);
-                  }
-                  if (Amount != 0) {
-                    size += 1 + pb::CodedOutputStream.ComputeInt32Size(Amount);
-                  }
-                  return size;
-                }
-
-                public void MergeFrom(Currency other) {
-                  if (other == null) {
-                    return;
-                  }
-                  if (other.Type.Length != 0) {
-                    Type = other.Type;
-                  }
-                  if (other.Amount != 0) {
-                    Amount = other.Amount;
-                  }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input) {
-                  uint tag;
-                  while ((tag = input.ReadTag()) != 0) {
-                    switch(tag) {
-                      default:
-                        input.SkipLastField();
-                        break;
-                      case 10: {
-                        Type = input.ReadString();
-                        break;
-                      }
-                      case 16: {
-                        Amount = input.ReadInt32();
-                        break;
-                      }
-                    }
-                  }
-                }
-
-              }
-
-            }
-            #endregion
-
-          }
-
-        }
-        #endregion
-
-      }
-
-    }
-    #endregion
-
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/GeneratedCode/EncounterResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/Response.cs
similarity index 58%
rename from PokemonGo/RocketAPI/GeneratedCode/EncounterResponse.cs
rename to PokemonGo/RocketAPI/GeneratedCode/Response.cs
index 28147d4..bc041fc 100644
--- a/PokemonGo/RocketAPI/GeneratedCode/EncounterResponse.cs
+++ b/PokemonGo/RocketAPI/GeneratedCode/Response.cs
@@ -1,5 +1,5 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: EncounterResponse.proto
+// source: Response.proto
 #pragma warning disable 1591, 0612, 3021
 #region Designer generated code

@@ -9,42 +9,37 @@ using pbr = global::Google.Protobuf.Reflection;
 using scg = global::System.Collections.Generic;
 namespace PokemonGo.RocketAPI.GeneratedCode {

-  /// <summary>Holder for reflection information generated from EncounterResponse.proto</summary>
+  /// <summary>Holder for reflection information generated from Response.proto</summary>
   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class EncounterResponseReflection {
+  public static partial class ResponseReflection {

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

-    static EncounterResponseReflection() {
+    static ResponseReflection() {
       byte[] descriptorData = global::System.Convert.FromBase64String(
           string.Concat(
-            "ChdFbmNvdW50ZXJSZXNwb25zZS5wcm90bxIhUG9rZW1vbkdvLlJvY2tldEFQ",
-            "SS5HZW5lcmF0ZWRDb2RlIocFChFFbmNvdW50ZXJSZXNwb25zZRIQCgh1bmtu",
-            "b3duMRgBIAEoBRIQCgh1bmtub3duMhgCIAEoAxIPCgdhcGlfdXJsGAMgASgJ",
-            "Ek8KCHVua25vd242GAYgASgLMj0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5l",
-            "cmF0ZWRDb2RlLkVuY291bnRlclJlc3BvbnNlLlVua25vd242Ek8KCHVua25v",
-            "d243GAcgASgLMj0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2Rl",
-            "LkVuY291bnRlclJlc3BvbnNlLlVua25vd243Ek0KB3BheWxvYWQYZCADKAsy",
-            "PC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRW5jb3VudGVy",
-            "UmVzcG9uc2UuUGF5bG9hZBIUCgxlcnJvck1lc3NhZ2UYZSABKAkalAEKCFVu",
-            "a25vd242EhAKCHVua25vd24xGAEgASgFElgKCHVua25vd24yGAIgASgLMkYu",
-            "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkVuY291bnRlclJl",
-            "c3BvbnNlLlVua25vd242LlVua25vd24yGhwKCFVua25vd24yEhAKCHVua25v",
-            "d24xGAEgASgMGkMKCFVua25vd243EhEKCXVua25vd243MRgBIAEoDBIRCgl1",
-            "bmtub3duNzIYAiABKAMSEQoJdW5rbm93bjczGAMgASgMGloKB1BheWxvYWQS",
-            "DwoHUG9rZW1vbhgBIAEoBRISCgpCYWNrZ3JvdW5kGAIgASgFEg4KBlN0YXR1",
-            "cxgDIAEoBRIaChJDYXB0dXJlUHJvYmFiaWxpdHkYBCABKAViBnByb3RvMw=="));
+            "Cg5SZXNwb25zZS5wcm90bxIhUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0",
+            "ZWRDb2RlIr0DCghSZXNwb25zZRIQCgh1bmtub3duMRgBIAEoBRIQCgh1bmtu",
+            "b3duMhgCIAEoAxIPCgdhcGlfdXJsGAMgASgJEkYKCHVua25vd242GAYgASgL",
+            "MjQuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlJlc3BvbnNl",
+            "LlVua25vd242Ej4KBGF1dGgYByABKAsyMC5Qb2tlbW9uR28uUm9ja2V0QVBJ",
+            "LkdlbmVyYXRlZENvZGUuUmVzcG9uc2UuQXV0aBIPCgdwYXlsb2FkGGQgAygM",
+            "EhQKDGVycm9yTWVzc2FnZRhlIAEoCRqLAQoIVW5rbm93bjYSEAoIdW5rbm93",
+            "bjEYASABKAUSTwoIdW5rbm93bjIYAiABKAsyPS5Qb2tlbW9uR28uUm9ja2V0",
+            "QVBJLkdlbmVyYXRlZENvZGUuUmVzcG9uc2UuVW5rbm93bjYuVW5rbm93bjIa",
+            "HAoIVW5rbm93bjISEAoIdW5rbm93bjEYASABKAwaPwoEQXV0aBIRCgl1bmtu",
+            "b3duNzEYASABKAwSEQoJdGltZXN0YW1wGAIgASgDEhEKCXVua25vd243MxgD",
+            "IAEoDGIGcHJvdG8z"));
       descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
           new pbr::FileDescriptor[] { },
           new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse), global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Unknown7", "Payload", "ErrorMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7), global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7.Parser, new[]{ "Unknown71", "Unknown72", "Unknown73" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload), global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload.Parser, new[]{ "Pokemon", "Background", "Status", "CaptureProbability" }, null, null, null)})
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Response), global::PokemonGo.RocketAPI.GeneratedCode.Response.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Auth", "Payload", "ErrorMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth), global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth.Parser, new[]{ "Unknown71", "Timestamp", "Unknown73" }, null, null, null)})
           }));
     }
     #endregion
@@ -52,36 +47,36 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
   }
   #region Messages
   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class EncounterResponse : pb::IMessage<EncounterResponse> {
-    private static readonly pb::MessageParser<EncounterResponse> _parser = new pb::MessageParser<EncounterResponse>(() => new EncounterResponse());
-    public static pb::MessageParser<EncounterResponse> Parser { get { return _parser; } }
+  public sealed partial class Response : pb::IMessage<Response> {
+    private static readonly pb::MessageParser<Response> _parser = new pb::MessageParser<Response>(() => new Response());
+    public static pb::MessageParser<Response> Parser { get { return _parser; } }

     public static pbr::MessageDescriptor Descriptor {
-      get { return global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponseReflection.Descriptor.MessageTypes[0]; }
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.ResponseReflection.Descriptor.MessageTypes[0]; }
     }

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

-    public EncounterResponse() {
+    public Response() {
       OnConstruction();
     }

     partial void OnConstruction();

-    public EncounterResponse(EncounterResponse other) : this() {
+    public Response(Response other) : this() {
       unknown1_ = other.unknown1_;
       unknown2_ = other.unknown2_;
       apiUrl_ = other.apiUrl_;
       Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
-      Unknown7 = other.unknown7_ != null ? other.Unknown7.Clone() : null;
+      Auth = other.auth_ != null ? other.Auth.Clone() : null;
       payload_ = other.payload_.Clone();
       errorMessage_ = other.errorMessage_;
     }

-    public EncounterResponse Clone() {
-      return new EncounterResponse(this);
+    public Response Clone() {
+      return new Response(this);
     }

     /// <summary>Field number for the "unknown1" field.</summary>
@@ -116,39 +111,36 @@ namespace PokemonGo.RocketAPI.GeneratedCode {

     /// <summary>Field number for the "unknown6" field.</summary>
     public const int Unknown6FieldNumber = 6;
-    private global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6 unknown6_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6 Unknown6 {
+    private global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6 unknown6_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6 Unknown6 {
       get { return unknown6_; }
       set {
         unknown6_ = value;
       }
     }

-    /// <summary>Field number for the "unknown7" field.</summary>
-    public const int Unknown7FieldNumber = 7;
-    private global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7 unknown7_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7 Unknown7 {
-      get { return unknown7_; }
+    /// <summary>Field number for the "auth" field.</summary>
+    public const int AuthFieldNumber = 7;
+    private global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth auth_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth Auth {
+      get { return auth_; }
       set {
-        unknown7_ = value;
+        auth_ = value;
       }
     }

     /// <summary>Field number for the "payload" field.</summary>
     public const int PayloadFieldNumber = 100;
-    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload> _repeated_payload_codec
-        = pb::FieldCodec.ForMessage(802, global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload.Parser);
-    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload> payload_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload>();
-    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload> Payload {
+    private static readonly pb::FieldCodec<pb::ByteString> _repeated_payload_codec
+        = pb::FieldCodec.ForBytes(802);
+    private readonly pbc::RepeatedField<pb::ByteString> payload_ = new pbc::RepeatedField<pb::ByteString>();
+    public pbc::RepeatedField<pb::ByteString> Payload {
       get { return payload_; }
     }

     /// <summary>Field number for the "errorMessage" field.</summary>
     public const int ErrorMessageFieldNumber = 101;
     private string errorMessage_ = "";
-    /// <summary>
-    /// Should be moved to an error-proto file if error is always 101 field
-    /// </summary>
     public string ErrorMessage {
       get { return errorMessage_; }
       set {
@@ -157,10 +149,10 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
     }

     public override bool Equals(object other) {
-      return Equals(other as EncounterResponse);
+      return Equals(other as Response);
     }

-    public bool Equals(EncounterResponse other) {
+    public bool Equals(Response other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
@@ -171,7 +163,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
       if (Unknown2 != other.Unknown2) return false;
       if (ApiUrl != other.ApiUrl) return false;
       if (!object.Equals(Unknown6, other.Unknown6)) return false;
-      if (!object.Equals(Unknown7, other.Unknown7)) return false;
+      if (!object.Equals(Auth, other.Auth)) return false;
       if(!payload_.Equals(other.payload_)) return false;
       if (ErrorMessage != other.ErrorMessage) return false;
       return true;
@@ -183,7 +175,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
       if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
       if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
       if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
-      if (unknown7_ != null) hash ^= Unknown7.GetHashCode();
+      if (auth_ != null) hash ^= Auth.GetHashCode();
       hash ^= payload_.GetHashCode();
       if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
       return hash;
@@ -210,9 +202,9 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
         output.WriteRawTag(50);
         output.WriteMessage(Unknown6);
       }
-      if (unknown7_ != null) {
+      if (auth_ != null) {
         output.WriteRawTag(58);
-        output.WriteMessage(Unknown7);
+        output.WriteMessage(Auth);
       }
       payload_.WriteTo(output, _repeated_payload_codec);
       if (ErrorMessage.Length != 0) {
@@ -235,8 +227,8 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
       if (unknown6_ != null) {
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
       }
-      if (unknown7_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown7);
+      if (auth_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Auth);
       }
       size += payload_.CalculateSize(_repeated_payload_codec);
       if (ErrorMessage.Length != 0) {
@@ -245,7 +237,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
       return size;
     }

-    public void MergeFrom(EncounterResponse other) {
+    public void MergeFrom(Response other) {
       if (other == null) {
         return;
       }
@@ -260,15 +252,15 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
       }
       if (other.unknown6_ != null) {
         if (unknown6_ == null) {
-          unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6();
+          unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6();
         }
         Unknown6.MergeFrom(other.Unknown6);
       }
-      if (other.unknown7_ != null) {
-        if (unknown7_ == null) {
-          unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7();
+      if (other.auth_ != null) {
+        if (auth_ == null) {
+          auth_ = new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth();
         }
-        Unknown7.MergeFrom(other.Unknown7);
+        Auth.MergeFrom(other.Auth);
       }
       payload_.Add(other.payload_);
       if (other.ErrorMessage.Length != 0) {
@@ -297,16 +289,16 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
           }
           case 50: {
             if (unknown6_ == null) {
-              unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6();
+              unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6();
             }
             input.ReadMessage(unknown6_);
             break;
           }
           case 58: {
-            if (unknown7_ == null) {
-              unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7();
+            if (auth_ == null) {
+              auth_ = new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth();
             }
-            input.ReadMessage(unknown7_);
+            input.ReadMessage(auth_);
             break;
           }
           case 802: {
@@ -322,7 +314,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
     }

     #region Nested types
-    /// <summary>Container for nested types declared in the EncounterResponse message type.</summary>
+    /// <summary>Container for nested types declared in the Response message type.</summary>
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     public static partial class Types {
       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
@@ -331,7 +323,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
         public static pb::MessageParser<Unknown6> Parser { get { return _parser; } }

         public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Descriptor.NestedTypes[0]; }
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.Response.Descriptor.NestedTypes[0]; }
         }

         pbr::MessageDescriptor pb::IMessage.Descriptor {
@@ -365,8 +357,8 @@ namespace PokemonGo.RocketAPI.GeneratedCode {

         /// <summary>Field number for the "unknown2" field.</summary>
         public const int Unknown2FieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2 unknown2_;
-        public global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2 Unknown2 {
+        private global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.Unknown2 unknown2_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.Unknown2 Unknown2 {
           get { return unknown2_; }
           set {
             unknown2_ = value;
@@ -431,7 +423,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
           }
           if (other.unknown2_ != null) {
             if (unknown2_ == null) {
-              unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2();
+              unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.Unknown2();
             }
             Unknown2.MergeFrom(other.Unknown2);
           }
@@ -450,7 +442,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
               }
               case 18: {
                 if (unknown2_ == null) {
-                  unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2();
+                  unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.Unknown2();
                 }
                 input.ReadMessage(unknown2_);
                 break;
@@ -469,7 +461,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
             public static pb::MessageParser<Unknown2> Parser { get { return _parser; } }

             public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Descriptor.NestedTypes[0]; }
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Descriptor.NestedTypes[0]; }
             }

             pbr::MessageDescriptor pb::IMessage.Descriptor {
@@ -572,32 +564,32 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
       }

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

         public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Descriptor.NestedTypes[1]; }
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.Response.Descriptor.NestedTypes[1]; }
         }

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

-        public Unknown7() {
+        public Auth() {
           OnConstruction();
         }

         partial void OnConstruction();

-        public Unknown7(Unknown7 other) : this() {
+        public Auth(Auth other) : this() {
           unknown71_ = other.unknown71_;
-          unknown72_ = other.unknown72_;
+          timestamp_ = other.timestamp_;
           unknown73_ = other.unknown73_;
         }

-        public Unknown7 Clone() {
-          return new Unknown7(this);
+        public Auth Clone() {
+          return new Auth(this);
         }

         /// <summary>Field number for the "unknown71" field.</summary>
@@ -610,13 +602,13 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
           }
         }

-        /// <summary>Field number for the "unknown72" field.</summary>
-        public const int Unknown72FieldNumber = 2;
-        private long unknown72_;
-        public long Unknown72 {
-          get { return unknown72_; }
+        /// <summary>Field number for the "timestamp" field.</summary>
+        public const int TimestampFieldNumber = 2;
+        private long timestamp_;
+        public long Timestamp {
+          get { return timestamp_; }
           set {
-            unknown72_ = value;
+            timestamp_ = value;
           }
         }

@@ -631,10 +623,10 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
         }

         public override bool Equals(object other) {
-          return Equals(other as Unknown7);
+          return Equals(other as Auth);
         }

-        public bool Equals(Unknown7 other) {
+        public bool Equals(Auth other) {
           if (ReferenceEquals(other, null)) {
             return false;
           }
@@ -642,7 +634,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
             return true;
           }
           if (Unknown71 != other.Unknown71) return false;
-          if (Unknown72 != other.Unknown72) return false;
+          if (Timestamp != other.Timestamp) return false;
           if (Unknown73 != other.Unknown73) return false;
           return true;
         }
@@ -650,7 +642,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
         public override int GetHashCode() {
           int hash = 1;
           if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
-          if (Unknown72 != 0L) hash ^= Unknown72.GetHashCode();
+          if (Timestamp != 0L) hash ^= Timestamp.GetHashCode();
           if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
           return hash;
         }
@@ -664,9 +656,9 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
             output.WriteRawTag(10);
             output.WriteBytes(Unknown71);
           }
-          if (Unknown72 != 0L) {
+          if (Timestamp != 0L) {
             output.WriteRawTag(16);
-            output.WriteInt64(Unknown72);
+            output.WriteInt64(Timestamp);
           }
           if (Unknown73.Length != 0) {
             output.WriteRawTag(26);
@@ -679,8 +671,8 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
           if (Unknown71.Length != 0) {
             size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
           }
-          if (Unknown72 != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown72);
+          if (Timestamp != 0L) {
+            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Timestamp);
           }
           if (Unknown73.Length != 0) {
             size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
@@ -688,15 +680,15 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
           return size;
         }

-        public void MergeFrom(Unknown7 other) {
+        public void MergeFrom(Auth other) {
           if (other == null) {
             return;
           }
           if (other.Unknown71.Length != 0) {
             Unknown71 = other.Unknown71;
           }
-          if (other.Unknown72 != 0L) {
-            Unknown72 = other.Unknown72;
+          if (other.Timestamp != 0L) {
+            Timestamp = other.Timestamp;
           }
           if (other.Unknown73.Length != 0) {
             Unknown73 = other.Unknown73;
@@ -715,7 +707,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
                 break;
               }
               case 16: {
-                Unknown72 = input.ReadInt64();
+                Timestamp = input.ReadInt64();
                 break;
               }
               case 26: {
@@ -728,190 +720,6 @@ namespace PokemonGo.RocketAPI.GeneratedCode {

       }

-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Payload : pb::IMessage<Payload> {
-        private static readonly pb::MessageParser<Payload> _parser = new pb::MessageParser<Payload>(() => new Payload());
-        public static pb::MessageParser<Payload> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Descriptor.NestedTypes[2]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Payload() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Payload(Payload other) : this() {
-          pokemon_ = other.pokemon_;
-          background_ = other.background_;
-          status_ = other.status_;
-          captureProbability_ = other.captureProbability_;
-        }
-
-        public Payload Clone() {
-          return new Payload(this);
-        }
-
-        /// <summary>Field number for the "Pokemon" field.</summary>
-        public const int PokemonFieldNumber = 1;
-        private int pokemon_;
-        public int Pokemon {
-          get { return pokemon_; }
-          set {
-            pokemon_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Background" field.</summary>
-        public const int BackgroundFieldNumber = 2;
-        private int background_;
-        public int Background {
-          get { return background_; }
-          set {
-            background_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Status" field.</summary>
-        public const int StatusFieldNumber = 3;
-        private int status_;
-        public int Status {
-          get { return status_; }
-          set {
-            status_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "CaptureProbability" field.</summary>
-        public const int CaptureProbabilityFieldNumber = 4;
-        private int captureProbability_;
-        public int CaptureProbability {
-          get { return captureProbability_; }
-          set {
-            captureProbability_ = value;
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Payload);
-        }
-
-        public bool Equals(Payload other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Pokemon != other.Pokemon) return false;
-          if (Background != other.Background) return false;
-          if (Status != other.Status) return false;
-          if (CaptureProbability != other.CaptureProbability) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Pokemon != 0) hash ^= Pokemon.GetHashCode();
-          if (Background != 0) hash ^= Background.GetHashCode();
-          if (Status != 0) hash ^= Status.GetHashCode();
-          if (CaptureProbability != 0) hash ^= CaptureProbability.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Pokemon != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Pokemon);
-          }
-          if (Background != 0) {
-            output.WriteRawTag(16);
-            output.WriteInt32(Background);
-          }
-          if (Status != 0) {
-            output.WriteRawTag(24);
-            output.WriteInt32(Status);
-          }
-          if (CaptureProbability != 0) {
-            output.WriteRawTag(32);
-            output.WriteInt32(CaptureProbability);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Pokemon != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Pokemon);
-          }
-          if (Background != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Background);
-          }
-          if (Status != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Status);
-          }
-          if (CaptureProbability != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(CaptureProbability);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Payload other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Pokemon != 0) {
-            Pokemon = other.Pokemon;
-          }
-          if (other.Background != 0) {
-            Background = other.Background;
-          }
-          if (other.Status != 0) {
-            Status = other.Status;
-          }
-          if (other.CaptureProbability != 0) {
-            CaptureProbability = other.CaptureProbability;
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Pokemon = input.ReadInt32();
-                break;
-              }
-              case 16: {
-                Background = input.ReadInt32();
-                break;
-              }
-              case 24: {
-                Status = input.ReadInt32();
-                break;
-              }
-              case 32: {
-                CaptureProbability = input.ReadInt32();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
     }
     #endregion

diff --git a/PokemonGo/RocketAPI/GeneratedCode/SettingsResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/SettingsResponse.cs
deleted file mode 100644
index fdb7917..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/SettingsResponse.cs
+++ /dev/null
@@ -1,1992 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: SettingsResponse.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-namespace PokemonGo.RocketAPI.GeneratedCode {
-
-  /// <summary>Holder for reflection information generated from SettingsResponse.proto</summary>
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class SettingsResponseReflection {
-
-    #region Descriptor
-    /// <summary>File descriptor for SettingsResponse.proto</summary>
-    public static pbr::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbr::FileDescriptor descriptor;
-
-    static SettingsResponseReflection() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "ChZTZXR0aW5nc1Jlc3BvbnNlLnByb3RvEiFQb2tlbW9uR28uUm9ja2V0QVBJ",
-            "LkdlbmVyYXRlZENvZGUimg4KEFNldHRpbmdzUmVzcG9uc2USEAoIdW5rbm93",
-            "bjEYASABKAUSEAoIdW5rbm93bjIYAiABKAMSDwoHYXBpX3VybBgDIAEoCRJO",
-            "Cgh1bmtub3duNhgGIAEoCzI8LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJh",
-            "dGVkQ29kZS5TZXR0aW5nc1Jlc3BvbnNlLlVua25vd242EkYKBGF1dGgYByAB",
-            "KAsyOC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuU2V0dGlu",
-            "Z3NSZXNwb25zZS5BdXRoEkwKB3BheWxvYWQYZCADKAsyOy5Qb2tlbW9uR28u",
-            "Um9ja2V0QVBJLkdlbmVyYXRlZENvZGUuU2V0dGluZ3NSZXNwb25zZS5QYXls",
-            "b2FkEhQKDGVycm9yTWVzc2FnZRhlIAEoCRqTAQoIVW5rbm93bjYSEAoIdW5r",
-            "bm93bjEYASABKAUSVwoIdW5rbm93bjIYAiABKAsyRS5Qb2tlbW9uR28uUm9j",
-            "a2V0QVBJLkdlbmVyYXRlZENvZGUuU2V0dGluZ3NSZXNwb25zZS5Vbmtub3du",
-            "Ni5Vbmtub3duMhocCghVbmtub3duMhIQCgh1bmtub3duMRgBIAEoDBo/CgRB",
-            "dXRoEhEKCXVua25vd243MRgBIAEoDBIRCgl0aW1lc3RhbXAYAiABKAMSEQoJ",
-            "dW5rbm93bjczGAMgASgMGv0JCgdQYXlsb2FkEgwKBGd1aWQYAiABKAkSYQoI",
-            "c2V0dGluZ3MYAyABKAsyTy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
-            "ZENvZGUuU2V0dGluZ3NSZXNwb25zZS5QYXlsb2FkLkdsb2JhbFNldHRpbmdz",
-            "UHJvdG8a0QMKE0dsb2JhbFNldHRpbmdzUHJvdG8SYwoMRm9ydFNldHRpbmdz",
-            "GAIgASgLMk0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlNl",
-            "dHRpbmdzUmVzcG9uc2UuUGF5bG9hZC5Gb3J0U2V0dGluZ3NQcm90bxJhCgtN",
-            "YXBTZXR0aW5ncxgDIAEoCzJMLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJh",
-            "dGVkQ29kZS5TZXR0aW5nc1Jlc3BvbnNlLlBheWxvYWQuTWFwU2V0dGluZ3NQ",
-            "cm90bxJlCg1MZXZlbFNldHRpbmdzGAQgASgLMk4uUG9rZW1vbkdvLlJvY2tl",
-            "dEFQSS5HZW5lcmF0ZWRDb2RlLlNldHRpbmdzUmVzcG9uc2UuUGF5bG9hZC5M",
-            "ZXZlbFNldHRpbmdzUHJvdG8SbQoRSW52ZW50b3J5U2V0dGluZ3MYBSABKAsy",
-            "Ui5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuU2V0dGluZ3NS",
-            "ZXNwb25zZS5QYXlsb2FkLkludmVudG9yeVNldHRpbmdzUHJvdG8SHAoUTWlu",
-            "aW11bUNsaWVudFZlcnNpb24YBiABKAka2gEKEUZvcnRTZXR0aW5nc1Byb3Rv",
-            "Eh4KFkludGVyYWN0aW9uUmFuZ2VNZXRlcnMYASABKAESHwoXTWF4VG90YWxE",
-            "ZXBsb3llZFBva2Vtb24YAiABKAUSIAoYTWF4UGxheWVyRGVwbG95ZWRQb2tl",
-            "bW9uGAMgASgFEh8KF0RlcGxveVN0YW1pbmFNdWx0aXBsaWVyGAQgASgBEh4K",
-            "FkRlcGxveUF0dGFja011bHRpcGxpZXIYBSABKAESIQoZRmFySW50ZXJhY3Rp",
-            "b25SYW5nZU1ldGVycxgGIAEoARr7AQoQTWFwU2V0dGluZ3NQcm90bxIbChNQ",
-            "b2tlbW9uVmlzaWJsZVJhbmdlGAEgASgBEhoKElBva2VOYXZSYW5nZU1ldGVy",
-            "cxgCIAEoARIcChRFbmNvdW50ZXJSYW5nZU1ldGVycxgDIAEoARImCh5HZXRN",
-            "YXBPYmplY3RzTWluUmVmcmVzaFNlY29uZHMYBCABKAISJgoeR2V0TWFwT2Jq",
-            "ZWN0c01heFJlZnJlc2hTZWNvbmRzGAUgASgCEiYKHkdldE1hcE9iamVjdHNN",
-            "aW5EaXN0YW5jZU1ldGVycxgGIAEoAhIYChBHb29nbGVNYXBzQXBpS2V5GAcg",
-            "ASgJGlIKEkxldmVsU2V0dGluZ3NQcm90bxIZChFUcmFpbmVyQ3BNb2RpZmll",
-            "chgCIAEoARIhChlUcmFpbmVyRGlmZmljdWx0eU1vZGlmaWVyGAMgASgBGn4K",
-            "FkludmVudG9yeVNldHRpbmdzUHJvdG8SEgoKTWF4UG9rZW1vbhgBIAEoBRIT",
-            "CgtNYXhCYWdJdGVtcxgCIAEoBRITCgtCYXNlUG9rZW1vbhgDIAEoBRIUCgxC",
-            "YXNlQmFnSXRlbXMYBCABKAUSEAoIQmFzZUVnZ3MYBSABKAViBnByb3RvMw=="));
-      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-          new pbr::FileDescriptor[] { },
-          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse), global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Auth", "Payload", "ErrorMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Auth), global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Auth.Parser, new[]{ "Unknown71", "Timestamp", "Unknown73" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload), global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Parser, new[]{ "Guid", "Settings" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.GlobalSettingsProto), global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.GlobalSettingsProto.Parser, new[]{ "FortSettings", "MapSettings", "LevelSettings", "InventorySettings", "MinimumClientVersion" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.FortSettingsProto), global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.FortSettingsProto.Parser, new[]{ "InteractionRangeMeters", "MaxTotalDeployedPokemon", "MaxPlayerDeployedPokemon", "DeployStaminaMultiplier", "DeployAttackMultiplier", "FarInteractionRangeMeters" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.MapSettingsProto), global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.MapSettingsProto.Parser, new[]{ "PokemonVisibleRange", "PokeNavRangeMeters", "EncounterRangeMeters", "GetMapObjectsMinRefreshSeconds", "GetMapObjectsMaxRefreshSeconds", "GetMapObjectsMinDistanceMeters", "GoogleMapsApiKey" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.LevelSettingsProto), global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.LevelSettingsProto.Parser, new[]{ "TrainerCpModifier", "TrainerDifficultyModifier" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.InventorySettingsProto), global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.InventorySettingsProto.Parser, new[]{ "MaxPokemon", "MaxBagItems", "BasePokemon", "BaseBagItems", "BaseEggs" }, null, null, null)})})
-          }));
-    }
-    #endregion
-
-  }
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class SettingsResponse : pb::IMessage<SettingsResponse> {
-    private static readonly pb::MessageParser<SettingsResponse> _parser = new pb::MessageParser<SettingsResponse>(() => new SettingsResponse());
-    public static pb::MessageParser<SettingsResponse> Parser { get { return _parser; } }
-
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponseReflection.Descriptor.MessageTypes[0]; }
-    }
-
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    public SettingsResponse() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    public SettingsResponse(SettingsResponse other) : this() {
-      unknown1_ = other.unknown1_;
-      unknown2_ = other.unknown2_;
-      apiUrl_ = other.apiUrl_;
-      Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
-      Auth = other.auth_ != null ? other.Auth.Clone() : null;
-      payload_ = other.payload_.Clone();
-      errorMessage_ = other.errorMessage_;
-    }
-
-    public SettingsResponse Clone() {
-      return new SettingsResponse(this);
-    }
-
-    /// <summary>Field number for the "unknown1" field.</summary>
-    public const int Unknown1FieldNumber = 1;
-    private int unknown1_;
-    public int Unknown1 {
-      get { return unknown1_; }
-      set {
-        unknown1_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "unknown2" field.</summary>
-    public const int Unknown2FieldNumber = 2;
-    private long unknown2_;
-    public long Unknown2 {
-      get { return unknown2_; }
-      set {
-        unknown2_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "api_url" field.</summary>
-    public const int ApiUrlFieldNumber = 3;
-    private string apiUrl_ = "";
-    public string ApiUrl {
-      get { return apiUrl_; }
-      set {
-        apiUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "unknown6" field.</summary>
-    public const int Unknown6FieldNumber = 6;
-    private global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6 unknown6_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6 Unknown6 {
-      get { return unknown6_; }
-      set {
-        unknown6_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "auth" field.</summary>
-    public const int AuthFieldNumber = 7;
-    private global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Auth auth_;
-    public global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Auth Auth {
-      get { return auth_; }
-      set {
-        auth_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "payload" field.</summary>
-    public const int PayloadFieldNumber = 100;
-    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload> _repeated_payload_codec
-        = pb::FieldCodec.ForMessage(802, global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Parser);
-    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload> payload_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload>();
-    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload> Payload {
-      get { return payload_; }
-    }
-
-    /// <summary>Field number for the "errorMessage" field.</summary>
-    public const int ErrorMessageFieldNumber = 101;
-    private string errorMessage_ = "";
-    /// <summary>
-    /// Should be moved to an error-proto file if error is always 101 field
-    /// </summary>
-    public string ErrorMessage {
-      get { return errorMessage_; }
-      set {
-        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    public override bool Equals(object other) {
-      return Equals(other as SettingsResponse);
-    }
-
-    public bool Equals(SettingsResponse other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Unknown1 != other.Unknown1) return false;
-      if (Unknown2 != other.Unknown2) return false;
-      if (ApiUrl != other.ApiUrl) return false;
-      if (!object.Equals(Unknown6, other.Unknown6)) return false;
-      if (!object.Equals(Auth, other.Auth)) return false;
-      if(!payload_.Equals(other.payload_)) return false;
-      if (ErrorMessage != other.ErrorMessage) return false;
-      return true;
-    }
-
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-      if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
-      if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
-      if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
-      if (auth_ != null) hash ^= Auth.GetHashCode();
-      hash ^= payload_.GetHashCode();
-      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
-      return hash;
-    }
-
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Unknown1 != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        output.WriteRawTag(16);
-        output.WriteInt64(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        output.WriteRawTag(50);
-        output.WriteMessage(Unknown6);
-      }
-      if (auth_ != null) {
-        output.WriteRawTag(58);
-        output.WriteMessage(Auth);
-      }
-      payload_.WriteTo(output, _repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        output.WriteRawTag(170, 6);
-        output.WriteString(ErrorMessage);
-      }
-    }
-
-    public int CalculateSize() {
-      int size = 0;
-      if (Unknown1 != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-      }
-      if (Unknown2 != 0L) {
-        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown2);
-      }
-      if (ApiUrl.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiUrl);
-      }
-      if (unknown6_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
-      }
-      if (auth_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Auth);
-      }
-      size += payload_.CalculateSize(_repeated_payload_codec);
-      if (ErrorMessage.Length != 0) {
-        size += 2 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
-      }
-      return size;
-    }
-
-    public void MergeFrom(SettingsResponse other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Unknown1 != 0) {
-        Unknown1 = other.Unknown1;
-      }
-      if (other.Unknown2 != 0L) {
-        Unknown2 = other.Unknown2;
-      }
-      if (other.ApiUrl.Length != 0) {
-        ApiUrl = other.ApiUrl;
-      }
-      if (other.unknown6_ != null) {
-        if (unknown6_ == null) {
-          unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6();
-        }
-        Unknown6.MergeFrom(other.Unknown6);
-      }
-      if (other.auth_ != null) {
-        if (auth_ == null) {
-          auth_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Auth();
-        }
-        Auth.MergeFrom(other.Auth);
-      }
-      payload_.Add(other.payload_);
-      if (other.ErrorMessage.Length != 0) {
-        ErrorMessage = other.ErrorMessage;
-      }
-    }
-
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Unknown1 = input.ReadInt32();
-            break;
-          }
-          case 16: {
-            Unknown2 = input.ReadInt64();
-            break;
-          }
-          case 26: {
-            ApiUrl = input.ReadString();
-            break;
-          }
-          case 50: {
-            if (unknown6_ == null) {
-              unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6();
-            }
-            input.ReadMessage(unknown6_);
-            break;
-          }
-          case 58: {
-            if (auth_ == null) {
-              auth_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Auth();
-            }
-            input.ReadMessage(auth_);
-            break;
-          }
-          case 802: {
-            payload_.AddEntriesFrom(input, _repeated_payload_codec);
-            break;
-          }
-          case 810: {
-            ErrorMessage = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-    #region Nested types
-    /// <summary>Container for nested types declared in the SettingsResponse message type.</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Unknown6 : pb::IMessage<Unknown6> {
-        private static readonly pb::MessageParser<Unknown6> _parser = new pb::MessageParser<Unknown6>(() => new Unknown6());
-        public static pb::MessageParser<Unknown6> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Descriptor.NestedTypes[0]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Unknown6() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Unknown6(Unknown6 other) : this() {
-          unknown1_ = other.unknown1_;
-          Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
-        }
-
-        public Unknown6 Clone() {
-          return new Unknown6(this);
-        }
-
-        /// <summary>Field number for the "unknown1" field.</summary>
-        public const int Unknown1FieldNumber = 1;
-        private int unknown1_;
-        public int Unknown1 {
-          get { return unknown1_; }
-          set {
-            unknown1_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown2" field.</summary>
-        public const int Unknown2FieldNumber = 2;
-        private global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6.Types.Unknown2 unknown2_;
-        public global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6.Types.Unknown2 Unknown2 {
-          get { return unknown2_; }
-          set {
-            unknown2_ = value;
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Unknown6);
-        }
-
-        public bool Equals(Unknown6 other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown1 != other.Unknown1) return false;
-          if (!object.Equals(Unknown2, other.Unknown2)) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-          if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown1 != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(Unknown1);
-          }
-          if (unknown2_ != null) {
-            output.WriteRawTag(18);
-            output.WriteMessage(Unknown2);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown1 != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-          }
-          if (unknown2_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Unknown6 other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown1 != 0) {
-            Unknown1 = other.Unknown1;
-          }
-          if (other.unknown2_ != null) {
-            if (unknown2_ == null) {
-              unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6.Types.Unknown2();
-            }
-            Unknown2.MergeFrom(other.Unknown2);
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                Unknown1 = input.ReadInt32();
-                break;
-              }
-              case 18: {
-                if (unknown2_ == null) {
-                  unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6.Types.Unknown2();
-                }
-                input.ReadMessage(unknown2_);
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types {
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class Unknown2 : pb::IMessage<Unknown2> {
-            private static readonly pb::MessageParser<Unknown2> _parser = new pb::MessageParser<Unknown2>(() => new Unknown2());
-            public static pb::MessageParser<Unknown2> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Unknown6.Descriptor.NestedTypes[0]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            public Unknown2() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public Unknown2(Unknown2 other) : this() {
-              unknown1_ = other.unknown1_;
-            }
-
-            public Unknown2 Clone() {
-              return new Unknown2(this);
-            }
-
-            /// <summary>Field number for the "unknown1" field.</summary>
-            public const int Unknown1FieldNumber = 1;
-            private pb::ByteString unknown1_ = pb::ByteString.Empty;
-            public pb::ByteString Unknown1 {
-              get { return unknown1_; }
-              set {
-                unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            public override bool Equals(object other) {
-              return Equals(other as Unknown2);
-            }
-
-            public bool Equals(Unknown2 other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (Unknown1 != other.Unknown1) return false;
-              return true;
-            }
-
-            public override int GetHashCode() {
-              int hash = 1;
-              if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
-              return hash;
-            }
-
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (Unknown1.Length != 0) {
-                output.WriteRawTag(10);
-                output.WriteBytes(Unknown1);
-              }
-            }
-
-            public int CalculateSize() {
-              int size = 0;
-              if (Unknown1.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
-              }
-              return size;
-            }
-
-            public void MergeFrom(Unknown2 other) {
-              if (other == null) {
-                return;
-              }
-              if (other.Unknown1.Length != 0) {
-                Unknown1 = other.Unknown1;
-              }
-            }
-
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 10: {
-                    Unknown1 = input.ReadBytes();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-        }
-        #endregion
-
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Auth : pb::IMessage<Auth> {
-        private static readonly pb::MessageParser<Auth> _parser = new pb::MessageParser<Auth>(() => new Auth());
-        public static pb::MessageParser<Auth> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Descriptor.NestedTypes[1]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Auth() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Auth(Auth other) : this() {
-          unknown71_ = other.unknown71_;
-          timestamp_ = other.timestamp_;
-          unknown73_ = other.unknown73_;
-        }
-
-        public Auth Clone() {
-          return new Auth(this);
-        }
-
-        /// <summary>Field number for the "unknown71" field.</summary>
-        public const int Unknown71FieldNumber = 1;
-        private pb::ByteString unknown71_ = pb::ByteString.Empty;
-        public pb::ByteString Unknown71 {
-          get { return unknown71_; }
-          set {
-            unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "timestamp" field.</summary>
-        public const int TimestampFieldNumber = 2;
-        private long timestamp_;
-        public long Timestamp {
-          get { return timestamp_; }
-          set {
-            timestamp_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "unknown73" field.</summary>
-        public const int Unknown73FieldNumber = 3;
-        private pb::ByteString unknown73_ = pb::ByteString.Empty;
-        public pb::ByteString Unknown73 {
-          get { return unknown73_; }
-          set {
-            unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Auth);
-        }
-
-        public bool Equals(Auth other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Unknown71 != other.Unknown71) return false;
-          if (Timestamp != other.Timestamp) return false;
-          if (Unknown73 != other.Unknown73) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
-          if (Timestamp != 0L) hash ^= Timestamp.GetHashCode();
-          if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Unknown71.Length != 0) {
-            output.WriteRawTag(10);
-            output.WriteBytes(Unknown71);
-          }
-          if (Timestamp != 0L) {
-            output.WriteRawTag(16);
-            output.WriteInt64(Timestamp);
-          }
-          if (Unknown73.Length != 0) {
-            output.WriteRawTag(26);
-            output.WriteBytes(Unknown73);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Unknown71.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
-          }
-          if (Timestamp != 0L) {
-            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Timestamp);
-          }
-          if (Unknown73.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Auth other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Unknown71.Length != 0) {
-            Unknown71 = other.Unknown71;
-          }
-          if (other.Timestamp != 0L) {
-            Timestamp = other.Timestamp;
-          }
-          if (other.Unknown73.Length != 0) {
-            Unknown73 = other.Unknown73;
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 10: {
-                Unknown71 = input.ReadBytes();
-                break;
-              }
-              case 16: {
-                Timestamp = input.ReadInt64();
-                break;
-              }
-              case 26: {
-                Unknown73 = input.ReadBytes();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Payload : pb::IMessage<Payload> {
-        private static readonly pb::MessageParser<Payload> _parser = new pb::MessageParser<Payload>(() => new Payload());
-        public static pb::MessageParser<Payload> Parser { get { return _parser; } }
-
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Descriptor.NestedTypes[2]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        public Payload() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        public Payload(Payload other) : this() {
-          guid_ = other.guid_;
-          Settings = other.settings_ != null ? other.Settings.Clone() : null;
-        }
-
-        public Payload Clone() {
-          return new Payload(this);
-        }
-
-        /// <summary>Field number for the "guid" field.</summary>
-        public const int GuidFieldNumber = 2;
-        private string guid_ = "";
-        public string Guid {
-          get { return guid_; }
-          set {
-            guid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "settings" field.</summary>
-        public const int SettingsFieldNumber = 3;
-        private global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.GlobalSettingsProto settings_;
-        public global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.GlobalSettingsProto Settings {
-          get { return settings_; }
-          set {
-            settings_ = value;
-          }
-        }
-
-        public override bool Equals(object other) {
-          return Equals(other as Payload);
-        }
-
-        public bool Equals(Payload other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (Guid != other.Guid) return false;
-          if (!object.Equals(Settings, other.Settings)) return false;
-          return true;
-        }
-
-        public override int GetHashCode() {
-          int hash = 1;
-          if (Guid.Length != 0) hash ^= Guid.GetHashCode();
-          if (settings_ != null) hash ^= Settings.GetHashCode();
-          return hash;
-        }
-
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (Guid.Length != 0) {
-            output.WriteRawTag(18);
-            output.WriteString(Guid);
-          }
-          if (settings_ != null) {
-            output.WriteRawTag(26);
-            output.WriteMessage(Settings);
-          }
-        }
-
-        public int CalculateSize() {
-          int size = 0;
-          if (Guid.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeStringSize(Guid);
-          }
-          if (settings_ != null) {
-            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Settings);
-          }
-          return size;
-        }
-
-        public void MergeFrom(Payload other) {
-          if (other == null) {
-            return;
-          }
-          if (other.Guid.Length != 0) {
-            Guid = other.Guid;
-          }
-          if (other.settings_ != null) {
-            if (settings_ == null) {
-              settings_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.GlobalSettingsProto();
-            }
-            Settings.MergeFrom(other.Settings);
-          }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 18: {
-                Guid = input.ReadString();
-                break;
-              }
-              case 26: {
-                if (settings_ == null) {
-                  settings_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.GlobalSettingsProto();
-                }
-                input.ReadMessage(settings_);
-                break;
-              }
-            }
-          }
-        }
-
-        #region Nested types
-        /// <summary>Container for nested types declared in the Payload message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types {
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class GlobalSettingsProto : pb::IMessage<GlobalSettingsProto> {
-            private static readonly pb::MessageParser<GlobalSettingsProto> _parser = new pb::MessageParser<GlobalSettingsProto>(() => new GlobalSettingsProto());
-            public static pb::MessageParser<GlobalSettingsProto> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Descriptor.NestedTypes[0]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            public GlobalSettingsProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public GlobalSettingsProto(GlobalSettingsProto other) : this() {
-              FortSettings = other.fortSettings_ != null ? other.FortSettings.Clone() : null;
-              MapSettings = other.mapSettings_ != null ? other.MapSettings.Clone() : null;
-              LevelSettings = other.levelSettings_ != null ? other.LevelSettings.Clone() : null;
-              InventorySettings = other.inventorySettings_ != null ? other.InventorySettings.Clone() : null;
-              minimumClientVersion_ = other.minimumClientVersion_;
-            }
-
-            public GlobalSettingsProto Clone() {
-              return new GlobalSettingsProto(this);
-            }
-
-            /// <summary>Field number for the "FortSettings" field.</summary>
-            public const int FortSettingsFieldNumber = 2;
-            private global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.FortSettingsProto fortSettings_;
-            public global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.FortSettingsProto FortSettings {
-              get { return fortSettings_; }
-              set {
-                fortSettings_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "MapSettings" field.</summary>
-            public const int MapSettingsFieldNumber = 3;
-            private global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.MapSettingsProto mapSettings_;
-            public global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.MapSettingsProto MapSettings {
-              get { return mapSettings_; }
-              set {
-                mapSettings_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "LevelSettings" field.</summary>
-            public const int LevelSettingsFieldNumber = 4;
-            private global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.LevelSettingsProto levelSettings_;
-            public global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.LevelSettingsProto LevelSettings {
-              get { return levelSettings_; }
-              set {
-                levelSettings_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "InventorySettings" field.</summary>
-            public const int InventorySettingsFieldNumber = 5;
-            private global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.InventorySettingsProto inventorySettings_;
-            public global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.InventorySettingsProto InventorySettings {
-              get { return inventorySettings_; }
-              set {
-                inventorySettings_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "MinimumClientVersion" field.</summary>
-            public const int MinimumClientVersionFieldNumber = 6;
-            private string minimumClientVersion_ = "";
-            public string MinimumClientVersion {
-              get { return minimumClientVersion_; }
-              set {
-                minimumClientVersion_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            public override bool Equals(object other) {
-              return Equals(other as GlobalSettingsProto);
-            }
-
-            public bool Equals(GlobalSettingsProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (!object.Equals(FortSettings, other.FortSettings)) return false;
-              if (!object.Equals(MapSettings, other.MapSettings)) return false;
-              if (!object.Equals(LevelSettings, other.LevelSettings)) return false;
-              if (!object.Equals(InventorySettings, other.InventorySettings)) return false;
-              if (MinimumClientVersion != other.MinimumClientVersion) return false;
-              return true;
-            }
-
-            public override int GetHashCode() {
-              int hash = 1;
-              if (fortSettings_ != null) hash ^= FortSettings.GetHashCode();
-              if (mapSettings_ != null) hash ^= MapSettings.GetHashCode();
-              if (levelSettings_ != null) hash ^= LevelSettings.GetHashCode();
-              if (inventorySettings_ != null) hash ^= InventorySettings.GetHashCode();
-              if (MinimumClientVersion.Length != 0) hash ^= MinimumClientVersion.GetHashCode();
-              return hash;
-            }
-
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (fortSettings_ != null) {
-                output.WriteRawTag(18);
-                output.WriteMessage(FortSettings);
-              }
-              if (mapSettings_ != null) {
-                output.WriteRawTag(26);
-                output.WriteMessage(MapSettings);
-              }
-              if (levelSettings_ != null) {
-                output.WriteRawTag(34);
-                output.WriteMessage(LevelSettings);
-              }
-              if (inventorySettings_ != null) {
-                output.WriteRawTag(42);
-                output.WriteMessage(InventorySettings);
-              }
-              if (MinimumClientVersion.Length != 0) {
-                output.WriteRawTag(50);
-                output.WriteString(MinimumClientVersion);
-              }
-            }
-
-            public int CalculateSize() {
-              int size = 0;
-              if (fortSettings_ != null) {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(FortSettings);
-              }
-              if (mapSettings_ != null) {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(MapSettings);
-              }
-              if (levelSettings_ != null) {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(LevelSettings);
-              }
-              if (inventorySettings_ != null) {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventorySettings);
-              }
-              if (MinimumClientVersion.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(MinimumClientVersion);
-              }
-              return size;
-            }
-
-            public void MergeFrom(GlobalSettingsProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.fortSettings_ != null) {
-                if (fortSettings_ == null) {
-                  fortSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.FortSettingsProto();
-                }
-                FortSettings.MergeFrom(other.FortSettings);
-              }
-              if (other.mapSettings_ != null) {
-                if (mapSettings_ == null) {
-                  mapSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.MapSettingsProto();
-                }
-                MapSettings.MergeFrom(other.MapSettings);
-              }
-              if (other.levelSettings_ != null) {
-                if (levelSettings_ == null) {
-                  levelSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.LevelSettingsProto();
-                }
-                LevelSettings.MergeFrom(other.LevelSettings);
-              }
-              if (other.inventorySettings_ != null) {
-                if (inventorySettings_ == null) {
-                  inventorySettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.InventorySettingsProto();
-                }
-                InventorySettings.MergeFrom(other.InventorySettings);
-              }
-              if (other.MinimumClientVersion.Length != 0) {
-                MinimumClientVersion = other.MinimumClientVersion;
-              }
-            }
-
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 18: {
-                    if (fortSettings_ == null) {
-                      fortSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.FortSettingsProto();
-                    }
-                    input.ReadMessage(fortSettings_);
-                    break;
-                  }
-                  case 26: {
-                    if (mapSettings_ == null) {
-                      mapSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.MapSettingsProto();
-                    }
-                    input.ReadMessage(mapSettings_);
-                    break;
-                  }
-                  case 34: {
-                    if (levelSettings_ == null) {
-                      levelSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.LevelSettingsProto();
-                    }
-                    input.ReadMessage(levelSettings_);
-                    break;
-                  }
-                  case 42: {
-                    if (inventorySettings_ == null) {
-                      inventorySettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Types.InventorySettingsProto();
-                    }
-                    input.ReadMessage(inventorySettings_);
-                    break;
-                  }
-                  case 50: {
-                    MinimumClientVersion = input.ReadString();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class FortSettingsProto : pb::IMessage<FortSettingsProto> {
-            private static readonly pb::MessageParser<FortSettingsProto> _parser = new pb::MessageParser<FortSettingsProto>(() => new FortSettingsProto());
-            public static pb::MessageParser<FortSettingsProto> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Descriptor.NestedTypes[1]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            public FortSettingsProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public FortSettingsProto(FortSettingsProto other) : this() {
-              interactionRangeMeters_ = other.interactionRangeMeters_;
-              maxTotalDeployedPokemon_ = other.maxTotalDeployedPokemon_;
-              maxPlayerDeployedPokemon_ = other.maxPlayerDeployedPokemon_;
-              deployStaminaMultiplier_ = other.deployStaminaMultiplier_;
-              deployAttackMultiplier_ = other.deployAttackMultiplier_;
-              farInteractionRangeMeters_ = other.farInteractionRangeMeters_;
-            }
-
-            public FortSettingsProto Clone() {
-              return new FortSettingsProto(this);
-            }
-
-            /// <summary>Field number for the "InteractionRangeMeters" field.</summary>
-            public const int InteractionRangeMetersFieldNumber = 1;
-            private double interactionRangeMeters_;
-            public double InteractionRangeMeters {
-              get { return interactionRangeMeters_; }
-              set {
-                interactionRangeMeters_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "MaxTotalDeployedPokemon" field.</summary>
-            public const int MaxTotalDeployedPokemonFieldNumber = 2;
-            private int maxTotalDeployedPokemon_;
-            public int MaxTotalDeployedPokemon {
-              get { return maxTotalDeployedPokemon_; }
-              set {
-                maxTotalDeployedPokemon_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "MaxPlayerDeployedPokemon" field.</summary>
-            public const int MaxPlayerDeployedPokemonFieldNumber = 3;
-            private int maxPlayerDeployedPokemon_;
-            public int MaxPlayerDeployedPokemon {
-              get { return maxPlayerDeployedPokemon_; }
-              set {
-                maxPlayerDeployedPokemon_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "DeployStaminaMultiplier" field.</summary>
-            public const int DeployStaminaMultiplierFieldNumber = 4;
-            private double deployStaminaMultiplier_;
-            public double DeployStaminaMultiplier {
-              get { return deployStaminaMultiplier_; }
-              set {
-                deployStaminaMultiplier_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "DeployAttackMultiplier" field.</summary>
-            public const int DeployAttackMultiplierFieldNumber = 5;
-            private double deployAttackMultiplier_;
-            public double DeployAttackMultiplier {
-              get { return deployAttackMultiplier_; }
-              set {
-                deployAttackMultiplier_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "FarInteractionRangeMeters" field.</summary>
-            public const int FarInteractionRangeMetersFieldNumber = 6;
-            private double farInteractionRangeMeters_;
-            public double FarInteractionRangeMeters {
-              get { return farInteractionRangeMeters_; }
-              set {
-                farInteractionRangeMeters_ = value;
-              }
-            }
-
-            public override bool Equals(object other) {
-              return Equals(other as FortSettingsProto);
-            }
-
-            public bool Equals(FortSettingsProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (InteractionRangeMeters != other.InteractionRangeMeters) return false;
-              if (MaxTotalDeployedPokemon != other.MaxTotalDeployedPokemon) return false;
-              if (MaxPlayerDeployedPokemon != other.MaxPlayerDeployedPokemon) return false;
-              if (DeployStaminaMultiplier != other.DeployStaminaMultiplier) return false;
-              if (DeployAttackMultiplier != other.DeployAttackMultiplier) return false;
-              if (FarInteractionRangeMeters != other.FarInteractionRangeMeters) return false;
-              return true;
-            }
-
-            public override int GetHashCode() {
-              int hash = 1;
-              if (InteractionRangeMeters != 0D) hash ^= InteractionRangeMeters.GetHashCode();
-              if (MaxTotalDeployedPokemon != 0) hash ^= MaxTotalDeployedPokemon.GetHashCode();
-              if (MaxPlayerDeployedPokemon != 0) hash ^= MaxPlayerDeployedPokemon.GetHashCode();
-              if (DeployStaminaMultiplier != 0D) hash ^= DeployStaminaMultiplier.GetHashCode();
-              if (DeployAttackMultiplier != 0D) hash ^= DeployAttackMultiplier.GetHashCode();
-              if (FarInteractionRangeMeters != 0D) hash ^= FarInteractionRangeMeters.GetHashCode();
-              return hash;
-            }
-
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (InteractionRangeMeters != 0D) {
-                output.WriteRawTag(9);
-                output.WriteDouble(InteractionRangeMeters);
-              }
-              if (MaxTotalDeployedPokemon != 0) {
-                output.WriteRawTag(16);
-                output.WriteInt32(MaxTotalDeployedPokemon);
-              }
-              if (MaxPlayerDeployedPokemon != 0) {
-                output.WriteRawTag(24);
-                output.WriteInt32(MaxPlayerDeployedPokemon);
-              }
-              if (DeployStaminaMultiplier != 0D) {
-                output.WriteRawTag(33);
-                output.WriteDouble(DeployStaminaMultiplier);
-              }
-              if (DeployAttackMultiplier != 0D) {
-                output.WriteRawTag(41);
-                output.WriteDouble(DeployAttackMultiplier);
-              }
-              if (FarInteractionRangeMeters != 0D) {
-                output.WriteRawTag(49);
-                output.WriteDouble(FarInteractionRangeMeters);
-              }
-            }
-
-            public int CalculateSize() {
-              int size = 0;
-              if (InteractionRangeMeters != 0D) {
-                size += 1 + 8;
-              }
-              if (MaxTotalDeployedPokemon != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxTotalDeployedPokemon);
-              }
-              if (MaxPlayerDeployedPokemon != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxPlayerDeployedPokemon);
-              }
-              if (DeployStaminaMultiplier != 0D) {
-                size += 1 + 8;
-              }
-              if (DeployAttackMultiplier != 0D) {
-                size += 1 + 8;
-              }
-              if (FarInteractionRangeMeters != 0D) {
-                size += 1 + 8;
-              }
-              return size;
-            }
-
-            public void MergeFrom(FortSettingsProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.InteractionRangeMeters != 0D) {
-                InteractionRangeMeters = other.InteractionRangeMeters;
-              }
-              if (other.MaxTotalDeployedPokemon != 0) {
-                MaxTotalDeployedPokemon = other.MaxTotalDeployedPokemon;
-              }
-              if (other.MaxPlayerDeployedPokemon != 0) {
-                MaxPlayerDeployedPokemon = other.MaxPlayerDeployedPokemon;
-              }
-              if (other.DeployStaminaMultiplier != 0D) {
-                DeployStaminaMultiplier = other.DeployStaminaMultiplier;
-              }
-              if (other.DeployAttackMultiplier != 0D) {
-                DeployAttackMultiplier = other.DeployAttackMultiplier;
-              }
-              if (other.FarInteractionRangeMeters != 0D) {
-                FarInteractionRangeMeters = other.FarInteractionRangeMeters;
-              }
-            }
-
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 9: {
-                    InteractionRangeMeters = input.ReadDouble();
-                    break;
-                  }
-                  case 16: {
-                    MaxTotalDeployedPokemon = input.ReadInt32();
-                    break;
-                  }
-                  case 24: {
-                    MaxPlayerDeployedPokemon = input.ReadInt32();
-                    break;
-                  }
-                  case 33: {
-                    DeployStaminaMultiplier = input.ReadDouble();
-                    break;
-                  }
-                  case 41: {
-                    DeployAttackMultiplier = input.ReadDouble();
-                    break;
-                  }
-                  case 49: {
-                    FarInteractionRangeMeters = input.ReadDouble();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class MapSettingsProto : pb::IMessage<MapSettingsProto> {
-            private static readonly pb::MessageParser<MapSettingsProto> _parser = new pb::MessageParser<MapSettingsProto>(() => new MapSettingsProto());
-            public static pb::MessageParser<MapSettingsProto> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Descriptor.NestedTypes[2]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            public MapSettingsProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public MapSettingsProto(MapSettingsProto other) : this() {
-              pokemonVisibleRange_ = other.pokemonVisibleRange_;
-              pokeNavRangeMeters_ = other.pokeNavRangeMeters_;
-              encounterRangeMeters_ = other.encounterRangeMeters_;
-              getMapObjectsMinRefreshSeconds_ = other.getMapObjectsMinRefreshSeconds_;
-              getMapObjectsMaxRefreshSeconds_ = other.getMapObjectsMaxRefreshSeconds_;
-              getMapObjectsMinDistanceMeters_ = other.getMapObjectsMinDistanceMeters_;
-              googleMapsApiKey_ = other.googleMapsApiKey_;
-            }
-
-            public MapSettingsProto Clone() {
-              return new MapSettingsProto(this);
-            }
-
-            /// <summary>Field number for the "PokemonVisibleRange" field.</summary>
-            public const int PokemonVisibleRangeFieldNumber = 1;
-            private double pokemonVisibleRange_;
-            public double PokemonVisibleRange {
-              get { return pokemonVisibleRange_; }
-              set {
-                pokemonVisibleRange_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "PokeNavRangeMeters" field.</summary>
-            public const int PokeNavRangeMetersFieldNumber = 2;
-            private double pokeNavRangeMeters_;
-            public double PokeNavRangeMeters {
-              get { return pokeNavRangeMeters_; }
-              set {
-                pokeNavRangeMeters_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "EncounterRangeMeters" field.</summary>
-            public const int EncounterRangeMetersFieldNumber = 3;
-            private double encounterRangeMeters_;
-            public double EncounterRangeMeters {
-              get { return encounterRangeMeters_; }
-              set {
-                encounterRangeMeters_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "GetMapObjectsMinRefreshSeconds" field.</summary>
-            public const int GetMapObjectsMinRefreshSecondsFieldNumber = 4;
-            private float getMapObjectsMinRefreshSeconds_;
-            public float GetMapObjectsMinRefreshSeconds {
-              get { return getMapObjectsMinRefreshSeconds_; }
-              set {
-                getMapObjectsMinRefreshSeconds_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "GetMapObjectsMaxRefreshSeconds" field.</summary>
-            public const int GetMapObjectsMaxRefreshSecondsFieldNumber = 5;
-            private float getMapObjectsMaxRefreshSeconds_;
-            public float GetMapObjectsMaxRefreshSeconds {
-              get { return getMapObjectsMaxRefreshSeconds_; }
-              set {
-                getMapObjectsMaxRefreshSeconds_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "GetMapObjectsMinDistanceMeters" field.</summary>
-            public const int GetMapObjectsMinDistanceMetersFieldNumber = 6;
-            private float getMapObjectsMinDistanceMeters_;
-            public float GetMapObjectsMinDistanceMeters {
-              get { return getMapObjectsMinDistanceMeters_; }
-              set {
-                getMapObjectsMinDistanceMeters_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "GoogleMapsApiKey" field.</summary>
-            public const int GoogleMapsApiKeyFieldNumber = 7;
-            private string googleMapsApiKey_ = "";
-            public string GoogleMapsApiKey {
-              get { return googleMapsApiKey_; }
-              set {
-                googleMapsApiKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-              }
-            }
-
-            public override bool Equals(object other) {
-              return Equals(other as MapSettingsProto);
-            }
-
-            public bool Equals(MapSettingsProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (PokemonVisibleRange != other.PokemonVisibleRange) return false;
-              if (PokeNavRangeMeters != other.PokeNavRangeMeters) return false;
-              if (EncounterRangeMeters != other.EncounterRangeMeters) return false;
-              if (GetMapObjectsMinRefreshSeconds != other.GetMapObjectsMinRefreshSeconds) return false;
-              if (GetMapObjectsMaxRefreshSeconds != other.GetMapObjectsMaxRefreshSeconds) return false;
-              if (GetMapObjectsMinDistanceMeters != other.GetMapObjectsMinDistanceMeters) return false;
-              if (GoogleMapsApiKey != other.GoogleMapsApiKey) return false;
-              return true;
-            }
-
-            public override int GetHashCode() {
-              int hash = 1;
-              if (PokemonVisibleRange != 0D) hash ^= PokemonVisibleRange.GetHashCode();
-              if (PokeNavRangeMeters != 0D) hash ^= PokeNavRangeMeters.GetHashCode();
-              if (EncounterRangeMeters != 0D) hash ^= EncounterRangeMeters.GetHashCode();
-              if (GetMapObjectsMinRefreshSeconds != 0F) hash ^= GetMapObjectsMinRefreshSeconds.GetHashCode();
-              if (GetMapObjectsMaxRefreshSeconds != 0F) hash ^= GetMapObjectsMaxRefreshSeconds.GetHashCode();
-              if (GetMapObjectsMinDistanceMeters != 0F) hash ^= GetMapObjectsMinDistanceMeters.GetHashCode();
-              if (GoogleMapsApiKey.Length != 0) hash ^= GoogleMapsApiKey.GetHashCode();
-              return hash;
-            }
-
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (PokemonVisibleRange != 0D) {
-                output.WriteRawTag(9);
-                output.WriteDouble(PokemonVisibleRange);
-              }
-              if (PokeNavRangeMeters != 0D) {
-                output.WriteRawTag(17);
-                output.WriteDouble(PokeNavRangeMeters);
-              }
-              if (EncounterRangeMeters != 0D) {
-                output.WriteRawTag(25);
-                output.WriteDouble(EncounterRangeMeters);
-              }
-              if (GetMapObjectsMinRefreshSeconds != 0F) {
-                output.WriteRawTag(37);
-                output.WriteFloat(GetMapObjectsMinRefreshSeconds);
-              }
-              if (GetMapObjectsMaxRefreshSeconds != 0F) {
-                output.WriteRawTag(45);
-                output.WriteFloat(GetMapObjectsMaxRefreshSeconds);
-              }
-              if (GetMapObjectsMinDistanceMeters != 0F) {
-                output.WriteRawTag(53);
-                output.WriteFloat(GetMapObjectsMinDistanceMeters);
-              }
-              if (GoogleMapsApiKey.Length != 0) {
-                output.WriteRawTag(58);
-                output.WriteString(GoogleMapsApiKey);
-              }
-            }
-
-            public int CalculateSize() {
-              int size = 0;
-              if (PokemonVisibleRange != 0D) {
-                size += 1 + 8;
-              }
-              if (PokeNavRangeMeters != 0D) {
-                size += 1 + 8;
-              }
-              if (EncounterRangeMeters != 0D) {
-                size += 1 + 8;
-              }
-              if (GetMapObjectsMinRefreshSeconds != 0F) {
-                size += 1 + 4;
-              }
-              if (GetMapObjectsMaxRefreshSeconds != 0F) {
-                size += 1 + 4;
-              }
-              if (GetMapObjectsMinDistanceMeters != 0F) {
-                size += 1 + 4;
-              }
-              if (GoogleMapsApiKey.Length != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(GoogleMapsApiKey);
-              }
-              return size;
-            }
-
-            public void MergeFrom(MapSettingsProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.PokemonVisibleRange != 0D) {
-                PokemonVisibleRange = other.PokemonVisibleRange;
-              }
-              if (other.PokeNavRangeMeters != 0D) {
-                PokeNavRangeMeters = other.PokeNavRangeMeters;
-              }
-              if (other.EncounterRangeMeters != 0D) {
-                EncounterRangeMeters = other.EncounterRangeMeters;
-              }
-              if (other.GetMapObjectsMinRefreshSeconds != 0F) {
-                GetMapObjectsMinRefreshSeconds = other.GetMapObjectsMinRefreshSeconds;
-              }
-              if (other.GetMapObjectsMaxRefreshSeconds != 0F) {
-                GetMapObjectsMaxRefreshSeconds = other.GetMapObjectsMaxRefreshSeconds;
-              }
-              if (other.GetMapObjectsMinDistanceMeters != 0F) {
-                GetMapObjectsMinDistanceMeters = other.GetMapObjectsMinDistanceMeters;
-              }
-              if (other.GoogleMapsApiKey.Length != 0) {
-                GoogleMapsApiKey = other.GoogleMapsApiKey;
-              }
-            }
-
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 9: {
-                    PokemonVisibleRange = input.ReadDouble();
-                    break;
-                  }
-                  case 17: {
-                    PokeNavRangeMeters = input.ReadDouble();
-                    break;
-                  }
-                  case 25: {
-                    EncounterRangeMeters = input.ReadDouble();
-                    break;
-                  }
-                  case 37: {
-                    GetMapObjectsMinRefreshSeconds = input.ReadFloat();
-                    break;
-                  }
-                  case 45: {
-                    GetMapObjectsMaxRefreshSeconds = input.ReadFloat();
-                    break;
-                  }
-                  case 53: {
-                    GetMapObjectsMinDistanceMeters = input.ReadFloat();
-                    break;
-                  }
-                  case 58: {
-                    GoogleMapsApiKey = input.ReadString();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class LevelSettingsProto : pb::IMessage<LevelSettingsProto> {
-            private static readonly pb::MessageParser<LevelSettingsProto> _parser = new pb::MessageParser<LevelSettingsProto>(() => new LevelSettingsProto());
-            public static pb::MessageParser<LevelSettingsProto> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Descriptor.NestedTypes[3]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            public LevelSettingsProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public LevelSettingsProto(LevelSettingsProto other) : this() {
-              trainerCpModifier_ = other.trainerCpModifier_;
-              trainerDifficultyModifier_ = other.trainerDifficultyModifier_;
-            }
-
-            public LevelSettingsProto Clone() {
-              return new LevelSettingsProto(this);
-            }
-
-            /// <summary>Field number for the "TrainerCpModifier" field.</summary>
-            public const int TrainerCpModifierFieldNumber = 2;
-            private double trainerCpModifier_;
-            public double TrainerCpModifier {
-              get { return trainerCpModifier_; }
-              set {
-                trainerCpModifier_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "TrainerDifficultyModifier" field.</summary>
-            public const int TrainerDifficultyModifierFieldNumber = 3;
-            private double trainerDifficultyModifier_;
-            public double TrainerDifficultyModifier {
-              get { return trainerDifficultyModifier_; }
-              set {
-                trainerDifficultyModifier_ = value;
-              }
-            }
-
-            public override bool Equals(object other) {
-              return Equals(other as LevelSettingsProto);
-            }
-
-            public bool Equals(LevelSettingsProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (TrainerCpModifier != other.TrainerCpModifier) return false;
-              if (TrainerDifficultyModifier != other.TrainerDifficultyModifier) return false;
-              return true;
-            }
-
-            public override int GetHashCode() {
-              int hash = 1;
-              if (TrainerCpModifier != 0D) hash ^= TrainerCpModifier.GetHashCode();
-              if (TrainerDifficultyModifier != 0D) hash ^= TrainerDifficultyModifier.GetHashCode();
-              return hash;
-            }
-
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (TrainerCpModifier != 0D) {
-                output.WriteRawTag(17);
-                output.WriteDouble(TrainerCpModifier);
-              }
-              if (TrainerDifficultyModifier != 0D) {
-                output.WriteRawTag(25);
-                output.WriteDouble(TrainerDifficultyModifier);
-              }
-            }
-
-            public int CalculateSize() {
-              int size = 0;
-              if (TrainerCpModifier != 0D) {
-                size += 1 + 8;
-              }
-              if (TrainerDifficultyModifier != 0D) {
-                size += 1 + 8;
-              }
-              return size;
-            }
-
-            public void MergeFrom(LevelSettingsProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.TrainerCpModifier != 0D) {
-                TrainerCpModifier = other.TrainerCpModifier;
-              }
-              if (other.TrainerDifficultyModifier != 0D) {
-                TrainerDifficultyModifier = other.TrainerDifficultyModifier;
-              }
-            }
-
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 17: {
-                    TrainerCpModifier = input.ReadDouble();
-                    break;
-                  }
-                  case 25: {
-                    TrainerDifficultyModifier = input.ReadDouble();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class InventorySettingsProto : pb::IMessage<InventorySettingsProto> {
-            private static readonly pb::MessageParser<InventorySettingsProto> _parser = new pb::MessageParser<InventorySettingsProto>(() => new InventorySettingsProto());
-            public static pb::MessageParser<InventorySettingsProto> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor {
-              get { return global::PokemonGo.RocketAPI.GeneratedCode.SettingsResponse.Types.Payload.Descriptor.NestedTypes[4]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor {
-              get { return Descriptor; }
-            }
-
-            public InventorySettingsProto() {
-              OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public InventorySettingsProto(InventorySettingsProto other) : this() {
-              maxPokemon_ = other.maxPokemon_;
-              maxBagItems_ = other.maxBagItems_;
-              basePokemon_ = other.basePokemon_;
-              baseBagItems_ = other.baseBagItems_;
-              baseEggs_ = other.baseEggs_;
-            }
-
-            public InventorySettingsProto Clone() {
-              return new InventorySettingsProto(this);
-            }
-
-            /// <summary>Field number for the "MaxPokemon" field.</summary>
-            public const int MaxPokemonFieldNumber = 1;
-            private int maxPokemon_;
-            public int MaxPokemon {
-              get { return maxPokemon_; }
-              set {
-                maxPokemon_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "MaxBagItems" field.</summary>
-            public const int MaxBagItemsFieldNumber = 2;
-            private int maxBagItems_;
-            public int MaxBagItems {
-              get { return maxBagItems_; }
-              set {
-                maxBagItems_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "BasePokemon" field.</summary>
-            public const int BasePokemonFieldNumber = 3;
-            private int basePokemon_;
-            public int BasePokemon {
-              get { return basePokemon_; }
-              set {
-                basePokemon_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "BaseBagItems" field.</summary>
-            public const int BaseBagItemsFieldNumber = 4;
-            private int baseBagItems_;
-            public int BaseBagItems {
-              get { return baseBagItems_; }
-              set {
-                baseBagItems_ = value;
-              }
-            }
-
-            /// <summary>Field number for the "BaseEggs" field.</summary>
-            public const int BaseEggsFieldNumber = 5;
-            private int baseEggs_;
-            public int BaseEggs {
-              get { return baseEggs_; }
-              set {
-                baseEggs_ = value;
-              }
-            }
-
-            public override bool Equals(object other) {
-              return Equals(other as InventorySettingsProto);
-            }
-
-            public bool Equals(InventorySettingsProto other) {
-              if (ReferenceEquals(other, null)) {
-                return false;
-              }
-              if (ReferenceEquals(other, this)) {
-                return true;
-              }
-              if (MaxPokemon != other.MaxPokemon) return false;
-              if (MaxBagItems != other.MaxBagItems) return false;
-              if (BasePokemon != other.BasePokemon) return false;
-              if (BaseBagItems != other.BaseBagItems) return false;
-              if (BaseEggs != other.BaseEggs) return false;
-              return true;
-            }
-
-            public override int GetHashCode() {
-              int hash = 1;
-              if (MaxPokemon != 0) hash ^= MaxPokemon.GetHashCode();
-              if (MaxBagItems != 0) hash ^= MaxBagItems.GetHashCode();
-              if (BasePokemon != 0) hash ^= BasePokemon.GetHashCode();
-              if (BaseBagItems != 0) hash ^= BaseBagItems.GetHashCode();
-              if (BaseEggs != 0) hash ^= BaseEggs.GetHashCode();
-              return hash;
-            }
-
-            public override string ToString() {
-              return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output) {
-              if (MaxPokemon != 0) {
-                output.WriteRawTag(8);
-                output.WriteInt32(MaxPokemon);
-              }
-              if (MaxBagItems != 0) {
-                output.WriteRawTag(16);
-                output.WriteInt32(MaxBagItems);
-              }
-              if (BasePokemon != 0) {
-                output.WriteRawTag(24);
-                output.WriteInt32(BasePokemon);
-              }
-              if (BaseBagItems != 0) {
-                output.WriteRawTag(32);
-                output.WriteInt32(BaseBagItems);
-              }
-              if (BaseEggs != 0) {
-                output.WriteRawTag(40);
-                output.WriteInt32(BaseEggs);
-              }
-            }
-
-            public int CalculateSize() {
-              int size = 0;
-              if (MaxPokemon != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxPokemon);
-              }
-              if (MaxBagItems != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxBagItems);
-              }
-              if (BasePokemon != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BasePokemon);
-              }
-              if (BaseBagItems != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseBagItems);
-              }
-              if (BaseEggs != 0) {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseEggs);
-              }
-              return size;
-            }
-
-            public void MergeFrom(InventorySettingsProto other) {
-              if (other == null) {
-                return;
-              }
-              if (other.MaxPokemon != 0) {
-                MaxPokemon = other.MaxPokemon;
-              }
-              if (other.MaxBagItems != 0) {
-                MaxBagItems = other.MaxBagItems;
-              }
-              if (other.BasePokemon != 0) {
-                BasePokemon = other.BasePokemon;
-              }
-              if (other.BaseBagItems != 0) {
-                BaseBagItems = other.BaseBagItems;
-              }
-              if (other.BaseEggs != 0) {
-                BaseEggs = other.BaseEggs;
-              }
-            }
-
-            public void MergeFrom(pb::CodedInputStream input) {
-              uint tag;
-              while ((tag = input.ReadTag()) != 0) {
-                switch(tag) {
-                  default:
-                    input.SkipLastField();
-                    break;
-                  case 8: {
-                    MaxPokemon = input.ReadInt32();
-                    break;
-                  }
-                  case 16: {
-                    MaxBagItems = input.ReadInt32();
-                    break;
-                  }
-                  case 24: {
-                    BasePokemon = input.ReadInt32();
-                    break;
-                  }
-                  case 32: {
-                    BaseBagItems = input.ReadInt32();
-                    break;
-                  }
-                  case 40: {
-                    BaseEggs = input.ReadInt32();
-                    break;
-                  }
-                }
-              }
-            }
-
-          }
-
-        }
-        #endregion
-
-      }
-
-    }
-    #endregion
-
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj b/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
index f92f5ad..15c9b54 100644
--- a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
+++ b/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
@@ -79,15 +79,10 @@
     <Compile Include="Enums\MiscEnums.cs" />
     <Compile Include="Enums\RequestType.cs" />
     <Compile Include="Extensions\DateTimeExtensions.cs" />
-    <Compile Include="GeneratedCode\CatchPokemonResponse.cs" />
-    <Compile Include="GeneratedCode\EncounterResponse.cs" />
-    <Compile Include="GeneratedCode\FortDetailResponse.cs" />
-    <Compile Include="GeneratedCode\FortSearchResponse.cs" />
-    <Compile Include="GeneratedCode\InventoryResponse.cs" />
-    <Compile Include="GeneratedCode\MapObjectsResponse.cs" />
-    <Compile Include="GeneratedCode\PlayerUpdateResponse.cs" />
+    <Compile Include="GeneratedCode\AllEnum.cs" />
+    <Compile Include="GeneratedCode\Payloads.cs" />
     <Compile Include="GeneratedCode\Request.cs" />
-    <Compile Include="GeneratedCode\SettingsResponse.cs" />
+    <Compile Include="GeneratedCode\Response.cs" />
     <Compile Include="Helpers\HttpClientHelper.cs" />
     <Compile Include="Helpers\JsonHelper.cs" />
     <Compile Include="Helpers\ProtoHelper.cs" />
@@ -100,7 +95,6 @@
     <None Include="app.config" />
     <Compile Include="Client.cs" />
     <Compile Include="Extensions\HttpClientExtensions.cs" />
-    <Compile Include="GeneratedCode\ProfileResponse.cs" />
     <Compile Include="Helpers\RandomHelper.cs" />
     <Compile Include="Helpers\RequestBuilder.cs" />
     <Compile Include="Resources.cs" />
@@ -108,19 +102,11 @@
   </ItemGroup>
   <ItemGroup>
     <None Include="packages.config" />
-    <None Include="Proto\InventoryResponse.proto" />
-    <None Include="Proto\EncounterResponse.proto" />
-    <None Include="Proto\CatchPokemonResponse.proto" />
-    <None Include="Proto\FortDetailResponse.proto" />
-    <None Include="Proto\FortSearchResponse.proto" />
-    <None Include="Proto\PlayerUpdateResponse.proto" />
-    <None Include="Proto\MapObjectsResponse.proto" />
-    <None Include="Proto\SettingsResponse.proto" />
+    <None Include="Proto\AllEnum.proto" />
+    <None Include="Proto\Payloads.proto" />
+    <None Include="Proto\Response.proto" />
     <None Include="Proto\Request.proto" />
   </ItemGroup>
-  <ItemGroup>
-    <None Include="Proto\ProfileResponse.proto" />
-  </ItemGroup>
   <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
diff --git a/PokemonGo/RocketAPI/Proto/AllEnum.proto b/PokemonGo/RocketAPI/Proto/AllEnum.proto
new file mode 100644
index 0000000..d580cc6
--- /dev/null
+++ b/PokemonGo/RocketAPI/Proto/AllEnum.proto
@@ -0,0 +1,766 @@
+syntax = "proto3";
+
+package AllEnum;
+
+enum RpcDirection {
+  UNKNOWN = 0;
+  RESPONSE = 1;
+  REQUEST = 2;
+}
+
+enum TeamColor {
+  NEUTRAL = 0;
+  BLUE = 1;
+  RED = 2;
+  YELLOW = 3;
+}
+
+
+enum RequestMethod {
+  METHOD_UNSET = 0;
+  PLAYER_UPDATE = 1;
+  GET_PLAYER = 2;
+  GET_INVENTORY = 4;
+  DOWNLOAD_SETTINGS = 5;
+  DOWNLOAD_ITEM_TEMPLATES = 6;
+  DOWNLOAD_REMOTE_CONFIG_VERSION = 7;
+  FORT_SEARCH = 101;
+  ENCOUNTER = 102;
+  CATCH_POKEMON = 103;
+  FORT_DETAILS = 104;
+  ITEM_USE = 105;
+  GET_MAP_OBJECTS = 106;
+  FORT_DEPLOY_POKEMON = 110;
+  FORT_RECALL_POKEMON = 111;
+  RELEASE_POKEMON = 112;
+  USE_ITEM_POTION = 113;
+  USE_ITEM_CAPTURE = 114;
+  USE_ITEM_FLEE = 115;
+  USE_ITEM_REVIVE = 116;
+  TRADE_SEARCH = 117;
+  TRADE_OFFER = 118;
+  TRADE_RESPONSE = 119;
+  TRADE_RESULT = 120;
+  GET_PLAYER_PROFILE = 121;
+  GET_ITEM_PACK = 122;
+  BUY_ITEM_PACK = 123;
+  BUY_GEM_PACK = 124;
+  EVOLVE_POKEMON = 125;
+  GET_HATCHED_EGGS = 126;
+  ENCOUNTER_TUTORIAL_COMPLETE = 127;
+  LEVEL_UP_REWARDS = 128;
+  CHECK_AWARDED_BADGES = 129;
+  USE_ITEM_GYM = 133;
+  GET_GYM_DETAILS = 134;
+  START_GYM_BATTLE = 135;
+  ATTACK_GYM = 136;
+  RECYCLE_INVENTORY_ITEM = 137;
+  COLLECT_DAILY_BONUS = 138;
+  USE_ITEM_XP_BOOST = 139;
+  USE_ITEM_EGG_INCUBATOR = 140;
+  USE_INCENSE = 141;
+  GET_INCENSE_POKEMON = 142;
+  INCENSE_ENCOUNTER = 143;
+  ADD_FORT_MODIFIER = 144;
+  DISK_ENCOUNTER = 145;
+  COLLECT_DAILY_DEFENDER_BONUS = 146;
+  UPGRADE_POKEMON = 147;
+  SET_FAVORITE_POKEMON = 148;
+  NICKNAME_POKEMON = 149;
+  EQUIP_BADGE = 150;
+  SET_CONTACT_SETTINGS = 151;
+  GET_ASSET_DIGEST = 300;
+  GET_DOWNLOAD_URLS = 301;
+  GET_SUGGESTED_CODENAMES = 401;
+  CHECK_CODENAME_AVAILABLE = 402;
+  CLAIM_CODENAME = 403;
+  SET_AVATAR = 404;
+  SET_PLAYER_TEAM = 405;
+  MARK_TUTORIAL_COMPLETE = 406;
+  LOAD_SPAWN_POINTS = 500;
+  ECHO = 666;
+  DEBUG_UPDATE_INVENTORY = 700;
+  DEBUG_DELETE_PLAYER = 701;
+  SFIDA_REGISTRATION = 800;
+  SFIDA_ACTION_LOG = 801;
+  SFIDA_CERTIFICATION = 802;
+  SFIDA_UPDATE = 803;
+  SFIDA_ACTION = 804;
+  SFIDA_DOWSER = 805;
+  SFIDA_CAPTURE = 806;
+}
+
+enum PokemonMove {
+  MOVE_UNSET = 0;
+  THUNDER_SHOCK = 1;
+  QUICK_ATTACK = 2;
+  SCRATCH = 3;
+  EMBER = 4;
+  VINE_WHIP = 5;
+  TACKLE = 6;
+  RAZOR_LEAF = 7;
+  TAKE_DOWN = 8;
+  WATER_GUN = 9;
+  BITE = 10;
+  POUND = 11;
+  DOUBLE_SLAP = 12;
+  WRAP = 13;
+  HYPER_BEAM = 14;
+  LICK = 15;
+  DARK_PULSE = 16;
+  SMOG = 17;
+  SLUDGE = 18;
+  METAL_CLAW = 19;
+  VICE_GRIP = 20;
+  FLAME_WHEEL = 21;
+  MEGAHORN = 22;
+  WING_ATTACK = 23;
+  FLAMETHROWER = 24;
+  SUCKER_PUNCH = 25;
+  DIG = 26;
+  LOW_KICK = 27;
+  CROSS_CHOP = 28;
+  PSYCHO_CUT = 29;
+  PSYBEAM = 30;
+  EARTHQUAKE = 31;
+  STONE_EDGE = 32;
+  ICE_PUNCH = 33;
+  HEART_STAMP = 34;
+  DISCHARGE = 35;
+  FLASH_CANNON = 36;
+  PECK = 37;
+  DRILL_PECK = 38;
+  ICE_BEAM = 39;
+  BLIZZARD = 40;
+  AIR_SLASH = 41;
+  HEAT_WAVE = 42;
+  TWINEEDLE = 43;
+  POISON_JAB = 44;
+  AERIAL_ACE = 45;
+  DRILL_RUN = 46;
+  PETAL_BLIZZARD = 47;
+  MEGA_DRAIN = 48;
+  BUG_BUZZ = 49;
+  POISON_FANG = 50;
+  NIGHT_SLASH = 51;
+  SLASH = 52;
+  BUBBLE_BEAM = 53;
+  SUBMISSION = 54;
+  KARATE_CHOP = 55;
+  LOW_SWEEP = 56;
+  AQUA_JET = 57;
+  AQUA_TAIL = 58;
+  SEED_BOMB = 59;
+  PSYSHOCK = 60;
+  ROCK_THROW = 61;
+  ANCIENT_POWER = 62;
+  ROCK_TOMB = 63;
+  ROCK_SLIDE = 64;
+  POWER_GEM = 65;
+  SHADOW_SNEAK = 66;
+  SHADOW_PUNCH = 67;
+  SHADOW_CLAW = 68;
+  OMINOUS_WIND = 69;
+  SHADOW_BALL = 70;
+  BULLET_PUNCH = 71;
+  MAGNET_BOMB = 72;
+  STEEL_WING = 73;
+  IRON_HEAD = 74;
+  PARABOLIC_CHARGE = 75;
+  SPARK = 76;
+  THUNDER_PUNCH = 77;
+  THUNDER = 78;
+  THUNDERBOLT = 79;
+  TWISTER = 80;
+  DRAGON_BREATH = 81;
+  DRAGON_PULSE = 82;
+  DRAGON_CLAW = 83;
+  DISARMING_VOICE = 84;
+  DRAINING_KISS = 85;
+  DAZZLING_GLEAM = 86;
+  MOONBLAST = 87;
+  PLAY_ROUGH = 88;
+  CROSS_POISON = 89;
+  SLUDGE_BOMB = 90;
+  SLUDGE_WAVE = 91;
+  GUNK_SHOT = 92;
+  MUD_SHOT = 93;
+  BONE_CLUB = 94;
+  BULLDOZE = 95;
+  MUD_BOMB = 96;
+  FURY_CUTTER = 97;
+  BUG_BITE = 98;
+  SIGNAL_BEAM = 99;
+  X_SCISSOR = 100;
+  FLAME_CHARGE = 101;
+  FLAME_BURST = 102;
+  FIRE_BLAST = 103;
+  BRINE = 104;
+  WATER_PULSE = 105;
+  SCALD = 106;
+  HYDRO_PUMP = 107;
+  PSYCHIC = 108;
+  PSYSTRIKE = 109;
+  ICE_SHARD = 110;
+  ICY_WIND = 111;
+  FROST_BREATH = 112;
+  ABSORB = 113;
+  GIGA_DRAIN = 114;
+  FIRE_PUNCH = 115;
+  SOLAR_BEAM = 116;
+  LEAF_BLADE = 117;
+  POWER_WHIP = 118;
+  SPLASH = 119;
+  ACID = 120;
+  AIR_CUTTER = 121;
+  HURRICANE = 122;
+  BRICK_BREAK = 123;
+  CUT = 124;
+  SWIFT = 125;
+  HORN_ATTACK = 126;
+  STOMP = 127;
+  HEADBUTT = 128;
+  HYPER_FANG = 129;
+  SLAM = 130;
+  BODY_SLAM = 131;
+  REST = 132;
+  STRUGGLE = 133;
+  SCALD_BLASTOISE = 134;
+  HYDRO_PUMP_BLASTOISE = 135;
+  WRAP_GREEN = 136;
+  WRAP_PINK = 137;
+  FURY_CUTTER_FAST = 200;
+  BUG_BITE_FAST = 201;
+  BITE_FAST = 202;
+  SUCKER_PUNCH_FAST = 203;
+  DRAGON_BREATH_FAST = 204;
+  THUNDER_SHOCK_FAST = 205;
+  SPARK_FAST = 206;
+  LOW_KICK_FAST = 207;
+  KARATE_CHOP_FAST = 208;
+  EMBER_FAST = 209;
+  WING_ATTACK_FAST = 210;
+  PECK_FAST = 211;
+  LICK_FAST = 212;
+  SHADOW_CLAW_FAST = 213;
+  VINE_WHIP_FAST = 214;
+  RAZOR_LEAF_FAST = 215;
+  MUD_SHOT_FAST = 216;
+  ICE_SHARD_FAST = 217;
+  FROST_BREATH_FAST = 218;
+  QUICK_ATTACK_FAST = 219;
+  SCRATCH_FAST = 220;
+  TACKLE_FAST = 221;
+  POUND_FAST = 222;
+  CUT_FAST = 223;
+  POISON_JAB_FAST = 224;
+  ACID_FAST = 225;
+  PSYCHO_CUT_FAST = 226;
+  ROCK_THROW_FAST = 227;
+  METAL_CLAW_FAST = 228;
+  BULLET_PUNCH_FAST = 229;
+  WATER_GUN_FAST = 230;
+  SPLASH_FAST = 231;
+  WATER_GUN_FAST_BLASTOISE = 232;
+  MUD_SLAP_FAST = 233;
+  ZEN_HEADBUTT_FAST = 234;
+  CONFUSION_FAST = 235;
+  POISON_STING_FAST = 236;
+  BUBBLE_FAST = 237;
+  FEINT_ATTACK_FAST = 238;
+  STEEL_WING_FAST = 239;
+  FIRE_FANG_FAST = 240;
+  ROCK_SMASH_FAST = 241;
+}
+
+enum ItemId {
+  ITEM_UNKNOWN = 0;
+  ITEM_POKE_BALL = 1;
+  ITEM_GREAT_BALL = 2;
+  ITEM_ULTRA_BALL = 3;
+  ITEM_MASTER_BALL = 4;
+  ITEM_POTION = 101;
+  ITEM_SUPER_POTION = 102;
+  ITEM_HYPER_POTION = 103;
+  ITEM_MAX_POTION = 104;
+  ITEM_REVIVE = 201;
+  ITEM_MAX_REVIVE = 202;
+  ITEM_LUCKY_EGG = 301;
+  ITEM_INCENSE_ORDINARY = 401;
+  ITEM_INCENSE_SPICY = 402;
+  ITEM_INCENSE_COOL = 403;
+  ITEM_INCENSE_FLORAL = 404;
+  ITEM_TROY_DISK = 501;
+  ITEM_X_ATTACK = 602;
+  ITEM_X_DEFENSE = 603;
+  ITEM_X_MIRACLE = 604;
+  ITEM_RAZZ_BERRY = 701;
+  ITEM_BLUK_BERRY = 702;
+  ITEM_NANAB_BERRY = 703;
+  ITEM_WEPAR_BERRY = 704;
+  ITEM_PINAP_BERRY = 705;
+  ITEM_SPECIAL_CAMERA = 801;
+  ITEM_INCUBATOR_BASIC_UNLIMITED = 901;
+  ITEM_INCUBATOR_BASIC = 902;
+  ITEM_POKEMON_STORAGE_UPGRADE = 1001;
+  ITEM_ITEM_STORAGE_UPGRADE = 1002;
+}
+
+enum InventoryUpgradeType {
+  UPGRADE_UNSET = 0;
+  INCREASE_ITEM_STORAGE = 1;
+  INCREASE_POKEMON_STORAGE = 2;
+}
+
+enum EggIncubatorType {
+  INCUBATOR_UNSET = 0;
+  INCUBATOR_DISTANCE = 1;
+}
+
+enum PokemonFamilyId {
+  FAMILY_UNSET = 0;
+  FAMILY_BULBASAUR = 1;
+  FAMILY_CHARMANDER = 4;
+  FAMILY_SQUIRTLE = 7;
+  FAMILY_CATERPIE = 10;
+  FAMILY_WEEDLE = 13;
+  FAMILY_PIDGEY = 16;
+  FAMILY_RATTATA = 19;
+  FAMILY_SPEAROW = 21;
+  FAMILY_EKANS = 23;
+  FAMILY_PIKACHU = 25;
+  FAMILY_SANDSHREW = 27;
+  FAMILY_NIDORAN = 29;
+  FAMILY_NIDORAN2 = 32;
+  FAMILY_CLEFAIRY = 35;
+  FAMILY_VULPIX = 37;
+  FAMILY_JIGGLYPUFF = 39;
+  FAMILY_ZUBAT = 41;
+  FAMILY_ODDISH = 43;
+  FAMILY_PARAS = 46;
+  FAMILY_VENONAT = 48;
+  FAMILY_DIGLETT = 50;
+  FAMILY_MEOWTH = 52;
+  FAMILY_PSYDUCK = 54;
+  FAMILY_MANKEY = 56;
+  FAMILY_GROWLITHE = 58;
+  FAMILY_POLIWAG = 60;
+  FAMILY_ABRA = 63;
+  FAMILY_MACHOP = 66;
+  FAMILY_BELLSPROUT = 69;
+  FAMILY_TENTACOOL = 72;
+  FAMILY_GEODUDE = 74;
+  FAMILY_PONYTA = 77;
+  FAMILY_SLOWPOKE = 79;
+  FAMILY_MAGNEMITE = 81;
+  FAMILY_FARFETCHD = 83;
+  FAMILY_DODUO = 84;
+  FAMILY_SEEL = 86;
+  FAMILY_GRIMER = 88;
+  FAMILY_SHELLDER = 90;
+  FAMILY_GASTLY = 92;
+  FAMILY_ONIX = 95;
+  FAMILY_DROWZEE = 96;
+  FAMILY_KRABBY = 98;
+  FAMILY_VOLTORB = 100;
+  FAMILY_EXEGGCUTE = 102;
+  FAMILY_CUBONE = 104;
+  FAMILY_HITMONLEE = 106;
+  FAMILY_HITMONCHAN = 107;
+  FAMILY_LICKITUNG = 108;
+  FAMILY_KOFFING = 109;
+  FAMILY_RHYHORN = 111;
+  FAMILY_CHANSEY = 113;
+  FAMILY_TANGELA = 114;
+  FAMILY_KANGASKHAN = 115;
+  FAMILY_HORSEA = 116;
+  FAMILY_GOLDEEN = 118;
+  FAMILY_STARYU = 120;
+  FAMILY_MR_MIME = 122;
+  FAMILY_SCYTHER = 123;
+  FAMILY_JYNX = 124;
+  FAMILY_ELECTABUZZ = 125;
+  FAMILY_MAGMAR = 126;
+  FAMILY_PINSIR = 127;
+  FAMILY_TAUROS = 128;
+  FAMILY_MAGIKARP = 129;
+  FAMILY_LAPRAS = 131;
+  FAMILY_DITTO = 132;
+  FAMILY_EEVEE = 133;
+  FAMILY_PORYGON = 137;
+  FAMILY_OMANYTE = 138;
+  FAMILY_KABUTO = 140;
+  FAMILY_AERODACTYL = 142;
+  FAMILY_SNORLAX = 143;
+  FAMILY_ARTICUNO = 144;
+  FAMILY_ZAPDOS = 145;
+  FAMILY_MOLTRES = 146;
+  FAMILY_DRATINI = 147;
+  FAMILY_MEWTWO = 150;
+  FAMILY_MEW = 151;
+}
+
+enum MapObjectsStatus {
+  UNSET_STATUS = 0;
+  SUCCESS = 1;
+  LOCATION_UNSET = 2;
+}
+
+enum FortType {
+  GYM = 0;
+  CHECKPOINT = 1;
+}
+
+enum PokemonId {
+  MISSINGNO = 0;
+  BULBASAUR = 1;
+  IVYSAUR = 2;
+  VENUSAUR = 3;
+  CHARMENDER = 4;
+  CHARMELEON = 5;
+  CHARIZARD = 6;
+  SQUIRTLE = 7;
+  WARTORTLE = 8;
+  BLASTOISE = 9;
+  CATERPIE = 10;
+  METAPOD = 11;
+  BUTTERFREE = 12;
+  WEEDLE = 13;
+  KAKUNA = 14;
+  BEEDRILL = 15;
+  PIDGEY = 16;
+  PIDGEOTTO = 17;
+  PIDGEOT = 18;
+  RATTATA = 19;
+  RATICATE = 20;
+  SPEAROW = 21;
+  FEAROW = 22;
+  EKANS = 23;
+  ARBOK = 24;
+  PIKACHU = 25;
+  RAICHU = 26;
+  SANDSHREW = 27;
+  SANDLASH = 28;
+  NIDORAN_FEMALE = 29;
+  NIDORINA = 30;
+  NIDOQUEEN = 31;
+  NIDORAN_MALE = 32;
+  NIDORINO = 33;
+  NIDOKING = 34;
+  CLEFARY = 35;
+  CLEFABLE = 36;
+  VULPIX = 37;
+  NINETALES = 38;
+  JIGGLYPUFF = 39;
+  WIGGLYTUFF = 40;
+  ZUBAT = 41;
+  GOLBAT = 42;
+  ODDISH = 43;
+  GLOOM = 44;
+  VILEPLUME = 45;
+  PARAS = 46;
+  PARASECT = 47;
+  VENONAT = 48;
+  VENOMOTH = 49;
+  DIGLETT = 50;
+  DUGTRIO = 51;
+  MEOWTH = 52;
+  PERSIAN = 53;
+  PSYDUCK = 54;
+  GOLDUCK = 55;
+  MANKEY = 56;
+  PRIMEAPE = 57;
+  GROWLITHE = 58;
+  ARCANINE = 59;
+  POLIWAG = 60;
+  POLIWHIRL = 61;
+  POLIWRATH = 62;
+  ABRA = 63;
+  KADABRA = 64;
+  ALAKHAZAM = 65;
+  MACHOP = 66;
+  MACHOKE = 67;
+  MACHAMP = 68;
+  BELLSPROUT = 69;
+  WEEPINBELL = 70;
+  VICTREEBELL = 71;
+  TENTACOOL = 72;
+  TENTACRUEL = 73;
+  GEODUGE = 74;
+  GRAVELER = 75;
+  GOLEM = 76;
+  PONYTA = 77;
+  RAPIDASH = 78;
+  SLOWPOKE = 79;
+  SLOWBRO = 80;
+  MAGNEMITE = 81;
+  MAGNETON = 82;
+  FARFETCHD = 83;
+  DODUO = 84;
+  DODRIO = 85;
+  SEEL = 86;
+  DEWGONG = 87;
+  GRIMER = 88;
+  MUK = 89;
+  SHELLDER = 90;
+  CLOYSTER = 91;
+  GASTLY = 92;
+  HAUNTER = 93;
+  GENGAR = 94;
+  ONIX = 95;
+  DROWZEE = 96;
+  HYPNO = 97;
+  KRABBY = 98;
+  KINGLER = 99;
+  VOLTORB = 100;
+  ELECTRODE = 101;
+  EXEGGCUTE = 102;
+  EXEGGUTOR = 103;
+  CUBONE = 104;
+  MAROWAK = 105;
+  HITMONLEE = 106;
+  HITMONCHAN = 107;
+  LICKITUNG = 108;
+  KOFFING = 109;
+  WEEZING = 110;
+  RHYHORN = 111;
+  RHYDON = 112;
+  CHANSEY = 113;
+  TANGELA = 114;
+  KANGASKHAN = 115;
+  HORSEA = 116;
+  SEADRA = 117;
+  GOLDEEN = 118;
+  SEAKING = 119;
+  STARYU = 120;
+  STARMIE = 121;
+  MR_MIME = 122;
+  SCYTHER = 123;
+  JYNX = 124;
+  ELECTABUZZ = 125;
+  MAGMAR = 126;
+  PINSIR = 127;
+  TAUROS = 128;
+  MAGIKARP = 129;
+  GYARADOS = 130;
+  LAPRAS = 131;
+  DITTO = 132;
+  EEVEE = 133;
+  VAPOREON = 134;
+  JOLTEON = 135;
+  FLAREON = 136;
+  PORYGON = 137;
+  OMANYTE = 138;
+  OMASTAR = 139;
+  KABUTO = 140;
+  KABUTOPS = 141;
+  AERODACTYL = 142;
+  SNORLAX = 143;
+  ARTICUNO = 144;
+  ZAPDOS = 145;
+  MOLTRES = 146;
+  DRATINI = 147;
+  DRAGONAIR = 148;
+  DRAGONITE = 149;
+  MEWTWO = 150;
+  MEW = 151;
+}
+
+enum FortSponsor {
+  UNSET_SPONSOR = 0;
+  MCDONALDS = 1;
+  POKEMON_STORE = 2;
+}
+
+enum FortRenderingType {
+  DEFAULT = 0;
+  INTERNAL_TEST = 1;
+}
+
+enum ItemType {
+        ITEM_TYPE_NONE = 0;
+        ITEM_TYPE_POKEBALL = 1;
+        ITEM_TYPE_POTION = 2;
+        ITEM_TYPE_REVIVE = 3;
+        ITEM_TYPE_MAP = 4;
+        ITEM_TYPE_BATTLE = 5;
+        ITEM_TYPE_FOOD = 6;
+        ITEM_TYPE_CAMERA = 7;
+        ITEM_TYPE_DISK = 8;
+        ITEM_TYPE_INCUBATOR = 9;
+        ITEM_TYPE_INCENSE = 10;
+        ITEM_TYPE_XP_BOOST = 11;
+        ITEM_TYPE_INVENTORY_UPGRADE = 12;
+}
+
+enum ItemCategory {
+  ITEM_CATEGORY_NONE = 0;
+  ITEM_CATEGORY_POKEBALL = 1;
+  ITEM_CATEGORY_FOOD = 2;
+  ITEM_CATEGORY_MEDICINE = 3;
+  ITEM_CATEGORY_BOOST = 4;
+  ITEM_CATEGORY_UTILITES = 5;
+  ITEM_CATEGORY_CAMERA = 6;
+  ITEM_CATEGORY_DISK = 7;
+  ITEM_CATEGORY_INCUBATOR = 8;
+  ITEM_CATEGORY_INCENSE = 9;
+  ITEM_CATEGORY_XP_BOOST = 10;
+  ITEM_CATEGORY_INVENTORY_UPGRADE = 11;
+}
+
+enum ItemEffect {
+        ITEM_EFFECT_NONE = 0;
+        ITEM_EFFECT_CAP_NO_FLEE = 1000;
+        ITEM_EFFECT_CAP_NO_MOVEMENT = 1002;
+        ITEM_EFFECT_CAP_NO_THREAT = 1003;
+        ITEM_EFFECT_CAP_TARGET_MAX = 1004;
+        ITEM_EFFECT_CAP_TARGET_SLOW = 1005;
+        ITEM_EFFECT_CAP_CHANCE_NIGHT = 1006;
+        ITEM_EFFECT_CAP_CHANCE_TRAINER = 1007;
+        ITEM_EFFECT_CAP_CHANCE_FIRST_THROW = 1008;
+        ITEM_EFFECT_CAP_CHANCE_LEGEND = 1009;
+        ITEM_EFFECT_CAP_CHANCE_HEAVY = 1010;
+        ITEM_EFFECT_CAP_CHANCE_REPEAT = 1011;
+        ITEM_EFFECT_CAP_CHANCE_MULTI_THROW = 1012;
+        ITEM_EFFECT_CAP_CHANCE_ALWAYS = 1013;
+        ITEM_EFFECT_CAP_CHANCE_SINGLE_THROW = 1014;
+}
+
+enum ActivityType {
+  ACTIVITY_UNKNOWN = 0;
+  ACTIVITY_CATCH_POKEMON = 1;
+  ACTIVITY_CATCH_LEGEND_POKEMON = 2;
+  ACTIVITY_FLEE_POKEMON = 3;
+  ACTIVITY_DEFEAT_FORT = 4;
+  ACTIVITY_EVOLVE_POKEMON = 5;
+  ACTIVITY_HATCH_EGG = 6;
+  ACTIVITY_WALK_KM = 7;
+  ACTIVITY_POKEDEX_ENTRY_NEW = 8;
+  ACTIVITY_CATCH_FIRST_THROW = 9;
+  ACTIVITY_CATCH_NICE_THROW = 10;
+  ACTIVITY_CATCH_GREAT_THROW = 11;
+  ACTIVITY_CATCH_EXCELLENT_THROW = 12;
+  ACTIVITY_CATCH_CURVEBALL = 13;
+  ACTIVITY_CATCH_FIRST_CATCH_OF_DAY = 14;
+  ACTIVITY_CATCH_MILESTONE = 15;
+  ACTIVITY_TRAIN_POKEMON = 16;
+  ACTIVITY_SEARCH_FORT = 17;
+  ACTIVITY_RELEASE_POKEMON = 18;
+  ACTIVITY_HATCH_EGG_SMALL_BONUS = 19;
+  ACTIVITY_HATCH_EGG_MEDIUM_BONUS = 20;
+  ACTIVITY_HATCH_EGG_LARGE_BONUS = 21;
+  ACTIVITY_DEFEAT_GYM_DEFENDER = 22;
+  ACTIVITY_DEFEAT_GYM_LEADER = 23;
+}
+
+enum BadgeType {
+  BADGE_UNSET = 0;
+  BADGE_TRAVEL_KM = 1;
+  BADGE_POKEDEX_ENTRIES = 2;
+  BADGE_CAPTURE_TOTAL = 3;
+  BADGE_DEFEATED_FORT = 4;
+  BADGE_EVOLVED_TOTAL = 5;
+  BADGE_HATCHED_TOTAL = 6;
+  BADGE_ENCOUNTERED_TOTAL = 7;
+  BADGE_POKESTOPS_VISITED = 8;
+  BADGE_UNIQUE_POKESTOPS = 9;
+  BADGE_POKEBALL_THROWN = 10;
+  BADGE_BIG_MAGIKARP = 11;
+  BADGE_DEPLOYED_TOTAL = 12;
+  BADGE_BATTLE_ATTACK_WON = 13;
+  BADGE_BATTLE_TRAINING_WON = 14;
+  BADGE_BATTLE_DEFEND_WON = 15;
+  BADGE_PRESTIGE_RAISED = 16;
+  BADGE_PRESTIGE_DROPPED = 17;
+  BADGE_TYPE_NORMAL = 18;
+  BADGE_TYPE_FIGHTING = 19;
+  BADGE_TYPE_FLYING = 20;
+  BADGE_TYPE_POISON = 21;
+  BADGE_TYPE_GROUND = 22;
+  BADGE_TYPE_ROCK = 23;
+  BADGE_TYPE_BUG = 24;
+  BADGE_TYPE_GHOST = 25;
+  BADGE_TYPE_STEEL = 26;
+  BADGE_TYPE_FIRE = 27;
+  BADGE_TYPE_WATER = 28;
+  BADGE_TYPE_GRASS = 29;
+  BADGE_TYPE_ELECTRIC = 30;
+  BADGE_TYPE_PSYCHIC = 31;
+  BADGE_TYPE_ICE = 32;
+  BADGE_TYPE_DRAGON = 33;
+  BADGE_TYPE_DARK = 34;
+  BADGE_TYPE_FAIRY = 35;
+  BADGE_SMALL_RATTATA = 36;
+  BADGE_PIKACHU = 37;
+}
+
+enum HoloIapItemCategory {
+        IAP_CATEGORY_NONE = 0;
+        IAP_CATEGORY_BUNDLE = 1;
+        IAP_CATEGORY_ITEMS = 2;
+        IAP_CATEGORY_UPGRADES = 3;
+        IAP_CATEGORY_POKECOINS = 4;
+}
+
+enum CameraInterpolation {
+        CAM_INTERP_CUT = 0;
+        CAM_INTERP_LINEAR = 1;
+        CAM_INTERP_SMOOTH = 2;
+        CAM_INTERP_SMOOTH_ROT_LINEAR_MOVE = 3;
+        CAM_INTERP_DEPENDS = 4;
+}
+
+enum CameraTarget {
+        CAM_TARGET_ATTACKER = 0;
+        CAM_TARGET_ATTACKER_EDGE = 1;
+        CAM_TARGET_ATTACKER_GROUND = 2;
+        CAM_TARGET_DEFENDER = 3;
+        CAM_TARGET_DEFENDER_EDGE = 4;
+        CAM_TARGET_DEFENDER_GROUND = 5;
+        CAM_TARGET_ATTACKER_DEFENDER = 6;
+        CAM_TARGET_ATTACKER_DEFENDER_EDGE = 7;
+        CAM_TARGET_DEFENDER_ATTACKER = 8;
+        CAM_TARGET_DEFENDER_ATTACKER_EDGE = 9;
+        CAM_TARGET_ATTACKER_DEFENDER_MIRROR = 11;
+        CAM_TARGET_SHOULDER_ATTACKER_DEFENDER = 12;
+        CAM_TARGET_SHOULDER_ATTACKER_DEFENDER_MIRROR = 13;
+        CAM_TARGET_ATTACKER_DEFENDER_WORLD = 14;
+}
+
+enum PokemonType {
+  POKEMON_TYPE_NONE = 0;
+  POKEMON_TYPE_NORMAL = 1;
+  POKEMON_TYPE_FIGHTING = 2;
+  POKEMON_TYPE_FLYING = 3;
+  POKEMON_TYPE_POISON = 4;
+  POKEMON_TYPE_GROUND = 5;
+  POKEMON_TYPE_ROCK = 6;
+  POKEMON_TYPE_BUG = 7;
+  POKEMON_TYPE_GHOST = 8;
+  POKEMON_TYPE_STEEL = 9;
+  POKEMON_TYPE_FIRE = 10;
+  POKEMON_TYPE_WATER = 11;
+  POKEMON_TYPE_GRASS = 12;
+  POKEMON_TYPE_ELECTRIC = 13;
+  POKEMON_TYPE_PSYCHIC = 14;
+  POKEMON_TYPE_ICE = 15;
+  POKEMON_TYPE_DRAGON = 16;
+  POKEMON_TYPE_DARK = 17;
+  POKEMON_TYPE_FAIRY = 18;
+}
+
+enum PokemonMovementType {
+  MOVEMENT_STATIC = 0;
+  MOVEMENT_JUMP = 1;
+  MOVEMENT_VERTICAL = 2;
+  MOVEMENT_PSYCHIC = 3;
+  MOVEMENT_ELECTRIC = 4;
+  MOVEMENT_FLYING = 5;
+  MOVEMENT_HOVERING = 6;
+}
+
+enum PokemonClass {
+  NORMAL = 0;
+  LEGENDARY = 1;
+  MYTHIC = 2;
+}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/CatchPokemonResponse.proto b/PokemonGo/RocketAPI/Proto/CatchPokemonResponse.proto
deleted file mode 100644
index 6069440..0000000
--- a/PokemonGo/RocketAPI/Proto/CatchPokemonResponse.proto
+++ /dev/null
@@ -1,38 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-message CatchPokemonResponse {
-  int32 unknown1 = 1;
-  int64 unknown2 = 2;
-  string api_url = 3;
-  Unknown6 unknown6 = 6;
-  Unknown7 unknown7 = 7;
-  repeated Payload payload = 100;
-  string errorMessage = 101; //Should be moved to an error-proto file if error is always 101 field
-
-  message Unknown6 {
-    int32 unknown1 = 1;
-    Unknown2 unknown2 = 2;
-
-    message Unknown2 {
-      bytes unknown1 = 1;
-    }
-
-  }
-
-  message Unknown7 {
-    bytes unknown71 = 1;
-    int64 unknown72 = 2;
-    bytes unknown73 = 3;
-  }
-
-  message Payload {
-	int32 Status = 1;
-	double MissPercent = 2;
-	int32 CapturedPokemonId = 3;
-	int32 Scores = 4;
-}
-
-
-  }
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/EncounterResponse.proto b/PokemonGo/RocketAPI/Proto/EncounterResponse.proto
deleted file mode 100644
index 91485e4..0000000
--- a/PokemonGo/RocketAPI/Proto/EncounterResponse.proto
+++ /dev/null
@@ -1,37 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-message EncounterResponse {
-  int32 unknown1 = 1;
-  int64 unknown2 = 2;
-  string api_url = 3;
-  Unknown6 unknown6 = 6;
-  Unknown7 unknown7 = 7;
-  repeated Payload payload = 100;
-  string errorMessage = 101; //Should be moved to an error-proto file if error is always 101 field
-
-  message Unknown6 {
-    int32 unknown1 = 1;
-    Unknown2 unknown2 = 2;
-
-    message Unknown2 {
-      bytes unknown1 = 1;
-    }
-
-  }
-
-  message Unknown7 {
-    bytes unknown71 = 1;
-    int64 unknown72 = 2;
-    bytes unknown73 = 3;
-  }
-
-  message Payload {
-	int32 Pokemon = 1;
-	int32 Background = 2;
-	int32 Status = 3;
-	int32 CaptureProbability = 4;
-}
-
-  }
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/FortDetailResponse.proto b/PokemonGo/RocketAPI/Proto/FortDetailResponse.proto
deleted file mode 100644
index 79dfced..0000000
--- a/PokemonGo/RocketAPI/Proto/FortDetailResponse.proto
+++ /dev/null
@@ -1,46 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-message FortDetailResponse {
-  int32 unknown1 = 1;
-  int64 unknown2 = 2;
-  string api_url = 3;
-  Unknown6 unknown6 = 6;
-  Unknown7 unknown7 = 7;
-  repeated Payload payload = 100;
-  string errorMessage = 101; //Should be moved to an error-proto file if error is always 101 field
-
-  message Unknown6 {
-    int32 unknown1 = 1;
-    Unknown2 unknown2 = 2;
-
-    message Unknown2 {
-      bytes unknown1 = 1;
-    }
-
-  }
-
-  message Unknown7 {
-    bytes unknown71 = 1;
-    int64 unknown72 = 2;
-    bytes unknown73 = 3;
-  }
-
-  message Payload {
-	string Id = 1;
-	int32 Team = 2;
-	int32 Pokemon = 3;
-	string Name = 4;
-	string ImageUrl = 5;
-	int32 Fp = 6;
-	int32 Stamina = 7;
-	int32 MaxStamina = 8;
-	int32 FortType = 9;
-	int64 Latitude = 10;
-	int64 Longitude = 11;
-	string Description = 12;
-	int32 Modifier = 13;
-}
-
-  }
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/FortSearchResponse.proto b/PokemonGo/RocketAPI/Proto/FortSearchResponse.proto
deleted file mode 100644
index c0e55e1..0000000
--- a/PokemonGo/RocketAPI/Proto/FortSearchResponse.proto
+++ /dev/null
@@ -1,46 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-message FortSearchResponse {
-  int32 unknown1 = 1;
-  int64 unknown2 = 2;
-  string api_url = 3;
-  Unknown6 unknown6 = 6;
-  Unknown7 unknown7 = 7;
-  repeated Payload payload = 100;
-  string errorMessage = 101; //Should be moved to an error-proto file if error is always 101 field
-
-  message Unknown6 {
-    int32 unknown1 = 1;
-    Unknown2 unknown2 = 2;
-
-    message Unknown2 {
-      bytes unknown1 = 1;
-    }
-
-  }
-
-  message Unknown7 {
-    bytes unknown71 = 1;
-    int64 unknown72 = 2;
-    bytes unknown73 = 3;
-  }
-
-  message Payload {
-	int32 Result = 1;
-	repeated Item Items = 2;
-	int32 GemsAwarded = 3;
-	int32 EggPokemon = 4;
-	int32 XpAwarded = 5;
-	int64 CooldownComplete = 6;
-	int32 ChainHackSequenceNumber = 7;
-}
-
-	message Item
-	{
-		int32 Item = 1;
-		int32 ItemCount = 2;
-	}
-
-  }
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/InventoryResponse.proto b/PokemonGo/RocketAPI/Proto/InventoryResponse.proto
deleted file mode 100644
index 0f4cf2e..0000000
--- a/PokemonGo/RocketAPI/Proto/InventoryResponse.proto
+++ /dev/null
@@ -1,344 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-message InventoryResponse {
-  int32 unknown1 = 1;
-  int64 unknown2 = 2;
-  string api_url = 3;
-  Unknown6 unknown6 = 6;
-  Unknown7 unknown7 = 7;
-  repeated Payload payload = 100;
-  string errorMessage = 101; //Should be moved to an error-proto file if error is always 101 field
-
-  message Unknown6 {
-    int32 unknown1 = 1;
-    Unknown2 unknown2 = 2;
-
-    message Unknown2 {
-      bytes unknown1 = 1;
-    }
-
-  }
-
-  message Unknown7 {
-    bytes unknown71 = 1;
-    int64 unknown72 = 2;
-    bytes unknown73 = 3;
-  }
-
-  message Payload {
-	int32 Status = 1;
-	InventoryResponseProto Bag = 2;
-}
-message InventoryResponseProto {
-    int64 timestamp = 2;
-    repeated InventoryItemResponseProto items = 3;
-
-    message InventoryItemResponseProto {
-        int64 timestamp = 1;
-        InventoryItemProto item = 3;
-    }
-}
-
-
-message InventoryItemProto {
-    PokemonProto Pokemon = 1;
-    ItemProto Item = 2;
-    PokedexEntryProto PokedexEntry = 3;
-    PlayerStatsProto PlayerStats = 4;
-    PlayerCurrencyProto PlayerCurrency = 5;
-    PlayerCameraProto PlayerCamera = 6;
-    InventoryUpgradesProto InventoryUpgrades = 7;
-    AppliedItemProto AppliedItem = 8;
-    EggIncubatorProto EggIncubators = 9;
-    PokemonFamilyProto PokemonFamily = 10;
-
-    message ItemProto {
-        int32 Item = 1;
-        int32 Count = 2;
-        bool Unseen = 3;
-    }
-
-    message PokedexEntryProto {
-        int32 PokedexEntryNumber = 1;
-        int32 TimesEncountered = 2;
-        int32 TimesCaptured = 3;
-        int32 EvolutionStonePieces = 4;
-        int32 EvolutionStones = 5;
-    }
-
-    message PlayerStatsProto {
-        int32 Level = 1;
-        int64 Experience = 2;
-        int64 PrevLevelExp = 3;
-        int64 NextLevelExp = 4;
-        float KmWalked = 5;
-        int32 NumPokemonEncountered = 6;
-        int32 NumUniquePokedexEntries = 7;
-        int32 NumPokemonCaptured = 8;
-        int32 NumEvolutions = 9;
-        int32 PokeStopVisits = 10;
-        int32 NumberOfPokeballThrown = 11;
-        int32 NumEggsHatched = 12;
-        int32 BigMagikarpCaught = 13;
-        int32 NumBattleAttackWon = 14;
-        int32 NumBattleAttackTotal = 15;
-        int32 NumBattleDefendedWon = 16;
-        int32 NumBattleTrainingWon = 17;
-        int32 NumBattleTrainingTotal = 18;
-        int32 PrestigeRaisedTotal = 19;
-        int32 PrestigeDroppedTotal = 20;
-        int32 NumPokemonDeployed = 21;
-        int32 SmallRattataCaught = 23;
-    }
-
-    message AppliedItemProto {
-        int32 Item = 1;
-        int32 ItemType = 2;
-        int64 ExpirationMs = 3;
-        int64 AppliedMs = 4;
-    }
-
-    message PlayerCameraProto {
-        bool DefaultCamera = 1;
-    }
-
-
-    message PlayerCurrencyProto {
-        int32 Gems = 1;
-    }
-
-    message InventoryUpgradesProto {
-        int32 InventoryUpgrade = 1;
-    }
-
-    message EggIncubatorProto {
-        string ItemId = 1;
-        ItemProto Item = 2;
-        int32 IncubatorType = 3;
-        int32 UsesRemaining = 4;
-        int64 PokemonId = 5;
-        double StartKmWalked = 6;
-        double TargetKmWalked = 7;
-    }
-
-    message PokemonFamilyProto {
-        int32 FamilyId = 1;
-        int32 Candy = 2;
-    }
-}
-
-// POKEMON TRANSFER
-message TransferPokemonProto {
-    fixed64 PokemonId = 1;
-}
-
-message TransferPokemonOutProto {
-    int32 Status = 1;
-    int32 CandyAwarded = 2;
-}
-
-// EVOLVE
-message EvolvePokemonProto {
-    fixed64 PokemonId = 1;
-}
-
-
-message EvolvePokemonOutProto {
-    int32 Result = 1;
-    PokemonProto EvolvedPokemon = 2;
-    int32 ExpAwarded = 3;
-    int32 CandyAwarded = 4;
-}
-
-	 message PokemonProto {
-	fixed64 Id = 1;
-	PokemonTypes PokemonType = 2;
-	int32 Cp = 3;
-	int32 Stamina = 4;
-	int32 MaxStamina = 5;
-	int32 Move1 = 6;
-	int32 Move2 = 7;
-	int32 DeployedFortId = 8;
-	int32 OwnerName = 9;
-	int32 IsEgg = 10;
-	int32 EggKmWalkedTarget = 11;
-	int32 EggKmWalkedStart = 12;
-	int32 Origin = 14;
-	fixed32 HeightM = 15;
-	fixed32 WeightKg = 16;
-	int32 IndividualAttack = 17;
-	int32 IndividualDefense = 18;
-	int32 IndividualStamina = 19;
-	fixed32 CpMultiplier = 20;
-	int32 Pokeball = 21;
-	fixed64 CapturedS2CellId = 22;
-	int32 BattlesAttacked = 23;
-	int32 BattlesDefended = 24;
-	int32 EggIncubatorId = 25;
-	int64 CreationTimeMs = 26;
-	int32 NumUpgrades = 27;
-	int32 AdditionalCpMultiplier = 28;
-	int32 Favorite = 29;
-	int32 Nickname = 30;
-	int32 FromFort = 31;
-
-	enum PokemonTypes {
-	POKEMON_UNSET = 0;
-	V0001_POKEMON_BULBASAUR = 1;
-	V0002_POKEMON_IVYSAUR = 2;
-	V0003_POKEMON_VENUSAUR = 3;
-	V0004_POKEMON_CHARMANDER = 4;
-	V0005_POKEMON_CHARMELEON = 5;
-	V0006_POKEMON_CHARIZARD = 6;
-	V0007_POKEMON_SQUIRTLE = 7;
-	V0008_POKEMON_WARTORTLE = 8;
-	V0009_POKEMON_BLASTOISE = 9;
-	V0010_POKEMON_CATERPIE = 10;
-	V0011_POKEMON_METAPOD = 11;
-	V0012_POKEMON_BUTTERFREE = 12;
-	V0013_POKEMON_WEEDLE = 13;
-	V0014_POKEMON_KAKUNA = 14;
-	V0015_POKEMON_BEEDRILL = 15;
-	V0016_POKEMON_PIDGEY = 16;
-	V0017_POKEMON_PIDGEOTTO = 17;
-	V0018_POKEMON_PIDGEOT = 18;
-	V0019_POKEMON_RATTATA = 19;
-	V0020_POKEMON_RATICATE = 20;
-	V0021_POKEMON_SPEAROW = 21;
-	V0022_POKEMON_FEAROW = 22;
-	V0023_POKEMON_EKANS = 23;
-	V0024_POKEMON_ARBOK = 24;
-	V0025_POKEMON_PIKACHU = 25;
-	V0026_POKEMON_RAICHU = 26;
-	V0027_POKEMON_SANDSHREW = 27;
-	V0028_POKEMON_SANDSLASH = 28;
-	V0029_POKEMON_NIDORAN = 29;
-	V0030_POKEMON_NIDORINA = 30;
-	V0031_POKEMON_NIDOQUEEN = 31;
-	V0032_POKEMON_NIDORAN = 32;
-	V0033_POKEMON_NIDORINO = 33;
-	V0034_POKEMON_NIDOKING = 34;
-	V0035_POKEMON_CLEFAIRY = 35;
-	V0036_POKEMON_CLEFABLE = 36;
-	V0037_POKEMON_VULPIX = 37;
-	V0038_POKEMON_NINETALES = 38;
-	V0039_POKEMON_JIGGLYPUFF = 39;
-	V0040_POKEMON_WIGGLYTUFF = 40;
-	V0041_POKEMON_ZUBAT = 41;
-	V0042_POKEMON_GOLBAT = 42;
-	V0043_POKEMON_ODDISH = 43;
-	V0044_POKEMON_GLOOM = 44;
-	V0045_POKEMON_VILEPLUME = 45;
-	V0046_POKEMON_PARAS = 46;
-	V0047_POKEMON_PARASECT = 47;
-	V0048_POKEMON_VENONAT = 48;
-	V0049_POKEMON_VENOMOTH = 49;
-	V0050_POKEMON_DIGLETT = 50;
-	V0051_POKEMON_DUGTRIO = 51;
-	V0052_POKEMON_MEOWTH = 52;
-	V0053_POKEMON_PERSIAN = 53;
-	V0054_POKEMON_PSYDUCK = 54;
-	V0055_POKEMON_GOLDUCK = 55;
-	V0056_POKEMON_MANKEY = 56;
-	V0057_POKEMON_PRIMEAPE = 57;
-	V0058_POKEMON_GROWLITHE = 58;
-	V0059_POKEMON_ARCANINE = 59;
-	V0060_POKEMON_POLIWAG = 60;
-	V0061_POKEMON_POLIWHIRL = 61;
-	V0062_POKEMON_POLIWRATH = 62;
-	V0063_POKEMON_ABRA = 63;
-	V0064_POKEMON_KADABRA = 64;
-	V0065_POKEMON_ALAKAZAM = 65;
-	V0066_POKEMON_MACHOP = 66;
-	V0067_POKEMON_MACHOKE = 67;
-	V0068_POKEMON_MACHAMP = 68;
-	V0069_POKEMON_BELLSPROUT = 69;
-	V0070_POKEMON_WEEPINBELL = 70;
-	V0071_POKEMON_VICTREEBEL = 71;
-	V0072_POKEMON_TENTACOOL = 72;
-	V0073_POKEMON_TENTACRUEL = 73;
-	V0074_POKEMON_GEODUDE = 74;
-	V0075_POKEMON_GRAVELER = 75;
-	V0076_POKEMON_GOLEM = 76;
-	V0077_POKEMON_PONYTA = 77;
-	V0078_POKEMON_RAPIDASH = 78;
-	V0079_POKEMON_SLOWPOKE = 79;
-	V0080_POKEMON_SLOWBRO = 80;
-	V0081_POKEMON_MAGNEMITE = 81;
-	V0082_POKEMON_MAGNETON = 82;
-	V0083_POKEMON_FARFETCHD = 83;
-	V0084_POKEMON_DODUO = 84;
-	V0085_POKEMON_DODRIO = 85;
-	V0086_POKEMON_SEEL = 86;
-	V0087_POKEMON_DEWGONG = 87;
-	V0088_POKEMON_GRIMER = 88;
-	V0089_POKEMON_MUK = 89;
-	V0090_POKEMON_SHELLDER = 90;
-	V0091_POKEMON_CLOYSTER = 91;
-	V0092_POKEMON_GASTLY = 92;
-	V0093_POKEMON_HAUNTER = 93;
-	V0094_POKEMON_GENGAR = 94;
-	V0095_POKEMON_ONIX = 95;
-	V0096_POKEMON_DROWZEE = 96;
-	V0097_POKEMON_HYPNO = 97;
-	V0098_POKEMON_KRABBY = 98;
-	V0099_POKEMON_KINGLER = 99;
-	V0100_POKEMON_VOLTORB = 100;
-	V0101_POKEMON_ELECTRODE = 101;
-	V0102_POKEMON_EXEGGCUTE = 102;
-	V0103_POKEMON_EXEGGUTOR = 103;
-	V0104_POKEMON_CUBONE = 104;
-	V0105_POKEMON_MAROWAK = 105;
-	V0106_POKEMON_HITMONLEE = 106;
-	V0107_POKEMON_HITMONCHAN = 107;
-	V0108_POKEMON_LICKITUNG = 108;
-	V0109_POKEMON_KOFFING = 109;
-	V0110_POKEMON_WEEZING = 110;
-	V0111_POKEMON_RHYHORN = 111;
-	V0112_POKEMON_RHYDON = 112;
-	V0113_POKEMON_CHANSEY = 113;
-	V0114_POKEMON_TANGELA = 114;
-	V0115_POKEMON_KANGASKHAN = 115;
-	V0116_POKEMON_HORSEA = 116;
-	V0117_POKEMON_SEADRA = 117;
-	V0118_POKEMON_GOLDEEN = 118;
-	V0119_POKEMON_SEAKING = 119;
-	V0120_POKEMON_STARYU = 120;
-	V0121_POKEMON_STARMIE = 121;
-	V0122_POKEMON_MR_MIME = 122;
-	V0123_POKEMON_SCYTHER = 123;
-	V0124_POKEMON_JYNX = 124;
-	V0125_POKEMON_ELECTABUZZ = 125;
-	V0126_POKEMON_MAGMAR = 126;
-	V0127_POKEMON_PINSIR = 127;
-	V0128_POKEMON_TAUROS = 128;
-	V0129_POKEMON_MAGIKARP = 129;
-	V0130_POKEMON_GYARADOS = 130;
-	V0131_POKEMON_LAPRAS = 131;
-	V0132_POKEMON_DITTO = 132;
-	V0133_POKEMON_EEVEE = 133;
-	V0134_POKEMON_VAPOREON = 134;
-	V0135_POKEMON_JOLTEON = 135;
-	V0136_POKEMON_FLAREON = 136;
-	V0137_POKEMON_PORYGON = 137;
-	V0138_POKEMON_OMANYTE = 138;
-	V0139_POKEMON_OMASTAR = 139;
-	V0140_POKEMON_KABUTO = 140;
-	V0141_POKEMON_KABUTOPS = 141;
-	V0142_POKEMON_AERODACTYL = 142;
-	V0143_POKEMON_SNORLAX = 143;
-	V0144_POKEMON_ARTICUNO = 144;
-	V0145_POKEMON_ZAPDOS = 145;
-	V0146_POKEMON_MOLTRES = 146;
-	V0147_POKEMON_DRATINI = 147;
-	V0148_POKEMON_DRAGONAIR = 148;
-	V0149_POKEMON_DRAGONITE = 149;
-	V0150_POKEMON_MEWTWO = 150;
-	V0151_POKEMON_MEW = 151;
-}
- }
-
-
-  }
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/MapObjectsResponse.proto b/PokemonGo/RocketAPI/Proto/MapObjectsResponse.proto
deleted file mode 100644
index 068f988..0000000
--- a/PokemonGo/RocketAPI/Proto/MapObjectsResponse.proto
+++ /dev/null
@@ -1,281 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-message MapObjectsResponse {
-  int32 unknown1 = 1;
-  int64 unknown2 = 2;
-  string api_url = 3;
-  Unknown6 unknown6 = 6;
-  Unknown7 unknown7 = 7;
-  repeated Payload payload = 100;
-  string errorMessage = 101; //Should be moved to an error-proto file if error is always 101 field
-
-  message Unknown6 {
-    int32 unknown1 = 1;
-    Unknown2 unknown2 = 2;
-
-    message Unknown2 {
-      bytes unknown1 = 1;
-    }
-
-  }
-
-  message Unknown7 {
-    bytes unknown71 = 1;
-    int64 unknown72 = 2;
-    bytes unknown73 = 3;
-  }
-
-  message Payload {
-    repeated ClientMapCell profile = 1;
-	int32 unknownnumber = 2;
-
-  message ClientMapCell {
-    uint64 S2CellId = 1;
-    int64 AsOfTimeMs = 2;
-    repeated PokemonFortProto Fort = 3;
-    repeated ClientSpawnPointProto SpawnPoint = 4;
-    repeated WildPokemonProto WildPokemon = 5;
-    //unknown DeletedObject = 6;
-    bool IsTruncatedList = 7;
-    repeated PokemonSummaryFortProto FortSummary = 8;
-    repeated ClientSpawnPointProto DecimatedSpawnPoint = 9;
-    repeated MapPokemonProto MapPokemon = 10;
-    repeated NearbyPokemonProto NearbyPokemon = 11;
-  }
-
-
-  message WildPokemon {
-    string UniqueId = 1;
-    string PokemonId = 2;
-    // int64 three = 3;
-    // float four = 4;
-    // int32 five = 5;
-    // unknown six = 6;
-    repeated NearbyPokemonProto pokemon = 11;
-  }
-
-
-  message MapPokemonProto {
-    string SpawnpointId = 1;
-    fixed64 EncounterId = 2;
-    PokemonTypes PokedexTypeId = 3;
-    int64 ExpirationTimeMs = 4;
-    double Latitude = 5;
-    double Longitude = 6;
-  }
-
-  message PokemonFortProto {
-    string FortId = 1;
-    int64 LastModifiedMs = 2;
-    double Latitude = 3;
-    double Longitude = 4;
-    int32 Team = 5;
-    int32 GuardPokemonId = 6;
-    int32 GuardPokemonLevel = 7;
-    bool Enabled = 8;
-    // ENUM.Holoholo.Rpc.FortType FortType = 9;
-    int32 FortType = 9;
-    int64 GymPoints = 10;
-    bool IsInBattle = 11;
-    //unknown ActiveFortModifier = 12;
-    MapPokemonProto ActivePokemon = 13;
-    int64 CooldownCompleteMs = 14;
-    // ENUM.Holoholo.Rpc.Sponsor.Types.FortSponsor.Sponsor Sponsor = 15;
-    int32 Sponsor = 15;
-    // ENUM.Holoholo.Rpc.RenderingType.Types.FortRenderingType.RenderingType RenderingType = 16;
-    int32 RenderingType = 16;
-  }
-
-  message PokemonSummaryFortProto {
-    string FortSummaryId = 1;
-    int64 LastModifiedMs = 2;
-    double Latitude = 3;
-    double Longitude = 4;
-  }
-
-  message ClientSpawnPointProto {
-    double Latitude = 2;
-    double Longitude = 3;
-  }
-
-  message WildPokemonProto {
-    uint64 EncounterId = 1;
-    int64 LastModifiedMs = 2;
-    double Latitude = 3;
-    double Longitude = 4;
-    string SpawnPointId = 5;
-    Pokemon pokemon = 7;
-    int32 TimeTillHiddenMs = 11;
-
-    message Pokemon {
-    	uint64 Id = 1;
-    	int32 PokemonId = 2;
-    }
-  }
-
-  message NearbyPokemonProto {
-    int32 PokedexNumber = 1;
-    float DistanceMeters = 2;
-    uint64 EncounterId = 3;
-  }
-
-
-	enum PokemonTypes {
-	POKEMON_UNSET = 0;
-	V0001_POKEMON_BULBASAUR = 1;
-	V0002_POKEMON_IVYSAUR = 2;
-	V0003_POKEMON_VENUSAUR = 3;
-	V0004_POKEMON_CHARMANDER = 4;
-	V0005_POKEMON_CHARMELEON = 5;
-	V0006_POKEMON_CHARIZARD = 6;
-	V0007_POKEMON_SQUIRTLE = 7;
-	V0008_POKEMON_WARTORTLE = 8;
-	V0009_POKEMON_BLASTOISE = 9;
-	V0010_POKEMON_CATERPIE = 10;
-	V0011_POKEMON_METAPOD = 11;
-	V0012_POKEMON_BUTTERFREE = 12;
-	V0013_POKEMON_WEEDLE = 13;
-	V0014_POKEMON_KAKUNA = 14;
-	V0015_POKEMON_BEEDRILL = 15;
-	V0016_POKEMON_PIDGEY = 16;
-	V0017_POKEMON_PIDGEOTTO = 17;
-	V0018_POKEMON_PIDGEOT = 18;
-	V0019_POKEMON_RATTATA = 19;
-	V0020_POKEMON_RATICATE = 20;
-	V0021_POKEMON_SPEAROW = 21;
-	V0022_POKEMON_FEAROW = 22;
-	V0023_POKEMON_EKANS = 23;
-	V0024_POKEMON_ARBOK = 24;
-	V0025_POKEMON_PIKACHU = 25;
-	V0026_POKEMON_RAICHU = 26;
-	V0027_POKEMON_SANDSHREW = 27;
-	V0028_POKEMON_SANDSLASH = 28;
-	V0029_POKEMON_NIDORAN = 29;
-	V0030_POKEMON_NIDORINA = 30;
-	V0031_POKEMON_NIDOQUEEN = 31;
-	V0032_POKEMON_NIDORAN = 32;
-	V0033_POKEMON_NIDORINO = 33;
-	V0034_POKEMON_NIDOKING = 34;
-	V0035_POKEMON_CLEFAIRY = 35;
-	V0036_POKEMON_CLEFABLE = 36;
-	V0037_POKEMON_VULPIX = 37;
-	V0038_POKEMON_NINETALES = 38;
-	V0039_POKEMON_JIGGLYPUFF = 39;
-	V0040_POKEMON_WIGGLYTUFF = 40;
-	V0041_POKEMON_ZUBAT = 41;
-	V0042_POKEMON_GOLBAT = 42;
-	V0043_POKEMON_ODDISH = 43;
-	V0044_POKEMON_GLOOM = 44;
-	V0045_POKEMON_VILEPLUME = 45;
-	V0046_POKEMON_PARAS = 46;
-	V0047_POKEMON_PARASECT = 47;
-	V0048_POKEMON_VENONAT = 48;
-	V0049_POKEMON_VENOMOTH = 49;
-	V0050_POKEMON_DIGLETT = 50;
-	V0051_POKEMON_DUGTRIO = 51;
-	V0052_POKEMON_MEOWTH = 52;
-	V0053_POKEMON_PERSIAN = 53;
-	V0054_POKEMON_PSYDUCK = 54;
-	V0055_POKEMON_GOLDUCK = 55;
-	V0056_POKEMON_MANKEY = 56;
-	V0057_POKEMON_PRIMEAPE = 57;
-	V0058_POKEMON_GROWLITHE = 58;
-	V0059_POKEMON_ARCANINE = 59;
-	V0060_POKEMON_POLIWAG = 60;
-	V0061_POKEMON_POLIWHIRL = 61;
-	V0062_POKEMON_POLIWRATH = 62;
-	V0063_POKEMON_ABRA = 63;
-	V0064_POKEMON_KADABRA = 64;
-	V0065_POKEMON_ALAKAZAM = 65;
-	V0066_POKEMON_MACHOP = 66;
-	V0067_POKEMON_MACHOKE = 67;
-	V0068_POKEMON_MACHAMP = 68;
-	V0069_POKEMON_BELLSPROUT = 69;
-	V0070_POKEMON_WEEPINBELL = 70;
-	V0071_POKEMON_VICTREEBEL = 71;
-	V0072_POKEMON_TENTACOOL = 72;
-	V0073_POKEMON_TENTACRUEL = 73;
-	V0074_POKEMON_GEODUDE = 74;
-	V0075_POKEMON_GRAVELER = 75;
-	V0076_POKEMON_GOLEM = 76;
-	V0077_POKEMON_PONYTA = 77;
-	V0078_POKEMON_RAPIDASH = 78;
-	V0079_POKEMON_SLOWPOKE = 79;
-	V0080_POKEMON_SLOWBRO = 80;
-	V0081_POKEMON_MAGNEMITE = 81;
-	V0082_POKEMON_MAGNETON = 82;
-	V0083_POKEMON_FARFETCHD = 83;
-	V0084_POKEMON_DODUO = 84;
-	V0085_POKEMON_DODRIO = 85;
-	V0086_POKEMON_SEEL = 86;
-	V0087_POKEMON_DEWGONG = 87;
-	V0088_POKEMON_GRIMER = 88;
-	V0089_POKEMON_MUK = 89;
-	V0090_POKEMON_SHELLDER = 90;
-	V0091_POKEMON_CLOYSTER = 91;
-	V0092_POKEMON_GASTLY = 92;
-	V0093_POKEMON_HAUNTER = 93;
-	V0094_POKEMON_GENGAR = 94;
-	V0095_POKEMON_ONIX = 95;
-	V0096_POKEMON_DROWZEE = 96;
-	V0097_POKEMON_HYPNO = 97;
-	V0098_POKEMON_KRABBY = 98;
-	V0099_POKEMON_KINGLER = 99;
-	V0100_POKEMON_VOLTORB = 100;
-	V0101_POKEMON_ELECTRODE = 101;
-	V0102_POKEMON_EXEGGCUTE = 102;
-	V0103_POKEMON_EXEGGUTOR = 103;
-	V0104_POKEMON_CUBONE = 104;
-	V0105_POKEMON_MAROWAK = 105;
-	V0106_POKEMON_HITMONLEE = 106;
-	V0107_POKEMON_HITMONCHAN = 107;
-	V0108_POKEMON_LICKITUNG = 108;
-	V0109_POKEMON_KOFFING = 109;
-	V0110_POKEMON_WEEZING = 110;
-	V0111_POKEMON_RHYHORN = 111;
-	V0112_POKEMON_RHYDON = 112;
-	V0113_POKEMON_CHANSEY = 113;
-	V0114_POKEMON_TANGELA = 114;
-	V0115_POKEMON_KANGASKHAN = 115;
-	V0116_POKEMON_HORSEA = 116;
-	V0117_POKEMON_SEADRA = 117;
-	V0118_POKEMON_GOLDEEN = 118;
-	V0119_POKEMON_SEAKING = 119;
-	V0120_POKEMON_STARYU = 120;
-	V0121_POKEMON_STARMIE = 121;
-	V0122_POKEMON_MR_MIME = 122;
-	V0123_POKEMON_SCYTHER = 123;
-	V0124_POKEMON_JYNX = 124;
-	V0125_POKEMON_ELECTABUZZ = 125;
-	V0126_POKEMON_MAGMAR = 126;
-	V0127_POKEMON_PINSIR = 127;
-	V0128_POKEMON_TAUROS = 128;
-	V0129_POKEMON_MAGIKARP = 129;
-	V0130_POKEMON_GYARADOS = 130;
-	V0131_POKEMON_LAPRAS = 131;
-	V0132_POKEMON_DITTO = 132;
-	V0133_POKEMON_EEVEE = 133;
-	V0134_POKEMON_VAPOREON = 134;
-	V0135_POKEMON_JOLTEON = 135;
-	V0136_POKEMON_FLAREON = 136;
-	V0137_POKEMON_PORYGON = 137;
-	V0138_POKEMON_OMANYTE = 138;
-	V0139_POKEMON_OMASTAR = 139;
-	V0140_POKEMON_KABUTO = 140;
-	V0141_POKEMON_KABUTOPS = 141;
-	V0142_POKEMON_AERODACTYL = 142;
-	V0143_POKEMON_SNORLAX = 143;
-	V0144_POKEMON_ARTICUNO = 144;
-	V0145_POKEMON_ZAPDOS = 145;
-	V0146_POKEMON_MOLTRES = 146;
-	V0147_POKEMON_DRATINI = 147;
-	V0148_POKEMON_DRAGONAIR = 148;
-	V0149_POKEMON_DRAGONITE = 149;
-	V0150_POKEMON_MEWTWO = 150;
-	V0151_POKEMON_MEW = 151;
-}
-
-  }
-  }
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/Payloads.proto b/PokemonGo/RocketAPI/Proto/Payloads.proto
new file mode 100644
index 0000000..3b71b5b
--- /dev/null
+++ b/PokemonGo/RocketAPI/Proto/Payloads.proto
@@ -0,0 +1,909 @@
+syntax = "proto3";
+
+package PokemonGo.RocketAPI.GeneratedCode;
+
+import "AllEnum.proto";
+
+message GetPlayerResponse {
+    int32 unknown1 = 1;
+    Profile profile = 2;
+}
+
+message Profile {
+  int64 creation_time = 1;
+  string username = 2;
+  AllEnum.TeamColor team = 5;
+  bytes tutorial = 7;
+  AvatarDetails avatar = 8;
+  int32 poke_storage = 9;
+  int32 item_storage = 10;
+  DailyBonus daily_bonus = 11;
+  bytes unknown12 = 12;
+  bytes unknown13 = 13;
+  repeated Currency currency = 14;
+}
+
+message DailyBonus {
+  int64 NextCollectTimestampMs = 1;
+  int64 NextDefenderBonusCollectTimestampMs = 2;
+}
+
+message Currency {
+  string type = 1;
+  int32 amount = 2;
+}
+
+message AvatarDetails {
+  int32 unknown2 = 2;
+  int32 unknown3 = 3;
+  int32 unknown9 = 9;
+  int32 unknown10 = 10;
+}
+
+message DownloadSettingsRequest {
+  string hash = 1;
+}
+
+message GetInventoryResponse {
+  bool success = 1;
+  InventoryDelta inventory_delta = 2;
+}
+
+message InventoryDelta {
+  int64 original_timestamp_ms = 1;
+  int64 new_timestamp_ms = 2;
+  repeated InventoryItem inventory_items = 3;
+}
+
+message InventoryItem {
+  int64 modified_timestamp_ms = 1;
+  int64 deleted_item_key = 2;
+  InventoryItemData inventory_item_data = 3;
+}
+
+message InventoryItemData {
+  PokemonData pokemon = 1;
+  Item item = 2;
+  PokedexEntry pokedex_entry = 3;
+  PlayerStats player_stats = 4;
+  PlayerCurrency player_currency = 5;
+  PlayerCamera player_camera = 6;
+  InventoryUpgrades inventory_upgrades = 7;
+  AppliedItems applied_items = 8;
+  EggIncubators egg_incubators = 9;
+  PokemonFamily pokemon_family = 10;
+}
+
+message Pokemon {
+  int32 id = 1;
+  AllEnum.PokemonId pokemon_type = 2;
+  int32 cp = 3;
+  int32 stamina = 4;
+  int32 stamina_max = 5;
+  AllEnum.PokemonMove move_1 = 6;
+  AllEnum.PokemonMove move_2 = 7;
+  int32 deployed_fort_id = 8;
+  string owner_name = 9;
+  bool is_egg = 10;
+  int32 egg_km_walked_target = 11;
+  int32 egg_km_walked_start = 12;
+  int32 origin = 14;
+  float height_m = 15;
+  float weight_kg = 16;
+  int32 individual_attack = 17;
+  int32 individual_defense = 18;
+  int32 individual_stamina = 19;
+  int32 cp_multiplier = 20;
+  int32 pokeball = 21;
+  uint64 captured_cell_id = 22;
+  int32 battles_attacked = 23;
+  int32 battles_defended = 24;
+  int32 egg_incubator_id = 25;
+  uint64 creation_time_ms = 26;
+  int32 num_upgrades = 27;
+  int32 additional_cp_multiplier = 28;
+  int32 favorite = 29;
+  string nickname = 30;
+  int32 from_fort = 31;
+}
+
+message Item {
+  AllEnum.ItemType item = 1;
+  int32 count = 2;
+  bool unseen = 3;
+}
+
+message PokedexEntry {
+  int32 pokedex_entry_number = 1;
+  int32 times_encountered = 2;
+  int32 times_captured = 3;
+  int32 evolution_stone_pieces = 4;
+  int32 evolution_stones = 5;
+}
+
+message PlayerStats {
+  int32 level = 1;
+  int64 experience = 2;
+  int64 prev_level_xp = 3;
+  int64 next_level_xp = 4;
+  float km_walked = 5;
+  int32 pokemons_encountered = 6;
+  int32 unique_pokedex_entries = 7;
+  int32 pokemons_captured = 8;
+  int32 evolutions = 9;
+  int32 poke_stop_visits = 10;
+  int32 pokeballs_thrown = 11;
+  int32 eggs_hatched = 12;
+  int32 big_magikarp_caught = 13;
+  int32 battle_attack_won = 14;
+  int32 battle_attack_total = 15;
+  int32 battle_defended_won = 16;
+  int32 battle_training_won = 17;
+  int32 battle_training_total = 18;
+  int32 prestige_raised_total = 19;
+  int32 prestige_dropped_total = 20;
+  int32 pokemon_deployed = 21;
+  bytes pokemon_caught_by_type = 22; // TODO: repeated PokemonType ??
+  int32 small_rattata_caught = 23;
+}
+
+message PlayerCurrency {
+  int32 gems = 1;
+}
+
+message PlayerCamera {
+  bool is_default_camera = 1;
+}
+
+message InventoryUpgrades {
+  repeated InventoryUpgrade inventory_upgrades = 1;
+}
+
+message InventoryUpgrade {
+  AllEnum.ItemType item = 1;
+  AllEnum.InventoryUpgradeType upgrade_type = 2;
+  int32 additional_storage = 3;
+}
+
+message AppliedItems {
+  AppliedItem item = 4;
+}
+
+message AppliedItem {
+  AllEnum.ItemId item_type = 1;
+  AllEnum.ItemType item_type_category = 2;
+  int64 expire_ms = 3;
+  int64 applied_ms = 4;
+}
+
+message EggIncubators {
+  EggIncubator egg_incubator = 1;
+}
+
+message EggIncubator {
+  string item_id = 1;
+  AllEnum.ItemType item_type = 2;
+  AllEnum.EggIncubatorType incubator_type = 3;
+  int32 uses_remaining = 4;
+  int64 pokemon_id = 5; // TODO: Check if is PokemonType
+  double start_km_walked = 6;
+  double target_km_walked = 7;
+}
+
+message PokemonFamily {
+  AllEnum.PokemonFamilyId family_id = 1;
+  int32 candy = 2;
+}
+
+message GetMapObjectsRequest {
+  bytes cell_id = 1;
+  bytes since_timestamp_ms = 2;
+  double latitude = 3;
+  double longitude = 4;
+}
+
+message GetMapObjectsResponse {
+  repeated MapCell map_cells = 1;
+  AllEnum.MapObjectsStatus status = 2;
+}
+
+message MapCell {
+  // S2 geographic area that the cell covers (http://s2map.com/) (https://code.google.com/archive/p/s2-geometry-library/)
+  uint64 s2_cell_id = 1;
+  int64 current_timestamp_ms = 2;
+  repeated FortData forts = 3;
+  repeated SpawnPoint spawn_points = 4;
+  repeated string deleted_objects = 6;
+  bool is_truncated_list = 7;
+  repeated FortSummary fort_summaries = 8;
+  repeated SpawnPoint decimated_spawn_points = 9;
+
+  // Pokemon within 2 steps or less.
+  repeated WildPokemon wild_pokemons = 5;
+  // Pokemon within 1 step or none.
+  repeated MapPokemon catchable_pokemons = 10;
+  // Pokemon farther away than 2 steps, but still in the area.
+  repeated NearbyPokemon nearby_pokemons = 11;
+}
+
+message FortData {
+  string id = 1;
+  int64 last_modified_timestamp_ms = 2;
+  double latitude = 3;
+  double longitude = 4;
+  bool enabled = 8;
+  AllEnum.FortType type = 9;
+
+  //// Fields related to gyms only
+
+  // Team that owns the gym
+  AllEnum.TeamColor owned_by_team = 5;
+
+  // Highest CP Pokemon at the gym
+  AllEnum.PokemonId guard_pokemon_id = 6;
+  int32 guard_pokemon_cp = 7;
+
+  // Prestigate / experience of the gym
+  int64 gym_points = 10;
+
+  // Whether someone is battling at the gym currently
+  bool is_in_battle = 11;
+
+  //// Fields related to pokestops only
+
+  // Timestamp when the pokestop can be activated again to get items / xp
+  int64 cooldown_complete_timestamp_ms = 14;
+
+  AllEnum.FortSponsor sponsor = 15;
+  AllEnum.FortRenderingType rendering_type = 16;
+
+  // Might represent the type of item applied to the pokestop, right now only lures can be applied
+  bytes active_fort_modifier = 12;
+  FortLureInfo lure_info = 13;
+}
+
+message FortLureInfo {
+  string fort_id = 1;
+  double unknown2 = 2;
+  AllEnum.PokemonId active_pokemon_id = 3;
+  int64 lure_expires_timestamp_ms = 4;
+}
+
+message SpawnPoint {
+  double latitude = 2;
+  double longitude = 3;
+}
+
+message FortSummary {
+  int32 fort_summary_id = 1;
+  int32 last_modified_timestamp_ms = 2;
+  int32 latitude = 3;
+  int32 longitude = 4;
+}
+
+message WildPokemon {
+  fixed64 encounter_id = 1;
+  int64 last_modified_timestamp_ms = 2;
+  double latitude = 3;
+  double longitude = 4;
+  string spawnpoint_id = 5;
+  PokemonData pokemon_data = 7;
+  int32 time_till_hidden_ms = 11;
+}
+
+message PokemonData {
+  fixed64 id = 1;
+  AllEnum.PokemonId pokemon_id = 2;
+  int32 cp = 3;
+  int32 stamina = 4;
+  int32 stamina_max = 5;
+  AllEnum.PokemonMove move_1 = 6;
+  AllEnum.PokemonMove move_2 = 7;
+  int32 deployed_fort_id = 8;
+  string owner_name = 9;
+  bool is_egg = 10;
+  int32 egg_km_walked_target = 11;
+  int32 egg_km_walked_start = 12;
+  int32 origin = 14;
+  float height_m = 15;
+  float weight_kg = 16;
+  int32 individual_attack = 17;
+  int32 individual_defense = 18;
+  int32 individual_stamina = 19;
+  int32 cp_multiplier = 20;
+  int32 pokeball = 21;
+  uint64 captured_cell_id = 22;
+  int32 battles_attacked = 23;
+  int32 battles_defended = 24;
+  int32 egg_incubator_id = 25;
+  uint64 creation_time_ms = 26;
+  int32 num_upgrades = 27;
+  int32 additional_cp_multiplier = 28;
+  int32 favorite = 29;
+  string nickname = 30;
+  int32 from_fort = 31;
+}
+
+message MapPokemon {
+  string spawnpoint_id = 1;
+  fixed64 encounter_id = 2;
+  AllEnum.PokemonId pokemon_id = 3;
+  // After this timestamp, the pokemon will be gone.
+  int64 expiration_timestamp_ms = 4;
+  double latitude = 5;
+  double longitude = 6;
+}
+
+message NearbyPokemon {
+  AllEnum.PokemonId pokemon_id = 1;
+  float distance_in_meters = 2;
+  fixed64 encounter_id = 3;
+}
+
+message DownloadSettingsResponse {
+  string error = 1;
+  string hash = 2;
+  GlobalSettings settings = 3;
+}
+
+message GlobalSettings {
+  FortSettings fort_settings = 2;
+  MapSettings map_settings = 3;
+  LevelSettings level_settings = 4;
+  InventorySettings inventory_settings = 5;
+  string minimum_client_version = 6;
+}
+
+message FortSettings {
+  double interaction_range_meters = 1;
+  int32 max_total_deployed_pokemon = 2;
+  int32 max_player_deployed_pokemon = 3;
+  double deploy_stamina_multiplier = 4;
+  double deploy_attack_multiplier = 5;
+  double far_interaction_range_meters = 6;
+}
+
+message MapSettings {
+  double pokemon_visible_range = 1;
+  double poke_nav_range_meters = 2;
+  double encounter_range_meters = 3;
+  float get_map_objects_min_refresh_seconds = 4;
+  float get_map_objects_max_refresh_seconds = 5;
+  float get_map_objects_min_distance_meters = 6;
+  string google_maps_api_key = 7;
+}
+
+message LevelSettings {
+  double trainer_cp_modifier = 2;
+  double trainer_difficulty_modifier = 3;
+}
+
+message InventorySettings {
+  int32 max_pokemon = 1;
+  int32 max_bag_items = 2;
+  int32 base_pokemon = 3;
+  int32 base_bag_items = 4;
+  int32 base_eggs = 5;
+}
+
+message PlayerUpdateRequest {
+  double latitude = 1;
+  double longitude = 2;
+}
+
+message PlayerUpdateResponse {
+  repeated WildPokemon wild_pokemons = 1;
+  repeated FortData forts = 2;
+  int32 forts_nearby = 3;
+}
+
+message DownloadItemTemplatesRequest {
+	// No message needed.
+}
+
+message DownloadItemTemplatesResponse {
+  bool success = 1;
+  repeated ItemTemplate item_templates = 2;
+  uint64 timestamp_ms = 3;
+
+  message ItemTemplate {
+    string template_id = 1;
+
+    PokemonSettings pokemon_settings = 2;
+    ItemSettings item_settings = 3;
+    MoveSettings move_settings = 4;
+    MoveSequenceSettings move_sequence_settings = 5;
+    TypeEffectiveSettings type_effective = 8;
+    BadgeSettings badge_settings = 10;
+    CameraSettings camera = 11;
+    PlayerLevelSettings player_level = 12;
+    GymLevelSettings gym_level = 13;
+    GymBattleSettings battle_settings = 14;
+    EncounterSettings encounter_settings = 15;
+    IapItemDisplay iap_item_display = 16;
+    IapSettings iap_settings = 17;
+    PokemonUpgradeSettings pokemon_upgrades = 18;
+    EquippedBadgeSettings equipped_badges = 19;
+  }
+}
+
+message UseItemCaptureRequest {
+  AllEnum.ItemId item_id = 1;
+  fixed64 encounter_id = 2;
+  string spawn_point_guid = 3;
+}
+
+message UseItemCaptureResponse {
+  bool success = 1;
+  double item_capture_mult = 2;
+  double item_flee_mult = 3;
+  bool stop_movement = 4;
+  bool stop_attack = 5;
+  bool target_max = 6;
+  bool target_slow = 7;
+}
+
+message ReleasePokemonRequest {
+  fixed64 pokemon_id = 1;
+}
+
+message ReleasePokemonResponse {
+  Result result = 1;
+  int32 candy_awarded = 2;
+
+  enum Result {
+    UNSET = 0;
+    SUCCESS = 1;
+    POKEMON_DEPLOYED = 2;
+    FAILED = 3;
+    ERROR_POKEMON_IS_EGG = 4;
+  }
+}
+
+message GetHatchedEggsRequest {
+  // No message needed.
+}
+
+// Confirm if this is correct, I think that it should be "repeated HatchedEgg hatched_eggs" or something like that.
+message GetHatchedEggsResponse {
+  bool success = 1;
+  repeated uint64 pokemon_id = 2 [packed=true]; // Might be POGOProtos.Enums.Pokemon
+  repeated int32 experience_awarded = 3;
+  repeated int32 candy_awarded = 4;
+  repeated int32 stardust_awarded = 5;
+}
+
+message FortSearchRequest {
+  string fort_id = 1;
+  double player_latitude = 2;
+  double player_longitude = 3;
+  double fort_latitude = 4;
+  double fort_longitude = 5;
+}
+
+message FortSearchResponse {
+  Result result = 1;
+  repeated ItemAward items_awarded = 2;
+  int32 gems_awarded = 3;
+  PokemonData pokemon_data_egg = 4;
+  int32 experience_awarded = 5;
+  int64 cooldown_complete_timestamp_ms = 6;
+  int32 chain_hack_sequence_number = 7;
+
+  message ItemAward {
+    AllEnum.ItemId item_id = 1;
+    int32 item_count = 2;
+  }
+
+  enum Result {
+    NO_RESULT_SET = 0;
+    SUCCESS = 1;
+    OUT_OF_RANGE = 2;
+    IN_COOLDOWN_PERIOD = 3;
+    INVENTORY_FULL = 4;
+  }
+}
+
+message FortDetailsRequest {
+  string fort_id = 1;
+  double latitude = 2;
+  double longitude = 3;
+}
+
+message FortDetailsResponse {
+  string fort_id = 1;
+  AllEnum.TeamColor team_color = 2;
+  PokemonData pokemon_data = 3;
+  string name = 4;
+  repeated string image_urls = 5;
+  int32 fp = 6;
+  int32 stamina = 7;
+  int32 max_stamina = 8;
+  AllEnum.FortType type = 9;
+  double latitude = 10;
+  double longitude = 11;
+  string description = 12;
+  repeated FortModifier modifiers = 13;
+}
+
+message FortModifier {
+  AllEnum.ItemId item_id = 1;
+  int64 expiration_timestamp_ms = 2;
+  string deployer_player_codename = 3;
+}
+
+message EncounterRequest {
+  fixed64 encounter_id = 1;
+  string spawnpoint_id = 2;
+  double player_latitude = 3;
+  double player_longitude = 4;
+}
+
+message EncounterResponse {
+  WildPokemon wild_pokemon = 1;
+  Background background = 2;
+  Status status = 3;
+  CaptureProbability capture_probability = 4;
+
+  enum Background {
+    PARK = 0;
+    DESERT = 1;
+  }
+
+  enum Status {
+    ENCOUNTER_ERROR = 0;
+    ENCOUNTER_SUCCESS = 1;
+    ENCOUNTER_NOT_FOUND = 2;
+    ENCOUNTER_CLOSED = 3;
+    ENCOUNTER_POKEMON_FLED = 4;
+    ENCOUNTER_NOT_IN_RANGE = 5;
+    ENCOUNTER_ALREADY_HAPPENED = 6;
+    POKEMON_INVENTORY_FULL = 7;
+  }
+}
+
+message CaptureProbability {
+  repeated AllEnum.ItemId pokeball_type = 1;
+  repeated float capture_probability = 2;
+  double reticle_difficulty_scale = 12;
+}
+
+message DiskEncounterRequest {
+  fixed64 encounter_id = 1;
+  string fort_id = 2;
+  double player_latitude = 3;
+  double player_longitude = 4;
+}
+
+message DiskEncounterResponse {
+  Result result = 1;
+  PokemonData pokemon_data = 2;
+  CaptureProbability capture_probability = 3;
+
+  enum Result {
+    UNKNOWN = 0;
+    SUCCESS = 1;
+    NOT_AVAILABLE = 2;
+    NOT_IN_RANGE = 3;
+    ENCOUNTER_ALREADY_FINISHED = 4;
+    POKEMON_INVENTORY_FULL = 5;
+  }
+}
+
+message CatchPokemonRequest {
+  fixed64 encounter_id = 1;
+  int32 pokeball = 2;
+  double normalized_reticle_size = 3;
+  string spawn_point_guid = 4;
+  bool hit_pokemon = 5;
+  double spin_modifier = 6;
+  double NormalizedHitPosition = 7;
+}
+
+message CatchPokemonResponse {
+  CatchStatus status = 1;
+  double miss_percent = 2;
+  uint64 captured_pokemon_id = 3;
+  CaptureScore scores = 4;
+
+  enum CatchStatus {
+    CATCH_ERROR = 0;
+    CATCH_SUCCESS = 1;
+    CATCH_ESCAPE = 2;
+    CATCH_FLEE = 3;
+    CATCH_MISSED = 4;
+  }
+}
+
+message CaptureScore {
+  repeated AllEnum.ActivityType activity_type = 1;
+  repeated int32 xp = 2;
+  repeated int32 candy = 3;
+  repeated int32 stardust = 4;
+}
+
+message CheckAwardedBadgesRequest {
+	// No message needed.
+}
+
+// Confirm if this is correct, I think that it should be "repeated AwardedBadge awarded_badges" or something like that.
+message CheckAwardedBadgesResponse {
+  bool success = 1;
+  repeated AllEnum.BadgeType awarded_badges = 2;
+  repeated int32 awarded_badge_levels = 3;
+}
+
+message EquippedBadgeSettings {
+  int64 equip_badge_cooldown_ms = 1;
+  repeated float catch_probability_bonus = 2;
+  repeated float flee_probability_bonus = 3;
+}
+
+message PokemonUpgradeSettings {
+  int32 upgrades_per_level = 1;
+  int32 allowed_levels_above_player = 2;
+  repeated int32 candy_cost = 3;
+  repeated int32 stardust_cost = 4;
+}
+
+message IapSettings {
+  int32 daily_bonus_coins = 1;
+  repeated int32 daily_defender_bonus_per_pokemon = 2;
+  int32 daily_defender_bonus_max_defenders = 3;
+  repeated string daily_defender_bonus_currency = 4;
+  int64 min_time_between_claims_ms = 5;
+  bool daily_bonus_enabled = 6;
+  bool daily_defender_bonus_enabled = 7;
+}
+
+message IapItemDisplay {
+  string sku = 1;
+  AllEnum.HoloIapItemCategory category = 2;
+  int32 sort_order = 3;
+  repeated AllEnum.ItemId item_ids = 4;
+  repeated int32 counts = 5;
+}
+
+message EncounterSettings {
+  float spin_bonus_threshold = 1;
+  float excellent_throw_threshold = 2;
+  float great_throw_threshold = 3;
+  float nice_throw_threshold = 4;
+  int32 milestone_threshold = 5;
+}
+
+message GymBattleSettings {
+  float energy_per_sec = 1;
+  float dodge_energy_cost = 2;
+  float retarget_seconds = 3;
+  float enemy_attack_interval = 4;
+  float attack_server_interval = 5;
+  float round_duration_seconds = 6;
+  float bonus_time_per_ally_seconds = 7;
+  int32 maximum_attackers_per_battle = 8;
+  float same_type_attack_bonus_multiplier = 9;
+  int32 maximum_energy = 10;
+  float energy_delta_per_health_lost = 11;
+  int32 dodge_duration_ms = 12;
+  int32 minimum_player_level = 13;
+  int32 swap_duration_ms = 14;
+}
+
+message GymLevelSettings {
+	repeated int32 required_experience = 1;
+	repeated int32 leader_slots = 2;
+	repeated int32 trainer_slots = 3;
+	repeated int32 search_roll_bonus = 4;
+}
+
+message PlayerLevelSettings {
+	repeated int32 rank_num = 1;
+	repeated int32 required_experience = 2;
+	repeated float cp_multiplier = 3;
+	int32 max_egg_player_level = 4;
+	int32 max_encounter_player_level = 5;
+}
+
+message CameraSettings {
+	string next_camera = 1;
+	repeated AllEnum.CameraInterpolation interpolation = 2;
+	repeated AllEnum.CameraTarget target_type = 3;
+	repeated float ease_in_speed = 4;
+	repeated float east_out_speed = 5;
+	repeated float duration_seconds = 6;
+	repeated float wait_seconds = 7;
+	repeated float transition_seconds = 8;
+	repeated float angle_degree = 9;
+	repeated float angle_offset_degree = 10;
+	repeated float pitch_degree = 11;
+	repeated float pitch_offset_degree = 12;
+	repeated float roll_degree = 13;
+	repeated float distance_meters = 14;
+	repeated float height_percent = 15;
+	repeated float vert_ctr_ratio = 16;
+}
+
+message BadgeSettings {
+  AllEnum.BadgeType badge_type = 1;
+  int32 badge_rank = 2;
+  repeated int32 targets = 3;
+}
+
+message TypeEffectiveSettings {
+  repeated float attack_scalar = 1;
+  AllEnum.PokemonType attack_type = 2;
+}
+
+message MoveSequenceSettings {
+  repeated string sequence = 1;
+}
+
+message MoveSettings {
+  AllEnum.PokemonMovementType movement_id = 1;
+  int32 animation_id = 2;
+  AllEnum.PokemonType pokemon_type = 3;
+  float power = 4;
+  float accuracy_chance = 5;
+  float critical_chance = 6;
+  float heal_scalar = 7;
+  float stamina_loss_scalar = 8;
+  int32 trainer_level_min = 9;
+  int32 trainer_level_max = 10;
+  string vfx_name = 11;
+  int32 duration_ms = 12;
+  int32 damage_window_start_ms = 13;
+  int32 damage_window_end_ms = 14;
+  int32 energy_delta = 15;
+}
+
+message PokemonSettings {
+  AllEnum.PokemonId pokemon_id = 1;
+  float model_scale = 3;
+  AllEnum.PokemonType type = 4;
+  AllEnum.PokemonType type_2 = 5;
+  CameraAttributes camera = 6;
+  EncounterAttributes encounter = 7;
+  StatsAttributes stats = 8;
+  repeated AllEnum.PokemonMove quick_moves = 9;
+  repeated AllEnum.PokemonMove cinematic_moves = 10;
+  repeated float animation_time = 11;
+  repeated AllEnum.PokemonId evolution_ids = 12;
+  int32 evolution_pips = 13;
+  AllEnum.PokemonClass class = 14;
+  float pokedex_height_m = 15;
+  float pokedex_weight_kg = 16;
+  AllEnum.PokemonId parent_pokemon_id = 17;
+  float height_std_dev = 18;
+  float weight_std_dev = 19;
+  float km_distance_to_hatch = 20;
+  AllEnum.PokemonFamilyId family_id = 21;
+  int32 candy_to_evolve = 22;
+}
+
+message CameraAttributes {
+  float disk_radius_m = 1;
+  float cylinder_radius_m = 2;
+  float cylinder_height_m = 3;
+  float cylinder_ground_m = 4;
+  float shoulder_mode_scale = 5;
+}
+
+message EncounterAttributes {
+  float base_capture_rate = 1;
+  float base_flee_rate = 2;
+  float collision_radius_m = 3;
+  float collision_height_m = 4;
+  float collision_head_radius_m = 5;
+  AllEnum.PokemonMovementType movement_type = 6;
+  float movement_timer_s = 7;
+  float jump_time_s = 8;
+  float attack_timer_s = 9;
+}
+
+message StatsAttributes {
+  int32 base_stamina = 1;
+  int32 base_attack = 2;
+  int32 base_defense = 3;
+  int32 dodge_energy_delta = 8;
+}
+
+message ItemSettings {
+  AllEnum.ItemId item_id = 1;
+  AllEnum.ItemType item_type = 2;
+  AllEnum.ItemCategory category = 3;
+  float drop_freq = 4;
+  int32 drop_trainer_level = 5;
+
+  // One of the below attributes will be set in the response, the other will be null.
+
+  PokeballAttributes pokeball = 6;
+  PotionAttributes potion = 7;
+  ReviveAttributes revive = 8;
+  BattleAttributes battle = 9;
+  FoodAttributes food = 10;
+  InventoryUpgradeAttributes inventory_upgrade = 11;
+  ExperienceBoostAttributes xp_boost = 12;
+  IncenseAttributes incense = 13;
+  EggIncubatorAttributes egg_incubator = 14;
+  FortModifierAttributes fort_modifier = 15;
+}
+
+message BattleAttributes {
+  float sta_percent = 1;
+}
+
+message EggIncubatorAttributes {
+  AllEnum.EggIncubatorType incubator_type = 1;
+  int32 uses = 2;
+  float distance_multiplier = 3;
+}
+
+message ExperienceBoostAttributes {
+  float xp_multiplier = 1;
+  int32 boost_duration_ms = 2;
+}
+
+message FoodAttributes {
+  repeated AllEnum.ItemEffect item_effect = 1;
+  repeated float item_effect_percent = 2;
+  float growth_percent = 3;
+}
+
+message FortModifierAttributes {
+  int32 modifier_lifetime_seconds = 1;
+  int32 troy_disk_num_pokemon_spawned = 2;
+}
+
+message IncenseAttributes {
+  int32 incense_lifetime_seconds = 1;
+  repeated AllEnum.PokemonType pokemon_type = 2;
+  float pokemon_incense_type_probability = 3;
+  int32 standing_time_between_encounters_seconds = 4;
+  int32 moving_time_between_encounter_seconds = 5;
+  int32 distance_required_for_shorter_interval_meters = 6;
+  int32 pokemon_attracted_length_sec = 7;
+}
+
+message InventoryUpgradeAttributes {
+  int32 additional_storage = 1;
+  AllEnum.InventoryUpgradeType upgrade_type = 2;
+}
+
+message PokeballAttributes {
+  AllEnum.ItemEffect item_effect = 1;
+  float capture_multi = 2;
+  float capture_multi_effect = 3;
+  float item_effect_mod = 4;
+}
+
+message PotionAttributes {
+  float sta_percent = 1;
+  int32 sta_amount = 2;
+}
+
+message ReviveAttributes {
+  float sta_percent = 1;
+}
+
+// POKEMON TRANSFER
+message TransferPokemon {
+    fixed64 PokemonId = 1;
+}
+
+message TransferPokemonOut {
+    int32 Status = 1;
+    int32 CandyAwarded = 2;
+}
+
+// EVOLVE
+message EvolvePokemon {
+    fixed64 PokemonId = 1;
+}
+
+
+message EvolvePokemonOut {
+    int32 Result = 1;
+    Pokemon EvolvedPokemon = 2;
+    int32 ExpAwarded = 3;
+    int32 CandyAwarded = 4;
+}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/PlayerUpdateResponse.proto b/PokemonGo/RocketAPI/Proto/PlayerUpdateResponse.proto
deleted file mode 100644
index 7da2151..0000000
--- a/PokemonGo/RocketAPI/Proto/PlayerUpdateResponse.proto
+++ /dev/null
@@ -1,9 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-message PlayerUpdateResponse {
-	int32 WildPokemon = 1;
-	int32 Fort = 2;
-	int32 FortsNearby = 3;
- }
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/ProfileResponse.proto b/PokemonGo/RocketAPI/Proto/ProfileResponse.proto
deleted file mode 100644
index dadac8c..0000000
--- a/PokemonGo/RocketAPI/Proto/ProfileResponse.proto
+++ /dev/null
@@ -1,67 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-message ProfileResponse {
-  int32 unknown1 = 1;
-  int64 unknown2 = 2;
-  string api_url = 3;
-  Unknown6 unknown6 = 6;
-  Auth auth = 7;
-  repeated Payload payload = 100;
-  string errorMessage = 101; //Should be moved to an error-proto file if error is always 101 field
-
-  message Unknown6 {
-    int32 unknown1 = 1;
-    Unknown2 unknown2 = 2;
-
-    message Unknown2 {
-      bytes unknown1 = 1;
-    }
-
-  }
-
-  message Auth {
-    bytes unknown71 = 1;
-    int64 timestamp = 2;
-    bytes unknown73 = 3;
-  }
-
-  message Payload {
-    int32 unknown1 = 1;
-    Profile profile = 2;
-	bytes setting = 3;
-
-
-  message Profile {
-    int64 creation_time = 1;
-    string username = 2;
-    int32 team = 5;
-    bytes tutorial = 7;
-    AvatarDetails avatar = 8;
-    int32 poke_storage = 9;
-    int32 item_storage = 10;
-    DailyBonus daily_bonus = 11;
-    bytes unknown12 = 12;
-    bytes unknown13 = 13;
-    repeated Currency currency = 14;
-
-    message AvatarDetails {
-      int32 unknown2 = 2;
-      int32 unknown3 = 3;
-      int32 unknown9 = 9;
-      int32 unknown10 = 10;
-    }
-
-    message DailyBonus {
-      int64 NextCollectTimestampMs = 1;
-      int64 NextDefenderBonusCollectTimestampMs = 2;
-    }
-
-    message Currency {
-      string type = 1;
-      int32 amount = 2;
-    }
-}
-}
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/Response.proto b/PokemonGo/RocketAPI/Proto/Response.proto
new file mode 100644
index 0000000..e2f3aa7
--- /dev/null
+++ b/PokemonGo/RocketAPI/Proto/Response.proto
@@ -0,0 +1,29 @@
+syntax = "proto3";
+
+package PokemonGo.RocketAPI.GeneratedCode;
+
+message Response {
+  int32 unknown1 = 1;
+  int64 unknown2 = 2;
+  string api_url = 3;
+  Unknown6 unknown6 = 6;
+  Auth auth = 7;
+  repeated bytes payload = 100;
+  string errorMessage = 101;
+
+  message Unknown6 {
+    int32 unknown1 = 1;
+    Unknown2 unknown2 = 2;
+
+    message Unknown2 {
+      bytes unknown1 = 1;
+    }
+
+  }
+
+  message Auth {
+    bytes unknown71 = 1;
+    int64 timestamp = 2;
+    bytes unknown73 = 3;
+  }
+}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/SettingsResponse.proto b/PokemonGo/RocketAPI/Proto/SettingsResponse.proto
deleted file mode 100644
index d63c889..0000000
--- a/PokemonGo/RocketAPI/Proto/SettingsResponse.proto
+++ /dev/null
@@ -1,70 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-message SettingsResponse {
-  int32 unknown1 = 1;
-  int64 unknown2 = 2;
-  string api_url = 3;
-  Unknown6 unknown6 = 6;
-  Auth auth = 7;
-  repeated Payload payload = 100;
-  string errorMessage = 101; //Should be moved to an error-proto file if error is always 101 field
-
-  message Unknown6 {
-    int32 unknown1 = 1;
-    Unknown2 unknown2 = 2;
-
-    message Unknown2 {
-      bytes unknown1 = 1;
-    }
-
-  }
-
-  message Auth {
-    bytes unknown71 = 1;
-    int64 timestamp = 2;
-    bytes unknown73 = 3;
-  }
-
-  message Payload {
-    string guid = 2;
-	GlobalSettingsProto settings = 3;
-
-	  message GlobalSettingsProto {
-		FortSettingsProto FortSettings = 2;
-		MapSettingsProto MapSettings = 3;
-		LevelSettingsProto LevelSettings = 4;
-		InventorySettingsProto InventorySettings = 5;
-		string MinimumClientVersion = 6;
-	 }
-	 message FortSettingsProto {
-		double InteractionRangeMeters = 1;
-		int32 MaxTotalDeployedPokemon = 2;
-		int32 MaxPlayerDeployedPokemon = 3;
-		double DeployStaminaMultiplier = 4;
-		double DeployAttackMultiplier = 5;
-		double FarInteractionRangeMeters = 6;
-	 }
-	 message MapSettingsProto {
-		double PokemonVisibleRange = 1;
-		double PokeNavRangeMeters = 2;
-		double EncounterRangeMeters = 3;
-		float GetMapObjectsMinRefreshSeconds = 4;
-		float GetMapObjectsMaxRefreshSeconds = 5;
-		float GetMapObjectsMinDistanceMeters = 6;
-		string GoogleMapsApiKey = 7;
-	 }
-	 message LevelSettingsProto {
-		double TrainerCpModifier = 2;
-		double TrainerDifficultyModifier = 3;
-	 }
-	 message InventorySettingsProto {
-		int32 MaxPokemon = 1;
-		int32 MaxBagItems = 2;
-		int32 BasePokemon = 3;
-		int32 BaseBagItems = 4;
-		int32 BaseEggs = 5;
-	 }
-	}
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Settings.cs b/PokemonGo/RocketAPI/Settings.cs
index 2658099..3d374b7 100644
--- a/PokemonGo/RocketAPI/Settings.cs
+++ b/PokemonGo/RocketAPI/Settings.cs
@@ -14,11 +14,10 @@ namespace PokemonGo.RocketAPI
     {
         //Fetch these settings from intercepting the /auth call in headers and body (only needed for google auth)
         public const AuthType AuthType = Enums.AuthType.Google;
-        public const string PtcUsername = "User";
-        public const string PtcPassword = "alligator2";
+        public const string PtcUsername = "username";
+        public const string PtcPassword = "pw";
         public static string GoogleRefreshToken = string.Empty;
         public const double DefaultLatitude = 10;
         public const double DefaultLongitude = 10;
-        public const MiscEnums.Item UsedBall = MiscEnums.Item.ITEM_POKE_BALL;
     }
 }
You may download the files in Public Git.