Samples/Wipe_Appliance.ps1
############################################################################## # Wipe_Appliance.ps1 # - Remove ALL resource from an appliance (useful to clean a system between demos). # # VERSION 3.00 # # (C) Copyright 2013-2020 Hewlett Packard Enterprise Development LP ############################################################################## # The information contained herein is subject to change without notice. # The only warranties for HP products and services are set forth in the # express warranty statements accompanying such products and services. # Nothing herein should be construed as constituting an additional warranty. # HP shall not be liable for technical or editorial errors or omissions # contained herein. # ############################################################################## [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')] param ( [Parameter (Mandatory)] [ValidateNotNullorEmpty()] [String]$Hostname, [Parameter (Mandatory)] [ValidateNotNullorEmpty()] [String]$Username, [Parameter (Mandatory)] [ValidateNotNullorEmpty()] [Object]$Password ) if ($PSCmdlet.ShouldProcess($Hostname,("remove all resources on appliance"))) { if (! (Get-Module -Name 'HPOneView.410')) { Import-Module HPOneView.410 } # First connect to the CI Management Appliance (if not already connected) if (! $ConnectedSessions) { Try { $Params = @{ Hostname = $Hostname; Username = $Username; Password = $Password } Connect-HPOVMgmt @Params } Catch { PSCmdlet.ThrowTerminatingError($_) } } Try { ############################################################ # REMOVE CONFIGURATION (for cleanup after/between demos) # ############################################################ # Delete ALL Server Profiles $tasks = Get-HPOVServerProfile | Remove-HPOVServerProfile -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Server Profile tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Server Profile Templates $tasks = Get-HPOVServerProfileTemplate | Remove-HPOVServerProfileTemplate -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Server Profile Template tasks failed to complete successfully.' -ErrorAction Stop } # Remove ALL iPDUs $tasks = Get-HPOVPowerDevice | Remove-HPOVPowerDevice -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Power Device tasks failed to complete successfully.' -ErrorAction Stop } # Remove ALL Enclosures $tasks = Get-HPOVEnclosure | Remove-HPOVEnclosure -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Enclosure tasks failed to complete successfully.' -ErrorAction Stop } # Remove ALL Rack Servers $tasks = Get-HPOVServer | Remove-HPOVServer -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Server Hardware Resources tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Enclosure Groups: $tasks = Get-HPOVEnclosureGroup | Remove-HPOVEnclosureGroup -Force -Confirm:$false if ($tasks | ? Message -ne 'Resource deleted successfully.') { $Tasks | ? Message -ne 'Resource deleted successfully.' | Format-List Write-Error '1 or more Remove Enclosure Group requests failed to complete successfully.' -ErrorAction Stop } # Delete ALL Logical Interconnect Groups $tasks = Get-HPOVLogicalInterconnectGroup | Remove-HPOVLogicalInterconnectGroup -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Logical Interconnect Group tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Network-Sets $tasks = Get-HPOVNetworkSet | Remove-HPOVNetworkSet -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Network Set tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Networks $tasks = Get-HPOVNetwork | Remove-HPOVNetwork -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Network tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Storage Volumes $tasks = Get-HPOVStorageVolume | Remove-HPOVStorageVolume -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Storage Volume tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Storage Pools $tasks = Get-HPOVStoragePool | Remove-HPOVStoragePool -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Storage Pool tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Storage Systems $tasks = Get-HPOVStorageSYstem | Remove-HPOVStorageSystem -Force -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove Storage System tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL SAN Managers $tasks = Get-HPOVSanManager | Remove-HPOVSanManager -Confirm:$false | Wait-HPOVTaskComplete if ($tasks | ? taskState -ne 'Completed') { $Tasks | ? taskState -ne 'Completed' | Format-List Write-Error '1 or more Remove SAN Manager tasks failed to complete successfully.' -ErrorAction Stop } # Delete ALL Unmanaged Devices $tasks = Get-HPOVUnmanagedDevice | Remove-HPOVUnmanagedDevice -Force -Confirm:$false if ($tasks | ? Message -ne 'Resource deleted successfully.') { $Tasks | ? Message -ne 'Resource deleted successfully.' | Format-List Write-Error '1 or more Remove Unmanaged Device requests failed to complete successfully.' -ErrorAction Stop } } Catch { $PSCmdlet.ThrowTerminatingError($_) } } elseif ($PSBoundParameters['Whatif']) { "[{0}] -WhatIf provided." -f $MyInvocation.InvocationName.ToString().ToUpper() | Write-Verbose } else { "[{0}] User cancelled." -f $MyInvocation.InvocationName.ToString().ToUpper() | Write-Verbose } # SIG # Begin signature block # MIIkXwYJKoZIhvcNAQcCoIIkUDCCJEwCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCC6i+e/UJeXDNGC # n1Jw4MZFMe+Hfc12Yb1law2VvwrAmqCCH04wggSEMIIDbKADAgECAhBCGvKUCYQZ # H1IKS8YkJqdLMA0GCSqGSIb3DQEBBQUAMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQK # EwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5l # dHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3QwHhcNMDUw # NjA3MDgwOTEwWhcNMjAwNTMwMTA0ODM4WjCBlTELMAkGA1UEBhMCVVMxCzAJBgNV # BAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVT # RVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5j # b20xHTAbBgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MIIBIjANBgkqhkiG9w0B # AQEFAAOCAQ8AMIIBCgKCAQEAzqqBP6OjYXiqMQBVlRGeJw8fHN86m4JoMMBKYR3x # Lw76vnn3pSPvVVGWhM3b47luPjHYCiBnx/TZv5TrRwQ+As4qol2HBAn2MJ0Yipey # qhz8QdKhNsv7PZG659lwNfrk55DDm6Ob0zz1Epl3sbcJ4GjmHLjzlGOIamr+C3bJ # vvQi5Ge5qxped8GFB90NbL/uBsd3akGepw/X++6UF7f8hb6kq8QcMd3XttHk8O/f # Fo+yUpPXodSJoQcuv+EBEkIeGuHYlTTbZHko/7ouEcLl6FuSSPtHC8Js2q0yg0Hz # peVBcP1lkG36+lHE+b2WKxkELNNtp9zwf2+DZeJqq4eGdQIDAQABo4H0MIHxMB8G # A1UdIwQYMBaAFK29mHo0tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBTa7WR0FJwU # PKvdmam9WyhNizzJ2DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAR # BgNVHSAECjAIMAYGBFUdIAAwRAYDVR0fBD0wOzA5oDegNYYzaHR0cDovL2NybC51 # c2VydHJ1c3QuY29tL0FkZFRydXN0RXh0ZXJuYWxDQVJvb3QuY3JsMDUGCCsGAQUF # BwEBBCkwJzAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNvbTAN # BgkqhkiG9w0BAQUFAAOCAQEATUIvpsGK6weAkFhGjPgZOWYqPFosbc/U2YdVjXkL # Eoh7QI/Vx/hLjVUWY623V9w7K73TwU8eA4dLRJvj4kBFJvMmSStqhPFUetRC2vzT # artmfsqe6um73AfHw5JOgzyBSZ+S1TIJ6kkuoRFxmjbSxU5otssOGyUWr2zeXXbY # H3KxkyaGF9sY3q9F6d/7mK8UGO2kXvaJlEXwVQRK3f8n3QZKQPa0vPHkD5kCu/1d # Di4owb47Xxo/lxCEvBY+2KOcYx1my1xf2j7zDwoJNSLb28A/APnmDV1n0f2gHgMr # 2UD3vsyHZlSApqO49Rli1dImsZgm7prLRKdFWoGVFRr1UTCCBOYwggPOoAMCAQIC # EGJcTZCM1UL7qy6lcz/xVBkwDQYJKoZIhvcNAQEFBQAwgZUxCzAJBgNVBAYTAlVT # MQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoT # FVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy # dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDAeFw0xMTA0 # MjcwMDAwMDBaFw0yMDA1MzAxMDQ4MzhaMHoxCzAJBgNVBAYTAkdCMRswGQYDVQQI # ExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoT # EUNPTU9ETyBDQSBMaW1pdGVkMSAwHgYDVQQDExdDT01PRE8gVGltZSBTdGFtcGlu # ZyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKqC8YSpW9hxtdJd # K+30EyAM+Zvp0Y90Xm7u6ylI2Mi+LOsKYWDMvZKNfN10uwqeaE6qdSRzJ6438xqC # pW24yAlGTH6hg+niA2CkIRAnQJpZ4W2vPoKvIWlZbWPMzrH2Fpp5g5c6HQyvyX3R # TtjDRqGlmKpgzlXUEhHzOwtsxoi6lS7voEZFOXys6eOt6FeXX/77wgmN/o6apT9Z # RvzHLV2Eh/BvWCbD8EL8Vd5lvmc4Y7MRsaEl7ambvkjfTHfAqhkLtv1Kjyx5VbH+ # WVpabVWLHEP2sVVyKYlNQD++f0kBXTybXAj7yuJ1FQWTnQhi/7oN26r4tb8QMspy # 6ggmzRkCAwEAAaOCAUowggFGMB8GA1UdIwQYMBaAFNrtZHQUnBQ8q92Zqb1bKE2L # PMnYMB0GA1UdDgQWBBRkIoa2SonJBA/QBFiSK7NuPR4nbDAOBgNVHQ8BAf8EBAMC # AQYwEgYDVR0TAQH/BAgwBgEB/wIBADATBgNVHSUEDDAKBggrBgEFBQcDCDARBgNV # HSAECjAIMAYGBFUdIAAwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2Vy # dHJ1c3QuY29tL1VUTi1VU0VSRmlyc3QtT2JqZWN0LmNybDB0BggrBgEFBQcBAQRo # MGYwPQYIKwYBBQUHMAKGMWh0dHA6Ly9jcnQudXNlcnRydXN0LmNvbS9VVE5BZGRU # cnVzdE9iamVjdF9DQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0 # cnVzdC5jb20wDQYJKoZIhvcNAQEFBQADggEBABHJPeEF6DtlrMl0MQO32oM4xpK6 # /c3422ObfR6QpJjI2VhoNLXwCyFTnllG/WOF3/5HqnDkP14IlShfFPH9Iq5w5Lfx # sLZWn7FnuGiDXqhg25g59txJXhOnkGdL427n6/BDx9Avff+WWqcD1ptUoCPTpcKg # jvlP0bIGIf4hXSeMoK/ZsFLu/Mjtt5zxySY41qUy7UiXlF494D01tLDJWK/HWP9i # dBaSZEHayqjriwO9wU6uH5EyuOEkO3vtFGgJhpYoyTvJbCjCJWn1SmGt4Cf4U6d1 # FbBRMbDxQf8+WiYeYH7i42o5msTq7j/mshM/VQMETQuQctTr+7yHkFGyOBkwggT+ # MIID5qADAgECAhArc9t0YxFMWlsySvIwV3JJMA0GCSqGSIb3DQEBBQUAMHoxCzAJ # BgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcT # B1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSAwHgYDVQQDExdD # T01PRE8gVGltZSBTdGFtcGluZyBDQTAeFw0xOTA1MDIwMDAwMDBaFw0yMDA1MzAx # MDQ4MzhaMIGDMQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVz # dGVyMRAwDgYDVQQHDAdTYWxmb3JkMRgwFgYDVQQKDA9TZWN0aWdvIExpbWl0ZWQx # KzApBgNVBAMMIlNlY3RpZ28gU0hBLTEgVGltZSBTdGFtcGluZyBTaWduZXIwggEi # MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/UjaCOtx0Nw141X8WUBlm7boa # mdFjOJoMZrJA26eAUL9pLjYvCmc/QKFKimM1m9AZzHSqFxmRK7VVIBn7wBo6bco5 # m4LyupWhGtg0x7iJe3CIcFFmaex3/saUcnrPJYHtNIKa3wgVNzG0ba4cvxjVDc/+ # teHE+7FHcen67mOR7PHszlkEEXyuC2BT6irzvi8CD9BMXTETLx5pD4WbRZbCjRKL # Z64fr2mrBpaBAN+RfJUc5p4ZZN92yGBEL0njj39gakU5E0Qhpbr7kfpBQO1NArRL # f9/i4D24qvMa2EGDj38z7UEG4n2eP1OEjSja3XbGvfeOHjjNwMtgJAPeekyrAgMB # AAGjggF0MIIBcDAfBgNVHSMEGDAWgBRkIoa2SonJBA/QBFiSK7NuPR4nbDAdBgNV # HQ4EFgQUru7ZYLpe9SwBEv2OjbJVcjVGb/EwDgYDVR0PAQH/BAQDAgbAMAwGA1Ud # EwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQAYDVR0gBDkwNzA1Bgwr # BgEEAbIxAQIBAwgwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9D # UFMwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC5zZWN0aWdvLmNvbS9DT01P # RE9UaW1lU3RhbXBpbmdDQV8yLmNybDByBggrBgEFBQcBAQRmMGQwPQYIKwYBBQUH # MAKGMWh0dHA6Ly9jcnQuc2VjdGlnby5jb20vQ09NT0RPVGltZVN0YW1waW5nQ0Ff # Mi5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMA0GCSqG # SIb3DQEBBQUAA4IBAQB6f6lK0rCkHB0NnS1cxq5a3Y9FHfCeXJD2Xqxw/tPZzeQZ # pApDdWBqg6TDmYQgMbrW/kzPE/gQ91QJfurc0i551wdMVLe1yZ2y8PIeJBTQnMfI # Z6oLYre08Qbk5+QhSxkymTS5GWF3CjOQZ2zAiEqS9aFDAfOuom/Jlb2WOPeD9618 # KB/zON+OIchxaFMty66q4jAXgyIpGLXhjInrbvh+OLuQT7lfBzQSa5fV5juRvgAX # IW7ibfxSee+BJbrPE9D73SvNgbZXiU7w3fMLSjTKhf8IuZZf6xET4OHFA61XHOFd # kga+G8g8P6Ugn2nQacHFwsk+58Vy9+obluKUr4YuMIIFYjCCBEqgAwIBAgIRALNu # zl+AHwBLaskhcNdHeKUwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCR0IxGzAZ # BgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG # A1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQDExtTZWN0aWdvIFJTQSBDb2Rl # IFNpZ25pbmcgQ0EwHhcNMTkwNjE4MDAwMDAwWhcNMjAwNjE3MjM1OTU5WjCB0jEL # MAkGA1UEBhMCVVMxDjAMBgNVBBEMBTk0MzA0MQswCQYDVQQIDAJDQTESMBAGA1UE # BwwJUGFsbyBBbHRvMRwwGgYDVQQJDBMzMDAwIEhhbm92ZXIgU3RyZWV0MSswKQYD # VQQKDCJIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBDb21wYW55MRowGAYDVQQL # DBFIUCBDeWJlciBTZWN1cml0eTErMCkGA1UEAwwiSGV3bGV0dCBQYWNrYXJkIEVu # dGVycHJpc2UgQ29tcGFueTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB # AKUVKweLMUcZnBCyA0JaDCuU67H+jWledwmZZ1qriPYaEp9Q9eCssyCNFd/xhkq8 # 3n3eFDtjTIYul7itNC6f3MYiRJOWOYAlKzlo+6zax/+Imx1IrT5XtYBErcZMgHbs # S0kVOTuuoXbDnBOjeWMTdTkyI3eyHz7Af02IH86CVotk4KZ0G56QGeq1/iexNerd # J8ocO6NvVbPgwRd1J0aOcjvcJRfoJ5BEBgt900XO5NSNWhrrfp62CXEimym+8THV # s6ZzBGpd5giocBMjzsIrhehkY/EFL4sc79ZCtTD3yb+Ep3R8zbZjzU/tpTerHovf # 2/nw3YcKee25a9bj8zLyTBMCAwEAAaOCAYYwggGCMB8GA1UdIwQYMBaAFA7hOqhT # OjHVir7Bu61nGgOFrTQOMB0GA1UdDgQWBBRFhF/nQIDbv/qqvMFFw1gQhBINsDAO # BgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcD # AzARBglghkgBhvhCAQEEBAMCBBAwQAYDVR0gBDkwNzA1BgwrBgEEAbIxAQIBAwIw # JTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwQwYDVR0fBDww # OjA4oDagNIYyaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ29kZVNp # Z25pbmdDQS5jcmwwcwYIKwYBBQUHAQEEZzBlMD4GCCsGAQUFBzAChjJodHRwOi8v # Y3J0LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FDb2RlU2lnbmluZ0NBLmNydDAjBggr # BgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcNAQELBQAD # ggEBAEDfa8fIz8Aqu6zdI4aHstQmaiomnL4GLa+vv8wdKsYcYZiF7zKynLYVSwG/ # 76foYoqamV4/WRKfMJRJM/T1c4B6l1Sf8yAPeW9ev6cF+prxatgoCj/GH7mC0UM6 # JOL32CqrRI6QfFBZG0gXhUo4btK8jcTlq/SQKp5oCxJryTZNSr1QpuIwZ8ckQth7 # fxlr3jJ5RMMWz/rwnwf8VXwA4+Y/+v5vWXGSiCj4NayYaPPabJ+tWHJOfib/+KHG # mkH2lRnYirlcQwAz5o+m0OnEZPcF65rPoHT5aEw/3/i2N7IdBg9w4lxaqv64YUFS # n4BNi06EZTFZ+lfzLZVpdT7H8j8wggV3MIIEX6ADAgECAhAT6ihwW/Ts7Qw2YwmA # YUM2MA0GCSqGSIb3DQEBDAUAMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU # cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx # IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3QwHhcNMDAwNTMwMTA0 # ODM4WhcNMjAwNTMwMTA0ODM4WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5l # dyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNF # UlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh # dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCA # EmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7 # NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTb # f6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/Fp0YvVGO # NaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2VN3I5xI6 # Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq/nRO # acdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6l # ZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8l # iM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0A # vzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+ # /XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeEHg9j1uli # utZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo4H0MIHxMB8GA1Ud # IwQYMBaAFK29mHo0tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBRTeb9aqitKz1SA # 4dibwJ3ysgNmyzAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zARBgNV # HSAECjAIMAYGBFUdIAAwRAYDVR0fBD0wOzA5oDegNYYzaHR0cDovL2NybC51c2Vy # dHJ1c3QuY29tL0FkZFRydXN0RXh0ZXJuYWxDQVJvb3QuY3JsMDUGCCsGAQUFBwEB # BCkwJzAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkq # hkiG9w0BAQwFAAOCAQEAk2X2N4OVD17Dghwf1nfnPIrAqgnw6Qsm8eDCanWhx3nJ # uVJgyCkSDvCtA9YJxHbf5aaBladG2oJXqZWSxbaPAyJsM3fBezIXbgfOWhRBOgUk # G/YUBjuoJSQOu8wqdd25cEE/fNBjNiEHH0b/YKSR4We83h9+GRTJY2eR6mcHa7SP # i8BuQ33DoYBssh68U4V93JChpLwt70ZyVzUFv7tGu25tN5m2/yOSkcZuQPiPKVbq # X9VfFFOs8E9h6vcizKdWC+K4NB8m2XsZBWg/ujzUOAai0+aPDuO0cW1AQsWEtECV # K/RloEh59h2BY5adT3Xg+HzkjqnR8q2Ks4zHIc3C7zCCBfUwggPdoAMCAQICEB2i # SDBvmyYY0ILgln0z02owDQYJKoZIhvcNAQEMBQAwgYgxCzAJBgNVBAYTAlVTMRMw # EQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UE # ChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNB # IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE4MTEwMjAwMDAwMFoXDTMwMTIz # MTIzNTk1OVowfDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hl # c3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVk # MSQwIgYDVQQDExtTZWN0aWdvIFJTQSBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqG # SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCGIo0yhXoYn0nwli9jCB4t3HyfFM/jJrYl # ZilAhlRGdDFixRDtsocnppnLlTDAVvWkdcapDlBipVGREGrgS2Ku/fD4GKyn/+4u # MyD6DBmJqGx7rQDDYaHcaWVtH24nlteXUYam9CflfGqLlR5bYNV+1xaSnAAvaPeX # 7Wpyvjg7Y96Pv25MQV0SIAhZ6DnNj9LWzwa0VwW2TqE+V2sfmLzEYtYbC43HZhtK # n52BxHJAteJf7wtF/6POF6YtVbC3sLxUap28jVZTxvC6eVBJLPcDuf4vZTXyIuos # B69G2flGHNyMfHEo8/6nxhTdVZFuihEN3wYklX0Pp6F8OtqGNWHTAgMBAAGjggFk # MIIBYDAfBgNVHSMEGDAWgBRTeb9aqitKz1SA4dibwJ3ysgNmyzAdBgNVHQ4EFgQU # DuE6qFM6MdWKvsG7rWcaA4WtNA4wDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQI # MAYBAf8CAQAwHQYDVR0lBBYwFAYIKwYBBQUHAwMGCCsGAQUFBwMIMBEGA1UdIAQK # MAgwBgYEVR0gADBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVz # dC5jb20vVVNFUlRydXN0UlNBQ2VydGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwdgYI # KwYBBQUHAQEEajBoMD8GCCsGAQUFBzAChjNodHRwOi8vY3J0LnVzZXJ0cnVzdC5j # b20vVVNFUlRydXN0UlNBQWRkVHJ1c3RDQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6 # Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggIBAE1jUO1HNEph # pNveaiqMm/EAAB4dYns61zLC9rPgY7P7YQCImhttEAcET7646ol4IusPRuzzRl5A # RokS9At3WpwqQTr81vTr5/cVlTPDoYMot94v5JT3hTODLUpASL+awk9KsY8k9LOB # N9O3ZLCmI2pZaFJCX/8E6+F0ZXkI9amT3mtxQJmWunjxucjiwwgWsatjWsgVgG10 # Xkp1fqW4w2y1z99KeYdcx0BNYzX2MNPPtQoOCwR/oEuuu6Ol0IQAkz5TXTSlADVp # bL6fICUQDRn7UJBhvjmPeo5N9p8OHv4HURJmgyYZSJXOSsnBf/M6BZv5b9+If8Aj # ntIeQ3pFMcGcTanwWbJZGehqjSkEAnd8S0vNcL46slVaeD68u28DECV3FTSK+TbM # Q5Lkuk/xYpMoJVcp+1EZx6ElQGqEV8aynbG8HArafGd+fS7pKEwYfsR7MUFxmksp # 7As9V1DSyt39ngVR5UR43QHesXWYDVQk/fBO4+L4g71yuss9Ou7wXheSaG3IYfmm # 8SoKC6W59J7umDIFhZ7r+YMp08Ysfb06dy6LN0KgaoLtO0qqlBCk4Q34F8W2Wnkz # GJLjtXX4oemOCiUe5B7xn1qHI/+fpFGe+zmAEc3btcSnqIBv5VPU4OOiwtJbGvoy # Ji1qV3AcPKRYLqPzW0sH3DJZ84enGm1YMYIEZzCCBGMCAQEwgZEwfDELMAkGA1UE # BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2Fs # Zm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSQwIgYDVQQDExtTZWN0aWdv # IFJTQSBDb2RlIFNpZ25pbmcgQ0ECEQCzbs5fgB8AS2rJIXDXR3ilMA0GCWCGSAFl # AwQCAQUAoHwwEAYKKwYBBAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQB # gjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkE # MSIEIMqbTAf7xWZxz8AM5XUr4FcnQiDhX4dNMfBoezDoU9RbMA0GCSqGSIb3DQEB # AQUABIIBAJeWXuLet0/+XxjMNlj2t8wVvaVIIzKSQwUwEj9vNTfTXJd1un9bo1W4 # v98ucByy7zurOQceI8C24X6MrQIbdVjlOKQjMkYGJ/KAlPc1wuf3vmbo7f9eMs2p # SSRVH0NKSu89wkXv56CzxVWUmaw694qAhsT8qNa7ao90BJeHQm59cMwNq1j4cjJF # D1NeELiCMkCpAy/SA7SCh9BQQV/k63uYkYphmVFXW30j0MN4336C/LBRC2ibmPKC # Jtv96am7bmCBsH84TtdDTJ6Mi6GBQA2P1gXBSxA4VKK1t2xuu77evjsfav4nWytS # UM7B+Saayw80vwLZcoj+nsd/3jeD+UqhggIoMIICJAYJKoZIhvcNAQkGMYICFTCC # AhECAQEwgY4wejELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hl # c3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0 # ZWQxIDAeBgNVBAMTF0NPTU9ETyBUaW1lIFN0YW1waW5nIENBAhArc9t0YxFMWlsy # SvIwV3JJMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG # CSqGSIb3DQEJBTEPFw0yMDAzMjcxNzIzNTBaMCMGCSqGSIb3DQEJBDEWBBTPJ2sw # CX37+I4NGzUuj89/qYMFTzANBgkqhkiG9w0BAQEFAASCAQC07HSe3b2MaXOVaZQq # 5eCuvZ+OmD9xLqiqnraDL/ROVZGNd8mu8bH6Xlhay66TZXTsQUzYyJbVuctibQsi # 05fj6neyC2hT7JjtQRaBM9wkuN/9uTtw+18BTwi0XxsdaaIW7XnqdC3MmxpJ6oF9 # O4R7YbRwMxCIP0+dnZ73aIlCaerPIEfJTrehxrInLqbBKP5Tu+QVgrvagx6UGJFD # HRvTJ8bv9TE9HJMx4L1eJGgFsbn92tOayP2cP2TIALURBfxFO2L97QXg9ilPAHIJ # FgprtYaR/EQZKDuQKTPmR3natFZ2In+rVQW4aStAAsmkBZ5gB2CYYQRj5FB9M28y # yIc2 # SIG # End signature block |