|  | // Generated by the protocol buffer compiler.  DO NOT EDIT! | 
|  |  | 
|  | #import "Weave_pairing_session_log.pb.h" | 
|  | // @@protoc_insertion_point(imports) | 
|  |  | 
|  | @implementation WeavePairingSessionLogRoot | 
|  | static PBExtensionRegistry* extensionRegistry = nil; | 
|  | + (PBExtensionRegistry*) extensionRegistry { | 
|  | return extensionRegistry; | 
|  | } | 
|  |  | 
|  | + (void) initialize { | 
|  | if (self == [WeavePairingSessionLogRoot class]) { | 
|  | PBMutableExtensionRegistry* registry = [PBMutableExtensionRegistry registry]; | 
|  | [self registerAllExtensions:registry]; | 
|  | [EnvironmentRoot registerAllExtensions:registry]; | 
|  | [EventRoot registerAllExtensions:registry]; | 
|  | [IdentificationProfileRoot registerAllExtensions:registry]; | 
|  | [SoftwareProfileRoot registerAllExtensions:registry]; | 
|  | [AccountInfoRoot registerAllExtensions:registry]; | 
|  | [FabricInfoRoot registerAllExtensions:registry]; | 
|  | extensionRegistry = registry; | 
|  | } | 
|  | } | 
|  | + (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry { | 
|  | } | 
|  | @end | 
|  |  | 
|  | @interface WeavePairingSessionLog () | 
|  | @property SInt64 sessionStartTimestampMillis; | 
|  | @property SInt64 sessionEndTimestampMillis; | 
|  | @property WeavePairingSessionLogStatus sessionStatus; | 
|  | @property (strong) NSString* sessionId; | 
|  | @property (strong) NSMutableArray * eventsArray; | 
|  | @property (strong) Environment* environment; | 
|  | @property (strong) IdentificationProfile* joiningDeviceIdentification; | 
|  | @property (strong) SoftwareProfile* joiningDeviceSoftware; | 
|  | @property (strong) IdentificationProfile* assistingDeviceIdentification; | 
|  | @property (strong) SoftwareProfile* assistingDeviceSoftware; | 
|  | @property (strong) AccountInfo* accountInfo; | 
|  | @property (strong) FabricInfo* fabricInfo; | 
|  | @property (strong) NSString* sessionStartTimestampIso8601; | 
|  | @property (strong) NSString* sessionEndTimestampIso8601; | 
|  | @end | 
|  |  | 
|  | @implementation WeavePairingSessionLog | 
|  |  | 
|  | - (BOOL) hasSessionStartTimestampMillis { | 
|  | return !!hasSessionStartTimestampMillis_; | 
|  | } | 
|  | - (void) setHasSessionStartTimestampMillis:(BOOL) value_ { | 
|  | hasSessionStartTimestampMillis_ = !!value_; | 
|  | } | 
|  | @synthesize sessionStartTimestampMillis; | 
|  | - (BOOL) hasSessionEndTimestampMillis { | 
|  | return !!hasSessionEndTimestampMillis_; | 
|  | } | 
|  | - (void) setHasSessionEndTimestampMillis:(BOOL) value_ { | 
|  | hasSessionEndTimestampMillis_ = !!value_; | 
|  | } | 
|  | @synthesize sessionEndTimestampMillis; | 
|  | - (BOOL) hasSessionStatus { | 
|  | return !!hasSessionStatus_; | 
|  | } | 
|  | - (void) setHasSessionStatus:(BOOL) value_ { | 
|  | hasSessionStatus_ = !!value_; | 
|  | } | 
|  | @synthesize sessionStatus; | 
|  | - (BOOL) hasSessionId { | 
|  | return !!hasSessionId_; | 
|  | } | 
|  | - (void) setHasSessionId:(BOOL) value_ { | 
|  | hasSessionId_ = !!value_; | 
|  | } | 
|  | @synthesize sessionId; | 
|  | @synthesize eventsArray; | 
|  | @dynamic events; | 
|  | - (BOOL) hasEnvironment { | 
|  | return !!hasEnvironment_; | 
|  | } | 
|  | - (void) setHasEnvironment:(BOOL) value_ { | 
|  | hasEnvironment_ = !!value_; | 
|  | } | 
|  | @synthesize environment; | 
|  | - (BOOL) hasJoiningDeviceIdentification { | 
|  | return !!hasJoiningDeviceIdentification_; | 
|  | } | 
|  | - (void) setHasJoiningDeviceIdentification:(BOOL) value_ { | 
|  | hasJoiningDeviceIdentification_ = !!value_; | 
|  | } | 
|  | @synthesize joiningDeviceIdentification; | 
|  | - (BOOL) hasJoiningDeviceSoftware { | 
|  | return !!hasJoiningDeviceSoftware_; | 
|  | } | 
|  | - (void) setHasJoiningDeviceSoftware:(BOOL) value_ { | 
|  | hasJoiningDeviceSoftware_ = !!value_; | 
|  | } | 
|  | @synthesize joiningDeviceSoftware; | 
|  | - (BOOL) hasAssistingDeviceIdentification { | 
|  | return !!hasAssistingDeviceIdentification_; | 
|  | } | 
|  | - (void) setHasAssistingDeviceIdentification:(BOOL) value_ { | 
|  | hasAssistingDeviceIdentification_ = !!value_; | 
|  | } | 
|  | @synthesize assistingDeviceIdentification; | 
|  | - (BOOL) hasAssistingDeviceSoftware { | 
|  | return !!hasAssistingDeviceSoftware_; | 
|  | } | 
|  | - (void) setHasAssistingDeviceSoftware:(BOOL) value_ { | 
|  | hasAssistingDeviceSoftware_ = !!value_; | 
|  | } | 
|  | @synthesize assistingDeviceSoftware; | 
|  | - (BOOL) hasAccountInfo { | 
|  | return !!hasAccountInfo_; | 
|  | } | 
|  | - (void) setHasAccountInfo:(BOOL) value_ { | 
|  | hasAccountInfo_ = !!value_; | 
|  | } | 
|  | @synthesize accountInfo; | 
|  | - (BOOL) hasFabricInfo { | 
|  | return !!hasFabricInfo_; | 
|  | } | 
|  | - (void) setHasFabricInfo:(BOOL) value_ { | 
|  | hasFabricInfo_ = !!value_; | 
|  | } | 
|  | @synthesize fabricInfo; | 
|  | - (BOOL) hasSessionStartTimestampIso8601 { | 
|  | return !!hasSessionStartTimestampIso8601_; | 
|  | } | 
|  | - (void) setHasSessionStartTimestampIso8601:(BOOL) value_ { | 
|  | hasSessionStartTimestampIso8601_ = !!value_; | 
|  | } | 
|  | @synthesize sessionStartTimestampIso8601; | 
|  | - (BOOL) hasSessionEndTimestampIso8601 { | 
|  | return !!hasSessionEndTimestampIso8601_; | 
|  | } | 
|  | - (void) setHasSessionEndTimestampIso8601:(BOOL) value_ { | 
|  | hasSessionEndTimestampIso8601_ = !!value_; | 
|  | } | 
|  | @synthesize sessionEndTimestampIso8601; | 
|  | - (id) init { | 
|  | if ((self = [super init])) { | 
|  | self.sessionStartTimestampMillis = 0L; | 
|  | self.sessionEndTimestampMillis = 0L; | 
|  | self.sessionStatus = WeavePairingSessionLogStatusUnknown; | 
|  | self.sessionId = @""; | 
|  | self.environment = [Environment defaultInstance]; | 
|  | self.joiningDeviceIdentification = [IdentificationProfile defaultInstance]; | 
|  | self.joiningDeviceSoftware = [SoftwareProfile defaultInstance]; | 
|  | self.assistingDeviceIdentification = [IdentificationProfile defaultInstance]; | 
|  | self.assistingDeviceSoftware = [SoftwareProfile defaultInstance]; | 
|  | self.accountInfo = [AccountInfo defaultInstance]; | 
|  | self.fabricInfo = [FabricInfo defaultInstance]; | 
|  | self.sessionStartTimestampIso8601 = @""; | 
|  | self.sessionEndTimestampIso8601 = @""; | 
|  | } | 
|  | return self; | 
|  | } | 
|  | static WeavePairingSessionLog* defaultWeavePairingSessionLogInstance = nil; | 
|  | + (void) initialize { | 
|  | if (self == [WeavePairingSessionLog class]) { | 
|  | defaultWeavePairingSessionLogInstance = [[WeavePairingSessionLog alloc] init]; | 
|  | } | 
|  | } | 
|  | + (WeavePairingSessionLog*) defaultInstance { | 
|  | return defaultWeavePairingSessionLogInstance; | 
|  | } | 
|  | - (WeavePairingSessionLog*) defaultInstance { | 
|  | return defaultWeavePairingSessionLogInstance; | 
|  | } | 
|  | - (NSArray *)events { | 
|  | return eventsArray; | 
|  | } | 
|  | - (Event*)eventsAtIndex:(NSUInteger)index { | 
|  | return [eventsArray objectAtIndex:index]; | 
|  | } | 
|  | - (BOOL) isInitialized { | 
|  | return YES; | 
|  | } | 
|  | - (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { | 
|  | if (self.hasSessionStartTimestampMillis) { | 
|  | [output writeSInt64:1 value:self.sessionStartTimestampMillis]; | 
|  | } | 
|  | if (self.hasSessionEndTimestampMillis) { | 
|  | [output writeSInt64:2 value:self.sessionEndTimestampMillis]; | 
|  | } | 
|  | if (self.hasSessionStatus) { | 
|  | [output writeEnum:3 value:self.sessionStatus]; | 
|  | } | 
|  | if (self.hasSessionId) { | 
|  | [output writeString:4 value:self.sessionId]; | 
|  | } | 
|  | [self.eventsArray enumerateObjectsUsingBlock:^(Event *element, NSUInteger idx, BOOL *stop) { | 
|  | [output writeMessage:5 value:element]; | 
|  | }]; | 
|  | if (self.hasEnvironment) { | 
|  | [output writeMessage:6 value:self.environment]; | 
|  | } | 
|  | if (self.hasJoiningDeviceIdentification) { | 
|  | [output writeMessage:7 value:self.joiningDeviceIdentification]; | 
|  | } | 
|  | if (self.hasJoiningDeviceSoftware) { | 
|  | [output writeMessage:8 value:self.joiningDeviceSoftware]; | 
|  | } | 
|  | if (self.hasAssistingDeviceIdentification) { | 
|  | [output writeMessage:9 value:self.assistingDeviceIdentification]; | 
|  | } | 
|  | if (self.hasAssistingDeviceSoftware) { | 
|  | [output writeMessage:10 value:self.assistingDeviceSoftware]; | 
|  | } | 
|  | if (self.hasAccountInfo) { | 
|  | [output writeMessage:11 value:self.accountInfo]; | 
|  | } | 
|  | if (self.hasFabricInfo) { | 
|  | [output writeMessage:12 value:self.fabricInfo]; | 
|  | } | 
|  | if (self.hasSessionStartTimestampIso8601) { | 
|  | [output writeString:13 value:self.sessionStartTimestampIso8601]; | 
|  | } | 
|  | if (self.hasSessionEndTimestampIso8601) { | 
|  | [output writeString:14 value:self.sessionEndTimestampIso8601]; | 
|  | } | 
|  | [self.unknownFields writeToCodedOutputStream:output]; | 
|  | } | 
|  | - (SInt32) serializedSize { | 
|  | __block SInt32 size_ = memoizedSerializedSize; | 
|  | if (size_ != -1) { | 
|  | return size_; | 
|  | } | 
|  |  | 
|  | size_ = 0; | 
|  | if (self.hasSessionStartTimestampMillis) { | 
|  | size_ += computeSInt64Size(1, self.sessionStartTimestampMillis); | 
|  | } | 
|  | if (self.hasSessionEndTimestampMillis) { | 
|  | size_ += computeSInt64Size(2, self.sessionEndTimestampMillis); | 
|  | } | 
|  | if (self.hasSessionStatus) { | 
|  | size_ += computeEnumSize(3, self.sessionStatus); | 
|  | } | 
|  | if (self.hasSessionId) { | 
|  | size_ += computeStringSize(4, self.sessionId); | 
|  | } | 
|  | [self.eventsArray enumerateObjectsUsingBlock:^(Event *element, NSUInteger idx, BOOL *stop) { | 
|  | size_ += computeMessageSize(5, element); | 
|  | }]; | 
|  | if (self.hasEnvironment) { | 
|  | size_ += computeMessageSize(6, self.environment); | 
|  | } | 
|  | if (self.hasJoiningDeviceIdentification) { | 
|  | size_ += computeMessageSize(7, self.joiningDeviceIdentification); | 
|  | } | 
|  | if (self.hasJoiningDeviceSoftware) { | 
|  | size_ += computeMessageSize(8, self.joiningDeviceSoftware); | 
|  | } | 
|  | if (self.hasAssistingDeviceIdentification) { | 
|  | size_ += computeMessageSize(9, self.assistingDeviceIdentification); | 
|  | } | 
|  | if (self.hasAssistingDeviceSoftware) { | 
|  | size_ += computeMessageSize(10, self.assistingDeviceSoftware); | 
|  | } | 
|  | if (self.hasAccountInfo) { | 
|  | size_ += computeMessageSize(11, self.accountInfo); | 
|  | } | 
|  | if (self.hasFabricInfo) { | 
|  | size_ += computeMessageSize(12, self.fabricInfo); | 
|  | } | 
|  | if (self.hasSessionStartTimestampIso8601) { | 
|  | size_ += computeStringSize(13, self.sessionStartTimestampIso8601); | 
|  | } | 
|  | if (self.hasSessionEndTimestampIso8601) { | 
|  | size_ += computeStringSize(14, self.sessionEndTimestampIso8601); | 
|  | } | 
|  | size_ += self.unknownFields.serializedSize; | 
|  | memoizedSerializedSize = size_; | 
|  | return size_; | 
|  | } | 
|  | + (WeavePairingSessionLog*) parseFromData:(NSData*) data { | 
|  | return (WeavePairingSessionLog*)[[[WeavePairingSessionLog builder] mergeFromData:data] build]; | 
|  | } | 
|  | + (WeavePairingSessionLog*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { | 
|  | return (WeavePairingSessionLog*)[[[WeavePairingSessionLog builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; | 
|  | } | 
|  | + (WeavePairingSessionLog*) parseFromInputStream:(NSInputStream*) input { | 
|  | return (WeavePairingSessionLog*)[[[WeavePairingSessionLog builder] mergeFromInputStream:input] build]; | 
|  | } | 
|  | + (WeavePairingSessionLog*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { | 
|  | return (WeavePairingSessionLog*)[[[WeavePairingSessionLog builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; | 
|  | } | 
|  | + (WeavePairingSessionLog*) parseFromCodedInputStream:(PBCodedInputStream*) input { | 
|  | return (WeavePairingSessionLog*)[[[WeavePairingSessionLog builder] mergeFromCodedInputStream:input] build]; | 
|  | } | 
|  | + (WeavePairingSessionLog*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { | 
|  | return (WeavePairingSessionLog*)[[[WeavePairingSessionLog builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; | 
|  | } | 
|  | + (WeavePairingSessionLogBuilder*) builder { | 
|  | return [[WeavePairingSessionLogBuilder alloc] init]; | 
|  | } | 
|  | + (WeavePairingSessionLogBuilder*) builderWithPrototype:(WeavePairingSessionLog*) prototype { | 
|  | return [[WeavePairingSessionLog builder] mergeFrom:prototype]; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) builder { | 
|  | return [WeavePairingSessionLog builder]; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) toBuilder { | 
|  | return [WeavePairingSessionLog builderWithPrototype:self]; | 
|  | } | 
|  | - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { | 
|  | if (self.hasSessionStartTimestampMillis) { | 
|  | [output appendFormat:@"%@%@: %@\n", indent, @"sessionStartTimestampMillis", [NSNumber numberWithLongLong:self.sessionStartTimestampMillis]]; | 
|  | } | 
|  | if (self.hasSessionEndTimestampMillis) { | 
|  | [output appendFormat:@"%@%@: %@\n", indent, @"sessionEndTimestampMillis", [NSNumber numberWithLongLong:self.sessionEndTimestampMillis]]; | 
|  | } | 
|  | if (self.hasSessionStatus) { | 
|  | [output appendFormat:@"%@%@: %d\n", indent, @"sessionStatus", self.sessionStatus]; | 
|  | } | 
|  | if (self.hasSessionId) { | 
|  | [output appendFormat:@"%@%@: %@\n", indent, @"sessionId", self.sessionId]; | 
|  | } | 
|  | [self.eventsArray enumerateObjectsUsingBlock:^(Event *element, NSUInteger idx, BOOL *stop) { | 
|  | [output appendFormat:@"%@%@ {\n", indent, @"events"]; | 
|  | [element writeDescriptionTo:output | 
|  | withIndent:[NSString stringWithFormat:@"%@  ", indent]]; | 
|  | [output appendFormat:@"%@}\n", indent]; | 
|  | }]; | 
|  | if (self.hasEnvironment) { | 
|  | [output appendFormat:@"%@%@ {\n", indent, @"environment"]; | 
|  | [self.environment writeDescriptionTo:output | 
|  | withIndent:[NSString stringWithFormat:@"%@  ", indent]]; | 
|  | [output appendFormat:@"%@}\n", indent]; | 
|  | } | 
|  | if (self.hasJoiningDeviceIdentification) { | 
|  | [output appendFormat:@"%@%@ {\n", indent, @"joiningDeviceIdentification"]; | 
|  | [self.joiningDeviceIdentification writeDescriptionTo:output | 
|  | withIndent:[NSString stringWithFormat:@"%@  ", indent]]; | 
|  | [output appendFormat:@"%@}\n", indent]; | 
|  | } | 
|  | if (self.hasJoiningDeviceSoftware) { | 
|  | [output appendFormat:@"%@%@ {\n", indent, @"joiningDeviceSoftware"]; | 
|  | [self.joiningDeviceSoftware writeDescriptionTo:output | 
|  | withIndent:[NSString stringWithFormat:@"%@  ", indent]]; | 
|  | [output appendFormat:@"%@}\n", indent]; | 
|  | } | 
|  | if (self.hasAssistingDeviceIdentification) { | 
|  | [output appendFormat:@"%@%@ {\n", indent, @"assistingDeviceIdentification"]; | 
|  | [self.assistingDeviceIdentification writeDescriptionTo:output | 
|  | withIndent:[NSString stringWithFormat:@"%@  ", indent]]; | 
|  | [output appendFormat:@"%@}\n", indent]; | 
|  | } | 
|  | if (self.hasAssistingDeviceSoftware) { | 
|  | [output appendFormat:@"%@%@ {\n", indent, @"assistingDeviceSoftware"]; | 
|  | [self.assistingDeviceSoftware writeDescriptionTo:output | 
|  | withIndent:[NSString stringWithFormat:@"%@  ", indent]]; | 
|  | [output appendFormat:@"%@}\n", indent]; | 
|  | } | 
|  | if (self.hasAccountInfo) { | 
|  | [output appendFormat:@"%@%@ {\n", indent, @"accountInfo"]; | 
|  | [self.accountInfo writeDescriptionTo:output | 
|  | withIndent:[NSString stringWithFormat:@"%@  ", indent]]; | 
|  | [output appendFormat:@"%@}\n", indent]; | 
|  | } | 
|  | if (self.hasFabricInfo) { | 
|  | [output appendFormat:@"%@%@ {\n", indent, @"fabricInfo"]; | 
|  | [self.fabricInfo writeDescriptionTo:output | 
|  | withIndent:[NSString stringWithFormat:@"%@  ", indent]]; | 
|  | [output appendFormat:@"%@}\n", indent]; | 
|  | } | 
|  | if (self.hasSessionStartTimestampIso8601) { | 
|  | [output appendFormat:@"%@%@: %@\n", indent, @"sessionStartTimestampIso8601", self.sessionStartTimestampIso8601]; | 
|  | } | 
|  | if (self.hasSessionEndTimestampIso8601) { | 
|  | [output appendFormat:@"%@%@: %@\n", indent, @"sessionEndTimestampIso8601", self.sessionEndTimestampIso8601]; | 
|  | } | 
|  | [self.unknownFields writeDescriptionTo:output withIndent:indent]; | 
|  | } | 
|  | - (BOOL) isEqual:(id)other { | 
|  | if (other == self) { | 
|  | return YES; | 
|  | } | 
|  | if (![other isKindOfClass:[WeavePairingSessionLog class]]) { | 
|  | return NO; | 
|  | } | 
|  | WeavePairingSessionLog *otherMessage = other; | 
|  | return | 
|  | self.hasSessionStartTimestampMillis == otherMessage.hasSessionStartTimestampMillis && | 
|  | (!self.hasSessionStartTimestampMillis || self.sessionStartTimestampMillis == otherMessage.sessionStartTimestampMillis) && | 
|  | self.hasSessionEndTimestampMillis == otherMessage.hasSessionEndTimestampMillis && | 
|  | (!self.hasSessionEndTimestampMillis || self.sessionEndTimestampMillis == otherMessage.sessionEndTimestampMillis) && | 
|  | self.hasSessionStatus == otherMessage.hasSessionStatus && | 
|  | (!self.hasSessionStatus || self.sessionStatus == otherMessage.sessionStatus) && | 
|  | self.hasSessionId == otherMessage.hasSessionId && | 
|  | (!self.hasSessionId || [self.sessionId isEqual:otherMessage.sessionId]) && | 
|  | [self.eventsArray isEqualToArray:otherMessage.eventsArray] && | 
|  | self.hasEnvironment == otherMessage.hasEnvironment && | 
|  | (!self.hasEnvironment || [self.environment isEqual:otherMessage.environment]) && | 
|  | self.hasJoiningDeviceIdentification == otherMessage.hasJoiningDeviceIdentification && | 
|  | (!self.hasJoiningDeviceIdentification || [self.joiningDeviceIdentification isEqual:otherMessage.joiningDeviceIdentification]) && | 
|  | self.hasJoiningDeviceSoftware == otherMessage.hasJoiningDeviceSoftware && | 
|  | (!self.hasJoiningDeviceSoftware || [self.joiningDeviceSoftware isEqual:otherMessage.joiningDeviceSoftware]) && | 
|  | self.hasAssistingDeviceIdentification == otherMessage.hasAssistingDeviceIdentification && | 
|  | (!self.hasAssistingDeviceIdentification || [self.assistingDeviceIdentification isEqual:otherMessage.assistingDeviceIdentification]) && | 
|  | self.hasAssistingDeviceSoftware == otherMessage.hasAssistingDeviceSoftware && | 
|  | (!self.hasAssistingDeviceSoftware || [self.assistingDeviceSoftware isEqual:otherMessage.assistingDeviceSoftware]) && | 
|  | self.hasAccountInfo == otherMessage.hasAccountInfo && | 
|  | (!self.hasAccountInfo || [self.accountInfo isEqual:otherMessage.accountInfo]) && | 
|  | self.hasFabricInfo == otherMessage.hasFabricInfo && | 
|  | (!self.hasFabricInfo || [self.fabricInfo isEqual:otherMessage.fabricInfo]) && | 
|  | self.hasSessionStartTimestampIso8601 == otherMessage.hasSessionStartTimestampIso8601 && | 
|  | (!self.hasSessionStartTimestampIso8601 || [self.sessionStartTimestampIso8601 isEqual:otherMessage.sessionStartTimestampIso8601]) && | 
|  | self.hasSessionEndTimestampIso8601 == otherMessage.hasSessionEndTimestampIso8601 && | 
|  | (!self.hasSessionEndTimestampIso8601 || [self.sessionEndTimestampIso8601 isEqual:otherMessage.sessionEndTimestampIso8601]) && | 
|  | (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); | 
|  | } | 
|  | - (NSUInteger) hash { | 
|  | __block NSUInteger hashCode = 7; | 
|  | if (self.hasSessionStartTimestampMillis) { | 
|  | hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.sessionStartTimestampMillis] hash]; | 
|  | } | 
|  | if (self.hasSessionEndTimestampMillis) { | 
|  | hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.sessionEndTimestampMillis] hash]; | 
|  | } | 
|  | if (self.hasSessionStatus) { | 
|  | hashCode = hashCode * 31 + self.sessionStatus; | 
|  | } | 
|  | if (self.hasSessionId) { | 
|  | hashCode = hashCode * 31 + [self.sessionId hash]; | 
|  | } | 
|  | [self.eventsArray enumerateObjectsUsingBlock:^(Event *element, NSUInteger idx, BOOL *stop) { | 
|  | hashCode = hashCode * 31 + [element hash]; | 
|  | }]; | 
|  | if (self.hasEnvironment) { | 
|  | hashCode = hashCode * 31 + [self.environment hash]; | 
|  | } | 
|  | if (self.hasJoiningDeviceIdentification) { | 
|  | hashCode = hashCode * 31 + [self.joiningDeviceIdentification hash]; | 
|  | } | 
|  | if (self.hasJoiningDeviceSoftware) { | 
|  | hashCode = hashCode * 31 + [self.joiningDeviceSoftware hash]; | 
|  | } | 
|  | if (self.hasAssistingDeviceIdentification) { | 
|  | hashCode = hashCode * 31 + [self.assistingDeviceIdentification hash]; | 
|  | } | 
|  | if (self.hasAssistingDeviceSoftware) { | 
|  | hashCode = hashCode * 31 + [self.assistingDeviceSoftware hash]; | 
|  | } | 
|  | if (self.hasAccountInfo) { | 
|  | hashCode = hashCode * 31 + [self.accountInfo hash]; | 
|  | } | 
|  | if (self.hasFabricInfo) { | 
|  | hashCode = hashCode * 31 + [self.fabricInfo hash]; | 
|  | } | 
|  | if (self.hasSessionStartTimestampIso8601) { | 
|  | hashCode = hashCode * 31 + [self.sessionStartTimestampIso8601 hash]; | 
|  | } | 
|  | if (self.hasSessionEndTimestampIso8601) { | 
|  | hashCode = hashCode * 31 + [self.sessionEndTimestampIso8601 hash]; | 
|  | } | 
|  | hashCode = hashCode * 31 + [self.unknownFields hash]; | 
|  | return hashCode; | 
|  | } | 
|  | @end | 
|  |  | 
|  | BOOL WeavePairingSessionLogStatusIsValidValue(WeavePairingSessionLogStatus value) { | 
|  | switch (value) { | 
|  | case WeavePairingSessionLogStatusUnknown: | 
|  | case WeavePairingSessionLogStatusSuccess: | 
|  | case WeavePairingSessionLogStatusFailure: | 
|  | return YES; | 
|  | default: | 
|  | return NO; | 
|  | } | 
|  | } | 
|  | @interface WeavePairingSessionLogBuilder() | 
|  | @property (strong) WeavePairingSessionLog* result; | 
|  | @end | 
|  |  | 
|  | @implementation WeavePairingSessionLogBuilder | 
|  | @synthesize result; | 
|  | - (id) init { | 
|  | if ((self = [super init])) { | 
|  | self.result = [[WeavePairingSessionLog alloc] init]; | 
|  | } | 
|  | return self; | 
|  | } | 
|  | - (PBGeneratedMessage*) internalGetResult { | 
|  | return result; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clear { | 
|  | self.result = [[WeavePairingSessionLog alloc] init]; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clone { | 
|  | return [WeavePairingSessionLog builderWithPrototype:result]; | 
|  | } | 
|  | - (WeavePairingSessionLog*) defaultInstance { | 
|  | return [WeavePairingSessionLog defaultInstance]; | 
|  | } | 
|  | - (WeavePairingSessionLog*) build { | 
|  | [self checkInitialized]; | 
|  | return [self buildPartial]; | 
|  | } | 
|  | - (WeavePairingSessionLog*) buildPartial { | 
|  | WeavePairingSessionLog* returnMe = result; | 
|  | self.result = nil; | 
|  | return returnMe; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) mergeFrom:(WeavePairingSessionLog*) other { | 
|  | if (other == [WeavePairingSessionLog defaultInstance]) { | 
|  | return self; | 
|  | } | 
|  | if (other.hasSessionStartTimestampMillis) { | 
|  | [self setSessionStartTimestampMillis:other.sessionStartTimestampMillis]; | 
|  | } | 
|  | if (other.hasSessionEndTimestampMillis) { | 
|  | [self setSessionEndTimestampMillis:other.sessionEndTimestampMillis]; | 
|  | } | 
|  | if (other.hasSessionStatus) { | 
|  | [self setSessionStatus:other.sessionStatus]; | 
|  | } | 
|  | if (other.hasSessionId) { | 
|  | [self setSessionId:other.sessionId]; | 
|  | } | 
|  | if (other.eventsArray.count > 0) { | 
|  | if (result.eventsArray == nil) { | 
|  | result.eventsArray = [[NSMutableArray alloc] initWithArray:other.eventsArray]; | 
|  | } else { | 
|  | [result.eventsArray addObjectsFromArray:other.eventsArray]; | 
|  | } | 
|  | } | 
|  | if (other.hasEnvironment) { | 
|  | [self mergeEnvironment:other.environment]; | 
|  | } | 
|  | if (other.hasJoiningDeviceIdentification) { | 
|  | [self mergeJoiningDeviceIdentification:other.joiningDeviceIdentification]; | 
|  | } | 
|  | if (other.hasJoiningDeviceSoftware) { | 
|  | [self mergeJoiningDeviceSoftware:other.joiningDeviceSoftware]; | 
|  | } | 
|  | if (other.hasAssistingDeviceIdentification) { | 
|  | [self mergeAssistingDeviceIdentification:other.assistingDeviceIdentification]; | 
|  | } | 
|  | if (other.hasAssistingDeviceSoftware) { | 
|  | [self mergeAssistingDeviceSoftware:other.assistingDeviceSoftware]; | 
|  | } | 
|  | if (other.hasAccountInfo) { | 
|  | [self mergeAccountInfo:other.accountInfo]; | 
|  | } | 
|  | if (other.hasFabricInfo) { | 
|  | [self mergeFabricInfo:other.fabricInfo]; | 
|  | } | 
|  | if (other.hasSessionStartTimestampIso8601) { | 
|  | [self setSessionStartTimestampIso8601:other.sessionStartTimestampIso8601]; | 
|  | } | 
|  | if (other.hasSessionEndTimestampIso8601) { | 
|  | [self setSessionEndTimestampIso8601:other.sessionEndTimestampIso8601]; | 
|  | } | 
|  | [self mergeUnknownFields:other.unknownFields]; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { | 
|  | return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { | 
|  | PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; | 
|  | while (YES) { | 
|  | SInt32 tag = [input readTag]; | 
|  | switch (tag) { | 
|  | case 0: | 
|  | [self setUnknownFields:[unknownFields build]]; | 
|  | return self; | 
|  | default: { | 
|  | if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { | 
|  | [self setUnknownFields:[unknownFields build]]; | 
|  | return self; | 
|  | } | 
|  | break; | 
|  | } | 
|  | case 8: { | 
|  | [self setSessionStartTimestampMillis:[input readSInt64]]; | 
|  | break; | 
|  | } | 
|  | case 16: { | 
|  | [self setSessionEndTimestampMillis:[input readSInt64]]; | 
|  | break; | 
|  | } | 
|  | case 24: { | 
|  | WeavePairingSessionLogStatus value = (WeavePairingSessionLogStatus)[input readEnum]; | 
|  | if (WeavePairingSessionLogStatusIsValidValue(value)) { | 
|  | [self setSessionStatus:value]; | 
|  | } else { | 
|  | [unknownFields mergeVarintField:3 value:value]; | 
|  | } | 
|  | break; | 
|  | } | 
|  | case 34: { | 
|  | [self setSessionId:[input readString]]; | 
|  | break; | 
|  | } | 
|  | case 42: { | 
|  | EventBuilder* subBuilder = [Event builder]; | 
|  | [input readMessage:subBuilder extensionRegistry:extensionRegistry]; | 
|  | [self addEvents:[subBuilder buildPartial]]; | 
|  | break; | 
|  | } | 
|  | case 50: { | 
|  | EnvironmentBuilder* subBuilder = [Environment builder]; | 
|  | if (self.hasEnvironment) { | 
|  | [subBuilder mergeFrom:self.environment]; | 
|  | } | 
|  | [input readMessage:subBuilder extensionRegistry:extensionRegistry]; | 
|  | [self setEnvironment:[subBuilder buildPartial]]; | 
|  | break; | 
|  | } | 
|  | case 58: { | 
|  | IdentificationProfileBuilder* subBuilder = [IdentificationProfile builder]; | 
|  | if (self.hasJoiningDeviceIdentification) { | 
|  | [subBuilder mergeFrom:self.joiningDeviceIdentification]; | 
|  | } | 
|  | [input readMessage:subBuilder extensionRegistry:extensionRegistry]; | 
|  | [self setJoiningDeviceIdentification:[subBuilder buildPartial]]; | 
|  | break; | 
|  | } | 
|  | case 66: { | 
|  | SoftwareProfileBuilder* subBuilder = [SoftwareProfile builder]; | 
|  | if (self.hasJoiningDeviceSoftware) { | 
|  | [subBuilder mergeFrom:self.joiningDeviceSoftware]; | 
|  | } | 
|  | [input readMessage:subBuilder extensionRegistry:extensionRegistry]; | 
|  | [self setJoiningDeviceSoftware:[subBuilder buildPartial]]; | 
|  | break; | 
|  | } | 
|  | case 74: { | 
|  | IdentificationProfileBuilder* subBuilder = [IdentificationProfile builder]; | 
|  | if (self.hasAssistingDeviceIdentification) { | 
|  | [subBuilder mergeFrom:self.assistingDeviceIdentification]; | 
|  | } | 
|  | [input readMessage:subBuilder extensionRegistry:extensionRegistry]; | 
|  | [self setAssistingDeviceIdentification:[subBuilder buildPartial]]; | 
|  | break; | 
|  | } | 
|  | case 82: { | 
|  | SoftwareProfileBuilder* subBuilder = [SoftwareProfile builder]; | 
|  | if (self.hasAssistingDeviceSoftware) { | 
|  | [subBuilder mergeFrom:self.assistingDeviceSoftware]; | 
|  | } | 
|  | [input readMessage:subBuilder extensionRegistry:extensionRegistry]; | 
|  | [self setAssistingDeviceSoftware:[subBuilder buildPartial]]; | 
|  | break; | 
|  | } | 
|  | case 90: { | 
|  | AccountInfoBuilder* subBuilder = [AccountInfo builder]; | 
|  | if (self.hasAccountInfo) { | 
|  | [subBuilder mergeFrom:self.accountInfo]; | 
|  | } | 
|  | [input readMessage:subBuilder extensionRegistry:extensionRegistry]; | 
|  | [self setAccountInfo:[subBuilder buildPartial]]; | 
|  | break; | 
|  | } | 
|  | case 98: { | 
|  | FabricInfoBuilder* subBuilder = [FabricInfo builder]; | 
|  | if (self.hasFabricInfo) { | 
|  | [subBuilder mergeFrom:self.fabricInfo]; | 
|  | } | 
|  | [input readMessage:subBuilder extensionRegistry:extensionRegistry]; | 
|  | [self setFabricInfo:[subBuilder buildPartial]]; | 
|  | break; | 
|  | } | 
|  | case 106: { | 
|  | [self setSessionStartTimestampIso8601:[input readString]]; | 
|  | break; | 
|  | } | 
|  | case 114: { | 
|  | [self setSessionEndTimestampIso8601:[input readString]]; | 
|  | break; | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  | - (BOOL) hasSessionStartTimestampMillis { | 
|  | return result.hasSessionStartTimestampMillis; | 
|  | } | 
|  | - (SInt64) sessionStartTimestampMillis { | 
|  | return result.sessionStartTimestampMillis; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setSessionStartTimestampMillis:(SInt64) value { | 
|  | result.hasSessionStartTimestampMillis = YES; | 
|  | result.sessionStartTimestampMillis = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearSessionStartTimestampMillis { | 
|  | result.hasSessionStartTimestampMillis = NO; | 
|  | result.sessionStartTimestampMillis = 0L; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasSessionEndTimestampMillis { | 
|  | return result.hasSessionEndTimestampMillis; | 
|  | } | 
|  | - (SInt64) sessionEndTimestampMillis { | 
|  | return result.sessionEndTimestampMillis; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setSessionEndTimestampMillis:(SInt64) value { | 
|  | result.hasSessionEndTimestampMillis = YES; | 
|  | result.sessionEndTimestampMillis = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearSessionEndTimestampMillis { | 
|  | result.hasSessionEndTimestampMillis = NO; | 
|  | result.sessionEndTimestampMillis = 0L; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasSessionStatus { | 
|  | return result.hasSessionStatus; | 
|  | } | 
|  | - (WeavePairingSessionLogStatus) sessionStatus { | 
|  | return result.sessionStatus; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setSessionStatus:(WeavePairingSessionLogStatus) value { | 
|  | result.hasSessionStatus = YES; | 
|  | result.sessionStatus = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearSessionStatus { | 
|  | result.hasSessionStatus = NO; | 
|  | result.sessionStatus = WeavePairingSessionLogStatusUnknown; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasSessionId { | 
|  | return result.hasSessionId; | 
|  | } | 
|  | - (NSString*) sessionId { | 
|  | return result.sessionId; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setSessionId:(NSString*) value { | 
|  | result.hasSessionId = YES; | 
|  | result.sessionId = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearSessionId { | 
|  | result.hasSessionId = NO; | 
|  | result.sessionId = @""; | 
|  | return self; | 
|  | } | 
|  | - (NSMutableArray *)events { | 
|  | return result.eventsArray; | 
|  | } | 
|  | - (Event*)eventsAtIndex:(NSUInteger)index { | 
|  | return [result eventsAtIndex:index]; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder *)addEvents:(Event*)value { | 
|  | if (result.eventsArray == nil) { | 
|  | result.eventsArray = [[NSMutableArray alloc]init]; | 
|  | } | 
|  | [result.eventsArray addObject:value]; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder *)setEventsArray:(NSArray *)array { | 
|  | result.eventsArray = [[NSMutableArray alloc]initWithArray:array]; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder *)clearEvents { | 
|  | result.eventsArray = nil; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasEnvironment { | 
|  | return result.hasEnvironment; | 
|  | } | 
|  | - (Environment*) environment { | 
|  | return result.environment; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setEnvironment:(Environment*) value { | 
|  | result.hasEnvironment = YES; | 
|  | result.environment = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setEnvironmentBuilder:(EnvironmentBuilder*) builderForValue { | 
|  | return [self setEnvironment:[builderForValue build]]; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) mergeEnvironment:(Environment*) value { | 
|  | if (result.hasEnvironment && | 
|  | result.environment != [Environment defaultInstance]) { | 
|  | result.environment = | 
|  | [[[Environment builderWithPrototype:result.environment] mergeFrom:value] buildPartial]; | 
|  | } else { | 
|  | result.environment = value; | 
|  | } | 
|  | result.hasEnvironment = YES; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearEnvironment { | 
|  | result.hasEnvironment = NO; | 
|  | result.environment = [Environment defaultInstance]; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasJoiningDeviceIdentification { | 
|  | return result.hasJoiningDeviceIdentification; | 
|  | } | 
|  | - (IdentificationProfile*) joiningDeviceIdentification { | 
|  | return result.joiningDeviceIdentification; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setJoiningDeviceIdentification:(IdentificationProfile*) value { | 
|  | result.hasJoiningDeviceIdentification = YES; | 
|  | result.joiningDeviceIdentification = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setJoiningDeviceIdentificationBuilder:(IdentificationProfileBuilder*) builderForValue { | 
|  | return [self setJoiningDeviceIdentification:[builderForValue build]]; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) mergeJoiningDeviceIdentification:(IdentificationProfile*) value { | 
|  | if (result.hasJoiningDeviceIdentification && | 
|  | result.joiningDeviceIdentification != [IdentificationProfile defaultInstance]) { | 
|  | result.joiningDeviceIdentification = | 
|  | [[[IdentificationProfile builderWithPrototype:result.joiningDeviceIdentification] mergeFrom:value] buildPartial]; | 
|  | } else { | 
|  | result.joiningDeviceIdentification = value; | 
|  | } | 
|  | result.hasJoiningDeviceIdentification = YES; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearJoiningDeviceIdentification { | 
|  | result.hasJoiningDeviceIdentification = NO; | 
|  | result.joiningDeviceIdentification = [IdentificationProfile defaultInstance]; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasJoiningDeviceSoftware { | 
|  | return result.hasJoiningDeviceSoftware; | 
|  | } | 
|  | - (SoftwareProfile*) joiningDeviceSoftware { | 
|  | return result.joiningDeviceSoftware; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setJoiningDeviceSoftware:(SoftwareProfile*) value { | 
|  | result.hasJoiningDeviceSoftware = YES; | 
|  | result.joiningDeviceSoftware = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setJoiningDeviceSoftwareBuilder:(SoftwareProfileBuilder*) builderForValue { | 
|  | return [self setJoiningDeviceSoftware:[builderForValue build]]; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) mergeJoiningDeviceSoftware:(SoftwareProfile*) value { | 
|  | if (result.hasJoiningDeviceSoftware && | 
|  | result.joiningDeviceSoftware != [SoftwareProfile defaultInstance]) { | 
|  | result.joiningDeviceSoftware = | 
|  | [[[SoftwareProfile builderWithPrototype:result.joiningDeviceSoftware] mergeFrom:value] buildPartial]; | 
|  | } else { | 
|  | result.joiningDeviceSoftware = value; | 
|  | } | 
|  | result.hasJoiningDeviceSoftware = YES; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearJoiningDeviceSoftware { | 
|  | result.hasJoiningDeviceSoftware = NO; | 
|  | result.joiningDeviceSoftware = [SoftwareProfile defaultInstance]; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasAssistingDeviceIdentification { | 
|  | return result.hasAssistingDeviceIdentification; | 
|  | } | 
|  | - (IdentificationProfile*) assistingDeviceIdentification { | 
|  | return result.assistingDeviceIdentification; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setAssistingDeviceIdentification:(IdentificationProfile*) value { | 
|  | result.hasAssistingDeviceIdentification = YES; | 
|  | result.assistingDeviceIdentification = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setAssistingDeviceIdentificationBuilder:(IdentificationProfileBuilder*) builderForValue { | 
|  | return [self setAssistingDeviceIdentification:[builderForValue build]]; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) mergeAssistingDeviceIdentification:(IdentificationProfile*) value { | 
|  | if (result.hasAssistingDeviceIdentification && | 
|  | result.assistingDeviceIdentification != [IdentificationProfile defaultInstance]) { | 
|  | result.assistingDeviceIdentification = | 
|  | [[[IdentificationProfile builderWithPrototype:result.assistingDeviceIdentification] mergeFrom:value] buildPartial]; | 
|  | } else { | 
|  | result.assistingDeviceIdentification = value; | 
|  | } | 
|  | result.hasAssistingDeviceIdentification = YES; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearAssistingDeviceIdentification { | 
|  | result.hasAssistingDeviceIdentification = NO; | 
|  | result.assistingDeviceIdentification = [IdentificationProfile defaultInstance]; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasAssistingDeviceSoftware { | 
|  | return result.hasAssistingDeviceSoftware; | 
|  | } | 
|  | - (SoftwareProfile*) assistingDeviceSoftware { | 
|  | return result.assistingDeviceSoftware; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setAssistingDeviceSoftware:(SoftwareProfile*) value { | 
|  | result.hasAssistingDeviceSoftware = YES; | 
|  | result.assistingDeviceSoftware = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setAssistingDeviceSoftwareBuilder:(SoftwareProfileBuilder*) builderForValue { | 
|  | return [self setAssistingDeviceSoftware:[builderForValue build]]; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) mergeAssistingDeviceSoftware:(SoftwareProfile*) value { | 
|  | if (result.hasAssistingDeviceSoftware && | 
|  | result.assistingDeviceSoftware != [SoftwareProfile defaultInstance]) { | 
|  | result.assistingDeviceSoftware = | 
|  | [[[SoftwareProfile builderWithPrototype:result.assistingDeviceSoftware] mergeFrom:value] buildPartial]; | 
|  | } else { | 
|  | result.assistingDeviceSoftware = value; | 
|  | } | 
|  | result.hasAssistingDeviceSoftware = YES; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearAssistingDeviceSoftware { | 
|  | result.hasAssistingDeviceSoftware = NO; | 
|  | result.assistingDeviceSoftware = [SoftwareProfile defaultInstance]; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasAccountInfo { | 
|  | return result.hasAccountInfo; | 
|  | } | 
|  | - (AccountInfo*) accountInfo { | 
|  | return result.accountInfo; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setAccountInfo:(AccountInfo*) value { | 
|  | result.hasAccountInfo = YES; | 
|  | result.accountInfo = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setAccountInfoBuilder:(AccountInfoBuilder*) builderForValue { | 
|  | return [self setAccountInfo:[builderForValue build]]; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) mergeAccountInfo:(AccountInfo*) value { | 
|  | if (result.hasAccountInfo && | 
|  | result.accountInfo != [AccountInfo defaultInstance]) { | 
|  | result.accountInfo = | 
|  | [[[AccountInfo builderWithPrototype:result.accountInfo] mergeFrom:value] buildPartial]; | 
|  | } else { | 
|  | result.accountInfo = value; | 
|  | } | 
|  | result.hasAccountInfo = YES; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearAccountInfo { | 
|  | result.hasAccountInfo = NO; | 
|  | result.accountInfo = [AccountInfo defaultInstance]; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasFabricInfo { | 
|  | return result.hasFabricInfo; | 
|  | } | 
|  | - (FabricInfo*) fabricInfo { | 
|  | return result.fabricInfo; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setFabricInfo:(FabricInfo*) value { | 
|  | result.hasFabricInfo = YES; | 
|  | result.fabricInfo = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setFabricInfoBuilder:(FabricInfoBuilder*) builderForValue { | 
|  | return [self setFabricInfo:[builderForValue build]]; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) mergeFabricInfo:(FabricInfo*) value { | 
|  | if (result.hasFabricInfo && | 
|  | result.fabricInfo != [FabricInfo defaultInstance]) { | 
|  | result.fabricInfo = | 
|  | [[[FabricInfo builderWithPrototype:result.fabricInfo] mergeFrom:value] buildPartial]; | 
|  | } else { | 
|  | result.fabricInfo = value; | 
|  | } | 
|  | result.hasFabricInfo = YES; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearFabricInfo { | 
|  | result.hasFabricInfo = NO; | 
|  | result.fabricInfo = [FabricInfo defaultInstance]; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasSessionStartTimestampIso8601 { | 
|  | return result.hasSessionStartTimestampIso8601; | 
|  | } | 
|  | - (NSString*) sessionStartTimestampIso8601 { | 
|  | return result.sessionStartTimestampIso8601; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setSessionStartTimestampIso8601:(NSString*) value { | 
|  | result.hasSessionStartTimestampIso8601 = YES; | 
|  | result.sessionStartTimestampIso8601 = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearSessionStartTimestampIso8601 { | 
|  | result.hasSessionStartTimestampIso8601 = NO; | 
|  | result.sessionStartTimestampIso8601 = @""; | 
|  | return self; | 
|  | } | 
|  | - (BOOL) hasSessionEndTimestampIso8601 { | 
|  | return result.hasSessionEndTimestampIso8601; | 
|  | } | 
|  | - (NSString*) sessionEndTimestampIso8601 { | 
|  | return result.sessionEndTimestampIso8601; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) setSessionEndTimestampIso8601:(NSString*) value { | 
|  | result.hasSessionEndTimestampIso8601 = YES; | 
|  | result.sessionEndTimestampIso8601 = value; | 
|  | return self; | 
|  | } | 
|  | - (WeavePairingSessionLogBuilder*) clearSessionEndTimestampIso8601 { | 
|  | result.hasSessionEndTimestampIso8601 = NO; | 
|  | result.sessionEndTimestampIso8601 = @""; | 
|  | return self; | 
|  | } | 
|  | @end | 
|  |  | 
|  |  | 
|  | // @@protoc_insertion_point(global_scope) |