RDP Shadow Session

Click here to view and download the files.

Function: This script opens an RDP shadow session on a remote Windows PC or server for a specified Active user session.

Requirements: The zip file should be extracted to C:\Scripts\Troubleshooting\Shadow2 (or the shortcut modified to reflect the actual location). The "RDP Shadow 2" icon can be dragged to the desktop or other location.

This script does not require a pre-elevated PowerShell console (the script prompts for admin credentials to elevate).

The initiator must have admin rights on the remote PC.

This script requires the remote PC be online and that an active session be present.

Usage: Double-Click the "RDP Shadow 2" shortcut. The script will then prompt for admin credentials (modify the 1st line of the Elevate.ps1 script to personalize).

The script will then prompt for the "Remote PC" and will then identify the active session and attempt to shadow it.

Output: This script will launch an RDP shadow session on the remote PC. The the user prompt to accept the shadow session should be displayed briefly and then auto-accepted and the shadow session connected.

On the initiating PC, a local log file (Shadow.log) will be created/appended for historical reference.

This script uses an overlay in the upper-righthand corner to signify that a shadow session is in progress and when the session is closed, the overlay will be removed.

Additional Details: This is version 2 of this script. (Version one of the script may be included at a later date.)

The previous version displayed a dialog box to notify the user when the session was closed and this version uses an overlay to mimic the behavior that Bomgar uses. This version also auto-accepts the session where the previous version required having the user look for the dialog and click "OK."

This version of the script also uses a file-less approach and does not copy script/filter/graphic/batch files to the remote PC. Instead, the overlay graphic is base64 encoded and embedded in the script. The scheduled task is configured from an embedded xml task definition and the task launches a base64 encoded script. The one concession is that a log is created on the remote PC with some details of the session for help in troubleshooting. The log is located at C:\Temp\sc2.log on the remote PC.

Scripts Breakdown - Overview

There are 3 scripts for the main function of this utility. Each will be listed and discussed. There are also a couple of support scripts and the script that is encoded and added to the Scheduled Task on the remote host which will also be listed and discussed. The support scripts make the Base64 encoding of the image and the Scheduled Task Action script a bit easier to customize.

The elevate.ps1 script prompts you for your admin credentials (See "About" in the site documentation for better understanding). Once this is completed, the script then launches the Shadow2.ps1 script.

The Shadow2.ps1 script prompts for the hostname of the PC/Server you wish to shadow. The script then connects to the remote host and identifies the active session. At this point the script will launch the Remote.ps1 script on the remote host. When that is finished, it then launches the shadow session.

The Remote.ps1 script creates an Event-Based Scheduled Task on the remote host that triggers when an event is logged in the System log corresponding to the connection of a shadow session (EventID=26, Name='Application Popup').

