// This file was automatically generated by protocompiler
// DO NOT EDIT!
// Compiled from stdin

#import "AWDIPConfigurationIPv6Report.h"
#import <ProtocolBuffer/PBConstants.h>
#import <ProtocolBuffer/PBHashUtil.h>
#import <ProtocolBuffer/PBDataReader.h>

@implementation AWDIPConfigurationIPv6Report

- (void)dealloc
{
    self.apnName = nil;
    [super dealloc];
}

@synthesize timestamp = _timestamp;
- (void)setTimestamp:(uint64_t)v
{
    _has.timestamp = YES;
    _timestamp = v;
}
- (void)setHasTimestamp:(BOOL)f
{
    _has.timestamp = f;
}
- (BOOL)hasTimestamp
{
    return _has.timestamp;
}
@synthesize interfaceType = _interfaceType;
- (AWDIPConfigurationInterfaceType)interfaceType
{
    return _has.interfaceType ? _interfaceType : AWDIPConfigurationInterfaceType_IPCONFIGURATION_INTERFACE_TYPE_OTHER;
}
- (void)setInterfaceType:(AWDIPConfigurationInterfaceType)v
{
    _has.interfaceType = YES;
    _interfaceType = v;
}
- (void)setHasInterfaceType:(BOOL)f
{
    _has.interfaceType = f;
}
- (BOOL)hasInterfaceType
{
    return _has.interfaceType;
}
- (NSString *)interfaceTypeAsString:(AWDIPConfigurationInterfaceType)value
{
    return AWDIPConfigurationInterfaceTypeAsString(value);
}
- (AWDIPConfigurationInterfaceType)StringAsInterfaceType:(NSString *)str
{
    return StringAsAWDIPConfigurationInterfaceType(str);
}
- (BOOL)hasApnName
{
    return _apnName != nil;
}
@synthesize apnName = _apnName;
@synthesize linklocalAddressDuplicated = _linklocalAddressDuplicated;
- (void)setLinklocalAddressDuplicated:(BOOL)v
{
    _has.linklocalAddressDuplicated = YES;
    _linklocalAddressDuplicated = v;
}
- (void)setHasLinklocalAddressDuplicated:(BOOL)f
{
    _has.linklocalAddressDuplicated = f;
}
- (BOOL)hasLinklocalAddressDuplicated
{
    return _has.linklocalAddressDuplicated;
}
@synthesize autoconfAddressDuplicated = _autoconfAddressDuplicated;
- (void)setAutoconfAddressDuplicated:(BOOL)v
{
    _has.autoconfAddressDuplicated = YES;
    _autoconfAddressDuplicated = v;
}
- (void)setHasAutoconfAddressDuplicated:(BOOL)f
{
    _has.autoconfAddressDuplicated = f;
}
- (BOOL)hasAutoconfAddressDuplicated
{
    return _has.autoconfAddressDuplicated;
}
@synthesize autoconfAddressDeprecated = _autoconfAddressDeprecated;
- (void)setAutoconfAddressDeprecated:(BOOL)v
{
    _has.autoconfAddressDeprecated = YES;
    _autoconfAddressDeprecated = v;
}
- (void)setHasAutoconfAddressDeprecated:(BOOL)f
{
    _has.autoconfAddressDeprecated = f;
}
- (BOOL)hasAutoconfAddressDeprecated
{
    return _has.autoconfAddressDeprecated;
}
@synthesize autoconfAddressDetached = _autoconfAddressDetached;
- (void)setAutoconfAddressDetached:(BOOL)v
{
    _has.autoconfAddressDetached = YES;
    _autoconfAddressDetached = v;
}
- (void)setHasAutoconfAddressDetached:(BOOL)f
{
    _has.autoconfAddressDetached = f;
}
- (BOOL)hasAutoconfAddressDetached
{
    return _has.autoconfAddressDetached;
}
@synthesize autoconfAddressAcquired = _autoconfAddressAcquired;
- (void)setAutoconfAddressAcquired:(BOOL)v
{
    _has.autoconfAddressAcquired = YES;
    _autoconfAddressAcquired = v;
}
- (void)setHasAutoconfAddressAcquired:(BOOL)f
{
    _has.autoconfAddressAcquired = f;
}
- (BOOL)hasAutoconfAddressAcquired
{
    return _has.autoconfAddressAcquired;
}
@synthesize autoconfRestarted = _autoconfRestarted;
- (void)setAutoconfRestarted:(BOOL)v
{
    _has.autoconfRestarted = YES;
    _autoconfRestarted = v;
}
- (void)setHasAutoconfRestarted:(BOOL)f
{
    _has.autoconfRestarted = f;
}
- (BOOL)hasAutoconfRestarted
{
    return _has.autoconfRestarted;
}
@synthesize autoconfRdnss = _autoconfRdnss;
- (void)setAutoconfRdnss:(BOOL)v
{
    _has.autoconfRdnss = YES;
    _autoconfRdnss = v;
}
- (void)setHasAutoconfRdnss:(BOOL)f
{
    _has.autoconfRdnss = f;
}
- (BOOL)hasAutoconfRdnss
{
    return _has.autoconfRdnss;
}
@synthesize autoconfDnssl = _autoconfDnssl;
- (void)setAutoconfDnssl:(BOOL)v
{
    _has.autoconfDnssl = YES;
    _autoconfDnssl = v;
}
- (void)setHasAutoconfDnssl:(BOOL)f
{
    _has.autoconfDnssl = f;
}
- (BOOL)hasAutoconfDnssl
{
    return _has.autoconfDnssl;
}
@synthesize dhcpv6AddressAcquired = _dhcpv6AddressAcquired;
- (void)setDhcpv6AddressAcquired:(BOOL)v
{
    _has.dhcpv6AddressAcquired = YES;
    _dhcpv6AddressAcquired = v;
}
- (void)setHasDhcpv6AddressAcquired:(BOOL)f
{
    _has.dhcpv6AddressAcquired = f;
}
- (BOOL)hasDhcpv6AddressAcquired
{
    return _has.dhcpv6AddressAcquired;
}
@synthesize dhcpv6DnsServers = _dhcpv6DnsServers;
- (void)setDhcpv6DnsServers:(BOOL)v
{
    _has.dhcpv6DnsServers = YES;
    _dhcpv6DnsServers = v;
}
- (void)setHasDhcpv6DnsServers:(BOOL)f
{
    _has.dhcpv6DnsServers = f;
}
- (BOOL)hasDhcpv6DnsServers
{
    return _has.dhcpv6DnsServers;
}
@synthesize dhcpv6DnsDomainList = _dhcpv6DnsDomainList;
- (void)setDhcpv6DnsDomainList:(BOOL)v
{
    _has.dhcpv6DnsDomainList = YES;
    _dhcpv6DnsDomainList = v;
}
- (void)setHasDhcpv6DnsDomainList:(BOOL)f
{
    _has.dhcpv6DnsDomainList = f;
}
- (BOOL)hasDhcpv6DnsDomainList
{
    return _has.dhcpv6DnsDomainList;
}
@synthesize manualAddressConfigured = _manualAddressConfigured;
- (void)setManualAddressConfigured:(BOOL)v
{
    _has.manualAddressConfigured = YES;
    _manualAddressConfigured = v;
}
- (void)setHasManualAddressConfigured:(BOOL)f
{
    _has.manualAddressConfigured = f;
}
- (BOOL)hasManualAddressConfigured
{
    return _has.manualAddressConfigured;
}
@synthesize prefixLifetimeNotInfinite = _prefixLifetimeNotInfinite;
- (void)setPrefixLifetimeNotInfinite:(BOOL)v
{
    _has.prefixLifetimeNotInfinite = YES;
    _prefixLifetimeNotInfinite = v;
}
- (void)setHasPrefixLifetimeNotInfinite:(BOOL)f
{
    _has.prefixLifetimeNotInfinite = f;
}
- (BOOL)hasPrefixLifetimeNotInfinite
{
    return _has.prefixLifetimeNotInfinite;
}
@synthesize routerLifetimeNotMaximum = _routerLifetimeNotMaximum;
- (void)setRouterLifetimeNotMaximum:(BOOL)v
{
    _has.routerLifetimeNotMaximum = YES;
    _routerLifetimeNotMaximum = v;
}
- (void)setHasRouterLifetimeNotMaximum:(BOOL)f
{
    _has.routerLifetimeNotMaximum = f;
}
- (BOOL)hasRouterLifetimeNotMaximum
{
    return _has.routerLifetimeNotMaximum;
}
@synthesize routerSourceAddressCollision = _routerSourceAddressCollision;
- (void)setRouterSourceAddressCollision:(BOOL)v
{
    _has.routerSourceAddressCollision = YES;
    _routerSourceAddressCollision = v;
}
- (void)setHasRouterSourceAddressCollision:(BOOL)f
{
    _has.routerSourceAddressCollision = f;
}
- (BOOL)hasRouterSourceAddressCollision
{
    return _has.routerSourceAddressCollision;
}
@synthesize routerLifetimeZero = _routerLifetimeZero;
- (void)setRouterLifetimeZero:(BOOL)v
{
    _has.routerLifetimeZero = YES;
    _routerLifetimeZero = v;
}
- (void)setHasRouterLifetimeZero:(BOOL)f
{
    _has.routerLifetimeZero = f;
}
- (BOOL)hasRouterLifetimeZero
{
    return _has.routerLifetimeZero;
}
@synthesize defaultRouterCount = _defaultRouterCount;
- (void)setDefaultRouterCount:(uint32_t)v
{
    _has.defaultRouterCount = YES;
    _defaultRouterCount = v;
}
- (void)setHasDefaultRouterCount:(BOOL)f
{
    _has.defaultRouterCount = f;
}
- (BOOL)hasDefaultRouterCount
{
    return _has.defaultRouterCount;
}
@synthesize expiredDefaultRouterCount = _expiredDefaultRouterCount;
- (void)setExpiredDefaultRouterCount:(uint32_t)v
{
    _has.expiredDefaultRouterCount = YES;
    _expiredDefaultRouterCount = v;
}
- (void)setHasExpiredDefaultRouterCount:(BOOL)f
{
    _has.expiredDefaultRouterCount = f;
}
- (BOOL)hasExpiredDefaultRouterCount
{
    return _has.expiredDefaultRouterCount;
}
@synthesize prefixCount = _prefixCount;
- (void)setPrefixCount:(uint32_t)v
{
    _has.prefixCount = YES;
    _prefixCount = v;
}
- (void)setHasPrefixCount:(BOOL)f
{
    _has.prefixCount = f;
}
- (BOOL)hasPrefixCount
{
    return _has.prefixCount;
}
@synthesize expiredPrefixCount = _expiredPrefixCount;
- (void)setExpiredPrefixCount:(uint32_t)v
{
    _has.expiredPrefixCount = YES;
    _expiredPrefixCount = v;
}
- (void)setHasExpiredPrefixCount:(BOOL)f
{
    _has.expiredPrefixCount = f;
}
- (BOOL)hasExpiredPrefixCount
{
    return _has.expiredPrefixCount;
}
@synthesize routerSolicitationCount = _routerSolicitationCount;
- (void)setRouterSolicitationCount:(uint32_t)v
{
    _has.routerSolicitationCount = YES;
    _routerSolicitationCount = v;
}
- (void)setHasRouterSolicitationCount:(BOOL)f
{
    _has.routerSolicitationCount = f;
}
- (BOOL)hasRouterSolicitationCount
{
    return _has.routerSolicitationCount;
}
@synthesize controlQueueUnsentCount = _controlQueueUnsentCount;
- (void)setControlQueueUnsentCount:(uint32_t)v
{
    _has.controlQueueUnsentCount = YES;
    _controlQueueUnsentCount = v;
}
- (void)setHasControlQueueUnsentCount:(BOOL)f
{
    _has.controlQueueUnsentCount = f;
}
- (BOOL)hasControlQueueUnsentCount
{
    return _has.controlQueueUnsentCount;
}
@synthesize autoconfAddressAcquisitionSeconds = _autoconfAddressAcquisitionSeconds;
- (void)setAutoconfAddressAcquisitionSeconds:(uint32_t)v
{
    _has.autoconfAddressAcquisitionSeconds = YES;
    _autoconfAddressAcquisitionSeconds = v;
}
- (void)setHasAutoconfAddressAcquisitionSeconds:(BOOL)f
{
    _has.autoconfAddressAcquisitionSeconds = f;
}
- (BOOL)hasAutoconfAddressAcquisitionSeconds
{
    return _has.autoconfAddressAcquisitionSeconds;
}
@synthesize dhcpv6AddressAcquisitionSeconds = _dhcpv6AddressAcquisitionSeconds;
- (void)setDhcpv6AddressAcquisitionSeconds:(uint32_t)v
{
    _has.dhcpv6AddressAcquisitionSeconds = YES;
    _dhcpv6AddressAcquisitionSeconds = v;
}
- (void)setHasDhcpv6AddressAcquisitionSeconds:(BOOL)f
{
    _has.dhcpv6AddressAcquisitionSeconds = f;
}
- (BOOL)hasDhcpv6AddressAcquisitionSeconds
{
    return _has.dhcpv6AddressAcquisitionSeconds;
}
@synthesize dnsConfigurationAcquisitionSeconds = _dnsConfigurationAcquisitionSeconds;
- (void)setDnsConfigurationAcquisitionSeconds:(uint32_t)v
{
    _has.dnsConfigurationAcquisitionSeconds = YES;
    _dnsConfigurationAcquisitionSeconds = v;
}
- (void)setHasDnsConfigurationAcquisitionSeconds:(BOOL)f
{
    _has.dnsConfigurationAcquisitionSeconds = f;
}
- (BOOL)hasDnsConfigurationAcquisitionSeconds
{
    return _has.dnsConfigurationAcquisitionSeconds;
}
@synthesize prefixPreferredLifetimeSeconds = _prefixPreferredLifetimeSeconds;
- (void)setPrefixPreferredLifetimeSeconds:(uint32_t)v
{
    _has.prefixPreferredLifetimeSeconds = YES;
    _prefixPreferredLifetimeSeconds = v;
}
- (void)setHasPrefixPreferredLifetimeSeconds:(BOOL)f
{
    _has.prefixPreferredLifetimeSeconds = f;
}
- (BOOL)hasPrefixPreferredLifetimeSeconds
{
    return _has.prefixPreferredLifetimeSeconds;
}
@synthesize prefixValidLifetimeSeconds = _prefixValidLifetimeSeconds;
- (void)setPrefixValidLifetimeSeconds:(uint32_t)v
{
    _has.prefixValidLifetimeSeconds = YES;
    _prefixValidLifetimeSeconds = v;
}
- (void)setHasPrefixValidLifetimeSeconds:(BOOL)f
{
    _has.prefixValidLifetimeSeconds = f;
}
- (BOOL)hasPrefixValidLifetimeSeconds
{
    return _has.prefixValidLifetimeSeconds;
}
@synthesize routerLifetimeSeconds = _routerLifetimeSeconds;
- (void)setRouterLifetimeSeconds:(uint32_t)v
{
    _has.routerLifetimeSeconds = YES;
    _routerLifetimeSeconds = v;
}
- (void)setHasRouterLifetimeSeconds:(BOOL)f
{
    _has.routerLifetimeSeconds = f;
}
- (BOOL)hasRouterLifetimeSeconds
{
    return _has.routerLifetimeSeconds;
}
@synthesize xlat464Enabled = _xlat464Enabled;
- (void)setXlat464Enabled:(BOOL)v
{
    _has.xlat464Enabled = YES;
    _xlat464Enabled = v;
}
- (void)setHasXlat464Enabled:(BOOL)f
{
    _has.xlat464Enabled = f;
}
- (BOOL)hasXlat464Enabled
{
    return _has.xlat464Enabled;
}
@synthesize xlat464PlatDiscoveryFailed = _xlat464PlatDiscoveryFailed;
- (void)setXlat464PlatDiscoveryFailed:(BOOL)v
{
    _has.xlat464PlatDiscoveryFailed = YES;
    _xlat464PlatDiscoveryFailed = v;
}
- (void)setHasXlat464PlatDiscoveryFailed:(BOOL)f
{
    _has.xlat464PlatDiscoveryFailed = f;
}
- (BOOL)hasXlat464PlatDiscoveryFailed
{
    return _has.xlat464PlatDiscoveryFailed;
}

