scripts/VolumeCollection.ps1

# VolumeCollection.ps1: This is an autogenerated file. Part of Nimble Group Management SDK. All edits to this file will be lost!
#
# © Copyright 2017 Hewlett Packard Enterprise Development LP.

function New-NSVolumeCollection {
  # .ExternalHelp ../NimPSSDK.psm1-help.xml
  [CmdletBinding()]
  param(
    [Parameter(ParameterSetName='allButId')]
    [AllowEmptyString()]
    [string] $prottmpl_id,

    [Parameter(ParameterSetName='allButId', Mandatory = $True)]
    [AllowEmptyString()]
    [string] $name,

    [Parameter(ParameterSetName='allButId')]
    [AllowEmptyString()]
    [string] $description,

    [Parameter(ParameterSetName='allButId')]
    [ValidateSet( 'normal', 'high')]
    [string] $repl_priority,

    [Parameter(ParameterSetName='allButId')]
    [ValidateSet( 'synchronous', 'periodic_snapshot')]
    [string] $replication_type,

    [Parameter(ParameterSetName='allButId')]
    [ValidateSet( 'vss', 'vmware', 'none', 'generic')]
    [string] $app_sync,

    [Parameter(ParameterSetName='allButId')]
    [AllowEmptyString()]
    [string] $app_server,

    [Parameter(ParameterSetName='allButId')]
    [ValidateSet( 'exchange_dag', 'sql2012', 'sql2014', 'inval', 'sql2005', 'sql2016', 'exchange', 'sql2017', 'sql2008', 'hyperv')]
    [string] $app_id,

    [Parameter(ParameterSetName='allButId')]
    [AllowEmptyString()]
    [string] $app_cluster_name,

    [Parameter(ParameterSetName='allButId')]
    [AllowEmptyString()]
    [string] $app_service_name,

    [Parameter(ParameterSetName='allButId')]
    [AllowEmptyString()]
    [string] $vcenter_hostname,

    [Parameter(ParameterSetName='allButId')]
    [AllowEmptyString()]
    [string] $vcenter_username,

    [Parameter(ParameterSetName='allButId')]
    [AllowEmptyString()]
    [string] $vcenter_password,

    [Parameter(ParameterSetName='allButId')]
    [AllowEmptyString()]
    [string] $agent_hostname,

    [Parameter(ParameterSetName='allButId')]
    [AllowEmptyString()]
    [string] $agent_username,

    [Parameter(ParameterSetName='allButId')]
    [AllowEmptyString()]
    [string] $agent_password,

    [Parameter(ParameterSetName='allButId')]
    
    [Nullable[bool]] $is_standalone_volcoll,

    [Parameter(ParameterSetName='allButId')]
    [Object[]] $metadata

  )

    process {
        # Gather request params based on user input.
        $RequestData = @{}
        $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
        foreach ($key in $ParameterList.keys)
        {
            $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
            if($var -and ($PSBoundParameters.ContainsKey($key)))
            {
                $RequestData.Add("$($var.name)", ($var.value))
            }
        }
        $Params = @{
            ObjectName = 'VolumeCollection'
            APIPath = 'volume_collections'
            Properties = $RequestData
        }

        $ResponseObject = New-NimbleStorageAPIObject @Params
        return $ResponseObject
    }
}

