Tests/DCCMPA703-DSC.Tests.ps1

#Requires -Modules Pester
<#
.SYNOPSIS
    DCCMPA-703 DSC Configuration and Push Tests
.DESCRIPTION
    Pester tests for DSC configuration compilation on localhost and push
    to remote machine 100.106.191.184 with credentials Dell/Dell@123.
.NOTES
    Run with: Invoke-Pester -Path <this file> -Output Detailed
#>


BeforeAll {
    $script:ModuleName = "DellBIOSProvider"
    $script:ModuleVersion = "2.10.2"
    $script:RemoteNode = "100.106.191.184"
    $script:TestPassword = "Dell@123"
    $script:RemoteUser = "Dell"
    $script:ConfigOutputDir = Join-Path $env:TEMP "DCCMPA703_PesterDSC"
    
    # Cleanup previous test output
    if (Test-Path $script:ConfigOutputDir) {
        Remove-Item $script:ConfigOutputDir -Recurse -Force -ErrorAction SilentlyContinue
    }
    New-Item -ItemType Directory -Path $script:ConfigOutputDir -Force | Out-Null
    
    # Build credentials
    $secPwd = ConvertTo-SecureString $script:TestPassword -AsPlainText -Force
    $script:Credential = New-Object System.Management.Automation.PSCredential($script:RemoteUser, $secPwd)
    
    # Test remote connectivity
    $script:RemoteReachable = $false
    try {
        $tcp = Test-NetConnection -ComputerName $script:RemoteNode -Port 5985 -WarningAction SilentlyContinue
        if ($tcp.TcpTestSucceeded) {
            $session = New-PSSession -ComputerName $script:RemoteNode -Credential $script:Credential -ErrorAction Stop
            $script:RemoteReachable = $true
            Remove-PSSession $session
        }
    } catch { }
    
    Write-Host "Remote $($script:RemoteNode) reachable: $($script:RemoteReachable)" -ForegroundColor $(if ($script:RemoteReachable) { 'Green' } else { 'Yellow' })
}

AfterAll {
    if (Test-Path $script:ConfigOutputDir) {
        Remove-Item $script:ConfigOutputDir -Recurse -Force -ErrorAction SilentlyContinue
    }
}

Describe "DSC Module and Resource Availability" {
    It "DellBIOSProvider module should be available" {
        $mod = Get-Module -Name $script:ModuleName -ListAvailable | Where-Object { $_.Version -eq $script:ModuleVersion }
        $mod | Should -Not -BeNullOrEmpty
    }
    
    It "Should have DSC resources registered" {
        $resources = Get-DscResource -Module $script:ModuleName -ErrorAction SilentlyContinue
        $resources.Count | Should -BeGreaterThan 0
    }
}

Describe "DSC Configuration Compilation - Local (localhost)" {
    It "Should compile POSTBehavior DSC config for localhost" {
        Configuration LocalPOSTBehavior {
            Import-DscResource -ModuleName @{ModuleName="DellBIOSProvider"; RequiredVersion="2.10.2"}
            Node "localhost" {
                POSTBehavior PostSettings {
                    Category = "POSTBehavior"
                    Numlock  = "Disabled"
                }
            }
        }
        $outPath = Join-Path $script:ConfigOutputDir "LocalPOSTBehavior"
        LocalPOSTBehavior -OutputPath $outPath -ErrorAction Stop | Out-Null
        Test-Path "$outPath\localhost.mof" | Should -BeTrue
    }
    
    It "Should compile POSTBehavior DSC config with password for localhost" {
        Configuration LocalPOSTBehaviorPwd {
            Import-DscResource -ModuleName @{ModuleName="DellBIOSProvider"; RequiredVersion="2.10.2"}
            Node "localhost" {
                POSTBehavior PostSettings {
                    Category = "POSTBehavior"
                    Numlock  = "Disabled"
                    Password = $script:TestPassword
                }
            }
        }
        $outPath = Join-Path $script:ConfigOutputDir "LocalPOSTBehaviorPwd"
        LocalPOSTBehaviorPwd -OutputPath $outPath -ErrorAction Stop | Out-Null
        Test-Path "$outPath\localhost.mof" | Should -BeTrue
    }
    
    It "Should compile PowerManagement DSC config with password for localhost" {
        Configuration LocalPowerMgmt {
            Import-DscResource -ModuleName @{ModuleName="DellBIOSProvider"; RequiredVersion="2.10.2"}
            Node "localhost" {
                PowerManagement PwrSettings {
                    Category       = "PowerManagement"
                    BlockDefinition = "1"
                    AutoOnHr       = 15
                    AutoOnMn       = 42
                    Password       = $script:TestPassword
                }
            }
        }
        $outPath = Join-Path $script:ConfigOutputDir "LocalPowerMgmt"
        LocalPowerMgmt -OutputPath $outPath -ErrorAction Stop | Out-Null
        Test-Path "$outPath\localhost.mof" | Should -BeTrue
    }
    
    It "Should compile Security DSC config with password for localhost" {
        Configuration LocalSecurity {
            Import-DscResource -ModuleName @{ModuleName="DellBIOSProvider"; RequiredVersion="2.10.2"}
            Node "localhost" {
                Security SecSettings {
                    Category = "Security"
                    Password = $script:TestPassword
                }
            }
        }
        $outPath = Join-Path $script:ConfigOutputDir "LocalSecurity"
        LocalSecurity -OutputPath $outPath -ErrorAction Stop | Out-Null
        Test-Path "$outPath\localhost.mof" | Should -BeTrue
    }
    
    It "Should compile all 19 categories combined for localhost" {
        Configuration LocalAllCategories {
            Import-DscResource -ModuleName @{ModuleName="DellBIOSProvider"; RequiredVersion="2.10.2"}
            Node "localhost" {
                POSTBehavior P1 { Category = "POSTBehavior"; Password = $script:TestPassword }
                PowerManagement P2 { Category = "PowerManagement"; BlockDefinition = "1"; Password = $script:TestPassword }
                Security P3 { Category = "Security"; Password = $script:TestPassword }
                SystemConfiguration P4 { Category = "SystemConfiguration"; Password = $script:TestPassword }
                Performance P5 { Category = "Performance"; Password = $script:TestPassword }
                AdvancedBootOptions P6 { Category = "AdvancedBootOptions"; Password = $script:TestPassword }
                MiscellaneousDevices P7 { Category = "MiscellaneousDevices"; Password = $script:TestPassword }
                Wireless P8 { Category = "Wireless"; Password = $script:TestPassword }
                Maintenance P9 { Category = "Maintenance"; Password = $script:TestPassword }
                Video P10 { Category = "Video"; Password = $script:TestPassword }
                SecureBoot P11 { Category = "SecureBoot"; Password = $script:TestPassword }
                TPMSecurity P12 { Category = "TPMSecurity"; Password = $script:TestPassword }
                VirtualizationSupport P13 { Category = "VirtualizationSupport"; Password = $script:TestPassword }
                SystemLogs P14 { Category = "SystemLogs"; Password = $script:TestPassword }
                StealthModeControl P15 { Category = "StealthModeControl"; Password = $script:TestPassword }
                IntelSoftwareGuardExtensions P16 { Category = "IntelSoftwareGuardExtensions"; Password = $script:TestPassword }
                SupportAssistSystemResolution P17 { Category = "SupportAssistSystemResolution"; Password = $script:TestPassword }
                AdvancedConfigurations P18 { Category = "AdvancedConfigurations"; Password = $script:TestPassword }
                BIOSSetupAdvancedMode P19 { Category = "BIOSSetupAdvancedMode"; Password = $script:TestPassword }
            }
        }
        $outPath = Join-Path $script:ConfigOutputDir "LocalAllCategories"
        LocalAllCategories -OutputPath $outPath -ErrorAction Stop | Out-Null
        Test-Path "$outPath\localhost.mof" | Should -BeTrue
        (Get-Item "$outPath\localhost.mof").Length | Should -BeGreaterThan 1000
    }
}