- (NSString *)description
{
    return [NSString stringWithFormat:@"%@ %@", [super description], [self dictionaryRepresentation]];
}

- (NSDictionary *)dictionaryRepresentation
{
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    if (self->_has.timestamp)
    {
        [dict setObject:[NSNumber numberWithUnsignedLongLong:self->_timestamp] forKey:@"timestamp"];
    }
    if (self->_has.interfaceType)
    {
        [dict setObject:AWDIPConfigurationInterfaceTypeAsString(self->_interfaceType) forKey:@"interface_type"];
    }
    if (self->_apnName)
    {
        [dict setObject:self->_apnName forKey:@"apn_name"];
    }
    if (self->_has.linklocalAddressDuplicated)
    {
        [dict setObject:[NSNumber numberWithBool:self->_linklocalAddressDuplicated] forKey:@"linklocal_address_duplicated"];
    }
    if (self->_has.autoconfAddressDuplicated)
    {
        [dict setObject:[NSNumber numberWithBool:self->_autoconfAddressDuplicated] forKey:@"autoconf_address_duplicated"];
    }
    if (self->_has.autoconfAddressDeprecated)
    {
        [dict setObject:[NSNumber numberWithBool:self->_autoconfAddressDeprecated] forKey:@"autoconf_address_deprecated"];
    }
    if (self->_has.autoconfAddressDetached)
    {
        [dict setObject:[NSNumber numberWithBool:self->_autoconfAddressDetached] forKey:@"autoconf_address_detached"];
    }
    if (self->_has.autoconfAddressAcquired)
    {
        [dict setObject:[NSNumber numberWithBool:self->_autoconfAddressAcquired] forKey:@"autoconf_address_acquired"];
    }
    if (self->_has.autoconfRestarted)
    {
        [dict setObject:[NSNumber numberWithBool:self->_autoconfRestarted] forKey:@"autoconf_restarted"];
    }
    if (self->_has.autoconfRdnss)
    {
        [dict setObject:[NSNumber numberWithBool:self->_autoconfRdnss] forKey:@"autoconf_rdnss"];
    }
    if (self->_has.autoconfDnssl)
    {
        [dict setObject:[NSNumber numberWithBool:self->_autoconfDnssl] forKey:@"autoconf_dnssl"];
    }
    if (self->_has.dhcpv6AddressAcquired)
    {
        [dict setObject:[NSNumber numberWithBool:self->_dhcpv6AddressAcquired] forKey:@"dhcpv6_address_acquired"];
    }
    if (self->_has.dhcpv6DnsServers)
    {
        [dict setObject:[NSNumber numberWithBool:self->_dhcpv6DnsServers] forKey:@"dhcpv6_dns_servers"];
    }
    if (self->_has.dhcpv6DnsDomainList)
    {
        [dict setObject:[NSNumber numberWithBool:self->_dhcpv6DnsDomainList] forKey:@"dhcpv6_dns_domain_list"];
    }
    if (self->_has.manualAddressConfigured)
    {
        [dict setObject:[NSNumber numberWithBool:self->_manualAddressConfigured] forKey:@"manual_address_configured"];
    }
    if (self->_has.prefixLifetimeNotInfinite)
    {
        [dict setObject:[NSNumber numberWithBool:self->_prefixLifetimeNotInfinite] forKey:@"prefix_lifetime_not_infinite"];
    }
    if (self->_has.routerLifetimeNotMaximum)
    {
        [dict setObject:[NSNumber numberWithBool:self->_routerLifetimeNotMaximum] forKey:@"router_lifetime_not_maximum"];
    }
    if (self->_has.routerSourceAddressCollision)
    {
        [dict setObject:[NSNumber numberWithBool:self->_routerSourceAddressCollision] forKey:@"router_source_address_collision"];
    }
    if (self->_has.routerLifetimeZero)
    {
        [dict setObject:[NSNumber numberWithBool:self->_routerLifetimeZero] forKey:@"router_lifetime_zero"];
    }
    if (self->_has.defaultRouterCount)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_defaultRouterCount] forKey:@"default_router_count"];
    }
    if (self->_has.expiredDefaultRouterCount)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_expiredDefaultRouterCount] forKey:@"expired_default_router_count"];
    }
    if (self->_has.prefixCount)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_prefixCount] forKey:@"prefix_count"];
    }
    if (self->_has.expiredPrefixCount)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_expiredPrefixCount] forKey:@"expired_prefix_count"];
    }
    if (self->_has.routerSolicitationCount)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_routerSolicitationCount] forKey:@"router_solicitation_count"];
    }
    if (self->_has.controlQueueUnsentCount)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_controlQueueUnsentCount] forKey:@"control_queue_unsent_count"];
    }
    if (self->_has.autoconfAddressAcquisitionSeconds)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_autoconfAddressAcquisitionSeconds] forKey:@"autoconf_address_acquisition_seconds"];
    }
    if (self->_has.dhcpv6AddressAcquisitionSeconds)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_dhcpv6AddressAcquisitionSeconds] forKey:@"dhcpv6_address_acquisition_seconds"];
    }
    if (self->_has.dnsConfigurationAcquisitionSeconds)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_dnsConfigurationAcquisitionSeconds] forKey:@"dns_configuration_acquisition_seconds"];
    }
    if (self->_has.prefixPreferredLifetimeSeconds)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_prefixPreferredLifetimeSeconds] forKey:@"prefix_preferred_lifetime_seconds"];
    }
    if (self->_has.prefixValidLifetimeSeconds)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_prefixValidLifetimeSeconds] forKey:@"prefix_valid_lifetime_seconds"];
    }
    if (self->_has.routerLifetimeSeconds)
    {
        [dict setObject:[NSNumber numberWithUnsignedInt:self->_routerLifetimeSeconds] forKey:@"router_lifetime_seconds"];
    }
    if (self->_has.xlat464Enabled)
    {
        [dict setObject:[NSNumber numberWithBool:self->_xlat464Enabled] forKey:@"xlat464_enabled"];
    }
    if (self->_has.xlat464PlatDiscoveryFailed)
    {
        [dict setObject:[NSNumber numberWithBool:self->_xlat464PlatDiscoveryFailed] forKey:@"xlat464_plat_discovery_failed"];
    }
    return dict;
}