function Get-NSVolumeCollection {
  # .ExternalHelp ../NimPSSDK.psm1-help.xml
  [CmdletBinding(DefaultParameterSetName='id')]
  param(
    [Parameter(ParameterSetName='id')]
    [Parameter(ParameterSetName='nonId')]
    [ValidateSet('id','prottmpl_id','name','full_name','search_name','description','repl_priority','pol_owner_name','replication_type','synchronous_replication_type','synchronous_replication_state','app_sync','app_server','app_id','app_cluster_name','app_service_name','vcenter_hostname','vcenter_username','vcenter_password','agent_hostname','agent_username','agent_password','creation_time','last_modified_time','volume_list','downstream_volume_list','upstream_volume_list','volume_count','cache_pinned_volume_list','last_snapcoll','snapcoll_count','schedule_list','replication_partner','last_replicated_snapcoll','last_replicated_snapcoll_list','protection_type','lag_time','is_standalone_volcoll','total_repl_bytes','repl_bytes_transferred','is_handing_over','handover_replication_partner','metadata','srep_last_sync','srep_resync_percent')]
    [string[]]$fields,

    [Parameter(ParameterSetName='id')]
    [ValidatePattern('([0-9a-f]{2})([0-9a-f]{16})([0-9a-f]{16})([0-9a-f]{8})')]
    [string] $id,

    [Parameter(ParameterSetName='nonId')]
    [string]$prottmpl_id,

    [Parameter(ParameterSetName='nonId')]
    [string]$name,

    [Parameter(ParameterSetName='nonId')]
    [string]$full_name,

    [Parameter(ParameterSetName='nonId')]
    [string]$search_name,

    [Parameter(ParameterSetName='nonId')]
    [string]$description,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'normal', 'high')]
    [string]$repl_priority,

    [Parameter(ParameterSetName='nonId')]
    [string]$pol_owner_name,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'synchronous', 'periodic_snapshot')]
    [string]$replication_type,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'soft_available', 'not_applicable')]
    [string]$synchronous_replication_type,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'in_sync', 'not_applicable', 'out_of_sync', 'unknown')]
    [string]$synchronous_replication_state,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'vss', 'vmware', 'none', 'generic')]
    [string]$app_sync,

    [Parameter(ParameterSetName='nonId')]
    [string]$app_server,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'exchange_dag', 'sql2012', 'sql2014', 'inval', 'sql2005', 'sql2016', 'exchange', 'sql2017', 'sql2008', 'hyperv')]
    [string]$app_id,

    [Parameter(ParameterSetName='nonId')]
    [string]$app_cluster_name,

    [Parameter(ParameterSetName='nonId')]
    [string]$app_service_name,

    [Parameter(ParameterSetName='nonId')]
    [string]$vcenter_hostname,

    [Parameter(ParameterSetName='nonId')]
    [string]$vcenter_username,

    [Parameter(ParameterSetName='nonId')]
    [string]$vcenter_password,

    [Parameter(ParameterSetName='nonId')]
    [string]$agent_hostname,

    [Parameter(ParameterSetName='nonId')]
    [string]$agent_username,

    [Parameter(ParameterSetName='nonId')]
    [string]$agent_password,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$creation_time,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$last_modified_time,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$volume_list,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$downstream_volume_list,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$upstream_volume_list,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$volume_count,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$cache_pinned_volume_list,

    [Parameter(ParameterSetName='nonId')]
    [Object]$last_snapcoll,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snapcoll_count,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$schedule_list,

    [Parameter(ParameterSetName='nonId')]
    [string]$replication_partner,

    [Parameter(ParameterSetName='nonId')]
    [Object]$last_replicated_snapcoll,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$last_replicated_snapcoll_list,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'unprotected', 'remote', 'local')]
    [string]$protection_type,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$lag_time,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$is_standalone_volcoll,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$total_repl_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$repl_bytes_transferred,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$is_handing_over,

    [Parameter(ParameterSetName='nonId')]
    [string]$handover_replication_partner,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$metadata,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$srep_last_sync,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$srep_resync_percent

  )

  process
  {
    $API = 'volume_collections'
    $Param = @{
      ObjectName = 'VolumeCollection'
      APIPath = 'volume_collections'
    }

    if ($fields)
    {
        $Param.Fields = $fields
    }

    if ($id)
    {
        # Get a single object for given Id.
        $Param.Id = $id
        $ResponseObject = Get-NimbleStorageAPIObject @Param
        return $ResponseObject
    }
    else
    {
        # Get list of objects matching the given filter.
        $Param.Filter = @{}
        $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
        foreach ($key in $ParameterList.keys)
        {
            if ($key.ToLower() -ne 'fields')
            {
                $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
                if($var -and ($PSBoundParameters.ContainsKey($key)))
                {
                    $Param.Filter.Add("$($var.name)", ($var.value))
                }
            }
        }
        $ResponseObjectList = Get-NimbleStorageAPIObjectList @Param
        return $ResponseObjectList
    }
  }
}