Describe "DSC Local Push - localhost" {
    It "Should push POSTBehavior config to localhost" {
        $mofPath = Join-Path $script:ConfigOutputDir "LocalPOSTBehavior"
        if (-not (Test-Path "$mofPath\localhost.mof")) {
            Set-ItResult -Skipped -Because "MOF not compiled"
            return
        }
        Start-DscConfiguration -Path $mofPath -Wait -Force -ErrorAction Stop
    }

    It "Should push POSTBehavior with password config to localhost" {
        $mofPath = Join-Path $script:ConfigOutputDir "LocalPOSTBehaviorPwd"
        if (-not (Test-Path "$mofPath\localhost.mof")) {
            Set-ItResult -Skipped -Because "MOF not compiled"
            return
        }
        Start-DscConfiguration -Path $mofPath -Wait -Force -ErrorAction Stop
    }
    
    It "Should push PowerManagement with password config to localhost" {
        $mofPath = Join-Path $script:ConfigOutputDir "LocalPowerMgmt"
        if (-not (Test-Path "$mofPath\localhost.mof")) {
            Set-ItResult -Skipped -Because "MOF not compiled"
            return
        }
        Start-DscConfiguration -Path $mofPath -Wait -Force -ErrorAction Stop
    }
    
    It "Should push Security with password config to localhost" {
        $mofPath = Join-Path $script:ConfigOutputDir "LocalSecurity"
        if (-not (Test-Path "$mofPath\localhost.mof")) {
            Set-ItResult -Skipped -Because "MOF not compiled"
            return
        }
        Start-DscConfiguration -Path $mofPath -Wait -Force -ErrorAction Stop
    }

    It "Should push all 19 categories combined config to localhost" {
        $mofPath = Join-Path $script:ConfigOutputDir "LocalAllCategories"
        if (-not (Test-Path "$mofPath\localhost.mof")) {
            Set-ItResult -Skipped -Because "MOF not compiled"
            return
        }
        Start-DscConfiguration -Path $mofPath -Wait -Force -ErrorAction Stop
    }
}