BOOL AWDIPConfigurationIPv6ReportReadFrom(AWDIPConfigurationIPv6Report *self, PBDataReader *reader) {
    while (PBReaderHasMoreData(reader)) {
        uint32_t tag = 0;
        uint8_t aType = 0;

        PBReaderReadTag32AndType(reader, &tag, &aType);

        if (PBReaderHasError(reader))
            break;

        if (aType == TYPE_END_GROUP) {
            break;
        }

        switch (tag) {

            case 1 /* timestamp */:
            {
                self->_has.timestamp = YES;
                self->_timestamp = PBReaderReadUint64(reader);
            }
            break;
            case 2 /* interfaceType */:
            {
                self->_has.interfaceType = YES;
                self->_interfaceType = PBReaderReadInt32(reader);
            }
            break;
            case 3 /* apnName */:
            {
                NSString *new_apnName = PBReaderReadString(reader);
                [self->_apnName release];
                self->_apnName = [new_apnName retain];
            }
            break;
            case 4 /* linklocalAddressDuplicated */:
            {
                self->_has.linklocalAddressDuplicated = YES;
                self->_linklocalAddressDuplicated = PBReaderReadBOOL(reader);
            }
            break;
            case 5 /* autoconfAddressDuplicated */:
            {
                self->_has.autoconfAddressDuplicated = YES;
                self->_autoconfAddressDuplicated = PBReaderReadBOOL(reader);
            }
            break;
            case 6 /* autoconfAddressDeprecated */:
            {
                self->_has.autoconfAddressDeprecated = YES;
                self->_autoconfAddressDeprecated = PBReaderReadBOOL(reader);
            }
            break;
            case 7 /* autoconfAddressDetached */:
            {
                self->_has.autoconfAddressDetached = YES;
                self->_autoconfAddressDetached = PBReaderReadBOOL(reader);
            }
            break;
            case 8 /* autoconfAddressAcquired */:
            {
                self->_has.autoconfAddressAcquired = YES;
                self->_autoconfAddressAcquired = PBReaderReadBOOL(reader);
            }
            break;
            case 9 /* autoconfRestarted */:
            {
                self->_has.autoconfRestarted = YES;
                self->_autoconfRestarted = PBReaderReadBOOL(reader);
            }
            break;
            case 10 /* autoconfRdnss */:
            {
                self->_has.autoconfRdnss = YES;
                self->_autoconfRdnss = PBReaderReadBOOL(reader);
            }
            break;
            case 11 /* autoconfDnssl */:
            {
                self->_has.autoconfDnssl = YES;
                self->_autoconfDnssl = PBReaderReadBOOL(reader);
            }
            break;
            case 12 /* dhcpv6AddressAcquired */:
            {
                self->_has.dhcpv6AddressAcquired = YES;
                self->_dhcpv6AddressAcquired = PBReaderReadBOOL(reader);
            }
            break;
            case 13 /* dhcpv6DnsServers */:
            {
                self->_has.dhcpv6DnsServers = YES;
                self->_dhcpv6DnsServers = PBReaderReadBOOL(reader);
            }
            break;
            case 14 /* dhcpv6DnsDomainList */:
            {
                self->_has.dhcpv6DnsDomainList = YES;
                self->_dhcpv6DnsDomainList = PBReaderReadBOOL(reader);
            }
            break;
            case 15 /* manualAddressConfigured */:
            {
                self->_has.manualAddressConfigured = YES;
                self->_manualAddressConfigured = PBReaderReadBOOL(reader);
            }
            break;
            case 16 /* prefixLifetimeNotInfinite */:
            {
                self->_has.prefixLifetimeNotInfinite = YES;
                self->_prefixLifetimeNotInfinite = PBReaderReadBOOL(reader);
            }
            break;
            case 17 /* routerLifetimeNotMaximum */:
            {
                self->_has.routerLifetimeNotMaximum = YES;
                self->_routerLifetimeNotMaximum = PBReaderReadBOOL(reader);
            }
            break;
            case 18 /* routerSourceAddressCollision */:
            {
                self->_has.routerSourceAddressCollision = YES;
                self->_routerSourceAddressCollision = PBReaderReadBOOL(reader);
            }
            break;
            case 19 /* routerLifetimeZero */:
            {
                self->_has.routerLifetimeZero = YES;
                self->_routerLifetimeZero = PBReaderReadBOOL(reader);
            }
            break;
            case 20 /* defaultRouterCount */:
            {
                self->_has.defaultRouterCount = YES;
                self->_defaultRouterCount = PBReaderReadUint32(reader);
            }
            break;
            case 21 /* expiredDefaultRouterCount */:
            {
                self->_has.expiredDefaultRouterCount = YES;
                self->_expiredDefaultRouterCount = PBReaderReadUint32(reader);
            }
            break;
            case 22 /* prefixCount */:
            {
                self->_has.prefixCount = YES;
                self->_prefixCount = PBReaderReadUint32(reader);
            }
            break;
            case 23 /* expiredPrefixCount */:
            {
                self->_has.expiredPrefixCount = YES;
                self->_expiredPrefixCount = PBReaderReadUint32(reader);
            }
            break;
            case 24 /* routerSolicitationCount */:
            {
                self->_has.routerSolicitationCount = YES;
                self->_routerSolicitationCount = PBReaderReadUint32(reader);
            }
            break;
            case 25 /* controlQueueUnsentCount */:
            {
                self->_has.controlQueueUnsentCount = YES;
                self->_controlQueueUnsentCount = PBReaderReadUint32(reader);
            }
            break;
            case 26 /* autoconfAddressAcquisitionSeconds */:
            {
                self->_has.autoconfAddressAcquisitionSeconds = YES;
                self->_autoconfAddressAcquisitionSeconds = PBReaderReadUint32(reader);
            }
            break;
            case 27 /* dhcpv6AddressAcquisitionSeconds */:
            {
                self->_has.dhcpv6AddressAcquisitionSeconds = YES;
                self->_dhcpv6AddressAcquisitionSeconds = PBReaderReadUint32(reader);
            }
            break;
            case 28 /* dnsConfigurationAcquisitionSeconds */:
            {
                self->_has.dnsConfigurationAcquisitionSeconds = YES;
                self->_dnsConfigurationAcquisitionSeconds = PBReaderReadUint32(reader);
            }
            break;
            case 29 /* prefixPreferredLifetimeSeconds */:
            {
                self->_has.prefixPreferredLifetimeSeconds = YES;
                self->_prefixPreferredLifetimeSeconds = PBReaderReadUint32(reader);
            }
            break;
            case 30 /* prefixValidLifetimeSeconds */:
            {
                self->_has.prefixValidLifetimeSeconds = YES;
                self->_prefixValidLifetimeSeconds = PBReaderReadUint32(reader);
            }
            break;
            case 31 /* routerLifetimeSeconds */:
            {
                self->_has.routerLifetimeSeconds = YES;
                self->_routerLifetimeSeconds = PBReaderReadUint32(reader);
            }
            break;
            case 32 /* xlat464Enabled */:
            {
                self->_has.xlat464Enabled = YES;
                self->_xlat464Enabled = PBReaderReadBOOL(reader);
            }
            break;
            case 33 /* xlat464PlatDiscoveryFailed */:
            {
                self->_has.xlat464PlatDiscoveryFailed = YES;
                self->_xlat464PlatDiscoveryFailed = PBReaderReadBOOL(reader);
            }
            break;
            default:
                if (!PBReaderSkipValueWithTag(reader, tag, aType))
                    return NO;
                break;
        }
    }
    return !PBReaderHasError(reader);
}