function Set-NSVolumeCollection {
  # .ExternalHelp ../NimPSSDK.psm1-help.xml
  [CmdletBinding()]
  param(

    [Parameter(ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True, Mandatory = $True, ParameterSetName='all')]
    [string]$id,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $name,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $description,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'normal', 'high')]
    [string] $repl_priority,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'vss', 'vmware', 'none', 'generic')]
    [string] $app_sync,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $app_server,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'exchange_dag', 'sql2012', 'sql2014', 'inval', 'sql2005', 'sql2016', 'exchange', 'sql2017', 'sql2008', 'hyperv')]
    [string] $app_id,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $app_cluster_name,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $app_service_name,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $vcenter_hostname,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $vcenter_username,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $vcenter_password,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $agent_hostname,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $agent_username,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $agent_password,

    [Parameter(ParameterSetName='all')]
    [Object[]] $metadata

  )

    process {
        # Gather request params based on user input.
        $RequestData = @{}
        $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
        foreach ($key in $ParameterList.keys)
        {
            if ($key.ToLower() -ne 'id')
            {
                $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
                if($var -and ($PSBoundParameters.ContainsKey($key)))
                {
                    $RequestData.Add("$($var.name)", ($var.value))
                }
            }
        }
        $Params = @{
            ObjectName = 'VolumeCollection'
            APIPath = 'volume_collections'
            Id = $id
            Properties = $RequestData
        }

        $ResponseObject = Set-NimbleStorageAPIObject @Params
        return $ResponseObject
    }
}

function Remove-NSVolumeCollection {
  # .ExternalHelp ../NimPSSDK.psm1-help.xml
  [CmdletBinding()]
  param(
    [Parameter(ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True, Mandatory = $True, ParameterSetName='id')]
    [string]$id
  )

  process {
    $Params = @{
        ObjectName = 'VolumeCollection'
        APIPath = 'volume_collections'
        Id = $id
    }

    Remove-NimbleStorageAPIObject @Params
  }
}

