// Generated by the Protocol Buffers 3.0 compiler.  DO NOT EDIT!
// Source file "POGOProtos.Networking.Platform.Responses.proto"
// Syntax "Proto3"

import Foundation
import ProtocolBuffers

public extension Pogoprotos.Networking.Platform.Responses {
  public struct PogoprotosNetworkingPlatformResponsesRoot {
    public static let `default` = PogoprotosNetworkingPlatformResponsesRoot()
    public var extensionRegistry:ExtensionRegistry

    init() {
      extensionRegistry = ExtensionRegistry()
      registerAllExtensions(registry: extensionRegistry)
      Pogoprotos.Data.Player.PogoprotosDataPlayerRoot.default.registerAllExtensions(registry: extensionRegistry)
      Pogoprotos.Inventory.Item.PogoprotosInventoryItemRoot.default.registerAllExtensions(registry: extensionRegistry)
    }
    public func registerAllExtensions(registry: ExtensionRegistry) {
    }
  }

  final public class BuyItemAndroidResponse : GeneratedMessage {

    public static func == (lhs: Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse, rhs: Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse) -> Bool {
      if (lhs === rhs) {
        return true
      }
      var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
      fieldCheck = fieldCheck && (lhs.hasResult == rhs.hasResult) && (!lhs.hasResult || lhs.result == rhs.result)
      fieldCheck = fieldCheck && (lhs.hasPurchaseToken == rhs.hasPurchaseToken) && (!lhs.hasPurchaseToken || lhs.purchaseToken == rhs.purchaseToken)
      fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
      return fieldCheck
    }



      //Enum type declaration start 

      // THESE ARE SOMEWHAT SPECULATED, failed may be 2
      public enum Status:Int32, CustomDebugStringConvertible, CustomStringConvertible {
        case unknown = 0
        case success = 1
        public func toString() -> String {
          switch self {
          case .unknown: return "UNKNOWN"
          case .success: return "SUCCESS"
          }
        }
        public static func fromString(str:String) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Status {
          switch str {
          case "UNKNOWN":  return .unknown
          case "SUCCESS":  return .success
          default: throw ProtocolBuffersError.invalidProtocolBuffer("Conversion String to Enum has failed.")
          }
        }
        public var debugDescription:String { return getDescription() }
        public var description:String { return getDescription() }
        private func getDescription() -> String { 
          switch self {
          case .unknown: return ".unknown"
          case .success: return ".success"
          }
        }
      }

      //Enum type declaration end 

    public fileprivate(set) var result:Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Status = Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Status.unknown
    public fileprivate(set) var hasResult:Bool = false
    public fileprivate(set) var purchaseToken:String = ""
    public fileprivate(set) var hasPurchaseToken:Bool = false