- (BOOL)readFrom:(PBDataReader *)reader
{
    return AWDIPConfigurationIPv6ReportReadFrom(self, reader);
}
- (void)writeTo:(PBDataWriter *)writer
{
    /* timestamp */
    {
        if (self->_has.timestamp)
        {
            PBDataWriterWriteUint64Field(writer, self->_timestamp, 1);
        }
    }
    /* interfaceType */
    {
        if (self->_has.interfaceType)
        {
            PBDataWriterWriteInt32Field(writer, self->_interfaceType, 2);
        }
    }
    /* apnName */
    {
        if (self->_apnName)
        {
            PBDataWriterWriteStringField(writer, self->_apnName, 3);
        }
    }
    /* linklocalAddressDuplicated */
    {
        if (self->_has.linklocalAddressDuplicated)
        {
            PBDataWriterWriteBOOLField(writer, self->_linklocalAddressDuplicated, 4);
        }
    }
    /* autoconfAddressDuplicated */
    {
        if (self->_has.autoconfAddressDuplicated)
        {
            PBDataWriterWriteBOOLField(writer, self->_autoconfAddressDuplicated, 5);
        }
    }
    /* autoconfAddressDeprecated */
    {
        if (self->_has.autoconfAddressDeprecated)
        {
            PBDataWriterWriteBOOLField(writer, self->_autoconfAddressDeprecated, 6);
        }
    }
    /* autoconfAddressDetached */
    {
        if (self->_has.autoconfAddressDetached)
        {
            PBDataWriterWriteBOOLField(writer, self->_autoconfAddressDetached, 7);
        }
    }
    /* autoconfAddressAcquired */
    {
        if (self->_has.autoconfAddressAcquired)
        {
            PBDataWriterWriteBOOLField(writer, self->_autoconfAddressAcquired, 8);
        }
    }
    /* autoconfRestarted */
    {
        if (self->_has.autoconfRestarted)
        {
            PBDataWriterWriteBOOLField(writer, self->_autoconfRestarted, 9);
        }
    }
    /* autoconfRdnss */
    {
        if (self->_has.autoconfRdnss)
        {
            PBDataWriterWriteBOOLField(writer, self->_autoconfRdnss, 10);
        }
    }
    /* autoconfDnssl */
    {
        if (self->_has.autoconfDnssl)
        {
            PBDataWriterWriteBOOLField(writer, self->_autoconfDnssl, 11);
        }
    }
    /* dhcpv6AddressAcquired */
    {
        if (self->_has.dhcpv6AddressAcquired)
        {
            PBDataWriterWriteBOOLField(writer, self->_dhcpv6AddressAcquired, 12);
        }
    }
    /* dhcpv6DnsServers */
    {
        if (self->_has.dhcpv6DnsServers)
        {
            PBDataWriterWriteBOOLField(writer, self->_dhcpv6DnsServers, 13);
        }
    }
    /* dhcpv6DnsDomainList */
    {
        if (self->_has.dhcpv6DnsDomainList)
        {
            PBDataWriterWriteBOOLField(writer, self->_dhcpv6DnsDomainList, 14);
        }
    }
    /* manualAddressConfigured */
    {
        if (self->_has.manualAddressConfigured)
        {
            PBDataWriterWriteBOOLField(writer, self->_manualAddressConfigured, 15);
        }
    }
    /* prefixLifetimeNotInfinite */
    {
        if (self->_has.prefixLifetimeNotInfinite)
        {
            PBDataWriterWriteBOOLField(writer, self->_prefixLifetimeNotInfinite, 16);
        }
    }
    /* routerLifetimeNotMaximum */
    {
        if (self->_has.routerLifetimeNotMaximum)
        {
            PBDataWriterWriteBOOLField(writer, self->_routerLifetimeNotMaximum, 17);
        }
    }
    /* routerSourceAddressCollision */
    {
        if (self->_has.routerSourceAddressCollision)
        {
            PBDataWriterWriteBOOLField(writer, self->_routerSourceAddressCollision, 18);
        }
    }
    /* routerLifetimeZero */
    {
        if (self->_has.routerLifetimeZero)
        {
            PBDataWriterWriteBOOLField(writer, self->_routerLifetimeZero, 19);
        }
    }
    /* defaultRouterCount */
    {
        if (self->_has.defaultRouterCount)
        {
            PBDataWriterWriteUint32Field(writer, self->_defaultRouterCount, 20);
        }
    }
    /* expiredDefaultRouterCount */
    {
        if (self->_has.expiredDefaultRouterCount)
        {
            PBDataWriterWriteUint32Field(writer, self->_expiredDefaultRouterCount, 21);
        }
    }
    /* prefixCount */
    {
        if (self->_has.prefixCount)
        {
            PBDataWriterWriteUint32Field(writer, self->_prefixCount, 22);
        }
    }
    /* expiredPrefixCount */
    {
        if (self->_has.expiredPrefixCount)
        {
            PBDataWriterWriteUint32Field(writer, self->_expiredPrefixCount, 23);
        }
    }
    /* routerSolicitationCount */
    {
        if (self->_has.routerSolicitationCount)
        {
            PBDataWriterWriteUint32Field(writer, self->_routerSolicitationCount, 24);
        }
    }
    /* controlQueueUnsentCount */
    {
        if (self->_has.controlQueueUnsentCount)
        {
            PBDataWriterWriteUint32Field(writer, self->_controlQueueUnsentCount, 25);
        }
    }
    /* autoconfAddressAcquisitionSeconds */
    {
        if (self->_has.autoconfAddressAcquisitionSeconds)
        {
            PBDataWriterWriteUint32Field(writer, self->_autoconfAddressAcquisitionSeconds, 26);
        }
    }
    /* dhcpv6AddressAcquisitionSeconds */
    {
        if (self->_has.dhcpv6AddressAcquisitionSeconds)
        {
            PBDataWriterWriteUint32Field(writer, self->_dhcpv6AddressAcquisitionSeconds, 27);
        }
    }
    /* dnsConfigurationAcquisitionSeconds */
    {
        if (self->_has.dnsConfigurationAcquisitionSeconds)
        {
            PBDataWriterWriteUint32Field(writer, self->_dnsConfigurationAcquisitionSeconds, 28);
        }
    }
    /* prefixPreferredLifetimeSeconds */
    {
        if (self->_has.prefixPreferredLifetimeSeconds)
        {
            PBDataWriterWriteUint32Field(writer, self->_prefixPreferredLifetimeSeconds, 29);
        }
    }
    /* prefixValidLifetimeSeconds */
    {
        if (self->_has.prefixValidLifetimeSeconds)
        {
            PBDataWriterWriteUint32Field(writer, self->_prefixValidLifetimeSeconds, 30);
        }
    }
    /* routerLifetimeSeconds */
    {
        if (self->_has.routerLifetimeSeconds)
        {
            PBDataWriterWriteUint32Field(writer, self->_routerLifetimeSeconds, 31);
        }
    }
    /* xlat464Enabled */
    {
        if (self->_has.xlat464Enabled)
        {
            PBDataWriterWriteBOOLField(writer, self->_xlat464Enabled, 32);
        }
    }
    /* xlat464PlatDiscoveryFailed */
    {
        if (self->_has.xlat464PlatDiscoveryFailed)
        {
            PBDataWriterWriteBOOLField(writer, self->_xlat464PlatDiscoveryFailed, 33);
        }
    }
}