function Invoke-NSVolumeCollectionPromote {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'volume_collections'
        Action = 'promote'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Invoke-NSVolumeCollectionDemote {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$replication_partner_id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$invoke_on_upstream_partner

  )

  process{
    $Params = @{
        APIPath = 'volume_collections'
        Action = 'demote'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Start-NSVolumeCollectionHandover {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$replication_partner_id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$no_reverse,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$invoke_on_upstream_partner,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$override_upstream_down

  )

  process{
    $Params = @{
        APIPath = 'volume_collections'
        Action = 'handover'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Stop-NSVolumeCollectionHandover {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'volume_collections'
        Action = 'abort_handover'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSVolumeCollection {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'volume_collections'
        Action = 'validate'
        ReturnType = 'NsAppServerResp'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}


# SIG # Begin signature block
# MIIgzgYJKoZIhvcNAQcCoIIgvzCCILsCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBirdfA1KeokSz6
# GMZhuLV9zkwRBOExaFrbjLxct+darqCCEIwwggVRMIIEOaADAgECAhAqlTIY4QtL
# e2/RSyqeww0mMA0GCSqGSIb3DQEBCwUAMIG9MQswCQYDVQQGEwJVUzEXMBUGA1UE
# ChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
# cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
# cml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290
# IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE2MDUxMjAwMDAwMFoXDTI2MDUx
# MTIzNTk1OVowgZExCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jw
# b3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazFCMEAGA1UE
# AxM5U3ltYW50ZWMgQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIENvZGUgU2ln
# bmluZyBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApZCU
# ss4Vva9QGeDEzgpo6PhoHDzlK84LS1feob0ads/HnzSxAG14+SblzJmsdMae4Gzh
# LZEgk4drboRs1S5SF9CP2ers/Owg8g3aP22cJdHb+yDs8ND/SxC2uTkRjfYMokxP
# uB33fdDlz/dcM4BmpNYib3vjeBcGBfTGxpS3/stWKn4P+hjzSANNp24WtxUbfdwv
# 20MOKR7ReG9oGBu3gst+WI/Y0ph/kE27xws8cf7MxMv2o0IQrB3Kg/yRviyqgK+3
# mWlGcdOVIJnNUS6V+KwSHnzitCJpLgvAF3yg/e1cpi4iK2X/fc0xpGOs3yLlk3yi
# ToLCEyy/HIsiPatm7QIDAQABo4IBdTCCAXEwLgYIKwYBBQUHAQEEIjAgMB4GCCsG
# AQUFBzABhhJodHRwOi8vcy5zeW1jZC5jb20wEgYDVR0TAQH/BAgwBgEB/wIBADBg
# BgNVHSAEWTBXMFUGBWeBDAEDMEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1j
# Yi5jb20vY3BzMCUGCCsGAQUFBwICMBkaF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBh
# MDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9zLnN5bWNiLmNvbS91bml2ZXJzYWwt
# cm9vdC5jcmwwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwMwDgYDVR0PAQH/BAQDAgEG
# MCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0yLTM4ODAdBgNV
# HQ4EFgQUq4sRSQsqAmJ1SpvFAiCghNJL+N4wHwYDVR0jBBgwFoAUtnf6aUhHn1MS
# 1cLqBzJ2B9GXBxkwDQYJKoZIhvcNAQELBQADggEBADAxqBF+Ga4dNNPS18ywHMoB
# oUoWX2jFyk0FWQH0/IUKp88fsBwgZAlBGBK0490yM3KZEytIXUmWESLnucRvBTBN
# bKwzvk1PImLW8WcqFnvGjI4OuZYAnQ5kAZJk6jf4BH4RYm+MLJxdC7j/3X9AzOiI
# 8p0mNEm0H735Wz94cy6B+mka85SPlTB+wrTYlSXSev6KOOiwb/ZvOfDO+oRWEH9W
# p8UUYLRPWjmBSqzhMmBLDhSg9R6hSEOXWZG9HWhmmDAAi8JZ1H72hRt6f7rbZWgO
# rW5ztlQ59GgDhXyhvFOzO6GCP3gkNQKkroWGwgXngHVcBZF57aqNh2kmiheB58Mw
# ggWNMIIDdaADAgECAgphLSPLAAAAAAAhMA0GCSqGSIb3DQEBBQUAMH8xCzAJBgNV
# BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
# HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAMTIE1pY3Jvc29m
# dCBDb2RlIFZlcmlmaWNhdGlvbiBSb290MB4XDTExMDIyMjE5NDYzOVoXDTIxMDIy
# MjE5NTYzOVowgb0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5j
# LjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMp
# IDIwMDggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE4
# MDYGA1UEAxMvVmVyaVNpZ24gVW5pdmVyc2FsIFJvb3QgQ2VydGlmaWNhdGlvbiBB
# dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHYTdesQE0
# 22LXFZv/WFqMIyPWYI6R15CYg3rmWBk4jMX25WSFtKJx++29udrNTQC0yC1zpcdp
# cZUfOTyyRAec6A76TUrEId8pYY8yImGCxYcfbox8XxYgUUTRcE9X6uMc48x57ljY
# DsKzRZPALOeaFyt7ADd6QTN44TPi8xAaf4csvvb190Li5b+HYolfAEvfxd3kdUQy
# QToecW5pywt1RgjRytIrldDP+7lAa2SMV038ExF5hO1eVPY0nwgB8xAlBhdK2vEd
# emZrmGBmpNnv0i6C8fDvCepEyRVq4gNuM9Osn1UAx/YIapS5X9zgM/GEYPlbJxG0
# /Bbyu1ZqgCWNAgMBAAGjgcswgcgwEQYDVR0gBAowCDAGBgRVHSAAMA8GA1UdEwEB
# /wQFMAMBAf8wCwYDVR0PBAQDAgGGMB0GA1UdDgQWBBS2d/ppSEefUxLVwuoHMnYH
# 0ZcHGTAfBgNVHSMEGDAWgBRi+wohW39DbhHaCVRQa/XSlnHxnjBVBgNVHR8ETjBM
# MEqgSKBGhkRodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0
# cy9NaWNyb3NvZnRDb2RlVmVyaWZSb290LmNybDANBgkqhkiG9w0BAQUFAAOCAgEA
# WUdSmjRDPbATxDK4+DfZVVANKqRnZzOUyf/Y9QysjVo5g0htsrtDj3sL81uvNHpP
# nrcI5/4BOBHeLzucPpYLslCC5rVVtGCWE0jtJy0lAnI4s/NlWYpiM3bVbPmV9J01
# TIOgwWf8g7V2k8boUhtZubqFlAo70SgFGxkM8yMXZUZ4DtlzSsC8PcBI4aT4h+UW
# 4VaHZTjhABeiHkQr9k9aKTywG7hfZUtI62qYKV5X4vVi2ENHsy5qE0GnfTgjBg33
# XOZ/us1lBJJSUiZgqKM8Ig2tt7pMMm9S3qubccme6L6fXqatd9dtJZVWKhhDwszB
# buHO30Xv/rdRKnyYtP5mg59rbOx01Z8yHyQ7QzrRBB0ASlul0m1mTMjBTezDATXB
# uHn94Mb2qCmgko09Q3d4ph5MwjgEWOs6gzQExjROE0WyW3IvcmpP5Rp8GGtE48hY
# H45xDIBrTit7PPhK45OSxLCavKZht9N8ynD1+v/NB6LZ6BHMbERQn3GwgtI2pllz
# vbcLW2mGe6Ufx53B0grdLkzCMbaHKo0Qevqnfjxf8LCg9UUF3nkSegKF8R6K05mH
# FylcvnVY1nkBBpVjOfsFFsc9SVGs+muYLcyXbqyzw2+CnACWfyQN6VlAYbNk27n5
# QaG57tlYjf8EV87Y/ur/Z1vOE/yc/PbhZs2joN13EbIwggWiMIIEiqADAgECAhAo
# MknpQET0/8yu7uTbXTF2MA0GCSqGSIb3DQEBCwUAMIGRMQswCQYDVQQGEwJVUzEd
# MBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVj
# IFRydXN0IE5ldHdvcmsxQjBABgNVBAMTOVN5bWFudGVjIENsYXNzIDMgRXh0ZW5k
# ZWQgVmFsaWRhdGlvbiBDb2RlIFNpZ25pbmcgQ0EgLSBHMzAeFw0xODExMTkwMDAw
# MDBaFw0yMTExMTgyMzU5NTlaMIIBIzETMBEGCysGAQQBgjc8AgEDEwJVUzEZMBcG
# CysGAQQBgjc8AgECDAhEZWxhd2FyZTEZMBcGCysGAQQBgjc8AgEBDAhTYW4gSm9z
# ZTEdMBsGA1UEDxMUUHJpdmF0ZSBPcmdhbml6YXRpb24xEDAOBgNVBAUTBzU2OTky
# NjUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQHDAhT
# YW4gSm9zZTErMCkGA1UECgwiSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgQ29t
# cGFueTEWMBQGA1UECwwNTmltYmxlc3RvcmFnZTErMCkGA1UEAwwiSGV3bGV0dCBQ
# YWNrYXJkIEVudGVycHJpc2UgQ29tcGFueTCCASIwDQYJKoZIhvcNAQEBBQADggEP
# ADCCAQoCggEBAKWSqwdskNaMZ0X9Nqn4RKr2Bc131ZU5pS3FWyBGPRumS2sFtCTa
# frdZ9i1xQL0dF3KcNHFFBAnkM/Ig4+UNOR/TIlAD7ssnDxNxfYG07GXxPmAlogoI
# 2s6CWQ1mmLjZoJPHcGqcBsjKvn9sw/OZ1buOjB9SPBn02sh3S2L7dFnlQ1LuJDYa
# sL0BlOzye9leSysvqyhDwMsYv3K7wNpyLoxi7Ee4z/ZBupMZY3LY8F7RMg6W2aHK
# zzqDaP/X867mLqHedB6aK80aQY3C4MVFfOqiLHQFIG7/gVa16aO4U1q8HDUZswRx
# IeiRMOaHje8VRdhtWUU2U+CQC4/RRx1GLsMCAwEAAaOCAV8wggFbMAkGA1UdEwQC
# MAAwDgYDVR0PAQH/BAQDAgeAMCsGA1UdHwQkMCIwIKAeoByGGmh0dHA6Ly9yaC5z
# eW1jYi5jb20vcmguY3JsMGAGA1UdIARZMFcwVQYFZ4EMAQMwTDAjBggrBgEFBQcC
# ARYXaHR0cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGQwXaHR0cHM6
# Ly9kLnN5bWNiLmNvbS9ycGEwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwMwHwYDVR0j
# BBgwFoAUq4sRSQsqAmJ1SpvFAiCghNJL+N4wHQYDVR0OBBYEFCwOW0/Kegfs4BMM
# 4OMor35vnOjTMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYTaHR0cDovL3Jo
# LnN5bWNkLmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL3JoLnN5bWNiLmNvbS9yaC5j
# cnQwDQYJKoZIhvcNAQELBQADggEBAHFMScjMHXHXJv6cZj0Kwh1Uphw2DfoLL5rz
# dOYd0vT8PH3WU3WwfJssqsU6LxvPIQlVj75z73PoegdDYLOH2NRfxMGYuw9Ru+4P
# vBEjWpJOeV3j5rM8yubcgF6twn6hkDbI5GsfaK7MJgovXOglzKuV7mCkJMHb8LDT
# qPE6mT9zDUR7YRaavhxV9YiiCnU7RLZd7HwtmJvygF/xkyJg+XYoTolQw7ZEtBVb
# UScbXdDmJO0BWpWlkAF+gMmIBlcdoZ7Avwf4DdQdp+KiDKRlMFTgp0fJ7uzfTZDY
# P+yEYst/1wNjCavw8EoALakact7/SR/x1WP0hR5qALp/jg4gdqIxgg+YMIIPlAIB
# ATCBpjCBkTELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0
# aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMUIwQAYDVQQDEzlT
# eW1hbnRlYyBDbGFzcyAzIEV4dGVuZGVkIFZhbGlkYXRpb24gQ29kZSBTaWduaW5n
# IENBIC0gRzMCECgySelARPT/zK7u5NtdMXYwDQYJYIZIAWUDBAIBBQCgfDAQBgor
# BgEEAYI3AgEMMQIwADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEE
# AYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQg9fCk9lAdBUzH
# GA6cAAP33jmf6+ok8WuF4c3TqsxCATYwDQYJKoZIhvcNAQEBBQAEggEAOPTtDz+I
# XWQD9jx/nU9Zun1qnT2RflJk4tTCanucsnzvMcFgMGIkzaWecMSY5P4oQtIcoD+2
# agZ4BqCnlaKJT9rt1PxNJXqBAkIRJb2FcAc39FsqlHN723gysaa/7Zcx1tyBfNib
# RXdfy7hCdcKznc1wzUSAoVhjT1CtnT5cTrdwHZURcj6tU6CAZatYXbCictI1tl7x
# eQfacaDI+PO7dZKnZBB9BYB7NI4lcSHAiB3ULaKE0l82jlt2V8A4e1mIDzaKKpql
# smKqW5YcaEO6qJfI9HdveUNDJ8YivrHVuNtaPs6yZhiULZvNX0s+nPtwFpPzNHjD
# eAzmgtHtvm/8AKGCDUQwgg1ABgorBgEEAYI3AwMBMYINMDCCDSwGCSqGSIb3DQEH
# AqCCDR0wgg0ZAgEDMQ8wDQYJYIZIAWUDBAIBBQAwdwYLKoZIhvcNAQkQAQSgaARm
# MGQCAQEGCWCGSAGG/WwHATAxMA0GCWCGSAFlAwQCAQUABCA6O67MmX84stv/E4bb
# CsBKMHBxr83PiymrDf8nWIW3+QIQeQ3jOKhlPBc5A5BKnsP+gRgPMjAyMTA0Mjkw
# NjIwNTNaoIIKNzCCBP4wggPmoAMCAQICEA1CSuC+Ooj/YEAhzhQA8N0wDQYJKoZI
# hvcNAQELBQAwcjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
# MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hB
# MiBBc3N1cmVkIElEIFRpbWVzdGFtcGluZyBDQTAeFw0yMTAxMDEwMDAwMDBaFw0z
# MTAxMDYwMDAwMDBaMEgxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg
# SW5jLjEgMB4GA1UEAxMXRGlnaUNlcnQgVGltZXN0YW1wIDIwMjEwggEiMA0GCSqG
# SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC5mGEZ8WK9Q0IpEXKY2tR1zoRQr0KdXVN
# lLQMULUmEP4dyG+RawyW5xpcSO9E5b+bYc0VkWJauP9nC5xj/TZqgfop+N0rcIXe
# AhjzeG28ffnHbQk9vmp2h+mKvfiEXR52yeTGdnY6U9HR01o2j8aj4S8bOrdh1nPs
# Tm0zinxdRS1LsVDmQTo3VobckyON91Al6GTm3dOPL1e1hyDrDo4s1SPa9E14RuMD
# gzEpSlwMMYpKjIjF9zBa+RSvFV9sQ0kJ/SYjU/aNY+gaq1uxHTDCm2mCtNv8VlS8
# H6GHq756WwogL0sJyZWnjbL61mOLTqVyHO6fegFz+BnW/g1JhL0BAgMBAAGjggG4
# MIIBtDAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAK
# BggrBgEFBQcDCDBBBgNVHSAEOjA4MDYGCWCGSAGG/WwHATApMCcGCCsGAQUFBwIB
# FhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwHwYDVR0jBBgwFoAU9LbhIB3+
# Ka7S5GGlsqIlssgXNW4wHQYDVR0OBBYEFDZEho6kurBmvrwoLR1ENt3janq8MHEG
# A1UdHwRqMGgwMqAwoC6GLGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9zaGEyLWFz
# c3VyZWQtdHMuY3JsMDKgMKAuhixodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc2hh
# Mi1hc3N1cmVkLXRzLmNybDCBhQYIKwYBBQUHAQEEeTB3MCQGCCsGAQUFBzABhhho
# dHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTwYIKwYBBQUHMAKGQ2h0dHA6Ly9jYWNl
# cnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURUaW1lc3RhbXBp
# bmdDQS5jcnQwDQYJKoZIhvcNAQELBQADggEBAEgc3LXpmiO85xrnIA6OZ0b9QnJR
# dAojR6OrktIlxHBZvhSg5SeBpU0UFRkHefDRBMOG2Tu9/kQCZk3taaQP9rhwz2Lo
# 9VFKeHk2eie38+dSn5On7UOee+e03UEiifuHokYDTvz0/rdkd2NfI1Jpg4L6GlPt
# kMyNoRdzDfTzZTlwS/Oc1np72gy8PTLQG8v1Yfx1CAB2vIEO+MDhXM/EEXLnG2RJ
# 2CKadRVC9S0yOIHa9GCiurRS+1zgYSQlT7LfySmoc0NR2r1j1h9bm/cuG08THfdK
# DXF+l7f0P4TrweOjSaH6zqe/Vs+6WXZhiV9+p7SOZ3j5NpjhyyjaW4emii8wggUx
# MIIEGaADAgECAhAKoSXW1jIbfkHkBdo2l8IVMA0GCSqGSIb3DQEBCwUAMGUxCzAJ
# BgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
# aWdpY2VydC5jb20xJDAiBgNVBAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBD
# QTAeFw0xNjAxMDcxMjAwMDBaFw0zMTAxMDcxMjAwMDBaMHIxCzAJBgNVBAYTAlVT
# MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
# b20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBp
# bmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC90DLuS82Pf92p
# uoKZxTlUKFe2I0rEDgdFM1EQfdD5fU1ofue2oPSNs4jkl79jIZCYvxO8V9PD4X4I
# 1moUADj3Lh477sym9jJZ/l9lP+Cb6+NGRwYaVX4LJ37AovWg4N4iPw7/fpX786O6
# Ij4YrBHk8JkDbTuFfAnT7l3ImgtU46gJcWvgzyIQD3XPcXJOCq3fQDpct1HhoXkU
# xk0kIzBdvOw8YGqsLwfM/fDqR9mIUF79Zm5WYScpiYRR5oLnRlD9lCosp+R1PrqY
# D4R/nzEU1q3V8mTLex4F0IQZchfxFwbvPc3WTe8GQv2iUypPhR3EHTyvz9qsEPXd
# rKzpVv+TAgMBAAGjggHOMIIByjAdBgNVHQ4EFgQU9LbhIB3+Ka7S5GGlsqIlssgX
# NW4wHwYDVR0jBBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wEgYDVR0TAQH/BAgw
# BgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwgweQYI
# KwYBBQUHAQEEbTBrMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5j
# b20wQwYIKwYBBQUHMAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdp
# Q2VydEFzc3VyZWRJRFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6
# Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww
# OqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
# RFJvb3RDQS5jcmwwUAYDVR0gBEkwRzA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUH
# AgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCwYJYIZIAYb9bAcBMA0G
# CSqGSIb3DQEBCwUAA4IBAQBxlRLpUYdWac3v3dp8qmN6s3jPBjdAhO9LhL/KzwMC
# /cWnww4gQiyvd/MrHwwhWiq3BTQdaq6Z+CeiZr8JqmDfdqQ6kw/4stHYfBli6F6C
# JR7Euhx7LCHi1lssFDVDBGiy23UC4HLHmNY8ZOUfSBAYX4k4YU1iRiSHY4yRUiyv
# KYnleB/WCxSlgNcSR3CzddWThZN+tpJn+1Nhiaj1a5bA9FhpDXzIAbG5KHW3mWOF
# IoxhynmUfln8jA/jb7UBJrZspe6HUSHkWGCbugwtK22ixH67xCUrRwIIfEmuE7bh
# fEJCKMYYVs9BNLZmXbZ0e/VWMyIvIjayS6JKldj1po5SMYICTTCCAkkCAQEwgYYw
# cjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQ
# d3d3LmRpZ2ljZXJ0LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hBMiBBc3N1cmVk
# IElEIFRpbWVzdGFtcGluZyBDQQIQDUJK4L46iP9gQCHOFADw3TANBglghkgBZQME
# AgEFAKCBmDAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkF
# MQ8XDTIxMDQyOTA2MjA1M1owKwYLKoZIhvcNAQkQAgwxHDAaMBgwFgQU4deCqOGR
# vu9ryhaRtaq0lKYkm/MwLwYJKoZIhvcNAQkEMSIEIPC1kNLFQr2AIE8cFWHdtRtm
# CnqcdDNFpNibgCHAUxcnMA0GCSqGSIb3DQEBAQUABIIBAF2QWc2vxW9dd6smvfvh
# 4Ildd4RZorYq0eWRm8COjxlzcQnJHTwi8mCiMrpVdRoHRN8qLZUs2o+qrLuMIJpz
# +0N0n/cfs5Xct6RblaZy35jPJagUWAQ5CbS0cEfwc4VQ4vdlIrcO/jzqJWP9Sf6y
# mnG+HqY43OvR04IbsLzOj0MH1eLwd0s/sAhh3fmN4uyQXCvZk9TPAcGybbLDvcSs
# NQqbS243XYsiNHzSbALAgE81frQTE0PPPedUggWBcHIQbMpFTpl7lR8fYA6Zt/ha
# zsajDZTEF306GIyKwSS+RA9rFQMgw+8DJcQnNx/Fb/9L/L2gnUnq/OicXZ1FcAjS
# qZI=
# SIG # End signature block