The Scheduled Task waits for the shadow session to connect and then triggers the task action. The task action is an encoded PowerShell command which first looks for the modal dialog asking the user to accept the remote session (and then accepts it for them). It then draws the overlay and checks every 10 seconds for the existence of the RdpSa process running on the host (remote PC or server from our context). When that process is no longer present (because we've closed the session), it closes the overlay providing the visual feedback to the user that the session has ended.

Elevate.ps1

$cred = Get-Credential "<Admin UserName>"

Try { Start-Process -FilePath "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" `

-ArgumentList "C:\Scripts\TroubleShooting\Shadow2\Shadow2.ps1" -Credential $cred }

Catch { [System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');[System.Windows.Forms.MessageBox]::Show("Bad Username or Password") }

This script simply presents the Windows Logon dialog box for admin credentials and then launches the Shadow2.ps1 script with those credentials. Those credentials must have administrator privileges on the remote host. Customize the first line to keep from typing your admin username each time you run the script. UPDATED - The script now verifies the credentials and a pop-up message is shown if the credentials are not valid.

Shadow2.ps1

$ErrorActionPreference = "SilentlyContinue"


# Get the remote host name

$pc = Read-Host "Remote PC"


# Get the active username (for the log) and the session ID (for the connection)

qwinsta /server:$pc | Select -Skip 1 | Foreach { If ($_.SubString(48,6) -like "Active") { [Int]$id = $_.SubString(41,5); $user = $_.SubString(19,9) } }

If (!$user) {

Write-Host "No " -NoNewLine; Write-Host -Fore Red "Active" -NoNewLine; Write-Host " User Session Found to Shadow.`n"

qwinsta /server:$pc

Read-Host "`nEnter to Exit"

Exit

}


# Local Logging

$out = @{}

$out.Add('Hostname:',$pc.ToUpper())

$out.Add('Username:',$user)

$out.Add('DateTime:',(Get-Date))

($out | FT -Auto -HideTableHeaders | Out-String).Trim() | Out-File -Append .\Shadow.log

"-------------------------------" | Out-File -Append .\Shadow.log


# Do the Scheduled Task Thing

Try { Invoke-Command -FilePath ".\Remote.ps1" -ComputerName $pc -EnableNetworkAccess }

Catch { $error[0] }


Start-Sleep 2


mstsc /shadow:$id /v:$pc /f /control

This script prompts the initiator (you) for the hostname of the remote PC or server that you wish to shadow. UPDATED - It then identifies the active user on the host (if one exists). If no active user is found all sessions on the remote host are listed for troubleshooting purposes.

This script then generates a log locally indicating the username and the hostname for this shadow session. This is helpful in the future for users who are not proficient in locating the hostname of their PC. (Once you've walked them through the process, the information will be logged here and you can check the log instead of walking them through the process on subsequent sessions.)

This script then launches the Remote.ps1 script on the remote host and waits for that process to complete and then launches the RDP Shadow Session - connecting you to the active desktop on the remote host.

Remote.ps1

If ($users = (quser)) { $users | Select -Skip 1 | Foreach { If ($_.Substring(46,6) -eq "Active") { $user = ($_.SubString(1,9)).Trim() } } }

[string]$evtStr = @"

<?xml version="1.0" encoding="UTF-16"?>

<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">

<RegistrationInfo>

<Description>Display Overlay for Shadow Session</Description>

<URI>\Flint\ShadowChk2</URI>

<SecurityDescriptor></SecurityDescriptor>

</RegistrationInfo>

<Triggers>

<EventTrigger>

<Enabled>true</Enabled>

<Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="System"&gt;&lt;Select Path="System"&gt;*[System[Provider[@Name='Application Popup'] and EventID=26]]&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription>

</EventTrigger>

</Triggers>

<Principals>

<Principal id="Author">

<UserId>!user!</UserId>

<LogonType>InteractiveToken</LogonType>

<RunLevel>LeastPrivilege</RunLevel>

</Principal>

</Principals>

<Settings>

<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>

<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>

<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>

<AllowHardTerminate>true</AllowHardTerminate>

<StartWhenAvailable>false</StartWhenAvailable>

<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>

<IdleSettings>

<Duration>PT10M</Duration>

<WaitTimeout>PT1H</WaitTimeout>

<StopOnIdleEnd>true</StopOnIdleEnd>

<RestartOnIdle>false</RestartOnIdle>

</IdleSettings>

<AllowStartOnDemand>true</AllowStartOnDemand>

<Enabled>true</Enabled>

<Hidden>false</Hidden>

<RunOnlyIfIdle>false</RunOnlyIfIdle>

<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>

<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>

<WakeToRun>false</WakeToRun>

<ExecutionTimeLimit>PT72H</ExecutionTimeLimit>

<Priority>7</Priority>

</Settings>

<Actions>

<Exec>

<Command>PowerShell.exe</Command>

<Arguments>-NoLogo -NoProfile -WindowStyle Hidden -Encoded "QQBkAGQALQBUAHkAcABlACAALQBBAHMAcwBlAG0AYgBsAHkAIABTAHkAcwB0AGUAbQAuAFcAaQBuAGQAbwB3AHMALgBGAG8AcgBtAHMALAAgAE0AaQBjAHIAbwBzAG8AZgB0AC4AVgBpAHMAdQBhAGwAQgBhAHMAaQBjADsAIAAkAGQAaQBhAGwAbwBnAFAAaQBkACAAPQAgACgAZwBwAHMAIAB8ACAAdwBoAGUAcgBlACAAewAgACQAXwAuAE0AYQBpAG4AVwBpAG4AZABvAHcAVABpAHQAbABlACAALQBNAGEAdABjAGgAIAAiAFIAZQBtAG8AdABlACAAQwBvAG4AdAByAG8AbAAgAFIAZQBxAHUAZQBzAHQAIgAgAH0AKQAuAEkAZAA7ACAAWwBNAGkAYwByAG8AcwBvAGYAdAAuAFYAaQBzAHUAYQBsAEIAYQBzAGkAYwAuAEkAbgB0AGUAcgBhAGMAdABpAG8AbgBdADoAOgBBAHAAcABBAGMAdABpAHYAYQB0AGUAKAAkAGQAaQBhAGwAbwBnAFAAaQBkACkAOwAgAFsAUwB5AHMAdABlAG0ALgBXAGkAbgBkAG8AdwBzAC4ARgBvAHIAbQBzAC4AUwBlAG4AZABLAGUAeQBzAF0AOgA6AFMAZQBuAGQAVwBhAGkAdAAoACIAewBFAG4AdABlAHIAfQAiACkAOwAgACAAWwBzAHQAcgBpAG4AZwBdACQAaQBtAGcAUwB0AHIAIAA9ACAAJwBpAFYAQgBPAFIAdwAwAEsARwBnAG8AQQBBAEEAQQBOAFMAVQBoAEUAVQBnAEEAQQBBAEgATQBBAEEAQQBCAHoAQwBBAFkAQQBBAEEAQwByAFEAegAzAG0AQQBBAEEAQQBBAFgATgBTAFIAMABJAEEAcgBzADQAYwA2AFEAQQBBAEEAQQBSAG4AUQBVADEAQgBBAEEAQwB4AGoAdwB2ADgAWQBRAFUAQQBBAEEAQQBKAGMARQBoAFoAYwB3AEEAQQBEAHMATQBBAEEAQQA3AEQAQQBjAGQAdgBxAEcAUQBBAEEAQgB3AEMAUwBVAFIAQgBWAEgAaABlADcAWgAwAEoAZgBGAHgAVgB2AGMAZgBQAGMAdQArAGQAeQBXAFMAUwB5AGQASQBtAHAARwB0AEsAMgBsAEsAMgAxADAASgBCAHkAbQBNAFYASAA2AEkAQwBMAGcAOQBaAG4AbgA0AFUAWgBTAGsASwBGAGoANgBJAFAARgBGADQAbgA1AEQAMwBrAGMAMgBLAEsAQgBXAHgAWgBSAE0AUgBOADMAeABQAEgAaQBKAFcAVQBEAGEAQgBzAHAAUQBDAHQAWABTAG4AcABWAHYAMgB6AEcAVAAyAHUANQAvADMAUAAzAGQATwBrAGsAbQBUAHkAZAB6AFoATQBoAEgAbQAyADAANQBtAC8AdQBmAGUAdQBYAFAAbQAvAE0ANwB5AFAAOQBzAGQAVgBLAEYAQwBoAFMAawBJAEYAcwA4AFYAaQBnAFIAagBEAE4AOQA5ADgAOAAwADEAcgBZADIAeAB4AG0AawBzAFgAagBmAGQARwA2ADYAZAA1AGoARQBDAGgATwBrADEAcQBrAFYAOABoAGcARQBQAEoAdABWAGcAWgBuAGsASQBJAGYAQQBPAEcAeAA2AEUAdgA4ADgARQBOAFoASwBLAFoARQBjAFYAYQBpAGMAVQBpAHEASgBCAHoAVABzADQAWQBQAHMAaQAzAFUAWgBWAEoAQgBpAFcAbwB6AHUATgB3AEUAQgBIAFIANABmAHUAZgBOAEEANABWAE0AVABNAGsAZgBQAFAAUAA1ADkAZQB1AHEAdwAyAGMARwB4ADkAcQBEAEUAVQBrACsAYgBXAFUARwB1ACsAbgAyAHEATABkAEIAUABQAGsAeABDAGIANgA4AEYAVwBtADgASgAwAEgAMgBZAGcAcgBNADAAdwBCAHEAMAB3AEMATwB5ADgARwBjAEoAYwB3AGMALwBHAEcATQBHADcAbQBQAE8AYQB3AHQAWABnAG0AUgBIAEMANABrAHoAcAAwAFIAbgBaAFMAUQBuAHEAOABtAEoAegAyADQAYQB1AHgAbgB0AE8ANgB2AGgAbAA3ADkARABiAEsAbQBTAEEAUQBSAEwAKwArAGUANABWAGkAcAA4AGwARABsAHYAawA2AHoALwBlADEAcwBtAEoAOQBUAFIANQBNAGoASABNADYAYwBTADIAYQB3AGgAagBzAGkATwBRAFcANQBHAEsAaQBKAGIAVQAwAGYAYgBlAEIASQByAGcANgBuAGMANgBXADQANAA0ADcAWQBJAGIAMQBvAFEAcgBZAHEAYgBSADMAdAA1AE8AagBxAGkATgB0AEoAegBxADIANwBzAEEAVwA4AFoAcABmAG0AUwBjAEwATgB2ADIAOABZAHAAdABCAEoARABOAGkANQBvADQAcwBjAHcAawA0AGgAcAA2AHQAegBPAE8AMwBnAHMAYQBUAHQARwB0AG0AZABhADQANgB0AHkAZgB2AG4AaAAxAFIAVQB5AEEAbAA4AEEARABkAC8ALwA3AHQAZgBVADAAcwBjAEoAcgBHAHkAMwBJAHQAQgBXAFMAcQB1AEMAbQBGAGgARABSAGEARgBSAEYAbQA3AG8AUwA2AFAAMQBCAGsANQB2AEkAdwByAFEALwBHAHAAagA3AHEAYQB2AHUAZQAvAEkATgBLAGsANwA3AFUARABPAGoAYQA3AGwAOABRAG0AMwAzAFAAVAA1AG0ATABNAEkAMgBrADAARABGAEsAUwBnAGsAYwBvAFQAYwAyAEoAbABBAGUAOABKAEMAUwBDAEkARgBZADEAVQB6AHoANwBuAHEAdwBhAGQAZQA1ADYAZAB3AGQAKwBwAEQAegB4AFYAcgAxAGgAaQBxAFMAVABjAEkAYwAwAHEAUwBpAEsAdABvAGMAMwBjAEMANwBRADEARAAxAFEAcABDADIAcABqADIAUgBtAHAAbgBmAGUAcgBLAGgAOQBlACsASwBrADYAcABpAEQAawBNAHcAWAA4AFcAcgA2AFkAYwBXAGsASgBIAFcAMwBzAFMAYQBIAGUASQBDADQAbQBoAFIATgBMAHcAbwBIAC8ARwBaADcAOQB4ADMAMQBPAHYAaQBWAE0AYwBLAG0ASQBLADEAcwBlAG0AcgBZAGUAKwBuAGkAWABNAEsAWQBPAGgARwBXAGgASABUAHgAegB0AEcARABEAEEAQgA4AE8AOABSAEkAYQBUAHQAUwAyAGYAVwB2AEgAZwBYADkAYQBKAFUANABhAHAATwBFAEIAcABoAEcANAA3AGMAMgArAGQAWQBzADQAVwBaAHQAawB4AGQAUgBPADkAMQB4ADEARABHADMAcwAwAFoASQBBADMAYgBTAE8AaQBKADcAMQBOAFgAMQBuACsAaQArAGQAKwBMAFUANABaAFIAYQBWAGsAcABvAFAAUgBsAEsAbABxAEwAZABOAEMAZQAvAHIAaQBhAEYATgB2AFMAawBoAHcAcgBwAG4AcQBhAFcAZwBIAEkAWAA4AGoAVABoAGwARABSAGMAdwAwAFEAcgBiAHYAVwBmAEcAeQByAE4AZwBnADUASAA0AFEAYwBtAE8AMwBpAGoAUwBMAEMANABtAFkASwBnAFgAVwA3AEQALwAwAGoATwAvAEQAWQBUAEQASABwAHkASgBtAEcAdABUAFMAMQBwAHMAMgBOAG8AUgBaAEYAcABoAGwAbwA4ADcAKwBCAEgAcQBuAFMAMABXAHEAbQBkAEoATgBwADcANgAxAHQAUQB0AG0AWABkADMAUgAwAGMARQBIAGMAagBOAFMARQBUAE8ATgBYAHQAeQBZAHMAQgBIAFcAaABEAG4AcABNAE4AdABHAFAAYwBFADQAZQByAHMAcgBpAGUASgBHAFMAagBlAEQAZQB0ACsASwBUAGwAdAAwADAAUQBVAGQAagAyAFUAYwBZAEIAKwBpAEkAbQBZAGEATgBWAFEANwBuAEcASwA3AFcAcABpAFQAQwBvAE4AMgBjAFMAQwBVAFIARwA5ADMASgBsAEYAVQBUAHcAbABwAFkAMgBsAHYAdQBMAHIANQAwADkAZQBzAGUAagBUAGkAQgBHAFMAaABJAHEAWgBnADIANQAyAGYAbgA5AG0AcQBSAE8ANgBuAHUAQQB3AGUAUABtAE0AbwBIAEUAbQBpAGQAegBvAFQASwBLAFEASwBJAFIARwBOAGgAQQBMAHoAegByAHYAbQAvAHIAWAA3AG4AUQBBAFgAVgBNAFEARQBOAHQAMQAxAC8AcABKAFcARgBIADcAUgBnADQAeAA1AEkAbQBqAHkAZwBHAFkAeABKAG8AYgBwACsAaABLAHAAYgBpADUARABSAEkAdAA2AG0AeQA1AGQAcwBlAGEASgA5AFUANgBBAFMAegA3ADAAWQBtADYAOAA0ADYATABqAEYAbAByAEIAdgB5AG4ASQBQAEYAUQBFAFQAUwByAEoAaABJAFkAMgBkAFMAZABRAFoAOQBSADAAMwBGAFIANABXAEYARwA1ADQAWQBhAHYALwArAEwAWgAzADYAZgBPAGMATQArAG8ASwB1AFgAVgB1ADcAOAB4AHIANwBXAHEAKwAyAE8AYQBTAFUAZQAxAEcAeABSAGIATwBpAEoAOABSAEIAQwAwAFAAOABpAGYARwBoAG8AeQBrAFIAQQB6AEMAUgAwADIAeAA4AEEAUAB5AE0AeQB5AEoARwB5AGIAcQBaAEEATQBZAC8AegBFAFoAbAA1AGkATwBvADIAOQBoAFIAUQBuAGEAQQBqAG4ANAB1AEkAVABxAGcAagBFAEMAYgBDAGMANgAwAGoAOAA1AFQAQQBtAC8ATwBQAG4AVQBZAGsAWQBwAHYAZwAwAGEAOAB3ADUANABDAFYAcQBwAHIAOQBKAEQAZgA5AEUAdwBXAFoAegBLAG4AUgB5ADAAWgBNADYAMgB0AHcAWgBRADkAcwBHAGQARwBlAEcAagBhAFAASwB0AGYAZgA0ADkAVABuAFgAWABQAEQAWQBZAHgAbgBUAE0AaABQAEQAWQBxADYANwA3AGUATABXAEoAZgBXADkARwA3AHkAUwBVAFEAKwA5AFYAQgBFADYARwBlAFQAUQBSAE8AWABTAG0AbwBuAEUANABhAFMAOQBIAEwAawBHAGcANAB3AEoANwBSAE0ARwBEADcASQBjAG0ASgBxAEoAdABuAGYASAAwAEwAdQA5AEsAagBKAEYARgBIAFQASgA5AHgAZgBOAHYALwBSAGMAUAB2AEMAZgBDAHMAawBOAHAAMwBpAHMAWAByADUAYwBQAHQAbgBmACsAYQB0AGEAcABoADMAbABaAE8AQgBSADMAMwA0AEsAdwBlAFAAbAA5AHAARQBHADEAMgAvADQAQQBjAGUAdwBEAFYAOQBiADUAVwBNAHEANQBSAEcAUwBEAHcAbwA0AG8AegBzADkAMgByAEMAUQBKAGwARwAyADkAZABYAE0AUABPAGYAcQBOAGIAKwBPAHAAVQBKAHkAeAAyAGsAegBsADcAVABFAGoAcQB3ADEANABoADkAbgBrADEAbwBpAHkAdwBQAGoASgBWAEsAMwBRAE0AaQBjAGEANwBHAGkAdwBBAGMARgB1AHYAbwBUAFUAQwBJADEAaQBFAFkAcQAxAC8ASABwAHIARwBSAHQAOAAyAGUALwB0AGUAYgBKAGYAaQBjAGcAVAB4AHcAeABWAFkATQBwAGsARwBzAHgANABpAE0ATwBCACsAWABxAEQAeABLADIASQB5AFIAOAB3AGEARQBHAGEAcABMAGgAZgBjAG4AKwB3AFEAUwBVAHkAQwBTAEsAaQA3ADQAawB3ADkAQgAwAGUAaABzAHYAdgBtAEwATgAwADEAdQBkAGcAQQBKAHcAeABHAHkAVwBvADcAcwBNAFIAbABYAEcAYwB3AHIAUABzAEUAUAB0AHkAZwBjAEkAdgBnAHEARQA2AGQAQwBKAEwARgBNAGIAeQBmAHUAUwBFAGUAaABMAGIAdQBsAFIAaAAvAHUAUwBQAEwAVQBUAFMAdQBPADMATABuAC8ANABoAGIAVgBPAFEASQBFADQAWQBtADUARQBTAHkATgBRADgAZQB4AHkAUABOAFgAeQAxAEQANABsAFoAVQBoAEkATwB1AFIASQBUAHoAYQBnAFcAagB5AG0AbwBlADEAOQBLAHUAcQBPAGoAYwBSAEIAawAvAHkAUAAxAHEAbwB0AFAAeABWAG0AdwBUAGgAaQBYAHQARABSAG8AZQB0AE0AMgBzAGsANwBIADQANABuACsAdwBFAHIAbQBjAHcAZwBpAEYAagBsAHkANgBWAHEAVQBrAFAAdgBEAHkAVABSAG4AawBGADkAdQBCAFgAVABKAGUAOQByAGsAYwBaAGwAeQAvAFAAcABnAG0AVABDAEUAWgBNAFQAdwA1AEkAegAvAGMATQBNACsATABpAGgAVAAvAHcAQQB3AEMAdwBRAGMAcQBpAHoAVwBRAGIANABTAG8ASAB1AFEAUgBYAHQAQwBoAGwASQArAEQAdgBjADQAZABtAGYAawBKAHMAdQB1AG0AYgBWAHEAcQBJAE8ANgBnACsAWAB3AGQAMAAzAGYAdQBiADAAVwBUAGoANABMAEYAVQB3AHgAdABOAEcAZAA3AEEAegBBAHEAWABZAE0AaQB4AG4AZwBkAEgAQgBwAGQAbABkADQAWABaAHgAVgBnAEcAMQBoAEkAMABWAEoARQBIADMAZwB5ADgATQBMAHcAZQBXAFkAYQBLACsAVQBOAEwAcABnAGcAUwBUAGsARQA3AHcARAAyAEsAVABTAEYAUQAzAGYALwBLAHkAQgA1ADkANwBVAFoAeABXAE4ASQBhAFQANgByADcAMgBhAHgAdQArAFoASwA3AHYAawB5AFYARQB5AEgAUQA1AHIAYwB4AG0AZwBEAGYAbwAvAFQAcgBhAHUARAArAEcAZABCAEQAVQBJAFUAUABDAE8AOABFAEgASABSAHQANwBLAG8AUwBrAC8AbQBmAGsANABHAE8ATwBuAFIAYQBZAGYAdAB3AGoAeQAyAGoAeAB2AEQAcQBrADAAUABJAEkAeQBhAGUAegBCAHMARgB6ADMAZAA2AHYAbwBiADEAaQBhAFMAUwB2ADgAcABLAGUAdQB2AC8ANgB5AGkALwBXADMAZQBJAFkAUgBXAFoAVQArAGcAegBjAGQATwBiADcAQQBhAEwATwBwAFEAMQBRAE0AagAxAHcAYQBLAEsAUABnADIATwA3AHUAdwB6ADAAOAByAGEAQgBzAG4AVwArAE0AdwBGADEAQwB6AHIAcABzAE8AbABvAGIAbgAyAFoAbABnAFcARABjAGwASAB3AFgAUABkAEIARwA3AG0AbABUADAAcwB0AGgAbwBlAEgATAB2AGsAZQA5ACsAagB6AFAAbAAvAE0AZABqAEsAZABVAFcATAAyADMAZgBTAHgAQgArAHUAeAAvAGwAVgBhAEMANABsAFEAQQAwAFUAegBpADAAWgA5AFEAVgB0ADkAYQBrAHYAeQAzAFoARgB1AG0ANQAzAFMAZgAvAGgAOQA0AEUAZgB5AEUAcAA1ADIASABZAHoASgBxAEEARgBYADUAeAAzAE8AbQAxAGkAcQBNAGsAaQBQAEUAUQAvAEgAMABEAGwAawBaAEoAeAA2AG4AMQA5ADAAKwBJAE4ASABBAEMAVwBQAGIAUABLADEASABqADkASABHAGoAMgB3AE8ANABtAG8AYwBRADMAMQBSAGoAVAAwAGQAcABmAHEARABBAHoAdwBXAE8AcgBFAHMAeQBNAFMATwBQAHkARQBLACsALwA5AFYAUwBoADEAVgB2AEUAWgBKAGUAYQB1AG0AOAA2ACsAWgBnADYATwAvAEkAaABVAEUAWQBRAGIAUQBOAEEAcwBZAGkAWgBWAEgATgA5AFAANQBjAGEARgAxADYAdwB0ADIAKwB6ADgAdwBiAHgANwB5ADMAbQBuAEwARgBCAEMAegA4AGkARQBlAFUAVABRAHAATQBMAEgAWABBAGYAQwBTAGIAUQBSACsAcABOAGgAMABaACsARQBiAGwAOQB5AG8ARwByADIASgA2ADkANgBhAE8AMABMAFQAawBDAEoARwBOAFUAeQBhAGoAWgA5ADIAZQBLADcAegAxAHkATwBCAEgAawBsAHUAMwByADMAWQBNAHMAUwBZAFoAYQBkAGwAKwA2ADQAcABJAFoAUABNAEoAZABMAFMARAA1AFUARgA0ADIAcgBhAEQAZABVAHIAeABFAHQASgBTAFIAVQByADMAWgBjAHEAcgArADUAMQBFAEoAeQBSAG8AawBaAFEAbgBWAGQAawBJAHYAaQBiAGsAZQBDAE0ATQBIAG8ASwBIAHIAZwBSAEcARwBXAG4AVABiAFUAYwA1ADIAUABtAEEAdQBGAE8AYgBtAEEAYQBuAHgAMwBWAG4AZgBVAFEASgAyAFIAdABJAEUAQgBXAHYAMgBLADYAVAB2AGkATABtAEcAVwBsAEYARgBpADcAbAA5AHkAVAByAGQAcQBTADkAMgBPADUAKwBXAG0AYQB3AFoAaQBTAHoASwBaAEUAbQBLACsAYwBkAHMAWABqAHAANQBHAGsAOQBjAEwAcwA3AGkANABxAEsAVgAwADEAVQBDAGgAdQBDAEcAMgAyAGEAVgBRAEYAQQBsADkAWgBPAEYAMABLADkAOABwAHIAVgB3AFoASgBlAFkARgBGADEAeABnAHgAYgBIAHkAcABoAE0AYgBQAGoAZQBUAHAAVwBUAHkANAAzADUAaQBIAE0AMwAzAE4AWQBxAFEAcwB2AEIAYwArADgAWABlAGgAWABMAG8AQQBRAGsAegBuAHcAZwBxAEMAZwB4AHkAZABTAGkAcwBvAGYAZQA3ADQAcwBnAGUAbQBxAHMAYQBCAHgAdQA2AFoAcABHAFkANQBrAHcAeQA2ACsAQQBOAEQAaQBYAGIAdgA3AFQAVgBvAHQAbAArAGIAZgBIAEsAbABkAGQATgB5AGkASwB4AE0AUwBJAFEAWgBQADIAVgBQAHoATQArAHUAKwBBAGkAUgAwAG8AUwBPAHUAUgBqAHkAdAA1AEcAWQBaAGEARgB3ADMAegBoAEwAOQBkAGcAOQBUAGgAaABGAGcAVQBMADIAcgArADkAUABYAEgAMAB5AHEANQBCADkATQByAGUASwBIAHEAdgBQADAATgB2AEEAZwBTAFAAUQAvAFcANgBKADIAdwA0ADcAZQBTAFEAawBDADEATgB0AGEAaAAxAHUAZwBMAHAAdwAzAHoASAB4AEwAcgBuAGkAdQBDAFMATQBrAGIATQBIAFcAVAA2ADIANAA2AEcAWQBnAEYAdQBOAGcAaABoAGQAYwAxADYAYwBLAFkAdwBKAHgAMQB3AGUAbQBZADAAMABPAGoAdABrAEkAagBaADYAaABIAFgAbQBGAEEASwBkAHgANgBJAG8AagBmADMAUgBkAEcAZwB5AGsAZQA0AGIATgBRADkARwBCAFYASABSADgATwBYAGYAdgBUAEUARABIAFIAZwB1AEoAMwBFAHkARgBjAGwAbwArAFAAbgBWAHoAawBXAFoASABaAGwASgBvADEATgBpAHAATQA0AFIAcwB6AEUANABNAEIARwBnAHgASABYAFQAcABCAEUARQBWAFoAbAArAFgAUgBoAFQAagBaADQARQBlADYANgAwAFkAUAB0AGUAbQBFAFgAagBHAG4AWQBhAEEAYwBJAHkAUgBkAFoARABhADAAbwA1ADMAUwBxAHkAbQBiAEwASABqADIAagB6AFYAYwBNAGgARwBJADYAdABKAE8AcABOAFQAeABPAFUAbQBHAE0AagBqAHUAcwBEAHMAawAwAGwAWABCAGcAbwBpAHIASgAvAG8AaABqAGwASgBnAHgAWQByADcAVwBjAEkASwBoAEkAbQBsAEwAcQB0ADEAMABVAFQAbwBoAHMAagBOAHAANQBBAFIAaABUAFMAcgAvAHUAUAAzAEMAUgBRAEcAaQBYAFMAegBNAGcAdABFADEAQwAyADAANwBFAEUARwBiAGUAeABMAE8ASABnADgAQgAwADYAbgB2ADgAVAAyAEgAbgBMADQAcwBxAGkAdgBkAEkAbQB5ADQAZQB0ADAAVgAwAG8AZABGADUAMwA4AFAAbgBlAEYASAAwADIAcgBTAFIAcAA0AGcAZgBXAG8AbAA3AFEAUgArAFMAeABrAFIAVQBqAEwARwBpAE0AbgAzAE0AMABEAEoAWABPADkANAB0AEgAdwBHAEoAVgBzAFUANABEAGkAbQBaAEYASgB5AFgAagBxAC8AKwA5ADMANQBkAEMAWQBKADMAdwBwAE8AVAAxAEcAYwBDAHgAMAA2ACsAMQB1ADUAawBMADMASgBkAEMARgB0AFgAYQBwADUAeABMADkAbwAvAG8AWABmAFgAcgBrAHkAYQBtAEgAMABxAEEAaAAzAHEAdABmADkAMABKAC8AcwBpADQAOABVADEAbQBxAG8AWABvACsAWQBNADkAWQBIAG8ANABRAGQAKwBmAHoATgBwADUAZAA4AGIASABHAE0AbQBKAHcAbwA4AGIANwBGAG4ANQAzAHAATQBCAGYAVQB5AEYAcgByAFQAOQBxAHYAOQBBAHQAegBVAGoAaABtAHQAMwBVAHEAbABNAHAAegBoAFYAawBRAGgAbQA2AGgATABWAEMAMQBiAHUAdABQAE8AdAB2AG4AZQBBAGEARgB2ADcAYgBtAHEAZgB2AEIAbgBzAFAATwAvAHUAcgBRAFAAbwA4ACsAdwA3AC8AVwBPAFEARABWAGEAMwA4AEUAbgBKADcAQgBrAFcANABJAGcAVAA3ADMAcwBRAHMARABVAEwAMgBLAGcARABUADgAcwBsAG4AVABUAFkAOQBZAEkATQB5AFMATQBhADYAWQB1AHMAWABXAHcAMwBlAHkAbgBHAG8AMgB5ADUAQQBlAGgAOAArADAASABJAGMARwAvAGwAVwBZAGsAdwBGAHUAeAByAEcAYgBJAFAAMABLAHoAdQAyAE8AcwA5AE0AVgBSAFQAcwBHADEATwBFAFYAcABpAGsAaAA2ADEAZgB1AG0AZgArAEoANwA2AFQAdgB2AEcASgBKAGUAeQBQAFUAeABKAEUAWQBkAEUAUAA0AC8ATwBSAFEAQwBlAFoALwBaAHoAUQBmAFYATAAyAG0AUQBhAEQAOQBYAEkASQA3AFQAeABWAG0AeQBSAGgAWAB6AEgAVgBzADMAagA0AFEAMAAzAEMAYwBJAEIAZABpAEkAawBqAFYATgBtAC8AbwBhAEcARwBWAG4ATQAyADMAZgBuADQAWgA5AEcAOAAvAEsAcwB5ADgANABRAHUAcwA5AHYAYgBFADAATgBhACsANQBQAEIASwBPAFkANQBPAHEALwArAHcAZAAvADUAWgBOAHgAMgA4AGgAZQA2ADMAbgBzAFcAaABuAHAARAArADEAcgA1AEIARABRAFgAQgB5ACsAWAB3AGQAMQBGAEsAMABOAEYAegBKACsAagBpAFEAawBrAFAAVQBLAE8AbwBYAGEAZgB4AEcARgBmAE0AUwAyADkAYgAxAFQAZgBJAHEAdAA1AEwAagBRAFQAQgBIAHgAZgB0AEoAaQBPAFQATQB4AEwARQBCAHkAaABhAHAATgBnAE4ANABDAFYAbQBpADkAVwBFAGMAQwBFADcAKwArAEoAbwBTADIAOABDAEoAZABNAGMAUABZAFAANgBYAHQANAB6AC8AYQBSAEwAUQBNAGcAeABZADIAQgBjADMATAArAEYANgBpADUALwBLACsASwA3AHoAVQBMAHkATgBqADQAbAB4AE4AUABvAHMATABrAEIANQBKAGwAbwBQAGgAOQBpADYAcABPAE0ARQAwAHMAOQB1AEoATAB4ADQAZwBhAG0AcgB6AG4AWgB6AG8AMABUAEIATgBSAFEAZgBXAEYANwArADIAawB1AGwAeQBqAGsAegAwAFgAZQBkADQAKwBzAEkAZABwAFoAdwBzAHcAUAArAEUAcAA5AHcAUwBSADAAUAArAEsAagBPAHYAbwBHAFYAVABaAEYANQBiAG0AZgA2AFYAaQAxAEsAdQBNAFcAdQBrAHQAVwAvADIAbgBIAGwAeAA1ACsANQBiAHMAegBaADcAZABkADkAZgBFADUAQQBmAFQAUgArAFEAMQBvAHcAWQB6AHMAcwAyADAAZQBpAFIAMQB5AEkAdABwAGYASgA4AHkAUwBrAEYASABNAHUARQBXAGYANQA4ADkAdQBuAFMAQgBHAFMAZQBzAFgAMABhAHkAaQBEAHEAZQBOAFIAeQBOAE8AZgBnADIAYQBvAEkASgBtAFIAUwBKAFIARABiAG8AZgBjAFIAUgBLADgAbABxAFUAUwA0AG0AUgBoAGEAVwBlAGcAZQByAFcAegA2ADEANAA1AFAARQBCADUANgBRAHMARABLAEQAYQBqAFIAQQBQAG0AMAAvADkAOABsAFgAeQAyAGEARABVAGIAbQBpAFUAbwA2ADMAQwBMAEEAbQBaAHgAYwBUACsAZAA2AEEAbQBZAHMAeQBsAEUAKwBTAGgAVgBrADIAUQBsAG4AWgBMADMAQwB2AGYAKwAvAEwATQBCAHAAcQA4AFYASgBoADUAbwBhAGsAbQAyAGcANwB0AFoARQA4AHMAdABlAHUASwB3AHgAQgBSAFkANwA2AFcAaQA2ADkANwA0AEkAOAA3AFIAVgBCAFcAcQBwAFEANQBvAFEAUgBTAGQAagBpAGoAQgBTADQARwBWADgARABMAHgAUgBTAHgAawA0AFYAWgBFAGoASwBLAFMAUgBUAFAAWABnADMAUgBvAEwATwBrAGIAQwBnAEQAVAB3AEIAMwB6AFIAdAB4ADQAawB4AGgAbABvAFEANQBVAHYAZwAvAG8ATQArAFcAZAA2AG0AMAB3AEgAUABkAEIAVQBMAHkATABnAFgAWABnAE0ATwBmADQAcAA2AEcAMgA2AC8AOAArAFYALwAvAGsAZwBwAHgAeAAwAGUAaABUAFoAVwBaAHUAYwBWAFoATQBlAE8AeQBQAHoANgBEAHgARQA0AFIAVgBrAG4ASQBLAE8AYgByAFgAWgA2ADQAegBmAEMAQgBZAFMAYwBvAEcAMwBDAGwAZQByAGwAMABIAHQAdgA2ADEAYwB2AGwAZQBwAHIAOABvAGoAQgB6AGgAcwArAEEAOABCAHMALwA3AEkAUQB1AHkAQwBqAFAAVgBhAHAAKwA4AGsAQQBiADUAUQB1AHMAYwBxAFkAWAAxAHoAZwAzAFYAbgBMAFYARgBJAEcAWQBWAEUASQBsAEgAUwBuAEwASwBDAGEAZgBnACsAdABuADEAVABrADUAUQBZAHIARQBTAGoAWQBTAEoAQQBVAGoAUgAzAG0AeABzAFYAaQBZAE8AUgBPAEMANwBzAFEAMgA4AEYAeABqAGYARABaAEkAWQBCAEIAbABmACsAZgAwAEIAWgBkADEAZABMAHoAZwBaAHYAWgAyAEQASQBhAEcATgBrAEMAKwBnAEUANABjAEYARQA4AFgAZQBnAFoAawBiAGYAYgBxADkAbQA5AE8ARQAyAGIAUgB5AFMAZwBtAEIANgBxAFIAMQAzAGcAYwAzAFMANgBNADkAbABLAGoANgBWAGYAZgB1AGIAUQBrAEcAMQBlAGIAUwBlAHgAeQBxAE0AbABkAFoASwBtAHgAcQBOAEIATwA3AHUAaQBOAG8ALwA3AGsAeQBOAEMAYgBoAFkAZwBXAHEAegByAGsAdwBoAHYAdgAvAGsAMgBQAEMATQBxAFoANwBjAHEAcwBMAFYARABnAFQAYgBkACsAaABRAHkAKwAvAG0ATABTAFcAYgBMAFMATwBhAEcAWQAyADEASABUAEcAeABCAFoAUABuAHoAZwBTAGsAeABDAGMAZABXAHgAMwB0ADcANQB3AGkAdwBhAHoAOQB5ACsAUABOAEIASQBrAGgAYwBKAE0AeQBmADQAdgBPAFEAZQBFAEgASgAvAFIASABmADYAaABFAE0AawB2AFgAVQAvAHYATwByAG4AVAA3ADgAaQB6AEwAdwA0ADkAOQBiAFYAQgB5AEsAMgBwADQALwAzAFcAZAAwADQAUQBUAHkAMQBaADAAdgBoAHYARwB1AFgAYgBFAHcAbwA1AHQAKwBWAGUAZABzAE4AaABrADIAMwBrAGEAVQBVAEUAUwBiAEoAUgBXADgAMwAyACsAeQArADAAeQBSAGkANQA5AFYASAA2AHcAdQBwADYARAAyAG4AbgBSAFEAQgBnAEMAYgA1AFgAagB0AHcANgBNAHkAYgBoAFYAawBRAEoAcABHAGUAZAB6AEsANgBTAHkAZQBJAEUAbABTAHkAWQBiADAASgB4AGUAegBvADYARgBDAGoAeQBMAHYAQgA4AGQAagBjAE8ARQBFAFEAMgBTAFkAYQBPADAAbABZAFIAYQBPAEcAYQB1AGYAQQBwAGIATQBsADEAUgBqAGkAYwBRAFAAdAA1AFAAYwB4AEYAeQB2AGwATwBCAGEAbQBVAGQAWABiAGQARQBtAEgAaQA1AHMAawB1AFEARwBTADUAVABsAGUANAB0ADEAdQBWAFAAYgBMAFIAdQB0AHEAYwBPAGEARQBXAFYAUQBtAEYASgBOAEQAbQBQADIANgBVADgAZQA2AGQASQBMAEEAWQB6AHUAeQBtAE0ATgBXAHEAMQBlAHYAbAByADMAWQAvAEoAdwB3AFgAYwBNAEgAMABIAGYAMQB4AGwAQgBYAGIARwBSAG0AQQA1ADcAdABzAEQATAB0AHUAMQA5AC8AYQBPADEAbQBFAFYAUQB3AG4AVwBaAGcAawAzAE4AOQBuAHQAbQBIAFAAbQBnAEMAQwBFAFYAdABoAC8AYwBIAFMAegBJAFMAbABEAFgAUgBCADAAbgAxAHEAOAA3ACsAUgBqAGMAbABFAC8AQQBRAGEAOABFAEoAdwBkAGUASwBsAHYATgBPADYAbgAzACsAQgBEADgAMQBjAHYATQBBAEkAYQBvADkAdwBTAFIANgBQAHoAUgB5AHoAdwBDAE8AUgBuADAAdgA5AHIAVwBoAG4AdwBtAHoASwBFAGgAbQBZAHEAZgBCAHkATwBDAHcARQA1AFEAbAB3ADMAcwBsAFMAOQBLAHMAbQBwAEkANABRAFYAbgBGAFoATABhAHgARwBYAHcASQAyADgAbAA1AEwAbQBvAFMAcgAyAHoATAB0AEcARgBHADAAUwBKAGIATAA4AGQAeQA3AGwAdgBHADQAagBwADYAcgB5ACsAQgA0AG0AbgBkAEUAQgBQAFQAVwBOAGcAMwA2ADIAdgA1AGQAawBNAHkAOABXAFoAcwBSAGgAZwArAHAAWAB0ADQASgBDAGcATABmAEsAMwB4AGYATgB4AGIAawBuAFkAegBxADUAZwA3ADcATABsADcARwBNAGIAaAA0AGUAbQB3AGIARgBVAHQAUgBIAGEAcAB2AEsAOABvADcAZQBZAFQANwBjAHQAOQBqAFQAVAA1AEMAVwBHADYAZwBvAC8AeQA3AE8ANgBMAG8ANQA3ADQAeQBIAEEAZABZAEMAZQBVAGgAaAB1AHUAZgBmAEMASgBiAGMASQB1AEcAcgB3AC8ASABrAGIAZQBWAHgAMQBQAG0AYgBlAGIAMgBkAEkASABqAG4AdgBsADAAdgBUAEgAcwA0AHAANQB6AHUAMwAzAEQAbQBwAE0ANgB1AEUAagBLAEUANgA3AG0AUQAyAEkAcgBDAEgASgB4AHcAdQByAEkAQgBZAHEAQQAvAE0AbABiAE0AMABSAFoAbgBZAGcAZQB0ADEAUQB2AGUANABKADYAYQBPAHIAVgAxAEwAMQBpAGwAYQAvADUASAA1AGgARgBoADAAWgBtAFMAKwBsAG4AQwBBAFgANgBRAFAAVQBTAHUAcgBoAFAAMQA2AHgAbwB1AGgAYgBLAE4AdwA0AEsAaQB5AEcAbABhAGUAZABiAE8ANwBTAEMAUQBwAEkANgBtAEoAdwBnAGcAcQBlAEQAdgBNAFQALwBTAFMASwBYAGMAWABSAEkAWgBFADAAMABLADUAKwBYAHIAMgBPAEsARwBrAGoARQB1AC8AeABMADEAeABlADcARgAzAEsANgBXAHgAbgBoADcAegBwAHkATQBqAFQAeAA0AFcAZQBzAG8AUQBDAGgAdwBjAEcAaQAzADUANwBOADEAYwBKAHgAUgBoAHgAYgBzAGoAbgBkAGkAUQBJAFUAegB6AHQAVwBIADEAYgB3AFEAdQBqAEoAYwBJAHUARQBDACsAegB3AHYAdgBDACsAMABEAEkAMwB0AEgAVgBLADAAbwBxAGQAVAArADUANABZAEgAZgBiAGgARgBtAFMAWABoAEcAWAByAEEANQBhAFYARQByAGgAKwBXAHAAbgBrAE8AOQA0AGYASwBJACsAYQA3AFYAcwBvADQAbgBrAEIATgBaAEYAMgBKADYASgBGAGIAYgBWAG0AMABXAHQASQByADcANABSAHUAdQBhAHEAdwBuAHkAVwBYAEMAegBFAHIAUQBXAFcARABGADcAMgBjAHUAQQBnAEMARABlAEgAWQBsAEcAcABiAGUASwBzAHkAUwBBAGYAMQB4AFAAWQBrADkANgAxAE8ARABLADkAawBUAGkATwA5AFoAdABSAEEAdAArAGcAeQBUAEsAegBFAFAAYgBUAG0AdwBMADIAbABMAFkAUwBlAGkATABuAEkAZQBqAHkAeABtAGQAawBFAEwAbwAwAC8AeAA3AHoAOQBPAHgAcgBhAHIAZABzAFUAdwBMAEgAQgA2AEUAcwA3AHEAOAB5AEgAQQBhAGQATgBqADEAYwAyAFgAUQBmAFgAcQA2AHMAYQA3AGgAYwBKAHMALwBKAEwAcgBwAGcAaQBPAE4AOAB0AFIAUABxAHoAbgBvAHQARgB5AGoAeQBzAHgASAB3ADIAZQBZAE4AaQBZAHYATwBNADQAUQBXADcANgBtADAANQBrADQAdwBWAE4AeABIAHAAbAA2AHcAeQAzADYAMwB4ADYAUQB5AHIAcQBqAEkANwBjAEcAWgBLAGoAMABlAG8AbgBlAG0AZQBmAFcAUABJADkAawBVAE8ARQBxAFAASgBtAEwAawA0AFEAbwBXAFQASgBjACsAMwB0AFIAVgAxAEwANgAwAHAATQB2AHAAQQBwAHkAZQBSAE4AcgBuAE0AZQBBAFAAMgBwAFkALwBsAFQAeQBzAG8ATgB2AHMAQwA1AEQAdQB1AG4AQwBYAE4AQwBOAE0AMQBDAGUAOABDAEQAVABhAFkAbABJAHYAOQBGAG4AdAA2AGEAdwA2AC8AagA4AFIAWgBCAEoAYQBmAEsAMQB0ADYAeQBFAEQAYQBjAFkAVAAwAFgAZQBsAGIATABSAGwAMABYADYAagAxAEMAbQBFAFgAQgBsAFoAZwBjAEEAOQBHAFgAZQBCAHcAWgA5AC8AbABkAFIARABhAGcAYQBEAFAAdgB1AGYARwBiAHMANABTAFoARQAwAHQAMwBJAFQAOABsADEAbABIAEMAegBBAHoARQBvAHcAdQBFAFQASABkADYANABKAG4ARgA1AFkAYgB2ADMAYgBEAG0AawBiADAAaQBhAEYASgA0ADIAbQA3AHQAZwBwAEkAWgBIADIANgBLAHMAcwBEAFgAMABoADYARABPADQAdQA2AG8AdABHADEAbQBGAEYAYwB0AGQAWABtAEkAMABGADgAMgA2AGcATABNAFMAbABFAGQAcABtADAAOQB4AGgAaAA1AGsAUwBTAHMAYQBXAEsAaQB4AHYAZgBKADEAUQBUADcAUQBzAGwAUgAyADMAdwBNAFkAbQB5AE4AZABJADgAOQAxADUAaABUAGgAcABYADMATABFAG0ASABFAFAASwA5AHUARgBKAGkAVwB4ADEARQBxAFIAOAB0AFcASwA2AGQAdgBEAGMANABGAHIATQBOADUATwB0ADIAeQBHAEsATwByACsALwBqAFIAcwBuAGkARgArADUAeQBaAHYAZgBuAHMAawBtAGsAcwBpADYAbABKAEsAMwBUADUAMABEAEMAZABRAHYANwBtAHYATwBzAFIARQAyAFkAOQA2AFcAYQA2ACsALwA4ADUAZAB4AEUAVABTAHAARwBDAHkAMQBvAHQARgB0AFUAMQBRAHIAYQAwAHUASwBPAFMAbgBoACsAawBKAGYAdgB2AFAATwBlAEIAagA1AFIAaABZAHcAWgBRAE8AKwBUAEIAVwAxAGwAZwByAEwATgBmAHoATABlAFkAbAA1AHQAagBBAHoAdwBsAGMAUABkAEkAYQAxADkARQAwACsAegBvACsANQA5AE0AeABkADkAbwB3AHcASgA1ADIANABMAGIAKwBjAGMAbwBKADQASQBtAFYASABwAG4AagAyAEUAVQBWAGMAUwA1AHQAVAByAGkARABJAFMAbgBtAEgAYgBxAG8AUgBRAEsASABtAG8AdAArADEAdAArAGQAMABQADUANAB6ADUASgAzAE4AVgBkAGoASQB1AHIANgAwAFoAMQBCAEYAQQA2AE8AVwBnAFcAQQA5ADYAagAxAGsAegBKAGEAQwB5AGEAVABIAFUANwBNAGUAUABqAHkAMQBQAE4AVgBGAGYAcABlAHAAMQBiAEMASQBoAHEAYwBMAHMAMgBCAHkARQByAE0AZgArADkALwBnAHoAMgA0ADkATgBwAG4AWQBNADEAdQAwAEgAVABsAHQAdQBaAHQARgBrADAAZABDAGMAegB2AGgAWQBtAHAATgB0ADkAQgArAEUARABOADkAbABWADMAUwBVADMALwBmADEAUQAvADkANgBSADEAaABsAGcAVQBEAGUAWQBJAHEAawB2AGEANwA3AFkALwB6AHQAYgBRAHEAbABzADgAUQBaAHMASABrAEoASwBaAGkANgB1AHMAdABoAHAAbgA3AGsAUwBEAGIAbwAxAFUAcABPAGIAVwBiAEMAagBhAFAAZwB6AFMAWQBNAEIAbAA2AEkATQBtAEMAaQBSAEUAUAAxAHMAUgB5AHQAMQBIAGQALwBOAC8AQwBMAEIAdQBuADMALwB4AHoAegBiAFIASgB5AGcAbAB5ADAAMgA3AEMAOABVAE8AbABnAGEASgBOAEYAKwBZAGsANQBsADUAUABVAHkAOQAwAFUAZgBxAGQAWABPAGMAaQA1AC8ARwA1AHUANABXAGsAegAxAFYALwBjAFkAaABhAHEAawA3AG8ANABmAEgAUgBuAGcATwBEADAASwA5AE0AOAAyAEMAVABTAG0ARABsAGwAVAAvADcAUQA2ADgAdwB5AHcAYgBHAG0ASQBWAFkAZABlAHAAbgBnADEAMwA2AEYAZABCAEgANABZAE0AcgAyAFcAUgAzAFIAVQA1AGkAUQBzADQATAB3ADYAYwBlAHkARwBVAGsAUwBGAEYAcwAxADAANABRAG4AMgBtAFIARwBKAHQAdwAxAFgAYwB3AG8AcQBPAEIAdABGAEoAcABFAE0ALwBlADYATABUAGoASgA3ADAAcgBrAGcAbQBaAEcAUwAvAGEAZgBGAHUASAB5ADYAYQBvAFYAbABaAGIAZgA5AEQAKwB6AGEATABjAHIAUwBVAG4ATQBYAG4ATwA2ADAAZgBWAEwAegB1AFIAZABPAGwAKwBWADEATgBqAE0AZgArAHAARABXAEYATwB5AEsAbAAwADkAMgBFACsAYQBqAFkASQBjAHcAdwAyAHAATgBJAEIANgBGAGMAbQBSAEUAYQBDAFAARwBWAHIAMwBzAEIAMwByAHIAdgByAHIAcQBRAFQATQBBAFYANABtADgANwBhAEEAZgBGAEsAYgBWAFIAMgBJAGEAWQBrAEkAWABJAGEAeQBhADgALwBmAGoAQQA1AGkAYwBuAHgASQAvADAAbAAvAHUAdwAyADUAMABHADcARwBaAGoAVABvAHIAbQA2AHQAYwB3AHgAbgB0ADQASgBiADcARQBTAGkAZgBGADcAQwBJAHoAcwBFAHoARwBvAGQAMwBPAGkAWgB2AEgALwBwAEsAeQBwAHcAYQBkAHYAdQBmADkAOQBjAEkASgA2AGIAWgBkAE8ARQBLAEUAWQBCADYAaABlAGwARgAzAG4ATwBZAHYANQBLAHAAMgA3AGcAZABlAHkAYgBuAE0AZQBwAGEAaQBxAFQAUQBxADcAdQBwACsAZABoAHEAUwBNADAAMABMAE8AWABwAEcAUQBpAG0ASgBEAFAAeQBIAEIAcwBCADMAMQBOAHQANQBVAHkAawBuAG4AZgBBAEQAdABXAEEAeAA1ADEAcQBWAHEATAA0AGgAcgB0AHQAbwBMAGoAbwBPAFkAUgBiAGwAUABVAE0ANQBpAG4AdAAxAHgALwB3ADYATgBTAFoASABVAHMAQgBVADgAcwB1AFUAOAA0AHYAegBBAFQAOQBZAHgAUwBOADQAZgByAFMATgBxAHgAdgBOAFUAegBVAEkAOQBVAFgAMQA0AHYAdABLAGsAMwB2AFUAYgBsAGIAYQBuAFUAdABiAFUAZwBqAEkAcgBwADIAVQBrAEgAdABrACsAMABtADEAVABOAEIARQA1AGkAdwBtAHcARwBGAE4AUwBFADcARQB1AG4AYQBBAG0ARwBzADgANgBCAGoAbABmAGUAVABlAEEARQBUAHQARQBtAEcAUABvAGcAVgBJAFoAQgBrAEcASABTAEgAbwBhAHYAcgA5AG0AawBtADQAdwBtAEMAcwA5AEwAUABDAG0AOAA4AEoATgArAGcAQQBLAHMAVgB0AFAAYgBlAHYAMgBDAGoATgB2ADgAaABHAFQALwAyAHEAZgBzADUAWABOAFYAVABVAEMAVQBJAGsAYwBuAG0AMABNAFUAcwBMAHkAZgBQAGgAUwB0AGMASQBjAGgAUQBHAGYAMAB4AGwAVwBrAFMANABTAFIANgBXACsAdAAvADYAYQBhAEgAagBjAE0AYQBZAGcAQQBSAHoAYgBhAGYASgBiAHYAZgBMADQAaQBwAHAAawBJAHIAeQBTAEoAZQArAE0ATgBSAFgAYwBiAHUAWQBsAFoAagAvAHoAdgA4AFcAVAAxAGUAMgB3AFYAUgBVADEANQByAFMAaABuAGcAawBYAE0AawArAFgAbwBzAGQAbQB5AGgAZQBEADQAUABnAEUAawA2AGEAVABMAG4AdwB3AFAAZQBwAHAALwB0AFoAagBKAGIAcgBQAGUAVABGADQAWABWADQAMgBBAE0AbgBTADcAWABwAGwAQgBzAFgAbwBPAE0AKwArADgAbwBpAHAAeQBQAGcAZgBOAHMATwA2AFcAeQBlAEkARAAxAHUAMQBvAGYAQwBFAGsAWgBXAFIATgBlADUAYQBXADkANwAyADgATwA3AEkAMABPAFMAegBRAGIAeQB2AGUANQBUAFoAZgAzAGUATQBLAFEAcgAvADAAWgA4AG8AOAAyAHgAeQBIAEUAVwBYAEkAMABGAE0AbABnAHEAZQAyADgAeABMAHoATwBjAFMAQwAvAGgARQBiAEMAegBWAGIAawBKAEEAdABzAGoAQwBwADgAegB6AEQARwBZAGMAdABvAEoAcgBZAFEAWABaADQANgA3AHkAagBpAGMATQAxAEIAZABMAC8AYwBBAEwAWgBDAEEAVwA5ADAANgA3AGYAYgBKAHUAeABsAHMASQB1AHEAVwBJAEgALwAxAHgAVQBjADgAQwBkAFYAVABsADkAKwAwAHQAYQBIAGwAcQBYAG0ASgBlAHQAbgBKAGwAZABCAEIANwB0AHoAbwA1AEwAMwAyADEAYwBTAFoAQQBiAEUAbABpAEcAVQBlAEMALwB2AGUAVwB5AHcAKwBwAHAAdgByAFkAMgBRAE8ANABmAHQAZQBnAGkAcQBKAGkAUAA1ADUASgBxAHoAWgBNAGoAOQBkAE4AUwBRAC8AMgBZAEgAYgBqAE8AbQBkAE4AawBGAE0AeQArAFgATQBXAHEASQBRAEMALwA0AFoAMgB1AEYALwB3AFAAUQA1ADUAaQBjAGsAeABMAGYATAAzAFYARgA4AEsASAB0AGwASwBKAGwAQQBqAEcAUQBzAGYAYQBtADgAZgAxADIATQA3AEQAdgBmAE8AaAAyAHUATgBjAGMAMwA1AGoAOQA5ADAAaAB6AFgARQBmAHcATQBIAEUAcwBaAFcAUABiAFcAMwBsAGUAbwAzAFEAWQByAE4AVwA3AEgARwA5AFQAbwBqAG0AbABzAG4AUwBLAGEAcwBxAGsAWgBXAEMAeABvAEoAeQBsAHYATQBBAGUAeAAzADUAagBiAGQAcgBnAG0AUwBKAFQAVAB6AHQATwBwAE4ANAAyACsAWQBvAFcAagBwAGUARgB2AGMAQgA2AEIAZgBHAFEATABIAHgAOABrAHoAMQBMAE8ANQBzAC8AVwAwAC8AMABzAGQAbQBaAHIAdwA1AG8ASQBoAGEAQQB2AGcAYwBmAFcAcQB1AC8AVQB3AHEAOQByAEsAZgBBAHEANABxAHoAUgByAFMAdgBQAGwAcQBUAFgAWQBMAEcAaABiAGgANABzAHkATgBUADQAdgAzAEgAagBoADcARwBYAG8AdwBCADUASgB3AFoAaABNAGcAMABMAGwANABrAG8AbQBrAHUASgBSAFgAUABYAEgATwBGAFAANgBNAEMATQBLAHYANQBVAFMALwA1AEkAKwB5AC8AaABYAFAAOQBGAEgATAArAEEAQwBCAFkATQB4AEUAMABVADAATABpAFoARAB4AE8AUABiAFcARgB1AGIAdQB0AHYAbQBFAE4AQgBrAFkAMABvAHcAdgA0ADQASQBHAFEAOQBNAEoASQB3AGgAZwBoAG0ASwBSAHkAbwBqAFUAaABuAGIAbwA5AHEAcgA0AGIATgBGAFIAZwBXAEgAVQA1AGEASQBSAFoAeABmAHgAaAAzAG4AVwBsAHgASQBUAE4AagBvAHAAWgBPADYAZgBiAGoAcwBRAFUAMgBZAE8AeABhADgANwBjAHkAUwA2AGYAcwBpAHkAcwB0AE4ATgA2AHoATgBlADQAbABxADMAbQBKAHUALwAvAEUASwBUADEAUABmAHUAOQB0AHEAcQBEADYAWABOAEUATAB1ADQANQBWAGsAbABzAGgAVwBtAEoAaABJAFEAZwByAFYAUgBrACsAYwBoAHYATgBjAEwAWgBGADMATgBmAHQAbwBzAE0ARwBRAGIASgB2AFAARQBFAEMAUgBxADYAaABZAEQAUAB5AHkAVQBmADgAZwBpAGkAMABTAFoAcwA3AGsATABTAFoAZgBhADkATwBEAHEAbAA1ADEAUwBxAFAATABrAGEAQQBLAEUAOABQAFgAMABwADQAawA3AGMAeQA3AHYANQBtADMAbQBCAHcAZgBNAGwALwBuAEoAZABQAHQANwByAEEASwBXAFkAQQBDADQAYQBQADUATwAwAEUARgBpAGYAbQBPAFAAVwBjAEwAbABFAG4AWABkADQAeQB1AGsAQQBVAFEAcwAwAGIAUwA4ACsANgBlAEYAQwBUAG0ATwBzACsAcwA5AHkAMgBHAFUAeQBOAEIATABzAFkAZwBLADIAVABIAEkANwBFADUAagAxADkALwBTAFkAMAB3AGMANgBJAGcATQBhAEgAZABOAEkAUABJADUAMQBTADEARgBTAGUAbwBPAEUAagBFAGIAbQA3AHcAYQBiAE8ARgBtAFIATQBGAGkAYwBuAHgATQB1AE4AbAAvAHMAegA0AEMAZwBDACsAZABhAEYAQwAvAGsAQgA1AGsASgBDAE4AdgBWAGoATABhAC8AbABsAHcAUgBYAGoAaAB1ACsAZQA5ADgAbQBqAGEAYwA5AFQATwByAE8AUgA0AG8AUAA0AEUATwBqAEMAZwA2AGEAagB5AHUAbQBZAFEAcABzAEsARwBBADQAZQBjAHoAeQBGAHEAKwBOAGoAagB2AEUAaABoAG8ATQA0AEsARwBDAFUAbQBmAEgAWQBSAEcAOABhAFkAegBxAHoATwArAE0AegArAHMARABCADUAeAAzADgATgBwADUAMgBHAHgATwBOAC8AMwBuAG0AWABVACsAdABGAEUARwB1AEsAVgBqAE0AMwBkADgAKwBxAHoAWABBAG8AdAB1ADIAQgBPAE8ASwBZAFoAdABJAE4AYQBIAEcASABWAHAAeABCAFkAegA1AGoAaABOACsAbQBaAFMAVgA2AFQAMQBqAHcAaQBkAGcAbwBuAE8AZABZAHkATgAvAE0AagBMAG0ANgBBAFMAbgBUADMAUQBsAGwAaQBtAFoAeAA4AGsAQgBKAHYASABzAEQAdwBVAE8AWABaAHIAUABPAHUAQwBDAHgAWAB5AG8ALwBXAEwAdgAvAEsANgB0AGIAdwBSAGoAawBhAFAAaQAwAE4AKwAwAGgAMwA4AGwAcQBlAEIATABmACsAaQB3AEUATgBVAGoATgBiAFAAUABXAC8ASABRAG4ANQA4AFUAUQBUAGwAUgBsAEIAUwAvADkANABvAEwAVwA2AHUAagBPADIANAAxAEUAVwBsAE0AdgB5AFIAbQBiAE4AVABOAEIAdABQAHoASQBTAFoARQBiAHYAVgBiAFoALwBHAHoAKwBjAHEANwBZAE0AeAB3ADEAcwBPAGEAVwBOAG8ASgB2AGUAZQBOAEUARwBwAGoAQgBrAFUAOQBqAFoARQBXAG0AYwBDAC8AaQBZADQANwBzAFcARABZAHQAcwBTADgASgAwAEgAbQBRAFYAKwBWAHIAdwBFAG0AbABtAG0AawB2AEEAWQBpAFIAbgBmAFQANABvADYASgB5AFcAOAB5AE4AKwBSAFcAcABEADQAbwB6AGMAVQBnADIAQwBMAEUAbQBUAE4AeQBzAE4ATwBQAEEAWgBDAHAAZQBWAEQAYQB2AEMAdAB4AHoAawBrADcAeQA0AEsAUABnACsATwBwAEUASgB0AGcAbQB5AG4AKwA1ADYANgA4AC8AMAA4AGIAdwBKAHkAbwBvAEcAZABrADkARABlAGMAUgBGADcANwAzAGgAZQBXAEgARgAvAFYAdABRAEUAaQBnAE8ATgBKAEUANgAzAGIARQBVAFIAOQBDAFkAdgBGAGEAMgBlAGYAYwB2AGsARAB6AHoAaABPAFYAWQBYAGMARwBKADIAZABKAHAARQA1AFMAdQB3AGsATABpAFIALwAzAFMAcwBtAG8AQQAyAHAAKwBsAGsAUQBzAHEAQQBiACsAbgA2AFkASwBaAHUAWQBsAEsAVgArAFUANQBMAGYAUwByAFEAVAB4AEYAUQB0AFoATQBVADkARABmAHkAZQBQAFgAbABWAE0AUgBYAEsASgBDAGEALwBiADUAeQBmAHEARQA1AGYAYQBpAEMAUwBtAG8AQQBHAEwAKwA0AGQAcQBzAHkAYgAwAGcAdQAxAHAAagBwAGwARQBmAFAATQBsAG4AMQArAGMARwBCAGEAKwBFAGEAZwBmAFEATgBKAGwARABBAFkAMABuADMATgBQAC8AeABuAFcASwBnADEAbABTAG0ATABtAEQASwBTADYAdgBtAEMANQB4AGkAVQB5AEwANgBZAGoAbgBTAGkAdgBCAGUAdgBKAHIAOABYAGgAeQB2AGsAUwBWAG4ARQBEAEQAUABhAHcAagAyAGYAQQAxAEEAcQBZADkAQQAzAFYAZQBYAEEAdwA5AGUAcwBXAGoAdQBsAE4AZwBEADkATQAxAEkAVwBNAGUAdQBKAE8AWABmAG8AdgBnAFEAcQBrAHMATwBEADEAWABOAFgAaQAwAE0AVgBDAHEAQQBzAFkAZwBaAHcAcwBxADAAcgBtAE4AbwBJAHAASAByAHEANwA3AHIAKwBaADcAOABzACsAeABiADIARAB3AEoAbABFAFQATwB1AHMANwBiADMAbwBZAHAAVgBtAGQAegBKAHYATQAwAC8ARQBzAEUAVgBDAHEAUQBzAFkAbgBZAEYAWQB6AEYAKwB0ADUAQwA0AFgASAAvAEgARgBXAHMAZQBDADQAdgBnAEMAZwBWAFMARgBqAEgAMwBSADYAMABYAFEAagBSAHcAegB4AFcAUAB2AEwAQgBLAEIARgBXAG8AVQBHAEUARQBoAFAANABmAG8AbABUAHcAdQBLAGoAZgBoADAAcwBBAEEAQQBBAEEAUwBVAFYATwBSAEsANQBDAFkASQBJAD0AJwA7ACAAIAAkAGkAbQBnACAAPQAgAFsAUwB5AHMAdABlAG0ALgBEAHIAYQB3AGkAbgBnAC4AQgBpAHQATQBhAHAAXQA6ADoARgByAG8AbQBTAHQAcgBlAGEAbQAoACgATgBlAHcALQBPAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ASQBPAC4ATQBlAG0AbwByAHkAUwB0AHIAZQBhAG0AIAAoAEAAKAAsACAAWwBDAG8AbgB2AGUAcgB0AF0AOgA6AEYAcgBvAG0AQgBhAHMAZQA2ADQAUwB0AHIAaQBuAGcAKAAkAGkAbQBnAFMAdAByACkAKQApACkAKQA7ACAAWwBJAG4AdABdACQAdwBMAG8AYwAgAD0AIAAoACgAWwBXAGkAbgBkAG8AdwBzAC4ARgBvAHIAbQBzAC4AUwBjAHIAZQBlAG4AXQA6ADoAUAByAGkAbQBhAHIAeQBTAGMAcgBlAGUAbgApAC4AQgBvAHUAbgBkAHMALgBXAGkAZAB0AGgAIAAtACAAJABpAG0AZwAuAFcAaQBkAHQAaAApACAALQAgADEANQA7ACAAWwBJAG4AdABdACQAaABMAG8AYwAgAD0AIAAxADUAOwAgACAAJABlAG4AYwBUAHkAcABlACAAPQAgACcAZABRAEIAegBBAEcAawBBAGIAZwBCAG4AQQBDAEEAQQBVAHcAQgA1AEEASABNAEEAZABBAEIAbABBAEcAMABBAE8AdwBBAGcAQQBBAG8AQQBkAFEAQgB6AEEARwBrAEEAYgBnAEIAbgBBAEMAQQBBAFUAdwBCADUAQQBIAE0AQQBkAEEAQgBsAEEARwAwAEEATABnAEIAWABBAEcAawBBAGIAZwBCAGsAQQBHADgAQQBkAHcAQgB6AEEAQwA0AEEAUgBnAEIAdgBBAEgASQBBAGIAUQBCAHoAQQBEAHMAQQBJAEEAQQBLAEEAQQBvAEEAYwBBAEIAMQBBAEcASQBBAGIAQQBCAHAAQQBHAE0AQQBJAEEAQgBqAEEARwB3AEEAWQBRAEIAegBBAEgATQBBAEkAQQBCAFUAQQBIAEkAQQBZAFEAQgB1AEEASABNAEEAUgBnAEIAdgBBAEgASQBBAGIAUQBBAGcAQQBEAG8AQQBJAEEAQgBHAEEARwA4AEEAYwBnAEIAdABBAEMAQQBBAGUAdwBBAGcAQQBBAG8AQQBJAEEAQQBnAEEASABBAEEAYwBnAEIAdgBBAEgAUQBBAFoAUQBCAGoAQQBIAFEAQQBaAFEAQgBrAEEAQwBBAEEAYgB3AEIAMgBBAEcAVQBBAGMAZwBCAHkAQQBHAGsAQQBaAEEAQgBsAEEAQwBBAEEAUQB3AEIAeQBBAEcAVQBBAFkAUQBCADAAQQBHAFUAQQBVAEEAQgBoAEEASABJAEEAWQBRAEIAdABBAEgATQBBAEkAQQBCAEQAQQBIAEkAQQBaAFEAQgBoAEEASABRAEEAWgBRAEIAUQBBAEcARQBBAGMAZwBCAGgAQQBHADAAQQBjAHcAQQBnAEEASABzAEEASQBBAEEASwBBAEMAQQBBAEkAQQBBAGcAQQBDAEEAQQBaAHcAQgBsAEEASABRAEEASQBBAEIANwBBAEMAQQBBAEMAZwBBAGcAQQBDAEEAQQBJAEEAQQBnAEEAQwBBAEEASQBBAEIARABBAEgASQBBAFoAUQBCAGgAQQBIAFEAQQBaAFEAQgBRAEEARwBFAEEAYwBnAEIAaABBAEcAMABBAGMAdwBBAGcAQQBHAE0AQQBjAEEAQQBnAEEARAAwAEEASQBBAEIAaQBBAEcARQBBAGMAdwBCAGwAQQBDADQAQQBRAHcAQgB5AEEARwBVAEEAWQBRAEIAMABBAEcAVQBBAFUAQQBCAGgAQQBIAEkAQQBZAFEAQgB0AEEASABNAEEATwB3AEEAZwBBAEEAbwBBAEkAQQBBAGcAQQBDAEEAQQBJAEEAQQBnAEEAQwBBAEEAWQB3AEIAdwBBAEMANABBAFIAUQBCADQAQQBGAE0AQQBkAEEAQgA1AEEARwB3AEEAWgBRAEEAZwBBAEgAdwBBAFAAUQBBAGcAQQBEAEEAQQBlAEEAQQB5AEEARABBAEEATwB3AEEAZwBBAEEAbwBBAEkAQQBBAGcAQQBDAEEAQQBJAEEAQQBnAEEAQwBBAEEAYwBnAEIAbABBAEgAUQBBAGQAUQBCAHkAQQBHADQAQQBJAEEAQgBqAEEASABBAEEATwB3AEEAZwBBAEEAbwBBAEkAQQBBAGcAQQBDAEEAQQBJAEEAQgA5AEEAQwBBAEEAQwBnAEEAZwBBAEMAQQBBAGYAUQBBAGcAQQBBAG8AQQBmAFEAQQA9ACcAOwAgACQAdAB5AHAAZQAgAD0AIABbAFQAZQB4AHQALgBFAG4AYwBvAGQAaQBuAGcAXQA6ADoAVQBuAGkAYwBvAGQAZQAuAEcAZQB0AFMAdAByAGkAbgBnACgAWwBDAG8AbgB2AGUAcgB0AF0AOgA6AEYAcgBvAG0AQgBhAHMAZQA2ADQAUwB0AHIAaQBuAGcAKAAkAGUAbgBjAFQAeQBwAGUAKQApADsAIABBAGQAZAAtAFQAeQBwAGUAIAAtAFQAeQBwAGUARABlAGYAaQBuAGkAdABpAG8AbgAgACQAdAB5AHAAZQAgAC0AUgBlAGYAZQByAGUAbgBjAGUAZABBAHMAcwBlAG0AYgBsAGkAZQBzACAAUwB5AHMAdABlAG0ALgBXAGkAbgBkAG8AdwBzAC4ARgBvAHIAbQBzADsAIAAgACQAZgBvAHIAbQAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAVAByAGEAbgBzAEYAbwByAG0AOwAgACQAZgBvAHIAbQAuAEEAdQB0AG8AVgBhAGwAaQBkAGEAdABlACAAPQAgADAAOwAgACQAZgBvAHIAbQAuAEMAYQB1AHMAZQBzAFYAYQBsAGkAZABhAHQAaQBvAG4AIAA9ACAAJABGAGEAbABzAGUAOwAgACQAZgBvAHIAbQAuAEYAbwByAG0AQgBvAHIAZABlAHIAUwB0AHkAbABlACAAPQAgACIATgBvAG4AZQAiADsAIAAkAGYAbwByAG0ALgBTAHQAYQByAHQAUABvAHMAaQB0AGkAbwBuACAAPQAgACIATQBhAG4AdQBhAGwAIgA7ACAAJABmAG8AcgBtAC4AQQB1AHQAbwBTAGMAYQBsAGUATQBvAGQAZQAgAD0AIAAiAE4AbwBuAGUAIgA7ACAAJABmAG8AcgBtAC4AQgBhAGMAawBHAHIAbwB1AG4AZABJAG0AYQBnAGUAIAA9ACAAJABpAG0AZwA7ACAAJABmAG8AcgBtAC4AQgBhAGMAawBHAHIAbwB1AG4AZABJAG0AYQBnAGUATABhAHkAbwB1AHQAIAA9ACAAIgBOAG8AbgBlACIAOwAgACQAZgBvAHIAbQAuAEMAbwBuAHQAcgBvAGwAQgBvAHgAIAA9ACAAJABGAGEAbABzAGUAOwAgACQAZgBvAHIAbQAuAEEAbgBjAGgAbwByACAAPQAgACIATgBvAG4AZQAiADsAIAAkAGYAbwByAG0ALgBTAGkAegBlACAAPQAgAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAEQAcgBhAHcAaQBuAGcALgBTAGkAegBlACgAJABpAG0AZwAuAFcAaQBkAHQAaAAsACAAJABpAG0AZwAuAEgAZQBpAGcAaAB0ACkAOwAgACQAZgBvAHIAbQAuAEwAbwBjAGEAdABpAG8AbgAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBEAHIAYQB3AGkAbgBnAC4AUwBpAHoAZQAoACQAdwBMAG8AYwAsACAAJABoAEwAbwBjACkAOwAgACQAZgBvAHIAbQAuAFQAbwBwAG0AbwBzAHQAIAA9ACAAJAB0AHIAdQBlADsAIAAkAGYAbwByAG0ALgBBAGwAbABvAHcAVAByAGEAbgBzAHAAYQByAGUAbgBjAHkAIAA9ACAAJABUAHIAdQBlADsAIAAkAGYAbwByAG0ALgBPAHAAYQBjAGkAdAB5ACAAPQAgAC4ANQAwADsAIAAkAGYAbwByAG0ALgBTAGgAbwB3AEkAbgBUAGEAcwBrAGIAYQByACAAPQAgACQARgBhAGwAcwBlADsAIAAkAGYAbwByAG0ALgBCAGEAYwBrAEMAbwBsAG8AcgAgAD0AIAAiAEQAYQByAGsARwByAGEAeQAiADsAIAAkAGYAbwByAG0ALgBUAHIAYQBuAHMAcABhAHIAZQBuAGMAeQBLAGUAeQAgAD0AIAAiAEQAYQByAGsARwByAGEAeQAiADsAIAAkAGYAbwByAG0ALgBTAHUAcwBwAGUAbgBkAEwAYQB5AG8AdQB0ACgAKQA7ACAAJABmAG8AcgBtAC4AUwBoAG8AdwAoACkAOwAgACAAUwB0AGEAcgB0AC0AUwBsAGUAZQBwACAALQBTAGUAYwBvAG4AZABzACAAMQAwADsAIABEAG8AIAB7ACAAUwB0AGEAcgB0AC0AUwBsAGUAZQBwACAALQBTAGUAYwBvAG4AZABzACAAMQAwACAAfQAgAFUAbgB0AGkAbAAgACgAIQAoAEcAZQB0AC0AUAByAG8AYwBlAHMAcwAgAFIAZABwAFMAYQAgADIAPgAkAE4AdQBsAGwAKQApADsAIAAgAFQAcgB5ACAAewAgACQAZgBvAHIAbQAuAEMAbABvAHMAZQAoACkAIAB9ACAAQwBhAHQAYwBoACAAewAgACQAZgBvAHIAbQAuAEMAbABvAHMAZQAoACkAIAB9ACAARgBpAG4AYQBsAGwAeQAgAHsAIABFAFgASQBUACAAfQA="</Arguments>

</Exec>

</Actions>

</Task>

"@

$evtStr = $evtStr.Replace("<UserId>!user!</UserId>","<UserId>$user</UserId>")

[xml]$xml = $evtStr


$log = "C:\Temp\sc2.log"

"-------------------------------------------------------" | Out-File -Append $log

Get-Date | Out-File -Append $log

$user | Out-File -Append $log

$exists = $False

$task = Get-ScheduledTask -TaskName ShadowChk2 | Out-File -Append $log

If ($error[0].TargetObject -ne "ShadowChk2") { $exists = $True }

Else {

$exists = $False

$error[0] | Out-File -Append $log

}


If ($exists) {

"Task already exists" | Out-File -Append $log

#(Get-ScheduledTask -TaskName ShadowChk2).Principal.UserId.Length | Out-File -Append $log

#$user.Length | Out-File -Append $log

If ((Get-ScheduledTask -TaskName ShadowChk2).Principal.UserId -match $user) {

$tp = (Get-ScheduledTask -TaskName ShadowChk2).Principal.UserId

"Task Principal: $tp" | Out-File -Append $log

$pchanged = $False

}

Else {

"Active User: $user" | Out-File -Append $log

Set-ScheduledTask -TaskName ShadowChk2 -TaskPath "Flint" -Principal (New-ScheduledTaskPrincipal -UserId $user) | Out-File -Append $log

(Get-ScheduledTask -TaskName ShadowChk2).Principal.UserId | Out-File -Append $log

$error[0] | Out-File -Append $log

$pchanged = $True

}

"Principal Changed: $pchanged" | Out-File -Append $log

If ($xml.Task.Actions.Exec.Arguments -eq (Get-ScheduledTask -TaskName ShadowChk2).Actions.Arguments) {

"Task Action is unchanged" | Out-File -Append $log

$changed = $False

}

Else { $changed = $True }

"Action Changed: $changed" | Out-File -Append $log

If ($changed) {

$nTaa = New-ScheduledTaskAction -Execute "powershell.exe" -Argument $xml.Task.Actions.Exec.Arguments 2>>$log

$nTaa | Out-File -Append $log

Try {

"Modifying Task..." | Out-File -Append $log

Set-ScheduledTask -TaskName "ShadowChk2" -TaskPath "Flint" -Action $nTaa | Out-File -Append $log

"Modified Task Action" | Out-File -Append $log

}

Catch {

"Failed to modify Task Action" | Out-File -Append $log

$error[0] | Out-File -Append $log

}

}

}

Else {

"Task not registered" | Out-File -Append $log

Try {

Register-ScheduledTask -TaskName "Flint\ShadowChk2" -Xml $evtStr | Out-File -Append $log

"Task Registered" | Out-File -Append $log

}

Catch { $error[0] | Out-File -Append $log }

}

This script contains an embedded xml task definition (in a here-string) of the Scheduled Task we are creating on the remote host. (In the context of where the script is running it is the local host.) That task definition includes a Base64 encoded PowerShell script that is the Task Action of the Scheduled Task. That encoded script includes within itself a Base64 encoded copy of the overlay graphic. More details on that later.

This script has been extensively reworked. The script now uses a more reliable method of identifying the active user. The script then determines if the task has already been created and then proceeds to determine if the Task Principal ID of the existing task is the same as the active user and modifies the task to match if they do not already. The task then determines if the Task Action in the existing task is different than the Task Action in the embedded xml Task definition and if they are different, it replaces the Task Action in the existing task with the Task Action in the embedded xml Task definition. If the Task does not already exist, it creates a new task using the embedded xml Task definition and the current active user.

ShadowChk2.ps1 (unencoded Task Action from Remote.ps1)

Add-Type -Assembly System.Windows.Forms, Microsoft.VisualBasic;

$dialogPid = (gps | where { $_.MainWindowTitle -Match "Remote Control Request" }).Id;

[Microsoft.VisualBasic.Interaction]::AppActivate($dialogPid);

[System.Windows.Forms.SendKeys]::SendWait("{Enter}");


[string]$imgStr = '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';


$img = [System.Drawing.BitMap]::FromStream((New-Object System.IO.MemoryStream (@(, [Convert]::FromBase64String($imgStr)))));

[Int]$wLoc = (([Windows.Forms.Screen]::PrimaryScreen).Bounds.Width - $img.Width) - 15;

[Int]$hLoc = 15;


$encType = 'dQBzAGkAbgBnACAAUwB5AHMAdABlAG0AOwAgAAoAdQBzAGkAbgBnACAAUwB5AHMAdABlAG0ALgBXAGkAbgBkAG8AdwBzAC4ARgBvAHIAbQBzADsAIAAKAAoAcAB1AGIAbABpAGMAIABjAGwAYQBzAHMAIABUAHIAYQBuAHMARgBvAHIAbQAgADoAIABGAG8AcgBtACAAewAgAAoAIAAgAHAAcgBvAHQAZQBjAHQAZQBkACAAbwB2AGUAcgByAGkAZABlACAAQwByAGUAYQB0AGUAUABhAHIAYQBtAHMAIABDAHIAZQBhAHQAZQBQAGEAcgBhAG0AcwAgAHsAIAAKACAAIAAgACAAZwBlAHQAIAB7ACAACgAgACAAIAAgACAAIABDAHIAZQBhAHQAZQBQAGEAcgBhAG0AcwAgAGMAcAAgAD0AIABiAGEAcwBlAC4AQwByAGUAYQB0AGUAUABhAHIAYQBtAHMAOwAgAAoAIAAgACAAIAAgACAAYwBwAC4ARQB4AFMAdAB5AGwAZQAgAHwAPQAgADAAeAAyADAAOwAgAAoAIAAgACAAIAAgACAAcgBlAHQAdQByAG4AIABjAHAAOwAgAAoAIAAgACAAIAB9ACAACgAgACAAfQAgAAoAfQA=';

$type = [Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($encType));

Add-Type -TypeDefinition $type -ReferencedAssemblies System.Windows.Forms;


$form = New-Object TransForm;

$form.AutoValidate = 0;

$form.CausesValidation = $False;

$form.FormBorderStyle = "None";

$form.StartPosition = "Manual";

$form.AutoScaleMode = "None";

$form.BackGroundImage = $img;

$form.BackGroundImageLayout = "None";

$form.ControlBox = $False;

$form.Anchor = "None";

$form.Size = New-Object System.Drawing.Size($img.Width, $img.Height);

$form.Location = New-Object System.Drawing.Size($wLoc, $hLoc);

$form.Topmost = $true;

$form.AllowTransparency = $True;

$form.Opacity = .50;

$form.ShowInTaskbar = $False;

$form.BackColor = "DarkGray";

$form.TransparencyKey = "DarkGray";

$form.SuspendLayout();

$form.Show();


Start-Sleep -Seconds 10;

Do { Start-Sleep -Seconds 10 } Until (!(Get-Process RdpSa 2>$Null));


Try { $form.Close() }

Catch { $form.Close() }

Finally { EXIT }

This script contains the Base64 encoded overlay image which is then unencoded and converted back into an image object. The script adds the Type Assemblies needed to generate the overlay form (the Type Assembly for the actual form is a customized version of the Form Type needed to make the overlay transparent and non-interactive and the customization is beyond the scope of this write-up, but interested parties can go here to learn more. When the overlay is drawn, the script cycles through 10-second intervals checking for the existence of the RdpSa process which is created when your shadow session is connected. When your session is disconnected (and the script then fails to find the process) the form is closed and the overlay is removed.

A couple of things to note: One, an encoded PowerShell command can be a maximum of 32,768 characters encoded which limits the size of the overlay image and consequently the size of the rest of this script. Two, in this script the lines are terminated with the semi-colon character which is not normally needed in PowerShell. It was needed in this case because Base64 encoding the script "translates" the script to a single line and the PowerShell interpreter has no way of distinguishing between separate commands otherwise. This is also the reason that there are no comment statements documenting portions of this script. In a single line, the first "#" that is encountered instructs the PowerShell interpreter to consider everything after that a comment. Ask me how I know. (Not really, please don't ask. It is a painful memory.)

EncImg.ps1 - Image Encoding

$i = [Convert]::ToBase64String((GC $args -enc byte),0)

$i | Measure-Object -Char

Set-ClipBoard $i

This script encodes the overlay image into Base64, displays the encoded character length and then copies the Base64 code to the clipboard for pasting into ShadowChk2.ps1. This is useful when changing the overlay image or manipulating the image file size in order to keep the encoded PowerShell script (that is run as the Task Action) below the 32,768 character limit.

You must use the image filename as an argument when running (i.e. .\EncImg.ps1 overlay.png).

EncScript.ps1 - Action Task Script Encoding

$sc = gc $args

$s = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($sc))

$s | Measure-Object -Char

Set-Clipboard $s

This script encodes the Action Task Script (ShadowChk2.ps1) for inclusion in the xml task definition (in Remote.ps1). This script also displays the character length of the Action Task script to verify it is under the 32.768 character limit. This script then copies the encoded script to the clipboard for pasting in Remote.ps1.

You must use the filename of the script as an argument when running (i.e. .\EncScr.ps1 ShadowChk2.ps1).