- (void)copyTo:(AWDIPConfigurationIPv6Report *)other
{
    if (self->_has.timestamp)
    {
        other->_timestamp = _timestamp;
        other->_has.timestamp = YES;
    }
    if (self->_has.interfaceType)
    {
        other->_interfaceType = _interfaceType;
        other->_has.interfaceType = YES;
    }
    if (_apnName)
    {
        other.apnName = _apnName;
    }
    if (self->_has.linklocalAddressDuplicated)
    {
        other->_linklocalAddressDuplicated = _linklocalAddressDuplicated;
        other->_has.linklocalAddressDuplicated = YES;
    }
    if (self->_has.autoconfAddressDuplicated)
    {
        other->_autoconfAddressDuplicated = _autoconfAddressDuplicated;
        other->_has.autoconfAddressDuplicated = YES;
    }
    if (self->_has.autoconfAddressDeprecated)
    {
        other->_autoconfAddressDeprecated = _autoconfAddressDeprecated;
        other->_has.autoconfAddressDeprecated = YES;
    }
    if (self->_has.autoconfAddressDetached)
    {
        other->_autoconfAddressDetached = _autoconfAddressDetached;
        other->_has.autoconfAddressDetached = YES;
    }
    if (self->_has.autoconfAddressAcquired)
    {
        other->_autoconfAddressAcquired = _autoconfAddressAcquired;
        other->_has.autoconfAddressAcquired = YES;
    }
    if (self->_has.autoconfRestarted)
    {
        other->_autoconfRestarted = _autoconfRestarted;
        other->_has.autoconfRestarted = YES;
    }
    if (self->_has.autoconfRdnss)
    {
        other->_autoconfRdnss = _autoconfRdnss;
        other->_has.autoconfRdnss = YES;
    }
    if (self->_has.autoconfDnssl)
    {
        other->_autoconfDnssl = _autoconfDnssl;
        other->_has.autoconfDnssl = YES;
    }
    if (self->_has.dhcpv6AddressAcquired)
    {
        other->_dhcpv6AddressAcquired = _dhcpv6AddressAcquired;
        other->_has.dhcpv6AddressAcquired = YES;
    }
    if (self->_has.dhcpv6DnsServers)
    {
        other->_dhcpv6DnsServers = _dhcpv6DnsServers;
        other->_has.dhcpv6DnsServers = YES;
    }
    if (self->_has.dhcpv6DnsDomainList)
    {
        other->_dhcpv6DnsDomainList = _dhcpv6DnsDomainList;
        other->_has.dhcpv6DnsDomainList = YES;
    }
    if (self->_has.manualAddressConfigured)
    {
        other->_manualAddressConfigured = _manualAddressConfigured;
        other->_has.manualAddressConfigured = YES;
    }
    if (self->_has.prefixLifetimeNotInfinite)
    {
        other->_prefixLifetimeNotInfinite = _prefixLifetimeNotInfinite;
        other->_has.prefixLifetimeNotInfinite = YES;
    }
    if (self->_has.routerLifetimeNotMaximum)
    {
        other->_routerLifetimeNotMaximum = _routerLifetimeNotMaximum;
        other->_has.routerLifetimeNotMaximum = YES;
    }
    if (self->_has.routerSourceAddressCollision)
    {
        other->_routerSourceAddressCollision = _routerSourceAddressCollision;
        other->_has.routerSourceAddressCollision = YES;
    }
    if (self->_has.routerLifetimeZero)
    {
        other->_routerLifetimeZero = _routerLifetimeZero;
        other->_has.routerLifetimeZero = YES;
    }
    if (self->_has.defaultRouterCount)
    {
        other->_defaultRouterCount = _defaultRouterCount;
        other->_has.defaultRouterCount = YES;
    }
    if (self->_has.expiredDefaultRouterCount)
    {
        other->_expiredDefaultRouterCount = _expiredDefaultRouterCount;
        other->_has.expiredDefaultRouterCount = YES;
    }
    if (self->_has.prefixCount)
    {
        other->_prefixCount = _prefixCount;
        other->_has.prefixCount = YES;
    }
    if (self->_has.expiredPrefixCount)
    {
        other->_expiredPrefixCount = _expiredPrefixCount;
        other->_has.expiredPrefixCount = YES;
    }
    if (self->_has.routerSolicitationCount)
    {
        other->_routerSolicitationCount = _routerSolicitationCount;
        other->_has.routerSolicitationCount = YES;
    }
    if (self->_has.controlQueueUnsentCount)
    {
        other->_controlQueueUnsentCount = _controlQueueUnsentCount;
        other->_has.controlQueueUnsentCount = YES;
    }
    if (self->_has.autoconfAddressAcquisitionSeconds)
    {
        other->_autoconfAddressAcquisitionSeconds = _autoconfAddressAcquisitionSeconds;
        other->_has.autoconfAddressAcquisitionSeconds = YES;
    }
    if (self->_has.dhcpv6AddressAcquisitionSeconds)
    {
        other->_dhcpv6AddressAcquisitionSeconds = _dhcpv6AddressAcquisitionSeconds;
        other->_has.dhcpv6AddressAcquisitionSeconds = YES;
    }
    if (self->_has.dnsConfigurationAcquisitionSeconds)
    {
        other->_dnsConfigurationAcquisitionSeconds = _dnsConfigurationAcquisitionSeconds;
        other->_has.dnsConfigurationAcquisitionSeconds = YES;
    }
    if (self->_has.prefixPreferredLifetimeSeconds)
    {
        other->_prefixPreferredLifetimeSeconds = _prefixPreferredLifetimeSeconds;
        other->_has.prefixPreferredLifetimeSeconds = YES;
    }
    if (self->_has.prefixValidLifetimeSeconds)
    {
        other->_prefixValidLifetimeSeconds = _prefixValidLifetimeSeconds;
        other->_has.prefixValidLifetimeSeconds = YES;
    }
    if (self->_has.routerLifetimeSeconds)
    {
        other->_routerLifetimeSeconds = _routerLifetimeSeconds;
        other->_has.routerLifetimeSeconds = YES;
    }
    if (self->_has.xlat464Enabled)
    {
        other->_xlat464Enabled = _xlat464Enabled;
        other->_has.xlat464Enabled = YES;
    }
    if (self->_has.xlat464PlatDiscoveryFailed)
    {
        other->_xlat464PlatDiscoveryFailed = _xlat464PlatDiscoveryFailed;
        other->_has.xlat464PlatDiscoveryFailed = YES;
    }
}