    required public init() {
         super.init()
    }
    override public func isInitialized() -> Bool {
     return true
    }
    override public func writeTo(codedOutputStream: CodedOutputStream) throws {
      if hasResult {
        try codedOutputStream.writeEnum(fieldNumber: 1, value:result.rawValue)
      }
      if hasPurchaseToken {
        try codedOutputStream.writeString(fieldNumber: 2, value:purchaseToken)
      }
      try unknownFields.writeTo(codedOutputStream: codedOutputStream)
    }
    override public func serializedSize() -> Int32 {
      var serialize_size:Int32 = memoizedSerializedSize
      if serialize_size != -1 {
       return serialize_size
      }

      serialize_size = 0
      if (hasResult) {
        serialize_size += result.rawValue.computeEnumSize(fieldNumber: 1)
      }
      if hasPurchaseToken {
        serialize_size += purchaseToken.computeStringSize(fieldNumber: 2)
      }
      serialize_size += unknownFields.serializedSize()
      memoizedSerializedSize = serialize_size
      return serialize_size
    }
    public class func getBuilder() -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
      return Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.classBuilder() as! Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder
    }
    public func getBuilder() -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
      return classBuilder() as! Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder
    }
    override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
      return Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder()
    }
    override public func classBuilder() -> ProtocolBuffersMessageBuilder {
      return Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder()
    }
    public func toBuilder() throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
      return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.builderWithPrototype(prototype:self)
    }
    public class func builderWithPrototype(prototype:Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
      return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder().mergeFrom(other:prototype)
    }
    override public func encode() throws -> Dictionary<String,Any> {
      guard isInitialized() else {
        throw ProtocolBuffersError.invalidProtocolBuffer("Uninitialized Message")
      }

      var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
      if hasResult {
        jsonMap["result"] = result.toString()
      }
      if hasPurchaseToken {
        jsonMap["purchaseToken"] = purchaseToken
      }
      return jsonMap
    }
    override class public func decode(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse {
      return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder.decodeToBuilder(jsonMap:jsonMap).build()
    }
    override class public func fromJSON(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse {
      return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder.fromJSONToBuilder(data:data).build()
    }
    override public func getDescription(indent:String) throws -> String {
      var output = ""
      if (hasResult) {
        output += "\(indent) result: \(result.description)\n"
      }
      if hasPurchaseToken {
        output += "\(indent) purchaseToken: \(purchaseToken) \n"
      }
      output += unknownFields.getDescription(indent: indent)
      return output
    }
    override public var hashValue:Int {
        get {
            var hashCode:Int = 7
            if hasResult {
               hashCode = (hashCode &* 31) &+ Int(result.rawValue)
            }
            if hasPurchaseToken {
               hashCode = (hashCode &* 31) &+ purchaseToken.hashValue
            }
            hashCode = (hashCode &* 31) &+  unknownFields.hashValue
            return hashCode
        }
    }


    //Meta information declaration start

    override public class func className() -> String {
        return "Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse"
    }
    override public func className() -> String {
        return "Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse"
    }
    //Meta information declaration end

    final public class Builder : GeneratedMessageBuilder {
      fileprivate var builderResult:Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse = Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse()
      public func getMessage() -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse {
          return builderResult
      }

      required override public init () {
         super.init()
      }
        public var hasResult:Bool{
            get {
                return builderResult.hasResult
            }
        }
        public var result:Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Status {
            get {
                return builderResult.result
            }
            set (value) {
                builderResult.hasResult = true
                builderResult.result = value
            }
        }
      @discardableResult
        public func setResult(_ value:Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Status) -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
          self.result = value
          return self
        }
      @discardableResult
        public func clearResult() -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
           builderResult.hasResult = false
           builderResult.result = .unknown
           return self
        }
      public var hasPurchaseToken:Bool {
           get {
                return builderResult.hasPurchaseToken
           }
      }
      public var purchaseToken:String {
           get {
                return builderResult.purchaseToken
           }
           set (value) {
               builderResult.hasPurchaseToken = true
               builderResult.purchaseToken = value
           }
      }
      @discardableResult
      public func setPurchaseToken(_ value:String) -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
        self.purchaseToken = value
        return self
      }
      @discardableResult
      public func clearPurchaseToken() -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder{
           builderResult.hasPurchaseToken = false
           builderResult.purchaseToken = ""
           return self
      }
      override public var internalGetResult:GeneratedMessage {
           get {
              return builderResult
           }
      }
      @discardableResult
      override public func clear() -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
        builderResult = Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse()
        return self
      }
      override public func clone() throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
        return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.builderWithPrototype(prototype:builderResult)
      }
      override public func build() throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse {
           try checkInitialized()
           return buildPartial()
      }
      public func buildPartial() -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse {
        let returnMe:Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse = builderResult
        return returnMe
      }
      @discardableResult
      public func mergeFrom(other:Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
        if other == Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse() {
         return self
        }
        if other.hasResult {
             result = other.result
        }
        if other.hasPurchaseToken {
             purchaseToken = other.purchaseToken
        }
        _ = try merge(unknownField: other.unknownFields)
        return self
      }
      @discardableResult
      override public func mergeFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
           return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
      }
      @discardableResult
      override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
        let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(copyFrom:self.unknownFields)
        while (true) {
          let protobufTag = try codedInputStream.readTag()
          switch protobufTag {
          case 0: 
            self.unknownFields = try unknownFieldsBuilder.build()
            return self

          case 8:
            let valueIntresult = try codedInputStream.readEnum()
            if let enumsresult = Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Status(rawValue:valueIntresult){
                 result = enumsresult
            } else {
                 _ = try unknownFieldsBuilder.mergeVarintField(fieldNumber: 1, value:Int64(valueIntresult))
            }

          case 18:
            purchaseToken = try codedInputStream.readString()

          default:
            if (!(try parse(codedInputStream:codedInputStream, unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
               unknownFields = try unknownFieldsBuilder.build()
               return self
            }
          }
        }
      }
      class public func decodeToBuilder(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
        let resultDecodedBuilder = Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder()
        if let jsonValueResult = jsonMap["result"] as? String {
          resultDecodedBuilder.result = try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Status.fromString(str: jsonValueResult)
        }
        if let jsonValuePurchaseToken = jsonMap["purchaseToken"] as? String {
          resultDecodedBuilder.purchaseToken = jsonValuePurchaseToken
        }
        return resultDecodedBuilder
      }
      override class public func fromJSONToBuilder(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder {
        let jsonData = try JSONSerialization.jsonObject(with:data, options: JSONSerialization.ReadingOptions(rawValue: 0))
        guard let jsDataCast = jsonData as? Dictionary<String,Any> else {
          throw ProtocolBuffersError.invalidProtocolBuffer("Invalid JSON data")
        }
        return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder.decodeToBuilder(jsonMap:jsDataCast)
      }
    }

  }

  final public class BuyItemPokeCoinsResponse : GeneratedMessage {

    public static func == (lhs: Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse, rhs: Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse) -> Bool {
      if (lhs === rhs) {
        return true
      }
      var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
      fieldCheck = fieldCheck && (lhs.hasResult == rhs.hasResult) && (!lhs.hasResult || lhs.result == rhs.result)
      fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
      return fieldCheck
    }



      //Enum type declaration start 

      // THESE ARE SOMEWHAT SPECULATED, should be a NOT ENOUGH ROOM status too for bag being full somewhere.
      public enum Status:Int32, CustomDebugStringConvertible, CustomStringConvertible {
        case unknown = 0
        case success = 1
        case notEnoughPokecoins = 3
        public func toString() -> String {
          switch self {
          case .unknown: return "UNKNOWN"
          case .success: return "SUCCESS"
          case .notEnoughPokecoins: return "NOT_ENOUGH_POKECOINS"
          }
        }
        public static func fromString(str:String) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Status {
          switch str {
          case "UNKNOWN":  return .unknown
          case "SUCCESS":  return .success
          case "NOT_ENOUGH_POKECOINS":  return .notEnoughPokecoins
          default: throw ProtocolBuffersError.invalidProtocolBuffer("Conversion String to Enum has failed.")
          }
        }
        public var debugDescription:String { return getDescription() }
        public var description:String { return getDescription() }
        private func getDescription() -> String { 
          switch self {
          case .unknown: return ".unknown"
          case .success: return ".success"
          case .notEnoughPokecoins: return ".notEnoughPokecoins"
          }
        }
      }

      //Enum type declaration end 

    public fileprivate(set) var result:Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Status = Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Status.unknown
    public fileprivate(set) var hasResult:Bool = false
    required public init() {
         super.init()
    }
    override public func isInitialized() -> Bool {
     return true
    }
    override public func writeTo(codedOutputStream: CodedOutputStream) throws {
      if hasResult {
        try codedOutputStream.writeEnum(fieldNumber: 1, value:result.rawValue)
      }
      try unknownFields.writeTo(codedOutputStream: codedOutputStream)
    }
    override public func serializedSize() -> Int32 {
      var serialize_size:Int32 = memoizedSerializedSize
      if serialize_size != -1 {
       return serialize_size
      }

      serialize_size = 0
      if (hasResult) {
        serialize_size += result.rawValue.computeEnumSize(fieldNumber: 1)
      }
      serialize_size += unknownFields.serializedSize()
      memoizedSerializedSize = serialize_size
      return serialize_size
    }
    public class func getBuilder() -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
      return Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.classBuilder() as! Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder
    }
    public func getBuilder() -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
      return classBuilder() as! Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder
    }
    override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
      return Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder()
    }
    override public func classBuilder() -> ProtocolBuffersMessageBuilder {
      return Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder()
    }
    public func toBuilder() throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
      return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.builderWithPrototype(prototype:self)
    }
    public class func builderWithPrototype(prototype:Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
      return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder().mergeFrom(other:prototype)
    }
    override public func encode() throws -> Dictionary<String,Any> {
      guard isInitialized() else {
        throw ProtocolBuffersError.invalidProtocolBuffer("Uninitialized Message")
      }

      var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
      if hasResult {
        jsonMap["result"] = result.toString()
      }
      return jsonMap
    }
    override class public func decode(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse {
      return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder.decodeToBuilder(jsonMap:jsonMap).build()
    }
    override class public func fromJSON(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse {
      return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder.fromJSONToBuilder(data:data).build()
    }
    override public func getDescription(indent:String) throws -> String {
      var output = ""
      if (hasResult) {
        output += "\(indent) result: \(result.description)\n"
      }
      output += unknownFields.getDescription(indent: indent)
      return output
    }
    override public var hashValue:Int {
        get {
            var hashCode:Int = 7
            if hasResult {
               hashCode = (hashCode &* 31) &+ Int(result.rawValue)
            }
            hashCode = (hashCode &* 31) &+  unknownFields.hashValue
            return hashCode
        }
    }


    //Meta information declaration start

    override public class func className() -> String {
        return "Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse"
    }
    override public func className() -> String {
        return "Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse"
    }
    //Meta information declaration end

    final public class Builder : GeneratedMessageBuilder {
      fileprivate var builderResult:Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse = Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse()
      public func getMessage() -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse {
          return builderResult
      }

      required override public init () {
         super.init()
      }
        public var hasResult:Bool{
            get {
                return builderResult.hasResult
            }
        }
        public var result:Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Status {
            get {
                return builderResult.result
            }
            set (value) {
                builderResult.hasResult = true
                builderResult.result = value
            }
        }
      @discardableResult
        public func setResult(_ value:Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Status) -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
          self.result = value
          return self
        }
      @discardableResult
        public func clearResult() -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
           builderResult.hasResult = false
           builderResult.result = .unknown
           return self
        }
      override public var internalGetResult:GeneratedMessage {
           get {
              return builderResult
           }
      }
      @discardableResult
      override public func clear() -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
        builderResult = Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse()
        return self
      }
      override public func clone() throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
        return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.builderWithPrototype(prototype:builderResult)
      }
      override public func build() throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse {
           try checkInitialized()
           return buildPartial()
      }
      public func buildPartial() -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse {
        let returnMe:Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse = builderResult
        return returnMe
      }
      @discardableResult
      public func mergeFrom(other:Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
        if other == Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse() {
         return self
        }
        if other.hasResult {
             result = other.result
        }
        _ = try merge(unknownField: other.unknownFields)
        return self
      }
      @discardableResult
      override public func mergeFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
           return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
      }
      @discardableResult
      override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
        let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(copyFrom:self.unknownFields)
        while (true) {
          let protobufTag = try codedInputStream.readTag()
          switch protobufTag {
          case 0: 
            self.unknownFields = try unknownFieldsBuilder.build()
            return self

          case 8:
            let valueIntresult = try codedInputStream.readEnum()
            if let enumsresult = Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Status(rawValue:valueIntresult){
                 result = enumsresult
            } else {
                 _ = try unknownFieldsBuilder.mergeVarintField(fieldNumber: 1, value:Int64(valueIntresult))
            }

          default:
            if (!(try parse(codedInputStream:codedInputStream, unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
               unknownFields = try unknownFieldsBuilder.build()
               return self
            }
          }
        }
      }
      class public func decodeToBuilder(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
        let resultDecodedBuilder = Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder()
        if let jsonValueResult = jsonMap["result"] as? String {
          resultDecodedBuilder.result = try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Status.fromString(str: jsonValueResult)
        }
        return resultDecodedBuilder
      }
      override class public func fromJSONToBuilder(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder {
        let jsonData = try JSONSerialization.jsonObject(with:data, options: JSONSerialization.ReadingOptions(rawValue: 0))
        guard let jsDataCast = jsonData as? Dictionary<String,Any> else {
          throw ProtocolBuffersError.invalidProtocolBuffer("Invalid JSON data")
        }
        return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder.decodeToBuilder(jsonMap:jsDataCast)
      }
    }

  }

  final public class GetStoreItemsResponse : GeneratedMessage {

    public static func == (lhs: Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse, rhs: Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse) -> Bool {
      if (lhs === rhs) {
        return true
      }
      var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
      fieldCheck = fieldCheck && (lhs.hasStatus == rhs.hasStatus) && (!lhs.hasStatus || lhs.status == rhs.status)
      fieldCheck = fieldCheck && (lhs.items == rhs.items)
      fieldCheck = fieldCheck && (lhs.playerCurrencies == rhs.playerCurrencies)
      fieldCheck = fieldCheck && (lhs.hasUnknown4 == rhs.hasUnknown4) && (!lhs.hasUnknown4 || lhs.unknown4 == rhs.unknown4)
      fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
      return fieldCheck
    }



    //Nested type declaration start

      final public class StoreItem : GeneratedMessage {

        public static func == (lhs: Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem, rhs: Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem) -> Bool {
          if (lhs === rhs) {
            return true
          }
          var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
          fieldCheck = fieldCheck && (lhs.hasItemId == rhs.hasItemId) && (!lhs.hasItemId || lhs.itemId == rhs.itemId)
          fieldCheck = fieldCheck && (lhs.hasIsIap == rhs.hasIsIap) && (!lhs.hasIsIap || lhs.isIap == rhs.isIap)
          fieldCheck = fieldCheck && (lhs.hasCurrencyToBuy == rhs.hasCurrencyToBuy) && (!lhs.hasCurrencyToBuy || lhs.currencyToBuy == rhs.currencyToBuy)
          fieldCheck = fieldCheck && (lhs.hasYieldsCurrency == rhs.hasYieldsCurrency) && (!lhs.hasYieldsCurrency || lhs.yieldsCurrency == rhs.yieldsCurrency)
          fieldCheck = fieldCheck && (lhs.hasYieldsItem == rhs.hasYieldsItem) && (!lhs.hasYieldsItem || lhs.yieldsItem == rhs.yieldsItem)
          fieldCheck = fieldCheck && (lhs.hasTags == rhs.hasTags) && (!lhs.hasTags || lhs.tags == rhs.tags)
          fieldCheck = fieldCheck && (lhs.hasUnknown7 == rhs.hasUnknown7) && (!lhs.hasUnknown7 || lhs.unknown7 == rhs.unknown7)
          fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
          return fieldCheck
        }



        //Nested type declaration start

          final public class TagsEntry : GeneratedMessage {

            public static func == (lhs: Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry, rhs: Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry) -> Bool {
              if (lhs === rhs) {
                return true
              }
              var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
              fieldCheck = fieldCheck && (lhs.hasKey == rhs.hasKey) && (!lhs.hasKey || lhs.key == rhs.key)
              fieldCheck = fieldCheck && (lhs.hasValue == rhs.hasValue) && (!lhs.hasValue || lhs.value == rhs.value)
              fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
              return fieldCheck
            }

            public fileprivate(set) var key:String = ""
            public fileprivate(set) var hasKey:Bool = false

            public fileprivate(set) var value:String = ""
            public fileprivate(set) var hasValue:Bool = false

            required public init() {
                 super.init()
            }
            override public func isInitialized() -> Bool {
             return true
            }
            override public func writeTo(codedOutputStream: CodedOutputStream) throws {
              if hasKey {
                try codedOutputStream.writeString(fieldNumber: 1, value:key)
              }
              if hasValue {
                try codedOutputStream.writeString(fieldNumber: 2, value:value)
              }
              try unknownFields.writeTo(codedOutputStream: codedOutputStream)
            }
            override public func serializedSize() -> Int32 {
              var serialize_size:Int32 = memoizedSerializedSize
              if serialize_size != -1 {
               return serialize_size
              }

              serialize_size = 0
              if hasKey {
                serialize_size += key.computeStringSize(fieldNumber: 1)
              }
              if hasValue {
                serialize_size += value.computeStringSize(fieldNumber: 2)
              }
              serialize_size += unknownFields.serializedSize()
              memoizedSerializedSize = serialize_size
              return serialize_size
            }
            public class func getBuilder() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
              return Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.classBuilder() as! Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder
            }
            public func getBuilder() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
              return classBuilder() as! Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder
            }
            override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
              return Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder()
            }
            override public func classBuilder() -> ProtocolBuffersMessageBuilder {
              return Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder()
            }
            public func toBuilder() throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
              return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.builderWithPrototype(prototype:self)
            }
            public class func builderWithPrototype(prototype:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
              return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder().mergeFrom(other:prototype)
            }
            override public func encode() throws -> Dictionary<String,Any> {
              guard isInitialized() else {
                throw ProtocolBuffersError.invalidProtocolBuffer("Uninitialized Message")
              }

              var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
              if hasKey {
                jsonMap["key"] = key
              }
              if hasValue {
                jsonMap["value"] = value
              }
              return jsonMap
            }
            override class public func decode(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry {
              return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder.decodeToBuilder(jsonMap:jsonMap).build()
            }
            override class public func fromJSON(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry {
              return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder.fromJSONToBuilder(data:data).build()
            }
            override public func getDescription(indent:String) throws -> String {
              var output = ""
              if hasKey {
                output += "\(indent) key: \(key) \n"
              }
              if hasValue {
                output += "\(indent) value: \(value) \n"
              }
              output += unknownFields.getDescription(indent: indent)
              return output
            }
            override public var hashValue:Int {
                get {
                    var hashCode:Int = 7
                    if hasKey {
                       hashCode = (hashCode &* 31) &+ key.hashValue
                    }
                    if hasValue {
                       hashCode = (hashCode &* 31) &+ value.hashValue
                    }
                    hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                    return hashCode
                }
            }


            //Meta information declaration start

            override public class func className() -> String {
                return "Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry"
            }
            override public func className() -> String {
                return "Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry"
            }
            //Meta information declaration end

            final public class Builder : GeneratedMessageBuilder {
              fileprivate var builderResult:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry()
              public func getMessage() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry {
                  return builderResult
              }

              required override public init () {
                 super.init()
              }
              public var hasKey:Bool {
                   get {
                        return builderResult.hasKey
                   }
              }
              public var key:String {
                   get {
                        return builderResult.key
                   }
                   set (value) {
                       builderResult.hasKey = true
                       builderResult.key = value
                   }
              }
              @discardableResult
              public func setKey(_ value:String) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
                self.key = value
                return self
              }
              @discardableResult
              public func clearKey() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder{
                   builderResult.hasKey = false
                   builderResult.key = ""
                   return self
              }
              public var hasValue:Bool {
                   get {
                        return builderResult.hasValue
                   }
              }
              public var value:String {
                   get {
                        return builderResult.value
                   }
                   set (value) {
                       builderResult.hasValue = true
                       builderResult.value = value
                   }
              }
              @discardableResult
              public func setValue(_ value:String) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
                self.value = value
                return self
              }
              @discardableResult
              public func clearValue() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder{
                   builderResult.hasValue = false
                   builderResult.value = ""
                   return self
              }
              override public var internalGetResult:GeneratedMessage {
                   get {
                      return builderResult
                   }
              }
              @discardableResult
              override public func clear() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
                builderResult = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry()
                return self
              }
              override public func clone() throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
                return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.builderWithPrototype(prototype:builderResult)
              }
              override public func build() throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry {
                   try checkInitialized()
                   return buildPartial()
              }
              public func buildPartial() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry {
                let returnMe:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry = builderResult
                return returnMe
              }
              @discardableResult
              public func mergeFrom(other:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
                if other == Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry() {
                 return self
                }
                if other.hasKey {
                     key = other.key
                }
                if other.hasValue {
                     value = other.value
                }
                _ = try merge(unknownField: other.unknownFields)
                return self
              }
              @discardableResult
              override public func mergeFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
                   return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
              }
              @discardableResult
              override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
                let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(copyFrom:self.unknownFields)
                while (true) {
                  let protobufTag = try codedInputStream.readTag()
                  switch protobufTag {
                  case 0: 
                    self.unknownFields = try unknownFieldsBuilder.build()
                    return self

                  case 10:
                    key = try codedInputStream.readString()

                  case 18:
                    value = try codedInputStream.readString()

                  default:
                    if (!(try parse(codedInputStream:codedInputStream, unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                       unknownFields = try unknownFieldsBuilder.build()
                       return self
                    }
                  }
                }
              }
              class public func decodeToBuilder(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
                let resultDecodedBuilder = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder()
                if let jsonValueKey = jsonMap["key"] as? String {
                  resultDecodedBuilder.key = jsonValueKey
                }
                if let jsonValueValue = jsonMap["value"] as? String {
                  resultDecodedBuilder.value = jsonValueValue
                }
                return resultDecodedBuilder
              }
              override class public func fromJSONToBuilder(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder {
                let jsonData = try JSONSerialization.jsonObject(with:data, options: JSONSerialization.ReadingOptions(rawValue: 0))
                guard let jsDataCast = jsonData as? Dictionary<String,Any> else {
                  throw ProtocolBuffersError.invalidProtocolBuffer("Invalid JSON data")
                }
                return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder.decodeToBuilder(jsonMap:jsDataCast)
              }
            }

          }

        //Nested type declaration end

        // Internal ID (probably for Google Play/App Store) example: "pgorelease.incenseordinary.1"
        public fileprivate(set) var itemId:String = ""
        public fileprivate(set) var hasItemId:Bool = false

        // If true, this item is bought with real currency (USD, etc.) through the Play/App Store instead of Pokecoins
        public fileprivate(set) var isIap:Bool = false
        public fileprivate(set) var hasIsIap:Bool = false

        public fileprivate(set) var currencyToBuy:Pogoprotos.Data.Player.Currency!
        public fileprivate(set) var hasCurrencyToBuy:Bool = false
        public fileprivate(set) var yieldsCurrency:Pogoprotos.Data.Player.Currency!
        public fileprivate(set) var hasYieldsCurrency:Bool = false
        public fileprivate(set) var yieldsItem:Pogoprotos.Inventory.Item.ItemData!
        public fileprivate(set) var hasYieldsItem:Bool = false
        public fileprivate(set) var hasTags:Bool = false
        public fileprivate(set) var tags:Dictionary<String,String> = Dictionary<String,String>()

        // Possibly something to toggle visibility in the store/purchasibility?
        public fileprivate(set) var unknown7:Int32 = Int32(0)
        public fileprivate(set) var hasUnknown7:Bool = false

        required public init() {
             super.init()
        }
        override public func isInitialized() -> Bool {
         return true
        }
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
          if hasItemId {
            try codedOutputStream.writeString(fieldNumber: 1, value:itemId)
          }
          if hasIsIap {
            try codedOutputStream.writeBool(fieldNumber: 2, value:isIap)
          }
          if hasCurrencyToBuy {
            try codedOutputStream.writeMessage(fieldNumber: 3, value:currencyToBuy)
          }
          if hasYieldsCurrency {
            try codedOutputStream.writeMessage(fieldNumber: 4, value:yieldsCurrency)
          }
          if hasYieldsItem {
            try codedOutputStream.writeMessage(fieldNumber: 5, value:yieldsItem)
          }
          if hasTags {
              for (keyTags, valueTags) in tags {
                  let valueOfTags = try! Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder().setKey(keyTags).setValue(valueTags).build()
                  try codedOutputStream.writeMessage(fieldNumber: 6, value:valueOfTags)
              }
          }
          if hasUnknown7 {
            try codedOutputStream.writeInt32(fieldNumber: 7, value:unknown7)
          }
          try unknownFields.writeTo(codedOutputStream: codedOutputStream)
        }
        override public func serializedSize() -> Int32 {
          var serialize_size:Int32 = memoizedSerializedSize
          if serialize_size != -1 {
           return serialize_size
          }

          serialize_size = 0
          if hasItemId {
            serialize_size += itemId.computeStringSize(fieldNumber: 1)
          }
          if hasIsIap {
            serialize_size += isIap.computeBoolSize(fieldNumber: 2)
          }
          if hasCurrencyToBuy {
              if let varSizecurrencyToBuy = currencyToBuy?.computeMessageSize(fieldNumber: 3) {
                  serialize_size += varSizecurrencyToBuy
              }
          }
          if hasYieldsCurrency {
              if let varSizeyieldsCurrency = yieldsCurrency?.computeMessageSize(fieldNumber: 4) {
                  serialize_size += varSizeyieldsCurrency
              }
          }
          if hasYieldsItem {
              if let varSizeyieldsItem = yieldsItem?.computeMessageSize(fieldNumber: 5) {
                  serialize_size += varSizeyieldsItem
              }
          }
          if hasTags {
              for (keyTags, valueTags) in tags {
                  let valueOfTags = try! Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder().setKey(keyTags).setValue(valueTags).build()
                  serialize_size += valueOfTags.computeMessageSize(fieldNumber: 6)
              }
          }
          if hasUnknown7 {
            serialize_size += unknown7.computeInt32Size(fieldNumber: 7)
          }
          serialize_size += unknownFields.serializedSize()
          memoizedSerializedSize = serialize_size
          return serialize_size
        }
        public class func getBuilder() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
          return Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.classBuilder() as! Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder
        }
        public func getBuilder() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
          return classBuilder() as! Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
          return Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
          return Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder()
        }
        public func toBuilder() throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
          return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
          return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
          guard isInitialized() else {
            throw ProtocolBuffersError.invalidProtocolBuffer("Uninitialized Message")
          }

          var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
          if hasItemId {
            jsonMap["itemId"] = itemId
          }
          if hasIsIap {
            jsonMap["isIap"] = isIap
          }
          if hasCurrencyToBuy {
            jsonMap["currencyToBuy"] = try currencyToBuy.encode()
          }
          if hasYieldsCurrency {
            jsonMap["yieldsCurrency"] = try yieldsCurrency.encode()
          }
          if hasYieldsItem {
            jsonMap["yieldsItem"] = try yieldsItem.encode()
          }
          if hasTags {
              var mapTags = Dictionary<String, String>()
              for (keyTags, valueTags) in tags {
                  mapTags["\(keyTags)"] = valueTags
              }
              jsonMap["tags"] = mapTags
          }
          if hasUnknown7 {
            jsonMap["unknown7"] = Int(unknown7)
          }
          return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem {
          return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem {
          return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder.fromJSONToBuilder(data:data).build()
        }
        override public func getDescription(indent:String) throws -> String {
          var output = ""
          if hasItemId {
            output += "\(indent) itemId: \(itemId) \n"
          }
          if hasIsIap {
            output += "\(indent) isIap: \(isIap) \n"
          }
          if hasCurrencyToBuy {
            output += "\(indent) currencyToBuy {\n"
            if let outDescCurrencyToBuy = currencyToBuy {
              output += try outDescCurrencyToBuy.getDescription(indent: "\(indent)  ")
            }
            output += "\(indent) }\n"
          }
          if hasYieldsCurrency {
            output += "\(indent) yieldsCurrency {\n"
            if let outDescYieldsCurrency = yieldsCurrency {
              output += try outDescYieldsCurrency.getDescription(indent: "\(indent)  ")
            }
            output += "\(indent) }\n"
          }
          if hasYieldsItem {
            output += "\(indent) yieldsItem {\n"
            if let outDescYieldsItem = yieldsItem {
              output += try outDescYieldsItem.getDescription(indent: "\(indent)  ")
            }
            output += "\(indent) }\n"
          }
          if hasTags {
            output += "\(indent) tags: \(tags) \n"
          }
          if hasUnknown7 {
            output += "\(indent) unknown7: \(unknown7) \n"
          }
          output += unknownFields.getDescription(indent: indent)
          return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasItemId {
                   hashCode = (hashCode &* 31) &+ itemId.hashValue
                }
                if hasIsIap {
                   hashCode = (hashCode &* 31) &+ isIap.hashValue
                }
                if hasCurrencyToBuy {
                    if let hashValuecurrencyToBuy = currencyToBuy?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValuecurrencyToBuy
                    }
                }
                if hasYieldsCurrency {
                    if let hashValueyieldsCurrency = yieldsCurrency?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueyieldsCurrency
                    }
                }
                if hasYieldsItem {
                    if let hashValueyieldsItem = yieldsItem?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueyieldsItem
                    }
                }
                if hasTags {
                    for (keyTags, valueTags) in tags {
                        hashCode = (hashCode &* 31) &+ keyTags.hashValue
                        hashCode = (hashCode &* 31) &+ valueTags.hashValue
                    }
                }
                if hasUnknown7 {
                   hashCode = (hashCode &* 31) &+ unknown7.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

        override public class func className() -> String {
            return "Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem"
        }
        override public func className() -> String {
            return "Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem"
        }
        //Meta information declaration end

        final public class Builder : GeneratedMessageBuilder {
          fileprivate var builderResult:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem()
          public func getMessage() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem {
              return builderResult
          }

          required override public init () {
             super.init()
          }
          public var hasItemId:Bool {
               get {
                    return builderResult.hasItemId
               }
          }
          public var itemId:String {
               get {
                    return builderResult.itemId
               }
               set (value) {
                   builderResult.hasItemId = true
                   builderResult.itemId = value
               }
          }
          @discardableResult
          public func setItemId(_ value:String) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            self.itemId = value
            return self
          }
          @discardableResult
          public func clearItemId() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder{
               builderResult.hasItemId = false
               builderResult.itemId = ""
               return self
          }
          public var hasIsIap:Bool {
               get {
                    return builderResult.hasIsIap
               }
          }
          public var isIap:Bool {
               get {
                    return builderResult.isIap
               }
               set (value) {
                   builderResult.hasIsIap = true
                   builderResult.isIap = value
               }
          }
          @discardableResult
          public func setIsIap(_ value:Bool) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            self.isIap = value
            return self
          }
          @discardableResult
          public func clearIsIap() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder{
               builderResult.hasIsIap = false
               builderResult.isIap = false
               return self
          }
          public var hasCurrencyToBuy:Bool {
               get {
                   return builderResult.hasCurrencyToBuy
               }
          }
          public var currencyToBuy:Pogoprotos.Data.Player.Currency! {
               get {
                   if currencyToBuyBuilder_ != nil {
                      builderResult.currencyToBuy = currencyToBuyBuilder_.getMessage()
                   }
                   return builderResult.currencyToBuy
               }
               set (value) {
                   builderResult.hasCurrencyToBuy = true
                   builderResult.currencyToBuy = value
               }
          }
          fileprivate var currencyToBuyBuilder_:Pogoprotos.Data.Player.Currency.Builder! {
               didSet {
                  builderResult.hasCurrencyToBuy = true
               }
          }
          public func getCurrencyToBuyBuilder() -> Pogoprotos.Data.Player.Currency.Builder {
            if currencyToBuyBuilder_ == nil {
               currencyToBuyBuilder_ = Pogoprotos.Data.Player.Currency.Builder()
               builderResult.currencyToBuy = currencyToBuyBuilder_.getMessage()
               if currencyToBuy != nil {
                  try! currencyToBuyBuilder_.mergeFrom(other: currencyToBuy)
               }
            }
            return currencyToBuyBuilder_
          }
          @discardableResult
          public func setCurrencyToBuy(_ value:Pogoprotos.Data.Player.Currency!) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            self.currencyToBuy = value
            return self
          }
          @discardableResult
          public func mergeCurrencyToBuy(value:Pogoprotos.Data.Player.Currency) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            if builderResult.hasCurrencyToBuy {
              builderResult.currencyToBuy = try Pogoprotos.Data.Player.Currency.builderWithPrototype(prototype:builderResult.currencyToBuy).mergeFrom(other: value).buildPartial()
            } else {
              builderResult.currencyToBuy = value
            }
            builderResult.hasCurrencyToBuy = true
            return self
          }
          @discardableResult
          public func clearCurrencyToBuy() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            currencyToBuyBuilder_ = nil
            builderResult.hasCurrencyToBuy = false
            builderResult.currencyToBuy = nil
            return self
          }
          public var hasYieldsCurrency:Bool {
               get {
                   return builderResult.hasYieldsCurrency
               }
          }
          public var yieldsCurrency:Pogoprotos.Data.Player.Currency! {
               get {
                   if yieldsCurrencyBuilder_ != nil {
                      builderResult.yieldsCurrency = yieldsCurrencyBuilder_.getMessage()
                   }
                   return builderResult.yieldsCurrency
               }
               set (value) {
                   builderResult.hasYieldsCurrency = true
                   builderResult.yieldsCurrency = value
               }
          }
          fileprivate var yieldsCurrencyBuilder_:Pogoprotos.Data.Player.Currency.Builder! {
               didSet {
                  builderResult.hasYieldsCurrency = true
               }
          }
          public func getYieldsCurrencyBuilder() -> Pogoprotos.Data.Player.Currency.Builder {
            if yieldsCurrencyBuilder_ == nil {
               yieldsCurrencyBuilder_ = Pogoprotos.Data.Player.Currency.Builder()
               builderResult.yieldsCurrency = yieldsCurrencyBuilder_.getMessage()
               if yieldsCurrency != nil {
                  try! yieldsCurrencyBuilder_.mergeFrom(other: yieldsCurrency)
               }
            }
            return yieldsCurrencyBuilder_
          }
          @discardableResult
          public func setYieldsCurrency(_ value:Pogoprotos.Data.Player.Currency!) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            self.yieldsCurrency = value
            return self
          }
          @discardableResult
          public func mergeYieldsCurrency(value:Pogoprotos.Data.Player.Currency) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            if builderResult.hasYieldsCurrency {
              builderResult.yieldsCurrency = try Pogoprotos.Data.Player.Currency.builderWithPrototype(prototype:builderResult.yieldsCurrency).mergeFrom(other: value).buildPartial()
            } else {
              builderResult.yieldsCurrency = value
            }
            builderResult.hasYieldsCurrency = true
            return self
          }
          @discardableResult
          public func clearYieldsCurrency() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            yieldsCurrencyBuilder_ = nil
            builderResult.hasYieldsCurrency = false
            builderResult.yieldsCurrency = nil
            return self
          }
          public var hasYieldsItem:Bool {
               get {
                   return builderResult.hasYieldsItem
               }
          }
          public var yieldsItem:Pogoprotos.Inventory.Item.ItemData! {
               get {
                   if yieldsItemBuilder_ != nil {
                      builderResult.yieldsItem = yieldsItemBuilder_.getMessage()
                   }
                   return builderResult.yieldsItem
               }
               set (value) {
                   builderResult.hasYieldsItem = true
                   builderResult.yieldsItem = value
               }
          }
          fileprivate var yieldsItemBuilder_:Pogoprotos.Inventory.Item.ItemData.Builder! {
               didSet {
                  builderResult.hasYieldsItem = true
               }
          }
          public func getYieldsItemBuilder() -> Pogoprotos.Inventory.Item.ItemData.Builder {
            if yieldsItemBuilder_ == nil {
               yieldsItemBuilder_ = Pogoprotos.Inventory.Item.ItemData.Builder()
               builderResult.yieldsItem = yieldsItemBuilder_.getMessage()
               if yieldsItem != nil {
                  try! yieldsItemBuilder_.mergeFrom(other: yieldsItem)
               }
            }
            return yieldsItemBuilder_
          }
          @discardableResult
          public func setYieldsItem(_ value:Pogoprotos.Inventory.Item.ItemData!) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            self.yieldsItem = value
            return self
          }
          @discardableResult
          public func mergeYieldsItem(value:Pogoprotos.Inventory.Item.ItemData) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            if builderResult.hasYieldsItem {
              builderResult.yieldsItem = try Pogoprotos.Inventory.Item.ItemData.builderWithPrototype(prototype:builderResult.yieldsItem).mergeFrom(other: value).buildPartial()
            } else {
              builderResult.yieldsItem = value
            }
            builderResult.hasYieldsItem = true
            return self
          }
          @discardableResult
          public func clearYieldsItem() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            yieldsItemBuilder_ = nil
            builderResult.hasYieldsItem = false
            builderResult.yieldsItem = nil
            return self
          }
          public var hasTags:Bool {
               get {
                    return builderResult.hasTags
               }
          }
          public var tags:Dictionary<String,String> {
               get {
                    return builderResult.tags
               }
               set (value) {
                   builderResult.hasTags = true
                   builderResult.tags = value
               }
          }
          @discardableResult
          public func setTags(_ value:Dictionary<String,String>) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            self.tags = value
            return self
          }
          @discardableResult
          public func clearTags() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder{
               builderResult.hasTags = false
               builderResult.tags = Dictionary<String,String>()
               return self
          }
          public var hasUnknown7:Bool {
               get {
                    return builderResult.hasUnknown7
               }
          }
          public var unknown7:Int32 {
               get {
                    return builderResult.unknown7
               }
               set (value) {
                   builderResult.hasUnknown7 = true
                   builderResult.unknown7 = value
               }
          }
          @discardableResult
          public func setUnknown7(_ value:Int32) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            self.unknown7 = value
            return self
          }
          @discardableResult
          public func clearUnknown7() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder{
               builderResult.hasUnknown7 = false
               builderResult.unknown7 = Int32(0)
               return self
          }
          override public var internalGetResult:GeneratedMessage {
               get {
                  return builderResult
               }
          }
          @discardableResult
          override public func clear() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            builderResult = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem()
            return self
          }
          override public func clone() throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.builderWithPrototype(prototype:builderResult)
          }
          override public func build() throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem {
               try checkInitialized()
               return buildPartial()
          }
          public func buildPartial() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem {
            let returnMe:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem = builderResult
            return returnMe
          }
          @discardableResult
          public func mergeFrom(other:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            if other == Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem() {
             return self
            }
            if other.hasItemId {
                 itemId = other.itemId
            }
            if other.hasIsIap {
                 isIap = other.isIap
            }
            if (other.hasCurrencyToBuy) {
                try mergeCurrencyToBuy(value: other.currencyToBuy)
            }
            if (other.hasYieldsCurrency) {
                try mergeYieldsCurrency(value: other.yieldsCurrency)
            }
            if (other.hasYieldsItem) {
                try mergeYieldsItem(value: other.yieldsItem)
            }
            if other.hasTags {
                 tags = other.tags
            }
            if other.hasUnknown7 {
                 unknown7 = other.unknown7
            }
            _ = try merge(unknownField: other.unknownFields)
            return self
          }
          @discardableResult
          override public func mergeFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
               return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
          }
          @discardableResult
          override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(copyFrom:self.unknownFields)
            while (true) {
              let protobufTag = try codedInputStream.readTag()
              switch protobufTag {
              case 0: 
                self.unknownFields = try unknownFieldsBuilder.build()
                return self

              case 10:
                itemId = try codedInputStream.readString()

              case 16:
                isIap = try codedInputStream.readBool()

              case 26:
                let subBuilder:Pogoprotos.Data.Player.Currency.Builder = Pogoprotos.Data.Player.Currency.Builder()
                if hasCurrencyToBuy {
                  try subBuilder.mergeFrom(other: currencyToBuy)
                }
                try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                currencyToBuy = subBuilder.buildPartial()

              case 34:
                let subBuilder:Pogoprotos.Data.Player.Currency.Builder = Pogoprotos.Data.Player.Currency.Builder()
                if hasYieldsCurrency {
                  try subBuilder.mergeFrom(other: yieldsCurrency)
                }
                try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                yieldsCurrency = subBuilder.buildPartial()

              case 42:
                let subBuilder:Pogoprotos.Inventory.Item.ItemData.Builder = Pogoprotos.Inventory.Item.ItemData.Builder()
                if hasYieldsItem {
                  try subBuilder.mergeFrom(other: yieldsItem)
                }
                try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                yieldsItem = subBuilder.buildPartial()

              case 50:
                let subBuilder = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder()
                try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                let buildOfTags = subBuilder.buildPartial()
                tags[buildOfTags.key] = buildOfTags.value

              case 56:
                unknown7 = try codedInputStream.readInt32()

              default:
                if (!(try parse(codedInputStream:codedInputStream, unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                   unknownFields = try unknownFieldsBuilder.build()
                   return self
                }
              }
            }
          }
          class public func decodeToBuilder(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            let resultDecodedBuilder = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder()
            if let jsonValueItemId = jsonMap["itemId"] as? String {
              resultDecodedBuilder.itemId = jsonValueItemId
            }
            if let jsonValueIsIap = jsonMap["isIap"] as? Bool {
              resultDecodedBuilder.isIap = jsonValueIsIap
            }
            if let jsonValueCurrencyToBuy = jsonMap["currencyToBuy"] as? Dictionary<String,Any> {
              resultDecodedBuilder.currencyToBuy = try Pogoprotos.Data.Player.Currency.Builder.decodeToBuilder(jsonMap:jsonValueCurrencyToBuy).build()

            }
            if let jsonValueYieldsCurrency = jsonMap["yieldsCurrency"] as? Dictionary<String,Any> {
              resultDecodedBuilder.yieldsCurrency = try Pogoprotos.Data.Player.Currency.Builder.decodeToBuilder(jsonMap:jsonValueYieldsCurrency).build()

            }
            if let jsonValueYieldsItem = jsonMap["yieldsItem"] as? Dictionary<String,Any> {
              resultDecodedBuilder.yieldsItem = try Pogoprotos.Inventory.Item.ItemData.Builder.decodeToBuilder(jsonMap:jsonValueYieldsItem).build()

            }
            if let jsonValueTags = jsonMap["tags"] as? Dictionary<String, String> {
                var mapTags = Dictionary<String, String>()
                for (keyTags, valueTags) in jsonValueTags {
                    let keyFromTags = keyTags
                    mapTags[keyFromTags] = valueTags
                }
                resultDecodedBuilder.tags = mapTags
            }
            if let jsonValueUnknown7 = jsonMap["unknown7"] as? Int {
              resultDecodedBuilder.unknown7 = Int32(jsonValueUnknown7)
            }
            return resultDecodedBuilder
          }
          override class public func fromJSONToBuilder(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder {
            let jsonData = try JSONSerialization.jsonObject(with:data, options: JSONSerialization.ReadingOptions(rawValue: 0))
            guard let jsDataCast = jsonData as? Dictionary<String,Any> else {
              throw ProtocolBuffersError.invalidProtocolBuffer("Invalid JSON data")
            }
            return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder.decodeToBuilder(jsonMap:jsDataCast)
          }
        }

      }

    //Nested type declaration end



      //Enum type declaration start 

      public enum Status:Int32, CustomDebugStringConvertible, CustomStringConvertible {
        case undefined = 0
        case okay = 1
        public func toString() -> String {
          switch self {
          case .undefined: return "UNDEFINED"
          case .okay: return "OKAY"
          }
        }
        public static func fromString(str:String) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Status {
          switch str {
          case "UNDEFINED":  return .undefined
          case "OKAY":  return .okay
          default: throw ProtocolBuffersError.invalidProtocolBuffer("Conversion String to Enum has failed.")
          }
        }
        public var debugDescription:String { return getDescription() }
        public var description:String { return getDescription() }
        private func getDescription() -> String { 
          switch self {
          case .undefined: return ".undefined"
          case .okay: return ".okay"
          }
        }
      }

      //Enum type declaration end 

    public fileprivate(set) var status:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Status = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Status.undefined
    public fileprivate(set) var hasStatus:Bool = false
    public fileprivate(set) var items:Array<Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem>  = Array<Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem>()
    public fileprivate(set) var playerCurrencies:Array<Pogoprotos.Data.Player.Currency>  = Array<Pogoprotos.Data.Player.Currency>()
    // Some base64 encoded stuff... (Developer payload?)
    public fileprivate(set) var unknown4:String = ""
    public fileprivate(set) var hasUnknown4:Bool = false

    required public init() {
         super.init()
    }
    override public func isInitialized() -> Bool {
     return true
    }
    override public func writeTo(codedOutputStream: CodedOutputStream) throws {
      if hasStatus {
        try codedOutputStream.writeEnum(fieldNumber: 1, value:status.rawValue)
      }
      for oneElementItems in items {
          try codedOutputStream.writeMessage(fieldNumber: 2, value:oneElementItems)
      }
      for oneElementPlayerCurrencies in playerCurrencies {
          try codedOutputStream.writeMessage(fieldNumber: 3, value:oneElementPlayerCurrencies)
      }
      if hasUnknown4 {
        try codedOutputStream.writeString(fieldNumber: 4, value:unknown4)
      }
      try unknownFields.writeTo(codedOutputStream: codedOutputStream)
    }
    override public func serializedSize() -> Int32 {
      var serialize_size:Int32 = memoizedSerializedSize
      if serialize_size != -1 {
       return serialize_size
      }

      serialize_size = 0
      if (hasStatus) {
        serialize_size += status.rawValue.computeEnumSize(fieldNumber: 1)
      }
      for oneElementItems in items {
          serialize_size += oneElementItems.computeMessageSize(fieldNumber: 2)
      }
      for oneElementPlayerCurrencies in playerCurrencies {
          serialize_size += oneElementPlayerCurrencies.computeMessageSize(fieldNumber: 3)
      }
      if hasUnknown4 {
        serialize_size += unknown4.computeStringSize(fieldNumber: 4)
      }
      serialize_size += unknownFields.serializedSize()
      memoizedSerializedSize = serialize_size
      return serialize_size
    }
    public class func getBuilder() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
      return Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.classBuilder() as! Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder
    }
    public func getBuilder() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
      return classBuilder() as! Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder
    }
    override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
      return Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder()
    }
    override public func classBuilder() -> ProtocolBuffersMessageBuilder {
      return Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder()
    }
    public func toBuilder() throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
      return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.builderWithPrototype(prototype:self)
    }
    public class func builderWithPrototype(prototype:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
      return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder().mergeFrom(other:prototype)
    }
    override public func encode() throws -> Dictionary<String,Any> {
      guard isInitialized() else {
        throw ProtocolBuffersError.invalidProtocolBuffer("Uninitialized Message")
      }

      var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
      if hasStatus {
        jsonMap["status"] = status.toString()
      }
      if !items.isEmpty {
        var jsonArrayItems:Array<Dictionary<String,Any>> = []
          for oneValueItems in items {
            let ecodedMessageItems = try oneValueItems.encode()
            jsonArrayItems.append(ecodedMessageItems)
          }
        jsonMap["items"] = jsonArrayItems
      }
      if !playerCurrencies.isEmpty {
        var jsonArrayPlayerCurrencies:Array<Dictionary<String,Any>> = []
          for oneValuePlayerCurrencies in playerCurrencies {
            let ecodedMessagePlayerCurrencies = try oneValuePlayerCurrencies.encode()
            jsonArrayPlayerCurrencies.append(ecodedMessagePlayerCurrencies)
          }
        jsonMap["playerCurrencies"] = jsonArrayPlayerCurrencies
      }
      if hasUnknown4 {
        jsonMap["unknown4"] = unknown4
      }
      return jsonMap
    }
    override class public func decode(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse {
      return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder.decodeToBuilder(jsonMap:jsonMap).build()
    }
    override class public func fromJSON(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse {
      return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder.fromJSONToBuilder(data:data).build()
    }
    override public func getDescription(indent:String) throws -> String {
      var output = ""
      if (hasStatus) {
        output += "\(indent) status: \(status.description)\n"
      }
      var itemsElementIndex:Int = 0
      for oneElementItems in items {
          output += "\(indent) items[\(itemsElementIndex)] {\n"
          output += try oneElementItems.getDescription(indent: "\(indent)  ")
          output += "\(indent)}\n"
          itemsElementIndex += 1
      }
      var playerCurrenciesElementIndex:Int = 0
      for oneElementPlayerCurrencies in playerCurrencies {
          output += "\(indent) playerCurrencies[\(playerCurrenciesElementIndex)] {\n"
          output += try oneElementPlayerCurrencies.getDescription(indent: "\(indent)  ")
          output += "\(indent)}\n"
          playerCurrenciesElementIndex += 1
      }
      if hasUnknown4 {
        output += "\(indent) unknown4: \(unknown4) \n"
      }
      output += unknownFields.getDescription(indent: indent)
      return output
    }
    override public var hashValue:Int {
        get {
            var hashCode:Int = 7
            if hasStatus {
               hashCode = (hashCode &* 31) &+ Int(status.rawValue)
            }
            for oneElementItems in items {
                hashCode = (hashCode &* 31) &+ oneElementItems.hashValue
            }
            for oneElementPlayerCurrencies in playerCurrencies {
                hashCode = (hashCode &* 31) &+ oneElementPlayerCurrencies.hashValue
            }
            if hasUnknown4 {
               hashCode = (hashCode &* 31) &+ unknown4.hashValue
            }
            hashCode = (hashCode &* 31) &+  unknownFields.hashValue
            return hashCode
        }
    }


    //Meta information declaration start

    override public class func className() -> String {
        return "Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse"
    }
    override public func className() -> String {
        return "Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse"
    }
    //Meta information declaration end

    final public class Builder : GeneratedMessageBuilder {
      fileprivate var builderResult:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse()
      public func getMessage() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse {
          return builderResult
      }

      required override public init () {
         super.init()
      }
        public var hasStatus:Bool{
            get {
                return builderResult.hasStatus
            }
        }
        public var status:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Status {
            get {
                return builderResult.status
            }
            set (value) {
                builderResult.hasStatus = true
                builderResult.status = value
            }
        }
      @discardableResult
        public func setStatus(_ value:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Status) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
          self.status = value
          return self
        }
      @discardableResult
        public func clearStatus() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
           builderResult.hasStatus = false
           builderResult.status = .undefined
           return self
        }
      public var items:Array<Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem> {
           get {
               return builderResult.items
           }
           set (value) {
               builderResult.items = value
           }
      }
      @discardableResult
      public func setItems(_ value:Array<Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem>) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
        self.items = value
        return self
      }
      @discardableResult
      public func clearItems() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
        builderResult.items.removeAll(keepingCapacity: false)
        return self
      }
      public var playerCurrencies:Array<Pogoprotos.Data.Player.Currency> {
           get {
               return builderResult.playerCurrencies
           }
           set (value) {
               builderResult.playerCurrencies = value
           }
      }
      @discardableResult
      public func setPlayerCurrencies(_ value:Array<Pogoprotos.Data.Player.Currency>) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
        self.playerCurrencies = value
        return self
      }
      @discardableResult
      public func clearPlayerCurrencies() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
        builderResult.playerCurrencies.removeAll(keepingCapacity: false)
        return self
      }
      public var hasUnknown4:Bool {
           get {
                return builderResult.hasUnknown4
           }
      }
      public var unknown4:String {
           get {
                return builderResult.unknown4
           }
           set (value) {
               builderResult.hasUnknown4 = true
               builderResult.unknown4 = value
           }
      }
      @discardableResult
      public func setUnknown4(_ value:String) -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
        self.unknown4 = value
        return self
      }
      @discardableResult
      public func clearUnknown4() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder{
           builderResult.hasUnknown4 = false
           builderResult.unknown4 = ""
           return self
      }
      override public var internalGetResult:GeneratedMessage {
           get {
              return builderResult
           }
      }
      @discardableResult
      override public func clear() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
        builderResult = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse()
        return self
      }
      override public func clone() throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
        return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.builderWithPrototype(prototype:builderResult)
      }
      override public func build() throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse {
           try checkInitialized()
           return buildPartial()
      }
      public func buildPartial() -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse {
        let returnMe:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse = builderResult
        return returnMe
      }
      @discardableResult
      public func mergeFrom(other:Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
        if other == Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse() {
         return self
        }
        if other.hasStatus {
             status = other.status
        }
        if !other.items.isEmpty  {
           builderResult.items += other.items
        }
        if !other.playerCurrencies.isEmpty  {
           builderResult.playerCurrencies += other.playerCurrencies
        }
        if other.hasUnknown4 {
             unknown4 = other.unknown4
        }
        _ = try merge(unknownField: other.unknownFields)
        return self
      }
      @discardableResult
      override public func mergeFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
           return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
      }
      @discardableResult
      override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
        let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(copyFrom:self.unknownFields)
        while (true) {
          let protobufTag = try codedInputStream.readTag()
          switch protobufTag {
          case 0: 
            self.unknownFields = try unknownFieldsBuilder.build()
            return self

          case 8:
            let valueIntstatus = try codedInputStream.readEnum()
            if let enumsstatus = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Status(rawValue:valueIntstatus){
                 status = enumsstatus
            } else {
                 _ = try unknownFieldsBuilder.mergeVarintField(fieldNumber: 1, value:Int64(valueIntstatus))
            }

          case 18:
            let subBuilder = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder()
            try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
            items.append(subBuilder.buildPartial())

          case 26:
            let subBuilder = Pogoprotos.Data.Player.Currency.Builder()
            try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
            playerCurrencies.append(subBuilder.buildPartial())

          case 34:
            unknown4 = try codedInputStream.readString()

          default:
            if (!(try parse(codedInputStream:codedInputStream, unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
               unknownFields = try unknownFieldsBuilder.build()
               return self
            }
          }
        }
      }
      class public func decodeToBuilder(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
        let resultDecodedBuilder = Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder()
        if let jsonValueStatus = jsonMap["status"] as? String {
          resultDecodedBuilder.status = try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Status.fromString(str: jsonValueStatus)
        }
        if let jsonValueItems = jsonMap["items"] as? Array<Dictionary<String,Any>> {
          var jsonArrayItems:Array<Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem> = []
          for oneValueItems in jsonValueItems {
            let messageFromStringItems = try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder.decodeToBuilder(jsonMap:oneValueItems).build()

            jsonArrayItems.append(messageFromStringItems)
          }
          resultDecodedBuilder.items = jsonArrayItems
        }
        if let jsonValuePlayerCurrencies = jsonMap["playerCurrencies"] as? Array<Dictionary<String,Any>> {
          var jsonArrayPlayerCurrencies:Array<Pogoprotos.Data.Player.Currency> = []
          for oneValuePlayerCurrencies in jsonValuePlayerCurrencies {
            let messageFromStringPlayerCurrencies = try Pogoprotos.Data.Player.Currency.Builder.decodeToBuilder(jsonMap:oneValuePlayerCurrencies).build()

            jsonArrayPlayerCurrencies.append(messageFromStringPlayerCurrencies)
          }
          resultDecodedBuilder.playerCurrencies = jsonArrayPlayerCurrencies
        }
        if let jsonValueUnknown4 = jsonMap["unknown4"] as? String {
          resultDecodedBuilder.unknown4 = jsonValueUnknown4
        }
        return resultDecodedBuilder
      }
      override class public func fromJSONToBuilder(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder {
        let jsonData = try JSONSerialization.jsonObject(with:data, options: JSONSerialization.ReadingOptions(rawValue: 0))
        guard let jsDataCast = jsonData as? Dictionary<String,Any> else {
          throw ProtocolBuffersError.invalidProtocolBuffer("Invalid JSON data")
        }
        return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder.decodeToBuilder(jsonMap:jsDataCast)
      }
    }

  }

  final public class SendEncryptedSignatureResponse : GeneratedMessage {

    public static func == (lhs: Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse, rhs: Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse) -> Bool {
      if (lhs === rhs) {
        return true
      }
      var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
      fieldCheck = fieldCheck && (lhs.hasReceived == rhs.hasReceived) && (!lhs.hasReceived || lhs.received == rhs.received)
      fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
      return fieldCheck
    }

    // speculated, could be an enum
    public fileprivate(set) var received:Bool = false
    public fileprivate(set) var hasReceived:Bool = false

    required public init() {
         super.init()
    }
    override public func isInitialized() -> Bool {
     return true
    }
    override public func writeTo(codedOutputStream: CodedOutputStream) throws {
      if hasReceived {
        try codedOutputStream.writeBool(fieldNumber: 1, value:received)
      }
      try unknownFields.writeTo(codedOutputStream: codedOutputStream)
    }
    override public func serializedSize() -> Int32 {
      var serialize_size:Int32 = memoizedSerializedSize
      if serialize_size != -1 {
       return serialize_size
      }

      serialize_size = 0
      if hasReceived {
        serialize_size += received.computeBoolSize(fieldNumber: 1)
      }
      serialize_size += unknownFields.serializedSize()
      memoizedSerializedSize = serialize_size
      return serialize_size
    }
    public class func getBuilder() -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
      return Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.classBuilder() as! Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder
    }
    public func getBuilder() -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
      return classBuilder() as! Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder
    }
    override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
      return Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder()
    }
    override public func classBuilder() -> ProtocolBuffersMessageBuilder {
      return Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder()
    }
    public func toBuilder() throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
      return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.builderWithPrototype(prototype:self)
    }
    public class func builderWithPrototype(prototype:Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
      return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder().mergeFrom(other:prototype)
    }
    override public func encode() throws -> Dictionary<String,Any> {
      guard isInitialized() else {
        throw ProtocolBuffersError.invalidProtocolBuffer("Uninitialized Message")
      }

      var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
      if hasReceived {
        jsonMap["received"] = received
      }
      return jsonMap
    }
    override class public func decode(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse {
      return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder.decodeToBuilder(jsonMap:jsonMap).build()
    }
    override class public func fromJSON(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse {
      return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder.fromJSONToBuilder(data:data).build()
    }
    override public func getDescription(indent:String) throws -> String {
      var output = ""
      if hasReceived {
        output += "\(indent) received: \(received) \n"
      }
      output += unknownFields.getDescription(indent: indent)
      return output
    }
    override public var hashValue:Int {
        get {
            var hashCode:Int = 7
            if hasReceived {
               hashCode = (hashCode &* 31) &+ received.hashValue
            }
            hashCode = (hashCode &* 31) &+  unknownFields.hashValue
            return hashCode
        }
    }


    //Meta information declaration start

    override public class func className() -> String {
        return "Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse"
    }
    override public func className() -> String {
        return "Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse"
    }
    //Meta information declaration end

    final public class Builder : GeneratedMessageBuilder {
      fileprivate var builderResult:Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse = Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse()
      public func getMessage() -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse {
          return builderResult
      }

      required override public init () {
         super.init()
      }
      public var hasReceived:Bool {
           get {
                return builderResult.hasReceived
           }
      }
      public var received:Bool {
           get {
                return builderResult.received
           }
           set (value) {
               builderResult.hasReceived = true
               builderResult.received = value
           }
      }
      @discardableResult
      public func setReceived(_ value:Bool) -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
        self.received = value
        return self
      }
      @discardableResult
      public func clearReceived() -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder{
           builderResult.hasReceived = false
           builderResult.received = false
           return self
      }
      override public var internalGetResult:GeneratedMessage {
           get {
              return builderResult
           }
      }
      @discardableResult
      override public func clear() -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
        builderResult = Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse()
        return self
      }
      override public func clone() throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
        return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.builderWithPrototype(prototype:builderResult)
      }
      override public func build() throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse {
           try checkInitialized()
           return buildPartial()
      }
      public func buildPartial() -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse {
        let returnMe:Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse = builderResult
        return returnMe
      }
      @discardableResult
      public func mergeFrom(other:Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
        if other == Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse() {
         return self
        }
        if other.hasReceived {
             received = other.received
        }
        _ = try merge(unknownField: other.unknownFields)
        return self
      }
      @discardableResult
      override public func mergeFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
           return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
      }
      @discardableResult
      override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
        let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(copyFrom:self.unknownFields)
        while (true) {
          let protobufTag = try codedInputStream.readTag()
          switch protobufTag {
          case 0: 
            self.unknownFields = try unknownFieldsBuilder.build()
            return self

          case 8:
            received = try codedInputStream.readBool()

          default:
            if (!(try parse(codedInputStream:codedInputStream, unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
               unknownFields = try unknownFieldsBuilder.build()
               return self
            }
          }
        }
      }
      class public func decodeToBuilder(jsonMap:Dictionary<String,Any>) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
        let resultDecodedBuilder = Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder()
        if let jsonValueReceived = jsonMap["received"] as? Bool {
          resultDecodedBuilder.received = jsonValueReceived
        }
        return resultDecodedBuilder
      }
      override class public func fromJSONToBuilder(data:Data) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder {
        let jsonData = try JSONSerialization.jsonObject(with:data, options: JSONSerialization.ReadingOptions(rawValue: 0))
        guard let jsDataCast = jsonData as? Dictionary<String,Any> else {
          throw ProtocolBuffersError.invalidProtocolBuffer("Invalid JSON data")
        }
        return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder.decodeToBuilder(jsonMap:jsDataCast)
      }
    }

  }

}
extension Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse: GeneratedMessageProtocol {
  public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse> {
    var mergedArray = Array<Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse>()
    while let value = try parseDelimitedFrom(inputStream: inputStream) {
      mergedArray.append(value)
    }
    return mergedArray
  }
  public class func parseDelimitedFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse? {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
  }
  public class func parseFrom(data: Data) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder().mergeFrom(data: data, extensionRegistry:Pogoprotos.Networking.Platform.Responses.PogoprotosNetworkingPlatformResponsesRoot.default.extensionRegistry).build()
  }
  public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder().mergeFrom(inputStream: inputStream).build()
  }
  public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder().mergeFrom(codedInputStream: codedInputStream).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemAndroidResponse.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
  }
}
extension Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse: GeneratedMessageProtocol {
  public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse> {
    var mergedArray = Array<Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse>()
    while let value = try parseDelimitedFrom(inputStream: inputStream) {
      mergedArray.append(value)
    }
    return mergedArray
  }
  public class func parseDelimitedFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse? {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
  }
  public class func parseFrom(data: Data) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder().mergeFrom(data: data, extensionRegistry:Pogoprotos.Networking.Platform.Responses.PogoprotosNetworkingPlatformResponsesRoot.default.extensionRegistry).build()
  }
  public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder().mergeFrom(inputStream: inputStream).build()
  }
  public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder().mergeFrom(codedInputStream: codedInputStream).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse {
    return try Pogoprotos.Networking.Platform.Responses.BuyItemPokeCoinsResponse.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
  }
}
extension Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse: GeneratedMessageProtocol {
  public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse> {
    var mergedArray = Array<Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse>()
    while let value = try parseDelimitedFrom(inputStream: inputStream) {
      mergedArray.append(value)
    }
    return mergedArray
  }
  public class func parseDelimitedFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse? {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
  }
  public class func parseFrom(data: Data) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder().mergeFrom(data: data, extensionRegistry:Pogoprotos.Networking.Platform.Responses.PogoprotosNetworkingPlatformResponsesRoot.default.extensionRegistry).build()
  }
  public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder().mergeFrom(inputStream: inputStream).build()
  }
  public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder().mergeFrom(codedInputStream: codedInputStream).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
  }
}
extension Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem: GeneratedMessageProtocol {
  public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem> {
    var mergedArray = Array<Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem>()
    while let value = try parseDelimitedFrom(inputStream: inputStream) {
      mergedArray.append(value)
    }
    return mergedArray
  }
  public class func parseDelimitedFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem? {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
  }
  public class func parseFrom(data: Data) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder().mergeFrom(data: data, extensionRegistry:Pogoprotos.Networking.Platform.Responses.PogoprotosNetworkingPlatformResponsesRoot.default.extensionRegistry).build()
  }
  public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder().mergeFrom(inputStream: inputStream).build()
  }
  public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder().mergeFrom(codedInputStream: codedInputStream).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
  }
}
extension Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry: GeneratedMessageProtocol {
  public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry> {
    var mergedArray = Array<Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry>()
    while let value = try parseDelimitedFrom(inputStream: inputStream) {
      mergedArray.append(value)
    }
    return mergedArray
  }
  public class func parseDelimitedFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry? {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
  }
  public class func parseFrom(data: Data) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder().mergeFrom(data: data, extensionRegistry:Pogoprotos.Networking.Platform.Responses.PogoprotosNetworkingPlatformResponsesRoot.default.extensionRegistry).build()
  }
  public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder().mergeFrom(inputStream: inputStream).build()
  }
  public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder().mergeFrom(codedInputStream: codedInputStream).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry {
    return try Pogoprotos.Networking.Platform.Responses.GetStoreItemsResponse.StoreItem.TagsEntry.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
  }
}
extension Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse: GeneratedMessageProtocol {
  public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse> {
    var mergedArray = Array<Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse>()
    while let value = try parseDelimitedFrom(inputStream: inputStream) {
      mergedArray.append(value)
    }
    return mergedArray
  }
  public class func parseDelimitedFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse? {
    return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
  }
  public class func parseFrom(data: Data) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse {
    return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder().mergeFrom(data: data, extensionRegistry:Pogoprotos.Networking.Platform.Responses.PogoprotosNetworkingPlatformResponsesRoot.default.extensionRegistry).build()
  }
  public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse {
    return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(inputStream: InputStream) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse {
    return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder().mergeFrom(inputStream: inputStream).build()
  }
  public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse {
    return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse {
    return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder().mergeFrom(codedInputStream: codedInputStream).build()
  }
  public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse {
    return try Pogoprotos.Networking.Platform.Responses.SendEncryptedSignatureResponse.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
  }
}

// @@protoc_insertion_point(global_scope)
