# Copyright (C) 2007 Intel Corporation Function Invoke-AMTForceBoot { <# .Synopsis Invokes the Intel Active Management Technology force boot command .Description This CmdLet invokes an Intel Active Management Technology (AMT) force boot to a PXE server, the local hard drive, CD/DVD ROM drive, or remote DVD/CD ISO image from clients that have Intel AMT firmware version 3.0 or higher. .Notes Supported AMT Firmware Versions: 3.0 or higher. AMT Provisioning: The vPro client AMT firmware must be provisioned prior to accessing AMT functionality. This Cmdlet will fail if it is run against a vPro client that has not been provisioned. AMT Client Authentication: To invoke commands against AMT enabled clients credentials to authenticate must be specified. When no credential is provided as a parameter, the script will use the local logged on Kerberos credential. When only the username (Kerberos or Digest) parameter is included the user will be prompted to provide the associated password. Credentials should be stored as a PowerShell variable then passed into the Cmdlet with the credential parameter. $AMTCredential = get-credential AMT Client Encryption: If the Intel vPro client has been configured to use TLS (a web server certificate has been issued to the Intel Management Engine) the Cmdlet must be called with a -TLS switch. When managing an Intel vPro client over TLS (Port 16993) it is important that the computername parameter matchs the primary subject name of the issued TLS certificate. Typically this is the fully qualified domain name (FQDN). If Mutual TLS is desired, the Cmdlet must be called with -TLS switch and with a valid certificate name from the certificate store in the -CertificateName parameter. Status: Status output designates if the Cmdlet was run successfully. For failed attempts additional status may be provided. .Link http:\\vproexpert.com http:\\www.intel.com\vpro http:\\www.intel.com .Example Invoke-AMTForceBoot vproclient.vprodemo.com -TLS -CertificateName "myCertificate" -Operation:PowerOn -Device:PXE -Credential $AMTCredential ComputerName Port Operation Device Status ------------ ---- --------- ------ ------ vproclient.vprodemo.com 16993 PowerOn PXE Successful .Example Invoke-AMTForceBoot vproclient.vprodemo.com -Operation PowerOn -Device:HardDrive -Username:vprodemo\ITHelpDesk Will prompt for Kerberos username password. ComputerName Port Operation Device Status ------------ ---- --------- ------ ------ vproclient.vprodemo.com 16992 PowerOn HardDrive Successful .Example Invoke-AMTForceBoot vproclient -Operation:Reset -Device:IDER -IDERPath:"C:\bootable_image.iso" -Credential $AMTCredential Will boot remote client to ISO img with no SOL interaction. ComputerName Port Operation Device Status ------------ ---- --------- ------ ------ vproclient 16992 PowerOn IDER Successful .Example Invoke-AMTForceBoot Computer:vproclient -Operation:Reset -Device:BIOSSetup -Credential $AMTCredential -Console SOL -SOLTerminalPath $SOLTerminalPath -SOLTerminalArgList $SOLTerminalArgList Will boot remote client to BIOS with SOL interaction through a specifed terminal client. To use Microsoft telnet the following would be defined $SOLTerminalPath = "telnet" $SOLTerminalArgList = "-t ANSI 127.0.0.1 %Port" The $SOLTerminalArgList must have a %Port defined so the CMDLet will know where to insert the port ComputerName Port Operation Device Status ------------ ---- --------- ------ ------ vproclient 16992 PowerOn BIOSSetup Successful .Example Invoke-AMTForceBoot -ComputerName computer1.vprodemo.com,doesnotexist.vprodemo.com -TLS -Operation Reset -Device:Optical | Where {$_.Status -eq "Failed"} Will perform the power operation on every AMT client in the list, but only display the ones that failed. ComputerName Port Operation Device Status ------------ ---- --------- ------ ------ doesnotexist.vprodem... 16993 Reset Optical Failed .Example Get-Content computers.txt | Invoke-AMTForceBoot -TLS -Operation:PowerOn -Device:PXE Will pull the list of amt clients from a text file and pipe them in the Invoke-AMTForceBoot CMDLet. ComputerName Port Operation Device Status ------------ ---- --------- ------ ------ computer1.vprodemo.com 16993 PowerOn PXE Successful computer2.vprodemo.com 16993 PowerOn PXE Successful computer3.vprodemo.com 16993 PowerOn PXE Successful .Example Get-SomeDataFromOtherCMDLet | Select ComputerName | Invoke-AMTForceBoot -TLS -Operation PowerOn -Device:HardDrive Get-SomeDataFromOtherCMDLet is a custom script that has an output of ComputerName, Port, and Operation; however, you only select ComputerName. Remaining parameters are manually provided. ComputerName Port Operation Device Status ------------ ---- --------- ------ ------ computer1.vprodemo.com 16993 PowerOn HardDrive Successful computer2.vprodemo.com 16993 PowerOn HardDrive Successful computer3.vprodemo.com 16993 PowerOn HardDrive Successful .Example Invoke-AMTForceBoot vproclient.vprodemo.com -Operation:Reset -Device:BIOSSetup -Credential $AMTCredential -Console SOL -SOLTerminalPath "telnet" -SOLTerminalArgList "-t ANSI 127.0.0.1 %Port" This will reboot the client to the BIOS Setup screens while connecting SOL to a telnet window. Ok ComputerName : 192.168.1.106 Port : 16992 Operation : reset Device : BIOSSetup Status : Successful #> [CmdletBinding()] Param ( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$true, position=0, HelpMessage="Hostname, FQDN, or IP Address")] [String[]] $ComputerName, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=1, HelpMessage="Valid Ports are 16992 (non-TLS) or 16993 (TLS)")][ValidateSet("16992", "16993")] [String] $Port, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, HelpMessage="Use TLS (Port 16993)")] [switch] $TLS, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, HelpMessage="Accept self-signed certificate for TLS connection (skip any certificate checks.)")] [switch] $AcceptSelfSignedCert, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, HelpMessage="Name of certificate. (Use for mutual TLS)")] [string] $CertificateName, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=2, HelpMessage="Valid Operations are PowerOn or Reset")][ValidateSet("PowerOn", "Reset")] [String] $Operation, [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=3, HelpMessage="Valid Devices are Default, HardDrive, PXE, Optical, IDER or BIOSSetup")][ValidateSet("Default", "HardDrive", "PXE", "Optical", "IDER", "BIOSSetup")] [String] $Device, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=4, HelpMessage="Enter valid path to ISO or IMG file")] [String] $IDERPath, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=5, HelpMessage="Valid Consoles are SOL")][ValidateSet("SOL")] [String] $Console, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=6, HelpMessage="Path to SOL console")] [String] $SOLTerminalPath, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=7, HelpMessage="Path to SOL console")] [String] $SOLTerminalArgList, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, HelpMessage="Digest or Kerberos User")] [string] $Username, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, HelpMessage="Digest or Kerberos Password")] [string] $Password, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=8, HelpMessage="PS Credential")] [System.Management.Automation.PSCredential] $Credential ) Process { #create a connection object try { $Results = @() $Obj = new-object psobject $Connection = New-Object Intel.Management.Wsman.WsmanConnection if ($Credential.username.Length -gt 0) { $Connection.SetCredentials($Credential.Username, $Credential.Password) } elseif ($Username.length -gt 0) { if ($Password.length -gt 0) { $passwd = ConvertTo-SecureString $Password -AsPlainText –Force $Connection.SetCredentials($Username, $passwd) } else { $Cred = Get-Credential $Username $Connection.SetCredentials($Cred.Username, $Cred.Password) } } if ($Port.Length -lt 1) { if ($TLS.IsPresent) { $Port = 16993; } else { $Port = 16992; } } if($CertificateName.Length -gt 0) { $Connection.Options.SetClientCertificateByCertificateName($CertificateName) } if($AcceptSelfSignedCert.IsPresent) { $Connection.Options.AcceptSelfSignedCertificate=$true; } switch ($Operation) { "PowerOn" {$PowerInt = 2} "Reset" {$PowerInt = 10} } if($Console -eq "SOL") { if($SOLTerminalArgList -ne "") { if($SOLTerminalArgList.contains("%Port")) {} else { write-output "" write-output 'The $SOLTerminalArgList parameter must contain a "%Port" parameter.' write-output 'To use Microsoft telnet the following would be defined' write-output '$SOLTerminalPath = "telnet"' write-output '$SOLTerminalArgList = "-t ANSI 127.0.0.1 %Port"' write-output "" return } } if(($SOLTerminalPath -eq "") -or ($SOLTerminalArgList -eq "")) { write-output "" write-output 'If "-console SOL" is specifed:' write-output ' -SOLTerminalPath parameter containing the path to the terminal application must be present.' write-output ' -SOLTerminalArgList parameter containing the arguments to pass to the terminal application must be present.' write-output 'To use Microsoft telnet the following would be defined' write-output '$SOLTerminalPath = "telnet"' write-output '$SOLTerminalArgList = "-t ANSI 127.0.0.1 %Port"' write-output "" return } } ForEach ($Comp in $ComputerName) { try { #Attempt Connection with Client $Connection.SetHost($Comp, $Port) #Identify if redirection library required if (($device -eq "IDER") -or ($console -eq "SOL")) { if ($device -eq "IDER") { $IDERPath = $IDERPath.ToLower() #params for doing redirection if ($IDERPath.EndsWith("iso")) { $floppyFile = "$env:TEMP\floppy.img" $cdFile = $IDERPath $iderBootDevice = "1" write-host "Performing IDER boot with CD image." } elseif ($IDERPath.EndsWith("img")) { $cdFile = "$env:TEMP\cd.iso" $floppyFile = $IDERPath $iderBootDevice = "0" write-host "Performing IDER boot with floppy image." } else { write-host "You must enter a valid ISO or IMG file." return } } $cimRef = $Connection.NewReference("SELECT * FROM http://intel.com/wbem/wscim/1/amt-schema/1/AMT_RedirectionService") $cimObj = $cimRef.Get(); try{ if (!$cimObj.GetProperty("EnabledState").ToString().Equals("32771")) { $cimObj.SetProperty("EnabledState", "32771") $cimRef.Put($cimObj) } if ($cimObj.GetProperty("ListenerEnabled").ToString().Equals("false")) { $cimObj.SetProperty("ListenerEnabled", "true") $cimRef.Put($cimObj) } }catch { Write-Host $_.Exception.Message } $LibSettingsFile="$env:TEMP\MC.ini" $CertTrustFile="$env:TEMP\certs.pem" $imrLib = New-Object Intel.Management.Redirection.MediaRedirection #Initialize the Intel Media Redirection Library (imrLib) [Intel.Management.Redirection.IMRVersion]$libVersion = New-Object Intel.Management.Redirection.IMRVersion $imrResult = $imrLib.Init([ref] $libVersion, $LibSettingsFile) $imrResult=$imrLib.RemoveAllClients() #define a redirection client based on the WsmanConnection Address $imrClient = $imrLib.GetClientInfo($Connection.Address) #add the redirection client to the Library (Library return a value clientID) [System.UInt32]$clientId=[System.UInt32]::MaxValue $imrResult = $imrLib.AddClient($imrClient, [ref] $clientId) #SOL session cannot be open while boot to HD \ Cd\ PXE is performed. if(($Device -eq "PXE") -or ($Device -eq "Optical") -or ($Device -eq "HardDrive")){ write-output "SOL or IDER session cannot be open during boot to Hard Drive, CD or PXE." } else { if ($device -eq "IDER") { #create redirection session parameters (e.g user name and password) based on the Wsman Connection $iderParams = $imrLib.CreateSessionParams($Connection.Username, $Connection.Password) #define session timeouts $iderTimeouts = $imrLib.GetDefaultIDERTout() #Open an IDER session $imrResult = $imrLib.IDEROpenTCPSession($clientId, $iderParams, $iderTimeouts, $floppyFile, $cdFile) #after opening the session the next thing we will do is send a command to enable the IDER device for immediate use [Intel.Management.Redirection.IDERDeviceResult]$deviceResult = New-Object Intel.Management.Redirection.IDERDeviceResult [Intel.Management.Redirection.IDERDeviceCmd]$deviceCommand = New-Object Intel.Management.Redirection.IDERDeviceCmd $deviceCommand.pri_op = [Intel.Management.Redirection.SetOperation]::Enable $deviceCommand.pri_timing = [Intel.Management.Redirection.SetOption]::Immediately #enable the ider device for immediate use by setting the device state $imrResult = $imrLib.IDERSetDeviceState($clientId, $deviceCommand, [ref] $deviceResult); } if ($console -eq "SOL"){ #create redirection session parameters (e.g user name and password) based on the Wsman Connection $solParams = $imrLib.CreateSessionParams($Connection.Username, $Connection.Password) #define session timeouts $solTimeouts = $imrLib.GetDefaultSOLTout() #openSol Session $imrResult = $imrLib.SOLOpenTCPSession($clientId, $solParams, $solTimeouts, $imrLib.GetDefaultSOLParams()) Write-Host $imrResult $link= $imrLib.CreateTerminalLink($clientId); if($link.Open() -eq $false) { write-output "Error opening SOL Link" #close the session $imrResult = $imrLib.SOLCloseSession($clientId) #remove client $imrResult = $imrLib.RemoveClient($clientId) #close the library $imrResult = $imrLib.Close() return } } } } #Set the boot source $SourceRef = $Connection.NewReference("SELECT * FROM CIM_BootSourceSetting") switch ($Device) { "HardDrive" {$InstanceID = 'Intel(r) AMT: Force Hard-drive Boot'} "PXE" {$InstanceID = 'Intel(r) AMT: Force PXE Boot'} "Optical" {$InstanceID = 'Intel(r) AMT: Force CD/DVD Boot'} } $SourceRef.AddSelector("InstanceID", $InstanceID) $objRef = $Connection.NewReference("SELECT * FROM CIM_BootConfigSetting") $objRef.AddSelector("InstanceID", 'Intel(r) AMT: Boot Configuration 0') $InputObj = $objRef.CreateMethodInput("ChangeBootOrder") if (($device -eq "HardDrive") -or ($device -eq "PXE") -or ($device -eq "Optical")) { $InputObj.SetProperty("Source", $SourceRef) } $OutObj = $objRef.InvokeMethod($InputObj) #Set the AMT boot settings $cimRef = $Connection.NewReference("SELECT * FROM AMT_BootSettingData") $cimObj = $cimRef.Get() if ($device -eq "IDER") { $cimObj.SetProperty("UseIDER", "true") $cimObj.SetProperty("IDERBootDevice", $iderBootDevice) } else { $cimObj.SetProperty("UseIDER", "false") } if ($device -eq "BIOSSetup") { $cimObj.SetProperty("BIOSSetup", "true") } else { $cimObj.SetProperty("BIOSSetup", "false") } if(($console -eq "SOL") -and ($Device -ne "PXE") -and ($Device -ne "Optical") -and ($Device -ne "Harddrive")) { $cimObj.SetProperty("UseSOL", "true") } else { $cimObj.SetProperty("UseSOL", "false") } $cimObj.SetProperty("BootMediaIndex", "0"); $cimObj.SetProperty("UserPasswordBypass", "false") $putResult=$cimRef.Put($cimObj) $BootConfigSettingRef = $Connection.NewReference("SELECT * FROM CIM_BootConfigSetting") $BootConfigSettingRef.AddSelector("InstanceID", 'Intel(r) AMT: Boot Configuration 0') $objRef = $Connection.NewReference("CIM_BootService") $InputObj = $objref.CreateMethodInput("SetBootConfigRole") $InputObj.SetProperty("BootConfigSetting", $BootConfigSettingRef) $InputObj.SetProperty("Role", "1") $OutObj = $objRef.InvokeMethod($InputObj) #Get a reference to the ManagedSystem (User of the Service) $UserRef = $Connection.NewReference("SELECT * from CIM_ComputerSystem WHERE Name='ManagedSystem'") #Get the Instance of CIM_AssociatedPowerManagmentService for the ManagedSystem $ObjRef = $Connection.NewReference("CIM_AssociatedPowerManagementService"); $ObjRef.AddSelector("UserOfService", $userRef); $AssociatedObj = $ObjRef.Get() #Get current power state $PowerState = $AssociatedObj.GetProperty("PowerState").ToString() #If client in S4/S5 then poweron operation otherwise reset operation if (($PowerState -eq 8) -or ($PowerState -eq 7)) { $PowerInt = 2 } else { $PowerInt = 10 } #Now associate to the Provider of the Service (CIM_PowerManagementService) $ServiceRef = $AssociatedObj.GetProperty("ServiceProvided").Ref #Now invoke the RequestPowerStateChange $InputObj = $ServiceRef.CreateMethodInput("RequestPowerStateChange") $InputObj.SetProperty("PowerState", "$PowerInt") $InputObj.SetProperty("ManagedElement", $UserRef) $OutObj = $ServiceRef.InvokeMethod($InputObj); #Note Return Status $ReturnValue = $OutObj.GetProperty("ReturnValue").ToString() #Display SOL console if (($console -eq "SOL" ) -and ($device -ne "HardDrive") -and ($device -ne "PXE") -and ($device -ne "Optical")) { $argumentlist = $SOLTerminalArgList.replace("%Port", $link.Port) start-process -FilePath $SOLTerminalPath -ArgumentList $argumentlist -Wait } #Identify if redirection library required if (($console -eq "SOL")-and ($link) ) { $link.Close() #close the session $imrResult = $imrLib.SOLCloseSession($clientId) #remove client $imrResult = $imrLib.RemoveClient($clientId) #close the library $imrResult = $imrLib.Close() } if ($device -eq "IDER") { write-host -NoNewLine "Press any key to end the IDER session with" $Comp $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") write-host "" #close the session $imrResult = $imrLib.IDERCloseSession($clientId) #remove client $imrResult = $imrLib.RemoveClient($clientId) #close the library $imrResult = $imrLib.Close() } #Add Member to Object. Include Computer Name and Operation success $Obj | Add-Member -MemberType noteproperty -Name ComputerName -value $Comp $Obj | Add-Member -MemberType noteproperty -Name Port -value $Port $Obj | Add-Member -MemberType noteproperty -Name Operation -value $Operation $Obj | Add-Member -MemberType noteproperty -Name Device -value $Device if ($ReturnValue -eq 0) { $Obj | Add-Member -MemberType noteproperty -Name Status -value "Successful" } else { $Obj | Add-Member -MemberType noteproperty -Name Status -value "Failed" $Obj | Add-Member -MemberType noteproperty -Name Reason -value $_.Exception.Message } } catch { #Identify if redirection library required if ($console -eq "SOL") { if($link) { try { $link.Close() } catch { } } #close the session $imrResult = $imrLib.SOLCloseSession($clientId) } if ($device -eq "IDER") { write-host -NoNewLine "Press any key to end the IDER session with" $Comp $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") write-host "" #close the session $imrResult = $imrLib.IDERCloseSession($clientId) } #remove client $imrResult = $imrLib.RemoveClient($clientId) #Close the library if ($imrLib) { $imrResult = $imrLib.Close() #Add Member to Object. Include Computer Name and Operation success $Obj | Add-Member -MemberType noteproperty -Name ComputerName -value $Comp $Obj | Add-Member -MemberType noteproperty -Name Port -value $Port $Obj | Add-Member -MemberType noteproperty -Name Operation -value $Operation $Obj | Add-Member -MemberType noteproperty -Name Device -value $Device $Obj | Add-Member -MemberType noteproperty -Name Status -value "Failed" $Obj | Add-Member -MemberType noteproperty -Name Reason -value $_.Exception.Message } } #Append to Result $Results += $Obj } } catch { $Obj | Add-Member -MemberType noteproperty -Name ComputerName -value $Comp $Obj | Add-Member -MemberType noteproperty -Name Port -value $Port $Obj | Add-Member -MemberType noteproperty -Name Operation -value $Operation $Obj | Add-Member -MemberType noteproperty -Name Device -value $Device $Obj | Add-Member -MemberType noteproperty -Name Status -value "Failed" $Obj | Add-Member -MemberType noteproperty -Name Reason -value $_.Exception.Message #Append to Result $Results += $Obj } # Set back to false for the next cmdlet, if PS is still open $Connection.Options.AcceptSelfSignedCertificate=$false; #Write out Results Write-Output $Results } } # SIG # Begin signature block # MIItiwYJKoZIhvcNAQcCoIItfDCCLXgCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB6xb+oMCtQEsp1 # ogMTaTWefq0DAC41KOKKw3QDU6ey4aCCEX4wggVvMIIEV6ADAgECAhBI/JO0YFWU # jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI # DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM # EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy # dmljZXMwHhcNMjEwNTI1MDAwMDAwWhcNMjgxMjMxMjM1OTU5WjBWMQswCQYDVQQG # EwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMS0wKwYDVQQDEyRTZWN0aWdv # IFB1YmxpYyBDb2RlIFNpZ25pbmcgUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEBAQUA # A4ICDwAwggIKAoICAQCN55QSIgQkdC7/FiMCkoq2rjaFrEfUI5ErPtx94jGgUW+s # hJHjUoq14pbe0IdjJImK/+8Skzt9u7aKvb0Ffyeba2XTpQxpsbxJOZrxbW6q5KCD # J9qaDStQ6Utbs7hkNqR+Sj2pcaths3OzPAsM79szV+W+NDfjlxtd/R8SPYIDdub7 # P2bSlDFp+m2zNKzBenjcklDyZMeqLQSrw2rq4C+np9xu1+j/2iGrQL+57g2extme # me/G3h+pDHazJyCh1rr9gOcB0u/rgimVcI3/uxXP/tEPNqIuTzKQdEZrRzUTdwUz # T2MuuC3hv2WnBGsY2HH6zAjybYmZELGt2z4s5KoYsMYHAXVn3m3pY2MeNn9pib6q # RT5uWl+PoVvLnTCGMOgDs0DGDQ84zWeoU4j6uDBl+m/H5x2xg3RpPqzEaDux5mcz # mrYI4IAFSEDu9oJkRqj1c7AGlfJsZZ+/VVscnFcax3hGfHCqlBuCF6yH6bbJDoEc # QNYWFyn8XJwYK+pF9e+91WdPKF4F7pBMeufG9ND8+s0+MkYTIDaKBOq3qgdGnA2T # OglmmVhcKaO5DKYwODzQRjY1fJy67sPV+Qp2+n4FG0DKkjXp1XrRtX8ArqmQqsV/ # AZwQsRb8zG4Y3G9i/qZQp7h7uJ0VP/4gDHXIIloTlRmQAOka1cKG8eOO7F/05QID # AQABo4IBEjCCAQ4wHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYD # VR0OBBYEFDLrkpr/NZZILyhAQnAgNpFcF4XmMA4GA1UdDwEB/wQEAwIBhjAPBgNV # HRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUFBwMDMBsGA1UdIAQUMBIwBgYE # VR0gADAIBgZngQwBBAEwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21v # ZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNAYIKwYBBQUHAQEE # KDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZI # hvcNAQEMBQADggEBABK/oe+LdJqYRLhpRrWrJAoMpIpnuDqBv0WKfVIHqI0fTiGF # OaNrXi0ghr8QuK55O1PNtPvYRL4G2VxjZ9RAFodEhnIq1jIV9RKDwvnhXRFAZ/ZC # J3LFI+ICOBpMIOLbAffNRk8monxmwFE2tokCVMf8WPtsAO7+mKYulaEMUykfb9gZ # pk+e96wJ6l2CxouvgKe9gUhShDHaMuwV5KZMPWw5c9QLhTkg4IUaaOGnSDip0TYl # d8GNGRbFiExmfS9jzpjoad+sPKhdnckcW67Y8y90z7h+9teDnRGWYpquRRPaf9xH # +9/DUp/mBlXpnYzyOmJRvOwkDynUWICE5EV7WtgwggXpMIIEUaADAgECAhEA/lzU # lQGKZRek0E74e2uTOjANBgkqhkiG9w0BAQwFADBUMQswCQYDVQQGEwJHQjEYMBYG # A1UEChMPU2VjdGlnbyBMaW1pdGVkMSswKQYDVQQDEyJTZWN0aWdvIFB1YmxpYyBD # b2RlIFNpZ25pbmcgQ0EgUjM2MB4XDTI0MDMxMzAwMDAwMFoXDTI1MDMxMzIzNTk1 # OVowWjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExGjAYBgNVBAoM # EUludGVsIENvcnBvcmF0aW9uMRowGAYDVQQDDBFJbnRlbCBDb3Jwb3JhdGlvbjCC # AaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAI69Cz15squYBdM5ZXnjFBNn # vqzI4WUgaQ/PjBKog2t/IkSByXK+3K1m4CwQtTgqpMCD193E3A/xDHmWVEvpCKUB # +xc8c/8FE6TymrIKA/0UH7jVesLgCo0AxfM0dkcqrvLKvnchseekdaM2b+E41NSj # AhhWgGp1LoTZyrAOJNpGsPIfgA/0+J6RCECh9BARbXCRXAnzTuPtWDXfKlOwSa4+ # o2tJM7TPNALTJSLHoZbvfUOpgOh+0lWx49himoW6lfDt5cZDPOT8wNwpd5DWwB8M # hzLfNEpbvR/85s8SP/dWRrAVkSRxS1wqIZa9OsxD+rjBBIe8JDR1Y9hjGBUKybMA # Y30Pp8rDpFeH1Ya1A8gNeae8KRSlacroyoxhRviL9n8nCZIhiqL6Q0Qu9cJGwlYi # L9mAMRyVPI3BHf0s6r6BRqt8yBYP/2dsgc4z9YV9DGJUaKz2kjwud1OJZupFDZio # +shzbO/h78iJSQiMVHgMVFEVOZFERE3dVSEFsWdPAwIDAQABo4IBrjCCAaowHwYD # VR0jBBgwFoAUDyrLIIcouOxvSK4rVKYpqhekzQwwHQYDVR0OBBYEFCjtPWp/OnUU # 51aXAiBwcQ/gvYfGMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMBMGA1Ud # JQQMMAoGCCsGAQUFBwMDMEoGA1UdIARDMEEwNQYMKwYBBAGyMQECAQMCMCUwIwYI # KwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAEEATBJBgNV # HR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLnNlY3RpZ28uY29tL1NlY3RpZ29QdWJs # aWNDb2RlU2lnbmluZ0NBUjM2LmNybDB5BggrBgEFBQcBAQRtMGswRAYIKwYBBQUH # MAKGOGh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY0NvZGVTaWdu # aW5nQ0FSMzYuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNv # bTAjBgNVHREEHDAagRhwa2llbmdpbmVlcmluZ0BpbnRlbC5jb20wDQYJKoZIhvcN # AQEMBQADggGBAB01WGV1cWjtTCQGkNtDRpmS08NuUis1F2+0cwIrk2dY8tXKiZ5R # supkBKWfpjNSHdW79DvVCotBbyRYUdDSeFkQ8jRPm+vlzyFhRWuW4qSYcIlx6qia # pGZEFsvmEEXMnwG9zEEeKsYlnM/ZSI23uLZCXyhJx35G2PpBr3tMym6gIvta5Dml # 4S/XEJJI/ZvIKhPO5QUemCS07S9QN7SOKeEkk1LdV1ccCBNtRpAzmGVr4iYS4pbV # r8yishYe25TSAPeWEy9PYEMnjZbQQS8lD8XFB6gfiTJLFCCzIKsHzMIk+FuJlwVl # q4ec/Wrx0+fpVeo2SPJZI/iE82gtD5oywotprC47MdvVlcvbePYnHoJqqRtnhX+E # 6jlGRtnhUCPV+BsRScp4v8DIUJGdV5AzS5rYu3YhJGDJgTgPGvBtmvaPeJtxcKzX # UnMpPtanuJgW3o1ucSo9SKb9dNqFcLcOUVD2lDjh85Z0anJom924xhVm4cGNWSF7 # az8cVA6zH/Rc6DCCBhowggQCoAMCAQICEGIdbQxSAZ47kHkVIIkhHAowDQYJKoZI # hvcNAQEMBQAwVjELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRl # ZDEtMCsGA1UEAxMkU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5nIFJvb3QgUjQ2 # MB4XDTIxMDMyMjAwMDAwMFoXDTM2MDMyMTIzNTk1OVowVDELMAkGA1UEBhMCR0Ix # GDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDErMCkGA1UEAxMiU2VjdGlnbyBQdWJs # aWMgQ29kZSBTaWduaW5nIENBIFIzNjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCC # AYoCggGBAJsrnVP6NT+OYAZDasDP9X/2yFNTGMjO02x+/FgHlRd5ZTMLER4ARkZs # Q3hAyAKwktlQqFZOGP/I+rLSJJmFeRno+DYDY1UOAWKA4xjMHY4qF2p9YZWhhbeF # pPb09JNqFiTCYy/Rv/zedt4QJuIxeFI61tqb7/foXT1/LW2wHyN79FXSYiTxcv+1 # 8Irpw+5gcTbXnDOsrSHVJYdPE9s+5iRF2Q/TlnCZGZOcA7n9qudjzeN43OE/TpKF # 2dGq1mVXn37zK/4oiETkgsyqA5lgAQ0c1f1IkOb6rGnhWqkHcxX+HnfKXjVodTmm # V52L2UIFsf0l4iQ0UgKJUc2RGarhOnG3B++OxR53LPys3J9AnL9o6zlviz5pzsgf # rQH4lrtNUz4Qq/Va5MbBwuahTcWk4UxuY+PynPjgw9nV/35gRAhC3L81B3/bIaBb # 659+Vxn9kT2jUztrkmep/aLb+4xJbKZHyvahAEx2XKHafkeKtjiMqcUf/2BG935A # 591GsllvWwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAUMuuSmv81lkgvKEBCcCA2 # kVwXheYwHQYDVR0OBBYEFA8qyyCHKLjsb0iuK1SmKaoXpM0MMA4GA1UdDwEB/wQE # AwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMBsG # A1UdIAQUMBIwBgYEVR0gADAIBgZngQwBBAEwSwYDVR0fBEQwQjBAoD6gPIY6aHR0 # cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdSb290 # UjQ2LmNybDB7BggrBgEFBQcBAQRvMG0wRgYIKwYBBQUHMAKGOmh0dHA6Ly9jcnQu # c2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY0NvZGVTaWduaW5nUm9vdFI0Ni5wN2Mw # IwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMA0GCSqGSIb3DQEB # DAUAA4ICAQAG/4Lhd2M2bnuhFSCbE/8E/ph1RGHDVpVx0ZE/haHrQECxyNbgcv2F # ymQ5PPmNS6Dah66dtgCjBsULYAor5wxxcgEPRl05pZOzI3IEGwwsepp+8iGsLKaV # pL3z5CmgELIqmk/Q5zFgR1TSGmxqoEEhk60FqONzDn7D8p4W89h8sX+V1imaUb69 # 3TGqWp3T32IKGfIgy9jkd7GM7YCa2xulWfQ6E1xZtYNEX/ewGnp9ZeHPsNwwviJM # BZL4xVd40uPWUnOJUoSiugaz0yWLODRtQxs5qU6E58KKmfHwJotl5WZ7nIQuDT0m # WjwEx7zSM7fs9Tx6N+Q/3+49qTtUvAQsrEAxwmzOTJ6Jp6uWmHCgrHW4dHM3ITpv # G5Ipy62KyqYovk5O6cC+040Si15KJpuQ9VJnbPvqYqfMB9nEKX/d2rd1Q3DiuDex # MKCCQdJGpOqUsxLuCOuFOoGbO7Uv3RjUpY39jkkp0a+yls6tN85fJe+Y8voTnbPU # 1knpy24wUFBkfenBa+pRFHwCBB1QtS+vGNRhsceP3kSPNrrfN2sRzFYsNfrFaWz8 # YOdU254qNZQfd9O/VjxZ2Gjr3xgANHtM3HxfzPYF6/pKK8EE4dj66qKKtm2DTL1K # FCg/OYJyfrdLJq1q2/HXntgr2GVw+ZWhrWgMTn8v1SjZsLlrgIfZHDGCG2Mwghtf # AgEBMGkwVDELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEr # MCkGA1UEAxMiU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5nIENBIFIzNgIRAP5c # 1JUBimUXpNBO+HtrkzowDQYJYIZIAWUDBAIBBQCgfDAQBgorBgEEAYI3AgEMMQIw # ADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYK # KwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgtL5nshl/nh0MviJ/fDdj23jVHy4+ # Y4K7uLxHTy6UU8AwDQYJKoZIhvcNAQEBBQAEggGAPubWq9wCPK6uKTBa4EyW3hkT # /kRjF4umMzYoBOGXSIQBYcQw+QZ1bMmnpwV9b6wlokWuqewsxAEaSZA71sW3oPTB # DLJl+eFjzRI1fS6SOLq+4dnwBwRT6U21Lzltk8Wru/lH08CE6i0dg8K12CH3QGrj # 6rfhIB85QSdXm1fzoFqnAURdx2QDydXmV5uUscW99BxQ/eHR2QumV18LnXQsZSA2 # kueCCAe6cicGJIacWpJIf+6hUr5jGN35mrVLJlpbmBD5uKPKgNZXFZgztWZvBa4j # jIsUczFgxy7NTg0PaBejTvsrgsG1kOcAlHUBrTsDCZTscpaFTQtOuk6wgOWA+ZQn # kq1ZQXvRjfDCOFX7CcWA0lv3buTH1V9J/KFWwFuOLUcUk2Q3MjrRARXVf3PtSgZX # XaPirfStHFcIqIYRvWxMc8pJ/3nVgFXIjtgY1+HxD8r57JbprGmNWo48OdNvQDzB # NalxE6bGGh+lMRD9j4OGn2XG8YeJX+RnerKb/Vy6oYIYzTCCGMkGCisGAQQBgjcD # AwExghi5MIIYtQYJKoZIhvcNAQcCoIIYpjCCGKICAQMxDzANBglghkgBZQMEAgIF # ADCB8wYLKoZIhvcNAQkQAQSggeMEgeAwgd0CAQEGCisGAQQBsjECAQEwMTANBglg # hkgBZQMEAgEFAAQgaTC+IwkpuV+tavF6/1opu0Bi+iN2Uxj0JBE1MO881KUCFEYD # 1RwCHfcriWg+eBuVlCLAEPwBGA8yMDI1MDEyNzE5MDIyNVqgcqRwMG4xCzAJBgNV # BAYTAkdCMRMwEQYDVQQIEwpNYW5jaGVzdGVyMRgwFgYDVQQKEw9TZWN0aWdvIExp # bWl0ZWQxMDAuBgNVBAMTJ1NlY3RpZ28gUHVibGljIFRpbWUgU3RhbXBpbmcgU2ln # bmVyIFIzNaCCEv8wggZdMIIExaADAgECAhA6UmoshM5V5h1l/MwS2OmJMA0GCSqG # SIb3DQEBDAUAMFUxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0 # ZWQxLDAqBgNVBAMTI1NlY3RpZ28gUHVibGljIFRpbWUgU3RhbXBpbmcgQ0EgUjM2 # MB4XDTI0MDExNTAwMDAwMFoXDTM1MDQxNDIzNTk1OVowbjELMAkGA1UEBhMCR0Ix # EzARBgNVBAgTCk1hbmNoZXN0ZXIxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEw # MC4GA1UEAxMnU2VjdGlnbyBQdWJsaWMgVGltZSBTdGFtcGluZyBTaWduZXIgUjM1 # MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjdFn9MFIm739OEk6TWGB # m8PY3EWlYQQ2jQae45iWgPXUGVuYoIa1xjTGIyuw3suUSBzKiyG0/c/Yn++d5mG6 # IyayljuGT9DeXQU9k8GWWj2/BPoamg2fFctnPsdTYhMGxM06z1+Ft0Bav8ybww21 # ii/faiy+NhiUM195+cFqOtCpJXxZ/lm9tpjmVmEqpAlRpfGmLhNdkqiEuDFTuD1G # sV3jvuPuPGKUJTam3P53U4LM0UCxeDI8Qz40Qw9TPar6S02XExlc8X1YsiE6ETcT # z+g1ImQ1OqFwEaxsMj/WoJT18GG5KiNnS7n/X4iMwboAg3IjpcvEzw4AZCZowHyC # zYhnFRM4PuNMVHYcTXGgvuq9I7j4ke281x4e7/90Z5Wbk92RrLcS35hO30TABcGx # 3Q8+YLRy6o0k1w4jRefCMT7b5mTxtq5XPmKvtgfPuaWPkGZ/tbxInyNDA7YgOgcc # ULjp4+D56g2iuzRCsLQ9ac6AN4yRbqCYsG2rcIQ5INTyI2JzA2w1vsAHPRbUTeqV # LDuNOY2gYIoKBWQsPYVoyzaoBVU6O5TG+a1YyfWkgVVS9nXKs8hVti3VpOV3aeua # HnjgC6He2CCDL9aW6gteUe0AmC8XCtWwpePx6QW3ROZo8vSUe9AR7mMdu5+FzTmW # 8K13Bt8GX/YBFJO7LWzwKAUCAwEAAaOCAY4wggGKMB8GA1UdIwQYMBaAFF9Y7Uwx # eqJhQo1SgLqzYZcZojKbMB0GA1UdDgQWBBRo76QySWm2Ujgd6kM5LPQUap4MhTAO # BgNVHQ8BAf8EBAMCBsAwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEF # BQcDCDBKBgNVHSAEQzBBMDUGDCsGAQQBsjEBAgEDCDAlMCMGCCsGAQUFBwIBFhdo # dHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBBAIwSgYDVR0fBEMwQTA/oD2g # O4Y5aHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljVGltZVN0YW1w # aW5nQ0FSMzYuY3JsMHoGCCsGAQUFBwEBBG4wbDBFBggrBgEFBQcwAoY5aHR0cDov # L2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljVGltZVN0YW1waW5nQ0FSMzYu # Y3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG # 9w0BAQwFAAOCAYEAsNwuyfpPNkyKL/bJT9XvGE8fnw7Gv/4SetmOkjK9hPPa7/Ns # v5/MHuVus+aXwRFqM5Vu51qfrHTwnVExcP2EHKr7IR+m/Ub7PamaeWfle5x8D0x/ # MsysICs00xtSNVxFywCvXx55l6Wg3lXiPCui8N4s51mXS0Ht85fkXo3auZdo1O4l # HzJLYX4RZovlVWD5EfwV6Ve1G9UMslnm6pI0hyR0Zr95QWG0MpNPP0u05SHjq/Yk # PlDee3yYOECNMqnZ+j8onoUtZ0oC8CkbOOk/AOoV4kp/6Ql2gEp3bNC7DOTlaCmH # 24DjpVgryn8FMklqEoK4Z3IoUgV8R9qQLg1dr6/BjghGnj2XNA8ujta2Jyoxpqpv # yETZCYIUjIs69YiDjzftt37rQVwIZsfCYv+DU5sh/StFL1x4rgNj2t8GccUfa/V3 # iFFW9lfIJWWsvtlC5XOOOQswr1UmVdNWQem4LwrlLgcdO/YAnHqY52QwnBLiAuUn # uBeshWmfEb5oieIYMIIGFDCCA/ygAwIBAgIQeiOu2lNplg+RyD5c9MfjPzANBgkq # hkiG9w0BAQwFADBXMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1p # dGVkMS4wLAYDVQQDEyVTZWN0aWdvIFB1YmxpYyBUaW1lIFN0YW1waW5nIFJvb3Qg # UjQ2MB4XDTIxMDMyMjAwMDAwMFoXDTM2MDMyMTIzNTk1OVowVTELMAkGA1UEBhMC # R0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEsMCoGA1UEAxMjU2VjdGlnbyBQ # dWJsaWMgVGltZSBTdGFtcGluZyBDQSBSMzYwggGiMA0GCSqGSIb3DQEBAQUAA4IB # jwAwggGKAoIBgQDNmNhDQatugivs9jN+JjTkiYzT7yISgFQ+7yavjA6Bg+OiIjPm # /N/t3nC7wYUrUlY3mFyI32t2o6Ft3EtxJXCc5MmZQZ8AxCbh5c6WzeJDB9qkQVa4 # 6xiYEpc81KnBkAWgsaXnLURoYZzksHIzzCNxtIXnb9njZholGw9djnjkTdAA83ab # EOHQ4ujOGIaBhPXG2NdV8TNgFWZ9BojlAvflxNMCOwkCnzlH4oCw5+4v1nssWeN1 # y4+RlaOywwRMUi54fr2vFsU5QPrgb6tSjvEUh1EC4M29YGy/SIYM8ZpHadmVjbi3 # Pl8hJiTWw9jiCKv31pcAaeijS9fc6R7DgyyLIGflmdQMwrNRxCulVq8ZpysiSYNi # 79tw5RHWZUEhnRfs/hsp/fwkXsynu1jcsUX+HuG8FLa2BNheUPtOcgw+vHJcJ8Hn # JCrcUWhdFczf8O+pDiyGhVYX+bDDP3GhGS7TmKmGnbZ9N+MpEhWmbiAVPbgkqykS # kzyYVr15OApZYK8CAwEAAaOCAVwwggFYMB8GA1UdIwQYMBaAFPZ3at0//QET/xah # bIICL9AKPRQlMB0GA1UdDgQWBBRfWO1MMXqiYUKNUoC6s2GXGaIymzAOBgNVHQ8B # Af8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADATBgNVHSUEDDAKBggrBgEFBQcD # CDARBgNVHSAECjAIMAYGBFUdIAAwTAYDVR0fBEUwQzBBoD+gPYY7aHR0cDovL2Ny # bC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljVGltZVN0YW1waW5nUm9vdFI0Ni5j # cmwwfAYIKwYBBQUHAQEEcDBuMEcGCCsGAQUFBzAChjtodHRwOi8vY3J0LnNlY3Rp # Z28uY29tL1NlY3RpZ29QdWJsaWNUaW1lU3RhbXBpbmdSb290UjQ2LnA3YzAjBggr # BgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcNAQEMBQAD # ggIBABLXeyCtDjVYDJ6BHSVY/UwtZ3Svx2ImIfZVVGnGoUaGdltoX4hDskBMZx5N # Y5L6SCcwDMZhHOmbyMhyOVJDwm1yrKYqGDHWzpwVkFJ+996jKKAXyIIaUf5JVKjc # cev3w16mNIUlNTkpJEor7edVJZiRJVCAmWAaHcw9zP0hY3gj+fWp8MbOocI9Zn78 # xvm9XKGBp6rEs9sEiq/pwzvg2/KjXE2yWUQIkms6+yslCRqNXPjEnBnxuUB1fm6b # PAV+Tsr/Qrd+mOCJemo06ldon4pJFbQd0TQVIMLv5koklInHvyaf6vATJP4DfPtK # zSBPkKlOtyaFTAjD2Nu+di5hErEVVaMqSVbfPzd6kNXOhYm23EWm6N2s2ZHCHVhl # UgHaC4ACMRCgXjYfQEDtYEK54dUwPJXV7icz0rgCzs9VI29DwsjVZFpO4ZIVR33L # wXyPDbYFkLqYmgHjR3tKVkhh9qKV2WCmBuC27pIOx6TYvyqiYbntinmpOqh/QPAn # hDgexKG9GX/n1PggkGi9HCapZp8fRwg8RftwS21Ln61euBG0yONM6noD2XQPrFwp # m3GcuqJMf0o8LLrFkSLRQNwxPDDkWXhW+gZswbaiie5fd/W2ygcto78XCSPfFWve # UOSZ5SqK95tBO8aTHmEa4lpJVD7HrTEn9jb1EGvxOb1cnn0CMIIGgjCCBGqgAwIB # AgIQNsKwvXwbOuejs902y8l1aDANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UEBhMC # VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4w # HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVz # dCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjEwMzIyMDAwMDAwWhcN # MzgwMTE4MjM1OTU5WjBXMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBM # aW1pdGVkMS4wLAYDVQQDEyVTZWN0aWdvIFB1YmxpYyBUaW1lIFN0YW1waW5nIFJv # b3QgUjQ2MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAiJ3YuUVnnR3d # 6LkmgZpUVMB8SQWbzFoVD9mUEES0QUCBdxSZqdTkdizICFNeINCSJS+lV1ipnW5i # hkQyC0cRLWXUJzodqpnMRs46npiJPHrfLBOifjfhpdXJ2aHHsPHggGsCi7uE0awq # KggE/LkYw3sqaBia67h/3awoqNvGqiFRJ+OTWYmUCO2GAXsePHi+/JUNAax3kpqs # tbl3vcTdOGhtKShvZIvjwulRH87rbukNyHGWX5tNK/WABKf+Gnoi4cmisS7oSimg # HUI0Wn/4elNd40BFdSZ1EwpuddZ+Wr7+Dfo0lcHflm/FDDrOJ3rWqauUP8hsokDo # I7D/yUVI9DAE/WK3Jl3C4LKwIpn1mNzMyptRwsXKrop06m7NUNHdlTDEMovXAIDG # AvYynPt5lutv8lZeI5w3MOlCybAZDpK3Dy1MKo+6aEtE9vtiTMzz/o2dYfdP0KWZ # wZIXbYsTIlg1YIetCpi5s14qiXOpRsKqFKqav9R1R5vj3NgevsAsvxsAnI8Oa5s2 # oy25qhsoBIGo/zi6GpxFj+mOdh35Xn91y72J4RGOJEoqzEIbW3q0b2iPuWLA911c # RxgY5SJYubvjay3nSMbBPPFsyl6mY4/WYucmyS9lo3l7jk27MAe145GWxK4O3m3g # EFEIkv7kRmefDR7Oe2T1HxAnICQvr9sCAwEAAaOCARYwggESMB8GA1UdIwQYMBaA # FFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBT2d2rdP/0BE/8WoWyCAi/Q # Cj0UJTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zATBgNVHSUEDDAK # BggrBgEFBQcDCDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/ # aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRp # b25BdXRob3JpdHkuY3JsMDUGCCsGAQUFBwEBBCkwJzAlBggrBgEFBQcwAYYZaHR0 # cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEADr5lQe1o # RLjlocXUEYfktzsljOt+2sgXke3Y8UPEooU5y39rAARaAdAxUeiX1ktLJ3+lgxto # LQhn5cFb3GF2SSZRX8ptQ6IvuD3wz/LNHKpQ5nX8hjsDLRhsyeIiJsms9yAWnvdY # OdEMq1W61KE9JlBkB20XBee6JaXx4UBErc+YuoSb1SxVf7nkNtUjPfcxuFtrQdRM # Ri/fInV/AobE8Gw/8yBMQKKaHt5eia8ybT8Y/Ffa6HAJyz9gvEOcF1VWXG8OMeM7 # Vy7Bs6mSIkYeYtddU1ux1dQLbEGur18ut97wgGwDiGinCwKPyFO7ApcmVJOtlw9F # VJxw/mL1TbyBns4zOgkaXFnnfzg4qbSvnrwyj1NiurMp4pmAWjR+Pb/SIduPnmFz # bSN/G8reZCL4fvGlvPFk4Uab/JVCSmj59+/mB2Gn6G/UYOy8k60mKcmaAZsEVkhO # Fuoj4we8CYyaR9vd9PGZKSinaZIkvVjbH/3nlLb0a7SBIkiRzfPfS9T+JesylbHa # 1LtRV9U/7m0q7Ma2CQ/t392ioOssXW7oKLdOmMBl14suVFBmbzrt5V5cQPnwtd3U # OTpS9oCG+ZZheiIvPgkDmA8FzPsnfXW5qHELB43ET7HHFHeRPRYrMBKjkb8/IN7P # o0d0hQoF4TeMM+zYAJzoKQnVKOLg8pZVPT8xggSRMIIEjQIBATBpMFUxCzAJBgNV # BAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxLDAqBgNVBAMTI1NlY3Rp # Z28gUHVibGljIFRpbWUgU3RhbXBpbmcgQ0EgUjM2AhA6UmoshM5V5h1l/MwS2OmJ # MA0GCWCGSAFlAwQCAgUAoIIB+TAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQw # HAYJKoZIhvcNAQkFMQ8XDTI1MDEyNzE5MDIyNVowPwYJKoZIhvcNAQkEMTIEMKQN # MKHj1iRXx0Lg//XSK8/7YjEXVrrVKdJ7gIJeTgO6ZYpFqKh75iW5RU7rwKlIFTCC # AXoGCyqGSIb3DQEJEAIMMYIBaTCCAWUwggFhMBYEFPhgmBmm+4gs9+hSl/KhGVIa # FndfMIGHBBTGrlTkeIbxfD1VEkiMacNKevnC3TBvMFukWTBXMQswCQYDVQQGEwJH # QjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMS4wLAYDVQQDEyVTZWN0aWdvIFB1 # YmxpYyBUaW1lIFN0YW1waW5nIFJvb3QgUjQ2AhB6I67aU2mWD5HIPlz0x+M/MIG8 # BBSFPWMtk4KCYXzQkDXEkd6SwULaxzCBozCBjqSBizCBiDELMAkGA1UEBhMCVVMx # EzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYD # VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBS # U0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkCEDbCsL18Gzrno7PdNsvJdWgwDQYJ # KoZIhvcNAQEBBQAEggIAWVERb9sFBOjjVarxOxVhtzWEX21a38Mij4pBzIsWXuoy # R7QP5bvu9ppK62Iw8BncnK3HgKQdCWA7higjLz2X9Yjk9Vc57OsZwUjcdMJsPwi3 # 2XYStULhtqqVXQK7MyvGJV8lBmTgL6pNkDTm/raXHtS7/Pu1BY8Yu61bZ3QoQkex # SpTJwxa/VOXjS6VaeZhnGFsAxcexWGBaw5D9u0Bqu+DJKFpmzApH3ULpaf6mAUou # lS7zxfn+mqQaViPnMGa5xmj32Oz++HZbtLldMxgrwbRB5nt0h3kzstZXl/Vo8W44 # xocgn6cgKnoIdIWKm0lWfa4ZYC+e8JLRa+3bNiRA/Rg3gk+yHuWxJRSaKRU+5Krw # Kd4Ma62TO8Q3v6qQIfeMtTNCeweP0X8oCAfnKMFa6AjcPzOINbKrqQk7WIE8U+A+ # Q+uDQP5FeR+u5LUB1Bd7NeMLjGvte9pg3vo9MwRUensGkobm5ijh5xSF7Nwx4vf4 # tioQJhmOIUdBngWjNsnRMZpDO7o1qy//CFo263N+eDbnHQAmsOXyeXgxl6smXJm0 # W7nWoouQ3HYZ3wp7CJJwHBUGPhYkc3EncvPE5dQ4kMHasxhELoLGsXn7kMMzXRRu # VKwm6lQSF95LX4XBRl+zGS4KU8Sw+FdSrXs5gDu3IUetoCI92Q7ckfOgl8Hu+Yk= # SIG # End signature block