- (id)copyWithZone:(NSZone *)zone
{
    AWDIPConfigurationIPv6Report *copy = [[[self class] allocWithZone:zone] init];
    if (self->_has.timestamp)
    {
        copy->_timestamp = _timestamp;
        copy->_has.timestamp = YES;
    }
    if (self->_has.interfaceType)
    {
        copy->_interfaceType = _interfaceType;
        copy->_has.interfaceType = YES;
    }
    [copy->_apnName release];
    copy->_apnName = [_apnName copyWithZone:zone];
    if (self->_has.linklocalAddressDuplicated)
    {
        copy->_linklocalAddressDuplicated = _linklocalAddressDuplicated;
        copy->_has.linklocalAddressDuplicated = YES;
    }
    if (self->_has.autoconfAddressDuplicated)
    {
        copy->_autoconfAddressDuplicated = _autoconfAddressDuplicated;
        copy->_has.autoconfAddressDuplicated = YES;
    }
    if (self->_has.autoconfAddressDeprecated)
    {
        copy->_autoconfAddressDeprecated = _autoconfAddressDeprecated;
        copy->_has.autoconfAddressDeprecated = YES;
    }
    if (self->_has.autoconfAddressDetached)
    {
        copy->_autoconfAddressDetached = _autoconfAddressDetached;
        copy->_has.autoconfAddressDetached = YES;
    }
    if (self->_has.autoconfAddressAcquired)
    {
        copy->_autoconfAddressAcquired = _autoconfAddressAcquired;
        copy->_has.autoconfAddressAcquired = YES;
    }
    if (self->_has.autoconfRestarted)
    {
        copy->_autoconfRestarted = _autoconfRestarted;
        copy->_has.autoconfRestarted = YES;
    }
    if (self->_has.autoconfRdnss)
    {
        copy->_autoconfRdnss = _autoconfRdnss;
        copy->_has.autoconfRdnss = YES;
    }
    if (self->_has.autoconfDnssl)
    {
        copy->_autoconfDnssl = _autoconfDnssl;
        copy->_has.autoconfDnssl = YES;
    }
    if (self->_has.dhcpv6AddressAcquired)
    {
        copy->_dhcpv6AddressAcquired = _dhcpv6AddressAcquired;
        copy->_has.dhcpv6AddressAcquired = YES;
    }
    if (self->_has.dhcpv6DnsServers)
    {
        copy->_dhcpv6DnsServers = _dhcpv6DnsServers;
        copy->_has.dhcpv6DnsServers = YES;
    }
    if (self->_has.dhcpv6DnsDomainList)
    {
        copy->_dhcpv6DnsDomainList = _dhcpv6DnsDomainList;
        copy->_has.dhcpv6DnsDomainList = YES;
    }
    if (self->_has.manualAddressConfigured)
    {
        copy->_manualAddressConfigured = _manualAddressConfigured;
        copy->_has.manualAddressConfigured = YES;
    }
    if (self->_has.prefixLifetimeNotInfinite)
    {
        copy->_prefixLifetimeNotInfinite = _prefixLifetimeNotInfinite;
        copy->_has.prefixLifetimeNotInfinite = YES;
    }
    if (self->_has.routerLifetimeNotMaximum)
    {
        copy->_routerLifetimeNotMaximum = _routerLifetimeNotMaximum;
        copy->_has.routerLifetimeNotMaximum = YES;
    }
    if (self->_has.routerSourceAddressCollision)
    {
        copy->_routerSourceAddressCollision = _routerSourceAddressCollision;
        copy->_has.routerSourceAddressCollision = YES;
    }
    if (self->_has.routerLifetimeZero)
    {
        copy->_routerLifetimeZero = _routerLifetimeZero;
        copy->_has.routerLifetimeZero = YES;
    }
    if (self->_has.defaultRouterCount)
    {
        copy->_defaultRouterCount = _defaultRouterCount;
        copy->_has.defaultRouterCount = YES;
    }
    if (self->_has.expiredDefaultRouterCount)
    {
        copy->_expiredDefaultRouterCount = _expiredDefaultRouterCount;
        copy->_has.expiredDefaultRouterCount = YES;
    }
    if (self->_has.prefixCount)
    {
        copy->_prefixCount = _prefixCount;
        copy->_has.prefixCount = YES;
    }
    if (self->_has.expiredPrefixCount)
    {
        copy->_expiredPrefixCount = _expiredPrefixCount;
        copy->_has.expiredPrefixCount = YES;
    }
    if (self->_has.routerSolicitationCount)
    {
        copy->_routerSolicitationCount = _routerSolicitationCount;
        copy->_has.routerSolicitationCount = YES;
    }
    if (self->_has.controlQueueUnsentCount)
    {
        copy->_controlQueueUnsentCount = _controlQueueUnsentCount;
        copy->_has.controlQueueUnsentCount = YES;
    }
    if (self->_has.autoconfAddressAcquisitionSeconds)
    {
        copy->_autoconfAddressAcquisitionSeconds = _autoconfAddressAcquisitionSeconds;
        copy->_has.autoconfAddressAcquisitionSeconds = YES;
    }
    if (self->_has.dhcpv6AddressAcquisitionSeconds)
    {
        copy->_dhcpv6AddressAcquisitionSeconds = _dhcpv6AddressAcquisitionSeconds;
        copy->_has.dhcpv6AddressAcquisitionSeconds = YES;
    }
    if (self->_has.dnsConfigurationAcquisitionSeconds)
    {
        copy->_dnsConfigurationAcquisitionSeconds = _dnsConfigurationAcquisitionSeconds;
        copy->_has.dnsConfigurationAcquisitionSeconds = YES;
    }
    if (self->_has.prefixPreferredLifetimeSeconds)
    {
        copy->_prefixPreferredLifetimeSeconds = _prefixPreferredLifetimeSeconds;
        copy->_has.prefixPreferredLifetimeSeconds = YES;
    }
    if (self->_has.prefixValidLifetimeSeconds)
    {
        copy->_prefixValidLifetimeSeconds = _prefixValidLifetimeSeconds;
        copy->_has.prefixValidLifetimeSeconds = YES;
    }
    if (self->_has.routerLifetimeSeconds)
    {
        copy->_routerLifetimeSeconds = _routerLifetimeSeconds;
        copy->_has.routerLifetimeSeconds = YES;
    }
    if (self->_has.xlat464Enabled)
    {
        copy->_xlat464Enabled = _xlat464Enabled;
        copy->_has.xlat464Enabled = YES;
    }
    if (self->_has.xlat464PlatDiscoveryFailed)
    {
        copy->_xlat464PlatDiscoveryFailed = _xlat464PlatDiscoveryFailed;
        copy->_has.xlat464PlatDiscoveryFailed = YES;
    }
    return copy;
}

