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

import Foundation
import ProtocolBuffers


public func == (lhs: Pogoprotos.Networking.Envelopes.AuthTicket, rhs: Pogoprotos.Networking.Envelopes.AuthTicket) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasStart == rhs.hasStart) && (!lhs.hasStart || lhs.start == rhs.start)
  fieldCheck = fieldCheck && (lhs.hasExpireTimestampMs == rhs.hasExpireTimestampMs) && (!lhs.hasExpireTimestampMs || lhs.expireTimestampMs == rhs.expireTimestampMs)
  fieldCheck = fieldCheck && (lhs.hasEnd == rhs.hasEnd) && (!lhs.hasEnd || lhs.end == rhs.end)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.RequestEnvelope, rhs: Pogoprotos.Networking.Envelopes.RequestEnvelope) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasStatusCode == rhs.hasStatusCode) && (!lhs.hasStatusCode || lhs.statusCode == rhs.statusCode)
  fieldCheck = fieldCheck && (lhs.hasRequestId == rhs.hasRequestId) && (!lhs.hasRequestId || lhs.requestId == rhs.requestId)
  fieldCheck = fieldCheck && (lhs.requests == rhs.requests)
  fieldCheck = fieldCheck && (lhs.platformRequests == rhs.platformRequests)
  fieldCheck = fieldCheck && (lhs.hasLatitude == rhs.hasLatitude) && (!lhs.hasLatitude || lhs.latitude == rhs.latitude)
  fieldCheck = fieldCheck && (lhs.hasLongitude == rhs.hasLongitude) && (!lhs.hasLongitude || lhs.longitude == rhs.longitude)
  fieldCheck = fieldCheck && (lhs.hasAccuracy == rhs.hasAccuracy) && (!lhs.hasAccuracy || lhs.accuracy == rhs.accuracy)
  fieldCheck = fieldCheck && (lhs.hasAuthInfo == rhs.hasAuthInfo) && (!lhs.hasAuthInfo || lhs.authInfo == rhs.authInfo)
  fieldCheck = fieldCheck && (lhs.hasAuthTicket == rhs.hasAuthTicket) && (!lhs.hasAuthTicket || lhs.authTicket == rhs.authTicket)
  fieldCheck = fieldCheck && (lhs.hasMsSinceLastLocationfix == rhs.hasMsSinceLastLocationfix) && (!lhs.hasMsSinceLastLocationfix || lhs.msSinceLastLocationfix == rhs.msSinceLastLocationfix)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo, rhs: Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasProvider == rhs.hasProvider) && (!lhs.hasProvider || lhs.provider == rhs.provider)
  fieldCheck = fieldCheck && (lhs.hasToken == rhs.hasToken) && (!lhs.hasToken || lhs.token == rhs.token)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt, rhs: Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasContents == rhs.hasContents) && (!lhs.hasContents || lhs.contents == rhs.contents)
  fieldCheck = fieldCheck && (lhs.hasUnknown2 == rhs.hasUnknown2) && (!lhs.hasUnknown2 || lhs.unknown2 == rhs.unknown2)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest, rhs: Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasTypes == rhs.hasTypes) && (!lhs.hasTypes || lhs.types == rhs.types)
  fieldCheck = fieldCheck && (lhs.hasRequestMessage == rhs.hasRequestMessage) && (!lhs.hasRequestMessage || lhs.requestMessage == rhs.requestMessage)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.ResponseEnvelope, rhs: Pogoprotos.Networking.Envelopes.ResponseEnvelope) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasStatusCode == rhs.hasStatusCode) && (!lhs.hasStatusCode || lhs.statusCode == rhs.statusCode)
  fieldCheck = fieldCheck && (lhs.hasRequestId == rhs.hasRequestId) && (!lhs.hasRequestId || lhs.requestId == rhs.requestId)
  fieldCheck = fieldCheck && (lhs.hasApiUrl == rhs.hasApiUrl) && (!lhs.hasApiUrl || lhs.apiUrl == rhs.apiUrl)
  fieldCheck = fieldCheck && (lhs.platformReturns == rhs.platformReturns)
  fieldCheck = fieldCheck && (lhs.hasAuthTicket == rhs.hasAuthTicket) && (!lhs.hasAuthTicket || lhs.authTicket == rhs.authTicket)
  fieldCheck = fieldCheck && (lhs.returns == rhs.returns)
  fieldCheck = fieldCheck && (lhs.hasError == rhs.hasError) && (!lhs.hasError || lhs.error == rhs.error)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse, rhs: Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasTypes == rhs.hasTypes) && (!lhs.hasTypes || lhs.types == rhs.types)
  fieldCheck = fieldCheck && (lhs.hasResponse == rhs.hasResponse) && (!lhs.hasResponse || lhs.response == rhs.response)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.Signature, rhs: Pogoprotos.Networking.Envelopes.Signature) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasTimestampSinceStart == rhs.hasTimestampSinceStart) && (!lhs.hasTimestampSinceStart || lhs.timestampSinceStart == rhs.timestampSinceStart)
  fieldCheck = fieldCheck && (lhs.locationFix == rhs.locationFix)
  fieldCheck = fieldCheck && (lhs.hasGpsInfo == rhs.hasGpsInfo) && (!lhs.hasGpsInfo || lhs.gpsInfo == rhs.gpsInfo)
  fieldCheck = fieldCheck && (lhs.hasSensorInfo == rhs.hasSensorInfo) && (!lhs.hasSensorInfo || lhs.sensorInfo == rhs.sensorInfo)
  fieldCheck = fieldCheck && (lhs.hasDeviceInfo == rhs.hasDeviceInfo) && (!lhs.hasDeviceInfo || lhs.deviceInfo == rhs.deviceInfo)
  fieldCheck = fieldCheck && (lhs.hasActivityStatus == rhs.hasActivityStatus) && (!lhs.hasActivityStatus || lhs.activityStatus == rhs.activityStatus)
  fieldCheck = fieldCheck && (lhs.hasLocationHash1 == rhs.hasLocationHash1) && (!lhs.hasLocationHash1 || lhs.locationHash1 == rhs.locationHash1)
  fieldCheck = fieldCheck && (lhs.hasLocationHash2 == rhs.hasLocationHash2) && (!lhs.hasLocationHash2 || lhs.locationHash2 == rhs.locationHash2)
  fieldCheck = fieldCheck && (lhs.hasSessionHash == rhs.hasSessionHash) && (!lhs.hasSessionHash || lhs.sessionHash == rhs.sessionHash)
  fieldCheck = fieldCheck && (lhs.hasTimestamp == rhs.hasTimestamp) && (!lhs.hasTimestamp || lhs.timestamp == rhs.timestamp)
  fieldCheck = fieldCheck && (lhs.requestHash == rhs.requestHash)
  fieldCheck = fieldCheck && (lhs.hasUnknown25 == rhs.hasUnknown25) && (!lhs.hasUnknown25 || lhs.unknown25 == rhs.unknown25)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.Signature.LocationFix, rhs: Pogoprotos.Networking.Envelopes.Signature.LocationFix) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasProvider == rhs.hasProvider) && (!lhs.hasProvider || lhs.provider == rhs.provider)
  fieldCheck = fieldCheck && (lhs.hasTimestampSnapshot == rhs.hasTimestampSnapshot) && (!lhs.hasTimestampSnapshot || lhs.timestampSnapshot == rhs.timestampSnapshot)
  fieldCheck = fieldCheck && (lhs.hasAltitude == rhs.hasAltitude) && (!lhs.hasAltitude || lhs.altitude == rhs.altitude)
  fieldCheck = fieldCheck && (lhs.hasLatitude == rhs.hasLatitude) && (!lhs.hasLatitude || lhs.latitude == rhs.latitude)
  fieldCheck = fieldCheck && (lhs.hasLongitude == rhs.hasLongitude) && (!lhs.hasLongitude || lhs.longitude == rhs.longitude)
  fieldCheck = fieldCheck && (lhs.hasSpeed == rhs.hasSpeed) && (!lhs.hasSpeed || lhs.speed == rhs.speed)
  fieldCheck = fieldCheck && (lhs.hasCourse == rhs.hasCourse) && (!lhs.hasCourse || lhs.course == rhs.course)
  fieldCheck = fieldCheck && (lhs.hasHorizontalAccuracy == rhs.hasHorizontalAccuracy) && (!lhs.hasHorizontalAccuracy || lhs.horizontalAccuracy == rhs.horizontalAccuracy)
  fieldCheck = fieldCheck && (lhs.hasVerticalAccuracy == rhs.hasVerticalAccuracy) && (!lhs.hasVerticalAccuracy || lhs.verticalAccuracy == rhs.verticalAccuracy)
  fieldCheck = fieldCheck && (lhs.hasProviderStatus == rhs.hasProviderStatus) && (!lhs.hasProviderStatus || lhs.providerStatus == rhs.providerStatus)
  fieldCheck = fieldCheck && (lhs.hasFloor == rhs.hasFloor) && (!lhs.hasFloor || lhs.floor == rhs.floor)
  fieldCheck = fieldCheck && (lhs.hasLocationType == rhs.hasLocationType) && (!lhs.hasLocationType || lhs.locationType == rhs.locationType)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo, rhs: Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasTimeToFix == rhs.hasTimeToFix) && (!lhs.hasTimeToFix || lhs.timeToFix == rhs.timeToFix)
  fieldCheck = fieldCheck && (lhs.satellitesPrn == rhs.satellitesPrn)
  fieldCheck = fieldCheck && (lhs.azimuth == rhs.azimuth)
  fieldCheck = fieldCheck && (lhs.elevation == rhs.elevation)
  fieldCheck = fieldCheck && (lhs.snr == rhs.snr)
  fieldCheck = fieldCheck && (lhs.hasAlmanac == rhs.hasAlmanac)
  fieldCheck = fieldCheck && (lhs.hasEphemeris == rhs.hasEphemeris)
  fieldCheck = fieldCheck && (lhs.usedInFix == rhs.usedInFix)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.Signature.SensorInfo, rhs: Pogoprotos.Networking.Envelopes.Signature.SensorInfo) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasTimestampSnapshot == rhs.hasTimestampSnapshot) && (!lhs.hasTimestampSnapshot || lhs.timestampSnapshot == rhs.timestampSnapshot)
  fieldCheck = fieldCheck && (lhs.hasLinearAccelerationX == rhs.hasLinearAccelerationX) && (!lhs.hasLinearAccelerationX || lhs.linearAccelerationX == rhs.linearAccelerationX)
  fieldCheck = fieldCheck && (lhs.hasLinearAccelerationY == rhs.hasLinearAccelerationY) && (!lhs.hasLinearAccelerationY || lhs.linearAccelerationY == rhs.linearAccelerationY)
  fieldCheck = fieldCheck && (lhs.hasLinearAccelerationZ == rhs.hasLinearAccelerationZ) && (!lhs.hasLinearAccelerationZ || lhs.linearAccelerationZ == rhs.linearAccelerationZ)
  fieldCheck = fieldCheck && (lhs.hasMagneticFieldX == rhs.hasMagneticFieldX) && (!lhs.hasMagneticFieldX || lhs.magneticFieldX == rhs.magneticFieldX)
  fieldCheck = fieldCheck && (lhs.hasMagneticFieldY == rhs.hasMagneticFieldY) && (!lhs.hasMagneticFieldY || lhs.magneticFieldY == rhs.magneticFieldY)
  fieldCheck = fieldCheck && (lhs.hasMagneticFieldZ == rhs.hasMagneticFieldZ) && (!lhs.hasMagneticFieldZ || lhs.magneticFieldZ == rhs.magneticFieldZ)
  fieldCheck = fieldCheck && (lhs.hasRotationVectorX == rhs.hasRotationVectorX) && (!lhs.hasRotationVectorX || lhs.rotationVectorX == rhs.rotationVectorX)
  fieldCheck = fieldCheck && (lhs.hasRotationVectorY == rhs.hasRotationVectorY) && (!lhs.hasRotationVectorY || lhs.rotationVectorY == rhs.rotationVectorY)
  fieldCheck = fieldCheck && (lhs.hasRotationVectorZ == rhs.hasRotationVectorZ) && (!lhs.hasRotationVectorZ || lhs.rotationVectorZ == rhs.rotationVectorZ)
  fieldCheck = fieldCheck && (lhs.hasGyroscopeRawX == rhs.hasGyroscopeRawX) && (!lhs.hasGyroscopeRawX || lhs.gyroscopeRawX == rhs.gyroscopeRawX)
  fieldCheck = fieldCheck && (lhs.hasGyroscopeRawY == rhs.hasGyroscopeRawY) && (!lhs.hasGyroscopeRawY || lhs.gyroscopeRawY == rhs.gyroscopeRawY)
  fieldCheck = fieldCheck && (lhs.hasGyroscopeRawZ == rhs.hasGyroscopeRawZ) && (!lhs.hasGyroscopeRawZ || lhs.gyroscopeRawZ == rhs.gyroscopeRawZ)
  fieldCheck = fieldCheck && (lhs.hasGravityX == rhs.hasGravityX) && (!lhs.hasGravityX || lhs.gravityX == rhs.gravityX)
  fieldCheck = fieldCheck && (lhs.hasGravityY == rhs.hasGravityY) && (!lhs.hasGravityY || lhs.gravityY == rhs.gravityY)
  fieldCheck = fieldCheck && (lhs.hasGravityZ == rhs.hasGravityZ) && (!lhs.hasGravityZ || lhs.gravityZ == rhs.gravityZ)
  fieldCheck = fieldCheck && (lhs.hasAccelerometerAxes == rhs.hasAccelerometerAxes) && (!lhs.hasAccelerometerAxes || lhs.accelerometerAxes == rhs.accelerometerAxes)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.Signature.DeviceInfo, rhs: Pogoprotos.Networking.Envelopes.Signature.DeviceInfo) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasDeviceId == rhs.hasDeviceId) && (!lhs.hasDeviceId || lhs.deviceId == rhs.deviceId)
  fieldCheck = fieldCheck && (lhs.hasAndroidBoardName == rhs.hasAndroidBoardName) && (!lhs.hasAndroidBoardName || lhs.androidBoardName == rhs.androidBoardName)
  fieldCheck = fieldCheck && (lhs.hasAndroidBootloader == rhs.hasAndroidBootloader) && (!lhs.hasAndroidBootloader || lhs.androidBootloader == rhs.androidBootloader)
  fieldCheck = fieldCheck && (lhs.hasDeviceBrand == rhs.hasDeviceBrand) && (!lhs.hasDeviceBrand || lhs.deviceBrand == rhs.deviceBrand)
  fieldCheck = fieldCheck && (lhs.hasDeviceModel == rhs.hasDeviceModel) && (!lhs.hasDeviceModel || lhs.deviceModel == rhs.deviceModel)
  fieldCheck = fieldCheck && (lhs.hasDeviceModelIdentifier == rhs.hasDeviceModelIdentifier) && (!lhs.hasDeviceModelIdentifier || lhs.deviceModelIdentifier == rhs.deviceModelIdentifier)
  fieldCheck = fieldCheck && (lhs.hasDeviceModelBoot == rhs.hasDeviceModelBoot) && (!lhs.hasDeviceModelBoot || lhs.deviceModelBoot == rhs.deviceModelBoot)
  fieldCheck = fieldCheck && (lhs.hasHardwareManufacturer == rhs.hasHardwareManufacturer) && (!lhs.hasHardwareManufacturer || lhs.hardwareManufacturer == rhs.hardwareManufacturer)
  fieldCheck = fieldCheck && (lhs.hasHardwareModel == rhs.hasHardwareModel) && (!lhs.hasHardwareModel || lhs.hardwareModel == rhs.hardwareModel)
  fieldCheck = fieldCheck && (lhs.hasFirmwareBrand == rhs.hasFirmwareBrand) && (!lhs.hasFirmwareBrand || lhs.firmwareBrand == rhs.firmwareBrand)
  fieldCheck = fieldCheck && (lhs.hasFirmwareTags == rhs.hasFirmwareTags) && (!lhs.hasFirmwareTags || lhs.firmwareTags == rhs.firmwareTags)
  fieldCheck = fieldCheck && (lhs.hasFirmwareType == rhs.hasFirmwareType) && (!lhs.hasFirmwareType || lhs.firmwareType == rhs.firmwareType)
  fieldCheck = fieldCheck && (lhs.hasFirmwareFingerprint == rhs.hasFirmwareFingerprint) && (!lhs.hasFirmwareFingerprint || lhs.firmwareFingerprint == rhs.firmwareFingerprint)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public func == (lhs: Pogoprotos.Networking.Envelopes.Signature.ActivityStatus, rhs: Pogoprotos.Networking.Envelopes.Signature.ActivityStatus) -> Bool {
  if (lhs === rhs) {
    return true
  }
  var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
  fieldCheck = fieldCheck && (lhs.hasStartTimeMs == rhs.hasStartTimeMs) && (!lhs.hasStartTimeMs || lhs.startTimeMs == rhs.startTimeMs)
  fieldCheck = fieldCheck && (lhs.hasUnknownStatus == rhs.hasUnknownStatus) && (!lhs.hasUnknownStatus || lhs.unknownStatus == rhs.unknownStatus)
  fieldCheck = fieldCheck && (lhs.hasWalking == rhs.hasWalking) && (!lhs.hasWalking || lhs.walking == rhs.walking)
  fieldCheck = fieldCheck && (lhs.hasRunning == rhs.hasRunning) && (!lhs.hasRunning || lhs.running == rhs.running)
  fieldCheck = fieldCheck && (lhs.hasStationary == rhs.hasStationary) && (!lhs.hasStationary || lhs.stationary == rhs.stationary)
  fieldCheck = fieldCheck && (lhs.hasAutomotive == rhs.hasAutomotive) && (!lhs.hasAutomotive || lhs.automotive == rhs.automotive)
  fieldCheck = fieldCheck && (lhs.hasTilting == rhs.hasTilting) && (!lhs.hasTilting || lhs.tilting == rhs.tilting)
  fieldCheck = fieldCheck && (lhs.hasCycling == rhs.hasCycling) && (!lhs.hasCycling || lhs.cycling == rhs.cycling)
  fieldCheck = fieldCheck && (lhs.hasStatus == rhs.hasStatus) && (!lhs.hasStatus || lhs.status == rhs.status)
  fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
  return fieldCheck
}

public extension Pogoprotos.Networking.Envelopes {
  public struct PogoprotosNetworkingEnvelopesRoot {
    public static var sharedInstance : PogoprotosNetworkingEnvelopesRoot {
     struct Static {
         static let instance : PogoprotosNetworkingEnvelopesRoot = PogoprotosNetworkingEnvelopesRoot()
     }
     return Static.instance
    }
    public var extensionRegistry:ExtensionRegistry

    init() {
      extensionRegistry = ExtensionRegistry()
      registerAllExtensions(extensionRegistry)
      Pogoprotos.Networking.Requests.PogoprotosNetworkingRequestsRoot.sharedInstance.registerAllExtensions(extensionRegistry)
      Pogoprotos.Networking.Platform.PogoprotosNetworkingPlatformRoot.sharedInstance.registerAllExtensions(extensionRegistry)
    }
    public func registerAllExtensions(registry:ExtensionRegistry) {
    }
  }

  final public class AuthTicket : GeneratedMessage, GeneratedMessageProtocol {
    public private(set) var hasStart:Bool = false
    public private(set) var start:NSData = NSData()

    public private(set) var hasExpireTimestampMs:Bool = false
    public private(set) var expireTimestampMs:UInt64 = UInt64(0)

    public private(set) var hasEnd:Bool = false
    public private(set) var end:NSData = NSData()