Describe "DSC Configuration Compilation - Remote (100.106.191.184)" {
    It "Should compile POSTBehavior for remote node" {
        Configuration RemotePOSTBehavior {
            Import-DscResource -ModuleName @{ModuleName="DellBIOSProvider"; RequiredVersion="2.10.2"}
            Node "100.106.191.184" {
                POSTBehavior PostSettings {
                    Category = "POSTBehavior"
                    Numlock  = "Disabled"
                    Password = $script:TestPassword
                }
            }
        }
        $outPath = Join-Path $script:ConfigOutputDir "RemotePOSTBehavior"
        RemotePOSTBehavior -OutputPath $outPath -ErrorAction Stop | Out-Null
        Test-Path "$outPath\100.106.191.184.mof" | Should -BeTrue
    }
    
    It "Should compile all 19 categories for remote node" {
        Configuration RemoteAllCategories {
            Import-DscResource -ModuleName @{ModuleName="DellBIOSProvider"; RequiredVersion="2.10.2"}
            Node "100.106.191.184" {
                POSTBehavior P1 { Category = "POSTBehavior"; Password = $script:TestPassword }
                PowerManagement P2 { Category = "PowerManagement"; BlockDefinition = "1"; Password = $script:TestPassword }
                Security P3 { Category = "Security"; Password = $script:TestPassword }
                SystemConfiguration P4 { Category = "SystemConfiguration"; Password = $script:TestPassword }
                Performance P5 { Category = "Performance"; Password = $script:TestPassword }
                AdvancedBootOptions P6 { Category = "AdvancedBootOptions"; Password = $script:TestPassword }
                MiscellaneousDevices P7 { Category = "MiscellaneousDevices"; Password = $script:TestPassword }
                Wireless P8 { Category = "Wireless"; Password = $script:TestPassword }
                Maintenance P9 { Category = "Maintenance"; Password = $script:TestPassword }
                Video P10 { Category = "Video"; Password = $script:TestPassword }
                SecureBoot P11 { Category = "SecureBoot"; Password = $script:TestPassword }
                TPMSecurity P12 { Category = "TPMSecurity"; Password = $script:TestPassword }
                VirtualizationSupport P13 { Category = "VirtualizationSupport"; Password = $script:TestPassword }
                SystemLogs P14 { Category = "SystemLogs"; Password = $script:TestPassword }
                StealthModeControl P15 { Category = "StealthModeControl"; Password = $script:TestPassword }
                IntelSoftwareGuardExtensions P16 { Category = "IntelSoftwareGuardExtensions"; Password = $script:TestPassword }
                SupportAssistSystemResolution P17 { Category = "SupportAssistSystemResolution"; Password = $script:TestPassword }
                AdvancedConfigurations P18 { Category = "AdvancedConfigurations"; Password = $script:TestPassword }
                BIOSSetupAdvancedMode P19 { Category = "BIOSSetupAdvancedMode"; Password = $script:TestPassword }
            }
        }
        $outPath = Join-Path $script:ConfigOutputDir "RemoteAllCategories"
        RemoteAllCategories -OutputPath $outPath -ErrorAction Stop | Out-Null
        Test-Path "$outPath\100.106.191.184.mof" | Should -BeTrue
    }
}

Describe "DSC Remote Push - 100.106.191.184 (Dell/Dell@123)" {
    BeforeAll {
        if (-not $script:RemoteReachable) {
            Write-Host "Remote machine not reachable - push tests will be skipped" -ForegroundColor Yellow
        }
    }
    
    It "Should push POSTBehavior config to remote with credentials" {
        if (-not $script:RemoteReachable) {
            Set-ItResult -Skipped -Because "Remote machine $($script:RemoteNode) not reachable"
            return
        }
        $mofPath = Join-Path $script:ConfigOutputDir "RemotePOSTBehavior"
        if (-not (Test-Path "$mofPath\$($script:RemoteNode).mof")) {
            Set-ItResult -Skipped -Because "MOF not compiled"
            return
        }
        { Start-DscConfiguration -Path $mofPath -Wait -Force -Credential $script:Credential -ErrorAction Stop } | Should -Not -Throw
    }
    
    It "Should push all 19 categories config to remote with credentials" {
        if (-not $script:RemoteReachable) {
            Set-ItResult -Skipped -Because "Remote machine $($script:RemoteNode) not reachable"
            return
        }
        $mofPath = Join-Path $script:ConfigOutputDir "RemoteAllCategories"
        if (-not (Test-Path "$mofPath\$($script:RemoteNode).mof")) {
            Set-ItResult -Skipped -Because "MOF not compiled"
            return
        }
        { Start-DscConfiguration -Path $mofPath -Wait -Force -Credential $script:Credential -ErrorAction Stop } | Should -Not -Throw
    }
    
    It "Should test DSC configuration status on remote" {
        if (-not $script:RemoteReachable) {
            Set-ItResult -Skipped -Because "Remote machine $($script:RemoteNode) not reachable"
            return
        }
        $status = Test-DscConfiguration -ComputerName $script:RemoteNode -Credential $script:Credential -ErrorAction SilentlyContinue
        # We just verify the command runs without throwing - the result depends on BIOS state
        $true | Should -BeTrue
    }
}

Describe "DSC Module Provider Tests (Local)" {
    BeforeAll {
        Import-Module $script:ModuleName -Force -ErrorAction SilentlyContinue
    }
    
    It "DellSmbios PSDrive should be available after import" {
        $drive = Get-PSDrive -Name DellSmbios -ErrorAction SilentlyContinue
        $drive | Should -Not -BeNullOrEmpty
    }
    
    It "Should list BIOS categories from DellSmbios drive" {
        $items = Get-ChildItem -Path "DellSmbios:\" -ErrorAction Stop
        $items.Count | Should -BeGreaterThan 10
    }
    
    It "Should list POSTBehavior attributes" {
        $attrs = Get-ChildItem -Path "DellSmbios:\POSTBehavior" -ErrorAction Stop
        $attrs.Count | Should -BeGreaterThan 0
    }
    
    It "Should get Numlock attribute value" {
        $val = Get-Item -Path "DellSmbios:\POSTBehavior\Numlock" -ErrorAction Stop
        $val | Should -Not -BeNullOrEmpty
    }
    
    It "Should list Security attributes" {
        $attrs = Get-ChildItem -Path "DellSmbios:\Security" -ErrorAction Stop
        $attrs.Count | Should -BeGreaterThan 0
    }
    
    It "Should get AdminPassword attribute" {
        $val = Get-Item -Path "DellSmbios:\Security\AdminPassword" -ErrorAction Stop
        $val | Should -Not -BeNullOrEmpty
    }
    
    It "Set-Dell1stBootdevice should accept SecureString Password parameter" {
        $cmd = Get-Command Set-Dell1stBootdevice -ErrorAction Stop
        $cmd.Parameters['Password'].ParameterType | Should -Be ([System.Security.SecureString])
    }
    
    It "Set-DellAutoOnForSelectDays should accept SecureString Password parameter" {
        $cmd = Get-Command Set-DellAutoOnForSelectDays -ErrorAction Stop
        $cmd.Parameters['Password'].ParameterType | Should -Be ([System.Security.SecureString])
    }
}