- (BOOL)isEqual:(id)object
{
    AWDIPConfigurationIPv6Report *other = (AWDIPConfigurationIPv6Report *)object;
    return [other isMemberOfClass:[self class]]
    &&
    ((self->_has.timestamp && other->_has.timestamp && self->_timestamp == other->_timestamp) || (!self->_has.timestamp && !other->_has.timestamp))
    &&
    ((self->_has.interfaceType && other->_has.interfaceType && self->_interfaceType == other->_interfaceType) || (!self->_has.interfaceType && !other->_has.interfaceType))
    &&
    ((!self->_apnName && !other->_apnName) || [self->_apnName isEqual:other->_apnName])
    &&
    ((self->_has.linklocalAddressDuplicated && other->_has.linklocalAddressDuplicated && ((self->_linklocalAddressDuplicated && other->_linklocalAddressDuplicated) || (!self->_linklocalAddressDuplicated && !other->_linklocalAddressDuplicated))) || (!self->_has.linklocalAddressDuplicated && !other->_has.linklocalAddressDuplicated))
    &&
    ((self->_has.autoconfAddressDuplicated && other->_has.autoconfAddressDuplicated && ((self->_autoconfAddressDuplicated && other->_autoconfAddressDuplicated) || (!self->_autoconfAddressDuplicated && !other->_autoconfAddressDuplicated))) || (!self->_has.autoconfAddressDuplicated && !other->_has.autoconfAddressDuplicated))
    &&
    ((self->_has.autoconfAddressDeprecated && other->_has.autoconfAddressDeprecated && ((self->_autoconfAddressDeprecated && other->_autoconfAddressDeprecated) || (!self->_autoconfAddressDeprecated && !other->_autoconfAddressDeprecated))) || (!self->_has.autoconfAddressDeprecated && !other->_has.autoconfAddressDeprecated))
    &&
    ((self->_has.autoconfAddressDetached && other->_has.autoconfAddressDetached && ((self->_autoconfAddressDetached && other->_autoconfAddressDetached) || (!self->_autoconfAddressDetached && !other->_autoconfAddressDetached))) || (!self->_has.autoconfAddressDetached && !other->_has.autoconfAddressDetached))
    &&
    ((self->_has.autoconfAddressAcquired && other->_has.autoconfAddressAcquired && ((self->_autoconfAddressAcquired && other->_autoconfAddressAcquired) || (!self->_autoconfAddressAcquired && !other->_autoconfAddressAcquired))) || (!self->_has.autoconfAddressAcquired && !other->_has.autoconfAddressAcquired))
    &&
    ((self->_has.autoconfRestarted && other->_has.autoconfRestarted && ((self->_autoconfRestarted && other->_autoconfRestarted) || (!self->_autoconfRestarted && !other->_autoconfRestarted))) || (!self->_has.autoconfRestarted && !other->_has.autoconfRestarted))
    &&
    ((self->_has.autoconfRdnss && other->_has.autoconfRdnss && ((self->_autoconfRdnss && other->_autoconfRdnss) || (!self->_autoconfRdnss && !other->_autoconfRdnss))) || (!self->_has.autoconfRdnss && !other->_has.autoconfRdnss))
    &&
    ((self->_has.autoconfDnssl && other->_has.autoconfDnssl && ((self->_autoconfDnssl && other->_autoconfDnssl) || (!self->_autoconfDnssl && !other->_autoconfDnssl))) || (!self->_has.autoconfDnssl && !other->_has.autoconfDnssl))
    &&
    ((self->_has.dhcpv6AddressAcquired && other->_has.dhcpv6AddressAcquired && ((self->_dhcpv6AddressAcquired && other->_dhcpv6AddressAcquired) || (!self->_dhcpv6AddressAcquired && !other->_dhcpv6AddressAcquired))) || (!self->_has.dhcpv6AddressAcquired && !other->_has.dhcpv6AddressAcquired))
    &&
    ((self->_has.dhcpv6DnsServers && other->_has.dhcpv6DnsServers && ((self->_dhcpv6DnsServers && other->_dhcpv6DnsServers) || (!self->_dhcpv6DnsServers && !other->_dhcpv6DnsServers))) || (!self->_has.dhcpv6DnsServers && !other->_has.dhcpv6DnsServers))
    &&
    ((self->_has.dhcpv6DnsDomainList && other->_has.dhcpv6DnsDomainList && ((self->_dhcpv6DnsDomainList && other->_dhcpv6DnsDomainList) || (!self->_dhcpv6DnsDomainList && !other->_dhcpv6DnsDomainList))) || (!self->_has.dhcpv6DnsDomainList && !other->_has.dhcpv6DnsDomainList))
    &&
    ((self->_has.manualAddressConfigured && other->_has.manualAddressConfigured && ((self->_manualAddressConfigured && other->_manualAddressConfigured) || (!self->_manualAddressConfigured && !other->_manualAddressConfigured))) || (!self->_has.manualAddressConfigured && !other->_has.manualAddressConfigured))
    &&
    ((self->_has.prefixLifetimeNotInfinite && other->_has.prefixLifetimeNotInfinite && ((self->_prefixLifetimeNotInfinite && other->_prefixLifetimeNotInfinite) || (!self->_prefixLifetimeNotInfinite && !other->_prefixLifetimeNotInfinite))) || (!self->_has.prefixLifetimeNotInfinite && !other->_has.prefixLifetimeNotInfinite))
    &&
    ((self->_has.routerLifetimeNotMaximum && other->_has.routerLifetimeNotMaximum && ((self->_routerLifetimeNotMaximum && other->_routerLifetimeNotMaximum) || (!self->_routerLifetimeNotMaximum && !other->_routerLifetimeNotMaximum))) || (!self->_has.routerLifetimeNotMaximum && !other->_has.routerLifetimeNotMaximum))
    &&
    ((self->_has.routerSourceAddressCollision && other->_has.routerSourceAddressCollision && ((self->_routerSourceAddressCollision && other->_routerSourceAddressCollision) || (!self->_routerSourceAddressCollision && !other->_routerSourceAddressCollision))) || (!self->_has.routerSourceAddressCollision && !other->_has.routerSourceAddressCollision))
    &&
    ((self->_has.routerLifetimeZero && other->_has.routerLifetimeZero && ((self->_routerLifetimeZero && other->_routerLifetimeZero) || (!self->_routerLifetimeZero && !other->_routerLifetimeZero))) || (!self->_has.routerLifetimeZero && !other->_has.routerLifetimeZero))
    &&
    ((self->_has.defaultRouterCount && other->_has.defaultRouterCount && self->_defaultRouterCount == other->_defaultRouterCount) || (!self->_has.defaultRouterCount && !other->_has.defaultRouterCount))
    &&
    ((self->_has.expiredDefaultRouterCount && other->_has.expiredDefaultRouterCount && self->_expiredDefaultRouterCount == other->_expiredDefaultRouterCount) || (!self->_has.expiredDefaultRouterCount && !other->_has.expiredDefaultRouterCount))
    &&
    ((self->_has.prefixCount && other->_has.prefixCount && self->_prefixCount == other->_prefixCount) || (!self->_has.prefixCount && !other->_has.prefixCount))
    &&
    ((self->_has.expiredPrefixCount && other->_has.expiredPrefixCount && self->_expiredPrefixCount == other->_expiredPrefixCount) || (!self->_has.expiredPrefixCount && !other->_has.expiredPrefixCount))
    &&
    ((self->_has.routerSolicitationCount && other->_has.routerSolicitationCount && self->_routerSolicitationCount == other->_routerSolicitationCount) || (!self->_has.routerSolicitationCount && !other->_has.routerSolicitationCount))
    &&
    ((self->_has.controlQueueUnsentCount && other->_has.controlQueueUnsentCount && self->_controlQueueUnsentCount == other->_controlQueueUnsentCount) || (!self->_has.controlQueueUnsentCount && !other->_has.controlQueueUnsentCount))
    &&
    ((self->_has.autoconfAddressAcquisitionSeconds && other->_has.autoconfAddressAcquisitionSeconds && self->_autoconfAddressAcquisitionSeconds == other->_autoconfAddressAcquisitionSeconds) || (!self->_has.autoconfAddressAcquisitionSeconds && !other->_has.autoconfAddressAcquisitionSeconds))
    &&
    ((self->_has.dhcpv6AddressAcquisitionSeconds && other->_has.dhcpv6AddressAcquisitionSeconds && self->_dhcpv6AddressAcquisitionSeconds == other->_dhcpv6AddressAcquisitionSeconds) || (!self->_has.dhcpv6AddressAcquisitionSeconds && !other->_has.dhcpv6AddressAcquisitionSeconds))
    &&
    ((self->_has.dnsConfigurationAcquisitionSeconds && other->_has.dnsConfigurationAcquisitionSeconds && self->_dnsConfigurationAcquisitionSeconds == other->_dnsConfigurationAcquisitionSeconds) || (!self->_has.dnsConfigurationAcquisitionSeconds && !other->_has.dnsConfigurationAcquisitionSeconds))
    &&
    ((self->_has.prefixPreferredLifetimeSeconds && other->_has.prefixPreferredLifetimeSeconds && self->_prefixPreferredLifetimeSeconds == other->_prefixPreferredLifetimeSeconds) || (!self->_has.prefixPreferredLifetimeSeconds && !other->_has.prefixPreferredLifetimeSeconds))
    &&
    ((self->_has.prefixValidLifetimeSeconds && other->_has.prefixValidLifetimeSeconds && self->_prefixValidLifetimeSeconds == other->_prefixValidLifetimeSeconds) || (!self->_has.prefixValidLifetimeSeconds && !other->_has.prefixValidLifetimeSeconds))
    &&
    ((self->_has.routerLifetimeSeconds && other->_has.routerLifetimeSeconds && self->_routerLifetimeSeconds == other->_routerLifetimeSeconds) || (!self->_has.routerLifetimeSeconds && !other->_has.routerLifetimeSeconds))
    &&
    ((self->_has.xlat464Enabled && other->_has.xlat464Enabled && ((self->_xlat464Enabled && other->_xlat464Enabled) || (!self->_xlat464Enabled && !other->_xlat464Enabled))) || (!self->_has.xlat464Enabled && !other->_has.xlat464Enabled))
    &&
    ((self->_has.xlat464PlatDiscoveryFailed && other->_has.xlat464PlatDiscoveryFailed && ((self->_xlat464PlatDiscoveryFailed && other->_xlat464PlatDiscoveryFailed) || (!self->_xlat464PlatDiscoveryFailed && !other->_xlat464PlatDiscoveryFailed))) || (!self->_has.xlat464PlatDiscoveryFailed && !other->_has.xlat464PlatDiscoveryFailed))
    ;
}