    required public init() {
         super.init()
    }
    override public func isInitialized() -> Bool {
     return true
    }
    override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
      if hasStart {
        try output.writeData(1, value:start)
      }
      if hasExpireTimestampMs {
        try output.writeUInt64(2, value:expireTimestampMs)
      }
      if hasEnd {
        try output.writeData(3, value:end)
      }
      try unknownFields.writeToCodedOutputStream(output)
    }
    override public func serializedSize() -> Int32 {
      var serialize_size:Int32 = memoizedSerializedSize
      if serialize_size != -1 {
       return serialize_size
      }

      serialize_size = 0
      if hasStart {
        serialize_size += start.computeDataSize(1)
      }
      if hasExpireTimestampMs {
        serialize_size += expireTimestampMs.computeUInt64Size(2)
      }
      if hasEnd {
        serialize_size += end.computeDataSize(3)
      }
      serialize_size += unknownFields.serializedSize()
      memoizedSerializedSize = serialize_size
      return serialize_size
    }
    public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.AuthTicket> {
      var mergedArray = Array<Pogoprotos.Networking.Envelopes.AuthTicket>()
      while let value = try parseFromDelimitedFromInputStream(input) {
        mergedArray += [value]
      }
      return mergedArray
    }
    public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.AuthTicket? {
      return try Pogoprotos.Networking.Envelopes.AuthTicket.Builder().mergeDelimitedFromInputStream(input)?.build()
    }
    public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.AuthTicket {
      return try Pogoprotos.Networking.Envelopes.AuthTicket.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
    }
    public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.AuthTicket {
      return try Pogoprotos.Networking.Envelopes.AuthTicket.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.AuthTicket {
      return try Pogoprotos.Networking.Envelopes.AuthTicket.Builder().mergeFromInputStream(input).build()
    }
    public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.AuthTicket {
      return try Pogoprotos.Networking.Envelopes.AuthTicket.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.AuthTicket {
      return try Pogoprotos.Networking.Envelopes.AuthTicket.Builder().mergeFromCodedInputStream(input).build()
    }
    public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.AuthTicket {
      return try Pogoprotos.Networking.Envelopes.AuthTicket.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
    }
    public class func getBuilder() -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
      return Pogoprotos.Networking.Envelopes.AuthTicket.classBuilder() as! Pogoprotos.Networking.Envelopes.AuthTicket.Builder
    }
    public func getBuilder() -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
      return classBuilder() as! Pogoprotos.Networking.Envelopes.AuthTicket.Builder
    }
    override public class func classBuilder() -> MessageBuilder {
      return Pogoprotos.Networking.Envelopes.AuthTicket.Builder()
    }
    override public func classBuilder() -> MessageBuilder {
      return Pogoprotos.Networking.Envelopes.AuthTicket.Builder()
    }
    public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
      return try Pogoprotos.Networking.Envelopes.AuthTicket.builderWithPrototype(self)
    }
    public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.AuthTicket) throws -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
      return try Pogoprotos.Networking.Envelopes.AuthTicket.Builder().mergeFrom(prototype)
    }
    override public func encode() throws -> Dictionary<String,AnyObject> {
      guard isInitialized() else {
        throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
      }

      var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
      if hasStart {
        jsonMap["start"] = start.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
      }
      if hasExpireTimestampMs {
        jsonMap["expireTimestampMs"] = "\(expireTimestampMs)"
      }
      if hasEnd {
        jsonMap["end"] = end.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
      }
      return jsonMap
    }
    override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.AuthTicket {
      return try Pogoprotos.Networking.Envelopes.AuthTicket.Builder.decodeToBuilder(jsonMap).build()
    }
    override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.AuthTicket {
      return try Pogoprotos.Networking.Envelopes.AuthTicket.Builder.fromJSONToBuilder(data).build()
    }
    override public func getDescription(indent:String) throws -> String {
      var output = ""
      if hasStart {
        output += "\(indent) start: \(start) \n"
      }
      if hasExpireTimestampMs {
        output += "\(indent) expireTimestampMs: \(expireTimestampMs) \n"
      }
      if hasEnd {
        output += "\(indent) end: \(end) \n"
      }
      output += unknownFields.getDescription(indent)
      return output
    }
    override public var hashValue:Int {
        get {
            var hashCode:Int = 7
            if hasStart {
               hashCode = (hashCode &* 31) &+ start.hashValue
            }
            if hasExpireTimestampMs {
               hashCode = (hashCode &* 31) &+ expireTimestampMs.hashValue
            }
            if hasEnd {
               hashCode = (hashCode &* 31) &+ end.hashValue
            }
            hashCode = (hashCode &* 31) &+  unknownFields.hashValue
            return hashCode
        }
    }


    //Meta information declaration start

    override public class func className() -> String {
        return "Pogoprotos.Networking.Envelopes.AuthTicket"
    }
    override public func className() -> String {
        return "Pogoprotos.Networking.Envelopes.AuthTicket"
    }
    override public func classMetaType() -> GeneratedMessage.Type {
        return Pogoprotos.Networking.Envelopes.AuthTicket.self
    }
    //Meta information declaration end

    final public class Builder : GeneratedMessageBuilder {
      private var builderResult:Pogoprotos.Networking.Envelopes.AuthTicket = Pogoprotos.Networking.Envelopes.AuthTicket()
      public func getMessage() -> Pogoprotos.Networking.Envelopes.AuthTicket {
          return builderResult
      }

      required override public init () {
         super.init()
      }
      public var hasStart:Bool {
           get {
                return builderResult.hasStart
           }
      }
      public var start:NSData {
           get {
                return builderResult.start
           }
           set (value) {
               builderResult.hasStart = true
               builderResult.start = value
           }
      }
      public func setStart(value:NSData) -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
        self.start = value
        return self
      }
      public func clearStart() -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder{
           builderResult.hasStart = false
           builderResult.start = NSData()
           return self
      }
      public var hasExpireTimestampMs:Bool {
           get {
                return builderResult.hasExpireTimestampMs
           }
      }
      public var expireTimestampMs:UInt64 {
           get {
                return builderResult.expireTimestampMs
           }
           set (value) {
               builderResult.hasExpireTimestampMs = true
               builderResult.expireTimestampMs = value
           }
      }
      public func setExpireTimestampMs(value:UInt64) -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
        self.expireTimestampMs = value
        return self
      }
      public func clearExpireTimestampMs() -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder{
           builderResult.hasExpireTimestampMs = false
           builderResult.expireTimestampMs = UInt64(0)
           return self
      }
      public var hasEnd:Bool {
           get {
                return builderResult.hasEnd
           }
      }
      public var end:NSData {
           get {
                return builderResult.end
           }
           set (value) {
               builderResult.hasEnd = true
               builderResult.end = value
           }
      }
      public func setEnd(value:NSData) -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
        self.end = value
        return self
      }
      public func clearEnd() -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder{
           builderResult.hasEnd = false
           builderResult.end = NSData()
           return self
      }
      override public var internalGetResult:GeneratedMessage {
           get {
              return builderResult
           }
      }
      override public func clear() -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
        builderResult = Pogoprotos.Networking.Envelopes.AuthTicket()
        return self
      }
      override public func clone() throws -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
        return try Pogoprotos.Networking.Envelopes.AuthTicket.builderWithPrototype(builderResult)
      }
      override public func build() throws -> Pogoprotos.Networking.Envelopes.AuthTicket {
           try checkInitialized()
           return buildPartial()
      }
      public func buildPartial() -> Pogoprotos.Networking.Envelopes.AuthTicket {
        let returnMe:Pogoprotos.Networking.Envelopes.AuthTicket = builderResult
        return returnMe
      }
      public func mergeFrom(other:Pogoprotos.Networking.Envelopes.AuthTicket) throws -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
        if other == Pogoprotos.Networking.Envelopes.AuthTicket() {
         return self
        }
        if other.hasStart {
             start = other.start
        }
        if other.hasExpireTimestampMs {
             expireTimestampMs = other.expireTimestampMs
        }
        if other.hasEnd {
             end = other.end
        }
        try mergeUnknownFields(other.unknownFields)
        return self
      }
      override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
           return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
      }
      override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
        let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
        while (true) {
          let protobufTag = try input.readTag()
          switch protobufTag {
          case 0: 
            self.unknownFields = try unknownFieldsBuilder.build()
            return self

          case 10:
            start = try input.readData()

          case 16:
            expireTimestampMs = try input.readUInt64()

          case 26:
            end = try input.readData()

          default:
            if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
               unknownFields = try unknownFieldsBuilder.build()
               return self
            }
          }
        }
      }
      override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
        let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.AuthTicket.Builder()
        if let jsonValueStart = jsonMap["start"] as? String {
          resultDecodedBuilder.start = NSData(base64EncodedString:jsonValueStart, options: NSDataBase64DecodingOptions(rawValue:0))!
        }
        if let jsonValueExpireTimestampMs = jsonMap["expireTimestampMs"] as? String {
          resultDecodedBuilder.expireTimestampMs = UInt64(jsonValueExpireTimestampMs)!
        }
        if let jsonValueEnd = jsonMap["end"] as? String {
          resultDecodedBuilder.end = NSData(base64EncodedString:jsonValueEnd, options: NSDataBase64DecodingOptions(rawValue:0))!
        }
        return resultDecodedBuilder
      }
      override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
        let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
        guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
          throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
        }
        return try Pogoprotos.Networking.Envelopes.AuthTicket.Builder.decodeToBuilder(jsDataCast)
      }
    }

  }

  final public class RequestEnvelope : GeneratedMessage, GeneratedMessageProtocol {


    //Nested type declaration start

      final public class AuthInfo : GeneratedMessage, GeneratedMessageProtocol {


        //Nested type declaration start

          final public class Jwt : GeneratedMessage, GeneratedMessageProtocol {
            public private(set) var hasContents:Bool = false
            public private(set) var contents:String = ""

            public private(set) var hasUnknown2:Bool = false
            public private(set) var unknown2:Int32 = Int32(0)

            required public init() {
                 super.init()
            }
            override public func isInitialized() -> Bool {
             return true
            }
            override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
              if hasContents {
                try output.writeString(1, value:contents)
              }
              if hasUnknown2 {
                try output.writeInt32(2, value:unknown2)
              }
              try unknownFields.writeToCodedOutputStream(output)
            }
            override public func serializedSize() -> Int32 {
              var serialize_size:Int32 = memoizedSerializedSize
              if serialize_size != -1 {
               return serialize_size
              }

              serialize_size = 0
              if hasContents {
                serialize_size += contents.computeStringSize(1)
              }
              if hasUnknown2 {
                serialize_size += unknown2.computeInt32Size(2)
              }
              serialize_size += unknownFields.serializedSize()
              memoizedSerializedSize = serialize_size
              return serialize_size
            }
            public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt> {
              var mergedArray = Array<Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt>()
              while let value = try parseFromDelimitedFromInputStream(input) {
                mergedArray += [value]
              }
              return mergedArray
            }
            public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt? {
              return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder().mergeDelimitedFromInputStream(input)?.build()
            }
            public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt {
              return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
            }
            public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt {
              return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
            }
            public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt {
              return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder().mergeFromInputStream(input).build()
            }
            public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt {
              return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
            }
            public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt {
              return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder().mergeFromCodedInputStream(input).build()
            }
            public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt {
              return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
            }
            public class func getBuilder() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
              return Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.classBuilder() as! Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder
            }
            public func getBuilder() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
              return classBuilder() as! Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder
            }
            override public class func classBuilder() -> MessageBuilder {
              return Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder()
            }
            override public func classBuilder() -> MessageBuilder {
              return Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder()
            }
            public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
              return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.builderWithPrototype(self)
            }
            public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
              return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder().mergeFrom(prototype)
            }
            override public func encode() throws -> Dictionary<String,AnyObject> {
              guard isInitialized() else {
                throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
              }

              var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
              if hasContents {
                jsonMap["contents"] = contents
              }
              if hasUnknown2 {
                jsonMap["unknown2"] = NSNumber(int:unknown2)
              }
              return jsonMap
            }
            override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt {
              return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder.decodeToBuilder(jsonMap).build()
            }
            override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt {
              return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder.fromJSONToBuilder(data).build()
            }
            override public func getDescription(indent:String) throws -> String {
              var output = ""
              if hasContents {
                output += "\(indent) contents: \(contents) \n"
              }
              if hasUnknown2 {
                output += "\(indent) unknown2: \(unknown2) \n"
              }
              output += unknownFields.getDescription(indent)
              return output
            }
            override public var hashValue:Int {
                get {
                    var hashCode:Int = 7
                    if hasContents {
                       hashCode = (hashCode &* 31) &+ contents.hashValue
                    }
                    if hasUnknown2 {
                       hashCode = (hashCode &* 31) &+ unknown2.hashValue
                    }
                    hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                    return hashCode
                }
            }


            //Meta information declaration start

            override public class func className() -> String {
                return "Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt"
            }
            override public func className() -> String {
                return "Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt"
            }
            override public func classMetaType() -> GeneratedMessage.Type {
                return Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.self
            }
            //Meta information declaration end

            final public class Builder : GeneratedMessageBuilder {
              private var builderResult:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt = Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt()
              public func getMessage() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt {
                  return builderResult
              }

              required override public init () {
                 super.init()
              }
              public var hasContents:Bool {
                   get {
                        return builderResult.hasContents
                   }
              }
              public var contents:String {
                   get {
                        return builderResult.contents
                   }
                   set (value) {
                       builderResult.hasContents = true
                       builderResult.contents = value
                   }
              }
              public func setContents(value:String) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
                self.contents = value
                return self
              }
              public func clearContents() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder{
                   builderResult.hasContents = false
                   builderResult.contents = ""
                   return self
              }
              public var hasUnknown2:Bool {
                   get {
                        return builderResult.hasUnknown2
                   }
              }
              public var unknown2:Int32 {
                   get {
                        return builderResult.unknown2
                   }
                   set (value) {
                       builderResult.hasUnknown2 = true
                       builderResult.unknown2 = value
                   }
              }
              public func setUnknown2(value:Int32) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
                self.unknown2 = value
                return self
              }
              public func clearUnknown2() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder{
                   builderResult.hasUnknown2 = false
                   builderResult.unknown2 = Int32(0)
                   return self
              }
              override public var internalGetResult:GeneratedMessage {
                   get {
                      return builderResult
                   }
              }
              override public func clear() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
                builderResult = Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt()
                return self
              }
              override public func clone() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
                return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.builderWithPrototype(builderResult)
              }
              override public func build() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt {
                   try checkInitialized()
                   return buildPartial()
              }
              public func buildPartial() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt {
                let returnMe:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt = builderResult
                return returnMe
              }
              public func mergeFrom(other:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
                if other == Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt() {
                 return self
                }
                if other.hasContents {
                     contents = other.contents
                }
                if other.hasUnknown2 {
                     unknown2 = other.unknown2
                }
                try mergeUnknownFields(other.unknownFields)
                return self
              }
              override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
                   return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
              }
              override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
                let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
                while (true) {
                  let protobufTag = try input.readTag()
                  switch protobufTag {
                  case 0: 
                    self.unknownFields = try unknownFieldsBuilder.build()
                    return self

                  case 10:
                    contents = try input.readString()

                  case 16:
                    unknown2 = try input.readInt32()

                  default:
                    if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                       unknownFields = try unknownFieldsBuilder.build()
                       return self
                    }
                  }
                }
              }
              override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
                let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder()
                if let jsonValueContents = jsonMap["contents"] as? String {
                  resultDecodedBuilder.contents = jsonValueContents
                }
                if let jsonValueUnknown2 = jsonMap["unknown2"] as? NSNumber {
                  resultDecodedBuilder.unknown2 = jsonValueUnknown2.intValue
                }
                return resultDecodedBuilder
              }
              override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
                let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
                guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
                  throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
                }
                return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder.decodeToBuilder(jsDataCast)
              }
            }

          }

        //Nested type declaration end

        public private(set) var hasProvider:Bool = false
        public private(set) var provider:String = ""

        public private(set) var hasToken:Bool = false
        public private(set) var token:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt!
        required public init() {
             super.init()
        }
        override public func isInitialized() -> Bool {
         return true
        }
        override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
          if hasProvider {
            try output.writeString(1, value:provider)
          }
          if hasToken {
            try output.writeMessage(2, value:token)
          }
          try unknownFields.writeToCodedOutputStream(output)
        }
        override public func serializedSize() -> Int32 {
          var serialize_size:Int32 = memoizedSerializedSize
          if serialize_size != -1 {
           return serialize_size
          }

          serialize_size = 0
          if hasProvider {
            serialize_size += provider.computeStringSize(1)
          }
          if hasToken {
              if let varSizetoken = token?.computeMessageSize(2) {
                  serialize_size += varSizetoken
              }
          }
          serialize_size += unknownFields.serializedSize()
          memoizedSerializedSize = serialize_size
          return serialize_size
        }
        public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo> {
          var mergedArray = Array<Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo>()
          while let value = try parseFromDelimitedFromInputStream(input) {
            mergedArray += [value]
          }
          return mergedArray
        }
        public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo? {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder().mergeDelimitedFromInputStream(input)?.build()
        }
        public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
        }
        public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder().mergeFromInputStream(input).build()
        }
        public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder().mergeFromCodedInputStream(input).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func getBuilder() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
          return Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.classBuilder() as! Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder
        }
        public func getBuilder() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
          return classBuilder() as! Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder
        }
        override public class func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder()
        }
        override public func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder()
        }
        public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.builderWithPrototype(self)
        }
        public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder().mergeFrom(prototype)
        }
        override public func encode() throws -> Dictionary<String,AnyObject> {
          guard isInitialized() else {
            throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
          }

          var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
          if hasProvider {
            jsonMap["provider"] = provider
          }
          if hasToken {
            jsonMap["token"] = try token.encode()
          }
          return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder.decodeToBuilder(jsonMap).build()
        }
        override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder.fromJSONToBuilder(data).build()
        }
        override public func getDescription(indent:String) throws -> String {
          var output = ""
          if hasProvider {
            output += "\(indent) provider: \(provider) \n"
          }
          if hasToken {
            output += "\(indent) token {\n"
            if let outDescToken = token {
              output += try outDescToken.getDescription("\(indent)  ")
            }
            output += "\(indent) }\n"
          }
          output += unknownFields.getDescription(indent)
          return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasProvider {
                   hashCode = (hashCode &* 31) &+ provider.hashValue
                }
                if hasToken {
                    if let hashValuetoken = token?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValuetoken
                    }
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

        override public class func className() -> String {
            return "Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo"
        }
        override public func className() -> String {
            return "Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo"
        }
        override public func classMetaType() -> GeneratedMessage.Type {
            return Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.self
        }
        //Meta information declaration end

        final public class Builder : GeneratedMessageBuilder {
          private var builderResult:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo = Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo()
          public func getMessage() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo {
              return builderResult
          }

          required override public init () {
             super.init()
          }
          public var hasProvider:Bool {
               get {
                    return builderResult.hasProvider
               }
          }
          public var provider:String {
               get {
                    return builderResult.provider
               }
               set (value) {
                   builderResult.hasProvider = true
                   builderResult.provider = value
               }
          }
          public func setProvider(value:String) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
            self.provider = value
            return self
          }
          public func clearProvider() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder{
               builderResult.hasProvider = false
               builderResult.provider = ""
               return self
          }
          public var hasToken:Bool {
               get {
                   return builderResult.hasToken
               }
          }
          public var token:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt! {
               get {
                   if tokenBuilder_ != nil {
                      builderResult.token = tokenBuilder_.getMessage()
                   }
                   return builderResult.token
               }
               set (value) {
                   builderResult.hasToken = true
                   builderResult.token = value
               }
          }
          private var tokenBuilder_:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder! {
               didSet {
                  builderResult.hasToken = true
               }
          }
          public func getTokenBuilder() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder {
            if tokenBuilder_ == nil {
               tokenBuilder_ = Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder()
               builderResult.token = tokenBuilder_.getMessage()
               if token != nil {
                  try! tokenBuilder_.mergeFrom(token)
               }
            }
            return tokenBuilder_
          }
          public func setToken(value:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt!) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
            self.token = value
            return self
          }
          public func mergeToken(value:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
            if builderResult.hasToken {
              builderResult.token = try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.builderWithPrototype(builderResult.token).mergeFrom(value).buildPartial()
            } else {
              builderResult.token = value
            }
            builderResult.hasToken = true
            return self
          }
          public func clearToken() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
            tokenBuilder_ = nil
            builderResult.hasToken = false
            builderResult.token = nil
            return self
          }
          override public var internalGetResult:GeneratedMessage {
               get {
                  return builderResult
               }
          }
          override public func clear() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
            builderResult = Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo()
            return self
          }
          override public func clone() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
            return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.builderWithPrototype(builderResult)
          }
          override public func build() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo {
               try checkInitialized()
               return buildPartial()
          }
          public func buildPartial() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo {
            let returnMe:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo = builderResult
            return returnMe
          }
          public func mergeFrom(other:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
            if other == Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo() {
             return self
            }
            if other.hasProvider {
                 provider = other.provider
            }
            if (other.hasToken) {
                try mergeToken(other.token)
            }
            try mergeUnknownFields(other.unknownFields)
            return self
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
               return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
            let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
            while (true) {
              let protobufTag = try input.readTag()
              switch protobufTag {
              case 0: 
                self.unknownFields = try unknownFieldsBuilder.build()
                return self

              case 10:
                provider = try input.readString()

              case 18:
                let subBuilder:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder = Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder()
                if hasToken {
                  try subBuilder.mergeFrom(token)
                }
                try input.readMessage(subBuilder, extensionRegistry:extensionRegistry)
                token = subBuilder.buildPartial()

              default:
                if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                   unknownFields = try unknownFieldsBuilder.build()
                   return self
                }
              }
            }
          }
          override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
            let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder()
            if let jsonValueProvider = jsonMap["provider"] as? String {
              resultDecodedBuilder.provider = jsonValueProvider
            }
            if let jsonValueToken = jsonMap["token"] as? Dictionary<String,AnyObject> {
              resultDecodedBuilder.token = try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Jwt.Builder.decodeToBuilder(jsonValueToken).build()

            }
            return resultDecodedBuilder
          }
          override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
            let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
            guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
              throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
            }
            return try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder.decodeToBuilder(jsDataCast)
          }
        }

      }

    //Nested type declaration end



    //Nested type declaration start

      final public class PlatformRequest : GeneratedMessage, GeneratedMessageProtocol {
        public private(set) var types:Pogoprotos.Networking.Platform.PlatformRequestType = Pogoprotos.Networking.Platform.PlatformRequestType.MethodUnset
        public private(set) var hasTypes:Bool = false
        public private(set) var hasRequestMessage:Bool = false
        public private(set) var requestMessage:NSData = NSData()

        required public init() {
             super.init()
        }
        override public func isInitialized() -> Bool {
         return true
        }
        override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
          if hasTypes {
            try output.writeEnum(1, value:types.rawValue)
          }
          if hasRequestMessage {
            try output.writeData(2, value:requestMessage)
          }
          try unknownFields.writeToCodedOutputStream(output)
        }
        override public func serializedSize() -> Int32 {
          var serialize_size:Int32 = memoizedSerializedSize
          if serialize_size != -1 {
           return serialize_size
          }

          serialize_size = 0
          if (hasTypes) {
            serialize_size += types.rawValue.computeEnumSize(1)
          }
          if hasRequestMessage {
            serialize_size += requestMessage.computeDataSize(2)
          }
          serialize_size += unknownFields.serializedSize()
          memoizedSerializedSize = serialize_size
          return serialize_size
        }
        public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest> {
          var mergedArray = Array<Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest>()
          while let value = try parseFromDelimitedFromInputStream(input) {
            mergedArray += [value]
          }
          return mergedArray
        }
        public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest? {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder().mergeDelimitedFromInputStream(input)?.build()
        }
        public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
        }
        public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder().mergeFromInputStream(input).build()
        }
        public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder().mergeFromCodedInputStream(input).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func getBuilder() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
          return Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.classBuilder() as! Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder
        }
        public func getBuilder() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
          return classBuilder() as! Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder
        }
        override public class func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder()
        }
        override public func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder()
        }
        public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.builderWithPrototype(self)
        }
        public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder().mergeFrom(prototype)
        }
        override public func encode() throws -> Dictionary<String,AnyObject> {
          guard isInitialized() else {
            throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
          }

          var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
          if hasTypes {
            jsonMap["type"] = types.toString()
          }
          if hasRequestMessage {
            jsonMap["requestMessage"] = requestMessage.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
          }
          return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder.decodeToBuilder(jsonMap).build()
        }
        override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest {
          return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder.fromJSONToBuilder(data).build()
        }
        override public func getDescription(indent:String) throws -> String {
          var output = ""
          if (hasTypes) {
            output += "\(indent) types: \(types.description)\n"
          }
          if hasRequestMessage {
            output += "\(indent) requestMessage: \(requestMessage) \n"
          }
          output += unknownFields.getDescription(indent)
          return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasTypes {
                   hashCode = (hashCode &* 31) &+ Int(types.rawValue)
                }
                if hasRequestMessage {
                   hashCode = (hashCode &* 31) &+ requestMessage.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

        override public class func className() -> String {
            return "Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest"
        }
        override public func className() -> String {
            return "Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest"
        }
        override public func classMetaType() -> GeneratedMessage.Type {
            return Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.self
        }
        //Meta information declaration end

        final public class Builder : GeneratedMessageBuilder {
          private var builderResult:Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest = Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest()
          public func getMessage() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest {
              return builderResult
          }

          required override public init () {
             super.init()
          }
            public var hasTypes:Bool{
                get {
                    return builderResult.hasTypes
                }
            }
            public var types:Pogoprotos.Networking.Platform.PlatformRequestType {
                get {
                    return builderResult.types
                }
                set (value) {
                    builderResult.hasTypes = true
                    builderResult.types = value
                }
            }
            public func setTypes(value:Pogoprotos.Networking.Platform.PlatformRequestType) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
              self.types = value
              return self
            }
            public func clearTypes() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
               builderResult.hasTypes = false
               builderResult.types = .MethodUnset
               return self
            }
          public var hasRequestMessage:Bool {
               get {
                    return builderResult.hasRequestMessage
               }
          }
          public var requestMessage:NSData {
               get {
                    return builderResult.requestMessage
               }
               set (value) {
                   builderResult.hasRequestMessage = true
                   builderResult.requestMessage = value
               }
          }
          public func setRequestMessage(value:NSData) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
            self.requestMessage = value
            return self
          }
          public func clearRequestMessage() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder{
               builderResult.hasRequestMessage = false
               builderResult.requestMessage = NSData()
               return self
          }
          override public var internalGetResult:GeneratedMessage {
               get {
                  return builderResult
               }
          }
          override public func clear() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
            builderResult = Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest()
            return self
          }
          override public func clone() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
            return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.builderWithPrototype(builderResult)
          }
          override public func build() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest {
               try checkInitialized()
               return buildPartial()
          }
          public func buildPartial() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest {
            let returnMe:Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest = builderResult
            return returnMe
          }
          public func mergeFrom(other:Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
            if other == Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest() {
             return self
            }
            if other.hasTypes {
                 types = other.types
            }
            if other.hasRequestMessage {
                 requestMessage = other.requestMessage
            }
            try mergeUnknownFields(other.unknownFields)
            return self
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
               return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
            let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
            while (true) {
              let protobufTag = try input.readTag()
              switch protobufTag {
              case 0: 
                self.unknownFields = try unknownFieldsBuilder.build()
                return self

              case 8:
                let valueInttypes = try input.readEnum()
                if let enumstypes = Pogoprotos.Networking.Platform.PlatformRequestType(rawValue:valueInttypes){
                     types = enumstypes
                } else {
                     try unknownFieldsBuilder.mergeVarintField(1, value:Int64(valueInttypes))
                }

              case 18:
                requestMessage = try input.readData()

              default:
                if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                   unknownFields = try unknownFieldsBuilder.build()
                   return self
                }
              }
            }
          }
          override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
            let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder()
            if let jsonValueTypes = jsonMap["type"] as? String {
              resultDecodedBuilder.types = try Pogoprotos.Networking.Platform.PlatformRequestType.fromString(jsonValueTypes)
            }
            if let jsonValueRequestMessage = jsonMap["requestMessage"] as? String {
              resultDecodedBuilder.requestMessage = NSData(base64EncodedString:jsonValueRequestMessage, options: NSDataBase64DecodingOptions(rawValue:0))!
            }
            return resultDecodedBuilder
          }
          override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder {
            let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
            guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
              throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
            }
            return try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder.decodeToBuilder(jsDataCast)
          }
        }

      }

    //Nested type declaration end

    public private(set) var hasStatusCode:Bool = false
    public private(set) var statusCode:Int32 = Int32(0)

    public private(set) var hasRequestId:Bool = false
    public private(set) var requestId:UInt64 = UInt64(0)

    public private(set) var requests:Array<Pogoprotos.Networking.Requests.Request>  = Array<Pogoprotos.Networking.Requests.Request>()
    public private(set) var platformRequests:Array<Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest>  = Array<Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest>()
    public private(set) var hasLatitude:Bool = false
    public private(set) var latitude:Double = Double(0)

    public private(set) var hasLongitude:Bool = false
    public private(set) var longitude:Double = Double(0)

    public private(set) var hasAccuracy:Bool = false
    public private(set) var accuracy:Double = Double(0)

    public private(set) var hasAuthInfo:Bool = false
    public private(set) var authInfo:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo!
    public private(set) var hasAuthTicket:Bool = false
    public private(set) var authTicket:Pogoprotos.Networking.Envelopes.AuthTicket!
    public private(set) var hasMsSinceLastLocationfix:Bool = false
    public private(set) var msSinceLastLocationfix:Int64 = Int64(0)

    required public init() {
         super.init()
    }
    override public func isInitialized() -> Bool {
     return true
    }
    override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
      if hasStatusCode {
        try output.writeInt32(1, value:statusCode)
      }
      if hasRequestId {
        try output.writeUInt64(3, value:requestId)
      }
      for oneElementRequests in requests {
          try output.writeMessage(4, value:oneElementRequests)
      }
      for oneElementPlatformRequests in platformRequests {
          try output.writeMessage(6, value:oneElementPlatformRequests)
      }
      if hasLatitude {
        try output.writeDouble(7, value:latitude)
      }
      if hasLongitude {
        try output.writeDouble(8, value:longitude)
      }
      if hasAccuracy {
        try output.writeDouble(9, value:accuracy)
      }
      if hasAuthInfo {
        try output.writeMessage(10, value:authInfo)
      }
      if hasAuthTicket {
        try output.writeMessage(11, value:authTicket)
      }
      if hasMsSinceLastLocationfix {
        try output.writeInt64(12, value:msSinceLastLocationfix)
      }
      try unknownFields.writeToCodedOutputStream(output)
    }
    override public func serializedSize() -> Int32 {
      var serialize_size:Int32 = memoizedSerializedSize
      if serialize_size != -1 {
       return serialize_size
      }

      serialize_size = 0
      if hasStatusCode {
        serialize_size += statusCode.computeInt32Size(1)
      }
      if hasRequestId {
        serialize_size += requestId.computeUInt64Size(3)
      }
      for oneElementRequests in requests {
          serialize_size += oneElementRequests.computeMessageSize(4)
      }
      for oneElementPlatformRequests in platformRequests {
          serialize_size += oneElementPlatformRequests.computeMessageSize(6)
      }
      if hasLatitude {
        serialize_size += latitude.computeDoubleSize(7)
      }
      if hasLongitude {
        serialize_size += longitude.computeDoubleSize(8)
      }
      if hasAccuracy {
        serialize_size += accuracy.computeDoubleSize(9)
      }
      if hasAuthInfo {
          if let varSizeauthInfo = authInfo?.computeMessageSize(10) {
              serialize_size += varSizeauthInfo
          }
      }
      if hasAuthTicket {
          if let varSizeauthTicket = authTicket?.computeMessageSize(11) {
              serialize_size += varSizeauthTicket
          }
      }
      if hasMsSinceLastLocationfix {
        serialize_size += msSinceLastLocationfix.computeInt64Size(12)
      }
      serialize_size += unknownFields.serializedSize()
      memoizedSerializedSize = serialize_size
      return serialize_size
    }
    public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.RequestEnvelope> {
      var mergedArray = Array<Pogoprotos.Networking.Envelopes.RequestEnvelope>()
      while let value = try parseFromDelimitedFromInputStream(input) {
        mergedArray += [value]
      }
      return mergedArray
    }
    public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope? {
      return try Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder().mergeDelimitedFromInputStream(input)?.build()
    }
    public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope {
      return try Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
    }
    public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope {
      return try Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope {
      return try Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder().mergeFromInputStream(input).build()
    }
    public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope {
      return try Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope {
      return try Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder().mergeFromCodedInputStream(input).build()
    }
    public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope {
      return try Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
    }
    public class func getBuilder() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
      return Pogoprotos.Networking.Envelopes.RequestEnvelope.classBuilder() as! Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder
    }
    public func getBuilder() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
      return classBuilder() as! Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder
    }
    override public class func classBuilder() -> MessageBuilder {
      return Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder()
    }
    override public func classBuilder() -> MessageBuilder {
      return Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder()
    }
    public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
      return try Pogoprotos.Networking.Envelopes.RequestEnvelope.builderWithPrototype(self)
    }
    public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.RequestEnvelope) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
      return try Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder().mergeFrom(prototype)
    }
    override public func encode() throws -> Dictionary<String,AnyObject> {
      guard isInitialized() else {
        throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
      }

      var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
      if hasStatusCode {
        jsonMap["statusCode"] = NSNumber(int:statusCode)
      }
      if hasRequestId {
        jsonMap["requestId"] = "\(requestId)"
      }
      if !requests.isEmpty {
        var jsonArrayRequests:Array<Dictionary<String,AnyObject>> = []
          for oneValueRequests in requests {
            let ecodedMessageRequests = try oneValueRequests.encode()
            jsonArrayRequests += [ecodedMessageRequests]
          }
        jsonMap["requests"] = jsonArrayRequests
      }
      if !platformRequests.isEmpty {
        var jsonArrayPlatformRequests:Array<Dictionary<String,AnyObject>> = []
          for oneValuePlatformRequests in platformRequests {
            let ecodedMessagePlatformRequests = try oneValuePlatformRequests.encode()
            jsonArrayPlatformRequests += [ecodedMessagePlatformRequests]
          }
        jsonMap["platformRequests"] = jsonArrayPlatformRequests
      }
      if hasLatitude {
        jsonMap["latitude"] = NSNumber(double:latitude)
      }
      if hasLongitude {
        jsonMap["longitude"] = NSNumber(double:longitude)
      }
      if hasAccuracy {
        jsonMap["accuracy"] = NSNumber(double:accuracy)
      }
      if hasAuthInfo {
        jsonMap["authInfo"] = try authInfo.encode()
      }
      if hasAuthTicket {
        jsonMap["authTicket"] = try authTicket.encode()
      }
      if hasMsSinceLastLocationfix {
        jsonMap["msSinceLastLocationfix"] = "\(msSinceLastLocationfix)"
      }
      return jsonMap
    }
    override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope {
      return try Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder.decodeToBuilder(jsonMap).build()
    }
    override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope {
      return try Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder.fromJSONToBuilder(data).build()
    }
    override public func getDescription(indent:String) throws -> String {
      var output = ""
      if hasStatusCode {
        output += "\(indent) statusCode: \(statusCode) \n"
      }
      if hasRequestId {
        output += "\(indent) requestId: \(requestId) \n"
      }
      var requestsElementIndex:Int = 0
      for oneElementRequests in requests {
          output += "\(indent) requests[\(requestsElementIndex)] {\n"
          output += try oneElementRequests.getDescription("\(indent)  ")
          output += "\(indent)}\n"
          requestsElementIndex += 1
      }
      var platformRequestsElementIndex:Int = 0
      for oneElementPlatformRequests in platformRequests {
          output += "\(indent) platformRequests[\(platformRequestsElementIndex)] {\n"
          output += try oneElementPlatformRequests.getDescription("\(indent)  ")
          output += "\(indent)}\n"
          platformRequestsElementIndex += 1
      }
      if hasLatitude {
        output += "\(indent) latitude: \(latitude) \n"
      }
      if hasLongitude {
        output += "\(indent) longitude: \(longitude) \n"
      }
      if hasAccuracy {
        output += "\(indent) accuracy: \(accuracy) \n"
      }
      if hasAuthInfo {
        output += "\(indent) authInfo {\n"
        if let outDescAuthInfo = authInfo {
          output += try outDescAuthInfo.getDescription("\(indent)  ")
        }
        output += "\(indent) }\n"
      }
      if hasAuthTicket {
        output += "\(indent) authTicket {\n"
        if let outDescAuthTicket = authTicket {
          output += try outDescAuthTicket.getDescription("\(indent)  ")
        }
        output += "\(indent) }\n"
      }
      if hasMsSinceLastLocationfix {
        output += "\(indent) msSinceLastLocationfix: \(msSinceLastLocationfix) \n"
      }
      output += unknownFields.getDescription(indent)
      return output
    }
    override public var hashValue:Int {
        get {
            var hashCode:Int = 7
            if hasStatusCode {
               hashCode = (hashCode &* 31) &+ statusCode.hashValue
            }
            if hasRequestId {
               hashCode = (hashCode &* 31) &+ requestId.hashValue
            }
            for oneElementRequests in requests {
                hashCode = (hashCode &* 31) &+ oneElementRequests.hashValue
            }
            for oneElementPlatformRequests in platformRequests {
                hashCode = (hashCode &* 31) &+ oneElementPlatformRequests.hashValue
            }
            if hasLatitude {
               hashCode = (hashCode &* 31) &+ latitude.hashValue
            }
            if hasLongitude {
               hashCode = (hashCode &* 31) &+ longitude.hashValue
            }
            if hasAccuracy {
               hashCode = (hashCode &* 31) &+ accuracy.hashValue
            }
            if hasAuthInfo {
                if let hashValueauthInfo = authInfo?.hashValue {
                    hashCode = (hashCode &* 31) &+ hashValueauthInfo
                }
            }
            if hasAuthTicket {
                if let hashValueauthTicket = authTicket?.hashValue {
                    hashCode = (hashCode &* 31) &+ hashValueauthTicket
                }
            }
            if hasMsSinceLastLocationfix {
               hashCode = (hashCode &* 31) &+ msSinceLastLocationfix.hashValue
            }
            hashCode = (hashCode &* 31) &+  unknownFields.hashValue
            return hashCode
        }
    }


    //Meta information declaration start

    override public class func className() -> String {
        return "Pogoprotos.Networking.Envelopes.RequestEnvelope"
    }
    override public func className() -> String {
        return "Pogoprotos.Networking.Envelopes.RequestEnvelope"
    }
    override public func classMetaType() -> GeneratedMessage.Type {
        return Pogoprotos.Networking.Envelopes.RequestEnvelope.self
    }
    //Meta information declaration end

    final public class Builder : GeneratedMessageBuilder {
      private var builderResult:Pogoprotos.Networking.Envelopes.RequestEnvelope = Pogoprotos.Networking.Envelopes.RequestEnvelope()
      public func getMessage() -> Pogoprotos.Networking.Envelopes.RequestEnvelope {
          return builderResult
      }

      required override public init () {
         super.init()
      }
      public var hasStatusCode:Bool {
           get {
                return builderResult.hasStatusCode
           }
      }
      public var statusCode:Int32 {
           get {
                return builderResult.statusCode
           }
           set (value) {
               builderResult.hasStatusCode = true
               builderResult.statusCode = value
           }
      }
      public func setStatusCode(value:Int32) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        self.statusCode = value
        return self
      }
      public func clearStatusCode() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder{
           builderResult.hasStatusCode = false
           builderResult.statusCode = Int32(0)
           return self
      }
      public var hasRequestId:Bool {
           get {
                return builderResult.hasRequestId
           }
      }
      public var requestId:UInt64 {
           get {
                return builderResult.requestId
           }
           set (value) {
               builderResult.hasRequestId = true
               builderResult.requestId = value
           }
      }
      public func setRequestId(value:UInt64) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        self.requestId = value
        return self
      }
      public func clearRequestId() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder{
           builderResult.hasRequestId = false
           builderResult.requestId = UInt64(0)
           return self
      }
      public var requests:Array<Pogoprotos.Networking.Requests.Request> {
           get {
               return builderResult.requests
           }
           set (value) {
               builderResult.requests = value
           }
      }
      public func setRequests(value:Array<Pogoprotos.Networking.Requests.Request>) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        self.requests = value
        return self
      }
      public func clearRequests() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        builderResult.requests.removeAll(keepCapacity: false)
        return self
      }
      public var platformRequests:Array<Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest> {
           get {
               return builderResult.platformRequests
           }
           set (value) {
               builderResult.platformRequests = value
           }
      }
      public func setPlatformRequests(value:Array<Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest>) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        self.platformRequests = value
        return self
      }
      public func clearPlatformRequests() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        builderResult.platformRequests.removeAll(keepCapacity: false)
        return self
      }
      public var hasLatitude:Bool {
           get {
                return builderResult.hasLatitude
           }
      }
      public var latitude:Double {
           get {
                return builderResult.latitude
           }
           set (value) {
               builderResult.hasLatitude = true
               builderResult.latitude = value
           }
      }
      public func setLatitude(value:Double) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        self.latitude = value
        return self
      }
      public func clearLatitude() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder{
           builderResult.hasLatitude = false
           builderResult.latitude = Double(0)
           return self
      }
      public var hasLongitude:Bool {
           get {
                return builderResult.hasLongitude
           }
      }
      public var longitude:Double {
           get {
                return builderResult.longitude
           }
           set (value) {
               builderResult.hasLongitude = true
               builderResult.longitude = value
           }
      }
      public func setLongitude(value:Double) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        self.longitude = value
        return self
      }
      public func clearLongitude() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder{
           builderResult.hasLongitude = false
           builderResult.longitude = Double(0)
           return self
      }
      public var hasAccuracy:Bool {
           get {
                return builderResult.hasAccuracy
           }
      }
      public var accuracy:Double {
           get {
                return builderResult.accuracy
           }
           set (value) {
               builderResult.hasAccuracy = true
               builderResult.accuracy = value
           }
      }
      public func setAccuracy(value:Double) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        self.accuracy = value
        return self
      }
      public func clearAccuracy() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder{
           builderResult.hasAccuracy = false
           builderResult.accuracy = Double(0)
           return self
      }
      public var hasAuthInfo:Bool {
           get {
               return builderResult.hasAuthInfo
           }
      }
      public var authInfo:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo! {
           get {
               if authInfoBuilder_ != nil {
                  builderResult.authInfo = authInfoBuilder_.getMessage()
               }
               return builderResult.authInfo
           }
           set (value) {
               builderResult.hasAuthInfo = true
               builderResult.authInfo = value
           }
      }
      private var authInfoBuilder_:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder! {
           didSet {
              builderResult.hasAuthInfo = true
           }
      }
      public func getAuthInfoBuilder() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder {
        if authInfoBuilder_ == nil {
           authInfoBuilder_ = Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder()
           builderResult.authInfo = authInfoBuilder_.getMessage()
           if authInfo != nil {
              try! authInfoBuilder_.mergeFrom(authInfo)
           }
        }
        return authInfoBuilder_
      }
      public func setAuthInfo(value:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo!) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        self.authInfo = value
        return self
      }
      public func mergeAuthInfo(value:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        if builderResult.hasAuthInfo {
          builderResult.authInfo = try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.builderWithPrototype(builderResult.authInfo).mergeFrom(value).buildPartial()
        } else {
          builderResult.authInfo = value
        }
        builderResult.hasAuthInfo = true
        return self
      }
      public func clearAuthInfo() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        authInfoBuilder_ = nil
        builderResult.hasAuthInfo = false
        builderResult.authInfo = nil
        return self
      }
      public var hasAuthTicket:Bool {
           get {
               return builderResult.hasAuthTicket
           }
      }
      public var authTicket:Pogoprotos.Networking.Envelopes.AuthTicket! {
           get {
               if authTicketBuilder_ != nil {
                  builderResult.authTicket = authTicketBuilder_.getMessage()
               }
               return builderResult.authTicket
           }
           set (value) {
               builderResult.hasAuthTicket = true
               builderResult.authTicket = value
           }
      }
      private var authTicketBuilder_:Pogoprotos.Networking.Envelopes.AuthTicket.Builder! {
           didSet {
              builderResult.hasAuthTicket = true
           }
      }
      public func getAuthTicketBuilder() -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
        if authTicketBuilder_ == nil {
           authTicketBuilder_ = Pogoprotos.Networking.Envelopes.AuthTicket.Builder()
           builderResult.authTicket = authTicketBuilder_.getMessage()
           if authTicket != nil {
              try! authTicketBuilder_.mergeFrom(authTicket)
           }
        }
        return authTicketBuilder_
      }
      public func setAuthTicket(value:Pogoprotos.Networking.Envelopes.AuthTicket!) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        self.authTicket = value
        return self
      }
      public func mergeAuthTicket(value:Pogoprotos.Networking.Envelopes.AuthTicket) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        if builderResult.hasAuthTicket {
          builderResult.authTicket = try Pogoprotos.Networking.Envelopes.AuthTicket.builderWithPrototype(builderResult.authTicket).mergeFrom(value).buildPartial()
        } else {
          builderResult.authTicket = value
        }
        builderResult.hasAuthTicket = true
        return self
      }
      public func clearAuthTicket() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        authTicketBuilder_ = nil
        builderResult.hasAuthTicket = false
        builderResult.authTicket = nil
        return self
      }
      public var hasMsSinceLastLocationfix:Bool {
           get {
                return builderResult.hasMsSinceLastLocationfix
           }
      }
      public var msSinceLastLocationfix:Int64 {
           get {
                return builderResult.msSinceLastLocationfix
           }
           set (value) {
               builderResult.hasMsSinceLastLocationfix = true
               builderResult.msSinceLastLocationfix = value
           }
      }
      public func setMsSinceLastLocationfix(value:Int64) -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        self.msSinceLastLocationfix = value
        return self
      }
      public func clearMsSinceLastLocationfix() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder{
           builderResult.hasMsSinceLastLocationfix = false
           builderResult.msSinceLastLocationfix = Int64(0)
           return self
      }
      override public var internalGetResult:GeneratedMessage {
           get {
              return builderResult
           }
      }
      override public func clear() -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        builderResult = Pogoprotos.Networking.Envelopes.RequestEnvelope()
        return self
      }
      override public func clone() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        return try Pogoprotos.Networking.Envelopes.RequestEnvelope.builderWithPrototype(builderResult)
      }
      override public func build() throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope {
           try checkInitialized()
           return buildPartial()
      }
      public func buildPartial() -> Pogoprotos.Networking.Envelopes.RequestEnvelope {
        let returnMe:Pogoprotos.Networking.Envelopes.RequestEnvelope = builderResult
        return returnMe
      }
      public func mergeFrom(other:Pogoprotos.Networking.Envelopes.RequestEnvelope) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        if other == Pogoprotos.Networking.Envelopes.RequestEnvelope() {
         return self
        }
        if other.hasStatusCode {
             statusCode = other.statusCode
        }
        if other.hasRequestId {
             requestId = other.requestId
        }
        if !other.requests.isEmpty  {
           builderResult.requests += other.requests
        }
        if !other.platformRequests.isEmpty  {
           builderResult.platformRequests += other.platformRequests
        }
        if other.hasLatitude {
             latitude = other.latitude
        }
        if other.hasLongitude {
             longitude = other.longitude
        }
        if other.hasAccuracy {
             accuracy = other.accuracy
        }
        if (other.hasAuthInfo) {
            try mergeAuthInfo(other.authInfo)
        }
        if (other.hasAuthTicket) {
            try mergeAuthTicket(other.authTicket)
        }
        if other.hasMsSinceLastLocationfix {
             msSinceLastLocationfix = other.msSinceLastLocationfix
        }
        try mergeUnknownFields(other.unknownFields)
        return self
      }
      override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
           return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
      }
      override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
        while (true) {
          let protobufTag = try input.readTag()
          switch protobufTag {
          case 0: 
            self.unknownFields = try unknownFieldsBuilder.build()
            return self

          case 8:
            statusCode = try input.readInt32()

          case 24:
            requestId = try input.readUInt64()

          case 34:
            let subBuilder = Pogoprotos.Networking.Requests.Request.Builder()
            try input.readMessage(subBuilder,extensionRegistry:extensionRegistry)
            requests += [subBuilder.buildPartial()]

          case 50:
            let subBuilder = Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder()
            try input.readMessage(subBuilder,extensionRegistry:extensionRegistry)
            platformRequests += [subBuilder.buildPartial()]

          case 57:
            latitude = try input.readDouble()

          case 65:
            longitude = try input.readDouble()

          case 73:
            accuracy = try input.readDouble()

          case 82:
            let subBuilder:Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder = Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder()
            if hasAuthInfo {
              try subBuilder.mergeFrom(authInfo)
            }
            try input.readMessage(subBuilder, extensionRegistry:extensionRegistry)
            authInfo = subBuilder.buildPartial()

          case 90:
            let subBuilder:Pogoprotos.Networking.Envelopes.AuthTicket.Builder = Pogoprotos.Networking.Envelopes.AuthTicket.Builder()
            if hasAuthTicket {
              try subBuilder.mergeFrom(authTicket)
            }
            try input.readMessage(subBuilder, extensionRegistry:extensionRegistry)
            authTicket = subBuilder.buildPartial()

          case 96:
            msSinceLastLocationfix = try input.readInt64()

          default:
            if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
               unknownFields = try unknownFieldsBuilder.build()
               return self
            }
          }
        }
      }
      override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder()
        if let jsonValueStatusCode = jsonMap["statusCode"] as? NSNumber {
          resultDecodedBuilder.statusCode = jsonValueStatusCode.intValue
        }
        if let jsonValueRequestId = jsonMap["requestId"] as? String {
          resultDecodedBuilder.requestId = UInt64(jsonValueRequestId)!
        }
        if let jsonValueRequests = jsonMap["requests"] as? Array<Dictionary<String,AnyObject>> {
          var jsonArrayRequests:Array<Pogoprotos.Networking.Requests.Request> = []
          for oneValueRequests in jsonValueRequests {
            let messageFromStringRequests = try Pogoprotos.Networking.Requests.Request.Builder.decodeToBuilder(oneValueRequests).build()

            jsonArrayRequests += [messageFromStringRequests]
          }
          resultDecodedBuilder.requests = jsonArrayRequests
        }
        if let jsonValuePlatformRequests = jsonMap["platformRequests"] as? Array<Dictionary<String,AnyObject>> {
          var jsonArrayPlatformRequests:Array<Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest> = []
          for oneValuePlatformRequests in jsonValuePlatformRequests {
            let messageFromStringPlatformRequests = try Pogoprotos.Networking.Envelopes.RequestEnvelope.PlatformRequest.Builder.decodeToBuilder(oneValuePlatformRequests).build()

            jsonArrayPlatformRequests += [messageFromStringPlatformRequests]
          }
          resultDecodedBuilder.platformRequests = jsonArrayPlatformRequests
        }
        if let jsonValueLatitude = jsonMap["latitude"] as? NSNumber {
          resultDecodedBuilder.latitude = jsonValueLatitude.doubleValue
        }
        if let jsonValueLongitude = jsonMap["longitude"] as? NSNumber {
          resultDecodedBuilder.longitude = jsonValueLongitude.doubleValue
        }
        if let jsonValueAccuracy = jsonMap["accuracy"] as? NSNumber {
          resultDecodedBuilder.accuracy = jsonValueAccuracy.doubleValue
        }
        if let jsonValueAuthInfo = jsonMap["authInfo"] as? Dictionary<String,AnyObject> {
          resultDecodedBuilder.authInfo = try Pogoprotos.Networking.Envelopes.RequestEnvelope.AuthInfo.Builder.decodeToBuilder(jsonValueAuthInfo).build()

        }
        if let jsonValueAuthTicket = jsonMap["authTicket"] as? Dictionary<String,AnyObject> {
          resultDecodedBuilder.authTicket = try Pogoprotos.Networking.Envelopes.AuthTicket.Builder.decodeToBuilder(jsonValueAuthTicket).build()

        }
        if let jsonValueMsSinceLastLocationfix = jsonMap["msSinceLastLocationfix"] as? String {
          resultDecodedBuilder.msSinceLastLocationfix = Int64(jsonValueMsSinceLastLocationfix)!
        }
        return resultDecodedBuilder
      }
      override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder {
        let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
        guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
          throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
        }
        return try Pogoprotos.Networking.Envelopes.RequestEnvelope.Builder.decodeToBuilder(jsDataCast)
      }
    }

  }

  final public class ResponseEnvelope : GeneratedMessage, GeneratedMessageProtocol {


    //Nested type declaration start

      final public class PlatformResponse : GeneratedMessage, GeneratedMessageProtocol {
        public private(set) var types:Pogoprotos.Networking.Platform.PlatformRequestType = Pogoprotos.Networking.Platform.PlatformRequestType.MethodUnset
        public private(set) var hasTypes:Bool = false
        public private(set) var hasResponse:Bool = false
        public private(set) var response:NSData = NSData()

        required public init() {
             super.init()
        }
        override public func isInitialized() -> Bool {
         return true
        }
        override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
          if hasTypes {
            try output.writeEnum(1, value:types.rawValue)
          }
          if hasResponse {
            try output.writeData(2, value:response)
          }
          try unknownFields.writeToCodedOutputStream(output)
        }
        override public func serializedSize() -> Int32 {
          var serialize_size:Int32 = memoizedSerializedSize
          if serialize_size != -1 {
           return serialize_size
          }

          serialize_size = 0
          if (hasTypes) {
            serialize_size += types.rawValue.computeEnumSize(1)
          }
          if hasResponse {
            serialize_size += response.computeDataSize(2)
          }
          serialize_size += unknownFields.serializedSize()
          memoizedSerializedSize = serialize_size
          return serialize_size
        }
        public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse> {
          var mergedArray = Array<Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse>()
          while let value = try parseFromDelimitedFromInputStream(input) {
            mergedArray += [value]
          }
          return mergedArray
        }
        public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse? {
          return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder().mergeDelimitedFromInputStream(input)?.build()
        }
        public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse {
          return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
        }
        public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse {
          return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse {
          return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder().mergeFromInputStream(input).build()
        }
        public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse {
          return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse {
          return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder().mergeFromCodedInputStream(input).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse {
          return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func getBuilder() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
          return Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.classBuilder() as! Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder
        }
        public func getBuilder() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
          return classBuilder() as! Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder
        }
        override public class func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder()
        }
        override public func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder()
        }
        public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
          return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.builderWithPrototype(self)
        }
        public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
          return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder().mergeFrom(prototype)
        }
        override public func encode() throws -> Dictionary<String,AnyObject> {
          guard isInitialized() else {
            throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
          }

          var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
          if hasTypes {
            jsonMap["type"] = types.toString()
          }
          if hasResponse {
            jsonMap["response"] = response.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
          }
          return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse {
          return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder.decodeToBuilder(jsonMap).build()
        }
        override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse {
          return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder.fromJSONToBuilder(data).build()
        }
        override public func getDescription(indent:String) throws -> String {
          var output = ""
          if (hasTypes) {
            output += "\(indent) types: \(types.description)\n"
          }
          if hasResponse {
            output += "\(indent) response: \(response) \n"
          }
          output += unknownFields.getDescription(indent)
          return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasTypes {
                   hashCode = (hashCode &* 31) &+ Int(types.rawValue)
                }
                if hasResponse {
                   hashCode = (hashCode &* 31) &+ response.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

        override public class func className() -> String {
            return "Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse"
        }
        override public func className() -> String {
            return "Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse"
        }
        override public func classMetaType() -> GeneratedMessage.Type {
            return Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.self
        }
        //Meta information declaration end

        final public class Builder : GeneratedMessageBuilder {
          private var builderResult:Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse = Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse()
          public func getMessage() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse {
              return builderResult
          }

          required override public init () {
             super.init()
          }
            public var hasTypes:Bool{
                get {
                    return builderResult.hasTypes
                }
            }
            public var types:Pogoprotos.Networking.Platform.PlatformRequestType {
                get {
                    return builderResult.types
                }
                set (value) {
                    builderResult.hasTypes = true
                    builderResult.types = value
                }
            }
            public func setTypes(value:Pogoprotos.Networking.Platform.PlatformRequestType) -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
              self.types = value
              return self
            }
            public func clearTypes() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
               builderResult.hasTypes = false
               builderResult.types = .MethodUnset
               return self
            }
          public var hasResponse:Bool {
               get {
                    return builderResult.hasResponse
               }
          }
          public var response:NSData {
               get {
                    return builderResult.response
               }
               set (value) {
                   builderResult.hasResponse = true
                   builderResult.response = value
               }
          }
          public func setResponse(value:NSData) -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
            self.response = value
            return self
          }
          public func clearResponse() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder{
               builderResult.hasResponse = false
               builderResult.response = NSData()
               return self
          }
          override public var internalGetResult:GeneratedMessage {
               get {
                  return builderResult
               }
          }
          override public func clear() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
            builderResult = Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse()
            return self
          }
          override public func clone() throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
            return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.builderWithPrototype(builderResult)
          }
          override public func build() throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse {
               try checkInitialized()
               return buildPartial()
          }
          public func buildPartial() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse {
            let returnMe:Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse = builderResult
            return returnMe
          }
          public func mergeFrom(other:Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
            if other == Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse() {
             return self
            }
            if other.hasTypes {
                 types = other.types
            }
            if other.hasResponse {
                 response = other.response
            }
            try mergeUnknownFields(other.unknownFields)
            return self
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
               return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
            let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
            while (true) {
              let protobufTag = try input.readTag()
              switch protobufTag {
              case 0: 
                self.unknownFields = try unknownFieldsBuilder.build()
                return self

              case 8:
                let valueInttypes = try input.readEnum()
                if let enumstypes = Pogoprotos.Networking.Platform.PlatformRequestType(rawValue:valueInttypes){
                     types = enumstypes
                } else {
                     try unknownFieldsBuilder.mergeVarintField(1, value:Int64(valueInttypes))
                }

              case 18:
                response = try input.readData()

              default:
                if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                   unknownFields = try unknownFieldsBuilder.build()
                   return self
                }
              }
            }
          }
          override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
            let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder()
            if let jsonValueTypes = jsonMap["type"] as? String {
              resultDecodedBuilder.types = try Pogoprotos.Networking.Platform.PlatformRequestType.fromString(jsonValueTypes)
            }
            if let jsonValueResponse = jsonMap["response"] as? String {
              resultDecodedBuilder.response = NSData(base64EncodedString:jsonValueResponse, options: NSDataBase64DecodingOptions(rawValue:0))!
            }
            return resultDecodedBuilder
          }
          override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder {
            let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
            guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
              throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
            }
            return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder.decodeToBuilder(jsDataCast)
          }
        }

      }

    //Nested type declaration end



      //Enum type declaration start 

      public enum StatusCode:Int32, CustomDebugStringConvertible, CustomStringConvertible {
        case Unknown = 0

        // valid response with no api url
        case Ok = 1

        // the response envelope has api_url set and this response is valid
        case OkRpcUrlInResponse = 2

        // bad request
        case BadRequest = 3

        // using unimplemented request or corrupt request
        case InvalidRequest = 51

        // invalid platform request or corrupt platform request
        case InvalidPlatformRequest = 52

        // a new rpc endpoint is available and you should redirect to there
        case Redirect = 53

        // occurs when you send blank authinfo, or sending nonsense timings (ie LocationFix.timestampSnapshot == Signature.timestampSinceStart)
        case SessionInvalidated = 100

        // occurs when the login token is invalid
        case InvalidAuthToken = 102
        public func toString() -> String {
          switch self {
          case .Unknown: return "UNKNOWN"
          case .Ok: return "OK"
          case .OkRpcUrlInResponse: return "OK_RPC_URL_IN_RESPONSE"
          case .BadRequest: return "BAD_REQUEST"
          case .InvalidRequest: return "INVALID_REQUEST"
          case .InvalidPlatformRequest: return "INVALID_PLATFORM_REQUEST"
          case .Redirect: return "REDIRECT"
          case .SessionInvalidated: return "SESSION_INVALIDATED"
          case .InvalidAuthToken: return "INVALID_AUTH_TOKEN"
          }
        }
        public static func fromString(str:String) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.StatusCode {
          switch str {
          case "UNKNOWN":  return .Unknown
          case "OK":  return .Ok
          case "OK_RPC_URL_IN_RESPONSE":  return .OkRpcUrlInResponse
          case "BAD_REQUEST":  return .BadRequest
          case "INVALID_REQUEST":  return .InvalidRequest
          case "INVALID_PLATFORM_REQUEST":  return .InvalidPlatformRequest
          case "REDIRECT":  return .Redirect
          case "SESSION_INVALIDATED":  return .SessionInvalidated
          case "INVALID_AUTH_TOKEN":  return .InvalidAuthToken
          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 .Ok: return ".Ok"
                case .OkRpcUrlInResponse: return ".OkRpcUrlInResponse"
                case .BadRequest: return ".BadRequest"
                case .InvalidRequest: return ".InvalidRequest"
                case .InvalidPlatformRequest: return ".InvalidPlatformRequest"
                case .Redirect: return ".Redirect"
                case .SessionInvalidated: return ".SessionInvalidated"
                case .InvalidAuthToken: return ".InvalidAuthToken"
            }
        }
      }

      //Enum type declaration end 

    public private(set) var statusCode:Pogoprotos.Networking.Envelopes.ResponseEnvelope.StatusCode = Pogoprotos.Networking.Envelopes.ResponseEnvelope.StatusCode.Unknown
    public private(set) var hasStatusCode:Bool = false
    public private(set) var hasRequestId:Bool = false
    public private(set) var requestId:UInt64 = UInt64(0)

    public private(set) var hasApiUrl:Bool = false
    public private(set) var apiUrl:String = ""

    public private(set) var platformReturns:Array<Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse>  = Array<Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse>()
    public private(set) var hasAuthTicket:Bool = false
    public private(set) var authTicket:Pogoprotos.Networking.Envelopes.AuthTicket!
    public private(set) var returns:Array<NSData> = Array<NSData>()
    public private(set) var hasError:Bool = false
    public private(set) var error:String = ""

    required public init() {
         super.init()
    }
    override public func isInitialized() -> Bool {
     return true
    }
    override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
      if hasStatusCode {
        try output.writeEnum(1, value:statusCode.rawValue)
      }
      if hasRequestId {
        try output.writeUInt64(2, value:requestId)
      }
      if hasApiUrl {
        try output.writeString(3, value:apiUrl)
      }
      for oneElementPlatformReturns in platformReturns {
          try output.writeMessage(6, value:oneElementPlatformReturns)
      }
      if hasAuthTicket {
        try output.writeMessage(7, value:authTicket)
      }
      if !returns.isEmpty {
        for oneValuereturns in returns {
          try output.writeData(100, value:oneValuereturns)
        }
      }
      if hasError {
        try output.writeString(101, value:error)
      }
      try unknownFields.writeToCodedOutputStream(output)
    }
    override public func serializedSize() -> Int32 {
      var serialize_size:Int32 = memoizedSerializedSize
      if serialize_size != -1 {
       return serialize_size
      }

      serialize_size = 0
      if (hasStatusCode) {
        serialize_size += statusCode.rawValue.computeEnumSize(1)
      }
      if hasRequestId {
        serialize_size += requestId.computeUInt64Size(2)
      }
      if hasApiUrl {
        serialize_size += apiUrl.computeStringSize(3)
      }
      for oneElementPlatformReturns in platformReturns {
          serialize_size += oneElementPlatformReturns.computeMessageSize(6)
      }
      if hasAuthTicket {
          if let varSizeauthTicket = authTicket?.computeMessageSize(7) {
              serialize_size += varSizeauthTicket
          }
      }
      var dataSizeReturns:Int32 = 0
      for oneValuereturns in returns {
          dataSizeReturns += oneValuereturns.computeDataSizeNoTag()
      }
      serialize_size += dataSizeReturns
      serialize_size += 2 * Int32(returns.count)
      if hasError {
        serialize_size += error.computeStringSize(101)
      }
      serialize_size += unknownFields.serializedSize()
      memoizedSerializedSize = serialize_size
      return serialize_size
    }
    public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.ResponseEnvelope> {
      var mergedArray = Array<Pogoprotos.Networking.Envelopes.ResponseEnvelope>()
      while let value = try parseFromDelimitedFromInputStream(input) {
        mergedArray += [value]
      }
      return mergedArray
    }
    public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope? {
      return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder().mergeDelimitedFromInputStream(input)?.build()
    }
    public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope {
      return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
    }
    public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope {
      return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope {
      return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder().mergeFromInputStream(input).build()
    }
    public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope {
      return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope {
      return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder().mergeFromCodedInputStream(input).build()
    }
    public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope {
      return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
    }
    public class func getBuilder() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
      return Pogoprotos.Networking.Envelopes.ResponseEnvelope.classBuilder() as! Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder
    }
    public func getBuilder() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
      return classBuilder() as! Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder
    }
    override public class func classBuilder() -> MessageBuilder {
      return Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder()
    }
    override public func classBuilder() -> MessageBuilder {
      return Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder()
    }
    public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
      return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.builderWithPrototype(self)
    }
    public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.ResponseEnvelope) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
      return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder().mergeFrom(prototype)
    }
    override public func encode() throws -> Dictionary<String,AnyObject> {
      guard isInitialized() else {
        throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
      }

      var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
      if hasStatusCode {
        jsonMap["statusCode"] = statusCode.toString()
      }
      if hasRequestId {
        jsonMap["requestId"] = "\(requestId)"
      }
      if hasApiUrl {
        jsonMap["apiUrl"] = apiUrl
      }
      if !platformReturns.isEmpty {
        var jsonArrayPlatformReturns:Array<Dictionary<String,AnyObject>> = []
          for oneValuePlatformReturns in platformReturns {
            let ecodedMessagePlatformReturns = try oneValuePlatformReturns.encode()
            jsonArrayPlatformReturns += [ecodedMessagePlatformReturns]
          }
        jsonMap["platformReturns"] = jsonArrayPlatformReturns
      }
      if hasAuthTicket {
        jsonMap["authTicket"] = try authTicket.encode()
      }
      if !returns.isEmpty {
        var jsonArrayReturns:Array<String> = []
          for oneValueReturns in returns {
            jsonArrayReturns += [oneValueReturns.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))]
          }
        jsonMap["returns"] = jsonArrayReturns
      }
      if hasError {
        jsonMap["error"] = error
      }
      return jsonMap
    }
    override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope {
      return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder.decodeToBuilder(jsonMap).build()
    }
    override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope {
      return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder.fromJSONToBuilder(data).build()
    }
    override public func getDescription(indent:String) throws -> String {
      var output = ""
      if (hasStatusCode) {
        output += "\(indent) statusCode: \(statusCode.description)\n"
      }
      if hasRequestId {
        output += "\(indent) requestId: \(requestId) \n"
      }
      if hasApiUrl {
        output += "\(indent) apiUrl: \(apiUrl) \n"
      }
      var platformReturnsElementIndex:Int = 0
      for oneElementPlatformReturns in platformReturns {
          output += "\(indent) platformReturns[\(platformReturnsElementIndex)] {\n"
          output += try oneElementPlatformReturns.getDescription("\(indent)  ")
          output += "\(indent)}\n"
          platformReturnsElementIndex += 1
      }
      if hasAuthTicket {
        output += "\(indent) authTicket {\n"
        if let outDescAuthTicket = authTicket {
          output += try outDescAuthTicket.getDescription("\(indent)  ")
        }
        output += "\(indent) }\n"
      }
      var returnsElementIndex:Int = 0
      for oneValueReturns in returns  {
          output += "\(indent) returns[\(returnsElementIndex)]: \(oneValueReturns)\n"
          returnsElementIndex += 1
      }
      if hasError {
        output += "\(indent) error: \(error) \n"
      }
      output += unknownFields.getDescription(indent)
      return output
    }
    override public var hashValue:Int {
        get {
            var hashCode:Int = 7
            if hasStatusCode {
               hashCode = (hashCode &* 31) &+ Int(statusCode.rawValue)
            }
            if hasRequestId {
               hashCode = (hashCode &* 31) &+ requestId.hashValue
            }
            if hasApiUrl {
               hashCode = (hashCode &* 31) &+ apiUrl.hashValue
            }
            for oneElementPlatformReturns in platformReturns {
                hashCode = (hashCode &* 31) &+ oneElementPlatformReturns.hashValue
            }
            if hasAuthTicket {
                if let hashValueauthTicket = authTicket?.hashValue {
                    hashCode = (hashCode &* 31) &+ hashValueauthTicket
                }
            }
            for oneValueReturns in returns {
                hashCode = (hashCode &* 31) &+ oneValueReturns.hashValue
            }
            if hasError {
               hashCode = (hashCode &* 31) &+ error.hashValue
            }
            hashCode = (hashCode &* 31) &+  unknownFields.hashValue
            return hashCode
        }
    }


    //Meta information declaration start

    override public class func className() -> String {
        return "Pogoprotos.Networking.Envelopes.ResponseEnvelope"
    }
    override public func className() -> String {
        return "Pogoprotos.Networking.Envelopes.ResponseEnvelope"
    }
    override public func classMetaType() -> GeneratedMessage.Type {
        return Pogoprotos.Networking.Envelopes.ResponseEnvelope.self
    }
    //Meta information declaration end

    final public class Builder : GeneratedMessageBuilder {
      private var builderResult:Pogoprotos.Networking.Envelopes.ResponseEnvelope = Pogoprotos.Networking.Envelopes.ResponseEnvelope()
      public func getMessage() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope {
          return builderResult
      }

      required override public init () {
         super.init()
      }
        public var hasStatusCode:Bool{
            get {
                return builderResult.hasStatusCode
            }
        }
        public var statusCode:Pogoprotos.Networking.Envelopes.ResponseEnvelope.StatusCode {
            get {
                return builderResult.statusCode
            }
            set (value) {
                builderResult.hasStatusCode = true
                builderResult.statusCode = value
            }
        }
        public func setStatusCode(value:Pogoprotos.Networking.Envelopes.ResponseEnvelope.StatusCode) -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
          self.statusCode = value
          return self
        }
        public func clearStatusCode() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
           builderResult.hasStatusCode = false
           builderResult.statusCode = .Unknown
           return self
        }
      public var hasRequestId:Bool {
           get {
                return builderResult.hasRequestId
           }
      }
      public var requestId:UInt64 {
           get {
                return builderResult.requestId
           }
           set (value) {
               builderResult.hasRequestId = true
               builderResult.requestId = value
           }
      }
      public func setRequestId(value:UInt64) -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        self.requestId = value
        return self
      }
      public func clearRequestId() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder{
           builderResult.hasRequestId = false
           builderResult.requestId = UInt64(0)
           return self
      }
      public var hasApiUrl:Bool {
           get {
                return builderResult.hasApiUrl
           }
      }
      public var apiUrl:String {
           get {
                return builderResult.apiUrl
           }
           set (value) {
               builderResult.hasApiUrl = true
               builderResult.apiUrl = value
           }
      }
      public func setApiUrl(value:String) -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        self.apiUrl = value
        return self
      }
      public func clearApiUrl() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder{
           builderResult.hasApiUrl = false
           builderResult.apiUrl = ""
           return self
      }
      public var platformReturns:Array<Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse> {
           get {
               return builderResult.platformReturns
           }
           set (value) {
               builderResult.platformReturns = value
           }
      }
      public func setPlatformReturns(value:Array<Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse>) -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        self.platformReturns = value
        return self
      }
      public func clearPlatformReturns() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        builderResult.platformReturns.removeAll(keepCapacity: false)
        return self
      }
      public var hasAuthTicket:Bool {
           get {
               return builderResult.hasAuthTicket
           }
      }
      public var authTicket:Pogoprotos.Networking.Envelopes.AuthTicket! {
           get {
               if authTicketBuilder_ != nil {
                  builderResult.authTicket = authTicketBuilder_.getMessage()
               }
               return builderResult.authTicket
           }
           set (value) {
               builderResult.hasAuthTicket = true
               builderResult.authTicket = value
           }
      }
      private var authTicketBuilder_:Pogoprotos.Networking.Envelopes.AuthTicket.Builder! {
           didSet {
              builderResult.hasAuthTicket = true
           }
      }
      public func getAuthTicketBuilder() -> Pogoprotos.Networking.Envelopes.AuthTicket.Builder {
        if authTicketBuilder_ == nil {
           authTicketBuilder_ = Pogoprotos.Networking.Envelopes.AuthTicket.Builder()
           builderResult.authTicket = authTicketBuilder_.getMessage()
           if authTicket != nil {
              try! authTicketBuilder_.mergeFrom(authTicket)
           }
        }
        return authTicketBuilder_
      }
      public func setAuthTicket(value:Pogoprotos.Networking.Envelopes.AuthTicket!) -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        self.authTicket = value
        return self
      }
      public func mergeAuthTicket(value:Pogoprotos.Networking.Envelopes.AuthTicket) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        if builderResult.hasAuthTicket {
          builderResult.authTicket = try Pogoprotos.Networking.Envelopes.AuthTicket.builderWithPrototype(builderResult.authTicket).mergeFrom(value).buildPartial()
        } else {
          builderResult.authTicket = value
        }
        builderResult.hasAuthTicket = true
        return self
      }
      public func clearAuthTicket() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        authTicketBuilder_ = nil
        builderResult.hasAuthTicket = false
        builderResult.authTicket = nil
        return self
      }
      public var returns:Array<NSData> {
           get {
               return builderResult.returns
           }
           set (array) {
               builderResult.returns = array
           }
      }
      public func setReturns(value:Array<NSData>) -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        self.returns = value
        return self
      }
      public func clearReturns() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
         builderResult.returns.removeAll(keepCapacity: false)
         return self
      }
      public var hasError:Bool {
           get {
                return builderResult.hasError
           }
      }
      public var error:String {
           get {
                return builderResult.error
           }
           set (value) {
               builderResult.hasError = true
               builderResult.error = value
           }
      }
      public func setError(value:String) -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        self.error = value
        return self
      }
      public func clearError() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder{
           builderResult.hasError = false
           builderResult.error = ""
           return self
      }
      override public var internalGetResult:GeneratedMessage {
           get {
              return builderResult
           }
      }
      override public func clear() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        builderResult = Pogoprotos.Networking.Envelopes.ResponseEnvelope()
        return self
      }
      override public func clone() throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.builderWithPrototype(builderResult)
      }
      override public func build() throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope {
           try checkInitialized()
           return buildPartial()
      }
      public func buildPartial() -> Pogoprotos.Networking.Envelopes.ResponseEnvelope {
        let returnMe:Pogoprotos.Networking.Envelopes.ResponseEnvelope = builderResult
        return returnMe
      }
      public func mergeFrom(other:Pogoprotos.Networking.Envelopes.ResponseEnvelope) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        if other == Pogoprotos.Networking.Envelopes.ResponseEnvelope() {
         return self
        }
        if other.hasStatusCode {
             statusCode = other.statusCode
        }
        if other.hasRequestId {
             requestId = other.requestId
        }
        if other.hasApiUrl {
             apiUrl = other.apiUrl
        }
        if !other.platformReturns.isEmpty  {
           builderResult.platformReturns += other.platformReturns
        }
        if (other.hasAuthTicket) {
            try mergeAuthTicket(other.authTicket)
        }
        if !other.returns.isEmpty {
            builderResult.returns += other.returns
        }
        if other.hasError {
             error = other.error
        }
        try mergeUnknownFields(other.unknownFields)
        return self
      }
      override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
           return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
      }
      override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
        while (true) {
          let protobufTag = try input.readTag()
          switch protobufTag {
          case 0: 
            self.unknownFields = try unknownFieldsBuilder.build()
            return self

          case 8:
            let valueIntstatusCode = try input.readEnum()
            if let enumsstatusCode = Pogoprotos.Networking.Envelopes.ResponseEnvelope.StatusCode(rawValue:valueIntstatusCode){
                 statusCode = enumsstatusCode
            } else {
                 try unknownFieldsBuilder.mergeVarintField(1, value:Int64(valueIntstatusCode))
            }

          case 16:
            requestId = try input.readUInt64()

          case 26:
            apiUrl = try input.readString()

          case 50:
            let subBuilder = Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder()
            try input.readMessage(subBuilder,extensionRegistry:extensionRegistry)
            platformReturns += [subBuilder.buildPartial()]

          case 58:
            let subBuilder:Pogoprotos.Networking.Envelopes.AuthTicket.Builder = Pogoprotos.Networking.Envelopes.AuthTicket.Builder()
            if hasAuthTicket {
              try subBuilder.mergeFrom(authTicket)
            }
            try input.readMessage(subBuilder, extensionRegistry:extensionRegistry)
            authTicket = subBuilder.buildPartial()

          case 802:
            returns += [try input.readData()]

          case 810:
            error = try input.readString()

          default:
            if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
               unknownFields = try unknownFieldsBuilder.build()
               return self
            }
          }
        }
      }
      override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder()
        if let jsonValueStatusCode = jsonMap["statusCode"] as? String {
          resultDecodedBuilder.statusCode = try Pogoprotos.Networking.Envelopes.ResponseEnvelope.StatusCode.fromString(jsonValueStatusCode)
        }
        if let jsonValueRequestId = jsonMap["requestId"] as? String {
          resultDecodedBuilder.requestId = UInt64(jsonValueRequestId)!
        }
        if let jsonValueApiUrl = jsonMap["apiUrl"] as? String {
          resultDecodedBuilder.apiUrl = jsonValueApiUrl
        }
        if let jsonValuePlatformReturns = jsonMap["platformReturns"] as? Array<Dictionary<String,AnyObject>> {
          var jsonArrayPlatformReturns:Array<Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse> = []
          for oneValuePlatformReturns in jsonValuePlatformReturns {
            let messageFromStringPlatformReturns = try Pogoprotos.Networking.Envelopes.ResponseEnvelope.PlatformResponse.Builder.decodeToBuilder(oneValuePlatformReturns).build()

            jsonArrayPlatformReturns += [messageFromStringPlatformReturns]
          }
          resultDecodedBuilder.platformReturns = jsonArrayPlatformReturns
        }
        if let jsonValueAuthTicket = jsonMap["authTicket"] as? Dictionary<String,AnyObject> {
          resultDecodedBuilder.authTicket = try Pogoprotos.Networking.Envelopes.AuthTicket.Builder.decodeToBuilder(jsonValueAuthTicket).build()

        }
        if let jsonValueReturns = jsonMap["returns"] as? Array<String> {
          var jsonArrayReturns:Array<NSData> = []
          for oneValueReturns in jsonValueReturns {
            jsonArrayReturns += [NSData(base64EncodedString:oneValueReturns, options: NSDataBase64DecodingOptions(rawValue:0))!]
          }
          resultDecodedBuilder.returns = jsonArrayReturns
        }
        if let jsonValueError = jsonMap["error"] as? String {
          resultDecodedBuilder.error = jsonValueError
        }
        return resultDecodedBuilder
      }
      override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder {
        let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
        guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
          throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
        }
        return try Pogoprotos.Networking.Envelopes.ResponseEnvelope.Builder.decodeToBuilder(jsDataCast)
      }
    }

  }

  final public class Signature : GeneratedMessage, GeneratedMessageProtocol {


    //Nested type declaration start

      final public class LocationFix : GeneratedMessage, GeneratedMessageProtocol {
        // "network", "gps", "fused", possibly others
        public private(set) var hasProvider:Bool = false
        public private(set) var provider:String = ""

        // in ms since start
        public private(set) var hasTimestampSnapshot:Bool = false
        public private(set) var timestampSnapshot:UInt64 = UInt64(0)

        // Confirmed on android/ios
        public private(set) var hasAltitude:Bool = false
        public private(set) var altitude:Float = Float(0)

        public private(set) var hasLatitude:Bool = false
        public private(set) var latitude:Float = Float(0)

        public private(set) var hasLongitude:Bool = false
        public private(set) var longitude:Float = Float(0)

        // iOS only (-1 for no reading available, speed in m/s)
        public private(set) var hasSpeed:Bool = false
        public private(set) var speed:Float = Float(0)

        // iOS only (range seems to be -1 for not reading, and 0 to 360 for reading) confirmed by @marcel
        public private(set) var hasCourse:Bool = false
        public private(set) var course:Float = Float(0)

        // in meters, both on Android and iOS
        public private(set) var hasHorizontalAccuracy:Bool = false
        public private(set) var horizontalAccuracy:Float = Float(0)

        // iOS only 
        public private(set) var hasVerticalAccuracy:Bool = false
        public private(set) var verticalAccuracy:Float = Float(0)

        // Usually 3 (possibly GPS status: 1 = no fix, 2 = acquiring/inaccurate, 3 = fix acquired)
        public private(set) var hasProviderStatus:Bool = false
        public private(set) var providerStatus:UInt64 = UInt64(0)

        // On iOS there are some LocationFixes with unk26=1 and everything else empty
        public private(set) var hasFloor:Bool = false
        public private(set) var floor:UInt32 = UInt32(0)

        // Always 1 (if there is data at all)
        public private(set) var hasLocationType:Bool = false
        public private(set) var locationType:UInt64 = UInt64(0)

        required public init() {
             super.init()
        }
        override public func isInitialized() -> Bool {
         return true
        }
        override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
          if hasProvider {
            try output.writeString(1, value:provider)
          }
          if hasTimestampSnapshot {
            try output.writeUInt64(2, value:timestampSnapshot)
          }
          if hasAltitude {
            try output.writeFloat(4, value:altitude)
          }
          if hasLatitude {
            try output.writeFloat(13, value:latitude)
          }
          if hasLongitude {
            try output.writeFloat(14, value:longitude)
          }
          if hasSpeed {
            try output.writeFloat(18, value:speed)
          }
          if hasCourse {
            try output.writeFloat(20, value:course)
          }
          if hasHorizontalAccuracy {
            try output.writeFloat(21, value:horizontalAccuracy)
          }
          if hasVerticalAccuracy {
            try output.writeFloat(22, value:verticalAccuracy)
          }
          if hasProviderStatus {
            try output.writeUInt64(26, value:providerStatus)
          }
          if hasFloor {
            try output.writeUInt32(27, value:floor)
          }
          if hasLocationType {
            try output.writeUInt64(28, value:locationType)
          }
          try unknownFields.writeToCodedOutputStream(output)
        }
        override public func serializedSize() -> Int32 {
          var serialize_size:Int32 = memoizedSerializedSize
          if serialize_size != -1 {
           return serialize_size
          }

          serialize_size = 0
          if hasProvider {
            serialize_size += provider.computeStringSize(1)
          }
          if hasTimestampSnapshot {
            serialize_size += timestampSnapshot.computeUInt64Size(2)
          }
          if hasAltitude {
            serialize_size += altitude.computeFloatSize(4)
          }
          if hasLatitude {
            serialize_size += latitude.computeFloatSize(13)
          }
          if hasLongitude {
            serialize_size += longitude.computeFloatSize(14)
          }
          if hasSpeed {
            serialize_size += speed.computeFloatSize(18)
          }
          if hasCourse {
            serialize_size += course.computeFloatSize(20)
          }
          if hasHorizontalAccuracy {
            serialize_size += horizontalAccuracy.computeFloatSize(21)
          }
          if hasVerticalAccuracy {
            serialize_size += verticalAccuracy.computeFloatSize(22)
          }
          if hasProviderStatus {
            serialize_size += providerStatus.computeUInt64Size(26)
          }
          if hasFloor {
            serialize_size += floor.computeUInt32Size(27)
          }
          if hasLocationType {
            serialize_size += locationType.computeUInt64Size(28)
          }
          serialize_size += unknownFields.serializedSize()
          memoizedSerializedSize = serialize_size
          return serialize_size
        }
        public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.Signature.LocationFix> {
          var mergedArray = Array<Pogoprotos.Networking.Envelopes.Signature.LocationFix>()
          while let value = try parseFromDelimitedFromInputStream(input) {
            mergedArray += [value]
          }
          return mergedArray
        }
        public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix? {
          return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder().mergeDelimitedFromInputStream(input)?.build()
        }
        public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix {
          return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
        }
        public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix {
          return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix {
          return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder().mergeFromInputStream(input).build()
        }
        public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix {
          return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix {
          return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder().mergeFromCodedInputStream(input).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix {
          return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
          return Pogoprotos.Networking.Envelopes.Signature.LocationFix.classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder
        }
        public func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
          return classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder
        }
        override public class func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder()
        }
        override public func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder()
        }
        public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
          return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.builderWithPrototype(self)
        }
        public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.Signature.LocationFix) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
          return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder().mergeFrom(prototype)
        }
        override public func encode() throws -> Dictionary<String,AnyObject> {
          guard isInitialized() else {
            throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
          }

          var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
          if hasProvider {
            jsonMap["provider"] = provider
          }
          if hasTimestampSnapshot {
            jsonMap["timestampSnapshot"] = "\(timestampSnapshot)"
          }
          if hasAltitude {
            jsonMap["altitude"] = NSNumber(float:altitude)
          }
          if hasLatitude {
            jsonMap["latitude"] = NSNumber(float:latitude)
          }
          if hasLongitude {
            jsonMap["longitude"] = NSNumber(float:longitude)
          }
          if hasSpeed {
            jsonMap["speed"] = NSNumber(float:speed)
          }
          if hasCourse {
            jsonMap["course"] = NSNumber(float:course)
          }
          if hasHorizontalAccuracy {
            jsonMap["horizontalAccuracy"] = NSNumber(float:horizontalAccuracy)
          }
          if hasVerticalAccuracy {
            jsonMap["verticalAccuracy"] = NSNumber(float:verticalAccuracy)
          }
          if hasProviderStatus {
            jsonMap["providerStatus"] = "\(providerStatus)"
          }
          if hasFloor {
            jsonMap["floor"] = NSNumber(unsignedInt:floor)
          }
          if hasLocationType {
            jsonMap["locationType"] = "\(locationType)"
          }
          return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix {
          return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder.decodeToBuilder(jsonMap).build()
        }
        override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix {
          return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder.fromJSONToBuilder(data).build()
        }
        override public func getDescription(indent:String) throws -> String {
          var output = ""
          if hasProvider {
            output += "\(indent) provider: \(provider) \n"
          }
          if hasTimestampSnapshot {
            output += "\(indent) timestampSnapshot: \(timestampSnapshot) \n"
          }
          if hasAltitude {
            output += "\(indent) altitude: \(altitude) \n"
          }
          if hasLatitude {
            output += "\(indent) latitude: \(latitude) \n"
          }
          if hasLongitude {
            output += "\(indent) longitude: \(longitude) \n"
          }
          if hasSpeed {
            output += "\(indent) speed: \(speed) \n"
          }
          if hasCourse {
            output += "\(indent) course: \(course) \n"
          }
          if hasHorizontalAccuracy {
            output += "\(indent) horizontalAccuracy: \(horizontalAccuracy) \n"
          }
          if hasVerticalAccuracy {
            output += "\(indent) verticalAccuracy: \(verticalAccuracy) \n"
          }
          if hasProviderStatus {
            output += "\(indent) providerStatus: \(providerStatus) \n"
          }
          if hasFloor {
            output += "\(indent) floor: \(floor) \n"
          }
          if hasLocationType {
            output += "\(indent) locationType: \(locationType) \n"
          }
          output += unknownFields.getDescription(indent)
          return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasProvider {
                   hashCode = (hashCode &* 31) &+ provider.hashValue
                }
                if hasTimestampSnapshot {
                   hashCode = (hashCode &* 31) &+ timestampSnapshot.hashValue
                }
                if hasAltitude {
                   hashCode = (hashCode &* 31) &+ altitude.hashValue
                }
                if hasLatitude {
                   hashCode = (hashCode &* 31) &+ latitude.hashValue
                }
                if hasLongitude {
                   hashCode = (hashCode &* 31) &+ longitude.hashValue
                }
                if hasSpeed {
                   hashCode = (hashCode &* 31) &+ speed.hashValue
                }
                if hasCourse {
                   hashCode = (hashCode &* 31) &+ course.hashValue
                }
                if hasHorizontalAccuracy {
                   hashCode = (hashCode &* 31) &+ horizontalAccuracy.hashValue
                }
                if hasVerticalAccuracy {
                   hashCode = (hashCode &* 31) &+ verticalAccuracy.hashValue
                }
                if hasProviderStatus {
                   hashCode = (hashCode &* 31) &+ providerStatus.hashValue
                }
                if hasFloor {
                   hashCode = (hashCode &* 31) &+ floor.hashValue
                }
                if hasLocationType {
                   hashCode = (hashCode &* 31) &+ locationType.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

        override public class func className() -> String {
            return "Pogoprotos.Networking.Envelopes.Signature.LocationFix"
        }
        override public func className() -> String {
            return "Pogoprotos.Networking.Envelopes.Signature.LocationFix"
        }
        override public func classMetaType() -> GeneratedMessage.Type {
            return Pogoprotos.Networking.Envelopes.Signature.LocationFix.self
        }
        //Meta information declaration end

        final public class Builder : GeneratedMessageBuilder {
          private var builderResult:Pogoprotos.Networking.Envelopes.Signature.LocationFix = Pogoprotos.Networking.Envelopes.Signature.LocationFix()
          public func getMessage() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix {
              return builderResult
          }

          required override public init () {
             super.init()
          }
          public var hasProvider:Bool {
               get {
                    return builderResult.hasProvider
               }
          }
          public var provider:String {
               get {
                    return builderResult.provider
               }
               set (value) {
                   builderResult.hasProvider = true
                   builderResult.provider = value
               }
          }
          public func setProvider(value:String) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.provider = value
            return self
          }
          public func clearProvider() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasProvider = false
               builderResult.provider = ""
               return self
          }
          public var hasTimestampSnapshot:Bool {
               get {
                    return builderResult.hasTimestampSnapshot
               }
          }
          public var timestampSnapshot:UInt64 {
               get {
                    return builderResult.timestampSnapshot
               }
               set (value) {
                   builderResult.hasTimestampSnapshot = true
                   builderResult.timestampSnapshot = value
               }
          }
          public func setTimestampSnapshot(value:UInt64) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.timestampSnapshot = value
            return self
          }
          public func clearTimestampSnapshot() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasTimestampSnapshot = false
               builderResult.timestampSnapshot = UInt64(0)
               return self
          }
          public var hasAltitude:Bool {
               get {
                    return builderResult.hasAltitude
               }
          }
          public var altitude:Float {
               get {
                    return builderResult.altitude
               }
               set (value) {
                   builderResult.hasAltitude = true
                   builderResult.altitude = value
               }
          }
          public func setAltitude(value:Float) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.altitude = value
            return self
          }
          public func clearAltitude() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasAltitude = false
               builderResult.altitude = Float(0)
               return self
          }
          public var hasLatitude:Bool {
               get {
                    return builderResult.hasLatitude
               }
          }
          public var latitude:Float {
               get {
                    return builderResult.latitude
               }
               set (value) {
                   builderResult.hasLatitude = true
                   builderResult.latitude = value
               }
          }
          public func setLatitude(value:Float) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.latitude = value
            return self
          }
          public func clearLatitude() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasLatitude = false
               builderResult.latitude = Float(0)
               return self
          }
          public var hasLongitude:Bool {
               get {
                    return builderResult.hasLongitude
               }
          }
          public var longitude:Float {
               get {
                    return builderResult.longitude
               }
               set (value) {
                   builderResult.hasLongitude = true
                   builderResult.longitude = value
               }
          }
          public func setLongitude(value:Float) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.longitude = value
            return self
          }
          public func clearLongitude() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasLongitude = false
               builderResult.longitude = Float(0)
               return self
          }
          public var hasSpeed:Bool {
               get {
                    return builderResult.hasSpeed
               }
          }
          public var speed:Float {
               get {
                    return builderResult.speed
               }
               set (value) {
                   builderResult.hasSpeed = true
                   builderResult.speed = value
               }
          }
          public func setSpeed(value:Float) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.speed = value
            return self
          }
          public func clearSpeed() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasSpeed = false
               builderResult.speed = Float(0)
               return self
          }
          public var hasCourse:Bool {
               get {
                    return builderResult.hasCourse
               }
          }
          public var course:Float {
               get {
                    return builderResult.course
               }
               set (value) {
                   builderResult.hasCourse = true
                   builderResult.course = value
               }
          }
          public func setCourse(value:Float) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.course = value
            return self
          }
          public func clearCourse() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasCourse = false
               builderResult.course = Float(0)
               return self
          }
          public var hasHorizontalAccuracy:Bool {
               get {
                    return builderResult.hasHorizontalAccuracy
               }
          }
          public var horizontalAccuracy:Float {
               get {
                    return builderResult.horizontalAccuracy
               }
               set (value) {
                   builderResult.hasHorizontalAccuracy = true
                   builderResult.horizontalAccuracy = value
               }
          }
          public func setHorizontalAccuracy(value:Float) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.horizontalAccuracy = value
            return self
          }
          public func clearHorizontalAccuracy() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasHorizontalAccuracy = false
               builderResult.horizontalAccuracy = Float(0)
               return self
          }
          public var hasVerticalAccuracy:Bool {
               get {
                    return builderResult.hasVerticalAccuracy
               }
          }
          public var verticalAccuracy:Float {
               get {
                    return builderResult.verticalAccuracy
               }
               set (value) {
                   builderResult.hasVerticalAccuracy = true
                   builderResult.verticalAccuracy = value
               }
          }
          public func setVerticalAccuracy(value:Float) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.verticalAccuracy = value
            return self
          }
          public func clearVerticalAccuracy() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasVerticalAccuracy = false
               builderResult.verticalAccuracy = Float(0)
               return self
          }
          public var hasProviderStatus:Bool {
               get {
                    return builderResult.hasProviderStatus
               }
          }
          public var providerStatus:UInt64 {
               get {
                    return builderResult.providerStatus
               }
               set (value) {
                   builderResult.hasProviderStatus = true
                   builderResult.providerStatus = value
               }
          }
          public func setProviderStatus(value:UInt64) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.providerStatus = value
            return self
          }
          public func clearProviderStatus() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasProviderStatus = false
               builderResult.providerStatus = UInt64(0)
               return self
          }
          public var hasFloor:Bool {
               get {
                    return builderResult.hasFloor
               }
          }
          public var floor:UInt32 {
               get {
                    return builderResult.floor
               }
               set (value) {
                   builderResult.hasFloor = true
                   builderResult.floor = value
               }
          }
          public func setFloor(value:UInt32) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.floor = value
            return self
          }
          public func clearFloor() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasFloor = false
               builderResult.floor = UInt32(0)
               return self
          }
          public var hasLocationType:Bool {
               get {
                    return builderResult.hasLocationType
               }
          }
          public var locationType:UInt64 {
               get {
                    return builderResult.locationType
               }
               set (value) {
                   builderResult.hasLocationType = true
                   builderResult.locationType = value
               }
          }
          public func setLocationType(value:UInt64) -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            self.locationType = value
            return self
          }
          public func clearLocationType() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder{
               builderResult.hasLocationType = false
               builderResult.locationType = UInt64(0)
               return self
          }
          override public var internalGetResult:GeneratedMessage {
               get {
                  return builderResult
               }
          }
          override public func clear() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            builderResult = Pogoprotos.Networking.Envelopes.Signature.LocationFix()
            return self
          }
          override public func clone() throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.builderWithPrototype(builderResult)
          }
          override public func build() throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix {
               try checkInitialized()
               return buildPartial()
          }
          public func buildPartial() -> Pogoprotos.Networking.Envelopes.Signature.LocationFix {
            let returnMe:Pogoprotos.Networking.Envelopes.Signature.LocationFix = builderResult
            return returnMe
          }
          public func mergeFrom(other:Pogoprotos.Networking.Envelopes.Signature.LocationFix) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            if other == Pogoprotos.Networking.Envelopes.Signature.LocationFix() {
             return self
            }
            if other.hasProvider {
                 provider = other.provider
            }
            if other.hasTimestampSnapshot {
                 timestampSnapshot = other.timestampSnapshot
            }
            if other.hasAltitude {
                 altitude = other.altitude
            }
            if other.hasLatitude {
                 latitude = other.latitude
            }
            if other.hasLongitude {
                 longitude = other.longitude
            }
            if other.hasSpeed {
                 speed = other.speed
            }
            if other.hasCourse {
                 course = other.course
            }
            if other.hasHorizontalAccuracy {
                 horizontalAccuracy = other.horizontalAccuracy
            }
            if other.hasVerticalAccuracy {
                 verticalAccuracy = other.verticalAccuracy
            }
            if other.hasProviderStatus {
                 providerStatus = other.providerStatus
            }
            if other.hasFloor {
                 floor = other.floor
            }
            if other.hasLocationType {
                 locationType = other.locationType
            }
            try mergeUnknownFields(other.unknownFields)
            return self
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
               return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
            while (true) {
              let protobufTag = try input.readTag()
              switch protobufTag {
              case 0: 
                self.unknownFields = try unknownFieldsBuilder.build()
                return self

              case 10:
                provider = try input.readString()

              case 16:
                timestampSnapshot = try input.readUInt64()

              case 37:
                altitude = try input.readFloat()

              case 109:
                latitude = try input.readFloat()

              case 117:
                longitude = try input.readFloat()

              case 149:
                speed = try input.readFloat()

              case 165:
                course = try input.readFloat()

              case 173:
                horizontalAccuracy = try input.readFloat()

              case 181:
                verticalAccuracy = try input.readFloat()

              case 208:
                providerStatus = try input.readUInt64()

              case 216:
                floor = try input.readUInt32()

              case 224:
                locationType = try input.readUInt64()

              default:
                if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                   unknownFields = try unknownFieldsBuilder.build()
                   return self
                }
              }
            }
          }
          override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder()
            if let jsonValueProvider = jsonMap["provider"] as? String {
              resultDecodedBuilder.provider = jsonValueProvider
            }
            if let jsonValueTimestampSnapshot = jsonMap["timestampSnapshot"] as? String {
              resultDecodedBuilder.timestampSnapshot = UInt64(jsonValueTimestampSnapshot)!
            }
            if let jsonValueAltitude = jsonMap["altitude"] as? NSNumber {
              resultDecodedBuilder.altitude = jsonValueAltitude.floatValue
            }
            if let jsonValueLatitude = jsonMap["latitude"] as? NSNumber {
              resultDecodedBuilder.latitude = jsonValueLatitude.floatValue
            }
            if let jsonValueLongitude = jsonMap["longitude"] as? NSNumber {
              resultDecodedBuilder.longitude = jsonValueLongitude.floatValue
            }
            if let jsonValueSpeed = jsonMap["speed"] as? NSNumber {
              resultDecodedBuilder.speed = jsonValueSpeed.floatValue
            }
            if let jsonValueCourse = jsonMap["course"] as? NSNumber {
              resultDecodedBuilder.course = jsonValueCourse.floatValue
            }
            if let jsonValueHorizontalAccuracy = jsonMap["horizontalAccuracy"] as? NSNumber {
              resultDecodedBuilder.horizontalAccuracy = jsonValueHorizontalAccuracy.floatValue
            }
            if let jsonValueVerticalAccuracy = jsonMap["verticalAccuracy"] as? NSNumber {
              resultDecodedBuilder.verticalAccuracy = jsonValueVerticalAccuracy.floatValue
            }
            if let jsonValueProviderStatus = jsonMap["providerStatus"] as? String {
              resultDecodedBuilder.providerStatus = UInt64(jsonValueProviderStatus)!
            }
            if let jsonValueFloor = jsonMap["floor"] as? NSNumber {
              resultDecodedBuilder.floor = jsonValueFloor.unsignedIntValue
            }
            if let jsonValueLocationType = jsonMap["locationType"] as? String {
              resultDecodedBuilder.locationType = UInt64(jsonValueLocationType)!
            }
            return resultDecodedBuilder
          }
          override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder {
            let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
            guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
              throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
            }
            return try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder.decodeToBuilder(jsDataCast)
          }
        }

      }

    //Nested type declaration end



    //Nested type declaration start

      // don't really care about this since we're not using it
      final public class AndroidGpsInfo : GeneratedMessage, GeneratedMessageProtocol {
        public private(set) var hasTimeToFix:Bool = false
        public private(set) var timeToFix:UInt64 = UInt64(0)

        public private(set) var satellitesPrn:Array<Int32> = Array<Int32>()
        private var satellitesPrnMemoizedSerializedSize:Int32 = -1
        public private(set) var azimuth:Array<Float> = Array<Float>()
        private var azimuthMemoizedSerializedSize:Int32 = -1
        public private(set) var elevation:Array<Float> = Array<Float>()
        private var elevationMemoizedSerializedSize:Int32 = -1
        public private(set) var snr:Array<Float> = Array<Float>()
        private var snrMemoizedSerializedSize:Int32 = -1
        public private(set) var hasAlmanac:Array<Bool> = Array<Bool>()
        private var hasAlmanacMemoizedSerializedSize:Int32 = -1
        public private(set) var hasEphemeris:Array<Bool> = Array<Bool>()
        private var hasEphemerisMemoizedSerializedSize:Int32 = -1
        public private(set) var usedInFix:Array<Bool> = Array<Bool>()
        private var usedInFixMemoizedSerializedSize:Int32 = -1
        required public init() {
             super.init()
        }
        override public func isInitialized() -> Bool {
         return true
        }
        override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
          if hasTimeToFix {
            try output.writeUInt64(1, value:timeToFix)
          }
          if !satellitesPrn.isEmpty {
            try output.writeRawVarint32(18)
            try output.writeRawVarint32(satellitesPrnMemoizedSerializedSize)
            for oneValuesatellitesPrn in satellitesPrn {
              try output.writeInt32NoTag(oneValuesatellitesPrn)
            }
          }
          if !azimuth.isEmpty {
            try output.writeRawVarint32(26)
            try output.writeRawVarint32(azimuthMemoizedSerializedSize)
            for oneValueazimuth in azimuth {
              try output.writeFloatNoTag(oneValueazimuth)
            }
          }
          if !elevation.isEmpty {
            try output.writeRawVarint32(34)
            try output.writeRawVarint32(elevationMemoizedSerializedSize)
            for oneValueelevation in elevation {
              try output.writeFloatNoTag(oneValueelevation)
            }
          }
          if !snr.isEmpty {
            try output.writeRawVarint32(42)
            try output.writeRawVarint32(snrMemoizedSerializedSize)
            for oneValuesnr in snr {
              try output.writeFloatNoTag(oneValuesnr)
            }
          }
          if !hasAlmanac.isEmpty {
            try output.writeRawVarint32(50)
            try output.writeRawVarint32(hasAlmanacMemoizedSerializedSize)
            for oneValuehasAlmanac in hasAlmanac {
              try output.writeBoolNoTag(oneValuehasAlmanac)
            }
          }
          if !hasEphemeris.isEmpty {
            try output.writeRawVarint32(58)
            try output.writeRawVarint32(hasEphemerisMemoizedSerializedSize)
            for oneValuehasEphemeris in hasEphemeris {
              try output.writeBoolNoTag(oneValuehasEphemeris)
            }
          }
          if !usedInFix.isEmpty {
            try output.writeRawVarint32(66)
            try output.writeRawVarint32(usedInFixMemoizedSerializedSize)
            for oneValueusedInFix in usedInFix {
              try output.writeBoolNoTag(oneValueusedInFix)
            }
          }
          try unknownFields.writeToCodedOutputStream(output)
        }
        override public func serializedSize() -> Int32 {
          var serialize_size:Int32 = memoizedSerializedSize
          if serialize_size != -1 {
           return serialize_size
          }

          serialize_size = 0
          if hasTimeToFix {
            serialize_size += timeToFix.computeUInt64Size(1)
          }
          var dataSizeSatellitesPrn:Int32 = 0
          for oneValuesatellitesPrn in satellitesPrn {
              dataSizeSatellitesPrn += oneValuesatellitesPrn.computeInt32SizeNoTag()
          }
          serialize_size += dataSizeSatellitesPrn
          if !satellitesPrn.isEmpty {
            serialize_size += 1
            serialize_size += dataSizeSatellitesPrn.computeInt32SizeNoTag()
          }
          satellitesPrnMemoizedSerializedSize = dataSizeSatellitesPrn
          var dataSizeAzimuth:Int32 = 0
          dataSizeAzimuth = 4 * Int32(azimuth.count)
          serialize_size += dataSizeAzimuth
          if !azimuth.isEmpty {
            serialize_size += 1
            serialize_size += dataSizeAzimuth.computeInt32SizeNoTag()
          }
          azimuthMemoizedSerializedSize = dataSizeAzimuth
          var dataSizeElevation:Int32 = 0
          dataSizeElevation = 4 * Int32(elevation.count)
          serialize_size += dataSizeElevation
          if !elevation.isEmpty {
            serialize_size += 1
            serialize_size += dataSizeElevation.computeInt32SizeNoTag()
          }
          elevationMemoizedSerializedSize = dataSizeElevation
          var dataSizeSnr:Int32 = 0
          dataSizeSnr = 4 * Int32(snr.count)
          serialize_size += dataSizeSnr
          if !snr.isEmpty {
            serialize_size += 1
            serialize_size += dataSizeSnr.computeInt32SizeNoTag()
          }
          snrMemoizedSerializedSize = dataSizeSnr
          var dataSizeHasAlmanac:Int32 = 0
          dataSizeHasAlmanac = 1 * Int32(hasAlmanac.count)
          serialize_size += dataSizeHasAlmanac
          if !hasAlmanac.isEmpty {
            serialize_size += 1
            serialize_size += dataSizeHasAlmanac.computeInt32SizeNoTag()
          }
          hasAlmanacMemoizedSerializedSize = dataSizeHasAlmanac
          var dataSizeHasEphemeris:Int32 = 0
          dataSizeHasEphemeris = 1 * Int32(hasEphemeris.count)
          serialize_size += dataSizeHasEphemeris
          if !hasEphemeris.isEmpty {
            serialize_size += 1
            serialize_size += dataSizeHasEphemeris.computeInt32SizeNoTag()
          }
          hasEphemerisMemoizedSerializedSize = dataSizeHasEphemeris
          var dataSizeUsedInFix:Int32 = 0
          dataSizeUsedInFix = 1 * Int32(usedInFix.count)
          serialize_size += dataSizeUsedInFix
          if !usedInFix.isEmpty {
            serialize_size += 1
            serialize_size += dataSizeUsedInFix.computeInt32SizeNoTag()
          }
          usedInFixMemoizedSerializedSize = dataSizeUsedInFix
          serialize_size += unknownFields.serializedSize()
          memoizedSerializedSize = serialize_size
          return serialize_size
        }
        public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo> {
          var mergedArray = Array<Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo>()
          while let value = try parseFromDelimitedFromInputStream(input) {
            mergedArray += [value]
          }
          return mergedArray
        }
        public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo? {
          return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder().mergeDelimitedFromInputStream(input)?.build()
        }
        public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
        }
        public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder().mergeFromInputStream(input).build()
        }
        public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder().mergeFromCodedInputStream(input).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
          return Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder
        }
        public func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
          return classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder
        }
        override public class func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder()
        }
        override public func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder()
        }
        public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
          return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.builderWithPrototype(self)
        }
        public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
          return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder().mergeFrom(prototype)
        }
        override public func encode() throws -> Dictionary<String,AnyObject> {
          guard isInitialized() else {
            throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
          }

          var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
          if hasTimeToFix {
            jsonMap["timeToFix"] = "\(timeToFix)"
          }
          if !satellitesPrn.isEmpty {
            var jsonArraySatellitesPrn:Array<NSNumber> = []
              for oneValueSatellitesPrn in satellitesPrn {
                jsonArraySatellitesPrn += [NSNumber(int:oneValueSatellitesPrn)]
              }
            jsonMap["satellitesPrn"] = jsonArraySatellitesPrn
          }
          if !azimuth.isEmpty {
            var jsonArrayAzimuth:Array<NSNumber> = []
              for oneValueAzimuth in azimuth {
                jsonArrayAzimuth += [NSNumber(float:oneValueAzimuth)]
              }
            jsonMap["azimuth"] = jsonArrayAzimuth
          }
          if !elevation.isEmpty {
            var jsonArrayElevation:Array<NSNumber> = []
              for oneValueElevation in elevation {
                jsonArrayElevation += [NSNumber(float:oneValueElevation)]
              }
            jsonMap["elevation"] = jsonArrayElevation
          }
          if !snr.isEmpty {
            var jsonArraySnr:Array<NSNumber> = []
              for oneValueSnr in snr {
                jsonArraySnr += [NSNumber(float:oneValueSnr)]
              }
            jsonMap["snr"] = jsonArraySnr
          }
          if !hasAlmanac.isEmpty {
            jsonMap["hasAlmanac"] = hasAlmanac
          }
          if !hasEphemeris.isEmpty {
            jsonMap["hasEphemeris"] = hasEphemeris
          }
          if !usedInFix.isEmpty {
            jsonMap["usedInFix"] = usedInFix
          }
          return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder.decodeToBuilder(jsonMap).build()
        }
        override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder.fromJSONToBuilder(data).build()
        }
        override public func getDescription(indent:String) throws -> String {
          var output = ""
          if hasTimeToFix {
            output += "\(indent) timeToFix: \(timeToFix) \n"
          }
          var satellitesPrnElementIndex:Int = 0
          for oneValueSatellitesPrn in satellitesPrn  {
              output += "\(indent) satellitesPrn[\(satellitesPrnElementIndex)]: \(oneValueSatellitesPrn)\n"
              satellitesPrnElementIndex += 1
          }
          var azimuthElementIndex:Int = 0
          for oneValueAzimuth in azimuth  {
              output += "\(indent) azimuth[\(azimuthElementIndex)]: \(oneValueAzimuth)\n"
              azimuthElementIndex += 1
          }
          var elevationElementIndex:Int = 0
          for oneValueElevation in elevation  {
              output += "\(indent) elevation[\(elevationElementIndex)]: \(oneValueElevation)\n"
              elevationElementIndex += 1
          }
          var snrElementIndex:Int = 0
          for oneValueSnr in snr  {
              output += "\(indent) snr[\(snrElementIndex)]: \(oneValueSnr)\n"
              snrElementIndex += 1
          }
          var hasAlmanacElementIndex:Int = 0
          for oneValueHasAlmanac in hasAlmanac  {
              output += "\(indent) hasAlmanac[\(hasAlmanacElementIndex)]: \(oneValueHasAlmanac)\n"
              hasAlmanacElementIndex += 1
          }
          var hasEphemerisElementIndex:Int = 0
          for oneValueHasEphemeris in hasEphemeris  {
              output += "\(indent) hasEphemeris[\(hasEphemerisElementIndex)]: \(oneValueHasEphemeris)\n"
              hasEphemerisElementIndex += 1
          }
          var usedInFixElementIndex:Int = 0
          for oneValueUsedInFix in usedInFix  {
              output += "\(indent) usedInFix[\(usedInFixElementIndex)]: \(oneValueUsedInFix)\n"
              usedInFixElementIndex += 1
          }
          output += unknownFields.getDescription(indent)
          return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasTimeToFix {
                   hashCode = (hashCode &* 31) &+ timeToFix.hashValue
                }
                for oneValueSatellitesPrn in satellitesPrn {
                    hashCode = (hashCode &* 31) &+ oneValueSatellitesPrn.hashValue
                }
                for oneValueAzimuth in azimuth {
                    hashCode = (hashCode &* 31) &+ oneValueAzimuth.hashValue
                }
                for oneValueElevation in elevation {
                    hashCode = (hashCode &* 31) &+ oneValueElevation.hashValue
                }
                for oneValueSnr in snr {
                    hashCode = (hashCode &* 31) &+ oneValueSnr.hashValue
                }
                for oneValueHasAlmanac in hasAlmanac {
                    hashCode = (hashCode &* 31) &+ oneValueHasAlmanac.hashValue
                }
                for oneValueHasEphemeris in hasEphemeris {
                    hashCode = (hashCode &* 31) &+ oneValueHasEphemeris.hashValue
                }
                for oneValueUsedInFix in usedInFix {
                    hashCode = (hashCode &* 31) &+ oneValueUsedInFix.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

        override public class func className() -> String {
            return "Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo"
        }
        override public func className() -> String {
            return "Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo"
        }
        override public func classMetaType() -> GeneratedMessage.Type {
            return Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.self
        }
        //Meta information declaration end

        final public class Builder : GeneratedMessageBuilder {
          private var builderResult:Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo = Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo()
          public func getMessage() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo {
              return builderResult
          }

          required override public init () {
             super.init()
          }
          public var hasTimeToFix:Bool {
               get {
                    return builderResult.hasTimeToFix
               }
          }
          public var timeToFix:UInt64 {
               get {
                    return builderResult.timeToFix
               }
               set (value) {
                   builderResult.hasTimeToFix = true
                   builderResult.timeToFix = value
               }
          }
          public func setTimeToFix(value:UInt64) -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            self.timeToFix = value
            return self
          }
          public func clearTimeToFix() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder{
               builderResult.hasTimeToFix = false
               builderResult.timeToFix = UInt64(0)
               return self
          }
          public var satellitesPrn:Array<Int32> {
               get {
                   return builderResult.satellitesPrn
               }
               set (array) {
                   builderResult.satellitesPrn = array
               }
          }
          public func setSatellitesPrn(value:Array<Int32>) -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            self.satellitesPrn = value
            return self
          }
          public func clearSatellitesPrn() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
             builderResult.satellitesPrn.removeAll(keepCapacity: false)
             return self
          }
          public var azimuth:Array<Float> {
               get {
                   return builderResult.azimuth
               }
               set (array) {
                   builderResult.azimuth = array
               }
          }
          public func setAzimuth(value:Array<Float>) -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            self.azimuth = value
            return self
          }
          public func clearAzimuth() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
             builderResult.azimuth.removeAll(keepCapacity: false)
             return self
          }
          public var elevation:Array<Float> {
               get {
                   return builderResult.elevation
               }
               set (array) {
                   builderResult.elevation = array
               }
          }
          public func setElevation(value:Array<Float>) -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            self.elevation = value
            return self
          }
          public func clearElevation() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
             builderResult.elevation.removeAll(keepCapacity: false)
             return self
          }
          public var snr:Array<Float> {
               get {
                   return builderResult.snr
               }
               set (array) {
                   builderResult.snr = array
               }
          }
          public func setSnr(value:Array<Float>) -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            self.snr = value
            return self
          }
          public func clearSnr() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
             builderResult.snr.removeAll(keepCapacity: false)
             return self
          }
          public var hasAlmanac:Array<Bool> {
               get {
                   return builderResult.hasAlmanac
               }
               set (array) {
                   builderResult.hasAlmanac = array
               }
          }
          public func setHasAlmanac(value:Array<Bool>) -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            self.hasAlmanac = value
            return self
          }
          public func clearHasAlmanac() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
             builderResult.hasAlmanac.removeAll(keepCapacity: false)
             return self
          }
          public var hasEphemeris:Array<Bool> {
               get {
                   return builderResult.hasEphemeris
               }
               set (array) {
                   builderResult.hasEphemeris = array
               }
          }
          public func setHasEphemeris(value:Array<Bool>) -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            self.hasEphemeris = value
            return self
          }
          public func clearHasEphemeris() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
             builderResult.hasEphemeris.removeAll(keepCapacity: false)
             return self
          }
          public var usedInFix:Array<Bool> {
               get {
                   return builderResult.usedInFix
               }
               set (array) {
                   builderResult.usedInFix = array
               }
          }
          public func setUsedInFix(value:Array<Bool>) -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            self.usedInFix = value
            return self
          }
          public func clearUsedInFix() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
             builderResult.usedInFix.removeAll(keepCapacity: false)
             return self
          }
          override public var internalGetResult:GeneratedMessage {
               get {
                  return builderResult
               }
          }
          override public func clear() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            builderResult = Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo()
            return self
          }
          override public func clone() throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.builderWithPrototype(builderResult)
          }
          override public func build() throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo {
               try checkInitialized()
               return buildPartial()
          }
          public func buildPartial() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo {
            let returnMe:Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo = builderResult
            return returnMe
          }
          public func mergeFrom(other:Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            if other == Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo() {
             return self
            }
            if other.hasTimeToFix {
                 timeToFix = other.timeToFix
            }
            if !other.satellitesPrn.isEmpty {
                builderResult.satellitesPrn += other.satellitesPrn
            }
            if !other.azimuth.isEmpty {
                builderResult.azimuth += other.azimuth
            }
            if !other.elevation.isEmpty {
                builderResult.elevation += other.elevation
            }
            if !other.snr.isEmpty {
                builderResult.snr += other.snr
            }
            if !other.hasAlmanac.isEmpty {
                builderResult.hasAlmanac += other.hasAlmanac
            }
            if !other.hasEphemeris.isEmpty {
                builderResult.hasEphemeris += other.hasEphemeris
            }
            if !other.usedInFix.isEmpty {
                builderResult.usedInFix += other.usedInFix
            }
            try mergeUnknownFields(other.unknownFields)
            return self
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
               return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
            while (true) {
              let protobufTag = try input.readTag()
              switch protobufTag {
              case 0: 
                self.unknownFields = try unknownFieldsBuilder.build()
                return self

              case 8:
                timeToFix = try input.readUInt64()

              case 18:
                let length:Int32 = try input.readRawVarint32()
                let limit:Int32 = try input.pushLimit(length)
                while (input.bytesUntilLimit() > 0) {
                  builderResult.satellitesPrn += [try input.readInt32()]
                }
                input.popLimit(limit)

              case 26:
                let length:Int32 = try input.readRawVarint32()
                let limit:Int32 = try input.pushLimit(length)
                while (input.bytesUntilLimit() > 0) {
                  builderResult.azimuth += [try input.readFloat()]
                }
                input.popLimit(limit)

              case 34:
                let length:Int32 = try input.readRawVarint32()
                let limit:Int32 = try input.pushLimit(length)
                while (input.bytesUntilLimit() > 0) {
                  builderResult.elevation += [try input.readFloat()]
                }
                input.popLimit(limit)

              case 42:
                let length:Int32 = try input.readRawVarint32()
                let limit:Int32 = try input.pushLimit(length)
                while (input.bytesUntilLimit() > 0) {
                  builderResult.snr += [try input.readFloat()]
                }
                input.popLimit(limit)

              case 50:
                let length:Int32 = try input.readRawVarint32()
                let limit:Int32 = try input.pushLimit(length)
                while (input.bytesUntilLimit() > 0) {
                  builderResult.hasAlmanac += [try input.readBool()]
                }
                input.popLimit(limit)

              case 58:
                let length:Int32 = try input.readRawVarint32()
                let limit:Int32 = try input.pushLimit(length)
                while (input.bytesUntilLimit() > 0) {
                  builderResult.hasEphemeris += [try input.readBool()]
                }
                input.popLimit(limit)

              case 66:
                let length:Int32 = try input.readRawVarint32()
                let limit:Int32 = try input.pushLimit(length)
                while (input.bytesUntilLimit() > 0) {
                  builderResult.usedInFix += [try input.readBool()]
                }
                input.popLimit(limit)

              default:
                if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                   unknownFields = try unknownFieldsBuilder.build()
                   return self
                }
              }
            }
          }
          override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder()
            if let jsonValueTimeToFix = jsonMap["timeToFix"] as? String {
              resultDecodedBuilder.timeToFix = UInt64(jsonValueTimeToFix)!
            }
            if let jsonValueSatellitesPrn = jsonMap["satellitesPrn"] as? Array<NSNumber> {
              var jsonArraySatellitesPrn:Array<Int32> = []
              for oneValueSatellitesPrn in jsonValueSatellitesPrn {
                jsonArraySatellitesPrn += [oneValueSatellitesPrn.intValue]
              }
              resultDecodedBuilder.satellitesPrn = jsonArraySatellitesPrn
            }
            if let jsonValueAzimuth = jsonMap["azimuth"] as? Array<NSNumber> {
              var jsonArrayAzimuth:Array<Float> = []
              for oneValueAzimuth in jsonValueAzimuth {
                jsonArrayAzimuth += [oneValueAzimuth.floatValue]
              }
              resultDecodedBuilder.azimuth = jsonArrayAzimuth
            }
            if let jsonValueElevation = jsonMap["elevation"] as? Array<NSNumber> {
              var jsonArrayElevation:Array<Float> = []
              for oneValueElevation in jsonValueElevation {
                jsonArrayElevation += [oneValueElevation.floatValue]
              }
              resultDecodedBuilder.elevation = jsonArrayElevation
            }
            if let jsonValueSnr = jsonMap["snr"] as? Array<NSNumber> {
              var jsonArraySnr:Array<Float> = []
              for oneValueSnr in jsonValueSnr {
                jsonArraySnr += [oneValueSnr.floatValue]
              }
              resultDecodedBuilder.snr = jsonArraySnr
            }
            if let jsonValueHasAlmanac = jsonMap["hasAlmanac"] as? Array<Bool> {
              resultDecodedBuilder.hasAlmanac = jsonValueHasAlmanac
            }
            if let jsonValueHasEphemeris = jsonMap["hasEphemeris"] as? Array<Bool> {
              resultDecodedBuilder.hasEphemeris = jsonValueHasEphemeris
            }
            if let jsonValueUsedInFix = jsonMap["usedInFix"] as? Array<Bool> {
              resultDecodedBuilder.usedInFix = jsonValueUsedInFix
            }
            return resultDecodedBuilder
          }
          override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
            let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
            guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
              throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
            }
            return try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder.decodeToBuilder(jsDataCast)
          }
        }

      }

    //Nested type declaration end



    //Nested type declaration start

      final public class SensorInfo : GeneratedMessage, GeneratedMessageProtocol {
        // in ms since start
        public private(set) var hasTimestampSnapshot:Bool = false
        public private(set) var timestampSnapshot:UInt64 = UInt64(0)

        public private(set) var hasLinearAccelerationX:Bool = false
        public private(set) var linearAccelerationX:Double = Double(0)

        public private(set) var hasLinearAccelerationY:Bool = false
        public private(set) var linearAccelerationY:Double = Double(0)

        public private(set) var hasLinearAccelerationZ:Bool = false
        public private(set) var linearAccelerationZ:Double = Double(0)

        public private(set) var hasMagneticFieldX:Bool = false
        public private(set) var magneticFieldX:Double = Double(0)

        public private(set) var hasMagneticFieldY:Bool = false
        public private(set) var magneticFieldY:Double = Double(0)

        public private(set) var hasMagneticFieldZ:Bool = false
        public private(set) var magneticFieldZ:Double = Double(0)

        public private(set) var hasRotationVectorX:Bool = false
        public private(set) var rotationVectorX:Double = Double(0)

        public private(set) var hasRotationVectorY:Bool = false
        public private(set) var rotationVectorY:Double = Double(0)

        public private(set) var hasRotationVectorZ:Bool = false
        public private(set) var rotationVectorZ:Double = Double(0)

        public private(set) var hasGyroscopeRawX:Bool = false
        public private(set) var gyroscopeRawX:Double = Double(0)

        public private(set) var hasGyroscopeRawY:Bool = false
        public private(set) var gyroscopeRawY:Double = Double(0)

        public private(set) var hasGyroscopeRawZ:Bool = false
        public private(set) var gyroscopeRawZ:Double = Double(0)

        public private(set) var hasGravityX:Bool = false
        public private(set) var gravityX:Double = Double(0)

        public private(set) var hasGravityY:Bool = false
        public private(set) var gravityY:Double = Double(0)

        public private(set) var hasGravityZ:Bool = false
        public private(set) var gravityZ:Double = Double(0)

        // Always 3
        public private(set) var hasAccelerometerAxes:Bool = false
        public private(set) var accelerometerAxes:UInt64 = UInt64(0)

        required public init() {
             super.init()
        }
        override public func isInitialized() -> Bool {
         return true
        }
        override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
          if hasTimestampSnapshot {
            try output.writeUInt64(1, value:timestampSnapshot)
          }
          if hasLinearAccelerationX {
            try output.writeDouble(3, value:linearAccelerationX)
          }
          if hasLinearAccelerationY {
            try output.writeDouble(4, value:linearAccelerationY)
          }
          if hasLinearAccelerationZ {
            try output.writeDouble(5, value:linearAccelerationZ)
          }
          if hasMagneticFieldX {
            try output.writeDouble(6, value:magneticFieldX)
          }
          if hasMagneticFieldY {
            try output.writeDouble(7, value:magneticFieldY)
          }
          if hasMagneticFieldZ {
            try output.writeDouble(8, value:magneticFieldZ)
          }
          if hasRotationVectorX {
            try output.writeDouble(10, value:rotationVectorX)
          }
          if hasRotationVectorY {
            try output.writeDouble(11, value:rotationVectorY)
          }
          if hasRotationVectorZ {
            try output.writeDouble(12, value:rotationVectorZ)
          }
          if hasGyroscopeRawX {
            try output.writeDouble(13, value:gyroscopeRawX)
          }
          if hasGyroscopeRawY {
            try output.writeDouble(14, value:gyroscopeRawY)
          }
          if hasGyroscopeRawZ {
            try output.writeDouble(15, value:gyroscopeRawZ)
          }
          if hasGravityX {
            try output.writeDouble(16, value:gravityX)
          }
          if hasGravityY {
            try output.writeDouble(17, value:gravityY)
          }
          if hasGravityZ {
            try output.writeDouble(18, value:gravityZ)
          }
          if hasAccelerometerAxes {
            try output.writeUInt64(19, value:accelerometerAxes)
          }
          try unknownFields.writeToCodedOutputStream(output)
        }
        override public func serializedSize() -> Int32 {
          var serialize_size:Int32 = memoizedSerializedSize
          if serialize_size != -1 {
           return serialize_size
          }

          serialize_size = 0
          if hasTimestampSnapshot {
            serialize_size += timestampSnapshot.computeUInt64Size(1)
          }
          if hasLinearAccelerationX {
            serialize_size += linearAccelerationX.computeDoubleSize(3)
          }
          if hasLinearAccelerationY {
            serialize_size += linearAccelerationY.computeDoubleSize(4)
          }
          if hasLinearAccelerationZ {
            serialize_size += linearAccelerationZ.computeDoubleSize(5)
          }
          if hasMagneticFieldX {
            serialize_size += magneticFieldX.computeDoubleSize(6)
          }
          if hasMagneticFieldY {
            serialize_size += magneticFieldY.computeDoubleSize(7)
          }
          if hasMagneticFieldZ {
            serialize_size += magneticFieldZ.computeDoubleSize(8)
          }
          if hasRotationVectorX {
            serialize_size += rotationVectorX.computeDoubleSize(10)
          }
          if hasRotationVectorY {
            serialize_size += rotationVectorY.computeDoubleSize(11)
          }
          if hasRotationVectorZ {
            serialize_size += rotationVectorZ.computeDoubleSize(12)
          }
          if hasGyroscopeRawX {
            serialize_size += gyroscopeRawX.computeDoubleSize(13)
          }
          if hasGyroscopeRawY {
            serialize_size += gyroscopeRawY.computeDoubleSize(14)
          }
          if hasGyroscopeRawZ {
            serialize_size += gyroscopeRawZ.computeDoubleSize(15)
          }
          if hasGravityX {
            serialize_size += gravityX.computeDoubleSize(16)
          }
          if hasGravityY {
            serialize_size += gravityY.computeDoubleSize(17)
          }
          if hasGravityZ {
            serialize_size += gravityZ.computeDoubleSize(18)
          }
          if hasAccelerometerAxes {
            serialize_size += accelerometerAxes.computeUInt64Size(19)
          }
          serialize_size += unknownFields.serializedSize()
          memoizedSerializedSize = serialize_size
          return serialize_size
        }
        public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.Signature.SensorInfo> {
          var mergedArray = Array<Pogoprotos.Networking.Envelopes.Signature.SensorInfo>()
          while let value = try parseFromDelimitedFromInputStream(input) {
            mergedArray += [value]
          }
          return mergedArray
        }
        public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo? {
          return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder().mergeDelimitedFromInputStream(input)?.build()
        }
        public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
        }
        public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder().mergeFromInputStream(input).build()
        }
        public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder().mergeFromCodedInputStream(input).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
          return Pogoprotos.Networking.Envelopes.Signature.SensorInfo.classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder
        }
        public func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
          return classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder
        }
        override public class func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder()
        }
        override public func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder()
        }
        public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
          return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.builderWithPrototype(self)
        }
        public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.Signature.SensorInfo) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
          return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder().mergeFrom(prototype)
        }
        override public func encode() throws -> Dictionary<String,AnyObject> {
          guard isInitialized() else {
            throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
          }

          var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
          if hasTimestampSnapshot {
            jsonMap["timestampSnapshot"] = "\(timestampSnapshot)"
          }
          if hasLinearAccelerationX {
            jsonMap["linearAccelerationX"] = NSNumber(double:linearAccelerationX)
          }
          if hasLinearAccelerationY {
            jsonMap["linearAccelerationY"] = NSNumber(double:linearAccelerationY)
          }
          if hasLinearAccelerationZ {
            jsonMap["linearAccelerationZ"] = NSNumber(double:linearAccelerationZ)
          }
          if hasMagneticFieldX {
            jsonMap["magneticFieldX"] = NSNumber(double:magneticFieldX)
          }
          if hasMagneticFieldY {
            jsonMap["magneticFieldY"] = NSNumber(double:magneticFieldY)
          }
          if hasMagneticFieldZ {
            jsonMap["magneticFieldZ"] = NSNumber(double:magneticFieldZ)
          }
          if hasRotationVectorX {
            jsonMap["rotationVectorX"] = NSNumber(double:rotationVectorX)
          }
          if hasRotationVectorY {
            jsonMap["rotationVectorY"] = NSNumber(double:rotationVectorY)
          }
          if hasRotationVectorZ {
            jsonMap["rotationVectorZ"] = NSNumber(double:rotationVectorZ)
          }
          if hasGyroscopeRawX {
            jsonMap["gyroscopeRawX"] = NSNumber(double:gyroscopeRawX)
          }
          if hasGyroscopeRawY {
            jsonMap["gyroscopeRawY"] = NSNumber(double:gyroscopeRawY)
          }
          if hasGyroscopeRawZ {
            jsonMap["gyroscopeRawZ"] = NSNumber(double:gyroscopeRawZ)
          }
          if hasGravityX {
            jsonMap["gravityX"] = NSNumber(double:gravityX)
          }
          if hasGravityY {
            jsonMap["gravityY"] = NSNumber(double:gravityY)
          }
          if hasGravityZ {
            jsonMap["gravityZ"] = NSNumber(double:gravityZ)
          }
          if hasAccelerometerAxes {
            jsonMap["accelerometerAxes"] = "\(accelerometerAxes)"
          }
          return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder.decodeToBuilder(jsonMap).build()
        }
        override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder.fromJSONToBuilder(data).build()
        }
        override public func getDescription(indent:String) throws -> String {
          var output = ""
          if hasTimestampSnapshot {
            output += "\(indent) timestampSnapshot: \(timestampSnapshot) \n"
          }
          if hasLinearAccelerationX {
            output += "\(indent) linearAccelerationX: \(linearAccelerationX) \n"
          }
          if hasLinearAccelerationY {
            output += "\(indent) linearAccelerationY: \(linearAccelerationY) \n"
          }
          if hasLinearAccelerationZ {
            output += "\(indent) linearAccelerationZ: \(linearAccelerationZ) \n"
          }
          if hasMagneticFieldX {
            output += "\(indent) magneticFieldX: \(magneticFieldX) \n"
          }
          if hasMagneticFieldY {
            output += "\(indent) magneticFieldY: \(magneticFieldY) \n"
          }
          if hasMagneticFieldZ {
            output += "\(indent) magneticFieldZ: \(magneticFieldZ) \n"
          }
          if hasRotationVectorX {
            output += "\(indent) rotationVectorX: \(rotationVectorX) \n"
          }
          if hasRotationVectorY {
            output += "\(indent) rotationVectorY: \(rotationVectorY) \n"
          }
          if hasRotationVectorZ {
            output += "\(indent) rotationVectorZ: \(rotationVectorZ) \n"
          }
          if hasGyroscopeRawX {
            output += "\(indent) gyroscopeRawX: \(gyroscopeRawX) \n"
          }
          if hasGyroscopeRawY {
            output += "\(indent) gyroscopeRawY: \(gyroscopeRawY) \n"
          }
          if hasGyroscopeRawZ {
            output += "\(indent) gyroscopeRawZ: \(gyroscopeRawZ) \n"
          }
          if hasGravityX {
            output += "\(indent) gravityX: \(gravityX) \n"
          }
          if hasGravityY {
            output += "\(indent) gravityY: \(gravityY) \n"
          }
          if hasGravityZ {
            output += "\(indent) gravityZ: \(gravityZ) \n"
          }
          if hasAccelerometerAxes {
            output += "\(indent) accelerometerAxes: \(accelerometerAxes) \n"
          }
          output += unknownFields.getDescription(indent)
          return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasTimestampSnapshot {
                   hashCode = (hashCode &* 31) &+ timestampSnapshot.hashValue
                }
                if hasLinearAccelerationX {
                   hashCode = (hashCode &* 31) &+ linearAccelerationX.hashValue
                }
                if hasLinearAccelerationY {
                   hashCode = (hashCode &* 31) &+ linearAccelerationY.hashValue
                }
                if hasLinearAccelerationZ {
                   hashCode = (hashCode &* 31) &+ linearAccelerationZ.hashValue
                }
                if hasMagneticFieldX {
                   hashCode = (hashCode &* 31) &+ magneticFieldX.hashValue
                }
                if hasMagneticFieldY {
                   hashCode = (hashCode &* 31) &+ magneticFieldY.hashValue
                }
                if hasMagneticFieldZ {
                   hashCode = (hashCode &* 31) &+ magneticFieldZ.hashValue
                }
                if hasRotationVectorX {
                   hashCode = (hashCode &* 31) &+ rotationVectorX.hashValue
                }
                if hasRotationVectorY {
                   hashCode = (hashCode &* 31) &+ rotationVectorY.hashValue
                }
                if hasRotationVectorZ {
                   hashCode = (hashCode &* 31) &+ rotationVectorZ.hashValue
                }
                if hasGyroscopeRawX {
                   hashCode = (hashCode &* 31) &+ gyroscopeRawX.hashValue
                }
                if hasGyroscopeRawY {
                   hashCode = (hashCode &* 31) &+ gyroscopeRawY.hashValue
                }
                if hasGyroscopeRawZ {
                   hashCode = (hashCode &* 31) &+ gyroscopeRawZ.hashValue
                }
                if hasGravityX {
                   hashCode = (hashCode &* 31) &+ gravityX.hashValue
                }
                if hasGravityY {
                   hashCode = (hashCode &* 31) &+ gravityY.hashValue
                }
                if hasGravityZ {
                   hashCode = (hashCode &* 31) &+ gravityZ.hashValue
                }
                if hasAccelerometerAxes {
                   hashCode = (hashCode &* 31) &+ accelerometerAxes.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

        override public class func className() -> String {
            return "Pogoprotos.Networking.Envelopes.Signature.SensorInfo"
        }
        override public func className() -> String {
            return "Pogoprotos.Networking.Envelopes.Signature.SensorInfo"
        }
        override public func classMetaType() -> GeneratedMessage.Type {
            return Pogoprotos.Networking.Envelopes.Signature.SensorInfo.self
        }
        //Meta information declaration end

        final public class Builder : GeneratedMessageBuilder {
          private var builderResult:Pogoprotos.Networking.Envelopes.Signature.SensorInfo = Pogoprotos.Networking.Envelopes.Signature.SensorInfo()
          public func getMessage() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo {
              return builderResult
          }

          required override public init () {
             super.init()
          }
          public var hasTimestampSnapshot:Bool {
               get {
                    return builderResult.hasTimestampSnapshot
               }
          }
          public var timestampSnapshot:UInt64 {
               get {
                    return builderResult.timestampSnapshot
               }
               set (value) {
                   builderResult.hasTimestampSnapshot = true
                   builderResult.timestampSnapshot = value
               }
          }
          public func setTimestampSnapshot(value:UInt64) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.timestampSnapshot = value
            return self
          }
          public func clearTimestampSnapshot() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasTimestampSnapshot = false
               builderResult.timestampSnapshot = UInt64(0)
               return self
          }
          public var hasLinearAccelerationX:Bool {
               get {
                    return builderResult.hasLinearAccelerationX
               }
          }
          public var linearAccelerationX:Double {
               get {
                    return builderResult.linearAccelerationX
               }
               set (value) {
                   builderResult.hasLinearAccelerationX = true
                   builderResult.linearAccelerationX = value
               }
          }
          public func setLinearAccelerationX(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.linearAccelerationX = value
            return self
          }
          public func clearLinearAccelerationX() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasLinearAccelerationX = false
               builderResult.linearAccelerationX = Double(0)
               return self
          }
          public var hasLinearAccelerationY:Bool {
               get {
                    return builderResult.hasLinearAccelerationY
               }
          }
          public var linearAccelerationY:Double {
               get {
                    return builderResult.linearAccelerationY
               }
               set (value) {
                   builderResult.hasLinearAccelerationY = true
                   builderResult.linearAccelerationY = value
               }
          }
          public func setLinearAccelerationY(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.linearAccelerationY = value
            return self
          }
          public func clearLinearAccelerationY() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasLinearAccelerationY = false
               builderResult.linearAccelerationY = Double(0)
               return self
          }
          public var hasLinearAccelerationZ:Bool {
               get {
                    return builderResult.hasLinearAccelerationZ
               }
          }
          public var linearAccelerationZ:Double {
               get {
                    return builderResult.linearAccelerationZ
               }
               set (value) {
                   builderResult.hasLinearAccelerationZ = true
                   builderResult.linearAccelerationZ = value
               }
          }
          public func setLinearAccelerationZ(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.linearAccelerationZ = value
            return self
          }
          public func clearLinearAccelerationZ() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasLinearAccelerationZ = false
               builderResult.linearAccelerationZ = Double(0)
               return self
          }
          public var hasMagneticFieldX:Bool {
               get {
                    return builderResult.hasMagneticFieldX
               }
          }
          public var magneticFieldX:Double {
               get {
                    return builderResult.magneticFieldX
               }
               set (value) {
                   builderResult.hasMagneticFieldX = true
                   builderResult.magneticFieldX = value
               }
          }
          public func setMagneticFieldX(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.magneticFieldX = value
            return self
          }
          public func clearMagneticFieldX() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasMagneticFieldX = false
               builderResult.magneticFieldX = Double(0)
               return self
          }
          public var hasMagneticFieldY:Bool {
               get {
                    return builderResult.hasMagneticFieldY
               }
          }
          public var magneticFieldY:Double {
               get {
                    return builderResult.magneticFieldY
               }
               set (value) {
                   builderResult.hasMagneticFieldY = true
                   builderResult.magneticFieldY = value
               }
          }
          public func setMagneticFieldY(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.magneticFieldY = value
            return self
          }
          public func clearMagneticFieldY() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasMagneticFieldY = false
               builderResult.magneticFieldY = Double(0)
               return self
          }
          public var hasMagneticFieldZ:Bool {
               get {
                    return builderResult.hasMagneticFieldZ
               }
          }
          public var magneticFieldZ:Double {
               get {
                    return builderResult.magneticFieldZ
               }
               set (value) {
                   builderResult.hasMagneticFieldZ = true
                   builderResult.magneticFieldZ = value
               }
          }
          public func setMagneticFieldZ(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.magneticFieldZ = value
            return self
          }
          public func clearMagneticFieldZ() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasMagneticFieldZ = false
               builderResult.magneticFieldZ = Double(0)
               return self
          }
          public var hasRotationVectorX:Bool {
               get {
                    return builderResult.hasRotationVectorX
               }
          }
          public var rotationVectorX:Double {
               get {
                    return builderResult.rotationVectorX
               }
               set (value) {
                   builderResult.hasRotationVectorX = true
                   builderResult.rotationVectorX = value
               }
          }
          public func setRotationVectorX(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.rotationVectorX = value
            return self
          }
          public func clearRotationVectorX() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasRotationVectorX = false
               builderResult.rotationVectorX = Double(0)
               return self
          }
          public var hasRotationVectorY:Bool {
               get {
                    return builderResult.hasRotationVectorY
               }
          }
          public var rotationVectorY:Double {
               get {
                    return builderResult.rotationVectorY
               }
               set (value) {
                   builderResult.hasRotationVectorY = true
                   builderResult.rotationVectorY = value
               }
          }
          public func setRotationVectorY(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.rotationVectorY = value
            return self
          }
          public func clearRotationVectorY() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasRotationVectorY = false
               builderResult.rotationVectorY = Double(0)
               return self
          }
          public var hasRotationVectorZ:Bool {
               get {
                    return builderResult.hasRotationVectorZ
               }
          }
          public var rotationVectorZ:Double {
               get {
                    return builderResult.rotationVectorZ
               }
               set (value) {
                   builderResult.hasRotationVectorZ = true
                   builderResult.rotationVectorZ = value
               }
          }
          public func setRotationVectorZ(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.rotationVectorZ = value
            return self
          }
          public func clearRotationVectorZ() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasRotationVectorZ = false
               builderResult.rotationVectorZ = Double(0)
               return self
          }
          public var hasGyroscopeRawX:Bool {
               get {
                    return builderResult.hasGyroscopeRawX
               }
          }
          public var gyroscopeRawX:Double {
               get {
                    return builderResult.gyroscopeRawX
               }
               set (value) {
                   builderResult.hasGyroscopeRawX = true
                   builderResult.gyroscopeRawX = value
               }
          }
          public func setGyroscopeRawX(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.gyroscopeRawX = value
            return self
          }
          public func clearGyroscopeRawX() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasGyroscopeRawX = false
               builderResult.gyroscopeRawX = Double(0)
               return self
          }
          public var hasGyroscopeRawY:Bool {
               get {
                    return builderResult.hasGyroscopeRawY
               }
          }
          public var gyroscopeRawY:Double {
               get {
                    return builderResult.gyroscopeRawY
               }
               set (value) {
                   builderResult.hasGyroscopeRawY = true
                   builderResult.gyroscopeRawY = value
               }
          }
          public func setGyroscopeRawY(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.gyroscopeRawY = value
            return self
          }
          public func clearGyroscopeRawY() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasGyroscopeRawY = false
               builderResult.gyroscopeRawY = Double(0)
               return self
          }
          public var hasGyroscopeRawZ:Bool {
               get {
                    return builderResult.hasGyroscopeRawZ
               }
          }
          public var gyroscopeRawZ:Double {
               get {
                    return builderResult.gyroscopeRawZ
               }
               set (value) {
                   builderResult.hasGyroscopeRawZ = true
                   builderResult.gyroscopeRawZ = value
               }
          }
          public func setGyroscopeRawZ(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.gyroscopeRawZ = value
            return self
          }
          public func clearGyroscopeRawZ() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasGyroscopeRawZ = false
               builderResult.gyroscopeRawZ = Double(0)
               return self
          }
          public var hasGravityX:Bool {
               get {
                    return builderResult.hasGravityX
               }
          }
          public var gravityX:Double {
               get {
                    return builderResult.gravityX
               }
               set (value) {
                   builderResult.hasGravityX = true
                   builderResult.gravityX = value
               }
          }
          public func setGravityX(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.gravityX = value
            return self
          }
          public func clearGravityX() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasGravityX = false
               builderResult.gravityX = Double(0)
               return self
          }
          public var hasGravityY:Bool {
               get {
                    return builderResult.hasGravityY
               }
          }
          public var gravityY:Double {
               get {
                    return builderResult.gravityY
               }
               set (value) {
                   builderResult.hasGravityY = true
                   builderResult.gravityY = value
               }
          }
          public func setGravityY(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.gravityY = value
            return self
          }
          public func clearGravityY() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasGravityY = false
               builderResult.gravityY = Double(0)
               return self
          }
          public var hasGravityZ:Bool {
               get {
                    return builderResult.hasGravityZ
               }
          }
          public var gravityZ:Double {
               get {
                    return builderResult.gravityZ
               }
               set (value) {
                   builderResult.hasGravityZ = true
                   builderResult.gravityZ = value
               }
          }
          public func setGravityZ(value:Double) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.gravityZ = value
            return self
          }
          public func clearGravityZ() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasGravityZ = false
               builderResult.gravityZ = Double(0)
               return self
          }
          public var hasAccelerometerAxes:Bool {
               get {
                    return builderResult.hasAccelerometerAxes
               }
          }
          public var accelerometerAxes:UInt64 {
               get {
                    return builderResult.accelerometerAxes
               }
               set (value) {
                   builderResult.hasAccelerometerAxes = true
                   builderResult.accelerometerAxes = value
               }
          }
          public func setAccelerometerAxes(value:UInt64) -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            self.accelerometerAxes = value
            return self
          }
          public func clearAccelerometerAxes() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder{
               builderResult.hasAccelerometerAxes = false
               builderResult.accelerometerAxes = UInt64(0)
               return self
          }
          override public var internalGetResult:GeneratedMessage {
               get {
                  return builderResult
               }
          }
          override public func clear() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            builderResult = Pogoprotos.Networking.Envelopes.Signature.SensorInfo()
            return self
          }
          override public func clone() throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.builderWithPrototype(builderResult)
          }
          override public func build() throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo {
               try checkInitialized()
               return buildPartial()
          }
          public func buildPartial() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo {
            let returnMe:Pogoprotos.Networking.Envelopes.Signature.SensorInfo = builderResult
            return returnMe
          }
          public func mergeFrom(other:Pogoprotos.Networking.Envelopes.Signature.SensorInfo) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            if other == Pogoprotos.Networking.Envelopes.Signature.SensorInfo() {
             return self
            }
            if other.hasTimestampSnapshot {
                 timestampSnapshot = other.timestampSnapshot
            }
            if other.hasLinearAccelerationX {
                 linearAccelerationX = other.linearAccelerationX
            }
            if other.hasLinearAccelerationY {
                 linearAccelerationY = other.linearAccelerationY
            }
            if other.hasLinearAccelerationZ {
                 linearAccelerationZ = other.linearAccelerationZ
            }
            if other.hasMagneticFieldX {
                 magneticFieldX = other.magneticFieldX
            }
            if other.hasMagneticFieldY {
                 magneticFieldY = other.magneticFieldY
            }
            if other.hasMagneticFieldZ {
                 magneticFieldZ = other.magneticFieldZ
            }
            if other.hasRotationVectorX {
                 rotationVectorX = other.rotationVectorX
            }
            if other.hasRotationVectorY {
                 rotationVectorY = other.rotationVectorY
            }
            if other.hasRotationVectorZ {
                 rotationVectorZ = other.rotationVectorZ
            }
            if other.hasGyroscopeRawX {
                 gyroscopeRawX = other.gyroscopeRawX
            }
            if other.hasGyroscopeRawY {
                 gyroscopeRawY = other.gyroscopeRawY
            }
            if other.hasGyroscopeRawZ {
                 gyroscopeRawZ = other.gyroscopeRawZ
            }
            if other.hasGravityX {
                 gravityX = other.gravityX
            }
            if other.hasGravityY {
                 gravityY = other.gravityY
            }
            if other.hasGravityZ {
                 gravityZ = other.gravityZ
            }
            if other.hasAccelerometerAxes {
                 accelerometerAxes = other.accelerometerAxes
            }
            try mergeUnknownFields(other.unknownFields)
            return self
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
               return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
            while (true) {
              let protobufTag = try input.readTag()
              switch protobufTag {
              case 0: 
                self.unknownFields = try unknownFieldsBuilder.build()
                return self

              case 8:
                timestampSnapshot = try input.readUInt64()

              case 25:
                linearAccelerationX = try input.readDouble()

              case 33:
                linearAccelerationY = try input.readDouble()

              case 41:
                linearAccelerationZ = try input.readDouble()

              case 49:
                magneticFieldX = try input.readDouble()

              case 57:
                magneticFieldY = try input.readDouble()

              case 65:
                magneticFieldZ = try input.readDouble()

              case 81:
                rotationVectorX = try input.readDouble()

              case 89:
                rotationVectorY = try input.readDouble()

              case 97:
                rotationVectorZ = try input.readDouble()

              case 105:
                gyroscopeRawX = try input.readDouble()

              case 113:
                gyroscopeRawY = try input.readDouble()

              case 121:
                gyroscopeRawZ = try input.readDouble()

              case 129:
                gravityX = try input.readDouble()

              case 137:
                gravityY = try input.readDouble()

              case 145:
                gravityZ = try input.readDouble()

              case 152:
                accelerometerAxes = try input.readUInt64()

              default:
                if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                   unknownFields = try unknownFieldsBuilder.build()
                   return self
                }
              }
            }
          }
          override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder()
            if let jsonValueTimestampSnapshot = jsonMap["timestampSnapshot"] as? String {
              resultDecodedBuilder.timestampSnapshot = UInt64(jsonValueTimestampSnapshot)!
            }
            if let jsonValueLinearAccelerationX = jsonMap["linearAccelerationX"] as? NSNumber {
              resultDecodedBuilder.linearAccelerationX = jsonValueLinearAccelerationX.doubleValue
            }
            if let jsonValueLinearAccelerationY = jsonMap["linearAccelerationY"] as? NSNumber {
              resultDecodedBuilder.linearAccelerationY = jsonValueLinearAccelerationY.doubleValue
            }
            if let jsonValueLinearAccelerationZ = jsonMap["linearAccelerationZ"] as? NSNumber {
              resultDecodedBuilder.linearAccelerationZ = jsonValueLinearAccelerationZ.doubleValue
            }
            if let jsonValueMagneticFieldX = jsonMap["magneticFieldX"] as? NSNumber {
              resultDecodedBuilder.magneticFieldX = jsonValueMagneticFieldX.doubleValue
            }
            if let jsonValueMagneticFieldY = jsonMap["magneticFieldY"] as? NSNumber {
              resultDecodedBuilder.magneticFieldY = jsonValueMagneticFieldY.doubleValue
            }
            if let jsonValueMagneticFieldZ = jsonMap["magneticFieldZ"] as? NSNumber {
              resultDecodedBuilder.magneticFieldZ = jsonValueMagneticFieldZ.doubleValue
            }
            if let jsonValueRotationVectorX = jsonMap["rotationVectorX"] as? NSNumber {
              resultDecodedBuilder.rotationVectorX = jsonValueRotationVectorX.doubleValue
            }
            if let jsonValueRotationVectorY = jsonMap["rotationVectorY"] as? NSNumber {
              resultDecodedBuilder.rotationVectorY = jsonValueRotationVectorY.doubleValue
            }
            if let jsonValueRotationVectorZ = jsonMap["rotationVectorZ"] as? NSNumber {
              resultDecodedBuilder.rotationVectorZ = jsonValueRotationVectorZ.doubleValue
            }
            if let jsonValueGyroscopeRawX = jsonMap["gyroscopeRawX"] as? NSNumber {
              resultDecodedBuilder.gyroscopeRawX = jsonValueGyroscopeRawX.doubleValue
            }
            if let jsonValueGyroscopeRawY = jsonMap["gyroscopeRawY"] as? NSNumber {
              resultDecodedBuilder.gyroscopeRawY = jsonValueGyroscopeRawY.doubleValue
            }
            if let jsonValueGyroscopeRawZ = jsonMap["gyroscopeRawZ"] as? NSNumber {
              resultDecodedBuilder.gyroscopeRawZ = jsonValueGyroscopeRawZ.doubleValue
            }
            if let jsonValueGravityX = jsonMap["gravityX"] as? NSNumber {
              resultDecodedBuilder.gravityX = jsonValueGravityX.doubleValue
            }
            if let jsonValueGravityY = jsonMap["gravityY"] as? NSNumber {
              resultDecodedBuilder.gravityY = jsonValueGravityY.doubleValue
            }
            if let jsonValueGravityZ = jsonMap["gravityZ"] as? NSNumber {
              resultDecodedBuilder.gravityZ = jsonValueGravityZ.doubleValue
            }
            if let jsonValueAccelerometerAxes = jsonMap["accelerometerAxes"] as? String {
              resultDecodedBuilder.accelerometerAxes = UInt64(jsonValueAccelerometerAxes)!
            }
            return resultDecodedBuilder
          }
          override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
            let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
            guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
              throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
            }
            return try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder.decodeToBuilder(jsDataCast)
          }
        }

      }

    //Nested type declaration end



    //Nested type declaration start

      final public class DeviceInfo : GeneratedMessage, GeneratedMessageProtocol {
        // Hex string
        public private(set) var hasDeviceId:Bool = false
        public private(set) var deviceId:String = ""

        public private(set) var hasAndroidBoardName:Bool = false
        public private(set) var androidBoardName:String = ""

        public private(set) var hasAndroidBootloader:Bool = false
        public private(set) var androidBootloader:String = ""

        // On Android: product.brand
        public private(set) var hasDeviceBrand:Bool = false
        public private(set) var deviceBrand:String = ""

        // On Android: product.device
        public private(set) var hasDeviceModel:Bool = false
        public private(set) var deviceModel:String = ""

        // Android only, build.display.id
        public private(set) var hasDeviceModelIdentifier:Bool = false
        public private(set) var deviceModelIdentifier:String = ""

        // On Android: boot.hardware
        public private(set) var hasDeviceModelBoot:Bool = false
        public private(set) var deviceModelBoot:String = ""

        // On Android: product.manufacturer
        public private(set) var hasHardwareManufacturer:Bool = false
        public private(set) var hardwareManufacturer:String = ""

        // On Android: product.model
        public private(set) var hasHardwareModel:Bool = false
        public private(set) var hardwareModel:String = ""

        // On Android: product.name, on iOS: "iPhone OS"
        public private(set) var hasFirmwareBrand:Bool = false
        public private(set) var firmwareBrand:String = ""

        // Android only, build.tags
        public private(set) var hasFirmwareTags:Bool = false
        public private(set) var firmwareTags:String = ""

        // On Android: build.type, on iOS instead: iOS version
        public private(set) var hasFirmwareType:Bool = false
        public private(set) var firmwareType:String = ""

        // Android only, build.fingerprint
        public private(set) var hasFirmwareFingerprint:Bool = false
        public private(set) var firmwareFingerprint:String = ""

        required public init() {
             super.init()
        }
        override public func isInitialized() -> Bool {
         return true
        }
        override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
          if hasDeviceId {
            try output.writeString(1, value:deviceId)
          }
          if hasAndroidBoardName {
            try output.writeString(2, value:androidBoardName)
          }
          if hasAndroidBootloader {
            try output.writeString(3, value:androidBootloader)
          }
          if hasDeviceBrand {
            try output.writeString(4, value:deviceBrand)
          }
          if hasDeviceModel {
            try output.writeString(5, value:deviceModel)
          }
          if hasDeviceModelIdentifier {
            try output.writeString(6, value:deviceModelIdentifier)
          }
          if hasDeviceModelBoot {
            try output.writeString(7, value:deviceModelBoot)
          }
          if hasHardwareManufacturer {
            try output.writeString(8, value:hardwareManufacturer)
          }
          if hasHardwareModel {
            try output.writeString(9, value:hardwareModel)
          }
          if hasFirmwareBrand {
            try output.writeString(10, value:firmwareBrand)
          }
          if hasFirmwareTags {
            try output.writeString(12, value:firmwareTags)
          }
          if hasFirmwareType {
            try output.writeString(13, value:firmwareType)
          }
          if hasFirmwareFingerprint {
            try output.writeString(14, value:firmwareFingerprint)
          }
          try unknownFields.writeToCodedOutputStream(output)
        }
        override public func serializedSize() -> Int32 {
          var serialize_size:Int32 = memoizedSerializedSize
          if serialize_size != -1 {
           return serialize_size
          }

          serialize_size = 0
          if hasDeviceId {
            serialize_size += deviceId.computeStringSize(1)
          }
          if hasAndroidBoardName {
            serialize_size += androidBoardName.computeStringSize(2)
          }
          if hasAndroidBootloader {
            serialize_size += androidBootloader.computeStringSize(3)
          }
          if hasDeviceBrand {
            serialize_size += deviceBrand.computeStringSize(4)
          }
          if hasDeviceModel {
            serialize_size += deviceModel.computeStringSize(5)
          }
          if hasDeviceModelIdentifier {
            serialize_size += deviceModelIdentifier.computeStringSize(6)
          }
          if hasDeviceModelBoot {
            serialize_size += deviceModelBoot.computeStringSize(7)
          }
          if hasHardwareManufacturer {
            serialize_size += hardwareManufacturer.computeStringSize(8)
          }
          if hasHardwareModel {
            serialize_size += hardwareModel.computeStringSize(9)
          }
          if hasFirmwareBrand {
            serialize_size += firmwareBrand.computeStringSize(10)
          }
          if hasFirmwareTags {
            serialize_size += firmwareTags.computeStringSize(12)
          }
          if hasFirmwareType {
            serialize_size += firmwareType.computeStringSize(13)
          }
          if hasFirmwareFingerprint {
            serialize_size += firmwareFingerprint.computeStringSize(14)
          }
          serialize_size += unknownFields.serializedSize()
          memoizedSerializedSize = serialize_size
          return serialize_size
        }
        public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.Signature.DeviceInfo> {
          var mergedArray = Array<Pogoprotos.Networking.Envelopes.Signature.DeviceInfo>()
          while let value = try parseFromDelimitedFromInputStream(input) {
            mergedArray += [value]
          }
          return mergedArray
        }
        public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo? {
          return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder().mergeDelimitedFromInputStream(input)?.build()
        }
        public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
        }
        public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder().mergeFromInputStream(input).build()
        }
        public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder().mergeFromCodedInputStream(input).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
          return Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder
        }
        public func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
          return classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder
        }
        override public class func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder()
        }
        override public func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder()
        }
        public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
          return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.builderWithPrototype(self)
        }
        public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.Signature.DeviceInfo) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
          return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder().mergeFrom(prototype)
        }
        override public func encode() throws -> Dictionary<String,AnyObject> {
          guard isInitialized() else {
            throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
          }

          var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
          if hasDeviceId {
            jsonMap["deviceId"] = deviceId
          }
          if hasAndroidBoardName {
            jsonMap["androidBoardName"] = androidBoardName
          }
          if hasAndroidBootloader {
            jsonMap["androidBootloader"] = androidBootloader
          }
          if hasDeviceBrand {
            jsonMap["deviceBrand"] = deviceBrand
          }
          if hasDeviceModel {
            jsonMap["deviceModel"] = deviceModel
          }
          if hasDeviceModelIdentifier {
            jsonMap["deviceModelIdentifier"] = deviceModelIdentifier
          }
          if hasDeviceModelBoot {
            jsonMap["deviceModelBoot"] = deviceModelBoot
          }
          if hasHardwareManufacturer {
            jsonMap["hardwareManufacturer"] = hardwareManufacturer
          }
          if hasHardwareModel {
            jsonMap["hardwareModel"] = hardwareModel
          }
          if hasFirmwareBrand {
            jsonMap["firmwareBrand"] = firmwareBrand
          }
          if hasFirmwareTags {
            jsonMap["firmwareTags"] = firmwareTags
          }
          if hasFirmwareType {
            jsonMap["firmwareType"] = firmwareType
          }
          if hasFirmwareFingerprint {
            jsonMap["firmwareFingerprint"] = firmwareFingerprint
          }
          return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder.decodeToBuilder(jsonMap).build()
        }
        override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo {
          return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder.fromJSONToBuilder(data).build()
        }
        override public func getDescription(indent:String) throws -> String {
          var output = ""
          if hasDeviceId {
            output += "\(indent) deviceId: \(deviceId) \n"
          }
          if hasAndroidBoardName {
            output += "\(indent) androidBoardName: \(androidBoardName) \n"
          }
          if hasAndroidBootloader {
            output += "\(indent) androidBootloader: \(androidBootloader) \n"
          }
          if hasDeviceBrand {
            output += "\(indent) deviceBrand: \(deviceBrand) \n"
          }
          if hasDeviceModel {
            output += "\(indent) deviceModel: \(deviceModel) \n"
          }
          if hasDeviceModelIdentifier {
            output += "\(indent) deviceModelIdentifier: \(deviceModelIdentifier) \n"
          }
          if hasDeviceModelBoot {
            output += "\(indent) deviceModelBoot: \(deviceModelBoot) \n"
          }
          if hasHardwareManufacturer {
            output += "\(indent) hardwareManufacturer: \(hardwareManufacturer) \n"
          }
          if hasHardwareModel {
            output += "\(indent) hardwareModel: \(hardwareModel) \n"
          }
          if hasFirmwareBrand {
            output += "\(indent) firmwareBrand: \(firmwareBrand) \n"
          }
          if hasFirmwareTags {
            output += "\(indent) firmwareTags: \(firmwareTags) \n"
          }
          if hasFirmwareType {
            output += "\(indent) firmwareType: \(firmwareType) \n"
          }
          if hasFirmwareFingerprint {
            output += "\(indent) firmwareFingerprint: \(firmwareFingerprint) \n"
          }
          output += unknownFields.getDescription(indent)
          return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasDeviceId {
                   hashCode = (hashCode &* 31) &+ deviceId.hashValue
                }
                if hasAndroidBoardName {
                   hashCode = (hashCode &* 31) &+ androidBoardName.hashValue
                }
                if hasAndroidBootloader {
                   hashCode = (hashCode &* 31) &+ androidBootloader.hashValue
                }
                if hasDeviceBrand {
                   hashCode = (hashCode &* 31) &+ deviceBrand.hashValue
                }
                if hasDeviceModel {
                   hashCode = (hashCode &* 31) &+ deviceModel.hashValue
                }
                if hasDeviceModelIdentifier {
                   hashCode = (hashCode &* 31) &+ deviceModelIdentifier.hashValue
                }
                if hasDeviceModelBoot {
                   hashCode = (hashCode &* 31) &+ deviceModelBoot.hashValue
                }
                if hasHardwareManufacturer {
                   hashCode = (hashCode &* 31) &+ hardwareManufacturer.hashValue
                }
                if hasHardwareModel {
                   hashCode = (hashCode &* 31) &+ hardwareModel.hashValue
                }
                if hasFirmwareBrand {
                   hashCode = (hashCode &* 31) &+ firmwareBrand.hashValue
                }
                if hasFirmwareTags {
                   hashCode = (hashCode &* 31) &+ firmwareTags.hashValue
                }
                if hasFirmwareType {
                   hashCode = (hashCode &* 31) &+ firmwareType.hashValue
                }
                if hasFirmwareFingerprint {
                   hashCode = (hashCode &* 31) &+ firmwareFingerprint.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

        override public class func className() -> String {
            return "Pogoprotos.Networking.Envelopes.Signature.DeviceInfo"
        }
        override public func className() -> String {
            return "Pogoprotos.Networking.Envelopes.Signature.DeviceInfo"
        }
        override public func classMetaType() -> GeneratedMessage.Type {
            return Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.self
        }
        //Meta information declaration end

        final public class Builder : GeneratedMessageBuilder {
          private var builderResult:Pogoprotos.Networking.Envelopes.Signature.DeviceInfo = Pogoprotos.Networking.Envelopes.Signature.DeviceInfo()
          public func getMessage() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo {
              return builderResult
          }

          required override public init () {
             super.init()
          }
          public var hasDeviceId:Bool {
               get {
                    return builderResult.hasDeviceId
               }
          }
          public var deviceId:String {
               get {
                    return builderResult.deviceId
               }
               set (value) {
                   builderResult.hasDeviceId = true
                   builderResult.deviceId = value
               }
          }
          public func setDeviceId(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.deviceId = value
            return self
          }
          public func clearDeviceId() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasDeviceId = false
               builderResult.deviceId = ""
               return self
          }
          public var hasAndroidBoardName:Bool {
               get {
                    return builderResult.hasAndroidBoardName
               }
          }
          public var androidBoardName:String {
               get {
                    return builderResult.androidBoardName
               }
               set (value) {
                   builderResult.hasAndroidBoardName = true
                   builderResult.androidBoardName = value
               }
          }
          public func setAndroidBoardName(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.androidBoardName = value
            return self
          }
          public func clearAndroidBoardName() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasAndroidBoardName = false
               builderResult.androidBoardName = ""
               return self
          }
          public var hasAndroidBootloader:Bool {
               get {
                    return builderResult.hasAndroidBootloader
               }
          }
          public var androidBootloader:String {
               get {
                    return builderResult.androidBootloader
               }
               set (value) {
                   builderResult.hasAndroidBootloader = true
                   builderResult.androidBootloader = value
               }
          }
          public func setAndroidBootloader(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.androidBootloader = value
            return self
          }
          public func clearAndroidBootloader() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasAndroidBootloader = false
               builderResult.androidBootloader = ""
               return self
          }
          public var hasDeviceBrand:Bool {
               get {
                    return builderResult.hasDeviceBrand
               }
          }
          public var deviceBrand:String {
               get {
                    return builderResult.deviceBrand
               }
               set (value) {
                   builderResult.hasDeviceBrand = true
                   builderResult.deviceBrand = value
               }
          }
          public func setDeviceBrand(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.deviceBrand = value
            return self
          }
          public func clearDeviceBrand() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasDeviceBrand = false
               builderResult.deviceBrand = ""
               return self
          }
          public var hasDeviceModel:Bool {
               get {
                    return builderResult.hasDeviceModel
               }
          }
          public var deviceModel:String {
               get {
                    return builderResult.deviceModel
               }
               set (value) {
                   builderResult.hasDeviceModel = true
                   builderResult.deviceModel = value
               }
          }
          public func setDeviceModel(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.deviceModel = value
            return self
          }
          public func clearDeviceModel() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasDeviceModel = false
               builderResult.deviceModel = ""
               return self
          }
          public var hasDeviceModelIdentifier:Bool {
               get {
                    return builderResult.hasDeviceModelIdentifier
               }
          }
          public var deviceModelIdentifier:String {
               get {
                    return builderResult.deviceModelIdentifier
               }
               set (value) {
                   builderResult.hasDeviceModelIdentifier = true
                   builderResult.deviceModelIdentifier = value
               }
          }
          public func setDeviceModelIdentifier(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.deviceModelIdentifier = value
            return self
          }
          public func clearDeviceModelIdentifier() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasDeviceModelIdentifier = false
               builderResult.deviceModelIdentifier = ""
               return self
          }
          public var hasDeviceModelBoot:Bool {
               get {
                    return builderResult.hasDeviceModelBoot
               }
          }
          public var deviceModelBoot:String {
               get {
                    return builderResult.deviceModelBoot
               }
               set (value) {
                   builderResult.hasDeviceModelBoot = true
                   builderResult.deviceModelBoot = value
               }
          }
          public func setDeviceModelBoot(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.deviceModelBoot = value
            return self
          }
          public func clearDeviceModelBoot() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasDeviceModelBoot = false
               builderResult.deviceModelBoot = ""
               return self
          }
          public var hasHardwareManufacturer:Bool {
               get {
                    return builderResult.hasHardwareManufacturer
               }
          }
          public var hardwareManufacturer:String {
               get {
                    return builderResult.hardwareManufacturer
               }
               set (value) {
                   builderResult.hasHardwareManufacturer = true
                   builderResult.hardwareManufacturer = value
               }
          }
          public func setHardwareManufacturer(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.hardwareManufacturer = value
            return self
          }
          public func clearHardwareManufacturer() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasHardwareManufacturer = false
               builderResult.hardwareManufacturer = ""
               return self
          }
          public var hasHardwareModel:Bool {
               get {
                    return builderResult.hasHardwareModel
               }
          }
          public var hardwareModel:String {
               get {
                    return builderResult.hardwareModel
               }
               set (value) {
                   builderResult.hasHardwareModel = true
                   builderResult.hardwareModel = value
               }
          }
          public func setHardwareModel(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.hardwareModel = value
            return self
          }
          public func clearHardwareModel() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasHardwareModel = false
               builderResult.hardwareModel = ""
               return self
          }
          public var hasFirmwareBrand:Bool {
               get {
                    return builderResult.hasFirmwareBrand
               }
          }
          public var firmwareBrand:String {
               get {
                    return builderResult.firmwareBrand
               }
               set (value) {
                   builderResult.hasFirmwareBrand = true
                   builderResult.firmwareBrand = value
               }
          }
          public func setFirmwareBrand(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.firmwareBrand = value
            return self
          }
          public func clearFirmwareBrand() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasFirmwareBrand = false
               builderResult.firmwareBrand = ""
               return self
          }
          public var hasFirmwareTags:Bool {
               get {
                    return builderResult.hasFirmwareTags
               }
          }
          public var firmwareTags:String {
               get {
                    return builderResult.firmwareTags
               }
               set (value) {
                   builderResult.hasFirmwareTags = true
                   builderResult.firmwareTags = value
               }
          }
          public func setFirmwareTags(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.firmwareTags = value
            return self
          }
          public func clearFirmwareTags() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasFirmwareTags = false
               builderResult.firmwareTags = ""
               return self
          }
          public var hasFirmwareType:Bool {
               get {
                    return builderResult.hasFirmwareType
               }
          }
          public var firmwareType:String {
               get {
                    return builderResult.firmwareType
               }
               set (value) {
                   builderResult.hasFirmwareType = true
                   builderResult.firmwareType = value
               }
          }
          public func setFirmwareType(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.firmwareType = value
            return self
          }
          public func clearFirmwareType() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasFirmwareType = false
               builderResult.firmwareType = ""
               return self
          }
          public var hasFirmwareFingerprint:Bool {
               get {
                    return builderResult.hasFirmwareFingerprint
               }
          }
          public var firmwareFingerprint:String {
               get {
                    return builderResult.firmwareFingerprint
               }
               set (value) {
                   builderResult.hasFirmwareFingerprint = true
                   builderResult.firmwareFingerprint = value
               }
          }
          public func setFirmwareFingerprint(value:String) -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            self.firmwareFingerprint = value
            return self
          }
          public func clearFirmwareFingerprint() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder{
               builderResult.hasFirmwareFingerprint = false
               builderResult.firmwareFingerprint = ""
               return self
          }
          override public var internalGetResult:GeneratedMessage {
               get {
                  return builderResult
               }
          }
          override public func clear() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            builderResult = Pogoprotos.Networking.Envelopes.Signature.DeviceInfo()
            return self
          }
          override public func clone() throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.builderWithPrototype(builderResult)
          }
          override public func build() throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo {
               try checkInitialized()
               return buildPartial()
          }
          public func buildPartial() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo {
            let returnMe:Pogoprotos.Networking.Envelopes.Signature.DeviceInfo = builderResult
            return returnMe
          }
          public func mergeFrom(other:Pogoprotos.Networking.Envelopes.Signature.DeviceInfo) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            if other == Pogoprotos.Networking.Envelopes.Signature.DeviceInfo() {
             return self
            }
            if other.hasDeviceId {
                 deviceId = other.deviceId
            }
            if other.hasAndroidBoardName {
                 androidBoardName = other.androidBoardName
            }
            if other.hasAndroidBootloader {
                 androidBootloader = other.androidBootloader
            }
            if other.hasDeviceBrand {
                 deviceBrand = other.deviceBrand
            }
            if other.hasDeviceModel {
                 deviceModel = other.deviceModel
            }
            if other.hasDeviceModelIdentifier {
                 deviceModelIdentifier = other.deviceModelIdentifier
            }
            if other.hasDeviceModelBoot {
                 deviceModelBoot = other.deviceModelBoot
            }
            if other.hasHardwareManufacturer {
                 hardwareManufacturer = other.hardwareManufacturer
            }
            if other.hasHardwareModel {
                 hardwareModel = other.hardwareModel
            }
            if other.hasFirmwareBrand {
                 firmwareBrand = other.firmwareBrand
            }
            if other.hasFirmwareTags {
                 firmwareTags = other.firmwareTags
            }
            if other.hasFirmwareType {
                 firmwareType = other.firmwareType
            }
            if other.hasFirmwareFingerprint {
                 firmwareFingerprint = other.firmwareFingerprint
            }
            try mergeUnknownFields(other.unknownFields)
            return self
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
               return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
            while (true) {
              let protobufTag = try input.readTag()
              switch protobufTag {
              case 0: 
                self.unknownFields = try unknownFieldsBuilder.build()
                return self

              case 10:
                deviceId = try input.readString()

              case 18:
                androidBoardName = try input.readString()

              case 26:
                androidBootloader = try input.readString()

              case 34:
                deviceBrand = try input.readString()

              case 42:
                deviceModel = try input.readString()

              case 50:
                deviceModelIdentifier = try input.readString()

              case 58:
                deviceModelBoot = try input.readString()

              case 66:
                hardwareManufacturer = try input.readString()

              case 74:
                hardwareModel = try input.readString()

              case 82:
                firmwareBrand = try input.readString()

              case 98:
                firmwareTags = try input.readString()

              case 106:
                firmwareType = try input.readString()

              case 114:
                firmwareFingerprint = try input.readString()

              default:
                if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                   unknownFields = try unknownFieldsBuilder.build()
                   return self
                }
              }
            }
          }
          override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder()
            if let jsonValueDeviceId = jsonMap["deviceId"] as? String {
              resultDecodedBuilder.deviceId = jsonValueDeviceId
            }
            if let jsonValueAndroidBoardName = jsonMap["androidBoardName"] as? String {
              resultDecodedBuilder.androidBoardName = jsonValueAndroidBoardName
            }
            if let jsonValueAndroidBootloader = jsonMap["androidBootloader"] as? String {
              resultDecodedBuilder.androidBootloader = jsonValueAndroidBootloader
            }
            if let jsonValueDeviceBrand = jsonMap["deviceBrand"] as? String {
              resultDecodedBuilder.deviceBrand = jsonValueDeviceBrand
            }
            if let jsonValueDeviceModel = jsonMap["deviceModel"] as? String {
              resultDecodedBuilder.deviceModel = jsonValueDeviceModel
            }
            if let jsonValueDeviceModelIdentifier = jsonMap["deviceModelIdentifier"] as? String {
              resultDecodedBuilder.deviceModelIdentifier = jsonValueDeviceModelIdentifier
            }
            if let jsonValueDeviceModelBoot = jsonMap["deviceModelBoot"] as? String {
              resultDecodedBuilder.deviceModelBoot = jsonValueDeviceModelBoot
            }
            if let jsonValueHardwareManufacturer = jsonMap["hardwareManufacturer"] as? String {
              resultDecodedBuilder.hardwareManufacturer = jsonValueHardwareManufacturer
            }
            if let jsonValueHardwareModel = jsonMap["hardwareModel"] as? String {
              resultDecodedBuilder.hardwareModel = jsonValueHardwareModel
            }
            if let jsonValueFirmwareBrand = jsonMap["firmwareBrand"] as? String {
              resultDecodedBuilder.firmwareBrand = jsonValueFirmwareBrand
            }
            if let jsonValueFirmwareTags = jsonMap["firmwareTags"] as? String {
              resultDecodedBuilder.firmwareTags = jsonValueFirmwareTags
            }
            if let jsonValueFirmwareType = jsonMap["firmwareType"] as? String {
              resultDecodedBuilder.firmwareType = jsonValueFirmwareType
            }
            if let jsonValueFirmwareFingerprint = jsonMap["firmwareFingerprint"] as? String {
              resultDecodedBuilder.firmwareFingerprint = jsonValueFirmwareFingerprint
            }
            return resultDecodedBuilder
          }
          override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
            let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
            guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
              throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
            }
            return try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder.decodeToBuilder(jsDataCast)
          }
        }

      }

    //Nested type declaration end



    //Nested type declaration start

      // Only used in iOS - Android just sends an empty version
      final public class ActivityStatus : GeneratedMessage, GeneratedMessageProtocol {
        // all of these had 1 as their value
        public private(set) var hasStartTimeMs:Bool = false
        public private(set) var startTimeMs:UInt64 = UInt64(0)

        public private(set) var hasUnknownStatus:Bool = false
        public private(set) var unknownStatus:Bool = false

        public private(set) var hasWalking:Bool = false
        public private(set) var walking:Bool = false

        public private(set) var hasRunning:Bool = false
        public private(set) var running:Bool = false

        public private(set) var hasStationary:Bool = false
        public private(set) var stationary:Bool = false

        public private(set) var hasAutomotive:Bool = false
        public private(set) var automotive:Bool = false

        public private(set) var hasTilting:Bool = false
        public private(set) var tilting:Bool = false

        public private(set) var hasCycling:Bool = false
        public private(set) var cycling:Bool = false

        public private(set) var hasStatus:Bool = false
        public private(set) var status:NSData = NSData()

        required public init() {
             super.init()
        }
        override public func isInitialized() -> Bool {
         return true
        }
        override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
          if hasStartTimeMs {
            try output.writeUInt64(1, value:startTimeMs)
          }
          if hasUnknownStatus {
            try output.writeBool(2, value:unknownStatus)
          }
          if hasWalking {
            try output.writeBool(3, value:walking)
          }
          if hasRunning {
            try output.writeBool(4, value:running)
          }
          if hasStationary {
            try output.writeBool(5, value:stationary)
          }
          if hasAutomotive {
            try output.writeBool(6, value:automotive)
          }
          if hasTilting {
            try output.writeBool(7, value:tilting)
          }
          if hasCycling {
            try output.writeBool(8, value:cycling)
          }
          if hasStatus {
            try output.writeData(9, value:status)
          }
          try unknownFields.writeToCodedOutputStream(output)
        }
        override public func serializedSize() -> Int32 {
          var serialize_size:Int32 = memoizedSerializedSize
          if serialize_size != -1 {
           return serialize_size
          }

          serialize_size = 0
          if hasStartTimeMs {
            serialize_size += startTimeMs.computeUInt64Size(1)
          }
          if hasUnknownStatus {
            serialize_size += unknownStatus.computeBoolSize(2)
          }
          if hasWalking {
            serialize_size += walking.computeBoolSize(3)
          }
          if hasRunning {
            serialize_size += running.computeBoolSize(4)
          }
          if hasStationary {
            serialize_size += stationary.computeBoolSize(5)
          }
          if hasAutomotive {
            serialize_size += automotive.computeBoolSize(6)
          }
          if hasTilting {
            serialize_size += tilting.computeBoolSize(7)
          }
          if hasCycling {
            serialize_size += cycling.computeBoolSize(8)
          }
          if hasStatus {
            serialize_size += status.computeDataSize(9)
          }
          serialize_size += unknownFields.serializedSize()
          memoizedSerializedSize = serialize_size
          return serialize_size
        }
        public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.Signature.ActivityStatus> {
          var mergedArray = Array<Pogoprotos.Networking.Envelopes.Signature.ActivityStatus>()
          while let value = try parseFromDelimitedFromInputStream(input) {
            mergedArray += [value]
          }
          return mergedArray
        }
        public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus? {
          return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder().mergeDelimitedFromInputStream(input)?.build()
        }
        public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus {
          return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
        }
        public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus {
          return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus {
          return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder().mergeFromInputStream(input).build()
        }
        public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus {
          return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus {
          return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder().mergeFromCodedInputStream(input).build()
        }
        public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus {
          return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
        }
        public class func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
          return Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder
        }
        public func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
          return classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder
        }
        override public class func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder()
        }
        override public func classBuilder() -> MessageBuilder {
          return Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder()
        }
        public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
          return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.builderWithPrototype(self)
        }
        public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.Signature.ActivityStatus) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
          return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder().mergeFrom(prototype)
        }
        override public func encode() throws -> Dictionary<String,AnyObject> {
          guard isInitialized() else {
            throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
          }

          var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
          if hasStartTimeMs {
            jsonMap["startTimeMs"] = "\(startTimeMs)"
          }
          if hasUnknownStatus {
            jsonMap["unknownStatus"] = unknownStatus
          }
          if hasWalking {
            jsonMap["walking"] = walking
          }
          if hasRunning {
            jsonMap["running"] = running
          }
          if hasStationary {
            jsonMap["stationary"] = stationary
          }
          if hasAutomotive {
            jsonMap["automotive"] = automotive
          }
          if hasTilting {
            jsonMap["tilting"] = tilting
          }
          if hasCycling {
            jsonMap["cycling"] = cycling
          }
          if hasStatus {
            jsonMap["status"] = status.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
          }
          return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus {
          return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder.decodeToBuilder(jsonMap).build()
        }
        override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus {
          return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder.fromJSONToBuilder(data).build()
        }
        override public func getDescription(indent:String) throws -> String {
          var output = ""
          if hasStartTimeMs {
            output += "\(indent) startTimeMs: \(startTimeMs) \n"
          }
          if hasUnknownStatus {
            output += "\(indent) unknownStatus: \(unknownStatus) \n"
          }
          if hasWalking {
            output += "\(indent) walking: \(walking) \n"
          }
          if hasRunning {
            output += "\(indent) running: \(running) \n"
          }
          if hasStationary {
            output += "\(indent) stationary: \(stationary) \n"
          }
          if hasAutomotive {
            output += "\(indent) automotive: \(automotive) \n"
          }
          if hasTilting {
            output += "\(indent) tilting: \(tilting) \n"
          }
          if hasCycling {
            output += "\(indent) cycling: \(cycling) \n"
          }
          if hasStatus {
            output += "\(indent) status: \(status) \n"
          }
          output += unknownFields.getDescription(indent)
          return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasStartTimeMs {
                   hashCode = (hashCode &* 31) &+ startTimeMs.hashValue
                }
                if hasUnknownStatus {
                   hashCode = (hashCode &* 31) &+ unknownStatus.hashValue
                }
                if hasWalking {
                   hashCode = (hashCode &* 31) &+ walking.hashValue
                }
                if hasRunning {
                   hashCode = (hashCode &* 31) &+ running.hashValue
                }
                if hasStationary {
                   hashCode = (hashCode &* 31) &+ stationary.hashValue
                }
                if hasAutomotive {
                   hashCode = (hashCode &* 31) &+ automotive.hashValue
                }
                if hasTilting {
                   hashCode = (hashCode &* 31) &+ tilting.hashValue
                }
                if hasCycling {
                   hashCode = (hashCode &* 31) &+ cycling.hashValue
                }
                if hasStatus {
                   hashCode = (hashCode &* 31) &+ status.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

        override public class func className() -> String {
            return "Pogoprotos.Networking.Envelopes.Signature.ActivityStatus"
        }
        override public func className() -> String {
            return "Pogoprotos.Networking.Envelopes.Signature.ActivityStatus"
        }
        override public func classMetaType() -> GeneratedMessage.Type {
            return Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.self
        }
        //Meta information declaration end

        final public class Builder : GeneratedMessageBuilder {
          private var builderResult:Pogoprotos.Networking.Envelopes.Signature.ActivityStatus = Pogoprotos.Networking.Envelopes.Signature.ActivityStatus()
          public func getMessage() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus {
              return builderResult
          }

          required override public init () {
             super.init()
          }
          public var hasStartTimeMs:Bool {
               get {
                    return builderResult.hasStartTimeMs
               }
          }
          public var startTimeMs:UInt64 {
               get {
                    return builderResult.startTimeMs
               }
               set (value) {
                   builderResult.hasStartTimeMs = true
                   builderResult.startTimeMs = value
               }
          }
          public func setStartTimeMs(value:UInt64) -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            self.startTimeMs = value
            return self
          }
          public func clearStartTimeMs() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder{
               builderResult.hasStartTimeMs = false
               builderResult.startTimeMs = UInt64(0)
               return self
          }
          public var hasUnknownStatus:Bool {
               get {
                    return builderResult.hasUnknownStatus
               }
          }
          public var unknownStatus:Bool {
               get {
                    return builderResult.unknownStatus
               }
               set (value) {
                   builderResult.hasUnknownStatus = true
                   builderResult.unknownStatus = value
               }
          }
          public func setUnknownStatus(value:Bool) -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            self.unknownStatus = value
            return self
          }
          public func clearUnknownStatus() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder{
               builderResult.hasUnknownStatus = false
               builderResult.unknownStatus = false
               return self
          }
          public var hasWalking:Bool {
               get {
                    return builderResult.hasWalking
               }
          }
          public var walking:Bool {
               get {
                    return builderResult.walking
               }
               set (value) {
                   builderResult.hasWalking = true
                   builderResult.walking = value
               }
          }
          public func setWalking(value:Bool) -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            self.walking = value
            return self
          }
          public func clearWalking() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder{
               builderResult.hasWalking = false
               builderResult.walking = false
               return self
          }
          public var hasRunning:Bool {
               get {
                    return builderResult.hasRunning
               }
          }
          public var running:Bool {
               get {
                    return builderResult.running
               }
               set (value) {
                   builderResult.hasRunning = true
                   builderResult.running = value
               }
          }
          public func setRunning(value:Bool) -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            self.running = value
            return self
          }
          public func clearRunning() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder{
               builderResult.hasRunning = false
               builderResult.running = false
               return self
          }
          public var hasStationary:Bool {
               get {
                    return builderResult.hasStationary
               }
          }
          public var stationary:Bool {
               get {
                    return builderResult.stationary
               }
               set (value) {
                   builderResult.hasStationary = true
                   builderResult.stationary = value
               }
          }
          public func setStationary(value:Bool) -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            self.stationary = value
            return self
          }
          public func clearStationary() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder{
               builderResult.hasStationary = false
               builderResult.stationary = false
               return self
          }
          public var hasAutomotive:Bool {
               get {
                    return builderResult.hasAutomotive
               }
          }
          public var automotive:Bool {
               get {
                    return builderResult.automotive
               }
               set (value) {
                   builderResult.hasAutomotive = true
                   builderResult.automotive = value
               }
          }
          public func setAutomotive(value:Bool) -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            self.automotive = value
            return self
          }
          public func clearAutomotive() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder{
               builderResult.hasAutomotive = false
               builderResult.automotive = false
               return self
          }
          public var hasTilting:Bool {
               get {
                    return builderResult.hasTilting
               }
          }
          public var tilting:Bool {
               get {
                    return builderResult.tilting
               }
               set (value) {
                   builderResult.hasTilting = true
                   builderResult.tilting = value
               }
          }
          public func setTilting(value:Bool) -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            self.tilting = value
            return self
          }
          public func clearTilting() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder{
               builderResult.hasTilting = false
               builderResult.tilting = false
               return self
          }
          public var hasCycling:Bool {
               get {
                    return builderResult.hasCycling
               }
          }
          public var cycling:Bool {
               get {
                    return builderResult.cycling
               }
               set (value) {
                   builderResult.hasCycling = true
                   builderResult.cycling = value
               }
          }
          public func setCycling(value:Bool) -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            self.cycling = value
            return self
          }
          public func clearCycling() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder{
               builderResult.hasCycling = false
               builderResult.cycling = false
               return self
          }
          public var hasStatus:Bool {
               get {
                    return builderResult.hasStatus
               }
          }
          public var status:NSData {
               get {
                    return builderResult.status
               }
               set (value) {
                   builderResult.hasStatus = true
                   builderResult.status = value
               }
          }
          public func setStatus(value:NSData) -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            self.status = value
            return self
          }
          public func clearStatus() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder{
               builderResult.hasStatus = false
               builderResult.status = NSData()
               return self
          }
          override public var internalGetResult:GeneratedMessage {
               get {
                  return builderResult
               }
          }
          override public func clear() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            builderResult = Pogoprotos.Networking.Envelopes.Signature.ActivityStatus()
            return self
          }
          override public func clone() throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.builderWithPrototype(builderResult)
          }
          override public func build() throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus {
               try checkInitialized()
               return buildPartial()
          }
          public func buildPartial() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus {
            let returnMe:Pogoprotos.Networking.Envelopes.Signature.ActivityStatus = builderResult
            return returnMe
          }
          public func mergeFrom(other:Pogoprotos.Networking.Envelopes.Signature.ActivityStatus) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            if other == Pogoprotos.Networking.Envelopes.Signature.ActivityStatus() {
             return self
            }
            if other.hasStartTimeMs {
                 startTimeMs = other.startTimeMs
            }
            if other.hasUnknownStatus {
                 unknownStatus = other.unknownStatus
            }
            if other.hasWalking {
                 walking = other.walking
            }
            if other.hasRunning {
                 running = other.running
            }
            if other.hasStationary {
                 stationary = other.stationary
            }
            if other.hasAutomotive {
                 automotive = other.automotive
            }
            if other.hasTilting {
                 tilting = other.tilting
            }
            if other.hasCycling {
                 cycling = other.cycling
            }
            if other.hasStatus {
                 status = other.status
            }
            try mergeUnknownFields(other.unknownFields)
            return self
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
               return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
          }
          override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
            while (true) {
              let protobufTag = try input.readTag()
              switch protobufTag {
              case 0: 
                self.unknownFields = try unknownFieldsBuilder.build()
                return self

              case 8:
                startTimeMs = try input.readUInt64()

              case 16:
                unknownStatus = try input.readBool()

              case 24:
                walking = try input.readBool()

              case 32:
                running = try input.readBool()

              case 40:
                stationary = try input.readBool()

              case 48:
                automotive = try input.readBool()

              case 56:
                tilting = try input.readBool()

              case 64:
                cycling = try input.readBool()

              case 74:
                status = try input.readData()

              default:
                if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                   unknownFields = try unknownFieldsBuilder.build()
                   return self
                }
              }
            }
          }
          override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder()
            if let jsonValueStartTimeMs = jsonMap["startTimeMs"] as? String {
              resultDecodedBuilder.startTimeMs = UInt64(jsonValueStartTimeMs)!
            }
            if let jsonValueUnknownStatus = jsonMap["unknownStatus"] as? Bool {
              resultDecodedBuilder.unknownStatus = jsonValueUnknownStatus
            }
            if let jsonValueWalking = jsonMap["walking"] as? Bool {
              resultDecodedBuilder.walking = jsonValueWalking
            }
            if let jsonValueRunning = jsonMap["running"] as? Bool {
              resultDecodedBuilder.running = jsonValueRunning
            }
            if let jsonValueStationary = jsonMap["stationary"] as? Bool {
              resultDecodedBuilder.stationary = jsonValueStationary
            }
            if let jsonValueAutomotive = jsonMap["automotive"] as? Bool {
              resultDecodedBuilder.automotive = jsonValueAutomotive
            }
            if let jsonValueTilting = jsonMap["tilting"] as? Bool {
              resultDecodedBuilder.tilting = jsonValueTilting
            }
            if let jsonValueCycling = jsonMap["cycling"] as? Bool {
              resultDecodedBuilder.cycling = jsonValueCycling
            }
            if let jsonValueStatus = jsonMap["status"] as? String {
              resultDecodedBuilder.status = NSData(base64EncodedString:jsonValueStatus, options: NSDataBase64DecodingOptions(rawValue:0))!
            }
            return resultDecodedBuilder
          }
          override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
            let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
            guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
              throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
            }
            return try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder.decodeToBuilder(jsDataCast)
          }
        }

      }

    //Nested type declaration end

    // in ms
    public private(set) var hasTimestampSinceStart:Bool = false
    public private(set) var timestampSinceStart:UInt64 = UInt64(0)

    public private(set) var locationFix:Array<Pogoprotos.Networking.Envelopes.Signature.LocationFix>  = Array<Pogoprotos.Networking.Envelopes.Signature.LocationFix>()
    public private(set) var hasGpsInfo:Bool = false
    public private(set) var gpsInfo:Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo!
    public private(set) var hasSensorInfo:Bool = false
    public private(set) var sensorInfo:Pogoprotos.Networking.Envelopes.Signature.SensorInfo!
    public private(set) var hasDeviceInfo:Bool = false
    public private(set) var deviceInfo:Pogoprotos.Networking.Envelopes.Signature.DeviceInfo!
    public private(set) var hasActivityStatus:Bool = false
    public private(set) var activityStatus:Pogoprotos.Networking.Envelopes.Signature.ActivityStatus!
    // Location1 hashed signed based on the auth_token or auth_info - xxHash32
    public private(set) var hasLocationHash1:Bool = false
    public private(set) var locationHash1:UInt32 = UInt32(0)

    // Location2 hashed (unsigned) - xxHash32
    public private(set) var hasLocationHash2:Bool = false
    public private(set) var locationHash2:UInt32 = UInt32(0)

    // 16 bytes, unique per session
    public private(set) var hasSessionHash:Bool = false
    public private(set) var sessionHash:NSData = NSData()

    // epoch timestamp in ms
    public private(set) var hasTimestamp:Bool = false
    public private(set) var timestamp:UInt64 = UInt64(0)

    // hashes of each request message in a hashArray signed based on the auth_token or auth_info - xxhash64
    public private(set) var requestHash:Array<UInt64> = Array<UInt64>()
    private var requestHashMemoizedSerializedSize:Int32 = -1
    // for 0.33 its static -8537042734809897855 or 0x898654dd2753a481, generated via xxHash64("\"b8fa9757195897aae92c53dbcf8a60fb3d86d745\"".ToByteArray(), 0x88533787)
    public private(set) var hasUnknown25:Bool = false
    public private(set) var unknown25:Int64 = Int64(0)

    required public init() {
         super.init()
    }
    override public func isInitialized() -> Bool {
     return true
    }
    override public func writeToCodedOutputStream(output:CodedOutputStream) throws {
      if hasTimestampSinceStart {
        try output.writeUInt64(2, value:timestampSinceStart)
      }
      for oneElementLocationFix in locationFix {
          try output.writeMessage(4, value:oneElementLocationFix)
      }
      if hasGpsInfo {
        try output.writeMessage(5, value:gpsInfo)
      }
      if hasSensorInfo {
        try output.writeMessage(7, value:sensorInfo)
      }
      if hasDeviceInfo {
        try output.writeMessage(8, value:deviceInfo)
      }
      if hasActivityStatus {
        try output.writeMessage(9, value:activityStatus)
      }
      if hasLocationHash1 {
        try output.writeUInt32(10, value:locationHash1)
      }
      if hasLocationHash2 {
        try output.writeUInt32(20, value:locationHash2)
      }
      if hasSessionHash {
        try output.writeData(22, value:sessionHash)
      }
      if hasTimestamp {
        try output.writeUInt64(23, value:timestamp)
      }
      if !requestHash.isEmpty {
        try output.writeRawVarint32(194)
        try output.writeRawVarint32(requestHashMemoizedSerializedSize)
        for oneValuerequestHash in requestHash {
          try output.writeUInt64NoTag(oneValuerequestHash)
        }
      }
      if hasUnknown25 {
        try output.writeInt64(25, value:unknown25)
      }
      try unknownFields.writeToCodedOutputStream(output)
    }
    override public func serializedSize() -> Int32 {
      var serialize_size:Int32 = memoizedSerializedSize
      if serialize_size != -1 {
       return serialize_size
      }

      serialize_size = 0
      if hasTimestampSinceStart {
        serialize_size += timestampSinceStart.computeUInt64Size(2)
      }
      for oneElementLocationFix in locationFix {
          serialize_size += oneElementLocationFix.computeMessageSize(4)
      }
      if hasGpsInfo {
          if let varSizegpsInfo = gpsInfo?.computeMessageSize(5) {
              serialize_size += varSizegpsInfo
          }
      }
      if hasSensorInfo {
          if let varSizesensorInfo = sensorInfo?.computeMessageSize(7) {
              serialize_size += varSizesensorInfo
          }
      }
      if hasDeviceInfo {
          if let varSizedeviceInfo = deviceInfo?.computeMessageSize(8) {
              serialize_size += varSizedeviceInfo
          }
      }
      if hasActivityStatus {
          if let varSizeactivityStatus = activityStatus?.computeMessageSize(9) {
              serialize_size += varSizeactivityStatus
          }
      }
      if hasLocationHash1 {
        serialize_size += locationHash1.computeUInt32Size(10)
      }
      if hasLocationHash2 {
        serialize_size += locationHash2.computeUInt32Size(20)
      }
      if hasSessionHash {
        serialize_size += sessionHash.computeDataSize(22)
      }
      if hasTimestamp {
        serialize_size += timestamp.computeUInt64Size(23)
      }
      var dataSizeRequestHash:Int32 = 0
      for oneValuerequestHash in requestHash {
          dataSizeRequestHash += oneValuerequestHash.computeUInt64SizeNoTag()
      }
      serialize_size += dataSizeRequestHash
      if !requestHash.isEmpty {
        serialize_size += 2
        serialize_size += dataSizeRequestHash.computeInt32SizeNoTag()
      }
      requestHashMemoizedSerializedSize = dataSizeRequestHash
      if hasUnknown25 {
        serialize_size += unknown25.computeInt64Size(25)
      }
      serialize_size += unknownFields.serializedSize()
      memoizedSerializedSize = serialize_size
      return serialize_size
    }
    public class func parseArrayDelimitedFromInputStream(input:NSInputStream) throws -> Array<Pogoprotos.Networking.Envelopes.Signature> {
      var mergedArray = Array<Pogoprotos.Networking.Envelopes.Signature>()
      while let value = try parseFromDelimitedFromInputStream(input) {
        mergedArray += [value]
      }
      return mergedArray
    }
    public class func parseFromDelimitedFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature? {
      return try Pogoprotos.Networking.Envelopes.Signature.Builder().mergeDelimitedFromInputStream(input)?.build()
    }
    public class func parseFromData(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature {
      return try Pogoprotos.Networking.Envelopes.Signature.Builder().mergeFromData(data, extensionRegistry:Pogoprotos.Networking.Envelopes.PogoprotosNetworkingEnvelopesRoot.sharedInstance.extensionRegistry).build()
    }
    public class func parseFromData(data:NSData, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature {
      return try Pogoprotos.Networking.Envelopes.Signature.Builder().mergeFromData(data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFromInputStream(input:NSInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature {
      return try Pogoprotos.Networking.Envelopes.Signature.Builder().mergeFromInputStream(input).build()
    }
    public class func parseFromInputStream(input:NSInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature {
      return try Pogoprotos.Networking.Envelopes.Signature.Builder().mergeFromInputStream(input, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature {
      return try Pogoprotos.Networking.Envelopes.Signature.Builder().mergeFromCodedInputStream(input).build()
    }
    public class func parseFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature {
      return try Pogoprotos.Networking.Envelopes.Signature.Builder().mergeFromCodedInputStream(input, extensionRegistry:extensionRegistry).build()
    }
    public class func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.Builder {
      return Pogoprotos.Networking.Envelopes.Signature.classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.Builder
    }
    public func getBuilder() -> Pogoprotos.Networking.Envelopes.Signature.Builder {
      return classBuilder() as! Pogoprotos.Networking.Envelopes.Signature.Builder
    }
    override public class func classBuilder() -> MessageBuilder {
      return Pogoprotos.Networking.Envelopes.Signature.Builder()
    }
    override public func classBuilder() -> MessageBuilder {
      return Pogoprotos.Networking.Envelopes.Signature.Builder()
    }
    public func toBuilder() throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
      return try Pogoprotos.Networking.Envelopes.Signature.builderWithPrototype(self)
    }
    public class func builderWithPrototype(prototype:Pogoprotos.Networking.Envelopes.Signature) throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
      return try Pogoprotos.Networking.Envelopes.Signature.Builder().mergeFrom(prototype)
    }
    override public func encode() throws -> Dictionary<String,AnyObject> {
      guard isInitialized() else {
        throw ProtocolBuffersError.InvalidProtocolBuffer("Uninitialized Message")
      }

      var jsonMap:Dictionary<String,AnyObject> = Dictionary<String,AnyObject>()
      if hasTimestampSinceStart {
        jsonMap["timestampSinceStart"] = "\(timestampSinceStart)"
      }
      if !locationFix.isEmpty {
        var jsonArrayLocationFix:Array<Dictionary<String,AnyObject>> = []
          for oneValueLocationFix in locationFix {
            let ecodedMessageLocationFix = try oneValueLocationFix.encode()
            jsonArrayLocationFix += [ecodedMessageLocationFix]
          }
        jsonMap["locationFix"] = jsonArrayLocationFix
      }
      if hasGpsInfo {
        jsonMap["gpsInfo"] = try gpsInfo.encode()
      }
      if hasSensorInfo {
        jsonMap["sensorInfo"] = try sensorInfo.encode()
      }
      if hasDeviceInfo {
        jsonMap["deviceInfo"] = try deviceInfo.encode()
      }
      if hasActivityStatus {
        jsonMap["activityStatus"] = try activityStatus.encode()
      }
      if hasLocationHash1 {
        jsonMap["locationHash1"] = NSNumber(unsignedInt:locationHash1)
      }
      if hasLocationHash2 {
        jsonMap["locationHash2"] = NSNumber(unsignedInt:locationHash2)
      }
      if hasSessionHash {
        jsonMap["sessionHash"] = sessionHash.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
      }
      if hasTimestamp {
        jsonMap["timestamp"] = "\(timestamp)"
      }
      if !requestHash.isEmpty {
        var jsonArrayRequestHash:Array<String> = []
          for oneValueRequestHash in requestHash {
            jsonArrayRequestHash += ["\(oneValueRequestHash)"]
          }
        jsonMap["requestHash"] = jsonArrayRequestHash
      }
      if hasUnknown25 {
        jsonMap["unknown25"] = "\(unknown25)"
      }
      return jsonMap
    }
    override class public func decode(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature {
      return try Pogoprotos.Networking.Envelopes.Signature.Builder.decodeToBuilder(jsonMap).build()
    }
    override class public func fromJSON(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature {
      return try Pogoprotos.Networking.Envelopes.Signature.Builder.fromJSONToBuilder(data).build()
    }
    override public func getDescription(indent:String) throws -> String {
      var output = ""
      if hasTimestampSinceStart {
        output += "\(indent) timestampSinceStart: \(timestampSinceStart) \n"
      }
      var locationFixElementIndex:Int = 0
      for oneElementLocationFix in locationFix {
          output += "\(indent) locationFix[\(locationFixElementIndex)] {\n"
          output += try oneElementLocationFix.getDescription("\(indent)  ")
          output += "\(indent)}\n"
          locationFixElementIndex += 1
      }
      if hasGpsInfo {
        output += "\(indent) gpsInfo {\n"
        if let outDescGpsInfo = gpsInfo {
          output += try outDescGpsInfo.getDescription("\(indent)  ")
        }
        output += "\(indent) }\n"
      }
      if hasSensorInfo {
        output += "\(indent) sensorInfo {\n"
        if let outDescSensorInfo = sensorInfo {
          output += try outDescSensorInfo.getDescription("\(indent)  ")
        }
        output += "\(indent) }\n"
      }
      if hasDeviceInfo {
        output += "\(indent) deviceInfo {\n"
        if let outDescDeviceInfo = deviceInfo {
          output += try outDescDeviceInfo.getDescription("\(indent)  ")
        }
        output += "\(indent) }\n"
      }
      if hasActivityStatus {
        output += "\(indent) activityStatus {\n"
        if let outDescActivityStatus = activityStatus {
          output += try outDescActivityStatus.getDescription("\(indent)  ")
        }
        output += "\(indent) }\n"
      }
      if hasLocationHash1 {
        output += "\(indent) locationHash1: \(locationHash1) \n"
      }
      if hasLocationHash2 {
        output += "\(indent) locationHash2: \(locationHash2) \n"
      }
      if hasSessionHash {
        output += "\(indent) sessionHash: \(sessionHash) \n"
      }
      if hasTimestamp {
        output += "\(indent) timestamp: \(timestamp) \n"
      }
      var requestHashElementIndex:Int = 0
      for oneValueRequestHash in requestHash  {
          output += "\(indent) requestHash[\(requestHashElementIndex)]: \(oneValueRequestHash)\n"
          requestHashElementIndex += 1
      }
      if hasUnknown25 {
        output += "\(indent) unknown25: \(unknown25) \n"
      }
      output += unknownFields.getDescription(indent)
      return output
    }
    override public var hashValue:Int {
        get {
            var hashCode:Int = 7
            if hasTimestampSinceStart {
               hashCode = (hashCode &* 31) &+ timestampSinceStart.hashValue
            }
            for oneElementLocationFix in locationFix {
                hashCode = (hashCode &* 31) &+ oneElementLocationFix.hashValue
            }
            if hasGpsInfo {
                if let hashValuegpsInfo = gpsInfo?.hashValue {
                    hashCode = (hashCode &* 31) &+ hashValuegpsInfo
                }
            }
            if hasSensorInfo {
                if let hashValuesensorInfo = sensorInfo?.hashValue {
                    hashCode = (hashCode &* 31) &+ hashValuesensorInfo
                }
            }
            if hasDeviceInfo {
                if let hashValuedeviceInfo = deviceInfo?.hashValue {
                    hashCode = (hashCode &* 31) &+ hashValuedeviceInfo
                }
            }
            if hasActivityStatus {
                if let hashValueactivityStatus = activityStatus?.hashValue {
                    hashCode = (hashCode &* 31) &+ hashValueactivityStatus
                }
            }
            if hasLocationHash1 {
               hashCode = (hashCode &* 31) &+ locationHash1.hashValue
            }
            if hasLocationHash2 {
               hashCode = (hashCode &* 31) &+ locationHash2.hashValue
            }
            if hasSessionHash {
               hashCode = (hashCode &* 31) &+ sessionHash.hashValue
            }
            if hasTimestamp {
               hashCode = (hashCode &* 31) &+ timestamp.hashValue
            }
            for oneValueRequestHash in requestHash {
                hashCode = (hashCode &* 31) &+ oneValueRequestHash.hashValue
            }
            if hasUnknown25 {
               hashCode = (hashCode &* 31) &+ unknown25.hashValue
            }
            hashCode = (hashCode &* 31) &+  unknownFields.hashValue
            return hashCode
        }
    }


    //Meta information declaration start

    override public class func className() -> String {
        return "Pogoprotos.Networking.Envelopes.Signature"
    }
    override public func className() -> String {
        return "Pogoprotos.Networking.Envelopes.Signature"
    }
    override public func classMetaType() -> GeneratedMessage.Type {
        return Pogoprotos.Networking.Envelopes.Signature.self
    }
    //Meta information declaration end

    final public class Builder : GeneratedMessageBuilder {
      private var builderResult:Pogoprotos.Networking.Envelopes.Signature = Pogoprotos.Networking.Envelopes.Signature()
      public func getMessage() -> Pogoprotos.Networking.Envelopes.Signature {
          return builderResult
      }

      required override public init () {
         super.init()
      }
      public var hasTimestampSinceStart:Bool {
           get {
                return builderResult.hasTimestampSinceStart
           }
      }
      public var timestampSinceStart:UInt64 {
           get {
                return builderResult.timestampSinceStart
           }
           set (value) {
               builderResult.hasTimestampSinceStart = true
               builderResult.timestampSinceStart = value
           }
      }
      public func setTimestampSinceStart(value:UInt64) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.timestampSinceStart = value
        return self
      }
      public func clearTimestampSinceStart() -> Pogoprotos.Networking.Envelopes.Signature.Builder{
           builderResult.hasTimestampSinceStart = false
           builderResult.timestampSinceStart = UInt64(0)
           return self
      }
      public var locationFix:Array<Pogoprotos.Networking.Envelopes.Signature.LocationFix> {
           get {
               return builderResult.locationFix
           }
           set (value) {
               builderResult.locationFix = value
           }
      }
      public func setLocationFix(value:Array<Pogoprotos.Networking.Envelopes.Signature.LocationFix>) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.locationFix = value
        return self
      }
      public func clearLocationFix() -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        builderResult.locationFix.removeAll(keepCapacity: false)
        return self
      }
      public var hasGpsInfo:Bool {
           get {
               return builderResult.hasGpsInfo
           }
      }
      public var gpsInfo:Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo! {
           get {
               if gpsInfoBuilder_ != nil {
                  builderResult.gpsInfo = gpsInfoBuilder_.getMessage()
               }
               return builderResult.gpsInfo
           }
           set (value) {
               builderResult.hasGpsInfo = true
               builderResult.gpsInfo = value
           }
      }
      private var gpsInfoBuilder_:Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder! {
           didSet {
              builderResult.hasGpsInfo = true
           }
      }
      public func getGpsInfoBuilder() -> Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder {
        if gpsInfoBuilder_ == nil {
           gpsInfoBuilder_ = Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder()
           builderResult.gpsInfo = gpsInfoBuilder_.getMessage()
           if gpsInfo != nil {
              try! gpsInfoBuilder_.mergeFrom(gpsInfo)
           }
        }
        return gpsInfoBuilder_
      }
      public func setGpsInfo(value:Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo!) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.gpsInfo = value
        return self
      }
      public func mergeGpsInfo(value:Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo) throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        if builderResult.hasGpsInfo {
          builderResult.gpsInfo = try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.builderWithPrototype(builderResult.gpsInfo).mergeFrom(value).buildPartial()
        } else {
          builderResult.gpsInfo = value
        }
        builderResult.hasGpsInfo = true
        return self
      }
      public func clearGpsInfo() -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        gpsInfoBuilder_ = nil
        builderResult.hasGpsInfo = false
        builderResult.gpsInfo = nil
        return self
      }
      public var hasSensorInfo:Bool {
           get {
               return builderResult.hasSensorInfo
           }
      }
      public var sensorInfo:Pogoprotos.Networking.Envelopes.Signature.SensorInfo! {
           get {
               if sensorInfoBuilder_ != nil {
                  builderResult.sensorInfo = sensorInfoBuilder_.getMessage()
               }
               return builderResult.sensorInfo
           }
           set (value) {
               builderResult.hasSensorInfo = true
               builderResult.sensorInfo = value
           }
      }
      private var sensorInfoBuilder_:Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder! {
           didSet {
              builderResult.hasSensorInfo = true
           }
      }
      public func getSensorInfoBuilder() -> Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder {
        if sensorInfoBuilder_ == nil {
           sensorInfoBuilder_ = Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder()
           builderResult.sensorInfo = sensorInfoBuilder_.getMessage()
           if sensorInfo != nil {
              try! sensorInfoBuilder_.mergeFrom(sensorInfo)
           }
        }
        return sensorInfoBuilder_
      }
      public func setSensorInfo(value:Pogoprotos.Networking.Envelopes.Signature.SensorInfo!) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.sensorInfo = value
        return self
      }
      public func mergeSensorInfo(value:Pogoprotos.Networking.Envelopes.Signature.SensorInfo) throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        if builderResult.hasSensorInfo {
          builderResult.sensorInfo = try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.builderWithPrototype(builderResult.sensorInfo).mergeFrom(value).buildPartial()
        } else {
          builderResult.sensorInfo = value
        }
        builderResult.hasSensorInfo = true
        return self
      }
      public func clearSensorInfo() -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        sensorInfoBuilder_ = nil
        builderResult.hasSensorInfo = false
        builderResult.sensorInfo = nil
        return self
      }
      public var hasDeviceInfo:Bool {
           get {
               return builderResult.hasDeviceInfo
           }
      }
      public var deviceInfo:Pogoprotos.Networking.Envelopes.Signature.DeviceInfo! {
           get {
               if deviceInfoBuilder_ != nil {
                  builderResult.deviceInfo = deviceInfoBuilder_.getMessage()
               }
               return builderResult.deviceInfo
           }
           set (value) {
               builderResult.hasDeviceInfo = true
               builderResult.deviceInfo = value
           }
      }
      private var deviceInfoBuilder_:Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder! {
           didSet {
              builderResult.hasDeviceInfo = true
           }
      }
      public func getDeviceInfoBuilder() -> Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder {
        if deviceInfoBuilder_ == nil {
           deviceInfoBuilder_ = Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder()
           builderResult.deviceInfo = deviceInfoBuilder_.getMessage()
           if deviceInfo != nil {
              try! deviceInfoBuilder_.mergeFrom(deviceInfo)
           }
        }
        return deviceInfoBuilder_
      }
      public func setDeviceInfo(value:Pogoprotos.Networking.Envelopes.Signature.DeviceInfo!) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.deviceInfo = value
        return self
      }
      public func mergeDeviceInfo(value:Pogoprotos.Networking.Envelopes.Signature.DeviceInfo) throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        if builderResult.hasDeviceInfo {
          builderResult.deviceInfo = try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.builderWithPrototype(builderResult.deviceInfo).mergeFrom(value).buildPartial()
        } else {
          builderResult.deviceInfo = value
        }
        builderResult.hasDeviceInfo = true
        return self
      }
      public func clearDeviceInfo() -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        deviceInfoBuilder_ = nil
        builderResult.hasDeviceInfo = false
        builderResult.deviceInfo = nil
        return self
      }
      public var hasActivityStatus:Bool {
           get {
               return builderResult.hasActivityStatus
           }
      }
      public var activityStatus:Pogoprotos.Networking.Envelopes.Signature.ActivityStatus! {
           get {
               if activityStatusBuilder_ != nil {
                  builderResult.activityStatus = activityStatusBuilder_.getMessage()
               }
               return builderResult.activityStatus
           }
           set (value) {
               builderResult.hasActivityStatus = true
               builderResult.activityStatus = value
           }
      }
      private var activityStatusBuilder_:Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder! {
           didSet {
              builderResult.hasActivityStatus = true
           }
      }
      public func getActivityStatusBuilder() -> Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder {
        if activityStatusBuilder_ == nil {
           activityStatusBuilder_ = Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder()
           builderResult.activityStatus = activityStatusBuilder_.getMessage()
           if activityStatus != nil {
              try! activityStatusBuilder_.mergeFrom(activityStatus)
           }
        }
        return activityStatusBuilder_
      }
      public func setActivityStatus(value:Pogoprotos.Networking.Envelopes.Signature.ActivityStatus!) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.activityStatus = value
        return self
      }
      public func mergeActivityStatus(value:Pogoprotos.Networking.Envelopes.Signature.ActivityStatus) throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        if builderResult.hasActivityStatus {
          builderResult.activityStatus = try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.builderWithPrototype(builderResult.activityStatus).mergeFrom(value).buildPartial()
        } else {
          builderResult.activityStatus = value
        }
        builderResult.hasActivityStatus = true
        return self
      }
      public func clearActivityStatus() -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        activityStatusBuilder_ = nil
        builderResult.hasActivityStatus = false
        builderResult.activityStatus = nil
        return self
      }
      public var hasLocationHash1:Bool {
           get {
                return builderResult.hasLocationHash1
           }
      }
      public var locationHash1:UInt32 {
           get {
                return builderResult.locationHash1
           }
           set (value) {
               builderResult.hasLocationHash1 = true
               builderResult.locationHash1 = value
           }
      }
      public func setLocationHash1(value:UInt32) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.locationHash1 = value
        return self
      }
      public func clearLocationHash1() -> Pogoprotos.Networking.Envelopes.Signature.Builder{
           builderResult.hasLocationHash1 = false
           builderResult.locationHash1 = UInt32(0)
           return self
      }
      public var hasLocationHash2:Bool {
           get {
                return builderResult.hasLocationHash2
           }
      }
      public var locationHash2:UInt32 {
           get {
                return builderResult.locationHash2
           }
           set (value) {
               builderResult.hasLocationHash2 = true
               builderResult.locationHash2 = value
           }
      }
      public func setLocationHash2(value:UInt32) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.locationHash2 = value
        return self
      }
      public func clearLocationHash2() -> Pogoprotos.Networking.Envelopes.Signature.Builder{
           builderResult.hasLocationHash2 = false
           builderResult.locationHash2 = UInt32(0)
           return self
      }
      public var hasSessionHash:Bool {
           get {
                return builderResult.hasSessionHash
           }
      }
      public var sessionHash:NSData {
           get {
                return builderResult.sessionHash
           }
           set (value) {
               builderResult.hasSessionHash = true
               builderResult.sessionHash = value
           }
      }
      public func setSessionHash(value:NSData) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.sessionHash = value
        return self
      }
      public func clearSessionHash() -> Pogoprotos.Networking.Envelopes.Signature.Builder{
           builderResult.hasSessionHash = false
           builderResult.sessionHash = NSData()
           return self
      }
      public var hasTimestamp:Bool {
           get {
                return builderResult.hasTimestamp
           }
      }
      public var timestamp:UInt64 {
           get {
                return builderResult.timestamp
           }
           set (value) {
               builderResult.hasTimestamp = true
               builderResult.timestamp = value
           }
      }
      public func setTimestamp(value:UInt64) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.timestamp = value
        return self
      }
      public func clearTimestamp() -> Pogoprotos.Networking.Envelopes.Signature.Builder{
           builderResult.hasTimestamp = false
           builderResult.timestamp = UInt64(0)
           return self
      }
      public var requestHash:Array<UInt64> {
           get {
               return builderResult.requestHash
           }
           set (array) {
               builderResult.requestHash = array
           }
      }
      public func setRequestHash(value:Array<UInt64>) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.requestHash = value
        return self
      }
      public func clearRequestHash() -> Pogoprotos.Networking.Envelopes.Signature.Builder {
         builderResult.requestHash.removeAll(keepCapacity: false)
         return self
      }
      public var hasUnknown25:Bool {
           get {
                return builderResult.hasUnknown25
           }
      }
      public var unknown25:Int64 {
           get {
                return builderResult.unknown25
           }
           set (value) {
               builderResult.hasUnknown25 = true
               builderResult.unknown25 = value
           }
      }
      public func setUnknown25(value:Int64) -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        self.unknown25 = value
        return self
      }
      public func clearUnknown25() -> Pogoprotos.Networking.Envelopes.Signature.Builder{
           builderResult.hasUnknown25 = false
           builderResult.unknown25 = Int64(0)
           return self
      }
      override public var internalGetResult:GeneratedMessage {
           get {
              return builderResult
           }
      }
      override public func clear() -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        builderResult = Pogoprotos.Networking.Envelopes.Signature()
        return self
      }
      override public func clone() throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        return try Pogoprotos.Networking.Envelopes.Signature.builderWithPrototype(builderResult)
      }
      override public func build() throws -> Pogoprotos.Networking.Envelopes.Signature {
           try checkInitialized()
           return buildPartial()
      }
      public func buildPartial() -> Pogoprotos.Networking.Envelopes.Signature {
        let returnMe:Pogoprotos.Networking.Envelopes.Signature = builderResult
        return returnMe
      }
      public func mergeFrom(other:Pogoprotos.Networking.Envelopes.Signature) throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        if other == Pogoprotos.Networking.Envelopes.Signature() {
         return self
        }
        if other.hasTimestampSinceStart {
             timestampSinceStart = other.timestampSinceStart
        }
        if !other.locationFix.isEmpty  {
           builderResult.locationFix += other.locationFix
        }
        if (other.hasGpsInfo) {
            try mergeGpsInfo(other.gpsInfo)
        }
        if (other.hasSensorInfo) {
            try mergeSensorInfo(other.sensorInfo)
        }
        if (other.hasDeviceInfo) {
            try mergeDeviceInfo(other.deviceInfo)
        }
        if (other.hasActivityStatus) {
            try mergeActivityStatus(other.activityStatus)
        }
        if other.hasLocationHash1 {
             locationHash1 = other.locationHash1
        }
        if other.hasLocationHash2 {
             locationHash2 = other.locationHash2
        }
        if other.hasSessionHash {
             sessionHash = other.sessionHash
        }
        if other.hasTimestamp {
             timestamp = other.timestamp
        }
        if !other.requestHash.isEmpty {
            builderResult.requestHash += other.requestHash
        }
        if other.hasUnknown25 {
             unknown25 = other.unknown25
        }
        try mergeUnknownFields(other.unknownFields)
        return self
      }
      override public func mergeFromCodedInputStream(input:CodedInputStream) throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
           return try mergeFromCodedInputStream(input, extensionRegistry:ExtensionRegistry())
      }
      override public func mergeFromCodedInputStream(input:CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(self.unknownFields)
        while (true) {
          let protobufTag = try input.readTag()
          switch protobufTag {
          case 0: 
            self.unknownFields = try unknownFieldsBuilder.build()
            return self

          case 16:
            timestampSinceStart = try input.readUInt64()

          case 34:
            let subBuilder = Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder()
            try input.readMessage(subBuilder,extensionRegistry:extensionRegistry)
            locationFix += [subBuilder.buildPartial()]

          case 42:
            let subBuilder:Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder = Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder()
            if hasGpsInfo {
              try subBuilder.mergeFrom(gpsInfo)
            }
            try input.readMessage(subBuilder, extensionRegistry:extensionRegistry)
            gpsInfo = subBuilder.buildPartial()

          case 58:
            let subBuilder:Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder = Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder()
            if hasSensorInfo {
              try subBuilder.mergeFrom(sensorInfo)
            }
            try input.readMessage(subBuilder, extensionRegistry:extensionRegistry)
            sensorInfo = subBuilder.buildPartial()

          case 66:
            let subBuilder:Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder = Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder()
            if hasDeviceInfo {
              try subBuilder.mergeFrom(deviceInfo)
            }
            try input.readMessage(subBuilder, extensionRegistry:extensionRegistry)
            deviceInfo = subBuilder.buildPartial()

          case 74:
            let subBuilder:Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder = Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder()
            if hasActivityStatus {
              try subBuilder.mergeFrom(activityStatus)
            }
            try input.readMessage(subBuilder, extensionRegistry:extensionRegistry)
            activityStatus = subBuilder.buildPartial()

          case 80:
            locationHash1 = try input.readUInt32()

          case 160:
            locationHash2 = try input.readUInt32()

          case 178:
            sessionHash = try input.readData()

          case 184:
            timestamp = try input.readUInt64()

          case 194:
            let length:Int32 = try input.readRawVarint32()
            let limit:Int32 = try input.pushLimit(length)
            while (input.bytesUntilLimit() > 0) {
              builderResult.requestHash += [try input.readUInt64()]
            }
            input.popLimit(limit)

          case 200:
            unknown25 = try input.readInt64()

          default:
            if (!(try parseUnknownField(input,unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
               unknownFields = try unknownFieldsBuilder.build()
               return self
            }
          }
        }
      }
      override class public func decodeToBuilder(jsonMap:Dictionary<String,AnyObject>) throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        let resultDecodedBuilder = Pogoprotos.Networking.Envelopes.Signature.Builder()
        if let jsonValueTimestampSinceStart = jsonMap["timestampSinceStart"] as? String {
          resultDecodedBuilder.timestampSinceStart = UInt64(jsonValueTimestampSinceStart)!
        }
        if let jsonValueLocationFix = jsonMap["locationFix"] as? Array<Dictionary<String,AnyObject>> {
          var jsonArrayLocationFix:Array<Pogoprotos.Networking.Envelopes.Signature.LocationFix> = []
          for oneValueLocationFix in jsonValueLocationFix {
            let messageFromStringLocationFix = try Pogoprotos.Networking.Envelopes.Signature.LocationFix.Builder.decodeToBuilder(oneValueLocationFix).build()

            jsonArrayLocationFix += [messageFromStringLocationFix]
          }
          resultDecodedBuilder.locationFix = jsonArrayLocationFix
        }
        if let jsonValueGpsInfo = jsonMap["gpsInfo"] as? Dictionary<String,AnyObject> {
          resultDecodedBuilder.gpsInfo = try Pogoprotos.Networking.Envelopes.Signature.AndroidGpsInfo.Builder.decodeToBuilder(jsonValueGpsInfo).build()

        }
        if let jsonValueSensorInfo = jsonMap["sensorInfo"] as? Dictionary<String,AnyObject> {
          resultDecodedBuilder.sensorInfo = try Pogoprotos.Networking.Envelopes.Signature.SensorInfo.Builder.decodeToBuilder(jsonValueSensorInfo).build()

        }
        if let jsonValueDeviceInfo = jsonMap["deviceInfo"] as? Dictionary<String,AnyObject> {
          resultDecodedBuilder.deviceInfo = try Pogoprotos.Networking.Envelopes.Signature.DeviceInfo.Builder.decodeToBuilder(jsonValueDeviceInfo).build()

        }
        if let jsonValueActivityStatus = jsonMap["activityStatus"] as? Dictionary<String,AnyObject> {
          resultDecodedBuilder.activityStatus = try Pogoprotos.Networking.Envelopes.Signature.ActivityStatus.Builder.decodeToBuilder(jsonValueActivityStatus).build()

        }
        if let jsonValueLocationHash1 = jsonMap["locationHash1"] as? NSNumber {
          resultDecodedBuilder.locationHash1 = jsonValueLocationHash1.unsignedIntValue
        }
        if let jsonValueLocationHash2 = jsonMap["locationHash2"] as? NSNumber {
          resultDecodedBuilder.locationHash2 = jsonValueLocationHash2.unsignedIntValue
        }
        if let jsonValueSessionHash = jsonMap["sessionHash"] as? String {
          resultDecodedBuilder.sessionHash = NSData(base64EncodedString:jsonValueSessionHash, options: NSDataBase64DecodingOptions(rawValue:0))!
        }
        if let jsonValueTimestamp = jsonMap["timestamp"] as? String {
          resultDecodedBuilder.timestamp = UInt64(jsonValueTimestamp)!
        }
        if let jsonValueRequestHash = jsonMap["requestHash"] as? Array<String> {
          var jsonArrayRequestHash:Array<UInt64> = []
          for oneValueRequestHash in jsonValueRequestHash {
            jsonArrayRequestHash += [UInt64(oneValueRequestHash)!]
          }
          resultDecodedBuilder.requestHash = jsonArrayRequestHash
        }
        if let jsonValueUnknown25 = jsonMap["unknown25"] as? String {
          resultDecodedBuilder.unknown25 = Int64(jsonValueUnknown25)!
        }
        return resultDecodedBuilder
      }
      override class public func fromJSONToBuilder(data:NSData) throws -> Pogoprotos.Networking.Envelopes.Signature.Builder {
        let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))
        guard let jsDataCast = jsonData as? Dictionary<String,AnyObject> else {
          throw ProtocolBuffersError.InvalidProtocolBuffer("Invalid JSON data")
        }
        return try Pogoprotos.Networking.Envelopes.Signature.Builder.decodeToBuilder(jsDataCast)
      }
    }

  }

}

// @@protoc_insertion_point(global_scope)