# SIG # Begin signature block
# MIIpLQYJKoZIhvcNAQcCoIIpHjCCKRoCAQExDzANBglghkgBZQMEAgMFADCBmwYK
# KwYBBAGCNwIBBKCBjDCBiTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63
# JNLGKX7zUQIBAAIBAAIBAAIBAAIBADBRMA0GCWCGSAFlAwQCAwUABEAd5LMUogff
# SCHnX72odIiJPGkN5tmD/ZXKzAxKaqnvNCqbmpoiZhGXgXnS9K9p10MlhLSf10fk
# ubksORcjuzDvoIIOHzCCBrAwggSYoAMCAQICEAitQLJg0pxMn17Nqb2TrtkwDQYJ
# KoZIhvcNAQEMBQAwYjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IElu
# YzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UEAxMYRGlnaUNlcnQg
# VHJ1c3RlZCBSb290IEc0MB4XDTIxMDQyOTAwMDAwMFoXDTM2MDQyODIzNTk1OVow
# aTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQD
# EzhEaWdpQ2VydCBUcnVzdGVkIEc0IENvZGUgU2lnbmluZyBSU0E0MDk2IFNIQTM4
# NCAyMDIxIENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW0L0LQ
# KK14t13VOVkbsYhC9TOM6z2Bl3DFu8SFJjCfpI5o2Fz16zQkB+FLT9N4Q/QX1x7a
# +dLVZxpSTw6hV/yImcGRzIEDPk1wJGSzjeIIfTR9TIBXEmtDmpnyxTsf8u/LR1oT
# pkyzASAl8xDTi7L7CPCK4J0JwGWn+piASTWHPVEZ6JAheEUuoZ8s4RjCGszF7pNJ
# cEIyj/vG6hzzZWiRok1MghFIUmjeEL0UV13oGBNlxX+yT4UsSKRWhDXW+S6cqgAV
# 0Tf+GgaUwnzI6hsy5srC9KejAw50pa85tqtgEuPo1rn3MeHcreQYoNjBI0dHs6EP
# bqOrbZgGgxu3amct0r1EGpIQgY+wOwnXx5syWsL/amBUi0nBk+3htFzgb+sm+YzV
# svk4EObqzpH1vtP7b5NhNFy8k0UogzYqZihfsHPOiyYlBrKD1Fz2FRlM7WLgXjPy
# 6OjsCqewAyuRsjZ5vvetCB51pmXMu+NIUPN3kRr+21CiRshhWJj1fAIWPIMorTmG
# 7NS3DVPQ+EfmdTCN7DCTdhSmW0tddGFNPxKRdt6/WMtyEClB8NXFbSZ2aBFBE1ia
# 3CYrAfSJTVnbeM+BSj5AR1/JgVBzhRAjIVlgimRUwcwhGug4GXxmHM14OEUwmU//
# Y09Mu6oNCFNBfFg9R7P6tuyMMgkCzGw8DFYRAgMBAAGjggFZMIIBVTASBgNVHRMB
# Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBRoN+Drtjv4XxGG+/5hewiIZfROQjAfBgNV
# HSMEGDAWgBTs1+OC0nFdZEzfLmc/57qYrhwPTzAOBgNVHQ8BAf8EBAMCAYYwEwYD
# VR0lBAwwCgYIKwYBBQUHAwMwdwYIKwYBBQUHAQEEazBpMCQGCCsGAQUFBzABhhho
# dHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQQYIKwYBBQUHMAKGNWh0dHA6Ly9jYWNl
# cnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRSb290RzQuY3J0MEMGA1Ud
# HwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRy
# dXN0ZWRSb290RzQuY3JsMBwGA1UdIAQVMBMwBwYFZ4EMAQMwCAYGZ4EMAQQBMA0G
# CSqGSIb3DQEBDAUAA4ICAQA6I0Q9jQh27o+8OpnTVuACGqX4SDTzLLbmdGb3lHKx
# AMqvbDAnExKekESfS/2eo3wm1Te8Ol1IbZXVP0n0J7sWgUVQ/Zy9toXgdn43ccsi
# 91qqkM/1k2rj6yDR1VB5iJqKisG2vaFIGH7c2IAaERkYzWGZgVb2yeN258TkG19D
# +D6U/3Y5PZ7Umc9K3SjrXyahlVhI1Rr+1yc//ZDRdobdHLBgXPMNqO7giaG9OeE4
# Ttpuuzad++UhU1rDyulq8aI+20O4M8hPOBSSmfXdzlRt2V0CFB9AM3wD4pWywiF1
# c1LLRtjENByipUuNzW92NyyFPxrOJukYvpAHsEN/lYgggnDwzMrv/Sk1XB+JOFX3
# N4qLCaHLC+kxGv8uGVw5ceG+nKcKBtYmZ7eS5k5f3nqsSc8upHSSrds8pJyGH+PB
# VhsrI/+PteqIe3Br5qC6/To/RabE6BaRUotBwEiES5ZNq0RA443wFSjO7fEYVgcq
# LxDEDAhkPDOPriiMPMuPiAsNvzv0zh57ju+168u38HcT5ucoP6wSrqUvImxB+YJc
# FWbMbA7KxYbD9iYzDAdLoNMHAmpqQDBISzSoUSC7rRuFCOJZDW3KBVAr6kocnqX9
# oKcfBnTn8tZSkP2vhUgh+Vc7tJwD7YZF9LRhbr9o4iZghurIr6n+lB3nYxs6hlZ4
# TjCCB2cwggVPoAMCAQICEAMx+1XPXJY1+uD8jHZg+r4wDQYJKoZIhvcNAQELBQAw
# aTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQD
# EzhEaWdpQ2VydCBUcnVzdGVkIEc0IENvZGUgU2lnbmluZyBSU0E0MDk2IFNIQTM4
# NCAyMDIxIENBMTAeFw0yNTExMDUwMDAwMDBaFw0yNjExMDQyMzU5NTlaMIHvMRMw
# EQYLKwYBBAGCNzwCAQMTAlVTMRkwFwYLKwYBBAGCNzwCAQITCERlbGF3YXJlMR0w
# GwYDVQQPDBRQcml2YXRlIE9yZ2FuaXphdGlvbjEQMA4GA1UEBRMHNTI4MDM5NDEL
# MAkGA1UEBhMCVVMxDjAMBgNVBAgTBVRleGFzMRMwEQYDVQQHEwpSb3VuZCBSb2Nr
# MR8wHQYDVQQKExZEZWxsIFRlY2hub2xvZ2llcyBJbmMuMRgwFgYDVQQLEw9DbGll
# bnQgU29mdHdhcmUxHzAdBgNVBAMTFkRlbGwgVGVjaG5vbG9naWVzIEluYy4wggGi
# MA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDB86C71b+hpK5bDr5p4DSU5tsP
# R2rZ6NDZHMHZNnuKtQ4IpTssP9f2bSanG1QaM1vl96+V1/Emp30Nb/IPj7soGUQU
# OYr7aVt+lJf2nSVm+rhe9bfI4nnsabrJ0ReieGaGyAjauc6/s2EnGR5mlBPb+D+z
# 8ZMzpWe8eDe1q7jPT38f01RdEeTSlm0j4ks5Fzxiqa9dzKz8rAnwYf3CZqaHOgtF
# gx8IgZdzm1QGpPWowO1TZHpzGJrh0ofoC+pASWHkmyoqMV2+ffKlG2jjhX0xUYVX
# XoSaifQSK4m6K1FR+xaeHUfSkkWOapp9V2BHZua/PTyVVctwTudQoAgffh5ut+cw
# uzG76pbknyZkOtH7gy1LzMSLZ4NOGlPHhINqdyDE0gZdMGwFrINW3EHdzRnPFjAn
# yPc9J8wl9nDBmwRCcnPZ9nk6g1UqFma809jepWXRLURl60mylQfWYR6wp/RJZ4qi
# A3A6nKmsQGLT19frtcNKfuzXCyyLZcVecrNth9cCAwEAAaOCAgIwggH+MB8GA1Ud
# IwQYMBaAFGg34Ou2O/hfEYb7/mF7CIhl9E5CMB0GA1UdDgQWBBSK75aqntZTZxM3
# mp6PiOWeaUfy9DA9BgNVHSAENjA0MDIGBWeBDAEDMCkwJwYIKwYBBQUHAgEWG2h0
# dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0l
# BAwwCgYIKwYBBQUHAwMwgbUGA1UdHwSBrTCBqjBToFGgT4ZNaHR0cDovL2NybDMu
# ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0Q29kZVNpZ25pbmdSU0E0MDk2
# U0hBMzg0MjAyMUNBMS5jcmwwU6BRoE+GTWh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNv
# bS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIwMjFD
# QTEuY3JsMIGUBggrBgEFBQcBAQSBhzCBhDAkBggrBgEFBQcwAYYYaHR0cDovL29j
# c3AuZGlnaWNlcnQuY29tMFwGCCsGAQUFBzAChlBodHRwOi8vY2FjZXJ0cy5kaWdp
# Y2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEz
# ODQyMDIxQ0ExLmNydDAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4ICAQBWKrYN
# PoqBrPpTEXVVQYsX1jenSDv4n7+o4SYvQU7rYa9iGkqtQJhvtDzBHzbCBGqKJK4e
# E1nLx1g9gNwL4EIxDBnE0EF2sn1ovueI7nMhnkmSCWVgKRw/7sHPOohPjpI9/N94
# LAqJbag4uWNSW+7dQUv0n/0DlI+BIUNMyUM4LeUvlsbZMqHmTEwX5DKiD7uCjYs5
# y7H7TaOkxgXLVft0SZXzIBjLv+vv3lAZ7c93voKkPt9Vvg/a3CBMxxZf/TNatGD1
# tnVXKfnd1+64nYtbTsueR9YMNcIjB22o1ILPcOPDPS4jVwTSSyW8dRg9wOPwMmRd
# RPt1PCvkQxBsEaf9jFvdqe7LqS7B28D9iq78W3lBkVAlZ2jCrpjy0CT6GVKmlrY9
# IUOfWb1n1dKJnQMgepPCG93OpMu5x9bXRDzR3PinnIvT69qgVr378KuapiGMM/PA
# u5z9KdLALQVtxxW7+SF3AQh3pV0PGMO62ac9qTo/Zu1SMpoB6yJMhYe37Rk1WFzA
# C9DZoDqcluhjm/t7Jtb8ysi7VV2Hebzvhy0T+2ZME0JX5b80nzbHnY4HQiJfwcDD
# 4nmywQTBStR68TUw8xPgyEZRITukqsV/4sKFJKGioIYBPVwH/xh1Wo2r0u5lJzUA
# I6q8pn1IxzkiIBW3f9FhCgWmYBgNU9BguBzYQjGCGkEwgho9AgEBMH0waTELMAkG
# A1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQDEzhEaWdp
# Q2VydCBUcnVzdGVkIEc0IENvZGUgU2lnbmluZyBSU0E0MDk2IFNIQTM4NCAyMDIx
# IENBMQIQAzH7Vc9cljX64PyMdmD6vjANBglghkgBZQMEAgMFAKCBnDAQBgorBgEE
# AYI3AgEMMQIwADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3
# AgELMQ4wDAYKKwYBBAGCNwIBFTBPBgkqhkiG9w0BCQQxQgRA8g917lVdnsDZldzF
# Ms/OBbLNbHLMXhM0qN5fHQMd6f9jSpihttZvtYC/Hx0qoAXB8if7ifMKr/tSlFhX
# mv+X9jANBgkqhkiG9w0BAQEFAASCAYAWtnmYa+Jqf1QAC7xS4+NrLeTtMfTtgCs6
# 2/HToToz1O/rxUC4U3be2TElseOMTgEbrHSamsro6+aL4+/pGOyWuMkLlQutnveo
# dvmdpClCcPC6a6iBJ5Lup0KgQ4wsdjeDsIK//ZCO8iB9m5v6s72D2eK99ITGf9dc
# m9HSrZIUjy+AisbovoaZplG/Y7rEGtDPgDN7XaXS1IQ58l/GxNlyOsrao4LtqYTl
# fZ0O+VLtiidM0bfu1bZSJ2CJjkKOIp7r7xLwqJ6RfkYbTN8taRzMX6qB1hVD18fA
# OUeowFacGPuFEtrOItwr3RZ1btH4qRM8A+RS6mQHQHQbsQx/nFRAWOLO6vDscT35
# CPdYm5mIzCzW9WFlCOHzBbEp4WZb+63h1cZkQAcPbmWdZz6Tm4bdwNaunmRuRAOM
# 5KIAiNO9tb5CgHGK44A1WbCIA1uC8e7uqC6AvOC7P0Jhc0+cVh/q3nR5BR6rkV52
# pbln8V+weFOuiDvFugD1BlpfnjIyycqhghd2MIIXcgYKKwYBBAGCNwMDATGCF2Iw
# ghdeBgkqhkiG9w0BBwKgghdPMIIXSwIBAzEPMA0GCWCGSAFlAwQCAQUAMHcGCyqG
# SIb3DQEJEAEEoGgEZjBkAgEBBglghkgBhv1sBwEwMTANBglghkgBZQMEAgEFAAQg
# 4RTH93DGMSfi3Z9/DNBfRui637/hjhrfx+Dc36b/2fICEBvoDJkzNFUbluPPxEu8
# U5IYDzIwMjYwNjI1MDczMDQ0WqCCEzowggbtMIIE1aADAgECAhAKgO8YS43xBYLR
# xHanlXRoMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5E
# aWdpQ2VydCwgSW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBUaW1l
# U3RhbXBpbmcgUlNBNDA5NiBTSEEyNTYgMjAyNSBDQTEwHhcNMjUwNjA0MDAwMDAw
# WhcNMzYwOTAzMjM1OTU5WjBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNl
# cnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFNIQTI1NiBSU0E0MDk2IFRpbWVz
# dGFtcCBSZXNwb25kZXIgMjAyNSAxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
# CgKCAgEA0EasLRLGntDqrmBWsytXum9R/4ZwCgHfyjfMGUIwYzKomd8U1nH7C8Dr
# 0cVMF3BsfAFI54um8+dnxk36+jx0Tb+k+87H9WPxNyFPJIDZHhAqlUPt281mHrBb
# ZHqRK71Em3/hCGC5KyyneqiZ7syvFXJ9A72wzHpkBaMUNg7MOLxI6E9RaUueHTQK
# WXymOtRwJXcrcTTPPT2V1D/+cFllESviH8YjoPFvZSjKs3SKO1QNUdFd2adw44wD
# cKgH+JRJE5Qg0NP3yiSyi5MxgU6cehGHr7zou1znOM8odbkqoK+lJ25LCHBSai25
# CFyD23DZgPfDrJJJK77epTwMP6eKA0kWa3osAe8fcpK40uhktzUd/Yk0xUvhDU6l
# vJukx7jphx40DQt82yepyekl4i0r8OEps/FNO4ahfvAk12hE5FVs9HVVWcO5J4dV
# mVzix4A77p3awLbr89A90/nWGjXMGn7FQhmSlIUDy9Z2hSgctaepZTd0ILIUbWuh
# KuAeNIeWrzHKYueMJtItnj2Q+aTyLLKLM0MheP/9w6CtjuuVHJOVoIJ/DtpJRE7C
# e7vMRHoRon4CWIvuiNN1Lk9Y+xZ66lazs2kKFSTnnkrT3pXWETTJkhd76CIDBbTR
# ofOsNyEhzZtCGmnQigpFHti58CSmvEyJcAlDVcKacJ+A9/z7eacCAwEAAaOCAZUw
# ggGRMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOQ7/PIx7f391/ORcWMZUEPPYYzo
# MB8GA1UdIwQYMBaAFO9vU0rp5AZ8esrikFb2L9RJ7MtOMA4GA1UdDwEB/wQEAwIH
# gDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCBlQYIKwYBBQUHAQEEgYgwgYUwJAYI
# KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBdBggrBgEFBQcwAoZR
# aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0VGlt
# ZVN0YW1waW5nUlNBNDA5NlNIQTI1NjIwMjVDQTEuY3J0MF8GA1UdHwRYMFYwVKBS
# oFCGTmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNFRp
# bWVTdGFtcGluZ1JTQTQwOTZTSEEyNTYyMDI1Q0ExLmNybDAgBgNVHSAEGTAXMAgG
# BmeBDAEEAjALBglghkgBhv1sBwEwDQYJKoZIhvcNAQELBQADggIBAGUqrfEcJwS5
# rmBB7NEIRJ5jQHIh+OT2Ik/bNYulCrVvhREafBYF0RkP2AGr181o2YWPoSHz9iZE
# N/FPsLSTwVQWo2H62yGBvg7ouCODwrx6ULj6hYKqdT8wv2UV+Kbz/3ImZlJ7YXwB
# D9R0oU62PtgxOao872bOySCILdBghQ/ZLcdC8cbUUO75ZSpbh1oipOhcUT8lD8QA
# GB9lctZTTOJM3pHfKBAEcxQFoHlt2s9sXoxFizTeHihsQyfFg5fxUFEp7W42fNBV
# N4ueLaceRf9Cq9ec1v5iQMWTFQa0xNqItH3CPFTG7aEQJmmrJTV3Qhtfparz+BW6
# 0OiMEgV5GWoBy4RVPRwqxv7Mk0Sy4QHs7v9y69NBqycz0BZwhB9WOfOu/CIJnzkQ
# TwtSSpGGhLdjnQ4eBpjtP+XB3pQCtv4E5UCSDag6+iX8MmB10nfldPF9SVD7weCC
# 3yXZi/uuhqdwkgVxuiMFzGVFwYbQsiGnoa9F5AaAyBjFBtXVLcKtapnMG3VH3EmA
# p/jsJ3FVF3+d1SVDTmjFjLbNFZUWMXuZyvgLfgyPehwJVxwC+UpX2MSey2ueIu9T
# HFVkT+um1vshETaWyQo8gmBto/m3acaP9QsuLj3FNwFlTxq25+T4QwX9xa6ILs84
# ZPvmpovq90K8eWyG2N01c4IhSOxqt81nMIIGtDCCBJygAwIBAgIQDcesVwX/IZku
# QEMiDDpJhjANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMM
# RGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQD
# ExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMjUwNTA3MDAwMDAwWhcNMzgw
# MTE0MjM1OTU5WjBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIElu
# Yy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGltZVN0YW1waW5nIFJT
# QTQwOTYgU0hBMjU2IDIwMjUgQ0ExMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
# CgKCAgEAtHgx0wqYQXK+PEbAHKx126NGaHS0URedTa2NDZS1mZaDLFTtQ2oRjzUX
# MmxCqvkbsDpz4aH+qbxeLho8I6jY3xL1IusLopuW2qftJYJaDNs1+JH7Z+QdSKWM
# 06qchUP+AbdJgMQB3h2DZ0Mal5kYp77jYMVQXSZH++0trj6Ao+xh/AS7sQRuQL37
# QXbDhAktVJMQbzIBHYJBYgzWIjk8eDrYhXDEpKk7RdoX0M980EpLtlrNyHw0Xm+n
# t5pnYJU3Gmq6bNMI1I7Gb5IBZK4ivbVCiZv7PNBYqHEpNVWC2ZQ8BbfnFRQVESYO
# szFI2Wv82wnJRfN20VRS3hpLgIR4hjzL0hpoYGk81coWJ+KdPvMvaB0WkE/2qHxJ
# 0ucS638ZxqU14lDnki7CcoKCz6eum5A19WZQHkqUJfdkDjHkccpL6uoG8pbF0LJA
# QQZxst7VvwDDjAmSFTUms+wV/FbWBqi7fTJnjq3hj0XbQcd8hjj/q8d6ylgxCZSK
# i17yVp2NL+cnT6Toy+rN+nM8M7LnLqCrO2JP3oW//1sfuZDKiDEb1AQ8es9Xr/u6
# bDTnYCTKIsDq1BtmXUqEG1NqzJKS4kOmxkYp2WyODi7vQTCBZtVFJfVZ3j7OgWmn
# hFr4yUozZtqgPrHRVHhGNKlYzyjlroPxul+bgIspzOwbtmsgY1MCAwEAAaOCAV0w
# ggFZMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFO9vU0rp5AZ8esrikFb2
# L9RJ7MtOMB8GA1UdIwQYMBaAFOzX44LScV1kTN8uZz/nupiuHA9PMA4GA1UdDwEB
# /wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDCDB3BggrBgEFBQcBAQRrMGkwJAYI
# KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1
# aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RH
# NC5jcnQwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybDMuZGlnaWNlcnQuY29t
# L0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcmwwIAYDVR0gBBkwFzAIBgZngQwBBAIw
# CwYJYIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUAA4ICAQAXzvsWgBz+Bz0RdnEwvb4L
# yLU0pn/N0IfFiBowf0/Dm1wGc/Do7oVMY2mhXZXjDNJQa8j00DNqhCT3t+s8G0iP
# 5kvN2n7Jd2E4/iEIUBO41P5F448rSYJ59Ib61eoalhnd6ywFLerycvZTAz40y8S4
# F3/a+Z1jEMK/DMm/axFSgoR8n6c3nuZB9BfBwAQYK9FHaoq2e26MHvVY9gCDA/JY
# sq7pGdogP8HRtrYfctSLANEBfHU16r3J05qX3kId+ZOczgj5kjatVB+NdADVZKON
# /gnZruMvNYY2o1f4MXRJDMdTSlOLh0HCn2cQLwQCqjFbqrXuvTPSegOOzr4EWj7P
# tspIHBldNE2K9i697cvaiIo2p61Ed2p8xMJb82Yosn0z4y25xUbI7GIN/TpVfHIq
# Q6Ku/qjTY6hc3hsXMrS+U0yy+GWqAXam4ToWd2UQ1KYT70kZjE4YtL8Pbzg0c1ug
# MZyZZd/BdHLiRu7hAWE6bTEm4XYRkA6Tl4KSFLFk43esaUeqGkH/wyW4N7Oigizw
# JWeukcyIPbAvjSabnf7+Pu0VrFgoiovRDiyx3zEdmcif/sYQsfch28bZeUz2rtY/
# 9TCA6TD8dC3JE3rYkrhLULy7Dc90G6e8BlqmyIjlgp2+VqsS9/wQD7yFylIz0scm
# bKvFoW2jNrbM1pD2T7m3XDCCBY0wggR1oAMCAQICEA6bGI750C3n79tQ4ghAGFow
# DQYJKoZIhvcNAQEMBQAwZTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0
# IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEkMCIGA1UEAxMbRGlnaUNl
# cnQgQXNzdXJlZCBJRCBSb290IENBMB4XDTIyMDgwMTAwMDAwMFoXDTMxMTEwOTIz
# NTk1OVowYjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcG
# A1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UEAxMYRGlnaUNlcnQgVHJ1c3Rl
# ZCBSb290IEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAv+aQc2je
# u+RdSjwwIjBpM+zCpyUuySE98orYWcLhKac9WKt2ms2uexuEDcQwH/MbpDgW61bG
# l20dq7J58soR0uRf1gU8Ug9SH8aeFaV+vp+pVxZZVXKvaJNwwrK6dZlqczKU0RBE
# EC7fgvMHhOZ0O21x4i0MG+4g1ckgHWMpLc7sXk7Ik/ghYZs06wXGXuxbGrzryc/N
# rDRAX7F6Zu53yEioZldXn1RYjgwrt0+nMNlW7sp7XeOtyU9e5TXnMcvak17cjo+A
# 2raRmECQecN4x7axxLVqGDgDEI3Y1DekLgV9iPWCPhCRcKtVgkEy19sEcypukQF8
# IUzUvK4bA3VdeGbZOjFEmjNAvwjXWkmkwuapoGfdpCe8oU85tRFYF/ckXEaPZPfB
# aYh2mHY9WV1CdoeJl2l6SPDgohIbZpp0yt5LHucOY67m1O+SkjqePdwA5EUlibaa
# RBkrfsCUtNJhbesz2cXfSwQAzH0clcOP9yGyshG3u3/y1YxwLEFgqrFjGESVGnZi
# fvaAsPvoZKYz0YkH4b235kOkGLimdwHhD5QMIR2yVCkliWzlDlJRR3S+Jqy2QXXe
# eqxfjT/JvNNBERJb5RBQ6zHFynIWIgnffEx1P2PsIV/EIFFrb7GrhotPwtZFX50g
# /KEexcCPorF+CiaZ9eRpL5gdLfXZqbId5RsCAwEAAaOCATowggE2MA8GA1UdEwEB
# /wQFMAMBAf8wHQYDVR0OBBYEFOzX44LScV1kTN8uZz/nupiuHA9PMB8GA1UdIwQY
# MBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgPMA4GA1UdDwEB/wQEAwIBhjB5BggrBgEF
# BQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBD
# BggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0
# QXNzdXJlZElEUm9vdENBLmNydDBFBgNVHR8EPjA8MDqgOKA2hjRodHRwOi8vY3Js
# My5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMBEGA1Ud
# IAQKMAgwBgYEVR0gADANBgkqhkiG9w0BAQwFAAOCAQEAcKC/Q1xV5zhfoKN0Gz22
# Ftf3v1cHvZqsoYcs7IVeqRq7IviHGmlUIu2kiHdtvRoU9BNKei8ttzjv9P+Aufih
# 9/Jy3iS8UgPITtAq3votVs/59PesMHqai7Je1M/RQ0SbQyHrlnKhSLSZy51PpwYD
# E3cnRNTnf+hZqPC/Lwum6fI0POz3A8eHqNJMQBk1RmppVLC4oVaO7KTVPeix3P0c
# 2PR3WlxUjG/voVA9/HYJaISfb8rbII01YBwCA8sgsKxYoA5AY8WYIsGyWfVVa88n
# q2x2zm8jLfR+cWojayL/ErhULSd+2DrZ8LaHlv1b0VysGMNNn3O3AamfV6peKOK5
# lDGCA3wwggN4AgEBMH0waTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0
# LCBJbmMuMUEwPwYDVQQDEzhEaWdpQ2VydCBUcnVzdGVkIEc0IFRpbWVTdGFtcGlu
# ZyBSU0E0MDk2IFNIQTI1NiAyMDI1IENBMQIQCoDvGEuN8QWC0cR2p5V0aDANBglg
# hkgBZQMEAgEFAKCB0TAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZI
# hvcNAQkFMQ8XDTI2MDYyNTA3MzA0NFowKwYLKoZIhvcNAQkQAgwxHDAaMBgwFgQU
# 3WIwrIYKLTBr2jixaHlSMAf7QX4wLwYJKoZIhvcNAQkEMSIEILOB13ApYy6yEVcW
# zT0fSkiKKRnczdJkezIgpm/LCAkBMDcGCyqGSIb3DQEJEAIvMSgwJjAkMCIEIEqg
# P6Is11yExVyTj4KOZ2ucrsqzP+NtJpqjNPFGEQozMA0GCSqGSIb3DQEBAQUABIIC
# ADPnrScQAdfDSZV4bbJdTAuoy2RGe0z1a7qjKXmZ+lrwiIgwCyq74/3BNZiAV/Jt
# lwo9/yNkfzo5I10u1EEtd82/wQ2G8rH2SZwd7qAI53mHxuXqCYZn6kA4G7skOBD6
# nF4tcRRCrOujTBN4EqELc3yzjybJ3UhFXIRMgDcGvPzmR9MhBUb/cRmA96XdX6z8
# Txrpnc8VMAw8i+40gPpCU4ynmh5QVrYaC5o/YgJmgzyGtdkODkKsK8+DwdLeOS+3
# +hNkMyLbzhhsufipjkYlwue1POQXPhRbXeHM771pU0SlZRWGeXesEz35BDdomtHm
# gSCAnUm+idI+4MZpsKSnvGQ4EQ37UuhKvdiTUlM5kpUFmw0PBbQV0+nybpMt62UH
# 0bnJuJm/QVxTwu1mEl1//bQP24tVAz17uWB+izyzqu2vambgT4VM8dKlghynE8vi
# zr6JWxLviOzrrvyuSnR9ILkpPACnW/yXw8E9hFkC0PKllF3njwXGaAuAmZ7zekLA
# VRGddw1FBowt7IT7x/qDyySReAoZ4vP+vO+0NcVyrzh2QJs4pO85v77AZc/Iem0j
# N2RmVptEPuoNOH9wCrZkVTYGCvIQcZ+gkdQBfe+bvi1Hw7m7UFs5VkgkURycnnTm
# ohxznZd6rlq82JSFiTgx/AoKPnbL6FGiqvbCwqF0zCVq
# SIG # End signature block