- (NSUInteger)hash
{
    return 0
    ^
    (self->_has.timestamp ? PBHashInt((NSUInteger)self->_timestamp) : 0)
    ^
    (self->_has.interfaceType ? PBHashInt((NSUInteger)self->_interfaceType) : 0)
    ^
    [self->_apnName hash]
    ^
    (self->_has.linklocalAddressDuplicated ? PBHashInt((NSUInteger)self->_linklocalAddressDuplicated) : 0)
    ^
    (self->_has.autoconfAddressDuplicated ? PBHashInt((NSUInteger)self->_autoconfAddressDuplicated) : 0)
    ^
    (self->_has.autoconfAddressDeprecated ? PBHashInt((NSUInteger)self->_autoconfAddressDeprecated) : 0)
    ^
    (self->_has.autoconfAddressDetached ? PBHashInt((NSUInteger)self->_autoconfAddressDetached) : 0)
    ^
    (self->_has.autoconfAddressAcquired ? PBHashInt((NSUInteger)self->_autoconfAddressAcquired) : 0)
    ^
    (self->_has.autoconfRestarted ? PBHashInt((NSUInteger)self->_autoconfRestarted) : 0)
    ^
    (self->_has.autoconfRdnss ? PBHashInt((NSUInteger)self->_autoconfRdnss) : 0)
    ^
    (self->_has.autoconfDnssl ? PBHashInt((NSUInteger)self->_autoconfDnssl) : 0)
    ^
    (self->_has.dhcpv6AddressAcquired ? PBHashInt((NSUInteger)self->_dhcpv6AddressAcquired) : 0)
    ^
    (self->_has.dhcpv6DnsServers ? PBHashInt((NSUInteger)self->_dhcpv6DnsServers) : 0)
    ^
    (self->_has.dhcpv6DnsDomainList ? PBHashInt((NSUInteger)self->_dhcpv6DnsDomainList) : 0)
    ^
    (self->_has.manualAddressConfigured ? PBHashInt((NSUInteger)self->_manualAddressConfigured) : 0)
    ^
    (self->_has.prefixLifetimeNotInfinite ? PBHashInt((NSUInteger)self->_prefixLifetimeNotInfinite) : 0)
    ^
    (self->_has.routerLifetimeNotMaximum ? PBHashInt((NSUInteger)self->_routerLifetimeNotMaximum) : 0)
    ^
    (self->_has.routerSourceAddressCollision ? PBHashInt((NSUInteger)self->_routerSourceAddressCollision) : 0)
    ^
    (self->_has.routerLifetimeZero ? PBHashInt((NSUInteger)self->_routerLifetimeZero) : 0)
    ^
    (self->_has.defaultRouterCount ? PBHashInt((NSUInteger)self->_defaultRouterCount) : 0)
    ^
    (self->_has.expiredDefaultRouterCount ? PBHashInt((NSUInteger)self->_expiredDefaultRouterCount) : 0)
    ^
    (self->_has.prefixCount ? PBHashInt((NSUInteger)self->_prefixCount) : 0)
    ^
    (self->_has.expiredPrefixCount ? PBHashInt((NSUInteger)self->_expiredPrefixCount) : 0)
    ^
    (self->_has.routerSolicitationCount ? PBHashInt((NSUInteger)self->_routerSolicitationCount) : 0)
    ^
    (self->_has.controlQueueUnsentCount ? PBHashInt((NSUInteger)self->_controlQueueUnsentCount) : 0)
    ^
    (self->_has.autoconfAddressAcquisitionSeconds ? PBHashInt((NSUInteger)self->_autoconfAddressAcquisitionSeconds) : 0)
    ^
    (self->_has.dhcpv6AddressAcquisitionSeconds ? PBHashInt((NSUInteger)self->_dhcpv6AddressAcquisitionSeconds) : 0)
    ^
    (self->_has.dnsConfigurationAcquisitionSeconds ? PBHashInt((NSUInteger)self->_dnsConfigurationAcquisitionSeconds) : 0)
    ^
    (self->_has.prefixPreferredLifetimeSeconds ? PBHashInt((NSUInteger)self->_prefixPreferredLifetimeSeconds) : 0)
    ^
    (self->_has.prefixValidLifetimeSeconds ? PBHashInt((NSUInteger)self->_prefixValidLifetimeSeconds) : 0)
    ^
    (self->_has.routerLifetimeSeconds ? PBHashInt((NSUInteger)self->_routerLifetimeSeconds) : 0)
    ^
    (self->_has.xlat464Enabled ? PBHashInt((NSUInteger)self->_xlat464Enabled) : 0)
    ^
    (self->_has.xlat464PlatDiscoveryFailed ? PBHashInt((NSUInteger)self->_xlat464PlatDiscoveryFailed) : 0)
    ;
}

- (void)mergeFrom:(AWDIPConfigurationIPv6Report *)other
{
    if (other->_has.timestamp)
    {
        self->_timestamp = other->_timestamp;
        self->_has.timestamp = YES;
    }
    if (other->_has.interfaceType)
    {
        self->_interfaceType = other->_interfaceType;
        self->_has.interfaceType = YES;
    }
    if (other->_apnName)
    {
        [self setApnName:other->_apnName];
    }
    if (other->_has.linklocalAddressDuplicated)
    {
        self->_linklocalAddressDuplicated = other->_linklocalAddressDuplicated;
        self->_has.linklocalAddressDuplicated = YES;
    }
    if (other->_has.autoconfAddressDuplicated)
    {
        self->_autoconfAddressDuplicated = other->_autoconfAddressDuplicated;
        self->_has.autoconfAddressDuplicated = YES;
    }
    if (other->_has.autoconfAddressDeprecated)
    {
        self->_autoconfAddressDeprecated = other->_autoconfAddressDeprecated;
        self->_has.autoconfAddressDeprecated = YES;
    }
    if (other->_has.autoconfAddressDetached)
    {
        self->_autoconfAddressDetached = other->_autoconfAddressDetached;
        self->_has.autoconfAddressDetached = YES;
    }
    if (other->_has.autoconfAddressAcquired)
    {
        self->_autoconfAddressAcquired = other->_autoconfAddressAcquired;
        self->_has.autoconfAddressAcquired = YES;
    }
    if (other->_has.autoconfRestarted)
    {
        self->_autoconfRestarted = other->_autoconfRestarted;
        self->_has.autoconfRestarted = YES;
    }
    if (other->_has.autoconfRdnss)
    {
        self->_autoconfRdnss = other->_autoconfRdnss;
        self->_has.autoconfRdnss = YES;
    }
    if (other->_has.autoconfDnssl)
    {
        self->_autoconfDnssl = other->_autoconfDnssl;
        self->_has.autoconfDnssl = YES;
    }
    if (other->_has.dhcpv6AddressAcquired)
    {
        self->_dhcpv6AddressAcquired = other->_dhcpv6AddressAcquired;
        self->_has.dhcpv6AddressAcquired = YES;
    }
    if (other->_has.dhcpv6DnsServers)
    {
        self->_dhcpv6DnsServers = other->_dhcpv6DnsServers;
        self->_has.dhcpv6DnsServers = YES;
    }
    if (other->_has.dhcpv6DnsDomainList)
    {
        self->_dhcpv6DnsDomainList = other->_dhcpv6DnsDomainList;
        self->_has.dhcpv6DnsDomainList = YES;
    }
    if (other->_has.manualAddressConfigured)
    {
        self->_manualAddressConfigured = other->_manualAddressConfigured;
        self->_has.manualAddressConfigured = YES;
    }
    if (other->_has.prefixLifetimeNotInfinite)
    {
        self->_prefixLifetimeNotInfinite = other->_prefixLifetimeNotInfinite;
        self->_has.prefixLifetimeNotInfinite = YES;
    }
    if (other->_has.routerLifetimeNotMaximum)
    {
        self->_routerLifetimeNotMaximum = other->_routerLifetimeNotMaximum;
        self->_has.routerLifetimeNotMaximum = YES;
    }
    if (other->_has.routerSourceAddressCollision)
    {
        self->_routerSourceAddressCollision = other->_routerSourceAddressCollision;
        self->_has.routerSourceAddressCollision = YES;
    }
    if (other->_has.routerLifetimeZero)
    {
        self->_routerLifetimeZero = other->_routerLifetimeZero;
        self->_has.routerLifetimeZero = YES;
    }
    if (other->_has.defaultRouterCount)
    {
        self->_defaultRouterCount = other->_defaultRouterCount;
        self->_has.defaultRouterCount = YES;
    }
    if (other->_has.expiredDefaultRouterCount)
    {
        self->_expiredDefaultRouterCount = other->_expiredDefaultRouterCount;
        self->_has.expiredDefaultRouterCount = YES;
    }
    if (other->_has.prefixCount)
    {
        self->_prefixCount = other->_prefixCount;
        self->_has.prefixCount = YES;
    }
    if (other->_has.expiredPrefixCount)
    {
        self->_expiredPrefixCount = other->_expiredPrefixCount;
        self->_has.expiredPrefixCount = YES;
    }
    if (other->_has.routerSolicitationCount)
    {
        self->_routerSolicitationCount = other->_routerSolicitationCount;
        self->_has.routerSolicitationCount = YES;
    }
    if (other->_has.controlQueueUnsentCount)
    {
        self->_controlQueueUnsentCount = other->_controlQueueUnsentCount;
        self->_has.controlQueueUnsentCount = YES;
    }
    if (other->_has.autoconfAddressAcquisitionSeconds)
    {
        self->_autoconfAddressAcquisitionSeconds = other->_autoconfAddressAcquisitionSeconds;
        self->_has.autoconfAddressAcquisitionSeconds = YES;
    }
    if (other->_has.dhcpv6AddressAcquisitionSeconds)
    {
        self->_dhcpv6AddressAcquisitionSeconds = other->_dhcpv6AddressAcquisitionSeconds;
        self->_has.dhcpv6AddressAcquisitionSeconds = YES;
    }
    if (other->_has.dnsConfigurationAcquisitionSeconds)
    {
        self->_dnsConfigurationAcquisitionSeconds = other->_dnsConfigurationAcquisitionSeconds;
        self->_has.dnsConfigurationAcquisitionSeconds = YES;
    }
    if (other->_has.prefixPreferredLifetimeSeconds)
    {
        self->_prefixPreferredLifetimeSeconds = other->_prefixPreferredLifetimeSeconds;
        self->_has.prefixPreferredLifetimeSeconds = YES;
    }
    if (other->_has.prefixValidLifetimeSeconds)
    {
        self->_prefixValidLifetimeSeconds = other->_prefixValidLifetimeSeconds;
        self->_has.prefixValidLifetimeSeconds = YES;
    }
    if (other->_has.routerLifetimeSeconds)
    {
        self->_routerLifetimeSeconds = other->_routerLifetimeSeconds;
        self->_has.routerLifetimeSeconds = YES;
    }
    if (other->_has.xlat464Enabled)
    {
        self->_xlat464Enabled = other->_xlat464Enabled;
        self->_has.xlat464Enabled = YES;
    }
    if (other->_has.xlat464PlatDiscoveryFailed)
    {
        self->_xlat464PlatDiscoveryFailed = other->_xlat464PlatDiscoveryFailed;
        self->_has.xlat464PlatDiscoveryFailed = YES;
    }
}

@end

