Functions_v7/Export-XurrentData.ps1

function Export-XurrentData
{
    param (
        [Parameter(Mandatory = $true)]
        [ValidateScript({ $null -ne $script:XurrentAuth.$_ })]
        [string]$Environment,
        [Parameter(Mandatory = $true)]
        [ValidateScript({ $_ -in $script:XurrentDataTypes })]
        [String[]]$Type,
        [ValidateScript({ (Get-Item $_) -is [System.IO.DirectoryInfo] })]
        [IO.FileInfo]$Path = $env:TEMP,
        [int]$Cache = $script:ExportCache,
        [DateTime]$from
    )
    # define path
    if ($Type.Count -eq 1)
    {
        $FilePath = Join-Path -Path $Path -ChildPath "$($Environment)_$($Type).csv"
        Write-Verbose -Message "export $($Type)"
    }
    else
    {
        $FilePath = Join-Path -Path $Path -ChildPath "Xurrent_export.zip"
        Write-Verbose -Message "export $($Type -join ',')"
    }
    if (Test-Path -Path $FilePath)
    {
        $FileCreationTime = ((Get-Date) - (Get-ChildItem -Path $FilePath).CreationTime).Minutes
        Write-Verbose -Message "last export $($FileCreationTime) minutes ago, cache set to $($Cache)"
    }
    if ($FileCreationTime -gt $Cache -or $null -eq $FileCreationTime)
    {
        try
        {
            if (Test-Path -Path $FilePath)
            {
                Write-Verbose -Message "remove cache $($FilePath)"
                Remove-Item -Path $FilePath -Force
            }
            Write-Verbose -Message "download export $($FilePath)"
            
            if ($null -ne $from)
            {
                Write-Verbose -Message "export updates since $($from.ToUniversalTime().ToString("yyyyMMddTHH:mm:ssZ"))"
                $body = @{
                    type = $Type -join ", "
                    from = $from.ToUniversalTime().ToString("yyyyMMddTHH:mm:ssZ")
                } | ConvertTo-Json
            }
            else
            {
                $body = @{
                    type = $Type -join ", "
                } | ConvertTo-Json
            }
            $token = Invoke-RestMethod -Method Post -Uri "$($script:XurrentAuth.$Environment.URL)/export" -Headers $script:XurrentAuth.$Environment.header -Body $body -ErrorAction Stop -Verbose:$false
            
            $export = Invoke-RestMethod -Method get -Uri "$($script:XurrentAuth.$Environment.URL)/export/$($token.token)" -Headers $script:XurrentAuth.$Environment.header -ErrorAction Stop -Verbose:$false
            # wait for export
            while ($export.state -ne "done")
            {
                $export = Invoke-RestMethod -Method get -Uri "$($script:XurrentAuth.$Environment.URL)/export/$($token.token)" -Headers $script:XurrentAuth.$Environment.header -ErrorAction Stop -Verbose:$false
                Start-Sleep -Seconds 10
            }
            
            # downlaod files
            Invoke-WebRequest -Uri $export.url -OutFile $FilePath
        }
        catch
        {
            Write-Error $_
            return
        }
        
    }
    
    if ([System.IO.Path]::GetExtension($FilePath) -match 'zip')
    {
        Expand-Archive -Path $FilePath -DestinationPath ([System.IO.Path]::GetFileNameWithoutExtension($FilePath)) -Force
        return Get-ChildItem -Path ([System.IO.Path]::GetFileNameWithoutExtension($FilePath))
    }
    else
    {
        return $FilePath
    }
}
# SIG # Begin signature block
# MIIeIgYJKoZIhvcNAQcCoIIeEzCCHg8CAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCiapGwXLEN334X
# TPh5wXFHKRxjqJ4XhuLAGcujeWaw1aCCGGcwggLjMIIBy6ADAgECAhBCCNCn9wPq
# pUWzhBFHlrjQMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNVBAMMCVJvbWFuIEVuejAe
# Fw0yNTAxMjgxODU2MDBaFw0zNTAxMjgxOTA1NTlaMBQxEjAQBgNVBAMMCVJvbWFu
# IEVuejCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALt5S9z43iR8NBGw
# YEauedJQedy94yOW/rOaYoX9Sn8YUkT6R9uEdnt5SbAHDw50q+76c2Sx0jPUMMn9
# V/15cyJbMu9Ej3+AiMfFi/opqzyhci/k46fd5ewdAJk5GGBHHJ5hO5zegTtEQWyX
# 2PMn3WE7B6Uy8FxQrxl+1e3DO1sDT/zhn8qeWEzTjM4/p3YFwR1pc7mX2DLLFybB
# V71DYeAWvjGF0z/dfi7ib1mLMsN4spML41umn+F/TQtf7QP68ft3ludk8Gd1e7D7
# sWDK+J6AN3iga6evVTucJB200eHFofh7HTdcncH/6ue/d4NvDvKjLjN295lMiWU8
# W7ojGCUCAwEAAaMxMC8wDgYDVR0PAQH/BAQDAgIEMB0GA1UdDgQWBBTsDKDLy1wE
# 1KpSirF8sbQKlb4PFzANBgkqhkiG9w0BAQsFAAOCAQEAV02VHByfqH3B7iP49kHp
# Un3DQ3thGaizIFL/prPdgzqJiAuBY/VMNY97/5tKIyzX5pEGoVeyR2wZKTGYu5xR
# aOLxhqk8TtPd2h1H4o8Tpsas6c5VsfbHKaPtdC2xRWJIK9f+LQmrQ8EQ/xNuuNv0
# InccOrm9L8z2P1JHde2LZD7qfM3N8h5WOCrV3QRb09WkMESJcHMoGVTAvUYj2iq0
# MZkXwwaNTcwD/zIxp1C2Z9VqX8etAPQHUeX2uPrJQdSHnrNaiNJAbUWBg3ZAKk4G
# ciK9DmWaN4ukbHpuj7dSZOW21q2thw0F+K7Rn3A2CJ+stdn8JD9n/8i/9tuetSVR
# 7TCCAxkwggIBoAMCAQICECgf8HLUn66mQrAI0KycNMIwDQYJKoZIhvcNAQEFBQAw
# FDESMBAGA1UEAwwJUm9tYW4gRW56MB4XDTI1MDEyODE5MzAzM1oXDTI2MDEyODE5
# NTAzM1owFDESMBAGA1UEAwwJUm9tYW4gRW56MIIBIjANBgkqhkiG9w0BAQEFAAOC
# AQ8AMIIBCgKCAQEAz+j0Awf9ccGPIKAfYQ5ZUmtjZuuFNnIjHb9gtjeSNJ8BluHB
# HKF8tSCwvpMrevoOy0xpeg/khZSvQ+Hx7M4oHeV0A2mK3M3ut8JvLxWEDlon41hD
# CEhUcT+vD/9fXHUecbRBGpSGcBghkgfM3euU3MhpJNoVE3ZPp3q4Us5A2t5B99PR
# T2q1kcZyP/M0Z6ww8KHPBiJueK3frwPAxuIXEOBuYEIRWE3sugozFIQXUvpSiT4W
# 7CXqYDIALlSpd51Ir/tT7Yx1UzR2oz7BKW6jrL9t3guTDnJ0WyQVFWRRUKiysvCA
# +VHySpg4U72CSjccjXTVxFsI0KLXqi2dA7xPCQIDAQABo2cwZTAOBgNVHQ8BAf8E
# BAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwHwYDVR0jBBgwFoAU7Aygy8tcBNSq
# UoqxfLG0CpW+DxcwHQYDVR0OBBYEFO6xfVS2jp6QRsW08nYw70j3fyy/MA0GCSqG
# SIb3DQEBBQUAA4IBAQBs22lqOGJLfdTyGQo9Jgmn96B7WR1inhEnOM66UU44U51a
# L/LJYcGUI27PUFTG6tXad38v6fJj8o1otrYye16UIsFyxAO4UtiXH/dFQukp/YWl
# /SP69DlYjOAaNu7lqxK7JfIzfSPgsoZjp7KmT4WHO5Zs7F8C9qYab5/hZGAKLg8W
# 6Tk2pAdNhleScgvW2pW0podkDBDVjBng4ItyYe0KigHzH4KtYeFqRnzM/29NMAOq
# o4eYPwH2jMTRwjDDqhF8h9IfgoT3LD0nZK0bmy9PRzBqyLmaR4EmZ1b3ziDes+ak
# p5tXqY28722FtIKI2WKiUZ7WTUEcXdaoTxEQ6noVMIIFgzCCA2ugAwIBAgIORea7
# A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMXR2xvYmFsU2ln
# biBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
# b2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYD
# VQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2ln
# bjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
# AgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRIxutbPK6DuEGSMxSkb3/pKszG
# sIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE3nOUTvOniX9PeGMI
# yBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbFvuJt
# MgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ay
# d2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGB
# zVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02
# oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2SXcwvHE35absIQh1/OZhFj93
# 1dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguyCLNhZglqsQY6ZZZZwPA1
# /cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP0f/fMBH5
# hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvc
# E+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBh
# MA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWj
# kxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdT
# oDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLNnsAEoJFp5lzQhN7craJP6Ed4
# 1mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0lV7Ae46ZeBZD
# E1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY
# BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN
# 25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/Q
# cYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGyt
# Xm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZpnOZ7BN9uBmm23goJSFmH63sU
# YHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/TuTAjB0yPEL+GltmZ
# WrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItKoZB0
# JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5
# d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeD
# BVrJpBAwggZZMIIEQaADAgECAg0B7BySQN79LkBdfEd0MA0GCSqGSIb3DQEBDAUA
# MEwxIDAeBgNVBAsTF0dsb2JhbFNpZ24gUm9vdCBDQSAtIFI2MRMwEQYDVQQKEwpH
# bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTE4MDYyMDAwMDAwMFoX
# DTM0MTIxMDAwMDAwMFowWzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNp
# Z24gbnYtc2ExMTAvBgNVBAMTKEdsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0g
# U0hBMzg0IC0gRzQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDwAuIw
# I/rgG+GadLOvdYNfqUdSx2E6Y3w5I3ltdPwx5HQSGZb6zidiW64HiifuV6PENe2z
# NMeswwzrgGZt0ShKwSy7uXDycq6M95laXXauv0SofEEkjo+6xU//NkGrpy39eE5D
# iP6TGRfZ7jHPvIo7bmrEiPDul/bc8xigS5kcDoenJuGIyaDlmeKe9JxMP11b7Lbv
# 0mXPRQtUPbFUUweLmW64VJmKqDGSO/J6ffwOWN+BauGwbB5lgirUIceU/kKWO/EL
# sX9/RpgOhz16ZevRVqkuvftYPbWF+lOZTVt07XJLog2CNxkM0KvqWsHvD9WZuT/0
# TzXxnA/TNxNS2SU07Zbv+GfqCL6PSXr/kLHU9ykV1/kNXdaHQx50xHAotIB7vSqb
# u4ThDqxvDbm19m1W/oodCT4kDmcmx/yyDaCUsLKUzHvmZ/6mWLLU2EESwVX9bpHF
# u7FMCEue1EIGbxsY1TbqZK7O/fUF5uJm0A4FIayxEQYjGeT7BTRE6giunUlnEYuC
# 5a1ahqdm/TMDAd6ZJflxbumcXQJMYDzPAo8B/XLukvGnEt5CEk3sqSbldwKsDlcM
# CdFhniaI/MiyTdtk8EWfusE/VKPYdgKVbGqNyiJc9gwE4yn6S7Ac0zd0hNkdZqs0
# c48efXxeltY9GbCX6oxQkW2vV4Z+EDcdaxoU3wIDAQABo4IBKTCCASUwDgYDVR0P
# AQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFOoWxmnn48tX
# RTkzpPBAvtDDvWWWMB8GA1UdIwQYMBaAFK5sBaOTE+Ki5+LXHNbH8H/IZ1OgMD4G
# CCsGAQUFBwEBBDIwMDAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AyLmdsb2JhbHNp
# Z24uY29tL3Jvb3RyNjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLmdsb2Jh
# bHNpZ24uY29tL3Jvb3QtcjYuY3JsMEcGA1UdIARAMD4wPAYEVR0gADA0MDIGCCsG
# AQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAN
# BgkqhkiG9w0BAQwFAAOCAgEAf+KI2VdnK0JfgacJC7rEuygYVtZMv9sbB3DG+wsJ
# rQA6YDMfOcYWaxlASSUIHuSb99akDY8elvKGohfeQb9P4byrze7AI4zGhf5LFST5
# GETsH8KkrNCyz+zCVmUdvX/23oLIt59h07VGSJiXAmd6FpVK22LG0LMCzDRIRVXd
# 7OlKn14U7XIQcXZw0g+W8+o3V5SRGK/cjZk4GVjCqaF+om4VJuq0+X8q5+dIZGkv
# 0pqhcvb3JEt0Wn1yhjWzAlcfi5z8u6xM3vreU0yD/RKxtklVT3WdrG9KyC5qucqI
# wxIwTrIIc59eodaZzul9S5YszBZrGM3kWTeGCSziRdayzW6CdaXajR63Wy+ILj19
# 8fKRMAWcznt8oMWsr1EG8BHHHTDFUVZg6HyVPSLj1QokUyeXgPpIiScseeI85Zse
# 46qEgok+wEr1If5iEO0dMPz2zOpIJ3yLdUJ/a8vzpWuVHwRYNAqJ7YJQ5NF7qMnm
# vkiqK1XZjbclIA4bUaDUY6qD6mxyYUrJ+kPExlfFnbY8sIuwuRwx773vFNgUQGwg
# HcIt6AvGjW2MtnHtUiH+PvafnzkarqzSL3ogsfSsqh3iLRSd+pZqHcY8yvPZHL9T
# TaRHWXyVxENB+SXiLBB+gfkNlKd98rUJ9dhgckBQlSDUQ0S++qCV5yBZtnjGpGqq
# IpswggZ7MIIEY6ADAgECAhABB2SbCLCn/n3WVKjy9Cn2MA0GCSqGSIb3DQEBCwUA
# MFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYD
# VQQDEyhHbG9iYWxTaWduIFRpbWVzdGFtcGluZyBDQSAtIFNIQTM4NCAtIEc0MB4X
# DTIzMTEwNzE3MTM0MFoXDTM0MTIwOTE3MTM0MFowbDELMAkGA1UEBhMCQkUxGTAX
# BgNVBAoMEEdsb2JhbFNpZ24gbnYtc2ExQjBABgNVBAMMOUdsb2JhbHNpZ24gVFNB
# IGZvciBNUyBBdXRoZW50aWNvZGUgQWR2YW5jZWQgLSBHNCAtIDIwMjMxMTCCAaIw
# DQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALmomz6pptxC00Gfik1DRwn5aIsT
# +3WPmVzKgEJh74664XHWR5CtmU1jA7bvqSaj+zbqbhRH99dNRHSyKl6dMl8EaK+3
# yc9bCycvKE6C3o61s4n65xFJyCdAXpNvCSHG1l+Y87e6oUByrt0P384hQgRUOOrK
# It0DuRqh4LcclyhzLCCNP2aydpnaOsn2cpZSdNh9ZW7gIm/+r0b9fq9OyImBMqGY
# K49357Kj1ZqfH9GDIE5N70w7UXuRI+GDSqJvuATmZBRLLjt86bX9s242REA29b4h
# 5ujQ+n73qE5GrJSw0Cl04rGXqn848YnierfKbAUwGFhvfVt+OpHUfG9O/+kxfqWC
# NeEu/wpg6lKFV4d65CqvPKLfedvgeY/fke3/Jj12QEvfG0v2gqjqgyitU7a3ltcd
# LYzvv32KnpR8U6lkBGt8zBZnGTGCkun0OrzUiKi9ju5PEnnY/+CWkFB+ARX/8ONs
# Xhr0r0DF5Sc9Rvg6QTj/OUi03AYB+zsIKGhpqQIDAQABo4IBqDCCAaQwDgYDVR0P
# AQH/BAQDAgeAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMB0GA1UdDgQWBBT4o6fl
# I3VW0aWlO4luFnHLVdaICTBWBgNVHSAETzBNMAgGBmeBDAEEAjBBBgkrBgEEAaAy
# AR4wNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVw
# b3NpdG9yeS8wDAYDVR0TAQH/BAIwADCBkAYIKwYBBQUHAQEEgYMwgYAwOQYIKwYB
# BQUHMAGGLWh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2NhL2dzdHNhY2FzaGEz
# ODRnNDBDBggrBgEFBQcwAoY3aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9j
# YWNlcnQvZ3N0c2FjYXNoYTM4NGc0LmNydDAfBgNVHSMEGDAWgBTqFsZp5+PLV0U5
# M6TwQL7Qw71lljBBBgNVHR8EOjA4MDagNKAyhjBodHRwOi8vY3JsLmdsb2JhbHNp
# Z24uY29tL2NhL2dzdHNhY2FzaGEzODRnNC5jcmwwDQYJKoZIhvcNAQELBQADggIB
# AHArWS5rBVK1Jlchtc8Q6JrwrMtyVGhtVUWZljlYRxvQaWsobPCTi6ZEy3jJq05i
# xIIfBZDerAaWO66gRg2BhuyQcNyyNS7LVS1DR2+Lek5BP/6yIZxAMditj5U3GoLr
# yLcOp6FcGqrAakn9D4oEBybC2Q7PJgN9MEW/bFB6D+kkNkyApOgiQStgZrysC88y
# yIB/KkbHnMLlHw/WVfkCDGHFvGKPXaMiYetqmHiwZC8JsA3JuAgcWl4GMCRdcYN2
# OP1IaphdP0JIbyyENvzm/pLC0nBjQYO19KAKZVrVQfSDqDAbyNZbbkDow83mN+LJ
# 6VVci1PE7uHfu9O1kYq7Z3O1CPCoSKsOG+BEcL7iBOcRqeE/UEGaDGYKVkXBBUH5
# QhX9BKaRtfpMFop+fgWaoYd0VP3Hp8Dmk2edpB0qXDoEtU7VFx6j4o3uPjwKgU9Z
# MfsF/5gZ05i4BthIm0mT4QLHbbIsitzqXtvUb/0HrB48NlF38T4skmT1mPBPK5oQ
# 89pfOPpKQsl/YKObSaEzCxDOwk+l07KAWBkm+kMJSrV11Z7Yrw2vHrb7S0l4/V+x
# 6obteup3utHs54Y1Cflau5bh9gpX+f3W/iQaAFC9nk3IkRg37NIozg+ul0Ydwnxg
# y7uaZK6WtbnlynrletZ4QSTeZsn2UBdFpX/TH+oe2u/oMYIFETCCBQ0CAQEwKDAU
# MRIwEAYDVQQDDAlSb21hbiBFbnoCECgf8HLUn66mQrAI0KycNMIwDQYJYIZIAWUD
# BAIBBQCgTDAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAvBgkqhkiG9w0BCQQx
# IgQgmHi+/rOPrnGbDQRAzjIbC7h/Zm5ieuDkvmBf32VNV8YwDQYJKoZIhvcNAQEB
# BQAEggEAspuMhXWwrD9F4raip/AzVphEhFHM9MWI/rEYXeq3VoBnMsijhp+mPIp/
# BkDDpHq35hkEEDLn1HuE4f0TBmp2IfICdwC/2j2dPrx9CzShbqlzvM6OrqLAwS8R
# AL1pr5ELO1wnMtPy0rGRghvo9jeZOCj2BJU7BnvWy08+ukMSx3tBLinuSld3JWO7
# i/Dw8iQX5c1tpopTxkYDmtWjvlObkHXEOp4bVbdBXmXX9H5vQrTTqszzk4CjQMWb
# qATI722yk258LzgOVUVFxG7Bsl/HjJNeXzGJMT5AH2MP7k0hTnmpAqXmizM1GKcU
# QbX04CUctDs7NlqEE77foY0OHAhEDaGCA2wwggNoBgkqhkiG9w0BCQYxggNZMIID
# VQIBATBvMFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNh
# MTEwLwYDVQQDEyhHbG9iYWxTaWduIFRpbWVzdGFtcGluZyBDQSAtIFNIQTM4NCAt
# IEc0AhABB2SbCLCn/n3WVKjy9Cn2MAsGCWCGSAFlAwQCAaCCAT0wGAYJKoZIhvcN
# AQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjUwMTI5MTMyODA3WjAr
# BgkqhkiG9w0BCTQxHjAcMAsGCWCGSAFlAwQCAaENBgkqhkiG9w0BAQsFADAvBgkq
# hkiG9w0BCQQxIgQg5BjS1CWq5APqxq6NLdqsrA1CnQ9YsuvPBhOTNvG8QncwgaQG
# CyqGSIb3DQEJEAIMMYGUMIGRMIGOMIGLBBRE05OczRuIf4Z6zNqB7K8PZfzSWTBz
# MF+kXTBbMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEx
# MC8GA1UEAxMoR2xvYmFsU2lnbiBUaW1lc3RhbXBpbmcgQ0EgLSBTSEEzODQgLSBH
# NAIQAQdkmwiwp/591lSo8vQp9jANBgkqhkiG9w0BAQsFAASCAYBdUczAPBe9GHk0
# wqcYr3e+biba/NPu3L7a1S3gq/A6GJ1LFZzPVbPTc9JlGQG39ZOYM7gZxMBNURwP
# kticRbXZxbDZS9Ba29hocOQBkHIR/bf8YgqT/BhZ0RWxlyQ/M7QPBexWuqE+1rD7
# WGXp4GnSC9j+VWS8xruD5z8q0xcJcLDOIvONtbfD35oZGPXfv/L1XX2FFP7DIOrj
# qxR7ArkcNukJhE+q1VV3kTCnuSyooUyC866Vpi8VlomqGGZILFg9SdI7BV6aun6C
# JQt6ErDM++HVRjI/7R5W11eleIAx+JCuGkoBwTspIDTpTKRZ8ULmZMICT8yFDCxR
# EU3mgBSZAj9LBvJPHHMuoEdSFQjU7E7PVbzaXYt8vuRHohwiNCfB9U9AgHU7t4xq
# vOIZNdHTF1wKc14G19CtVDIrBzZiPDHqsm5Tlw8OUNzrDL7u20mq1gC4HT7k4DoZ
# HfNlMZ4Xn2q9974khUlXslibZV+9BdChlz6CrbYg+PuoMJOPm3I=
# SIG # End signature block