├── .gitignore
├── Image
├── Screen
│ ├── Interface-1.3.2.jpg
│ ├── Interface-1.4.0.jpg
│ ├── Interface-1.4.1.jpg
│ ├── LD.jpg
│ ├── Services.jpg
│ └── Time+Lic+Update.jpg
└── ico
│ ├── RSA-Logo-Source.ico
│ ├── RSA-Logo-Text.jpg
│ └── RSA-Logo.ico
├── LICENSE
├── README.md
├── README_RU.md
└── Sources
└── RSA-1.4.1.ps1
/.gitignore:
--------------------------------------------------------------------------------
1 | Sources/RSA-1.1.*
2 | Sources/RSA-1.2.*
--------------------------------------------------------------------------------
/Image/Screen/Interface-1.3.2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/Interface-1.3.2.jpg
--------------------------------------------------------------------------------
/Image/Screen/Interface-1.4.0.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/Interface-1.4.0.jpg
--------------------------------------------------------------------------------
/Image/Screen/Interface-1.4.1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/Interface-1.4.1.jpg
--------------------------------------------------------------------------------
/Image/Screen/LD.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/LD.jpg
--------------------------------------------------------------------------------
/Image/Screen/Services.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/Services.jpg
--------------------------------------------------------------------------------
/Image/Screen/Time+Lic+Update.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/Screen/Time+Lic+Update.jpg
--------------------------------------------------------------------------------
/Image/ico/RSA-Logo-Source.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/ico/RSA-Logo-Source.ico
--------------------------------------------------------------------------------
/Image/ico/RSA-Logo-Text.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/ico/RSA-Logo-Text.jpg
--------------------------------------------------------------------------------
/Image/ico/RSA-Logo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lifailon/RSA/8e79e6d723949bd982ab4f5947b2a3565b8a4347/Image/ico/RSA-Logo.ico
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (C) 2022-2023 Lifailon
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a
4 | copy of this software and associated documentation files (the "Software"),
5 | to deal in the Software without restriction, including without limitation
6 | the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 | and/or sell copies of the Software, and to permit persons to whom the
8 | Software is furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19 | DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | RSA (Remote Shadow Administrator)
3 |
4 |
5 |
6 | English | Русский
7 |
8 |
9 | GUI for managing connections to current `RDP` sessions via **Shadow connections**, and also contains a set of functions for remote interaction with the Windows operating system and automation of the administration process.
10 |
11 | Can be used as an alternative to remote connection tools such as [Radmin](https://www.radmin.com) or [TightVNC](https://www.tightvnc.com), which require client-server software installation. Written in Windows PowerShell using [Windows Forms](https://en.wikipedia.org/wiki/Windows_Forms), does not contain module dependencies. Tested on Windows Server 2016, 2019 DC and Windows 10 Pro systems in Russian and English localizations.
12 |
13 | **[🚀 Download RSA.exe](https://github.com/Lifailon/RSA/releases/latest)**
14 |
15 | When you select a server and click the `Query` button, a list of current users is displayed in the form of a table. The host's availability is preliminarily checked by means of `ping` and `WinRM`, as well as `uptime` with output to the status bar. To change the list of computers, select **File - List Change** (`Ctrl+S`) in the menu, and to update the list **List Update** (`Ctrl+R`). When selecting a user, four actions can be performed: **Connect** (Shadow connection) with the ability to request a connection and without (the latter is conveniently configured via `GPO`), disconnecting the user (logging out of the system), displaying a list of running user processes with the ability to terminate them (by editing the mouse button on the selected process - **Stop Process**) and sending the typed message to all users on the server or selected in the table. It is possible to fill the list of servers with **AD computers** (`Ctrl+D`) and also to display the list in table format (`Ctrl+T`) with the ability to sort and interact with the selected computer.
16 |
17 |
18 |
19 |
20 |
21 |
22 | To connect to the server via `RDP`, `mstsc` is used with the `/admin` key, which allows you to connect to the `RDSH` server bypassing the Broker for distributing connections. `cmdkey` is used for authentication, after passing a one-time authentication (`File` - `Authentication`), preliminary authentication occurs for all servers in the list and is valid until the program is closed, which allows you not to store the administrator password in the code, as well as the OS key storage (which can be compromised).
23 |
24 | ## Add-ons
25 |
26 | - **Admin - Services** - displays a list of services on a local or remote computer with the ability to restart and stop them.
27 | - **Admin - All Remote User Process** - is used to display a list of all user processes with the ability to stop them.
28 | - **Admin & WMI - Software** - displays a list of installed software with the ability to remove it
29 | - **WMI - Windows Update** - displays a list of updates with further search by `HotFixID` in `DISM Packages` and removal.
30 | - **Admin - SMB Open Files** - displays a list of network resources used by users on the network with the ability to close their sessions.
31 | - **Admin - Get-Netstat** - displays a list of listening and established TCP connections with conversion of the remote host name (`nslookup`) and the process used.
32 | - **Admin - Get-RemoteDNS** - used to remotely view on a `DC` (does not require installation of the module from the `RSAT`) the list of all `DNS` zones and child records of the selected zone with the ability to delete the selected record.
33 | - **Admin - GPUpdate** - updating group policies on a remote computer.
34 | - **Admin - GPResult** - generating a summary report on the results of group policies in `HTML` format for the specified user on the selected host.
35 | - **Power - Reboot & Power Off** - reboot or power off the host with a 60-second delay.
36 | - **Power - Screen lock & Sleep mode** - enabling/disabling screen lock and sleep mode on a remote computer.
37 | - **Power - Get-ARP & Get-DHCP** - used to find the MAC address of a turned off computer in order to turn it on using `WOL` (Wake-on-Lan).
38 | - **Event** - power logs and five event logs for session analysis (connections and disconnections).
39 | - **Broker** - automation of cmdlets for interaction with the `RDSH` farm.
40 | - **WMI - Logical Disk & Memory** - displays the total and available volume of local disks and RAM.
41 | - **WMI - Drivers** - display a list of drivers.
42 | - **WMI - File Share** - a list of public resources on the host (directories or printers).
43 | - **WMI - Power RDP & Power NLA** - checks the status of `RDP` (Remote Desktop Protocol) and `NLA` (Network Level Authentication) on a remote host with the ability to enable and disable.
44 | - **WMI - Setup** - installing software on a remote computer (via `install-package` or `WMI`).
45 |
46 | ### Scripts for synchronizing computer clocks (w32tm)
47 |
48 | - Displays the current time on the server and the difference with the source server.
49 | - Find out the time source, as well as the frequency and time of the last synchronization (the latter is displayed depending on the language pack on the remote machine).
50 | - Check the server as a time source.
51 | - Change the time source on the remote server to the nearest `DC` (with the `PDC` role) in the subnet.
52 | - Change to an external time source (for example, `ru.pool.ntp.org`).
53 | - Immediately synchronize the time on the remote server with the source.
54 |
55 | ### Scripts for activating corporate licenses in the network (KMS)
56 |
57 | - Find out the OS edition and version, license acquisition channel, key type, activation status and licensing server.
58 | - Find out the address of the KMS server in the network by srv record.
59 | - `GVLK` activator. Contains public keys `GVLK` (Generic Volume License Key) with the ability to activate remotely.
60 | - Manually specify the KMS server (for example, if the KMS server is not published in DNS).
61 | - Request (update) the license from the KMS server.
62 |
--------------------------------------------------------------------------------
/README_RU.md:
--------------------------------------------------------------------------------
1 |
2 | RSA (Remote Shadow Administrator)
3 |
4 |
5 |
6 | English | Русский
7 |
8 |
9 | Графический интерфейс для управления подключениями к текущим `RDP` сессиям по средствам **Shadow-подключений**, а так же содержит набор функций для удаленного взаимодействия с операционной системой Windows и автоматизации процесса администрирования.
10 |
11 | Можно использовать как альтернативное средство для удаленного подключения, таким как [Radmin](https://www.radmin.com) или [TightVNC](https://www.tightvnc.com), которые требуют установки программного обеспечения по модели клиент-сервер. Написан на Windows PowerShell с использованием [Windows Forms](https://en.wikipedia.org/wiki/Windows_Forms), не содержит зависимостей в виде модулей. Протестировано на системах Windows Server 2016, 2019 DC и Windows 10 Pro в русской и английской локализациях.
12 |
13 | **[🚀 Скачать RSA.exe](https://github.com/Lifailon/RSA/releases/latest)**
14 |
15 | При выборе сервера и нажатии на кнопку `Query` отображается список текущих пользователей в виде таблицы. Предварительно проверяется доступность хоста по средствам `ping` и `WinRM`, а так же `uptime` с выводом в статус бар. Что бы изменить список компьютеров, выберите в меню **File - List Change** (`Ctrl+S`), а для обновления списка **List Update** (`Ctrl+R`). При выборе пользователя, можно произвести четыре действия: **Connect** (Shadow подключение) с возможностью запроса на подключение и без (последнее удобно настраивается через `GPO`), отключение пользователя (выход из системы), отображение списка запущенных процессов пользователя с возможность их завершения (правкой кнопкой мыши по выбранному процессу - **Stop Process**) и отправка набранного сообщения всем пользователям на сервере или выбранному в таблице. Есть возможность заполнить список серверов **компьютерами AD** (`Ctrl+D`) а так же вывести список в формате таблицы (`Ctrl+T`) с возможность сортировки и взаимодействия с выбранным компьютером.
16 |
17 |
18 |
19 |
20 |
21 |
22 | Для подключение к серверу через `RDP` используется `mstsc` с ключем `/admin`, что позволяет подключаться к `RDSH` серверу минуя Broker для распредиления подключений. Для аутентификации используется `cmdkey`, после прохождения единоразовой аутентификации (`File` - `Authentication`), проиходит предварительная аутентификация для всех серверов в списке и действует до закрытия программы, что позволяет не хранить пароль администратора в коде, а так же хранилище ключей ОС (которые можно скомпрометировать).
23 |
24 | ## Дополнения
25 |
26 | - **Admin - Services** - выводит списка служб на локальном или удаленном компьютере с возможность их перезапуска и остановки.
27 | - **Admin - All Remote User Process** - используется для отображения списка всех пользовательских процессов с возможность их остановки.
28 | - **Admin & WMI - Software** - выводит список установленного программного обспечения с возможность его удаления
29 | - **WMI - Windows Update** - вывода списка обновлений с дальнейшим поиском по `HotFixID` в `DISM Packages` и удалением.
30 | - **Admin - SMB Open Files** - отображение списка используемых сетевых сесурсов пользователями в сети с возможность закрытия их сессии.
31 | - **Admin - Get-Netstat** - вывод списка слушающих и установленных TCP-соединений с преобразованием имени удаленного хоста (`nslookup`) и используемого процесса.
32 | - **Admin - Get-RemoteDNS** - используется для удаленного просмотра на `DC` (не требует установки модуля из состава `RSAT`) списка всех `DNS` зон и дочерних записей выбранной зоны с возможностью удаления выбранной записи.
33 | - **Admin - GPUpdate** - обновление групповых политик на удаленном компьютере.
34 | - **Admin - GPResult** - составление сводного отчёта по результатам групповых политик в формате `HTML` для указанного пользователя на выбранном хосте.
35 | - **Power - Reboot & Power Off** - перезагрузка или выключение хоста с задержкой 60 секунд.
36 | - **Power - Screen lock & Sleep mode** - включение/отключение блокировки экрана и спящего режима на удаленном компьютере.
37 | - **Power - Get-ARP & Get-DHCP** - используются для поиска MAC-адреса выключенного компьютера с целью его включения с помощью `WOL` (Wake-on-Lan).
38 | - **Event** - логи питания и пять журналов событий для анализа сессий (подключений и отключений).
39 | - **Broker** - автоматизация командлетов взаимодействия с фермой `RDSH`.
40 | - **WMI - Logical Disk & Memory** - выводит общий и доступный объём локических дисков и оперативной памяти.
41 | - **WMI - Drivers** - отобразить список драйверов.
42 | - **WMI - File Share** - список общедоступных ресурсов на хосте (директорий или принтеров).
43 | - **WMI - Power RDP & Power NLA** - проверяет статус работы `RDP` (Remote Desktop Protocol) и `NLA` (Network Level Authentication) на удаленно хосте с возможность включения и отключения.
44 | - **WMI - Setup** - установка программного обеспечения на удаленный компьютер (через `install-package` или `WMI`).
45 |
46 | ### Скрипты по синхронизации компьютерных часов (w32tm)
47 |
48 | - Отображает текущее время на сервере и разницу с сервером источника.
49 | - Узнать источник времени, а так же частоту и время последней синхронизации (последнее отображается в зависимости от языкового пакета на удаленной машине).
50 | - Проверка сервера как источника времени.
51 | - Изменить на удаленном сервере источник времени на ближайший `DC` (с ролью `PDC`) в подсети.
52 | - Изменить на внешний источник времени (например, `ru.pool.ntp.org`).
53 | - Незамедлительно синхронизировать время на удаленном сервере с источником.
54 |
55 | ### Скрипты по активации корпоративных лицензий в сети (KMS)
56 |
57 | - Узнать редакцию и версию ОС, канал получения лицензии, тип ключа, статус активации и сервер лицензирования.
58 | - Узнать адрес KMS-сервера в сети по srv-записи.
59 | - `GVLK` активатор. Содержит публичные ключи `GVLK` (Generic Volume License Key) с возможностью удаленной активации.
60 | - Указать в ручную KMS-сервер (например, если KMS-сервер не опубликован в DNS).
61 | - Запросить (обновить) лицензию с KMS-сервера.
62 |
--------------------------------------------------------------------------------
/Sources/RSA-1.4.1.ps1:
--------------------------------------------------------------------------------
1 | #region Config
2 | $conf = "$home\Documents\RSA.conf.txt"
3 | if (!(Test-Path $conf)) {
4 | New-Item -Path $conf -ItemType "File" -Value "localhost
5 | server.domain.local" | Out-Null
6 | }
7 | $domain = "$env:userdnsdomain"
8 | $Font = "Arial"
9 | $Size = "12"
10 | #endregion
11 |
12 | #region Language-en
13 | $Text_Language = "Language"
14 | $Text_File = "File"
15 | $Text_Authentication = "Authentication"
16 | $Text_Exit = "Exit"
17 | $Text_UserList = "User List"
18 | $Text_ListChange = "List Change"
19 | $Text_Server = "Server"
20 | $Text_ServerList = "Host List"
21 | $Text_ServerListDomain = "List Domain Computers"
22 | $Text_ServerTableDomain = "Table Domain Computers"
23 | $Text_ListUpdate = "List Update"
24 | $Text_Query = "Query"
25 | $Text_Connect = "Connect"
26 | $Text_Disconnect = "Disconnect"
27 | $Text_Process = "Process"
28 | $Text_Send = "Send"
29 | $Text_Power = "Power"
30 | $Text_Reboot = "Reboot"
31 | $Text_PowerOff = "Power off"
32 | $Text_PowerOn = "Power on"
33 | $Text_Cacel = "Cancel"
34 | $Text_CreenLock = "Screen lock"
35 | $Text_SleepMode = "Sleep mode"
36 | $Text_Restart = "Restart"
37 | $Text_Stop = "Stop"
38 | $Available = "Available"
39 | $NotAvailable = "not available"
40 | $NoUsers = "No login users"
41 | $UpTimeText = "Uptime:"
42 | $LastBoot = "Last boot time:"
43 | $Days = "Days"
44 | $Hours = "Hours"
45 | $Minutes = "Minutes"
46 | $dgvQueryUser = "User"
47 | $dgvQuerySession = "Session"
48 | $dgvQueryStatus = "Status"
49 | $dgvQueryIdleTime = "IdleTime"
50 | $dgvQueryLogonTime = "LogonTime"
51 | $Text_Time = "Time"
52 | $Text_Time_Source = "Time Source"
53 | $Text_Check_Source = "Check Source"
54 | $Text_Change_Domain = "Change Source on PDC"
55 | $Text_Change_External = "Change Source on External"
56 | $Text_Synchronize_Time = "Synchronize Time"
57 | $Text_LD = "Logical Disks"
58 | $Text_Memory = "Memory"
59 | $Text_Setup = "Setup"
60 | $Text_Update = "Update"
61 | $Text_Drivers = "Drivers"
62 | $Text_Volume = "Volume"
63 | $Text_Size = "Size"
64 | $Text_Free = "Free"
65 | $Text_FreeProc = "%Free"
66 | $Text_Admin = "Admin"
67 | $Text_CompManager = "Computer Manager"
68 | $Text_Service = "Service"
69 | $Text_Services = "Services"
70 | $Text_Remote = "Remote"
71 | $Text_Process = "Process"
72 | $Text_Processes = "Processes"
73 | $Text_User = "User"
74 | $Text_Software = "Software"
75 | $Text_Packages = "Packages"
76 | $Text_OpenFiles = "Open Files"
77 | $Text_Open = "Open"
78 | $Text_Path = "Path"
79 | $Text_Event = "Event"
80 | $Text_License = "License"
81 | $Text_DomainServers = "Domain Servers"
82 | $Text_Activator = "Activator"
83 | $Text_Select = "Select"
84 | $Text_SelectAction = "Select Action"
85 | $Text_SelectServer = "Select Server"
86 | $Text_GetLicense = "Get License"
87 | $Text_ToServer = "on server"
88 | $Text_To = "to"
89 | $Text_ALL = "All"
90 | $Text_Connect = "Connect"
91 | $Text_Delete = "Delete"
92 | $Text_Completed = "Completed"
93 | $Text_Result = "Result"
94 | $Text_Close = "Close"
95 | $Text_Scheduled = "Scheduled"
96 | $Text_Error = "Error"
97 | $Text_Successfully = "Successfully"
98 | $Text_inSeconds = "in 60 seconds"
99 | $Text_AlReady = "already"
100 | $Text_Performed = "Authorization performed by user"
101 | $Text_NotPerformed = "Authorization not performed"
102 | $Text_On = "On"
103 | $Text_Off = "Off"
104 | #endregion
105 |
106 | #region ico
107 | Add-Type -assembly System.Windows.Forms
108 | Add-Type -assembly System.Drawing
109 |
110 | $ico_rdp = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command mstsc).Path)
111 | $ico_usr = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command lusrmgr.msc).Path)
112 | $ico_cred = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command netplwiz).Path)
113 | $ico_pad = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command notepad).Path)
114 | $ico_info = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command msinfo32).Path)
115 | $ico_comp = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command compmgmt).Path)
116 | $ico_services = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command services.msc).Path)
117 | $ico_proc = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command taskmgr.exe).Path)
118 | $ico_net = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command ncpa.cpl).Path)
119 | $ico_gp = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command gpedit.msc).Path)
120 | $ico_gpr = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command rsop.msc).Path)
121 | $ico_disk = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command diskmgmt.msc).Path)
122 | $ico_iscsi = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command iscsicpl.exe).Path)
123 | $ico_system = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command sysdm.cpl).Path)
124 | $ico_netfolder = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command fsmgmt.msc).Path)
125 | $ico_report = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command devmgmt.msc).Path)
126 | $ico_event = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command eventvwr.exe).Path)
127 | $ico_soft = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command control.exe).Path)
128 | $ico_upd = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command wusa.exe).Path)
129 | $ico_dism = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command cleanmgr).Path)
130 | $ico_dev = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command devmgmt.msc).Path)
131 | $ico_time = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command timedate.cpl).Path)
132 | $ico_kms = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command msconfig).Path)
133 | $ico_sync = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command mobsync.exe).Path)
134 | $ico_desk = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command desk.cpl).Path)
135 | $ico_regedit = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command regedit).Path)
136 | $ico_perf = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command perfmon.msc).Path)
137 |
138 | $dll_import = @"
139 | using System;
140 | using System.Drawing;
141 | using System.Runtime.InteropServices;
142 | namespace System
143 | {
144 | public class IconExtractor
145 | {
146 | public static Icon Extract(string file, int number, bool largeIcon)
147 | {
148 | IntPtr large;
149 | IntPtr small;
150 | ExtractIconEx(file, number, out large, out small, 1);
151 | try
152 | {
153 | return Icon.FromHandle(largeIcon ? large : small);
154 | }
155 | catch
156 | {
157 | return null;
158 | }
159 | }
160 | [DllImport("Shell32.dll", EntryPoint = "ExtractIconExW", CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
161 | private static extern int ExtractIconEx(string sFile, int iIndex, out IntPtr piLargeVersion, out IntPtr piSmallVersion, int amountIcons);
162 | }
163 | }
164 | "@
165 | Add-Type -TypeDefinition $dll_import -ReferencedAssemblies System.Drawing
166 |
167 | $Logo = "
168 | AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHxwVEB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB8cFRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAem5UgHpuVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6blSAem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHpuVIB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAem5UgHpuVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6blSAem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHpuVIB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAem5UgHpuVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6blSAem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHpuVIB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAem5UgHpuVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8cFRAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgGthSt9qX0n/al9J/2pfSf9qX0n/al9J/2pfSf9qX0n/al9J/2pfSf9qX0n/al9J/2pfSf9qX0n/al9J/2pfSf9qX0n/al9J/2pfSf9qX0n/al9J/2thSt96blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAfHBUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFlFv2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFlFvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkWUW/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWUW/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRZRb9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RZRb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFlFv2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFlFvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkWUW/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWUW/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRZRb9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RZRb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFlFv2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFlFvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkWUW/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWUW/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRZRb9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RZRb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFlFv2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFpF/2RaRf9kWkX/ZFlFvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4cFggeW9Uj3ptU996blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP92alH/dWlQ/3VpUP91aVD/dWlQ/3VpUP91aVD/dWlQ/3VpUP91aVD/dWlQ/3VpUP91aVD/dWlQ/3VpUP91aVD/dWlQ/3VpUP91aVD/dWlQ/3VpUP92alH/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em1T33lvVI94cFggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAcFAQeG9Tn3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP94b1OfgHBQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAenBVMHltVO96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVTvenBVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHpwVTB5bVTvem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVTvenBVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAcFAQem1T33puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96bVPfgHBQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHpuVIB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAcFAQeW1U73puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVO+AcFAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHptVWB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ptVWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW9Uj3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW9UjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/u6qE/7uqhP+7qoT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//957P/+uSw///qtv/75bH//Oay//zmsv//5bP//+Sy//nisv//67v/+OGx//jhsf//6Lb//ea0//7jsP//5rP//OWz//zntP/647H//+i2//zjsf/+5rL/++Ov///osv/95bH/++Ov//3lsf//6rb/+uOx///otv/34q///ei1//zmsv/85rL//ui0//zmsv/957P//eez//fhrf//6bX/+uSw//zmsv//6Lb//+i2//3mtv/75bX/++W1//zntP/+5rL//+mz//7msv/+5rL/+uSw///ptf/85bP//OWz//zntP/55LH/++az///quP/44a///eez///ns//546//++az//zntP//6Lb//ea0//rjsf/85rL//eWx//vjr//+5rL//uay//zls//85bP//OWz//zls//75bX/++W1//7nt//75LL//ea0///ptf/85LD//uay//7otP/65LD//OWz//fir//85bP//+i2///mtP/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//7msv/44q7//um1//fksf/65rb//Oa2//3mtv/+5LX//+S1///ltv/95LL//ea0//zls//95LL//+i2//zjsf/85bP//ee3//3mtv/75LL//+i2//jhr///67n/+uSw//3mtP/95rT/++Sy//7ntf/75LT/+uOz//rktP/96LX//eix//3mrv/857D/++av//fiq//55a7//+q2//rlsf/+6bX/++ay//fir//34q//+uWy//rntP/55rP/+uWy//rirv//6bX//eSy//7ls//85bP//ea0//jisv/957f/+eOz//vltf/85rb/+uS0//zmtv/75rP/++Sy//3nt//65LT/+uS0//vktP/+57X//+i2//zls///57P//+i0//7msv/+5rL//OWz//zls//85bP//OWz//vltf/75bX/+uOx//7ntf/85bP/+OKy///puf/647X/+uS0//7ouP/95rb//OWz///ntf//57P//+i1//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//+a0//zntP/z4rH/9ua3//bmuP/247j/++a5//rhtf//47b//+Kz///otv/85bP//+a0//7ls//74rD//+e1//vktP//6Lj/+uOz//zltf/75bX/+uS0//3muP/347T/+uO1//vktv/75bX/+eOz//vktP/85bX//ea2//rksP/75q///Oiv///rsv/55a7//ei0//zqtf/047D/9+az//bltP/457b/+um4//not//35bb/9uW0//fmtf/65rb/+uS0//3mtv/+57f/+eKy//7ntf/75LL//OWz//vltf/+6Lj/+eOz//zouP/55bb/+OS1//fitf/657r/9uO2//zlt//95rj/+uK0//nisv/95rb//OWz//rhr///57P//uay//7msv/85bP//OWz//zls//85bP/++W1//vltf/95rT/+uWy//vnuP/55Lf/+ea7//Thtv/55rv/+uW4//jhs///6Ln//uOx//vgrf//5rP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//75LT/9+O0//Tnu//w5Lr/9OS///Hfuv/z4rv/+ua9///luP//4K///eWx///ptf/+5rL//eSy//7nt//75LT//ue1//vksv//6Lj/++S2//vmuf/247j/8uC3//jovv/86sH/8d+2//fkuf/75rn/++S2//3mtv/647H//Oay//3osf/96LH/9OCp//ros//56LX/8OGw//bouP/05bf/8eS4//HkuP/x5Lj/9OS5//Xlu//15Ln/9eS5//bjuP/55rv/9eK3//rluP/45LX//ee3//zls//95rT/9+Cu//7ntf/957f/9uKz//nmuf/147r/9OO8//Dgu//w4br/+OK4//nitP//57n//+q6//vktP//6bf//+a0///mtP/+5rL//uay//zls//85bP//OWz//zls//75bX/++W1//vms//757f/9uO2//Tkuv/x4bz/9eXB//Dduv/14rz//ua8//7ktv/+47H//+u4///lsv/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zjt//657z/6N62/4d+Wf95bEz/hHVV/4F1U/9/bEb/l3dM//3cq///7Lb/+OOs//zkrv/95LL//ui4//njs//85LD//+m1//vktP/55Lf/9eO6//Tkv//u4Lz/f3NP/3xtTP98bkr/hHRP/4Z0S/+GcUT/inND/9jAjP/+5rL/+eOv///ruP/45bL/+Oe2//Xlt//05Ln/8OK4/+zguP+6ror/ppp2/46CXv+Bc0//gXFN/4NzT/+Fc07/g3FM/5iGYf+mlG//ybaQ//LftP/55bb//OW1//7msv//6rb//eSy//rktP/757j/8eC1/5+Pav96bkz/fHNS/35yUP+Gckn/jXZJ/7yjd//64rT/+uK0//7nt///5rT//OOx//7msv/+5rL//OWz//zls//85bP//OWz//vltf/75bX/+uWy//bktf/66r//2cym/4R3V/97cFL/f3BQ/4VyT/+GcEf/jHJE/8esev//47D//+Wy//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//eO7//Tfuf/m3bv/f3pb/3tuVP95bFL/dWtN/4R0UP+VdUz/+din//nhq//86bD//+iy//nhrf/957f//Oa2//3ir///6bb//OW1//ThtP/04r3/7eG//6OZe/9/d1n/fHFV/31zVf95bUv/fW5H/4p0Sv+jjFz/9tuo///ntP/647P//OW3//znuv/x4LX/9eS9/+PVsf+QhGL/f3RU/3pvU/95blL/em5S/3puUv99b1L/f29S/4FvUv9+blH/d2lM/4R3V/+Dc0//hHFL/6SPYv/jzJz//+ez//nhq//95bH//ea0//fkt//15bv/uq6K/3lxU/9zb1P/eHBT/4VyTP+FbkH/oold//jgsv//57n/++S0//7ls///5rT//uWz//7ls//85bP//OWz//zls//85bP/++W1//vltf/55bX/9eW2//Pkvf+6roz/eHBT/3lwVf96blL/gW9Q/4dyTP+NdEj/5siX///qt///5bL//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//64bX/+Oa9/+Lbuv98eFz/e29X/3xuV/95blL/gnFQ/5l2Tv//3Kz//+iw//zqr//95q7//+ez//rktP/75bX//+ez///ksf/847H/+eS3/+7ivv/Lw6X/d3BV/3NsUf91blP/e3BU/3xuUf+EcU7/jHVI/+PKmP//6LL//+Wy//7muP/65Lr/7+C5/+/jv/+om3v/fHFT/3xxVf90bE//d25T/3pvVP97cFX/e3BV/3tuVP99blT/f21W/31uVP9+cVf/eGxQ/3tuTv9+cEz/gHFK/4d0Sf/AqXn//+e1///ms//95LL//OW4//Piu//XzKz/fHZZ/3VxWP92b1T/f3FN/4l0Tv+NdEr/5Mmd//3jtf/+57f//ea0//vksv/+5bP//uWz//7msv/85rL//Oay//zls//85bX/++W1//zouP/x4bb/6N68/5WNcP91blX/d21V/31xWf9+blH/iXNK/6CGWP/+4rP//eKw//zjsf/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//7nr//257b/4t28/3x4X/96blb/fW1W/3pvU/+DcE//nXVL///bp///567//Oms//7orv/+5rD//Oa2//vktv/+57n/++Sy///jsP/85bf/5N/A/3N0Wv95dFv/dG1S/3dvUv97b1P/hnBX/4ZtTf/Dpnn//+q0//rirP/+6LT/+uK0//fkvv/n4sH/nZyA/3RtVP93bVX/dW9S/3VwUf94bVH/fHFV/3twVP96b1P/em5S/3xtU/+AbVj/f2xX/31sV/94bFT/eG9U/3ZwU/91cFH/enBO/4x1T//Conf//+e0///jsP//5Lf/+eS+/+zhwf+jnIH/d3NX/3NtUP93b1H/gXBP/41wS//Jp3z//+O0//3ksv/457T/9uWy//zmsv/+5rL//uaw//7nr//+5rD//uay//7ktv/85Lb/+uS0//TmvP/RzLP/c3Bb/3txWf97blT/eGxU/4NxUv+LcUP/yKl2//zis//+57f//OW1//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//Oiu//bntv/g3b7/enhg/3puVv99blT/eHBT/4FwT/+bdUv//9qp///nr//86K7//Oiu//7msP/95rT/++S2//jktf/55bb//+i4//Pit/+inoH/cnJa/3NvU/92b1T/eXBV/3lrT/+HbU//pIRh//3esf//4q///umy//bkr//75rn/79+6/7Wzlf9sbVP/dW5a/3ZuV/96c1j/e3NV/4FyUv+Ab07/fm9P/4BxUf9/cFD/f3BQ/4FvUv+AbVL/f3FV/3pvVP95cln/cW1U/29rUv97c1b/f2pL/5J1UP/Yt4b//+q1///jtv/547r/7+PB/8a+oP90bVL/eHFW/3pyVf9+b0//jHBN/6WCWv//4bD//+Wv//notf/157P/++az//7ls///5rD//+ev//zor//85rL//uS2//zjt//65rf/8ua+/62qlf9wblz/enBY/3tvU/99blT/hHFQ/5Z4R//rzJX//OKz//rjtf/95rb//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//75bX/8+W7/9/cwP94d2L/em5W/3tuVP92cFP/fXFP/5Z1Tv/82qz/++ay//fosP/757D//uaw///mtP/+5LX/++S0//nmu//r37v/ysKk/3RtUv94cVb/cm1O/3hyVf94cFn/gG9U/45wR//dvIv//+O2///ouP/65q//+Oiz//Xluv/c0av/enFQ/311WP94blb/cmpT/3lyV/93bEz/i3FN/5FxTf/CpYD/7tSv//Pguv/3573/8uK0/+rZrv+6rYf/i4Bg/3lvV/93b1j/dm9U/3htUf9/cVX/hWxK/6iHVv//36n//+Wz//fitf/y5rz/5d24/314X/94cFn/fG9P/4NwTf+Db0z/jHNL/+rLmP//5q7/9+Ww//not//75Lf//uS2///ks///5rD/++iv//nosP/75bX/+eS3//Xitf/s37n/j4ly/3NvXP92b1b/eW1R/4FvUv+Hb0v/r5Ri///mr///47T/++O1//rktP/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//njuf/z477/3dvD/3Z3Y/94blb/em9T/3ZwU/97cU//knVO//varf/55bX/9+az//vmsv/+5rL//+a0//7ktf/647X/8uG6/+TgxP93dV3/eG9U/3xxVf97dVj/dGxP/3lrVP+Dbk7/uZlo///krv/947T/9+Cy///qtv/y47L/6eC6/7uzlf98clT/e29T/3ptU/9+cVf/e21Q/4RxTv+xk2r//96x///it//837P//ei7//Lgsf/66LP/9uax//Tnuf/r4Lr/oJh7/3lyWf96clX/eW5S/31wVv+Db1D/lHNF/9y6hf//5rP/+OWy//bot//t5b3/oJqD/3JrV/99b1L/h3RT/35uUf+DcE3/xKp7///ksf/76br/8uC3//nhvf/74b3//OK6//vktv/157P/9Oez//Xkuf/047z/9eW7/9vPq/9+d17/cGlV/3BrUv98cVX/hnFS/4pwSP/av4z//+mx///ksv//5rf/+OOw//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP/++K6//Pjv//d28P/dndj/3ZvVv96b1P/dnFS/31xTf+Vd07/+9qt//zltf/55rP//Oay//7msv//5rT/++S2//zov//q3rz/nZuD/3JxXP93blP/em9T/3VuVf98cVb/hXBQ/5R4T//32aL//+at///otv/957f/9+Cu//fouv/i4ML/dnVg/3FrVP93a1P/f3BW/4RwUf+IcEz/oodb//fcqf//5rD//+Wz///ltv/85Lb//OW1///qtv/65q//8uOy//LmvP/i3bz/eXVZ/3hvVP97cFX/em1T/4NvUP+Mc0n/tZdm//3lr//75q///ei0/+/ht//Hw6r/c29c/3ttVv96aFH/fG1a/3xuV/+Fc07/f21E/35uSv+EclX/g2xW/4RsVv+DblP/gW9Q/31yTP99ckz/fXBQ/31wUP98cE7/f3RU/3VpUf96b1n/dnBZ/3xxVf+Ea0n/lnlN//fdp///5q7//uOx///ltv/55LH//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//847n/9eO+/93bw/91d2P/dG9W/3hwUv94cFL/f3FN/5l3TP/+2qr//+Wz//zmsv/+5rL//OWz//rmtv/047j/7d+7/87Dp/9xbln/bmtW/3xzWP97b1P/d21V/4BwU/+Lb0b/3b6L///krf//56//++Wx//vksv/75LL/9+e9/83JsP91dWP/dm9b/3tvV/9/cVT/gW1K/4xuRf/cu43//+u1//3lr//546///+i2//rjs//44a///+qz//fjrP/35rX/7eK2/+flwv+0spT/dW5T/3ZrUP9/clj/gG5P/4txTP+iiFr/+uKs//3mrv//6LT/8+K3/+HdwP+JiHP/eG1Z/31tXP95alr/d2lW/31yVP96b0//e29T/3xsVf9/a1n/f2ta/3tsWf94blb/enBS/3pwUv96b1T/em9U/31zVf93bE7/fnFX/3hsVP9zbVb/fXJW/4luSf+1lGb//uSu///rs//+47H//eSy//zntP/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz///ktf/25Lv/39zA/3V4Yv90cFT/enBS/3twUv+EcUz/nndL///ap///5bD//+ev//7msv/55rP/8+a4/+vivP/UzK//e3Rb/3ZxWP96c1r/d2xQ/3xwVP+CcVf/hm9P/7eWZP//5qv//+e0//zns//857D//eix//rjs//y4Lf/ycGk/3JuVv91bVb/eG1S/351VP+CcUr/l3hL///aqv//367//uKz///pu//65LT/++az///rtP/346z//+q2//jmt//v47v/4uC9/66ukP95dVn/dm1S/3puUv+CcFH/iHBM/5+GXP/4363//uaw//7msv/35Lf/6+XC/7GwlP9ybFn/eG5d/3lqV/99b1n/dXFV/3ZyVf90bE//fHBU/31tVv97bVf/dm5X/3RvVv92b1T/eHBT/3pvVP96b1T/eHBT/3dsUP+CdFj/fW5U/3VuVf97cFL/jXFI/9y7iv//5a3//+uz///ksv/95LL//Oe0//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//+Wy//jluP/f3b//dXhi/3RwVP96b1P/fW9S/4hwTP+ed0v//9qp///lsP//5rD//OWz//Tktf/t5b3/5uHA/5GMc/91b1j/dG1U/3ZrUP99cVX/gXFU/4FpS/+WdlL//tym///orf/75bH/+OWy//zor///6rL/++S0//vlu//v4b3/4NW1/8/BpP+5rIz/n5Zw/5KDVf+4l2b//+Gw///muP//5Lf/+eK1//vnuP/45bL/9+Ww//7qs//35LH/9uO4//Llv//n5cP/mpp8/3VxVf91blP/e3BU/3xtTf+McUz/pYVa//nfsP/+57X//OOx//jktf/w57z/086t/3ZzXv9yaln/f29Y/3tsUv9ybVT/dXFV/3txT/9/cU3/fW9S/3twUv94cFP/dnFS/3hwUv96cFL/e29T/3tuVP93blP/eG9U/31tUP9+blH/em9T/35vT/+VeEz/+9qo///nsP/95Kz//+Wz///ntf/55LH//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls///5bD/+uW4/+Dcv/92eWD/dHBU/3pvU/99b1L/hnBN/5p3TP//2az//+O1///ltv/447b/8eO5/+Tgvf+gnoD/c29W/3RuV/90bVT/fXJX/31uTv+HcU7/l3ZP//HMoP//5bL//+iy//nksf/66LP//uqw//7qsf/95LL//OS2//nkt//04bb//Oa9//bku//v47P/9+az///msP//5K7//+az//7ktf/447b/9uO2//nltv/55bX/++W1//rmt//147r/8eXB/766nf9wb1X/eXVZ/3JuUv9wa1L/f3FU/5Z0Sf+3kWH//uS2//rmt//547P/+ua2//PjtP/r4Lr/i4lx/3NwW/94ak3/gG5P/3xuV/94bFD/hXJH/4p2R/+Dc0n/f3NL/4NzTv9+cUv/f3RO/31xTf98bU3/gHJW/3puVv94b1T/gHBT/31uTv9+cFP/gm9M/7GUZ///57L//+av///nr//+5bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz///ks//65Lr/4Ny//3Z5YP90cFT/em9T/3tvU/+Db1D/jnFM//nbsv/74rr/9eG4//TjvP/Owp7/iodo/3JvU/9zblX/dG1U/3lvV/99cVX/hHFQ/52DXv//3bH//+S2///ktf/64a///ee3//ros//65q3/+OSr///otv/84rP//uWz///pt//84rT/9+Gx//notf/456///+Wu///lrv/95bH/+ua2//Xluv/05Lr/9eO6//biuf/24Lf/8d20/7+tiP+NgV//dm9U/3NvVv94cVj/cGlQ/3lzXP9+b0//lHBC/+a+iv/84rP/9+W2//jktP/757f//ee3//Pjuf+vrpL/b29X/390Vv+CclX/fGtW/4VwVf+vlWf//+Wv//bktf/15Ln/9+S3//Xitf/z47j/8ua+/+zdvf/NwaX/eG5W/3puVv99bVD/g3FS/4RxUP+JdE7/4cWW///nsv//5q///+ev//zls//75rP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//+K3//jjvf/f3MD/dnlg/3RwVP94cFP/em9T/31vU/+IdFX/gm9O/3ptTf99clL/e3BS/3dsUP92b1T/dHBU/3dwV/95clf/d29S/3tuTv+slnP/9ty0///itv//5Lf//+K1///ktf/757j/+OS0//njr//+5rL//eSy//7ls//64a///+a0///ksv//57X//+u4//vms//64q7//+m1//Llsf/s5bT/7ua+/+vfvf/QwKP/qpV6/455Wv+FclH/g3NP/3ltS/96c1j/dG9W/3JqU/98cVv/em5W/4JvTv+adkb//92l//7msv/86Lj/+Oe2//jisv//5bb/+OW6/97ewP91eWD/dm9W/3ttV/96Z1j/gGhQ/5x6TP/+3Kb/++S0//vmuf/75Lb//OW3//rluP/25b7/7eLG/6CYgf92blf/eW1V/31tUP+FclH/hnBM/5yEWv//57X//+Ot///mr///56//++az//nms//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls///4rn/9uO+/9/bwv92eWD/dHBU/3hwU/96b1T/em9U/3hsUP97cFT/enNY/3NsUf97cFX/d2xR/3twVf92bVL/dG1S/311WP94blD/gXJS/4NtSv+Mck7/n4hi/+LJn///4rf//+O2//Xhsv/45LX//OWz///ns///5rT//uWz///otP/746///+e1//jhsf/447b/9+a7//PjuP/w5bn/4tqr/6+off+BeFb/d2xQ/3xvWf98blj/e2xS/31tUP98bU3/fnFR/3VtUP94cVb/e29X/3ptU/+Bb1L/h29L/928iv//56///OSu//jlsv/86Lj/+OKy///ktf/247b/6OjE/5OYe/9wbVj/eG5c/3xtXf+GcFf/lXJG/9+6hv//47T/++W1//nksf/55LH//ea4//Dgtv/h3cH/fHlk/3dvWP94bVL/gHBT/4RwTf+Kckj/wKZ4///mtP/+47D//+av///nr//75rP/+eW1//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//7iuf/2477/39vC/3Z5YP92b1T/em9T/3tuVP96b1T/eXBV/3dwVf9xbVH/dm9U/3twVf+AdFj/e21R/35yVv94cFP/dGxO/35xUf+Ab07/g25P/4RwUf9/b1L/hnNQ/6CDV//x06T//+i7//3muf/+5LX//+Sy//3lsf/65LD//+qz//njr//34bH/+OW6//Hjv//p4sH/vbud/4eEZf94bU3/fm9P/35wVP98cFj/c2xZ/3BrVv91blP/fHFV/4FxVP9/cFD/fHJU/3ZsTv9+cFP/gW5N/4xwTf+4mnH//+i2///msP/95a//++Wx///otv/85bX//eO0//fltv/n5Lj/wcWi/25wWv9wblz/cmtY/3ttUf+McEf/tZVk///ntv/+5rL/++ew//nnsv/65rb/8eW7/8TDp/9tcFf/dXBX/3tuVP+CclX/g29M/491R//qzJv//OCx///otv//56///uev//vms//55bX/++az//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OS2//Xkvf/f3MD/dnlg/3ZvVP97b1P/fW5U/31uVP98cVX/dm5R/3lzVv95cVT/eW5Q/4FzVv97a07/e21Q/3huUP+Bd1n/fG9P/4BwU/9+b1X/fm5X/3dqUP+AcVH/inNN/5B1Sf/myZz//eGy///mt///5LL//OWz///qtv/+5rD//Oez//jpu//v5L7/1syu/4uGbf9xclj/b25U/3xvVf+Ab1T/fW1W/3huVv9zbln/c29X/3RwVP94cFP/fG5S/3xsT/9+cVH/gnNS/4BvSP+KdEr/yayA///is//54K7/++Wx//3ns//957P/++Wx//vksv/75LT/++e3//Hltf/i3bb/dnhi/2xtXf93cl3/fHBU/4dxTv+Sd0v/+dyp///mrv/96bD/+eey//Lis//y58H/mpl9/21tVf92b1b/fHBU/39uU/+Ebkv/ooZX///gq///47T//+W2//7msP/+5rD/++W1//vltf/75bX//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//+5rL/9ua4/9/dvv92eWD/dm9U/31uVP+BbFb/g21U/4FvUP9/cE//fHBM/31vS/+Cck7/gHBM/4FyUf+Ac1P/fnJQ/3dsTP96blL/e29X/3VuW/91bFj/em1T/4BwU/98blH/hXJN/6yKXP//36v//+Sz//7ktf/75rP/+uSw//3jrf/75rP/7ua+/87Mqv+BeVz/eW5T/3hxVv93b1L/fHBU/3ttUf94bVH/eXFU/3dxVP92blH/eG1S/3xvVf9/cFb/gm9U/39tTv+Cb0n/taBt/+vTnf/+47D//+i2///ntf//6rj/+uO1//fhsf/65a7//eix//3mtP/75LT//+e1//bluv+ZnIP/aGtb/3RvVv95bVH/fW9T/4NvTP/Zuof//+it///osf/857T/8eO5/+LZuP+Ce2D/dm9W/3pvVP9+cFT/fWxR/4VvTP/NsH3//+St///kt//84rT//Oay//znsP/85bX//OW1//nltf/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//7nr//25rf/392//3h3Yv92b1b/fW5U/4FtVP+EblL/jHRQ/+/ZsP/45Lv/9eO6//Xit//35bz/9OK9//HhvP/z477/8OC8/+HSsf+1qo7/d3Rf/3NuWf96blL/f3FU/3htUv+DcVL/k3BE/8ylcf//6bb/+uOx//3mtP/75LL//+i0//Tis//i3rv/enld/3dtVf94bFT/e3BV/3htUf97b1P/fXJU/3tyUf94b07/e25O/4BxUP+CcVD/gm9O/4JuT/+ah2b/0LqW//Xftf/7463//+et///osv/94rD//uS1//nisv/95rj/+uS0//7psv/75q///OWz//7ktf//5bL/++S3/8PCqP9qblv/dW1W/3puVv94bVf/fm9P/7WWY///563//+av//nitP/v5cP/x8Cl/3puVv95bVX/e3BV/3tvU/+GcVL/jnRM//rbqP//5a7//uS2//3kuP/85rL//Oew//zls//85bX/++az//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//+ev//jluP/g28L/eHZk/3ZvVv97b1P/e29T/4RwTf+XeUr/+tmn//7ktf/75Lb//Oa2//nltf/34rX/++W7//njuv/547n/9+a1/+3jtP/d27z/fXpe/31xVf97bVH/e29X/39vUv+OcUr/pIRT//3krP/75Kz//+e1//zltf/35rX/8um9/6+rj/9yb1r/d29Y/3ptV/93a1P/em9U/3dvUv9/dlX/e3JN/35wTP+Dbk7/ln5a/8asff/mzpr//ue5//fjtP/85rb/+uOz//vktP/95rT//eKw///mt//95bf//OW3//rjs//74rD//+i2//3mtP/647H//+a0///ks//55Lf/4d6//4uKdf91blv/eGxa/3dsWP+Bb1D/l3ZE///fpf//47D/9eO6/+bixv+cmYT/emxV/31tVv91blX/fHFT/5BwTP+6lmj//+Sy///lr//85bX/++S2//zls//+5rL//Oay//zmsv/85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls///5rD/+OW4/+Daw/94dWb/dm5X/3pvU/96b1P/g3FM/5h3Rf//4an//+W0//7ktf/54rD/++az//7ouP/237L//OC3///muP//6rP/+Oq2/+jnwf+vr5H/d2xR/4FxWv96blb/f3FV/4pvTf+Rdkr/9N2l//7orv//5rT//OW3//DktP/g3LP/hX9o/3FpWP91bFj/d2tT/4JzWf9/blP/fnJQ/31wSv+kl2v/2sif//viwP//5r///+Gs///orP/44q7//Om2//fir///6bn/+eS3//3muf/+5rj/+uK0//nhs//85Lb//+m3///otv/54rL//OW1//3mtv/847H//uWz//nnuP/p4bz/sa6S/3VuW/9yaFf/fHFb/4NwT/+Uc0L/4LyG///ntP/y4rj/29rA/3x7Z/96blb/fW9T/3dwV/99cFD/kG5D/+K5iP//57L//+Ow//3nt//45LT//uWz//7msv/85rL/++ay//7ls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//7msv/25br/39rF/3h1Zv92blf/em9U/3tuVP+DcE3/l3dG///dqf/83q3/++Gy///mtP/+57X/+uS0//7nuf//5Lj//uS1///ksf/25bT/4uO7/9DStP9+c1//eWpX/3puVv9+cFT/hW1P/4txSf/q0Zn//+qu///ksv/65rf/7ee4/9XTq/97bVr/fm9f/3luWP94bFD/hHBR/4ZuSv+zmnD/8tur//3rtv/55rP//+W9//vftv//5bL//+uz//rktP/05Lb/9+e8//LiuP/5577/9eG4//Xguv/547n//uS1///otv/64a///+a0///ksf//57X//OW1//vltf/65bH/9+m1/+3kuP/W0q//d3Jd/3JrWP9/c1f/gm9K/5VzSP+ykWD//+ex//Hktv/Gwqn/bGtX/3hyVf94b07/e3BU/4JxUP+ZeEv//9qo///os//+47D//ee3//vltf/85bP//uay//zmsv/75rL//uWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//Oay//Xluv/d2sX/dnZm/3RuV/96b1T/e25U/4NwT/+UdUj//t2r///puv//5rf//OOx//7ntf/136//++S2//zjt//84rT//+Wy//vquf/l5r//xsmv/4B0Yv94aFf/e29X/3hsUP+FblT/kHZR/+PKkv//6qz//uOx//nkt//t6Lv/0c6o/4BxXv98bFz/d2tT/35wU/+Ick//noRc//7erf//6bL//+qt//fkq//95Lj//uW7//visP/647H/+ea5//Hiu/+9r4v/fXFP/4JyTv+Bbkv/gm9O/4l0Tv+jiVr/9tqk///ntP//5rP//+Wv//7jsP/647P//ee3//jlsv/25bL/9Oa2/+rhu/+Jh2//c3Bb/3pwUv+Bbkv/kHJP/5R2Tf/t2qf/8+m6/6Cbgv9xbVr/dnBT/3lwT/9/cFD/h3FN/7aVaP//47H//+ex//7msv/65LT//ee3//zltf/85bP//OWz//vms//+5LX//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//757D/8+a6/9vcwv9zd2T/dG9W/3pvU/97b1P/gXBP/5N6Tv/z2Kb/+uCx//7nt//95LL//ea0//rntP/35bb/++O5//3kuP/546//9OW0/+HfwP+xs53/d2pa/3ttW/95b1f/d2xR/4VvVv+NclD/6NCW///pqf//5LH/+OO2/+zjuP/Z07D/fnBd/3prW/94alT/gXBV/4dxTv+fhlz//t+s///jqv//6qz//+qw//jktf/547n//ea4//znuv/v4Ln/6+G//5WKbv93bFH/gHJW/4FxVP+AcFP/gm9K/6CGV///5K///+ex///jrf//6LD//+Wy//zmtv/54rT//OW1//vktP/85rb/8eK7/7GymP9rcVr/c29T/3xxU/+CbVL/g25P/8m8kP/o4Lj/gHZk/3RrXf95bVX/fnFR/4ZwTf+HbUX/3L6P///kr///5a///Oay//vksv/95rb//uS1//zls//85bP/++az//7ktf/85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//vmsv/z5rr/29zC/3V3Y/90b1b/em9T/31vU/+Bb1D/jHRK//ffsf/54LT//OO3///puv/44bH/9+a1//Tktv/55bz/+eO6//bisv/y5bf/4d3A/3RwXf99cGD/d2lX/3huVv98b1X/hW5U/450UP/03aX//+mr///ms//75Lb/8OO3/+fevP9/dGD/fG9f/31vXP98bVP/gW1O/4lyTP/ozp///+Wv///mrv/+6LT/+OW6//HeuP/55rv/8OC2/+7iwP+5rpL/eW9X/3pwWP94bFT/eGpO/4VzVv+Fb0v/wKZ4///jrf//46z//+ix///qsv/54a3//ee3//vktv/75LT//uS1///ltv/z4rf/2dy8/3J5Xv9yblX/eW9X/31sV/+Ab1X/nJNu/8nAnv94bFr/dWha/31xWf9+b0//jHBN/5h4Tf/526r//+iy//vmr//75bH//ue1//zis//+5LX//OW1//zls//85bP//uS1//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//Xluv/f28L/eHdj/3huVv99b1P/gW1U/4NuUv+NdVH/8tmx//7kv//43rb//+O6//viuP/657z/9OS6//Lfuv/04r3/9OO8/8zBm/+Qim3/dnBZ/3hqV/99blv/em1X/39uU/+LcU3/r5Ro//vlsf/+5rD//+Wy//7ls//45bj/8eO//6Gagf90blv/dWxY/3ptV/9/cFb/gHFR/4FvSv+nlWz/5dCj//bjuP/w3br/+OjE//LjvP/az6n/opp9/3ZvVv94blb/em5W/3ltVf98blL/h3JS/4hySf/kzJ7//+e1///nsP//5q3//uSu//zls///6rr/+OKy//rlsv/85rL//+Sx//fltv/q68H/l516/3NvVv94bVn/fnBa/31uVP+Cd1f/nJJ0/3xvWf92a1f/enNY/31uTf+QcUr/xKJ0///ms///6rP/++ew//rlsf//6Lb//OKz//7ktf/85bX//OW1//zltf/+5bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bX/9eW7/9/cwP94d2L/em9U/39uU/+BbVT/gW1U/4RwUf+Cbkv/hnBN/4pxT/+KcEz/iXJM/4NyS/99cEr/hHNS/35vTv99cU//enFQ/3dvUv95blP/fXBW/3xsVf9/b1j/f2pO/49zSv/XvIr//ea0//zls///5LH//+Wy//vktv/y4br/2dG0/3dzW/9xbVX/d3Fa/3RqUv96b1T/e29T/4F0VP9+bkr/gXBP/4NxVP99bVD/fnJO/3lwTv92b1T/eXJZ/3pvVP94a1H/gXJY/35sT/+Fbkj/sJdr//zjt//+5LX//+ex///nr///6LT/++Sy//nisP/96LX//ei0//3osf/746//++i1/+nltf/Gx5//c25V/3ZsWv97bVf/eGpT/31xVf97cFT/emxV/3puVv94cFP/gHJO/5NxRv/0zp7//+Wy//rmr//56LD//Oez///mtP//5LX//uS1//zltf/85bX//OW1//7ls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//nltv/z5bv/3Ny+/3Z2Xv98dFf/eWtP/35vVf9+b1X/e29T/31vUv9/cFD/gW9Q/4NwT/+BcE//e3FP/3pxUP96blL/em9T/3lxU/94cFL/e3BU/35wU/+AcFP/gG5R/4FsUP+Ib03/s5Vm///ms//85bP/+eSx//7msv//5bL//+W2//bjuP/u4sD/trGS/3FxU/9tbFD/d3JZ/3luWP94bVf/eG5W/3hvVP96bVP/fmxV/39uVP96cVD/d3BP/3hxVv97clf/eWtO/4FvUP+DcE//h3FN/5h/U//23K7/++S2//vktv/+5rL//uay//zls//85bP//OWz//zmsv//67T/+OKu///otv/76LX/6+Kw/+PgtP+AemP/dGxb/3tuWP98b1X/e25U/3ptU/98blL/fHBU/3txU/+DcE3/rIha///fq//95bH/+uiz//XlsP/75rL//uay///mtP/+5LX//OS2//zktv/85bX//uWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP/9+S3//Hlvf/d273/eXhe/3dvUv9+clb/emxV/3ltVf94blb/eG9U/3pvU/97b1P/fW9S/3twUv92cFP/dm9U/3pwWP95cFX/d29S/3dvUf96b1H/f3BQ/4NwT/+Fb0v/iXJM/6GIXv//37H//+Gu///ptf/65LD//+e1//zjsf/74bL//ea4//Pjuf/q4bv/uLmS/3BxT/93cVT/dm1S/3lsVv96bVf/eW5Y/3tvV/99bVb/fG1T/3pxUP95clH/dW1Q/31yVP99bk3/hXJN/4t0Tv+fhlz/+t6v///ltv/85Lb/++S2//vltf/75rP/++W1//zls//+5rL//uay///lsv//5rP/+uOz//nltf/467f/7ea7/6Cag/9za1r/eGtV/3tuVP98b1X/fXBW/4BwU/9+blH/e21Q/4RuSv/JpXX//+Su//zmsv/457T/9+az//vmsv/95bH//+Wy//7ktf/85Lb//OS2//zltf/85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//2473/7+G9/+Xew/9+eGH/fG9V/3xuUv97bVb/fG9Z/3ZtWf92bVn/em1X/3puVv97bVb/em5W/3ZuV/92blf/dmxU/3htUv95cE//fHJQ/4BxUf+Cbk//hW9L/4tzSf+znGz/996s///gs///5rX//+21//zlrf/74rD//+W3///ltv/75LT/+eW2//Tlt//s5rn/1dKm/4+IYf+AdFL/gW9S/4FuU/9+b1X/fXBW/3tuVP95bVH/fG9P/39zUf98cE7/e2xL/4VzTv+Jc0r/xKp8//nbqv//5bb//uS1//7ls//85bX/+eW2//fltv/75bX//OWz//7msv//5bL//+Kx///mt//847f/+uW4//Xks//05rz/08yz/3x1Yv96blb/e25U/3tvU/9+cFP/gW9S/4JuT/+GcFT/kHZS/+3Jmf//57H/++Sy//fmtf/65rb/+uWy//7msv//5bL//uS1//zltf/+5Lb//OW1//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//jiuP/14rz/5tm5/4Z7Xf+Ab07/gm9O/4VzVP97a07/e25U/3tuVP99b1L/f29S/39vUv99b1L/e29T/3tvU/96b1H/f3JS/4Z4VP+MfFf/lYJf/6uYc//WvZX/9t6w///nsf/84qz//+i5///ktf/95Kz//uev///puf/64rT//uWz//zls//96LX/9uWy//PltP/16bn/9um9/+LSqP+/qYX/qJJv/455Wf+Bb1D/fXBQ/39zUf+DcE3/gm9M/5uJZP+4p4D/3Mqh//vkt///47D//+q3///ksv/847H//+Wy//zls//35Lf/9+S3//vltf/+5bP//uay///lsv//5bT//+O0//jhs//757j/+OS0//Tktv/n3Lz/lYpv/39xVP9/cFD/fnBM/4FxTf+Cb0z/hHBN/410Uv+XfVX//9+t///lsP/65LT/9+W2//vktv/75LL//+ex//7msP/85bP//OW1//7ktv/+5LX/++az//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//+ez//zls//75rn/+OK4//7nt//+5bP/9+Gx//3ou//147r/9eO6//vkt//75Lb/+eS3//fkt//55Lf/9+S5//flvP/y4br/8t+5//Xjuv/45br/+eS3//rjtv/95rb//+iy///psf/+5rL//+a0//zksP//6bX/+eKy//7nt///5rT//Oay//nksP/557L//Om2//fksf/65rb/+ua3//zjt//64bf/+uG5//fjuv/v47n/7uC2//jhu//+5b3/8+C1//Tktv/35Lf/+eOz///ms///6LL//eSy///ntf//5bL//uay//nltv/55bb//OWz//7msv/+5bP//uay//7krv//6LL/+eaz//notf/857P/9uGu//7qwf/14r3/+OS7//bjuP/35bb/9+e4//bmuP/05Lb/+eS3///ouv//57H//+Ot//rmt//35Lf/+uK0//zjsf//57H//uev//zmsv/85bP//uS1//7ktf/75rP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls///5a///+ez//jhsf/+5bP//+aw///osP/95q7/++av//nltf/75bX//+aw///nr//85rL//Oay//7msv/+5bP//OW1//rjtf/65Lr/++a5//3mtv/75LL/++W1//3nt//446z//emw//7msP/95bH//+i2//zltf/84rP//+e1///otP/957P/+uWx///qtv/34K7//ue1//zls//647H//uWz//zjsf/75LT/++e3//jpuP/45rf//OG1//vgtP/647X/++e3//nltf/96LX//+ez//zhrv//5rT/+eKw//7msv/85rL/++W1//vltf/85bP//uWz//7ls//+5rL//uev//zor//35LH/+eaz//3psv/+6LT/+OCy//zjt//85bf/+eaz//vmsv/76rL/+Oe0//blsv/547P//OWz///nr//85K7/++e4//rkuv/84bX//+O0///osP/7567/++ay//zls//+5LX//uWz//vms//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//vltf/65LT//ea5//3lt///6LT/+uKs//3osf/66LP/+eW2//nltf/+5rD//uev//vmsv/75rL//+Wy///lsv//5bD//+Wv//rlsv/85rb//+a1///ntf/75rL/9eWw//3qt//857P/+uKs///nsf/75bX/+OS1///mt///5LL//eWx//zmsv//6rb/9OGu///puf/64rT//N+y///ouf//57P//Oix//rpsf/456//+uWu//7jsP//5LX//+W2//3mtP/65bH/9+Ku//3otf/65LT//Oa2//zmsv/957P/++az//vms//857D//Oew//zls//85bX//OW1//7ls///5rD//+ex//3lt//85bf/9OKt//7ptf//5bj//OK0//zntP/56LD/++ew//rmr//65q//++ay///mtP//57X//uaw//zmsv/55Lf/++W8///jt///5LX//uev//zorv/757D//OWz//7ktf/+5bP/+eaz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP/+eW2//jktf/747n//ea4//visP//67T/+uav//nnsv/35bb/+eW1//7msv/+56//++ay//vmsv//5bL//+Ww///krv//5q///Oew//vlsf//47L//+Sx//vmsv/157L/9uWy//bjsP//67P//uaw//fjtP/65bj//+a3//7jsf//5bL/++Wx//fir//757f/+OS1//zluP//5bj//+Kz//zmsv/56K//9+mv//nprv//6a///+ix///ltP//47L//eez//vnsP//6rP/+eSw//nltv/55bb//Oay//zmsv/75rP/++az//7nr//+56///OWz//vltf/85bX//uWz///msP//6LX/++C0//7nuv/76bT/++ew///jtv//5LX/+uWx//nor//86bD//Oiv//rmr//85rL//+W0///ltP//57H//ei0//bgtv/847v//+O6///ltv/95q7//emv//vnsP/85rL//uS1//7ls//55rP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHltVL96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP//OWz//zls//85bP/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVL8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeW1Uv3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP/cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm//cx5v/3Meb/9zHm/96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/eW1UvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5bVS/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP95bVS/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHptVa96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ptVa8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe21UcHpuVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/e21UcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4cFggem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP94cFggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6bVWvem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em1VrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHhwWCB5bVTvem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVO94cFggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHptVWB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em1VYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHptVWB6blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ptVWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHlwU1B5bVTvem5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ltVO95cFNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBwUBB6blSAem1T33puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3puVP96blT/em5U/3ptU996blSAgHBQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAenBVMHptVWB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHpuVIB6blSAem5UgHptVWB6cFUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
169 | "
170 | #endregion
171 |
172 | #region main_form
173 | $main_form = New-Object System.Windows.Forms.Form
174 | $main_form.Text = "Remote Shadow Administrator"
175 | $main_form.Icon = [System.Convert]::FromBase64String($Logo)
176 | $main_form.ShowIcon = $true
177 | $main_form.StartPosition = "CenterScreen"
178 | $main_form.Font = "$Font,$Size"
179 | $main_form.ForeColor = "Black"
180 | $main_form.FormBorderStyle = "FixedSingle"
181 | $main_form.Size = New-Object System.Drawing.Size(1250,860)
182 | $main_form.AutoSize = $true
183 | #endregion
184 |
185 | #region Get-Ping
186 | function Get-Ping {
187 | $ping = ping -n 1 -v 4 $srv
188 | if ($ping -match "TTL") {
189 | $global:ping_out = @("$srv - $Available")
190 | } else {
191 | $global:ping_out = @("$srv - $NotAvailable")
192 | }
193 | }
194 | #endregion
195 |
196 | #region Get-Query-1.2
197 | function Get-Query {
198 | <#
199 | .SYNOPSIS
200 | Module using query.exe for created object powershell
201 | Does not depend on the localization of the OS
202 | .DESCRIPTION
203 | Example:
204 | Get-Query localhost # default
205 | Get-Query 192.168.1.1
206 | Get-Query 192.168.1.1 -proc # all user process list (default -user *)
207 | Get-Query 192.168.1.1 -proc -user username
208 | .LINK
209 | https://github.com/Lifailon/Get-Query
210 | https://github.com/Lifailon/Remote-Shadow-Administrator
211 | #>
212 | Param (
213 | $srv="localhost",
214 | [switch]$proc,
215 | $user="*"
216 | )
217 | if (!($proc)) {
218 | $global:Users = New-Object System.Collections.Generic.List[System.Object]
219 | $query = query user /server:$srv
220 | if ($query -ne $null) {
221 | $usr = $query[1..100]
222 | $usr = $usr -replace "(^\s)|(^\>)"
223 | $usr = $usr -replace "\s{2,100}"," "
224 | $split1 = $usr -split "\n"
225 | foreach ($s in $split1) {
226 | $split2 = $s -split "\s"
227 | if ($split2.Count -eq 6) {
228 | if ($split2[2].Length -eq 4) {$status = "Disconnect"
229 | } elseif ($split2[2].Length -eq 6) {$status = "Active"
230 | } elseif ($split2[2].Length -eq 7) {$status = "Active"}
231 | $Users.Add([PSCustomObject]@{
232 | User = $split2[0]
233 | Session = $null
234 | ID = $split2[1]
235 | Status = $status
236 | IdleTime = $split2[3]
237 | LogonTime = $split2[4]+" "+$split2[5]
238 | })
239 | }
240 | if ($split2.Count -eq 7) {
241 | if ($split2[3].Length -eq 4) {$status = "Disconnect"
242 | } elseif ($split2[3].Length -eq 6) {$status = "Active"
243 | } elseif ($split2[3].Length -eq 7) {$status = "Active"}
244 | $Users.Add([PSCustomObject]@{
245 | User = $split2[0]
246 | Session = $split2[1]
247 | ID = $split2[2]
248 | Status = $status
249 | IdleTime = $split2[4]
250 | LogonTime = $split2[5]+" "+$split2[6]
251 | })
252 | }
253 | }
254 | $Users
255 | }
256 | }
257 | if ($proc) {
258 | $global:Users = New-Object System.Collections.Generic.List[System.Object]
259 | $query = query process $user /server:$srv
260 | if ($query -ne $null) {
261 | $usr = $query[1..5000]
262 | $usr = $usr -replace "(^\s)|(^\>)"
263 | $usr = $usr -replace "\s{2,100}"," "
264 | $split1 = $usr -split "\n"
265 | foreach ($s in $split1) {
266 | $split2 = $s -split "\s"
267 | if ($split2.Count -eq 6) {
268 | $split3 = @($split2[0])
269 | $split3 += $split2[2..5]
270 | $split2 = $split3
271 | }
272 | if ($split2[0] -match "\(") {
273 | $username = "unknown"
274 | } else {
275 | $username = $split2[0]
276 | }
277 | if ($split2.Count -eq 5) {
278 | $Users.Add([PSCustomObject]@{
279 | User = $username
280 | Session = $split2[1]
281 | ID = $split2[2]
282 | PID = $split2[3]
283 | Process = $split2[4]
284 | })
285 | }
286 | if ($split2.Count -eq 4) {
287 | $Users.Add([PSCustomObject]@{
288 | User = $username
289 | Session = $null
290 | ID = $split2[1]
291 | PID = $split2[2]
292 | Process = $split2[3]
293 | })
294 | }
295 | }
296 | $Users
297 | }
298 | }
299 | }
300 | #endregion
301 |
302 | #region Get-QueryStopProc
303 | function Get-QueryStopProc {
304 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu
305 | $ContextMenu_services.MenuItems.Add("$Text_Stop $Text_Process",{
306 | $RowIndex = @($dataGridView.SelectedCells.RowIndex)
307 | $Column_ID_Proc = 3
308 | $dgv_selected_id = $dataGridView.Rows[$RowIndex].Cells[$Column_ID_Proc].FormattedValue
309 | if ($srv -like "localhost") {
310 | Stop-Process -Id $dgv_selected_id -Force
311 | sleep 1
312 | Get-Query $srv -proc -user $Table_UserGlobal
313 | Add-TableProc
314 | } else {
315 | $session = New-PSSession $srv
316 | icm -Session $session {Stop-Process -Id $using:dgv_selected_id -Force}
317 | Remove-PSSession $session
318 | sleep 1
319 | Get-Query $srv -proc -user $Table_UserGlobal
320 | Add-TableProc
321 | }
322 | })
323 | $main_form.ContextMenu = $ContextMenu_services
324 |
325 | }
326 | #endregion
327 |
328 | #region Get-UserProcess
329 | function Get-UserProcess {
330 | Param (
331 | [switch]$ogv
332 | )
333 | if ($srv -like "localhost") {
334 | $global:ps_out = ps | Sort-Object -Descending CPU | select ProcessName,Product,ProductVersion,
335 | @{Name="Processor Time sec"; Expression={[int]$_.CPU}},
336 | @{Name="Processor Time min"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}},
337 | @{Name="Memory WS"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}},
338 | @{Name="Memory PM"; Expression={[string]([int]($_.PM / 1024kb))+"MB"}},
339 | @{Name="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}},
340 | Path
341 | if ($ogv) {
342 | $ps_out_ogv = $ps_out | Out-GridView -Title "$dgvQueryUser $Text_Process $Text_ToServer $srv" -PassThru
343 | if ($ps_out_ogv) {
344 | $ps_out_ogv | Stop-Process -Force
345 | }
346 | }
347 | } else {
348 | $global:ps_out = icm $srv {ps -IncludeUserName} | Sort-Object -Descending CPU | select ProcessName,Product,
349 | ProductVersion,UserName,
350 | @{Name="Processor Time sec"; Expression={[int]$_.CPU}},
351 | @{Name="Processor Time min"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}},
352 | @{Name="Memory WS"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}},
353 | @{Name="Memory PM"; Expression={[string]([int]($_.PM / 1024kb))+"MB"}},
354 | @{Name="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}},
355 | Path
356 | if ($ogv) {
357 | $ps_out_ogv = $ps_out | Out-GridView -Title "$dgvQueryUser $Text_Process $Text_ToServer $srv" -PassThru
358 | if ($ps_out_ogv) {
359 | $session = New-PSSession $srv
360 | icm -Session $session {Stop-Process -Name $using:ps_out_ogv.ProcessName -Force}
361 | Remove-PSSession $session
362 | }
363 | }
364 | }
365 | }
366 |
367 | function Get-UserProcess-DGV {
368 | $DataGridView.DataSource = $null
369 | $DataGridView.Rows.Clear()
370 | $DataGridView.ColumnCount = 6
371 | $DataGridView.Columns[0].Name = "Process Name"
372 | $DataGridView.Columns[1].Name = "User Name"
373 | $DataGridView.Columns[2].Name = "Processor Time min"
374 | $DataGridView.Columns[3].Name = "Memory WS"
375 | $DataGridView.Columns[4].Name = "Memory PM"
376 | $DataGridView.Columns[5].Name = "RunTime"
377 | $Service_dgv = foreach ($fps in $ps_out) {
378 | $DataGridView.Rows.Add(
379 | $fps.ProcessName,
380 | $fps.UserName,
381 | $fps."Processor Time min",
382 | $fps."Memory WS",
383 | $fps."Memory PM",
384 | $fps.RunTime
385 | )
386 | }
387 | $Count = $ps_out.Count
388 | $Status.Text = "$Count $Text_Processes $Text_ToServer $srv"
389 |
390 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu
391 | $ContextMenu_services.MenuItems.Add("$Text_Stop $Text_Process",{
392 | $RowIndex = @($dataGridView.SelectedCells.RowIndex)
393 | $Column_ID_Process = 0
394 | $global:dgv_selected_services = $dataGridView.Rows[$RowIndex].Cells[$Column_ID_Process].FormattedValue
395 | if ($srv -like "localhost") {
396 | $ps_out | ? ProcessName -like $dgv_selected_services | Stop-Process -Force
397 | sleep 1
398 | proc-click
399 | } else {
400 | $ps_kill = $ps_out | ? ProcessName -like $dgv_selected_services
401 | $session = New-PSSession $srv
402 | icm -Session $session {Stop-Process -Name $using:ps_kill.ProcessName -Force}
403 | Remove-PSSession $session
404 | sleep 1
405 | proc-click
406 | }
407 | })
408 | $main_form.ContextMenu = $ContextMenu_services
409 | }
410 |
411 | function Get-ProcSearch {
412 | $SearchTextBox.Add_TextChanged({
413 | $search_text = $SearchTextBox.Text
414 | $global:ps_out = @($ProcSearch | Where {
415 | $_.ProcessName -match "$search_text"
416 | })
417 | Get-UserProcess-DGV
418 | })
419 | }
420 |
421 | function proc-click {
422 | Get-UserProcess # get current list
423 | $global:ProcSearch = $ps_out # save for further search
424 | Get-UserProcess-DGV # fill out table
425 | Get-ProcSearch # add search
426 | }
427 | #endregion
428 |
429 | #region Creat-and-Add-Table
430 | function Creat-Table {
431 | $DataGridView.DataSource = $null
432 | $DataGridView.Rows.Clear()
433 | $DataGridView.ColumnCount = 6
434 | $DataGridView.Columns[0].Name = $dgvQueryUser
435 | $DataGridView.Columns[1].Name = $dgvQuerySession
436 | $DataGridView.Columns[2].Name = "ID"
437 | $DataGridView.Columns[3].Name = $dgvQueryStatus
438 | $DataGridView.Columns[4].Name = $dgvQueryIdleTime
439 | $DataGridView.Columns[5].Name = $dgvQueryLogonTime
440 | }
441 |
442 | function Add-TableUser {
443 | Creat-Table
444 |
445 | $Service_dgv = foreach ($fuser in $Users) {
446 | $DataGridView.Rows.Add(
447 | $fuser.User,
448 | $fuser.Session,
449 | $fuser.ID,
450 | $fuser.Status,
451 | $fuser.IdleTime,
452 | $fuser.LogonTime
453 | )
454 |
455 | if ($fuser.Status -like "Active") {
456 | $DataGridView.Rows[-2].Cells[3].Style.BackColor = "lightgreen"
457 | } elseif ($fuser.Status -like "Disconnect") {
458 | $DataGridView.Rows[-2].Cells[3].Style.BackColor = "pink"
459 | }
460 | }
461 | }
462 |
463 | function Add-TableProc {
464 | $DataGridView.DataSource = $null
465 | $DataGridView.Rows.Clear()
466 | $DataGridView.ColumnCount = 5
467 | $DataGridView.Columns[0].Name = $dgvQueryUser
468 | $DataGridView.Columns[1].Name = $dgvQuerySession
469 | $DataGridView.Columns[2].Name = "ID"
470 | $DataGridView.Columns[3].Name = "PID"
471 | $DataGridView.Columns[4].Name = $Text_Process
472 |
473 | $Service_dgv = foreach ($fuser in $Users) {
474 | $DataGridView.Rows.Add(
475 | $fuser.User,
476 | $fuser.Session,
477 | $fuser.ID,
478 | $fuser.PID,
479 | $fuser.Process
480 | )
481 | }
482 | $UsersProcCount = $Users.Count
483 | $Status.Text = "$UsersProcCount $Text_Processes"
484 | }
485 | #endregion
486 |
487 | #region Get-Uptime
488 | function Get-Uptime {
489 | if ($srv -like "localhost") {
490 | $boottime = Get-CimInstance Win32_OperatingSystem | select LastBootUpTime
491 | } else {
492 | $boottime = Get-CimInstance -ComputerName $srv Win32_OperatingSystem | select LastBootUpTime
493 | }
494 | $datetime = (Get-Date) - $boottime.LastBootUpTime
495 | $global:uptime = [string]$datetime.Days+" $Days "+[string]$datetime.Hours+" $Hours "+
496 | [string]$datetime.Minutes+" $Minutes | $LastBoot "+[string]$boottime.LastBootUpTime.DateTime
497 | }
498 | #endregion
499 |
500 | #region Button-Query
501 | $Column_ID = 2 # for all clicked to query
502 | $Column_User = 0
503 |
504 | function fun-main {
505 | Get-Ping
506 | $Status.Text = "$ping_out"
507 | if ("$ping_out" -ne "$srv - $NotAvailable") {
508 | Get-Query $srv
509 | if ($Users -ne $null) {
510 | Add-TableUser
511 | } else {
512 | $Status.Text += " | $NoUsers"
513 | }
514 | Get-Uptime
515 | } else {
516 | $uptime = $null
517 | }
518 | if ($uptime.Length -gt 1) {
519 | $Status.Text += " | $UpTimeText $uptime"
520 | } else {
521 | $Status.Text += " | WinRM $NotAvailable"
522 | }
523 | }
524 | #endregion
525 |
526 | #region functions-Srv-List
527 | function list-update {
528 | $ListBox.Items.Clear()
529 | $global:srv_list = Get-Content $conf
530 | foreach ($tmp in $srv_list) {$ListBox.Items.Add($tmp)}
531 | }
532 |
533 | function list-domain {
534 | $Status.Text = "$Text_Connect $Text_To domain: $domain"
535 | $domain_comp = Get-ADComputer -Filter * -Properties *
536 | $global:srv_list = $domain_comp.Name
537 | $ListBox.Items.Clear()
538 | foreach ($tmp in $srv_list) {$ListBox.Items.Add($tmp)}
539 | }
540 |
541 | function table-domain {
542 | $comp_table = Get-ADComputer -Filter * -Properties * | select @{Label="Status"; Expression={
543 | if ($_.Enabled -eq "True") {$_.Enabled -replace "True","Active"} else {$_.Enabled -replace "False","Blocked"}
544 | }}, @{Label="Name"; Expression={$_.Name}}, @{Label="IP"; Expression={$_.IPv4Address}},
545 | @{Label="OS"; Expression={$_.OperatingSystem}}, @{Label="User";Expression={$_.ManagedBy -replace "(CN=|,.+)"}},
546 | @{Label="CreatDate"; Expression={$_.Created}} | sort -Descending "CreatDate" | Out-GridView -Title "domain: $domain" –PassThru
547 | if ($comp_table -ne $null) {
548 | $global:srv = $comp_table.Name
549 | fun-main
550 | }
551 | $comp_table = $null
552 | }
553 | #endregion
554 |
555 | #region Get-Broker
556 | function Get-Broker {
557 | Param (
558 | [switch]$r,
559 | [switch]$d,
560 | [switch]$c,
561 | [switch]$h
562 | )
563 | $Status.Text = "Select server with full domain name and with the role RDCB"
564 | $broker = $srv
565 | if ($broker) {
566 | if ($c) {
567 | $Coll = Get-RDRemoteDesktop -ConnectionBroker $broker | Out-GridView -title "Connection to $broker" -PassThru
568 | $CollName = $Coll.CollectionName
569 | }
570 | if ($CollName) {
571 | Get-RDAvailableApp -ConnectionBroker $broker -CollectionName $CollName | Out-GridView -title "Software to $CollName"
572 | }
573 | if ($h) {
574 | Get-RDServer -ConnectionBroker $broker | Out-GridView -title "Connection to $broker"
575 | }
576 | if (($r) -or ($d)) {
577 | $RDCB_out = Get-RDUserSession -ConnectionBroker $broker | select hostserver, UserName, SessionState, CreateTime, DisconnectTime,
578 | unifiedsessionid | Out-GridView -title "Connection to $broker" -PassThru | select hostserver, unifiedsessionid
579 | }
580 | if ($RDCB_out) {
581 | $RDCB_srv = $RDCB_out.HostServer
582 | $RDCB_id = $RDCB_out.UnifiedSessionId
583 | if ($r) {
584 | mstsc /v:"$RDCB_srv" /shadow:"$RDCB_id" /control # /noconsentprompt
585 | }
586 | if ($d) {
587 | Disconnect-RDUser -HostServer $RDCB_srv -UnifiedSessionID $RDCB_id -force
588 | }
589 | }
590 | }
591 | }
592 | #endregion
593 |
594 | #region Get-Soft
595 | function Get-Soft {
596 | Param (
597 | [switch]$wmi,
598 | [switch]$package
599 | )
600 | if ($wmi) {
601 | $soft_wmi = gwmi Win32_Product -ComputerName $srv | select Name,Version,Vendor,
602 | InstallDate,InstallLocation,InstallSource | sort -Descending InstallDate |
603 | Out-Gridview -Title "Software to server $srv" -PassThru
604 | $soft_wmi_uninstall = $soft_wmi.Name
605 | if ($soft_wmi_uninstall -ne $null) {
606 | $wshell = New-Object -ComObject Wscript.Shell
607 | $output = $wshell.Popup("Delete $soft_wmi_uninstall to server $srv ?",0,"Select action",4)
608 | }
609 | if ($output -eq "6") {
610 | $uninstall = (gwmi Win32_Product -ComputerName $srv -Filter "Name = '$soft_wmi_uninstall'").Uninstall()
611 | $outcode = $uninstall.ReturnValue
612 | $output = $wshell.Popup("$Text_Result - $outcode (0 - $Text_Completed)",0,"$srv",64)
613 | }
614 | }
615 | if ($package) {
616 | if ($srv -like "localhost") {
617 | $soft_pack = Get-Package -ProviderName msi,Programs | Out-Gridview -Title "Software to server $srv" -PassThru
618 | } else {
619 | $soft_pack = icm $srv {Get-Package} | ? ProviderName -match "(Programs)|(msi)" | Out-Gridview -Title "Software to server $srv" -PassThru
620 | }
621 | if ($soft_pack -ne $null) {
622 | $soft_name = $soft_pack.Name
623 | $wshell = New-Object -ComObject Wscript.Shell
624 | $output = $wshell.Popup("Delete $soft_name to server $srv ?",0,"Select action",4)
625 | }
626 | if ($output -eq "6") {
627 | if ($srv -like "localhost") {
628 | Get-Package -Name "$soft_name" | Uninstall-Package -Force -ForceBootstrap
629 | } else {
630 | $session = New-PSSession $srv
631 | icm -Session $session {
632 | Get-Package -Name "$using:soft_name" | Uninstall-Package -Force -ForceBootstrap
633 | }
634 | Remove-PSSession $session
635 | }
636 | }
637 | }
638 | }
639 | #endregion
640 |
641 | #region Get-Netstat
642 | function Get-Netstat {
643 | if ($srv -like "localhost") {
644 | Get-NetTCPConnection -State Established,Listen | sort -Descending State | select CreationTime,LocalAddress,LocalPort,RemotePort,
645 | @{name="RemoteHostName";expression={((nslookup $_.RemoteAddress)[3]) -replace ".+:\s+"}},RemoteAddress,
646 | State,@{name="ProcessName";expression={(ps -Id $_.OwningProcess).ProcessName}},
647 | @{name="ProcessPath";expression={(ps -Id $_.OwningProcess).Path}} | Out-GridView -Title "Local netstat"
648 | }
649 | else {
650 | icm $srv {Get-NetTCPConnection -State Established,Listen | sort -Descending State | select CreationTime,LocalAddress,LocalPort,
651 | RemotePort,RemoteAddress,
652 | State,@{name="ProcessName";expression={(ps -Id $_.OwningProcess).ProcessName}},
653 | @{name="ProcessPath";expression={(ps -Id $_.OwningProcess).Path}}} | select CreationTime,LocalAddress,LocalPort,RemotePort,
654 | @{name="RemoteHostName";expression={((nslookup $_.RemoteAddress)[3]) -replace ".+:\s+"}},
655 | RemoteAddress,State,ProcessName,ProcessPath | Out-GridView -Title "Remote netstat to server: $srv"
656 | }
657 | }
658 | #endregion
659 |
660 | #region Get-RemoteDNS
661 | function Get-RemoteDNS {
662 | $zone = icm $srv {Get-DnsServerZone} | select ZoneName,ZoneType,DynamicUpdate,ReplicationScope,SecureSecondaries,
663 | DirectoryPartitionName | Out-GridView -Title "DNS Server: $srv" –PassThru
664 | $zone_name = $zone.ZoneName
665 | if ($zone_name -ne $null) {
666 | $A = icm $srv {
667 | Get-DnsServerResourceRecord -ZoneName $using:zone_name | sort RecordType | select RecordType,HostName, @{
668 | Label="IPAddress"; Expression={$_.RecordData.IPv4Address.IPAddressToString}},TimeToLive,Timestamp
669 | } | select RecordType,HostName,IPAddress,TimeToLive,Timestamp | Out-GridView -Title "DNS Server: $srv | Zone: $zone_name" –PassThru
670 | }
671 | if ($A -ne $null) {
672 | $RT = $A.RecordType
673 | $HN = $A.HostName
674 | $wshell = New-Object -ComObject Wscript.Shell
675 | $output = $wshell.Popup("Romove record $HN (type: $RT)",0,"Select",4)
676 | if ($output -eq 6) {
677 | icm $srv {
678 | Remove-DnsServerResourceRecord -ZoneName $using:zone_name -RRType $using:RT -Name $using:HN –Force
679 | }
680 | }
681 | }
682 | }
683 | #endregion
684 |
685 | #region functions-Admin
686 | function comp-manager {
687 | compmgmt.msc /computer=\\$srv
688 | }
689 |
690 | function services-view-ogv {
691 | $Service = Get-Service -computername "$srv" | Out-GridView -Title "$Text_Services $Text_ToServer $srv" –PassThru
692 | $Service_out = $Service.Name
693 | if ($Service_out -ne $null) {
694 | $wshell = New-Object -ComObject Wscript.Shell
695 | $output = $wshell.Popup("$Text_Restart $Text_Service - $Service_out $Text_ToServer $srv ?",0,"$Text_SelectAction",2)
696 | if ($output -eq "4") {Get-Service -computername $srv | Where {$_.Name -Like $Service_out} | Restart-Service}
697 | if ($output -eq "3") {Get-Service -computername $srv | Where {$_.Name -Like $Service_out} | Stop-Service}
698 | $status_services = Get-Service -computername $srv | Where {$_.Name -Like $Service_out}
699 | $status_services = $status_services.Status
700 | $output = $wshell.Popup("$Service_out - $status_services",0,"$srv",64)
701 | $Service_out = $null
702 | }
703 | }
704 |
705 | function services-view {
706 | $DataGridView.DataSource = $null
707 | $DataGridView.Rows.Clear()
708 | $DataGridView.ColumnCount = 3
709 | $DataGridView.Columns[0].Name = "Status"
710 | $DataGridView.Columns[1].Name = "Name"
711 | $DataGridView.Columns[2].Name = "Display Name"
712 | $Service_dgv = foreach ($gs in $Service) {
713 | $DataGridView.Rows.Add(
714 | $gs.Status,
715 | $gs.Name,
716 | $gs.DisplayName
717 | )
718 | }
719 | $DataGridView.Rows | ForEach-Object {
720 | if ($_.Cells["Status"].Value -eq "Running") {
721 | $_.Cells[0] | %{$_.Style.BackColor = "lightgreen"}
722 | } elseif ($_.Cells["Status"].Value -eq "Stopped") {
723 | $_.Cells[0] | %{$_.Style.BackColor = "pink"}
724 | }}
725 | $Count = $Service.Count
726 | $Status.Text = "$Count $Text_Services $Text_ToServer $srv"
727 |
728 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu
729 | $ContextMenu_services.MenuItems.Add("$Text_Restart $Text_Service",{
730 | $RowIndex = @($dataGridView.SelectedCells.RowIndex)
731 | $Column_ID_Service = 1
732 | $global:dgv_selected_services = $dataGridView.Rows[$RowIndex].Cells[$Column_ID_Service].FormattedValue
733 | services-restart
734 | })
735 | $ContextMenu_services.MenuItems.Add("$Text_Stop $Text_Service",{
736 | $RowIndex = @($dataGridView.SelectedCells.RowIndex)
737 | $Column_ID_Service = 1
738 | $global:dgv_selected_services = $dataGridView.Rows[$RowIndex].Cells[$Column_ID_Service].FormattedValue
739 | services-stop
740 | })
741 | $main_form.ContextMenu = $ContextMenu_services
742 | }
743 |
744 | function services-restart {
745 | $wshell = New-Object -ComObject Wscript.Shell
746 | $output = $wshell.Popup("$Text_Restart $Text_Service - $dgv_selected_services $Text_ToServer $srv ?",0,"$Text_SelectAction",4)
747 | if ($output -eq "6") {Get-Service -computername $srv | Where {$_.Name -Like $dgv_selected_services} | Restart-Service}
748 | $global:Service = Get-Service -computername "$srv" | Sort Name
749 | [string]$status_services = ($Service | Where {$_.Name -Like $dgv_selected_services}).Status
750 | $Status.Text = "$dgv_selected_services - $status_services"
751 | $dgv_selected_services = $null
752 |
753 | $global:Service = Get-Service -computername $srv | Sort Name
754 | $global:Service_search = $Service
755 | services-view
756 | services-search
757 | }
758 |
759 | function services-stop {
760 | $wshell = New-Object -ComObject Wscript.Shell
761 | $output = $wshell.Popup("$Text_Stop $Text_Services $dgv_selected_services $Text_ToServer $srv ?",0,"$Text_SelectAction",4)
762 | if ($output -eq "6") {Get-Service -computername $srv | Where {$_.Name -Like $dgv_selected_services} | Stop-Service}
763 | $global:Service = Get-Service -computername "$srv" | Sort Name
764 | [string]$status_services = ($Service | Where {$_.Name -Like $dgv_selected_services}).Status
765 | $Status.Text = "$dgv_selected_services - $status_services"
766 | $dgv_selected_services = $null
767 |
768 | $global:Service = Get-Service -computername $srv | Sort Name
769 | $global:Service_search = $Service
770 | services-view
771 | services-search
772 | }
773 |
774 | function services-search {
775 | $SearchTextBox.Add_TextChanged({
776 | $search_text = $SearchTextBox.Text
777 | $global:Service = @($Service_search | Where {
778 | $_.Name -match "$search_text"
779 | })
780 | services-view
781 | })
782 | }
783 |
784 | ### Out Get-Package to DGV
785 | #function view-soft {
786 | #$software = icm $srv {Get-Package -ProviderName msi}
787 | #$DataGridView.DataSource = $null
788 | #$DataGridView.Rows.Clear()
789 | #$DataGridView.ColumnCount = 3
790 | #$DataGridView.Columns[0].Name = "Name"
791 | #$DataGridView.Columns[1].Name = "Version"
792 | #$DataGridView.Columns[2].Name = "Source"
793 | #$Service_dgv = foreach ($gpack in $software) {
794 | #$DataGridView.Rows.Add(
795 | #$gpack.Name,
796 | #$gpack.Version,
797 | #$gpack.Source
798 | #)
799 | #}
800 | #
801 | ### Delete Software
802 | #$ContextMenu_services = New-Object System.Windows.Forms.ContextMenu
803 | #$ContextMenu_services.MenuItems.Add("$Text_Delete $Text_Software",{
804 | #$global:dgv_selected_soft = $DataGridView.SelectedCells.Value
805 | #$wshell = New-Object -ComObject Wscript.Shell
806 | #$output = $wshell.Popup("$Text_Delete $dgv_selected_soft $Text_ToServer $srv ?",0,"$Text_SelectAction",4)
807 | #if ($output -eq "6") {
808 | #remove-soft
809 | #}
810 | #})
811 | #$main_form.ContextMenu = $ContextMenu_services
812 | #}
813 | #
814 | #function remove-soft {
815 | #$Status.Text = "$Text_Delete...10%"; sleep 1
816 | #$session = New-PSSession $srv
817 | #$Status.Text = "$Text_Delete...20%"; sleep 1
818 | #icm -Session $session {$dgv_selected_soft = $using:dgv_selected_soft}
819 | #$Status.Text = "$Text_Delete...30%"; sleep 1
820 | #icm -Session $session {if ($dgv_selected_soft -ne $null) {
821 | #Get-Package -Name "$dgv_selected_soft" | Uninstall-Package}
822 | #}
823 | #$Status.Text = "$Text_Delete...50%"; sleep 1
824 | #icm -Session $session {$dgv_selected_soft = $null}
825 | #$Status.Text = "$Text_Delete...70%"; sleep 1
826 | #Disconnect-PSSession $session
827 | #$Status.Text = "$Text_Delete...80%"; sleep 1
828 | #Remove-PSSession $session
829 | #$Status.Text = "$Text_Delete...90%"; sleep 1
830 | #$dgv_selected_soft = $null
831 | #$Status.Text = "$Text_Delete...100%"; sleep 1
832 | #$Status.Text = "$Text_Delete...100% - $Text_Completed"; sleep 1
833 | #view-soft
834 | #}
835 |
836 | function Get-DISM {
837 | if ($srv -like "localhost") {
838 | $dismName = dism /Online /Get-Packages /format:table |
839 | Out-Gridview -Title "DISM $Text_Packages $Text_ToServer $srv" –PassThru
840 | if ($dismName -ne $null) {
841 | $dismNamePars = $dismName -replace "\|.+"
842 | $dismNamePars = $dismNamePars -replace "\s"
843 | $wshell = New-Object -ComObject Wscript.Shell
844 | $output = $wshell.Popup("Delete Update $dismNamePars to server $srv ?",0,"Select action",4)
845 | if ($output -eq "6") {
846 | dism /Online /Remove-Package /PackageName:$dismNamePars /quiet /norestart
847 | }
848 | }
849 | } else {
850 | $session = New-PSSession $srv
851 | $dismName = icm -Session $session {dism /Online /Get-Packages /format:table} |
852 | Out-Gridview -Title "DISM $Text_Packages $Text_ToServer $srv" –PassThru
853 | if ($dismName -ne $null) {
854 | $dismNamePars = $dismName -replace "\|.+"
855 | $dismNamePars = $dismNamePars -replace "\s"
856 | $wshell = New-Object -ComObject Wscript.Shell
857 | $output = $wshell.Popup("Delete Update $dismNamePars to server $srv ?",0,"Select action",4)
858 | if ($output -eq "6") {
859 | icm -Session $session {$dismNamePars = $using:dismNamePars}
860 | icm -Session $session {dism /Online /Remove-Package /PackageName:$dismNamePars /quiet /norestart}
861 | Remove-PSSession $session
862 | }
863 | }
864 | }
865 | wmi-upd
866 | }
867 |
868 | function SMB-files-ogv {
869 | $session = New-CIMSession –Computername $srv
870 | Get-SmbOpenFile -CIMSession $session | select ClientUserName,ClientComputerName,Path,SessionID |
871 | Out-GridView -PassThru –title "$Text_Open $Text_File $Text_ToServer $srv" |
872 | Close-SmbOpenFile -CIMSession $session -Confirm:$false –Force
873 | }
874 |
875 | function SMB-files {
876 | $session = New-CIMSession –Computername $srv
877 | $open_smb = Get-SmbOpenFile -CIMSession $session
878 |
879 | $DataGridView.DataSource = $null
880 | $DataGridView.Rows.Clear()
881 | $DataGridView.ColumnCount = 4
882 | $DataGridView.Columns[0].Name = "User Name"
883 | $DataGridView.Columns[1].Name = "Client Computer Name"
884 | $DataGridView.Columns[2].Name = "Path"
885 | $DataGridView.Columns[3].Name = "File ID"
886 | $Service_dgv = foreach ($smbf in $open_smb) {
887 | $DataGridView.Rows.Add(
888 | $smbf.ClientUserName,
889 | $smbf.ClientComputerName,
890 | $smbf.Path,
891 | $smbf.FileId
892 | )
893 | }
894 |
895 | $OpenFilesCount = $open_smb.Count
896 | $Status.Text = "$OpenFilesCount $Text_Open $Text_Files"
897 |
898 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu
899 | $ContextMenu_services.MenuItems.Add("$Text_Close $Text_File",{
900 | $Column_ID_File = 3
901 | $RowIndex = @($dataGridView.SelectedCells.RowIndex)
902 | $ID_File_Value = $dataGridView.Rows[$RowIndex].Cells[$Column_ID_File].FormattedValue
903 |
904 | $session = New-CIMSession –Computername $srv
905 | Close-SmbOpenFile -CIMSession $session -FileId $ID_File_Value -Confirm:$false –Force
906 | SMB-files
907 | Remove-CimSession $session
908 | })
909 | $main_form.ContextMenu = $ContextMenu_services
910 | }
911 |
912 | function gp-upd {
913 | $gpupdate_result = Invoke-Command -ComputerName $srv -ScriptBlock {
914 | gpupdate /force
915 | }
916 | if ($gpupdate_result -match "successfully") {
917 | $Status.Text = "Group policy successfully to server $srv"
918 | } else {
919 | $Status.Text = "Error applyed group policy to server $srv"
920 | }
921 | }
922 |
923 | function gp-res {
924 | $usr = Read-Host "Enter user name:"
925 | $path = "C:\Users\$env:UserName\desktop\GPResult-$srv-$usr.html"
926 | GPRESULT /S $srv /user $usr /H $path
927 | ii $path
928 | }
929 | #endregion
930 |
931 | #region functions-Power
932 | function power-reboot {
933 | shutdown /r /f /t 60 /m \\$srv /c "$Text_Scheduled $Text_Restart $Text_inSeconds"
934 |
935 | if ($lastexitcode -eq 0) {
936 | $Status.Text = "$Text_Successfully $Text_Scheduled $Text_Restart $Text_ToServer $srv"
937 | }
938 | if (($lastexitcode -ne 0) -and ($lastexitcode -eq 1190)) {
939 | $Status.Text = "$Text_Restart $Text_AlReady $Text_Scheduled"
940 | }
941 | if (($lastexitcode -ne 0) -and ($lastexitcode -ne 1190)) {
942 | $Status.Text = "$Text_Error $Text_Restart"
943 | }
944 | }
945 |
946 | function power-off {
947 | shutdown /s /f /t 60 /m \\$srv
948 |
949 | if ($lastexitcode -eq 0) {
950 | $Status.Text = "$Text_Successfully $Text_Scheduled $Text_PowerOff $Text_ToServer $srv"
951 | } else {
952 | $Status.Text = "$Text_Error $Text_PowerOff"
953 | }
954 | }
955 |
956 | function power-cancel {
957 | shutdown /a /m \\$srv
958 |
959 | if ($lastexitcode -eq 0) {
960 | $Status.Text = "$Text_Cacel $Text_Restart $Text_ToServer $srv"
961 | }
962 | if (($lastexitcode -ne 0) -and ($lastexitcode -eq 1116)) {
963 | $Status.Text = "$Text_Restart $Text_AlReady $Text_Cacel"
964 | }
965 | if (($lastexitcode -ne 0) -and ($lastexitcode -ne 1116)) {
966 | $Status.Text = "$Text_Error $Text_Cacel"
967 | }
968 | }
969 |
970 | function power-monitor {
971 | $wshell = New-Object -ComObject Wscript.Shell
972 | $output = $wshell.Popup("Disable screen lock, click yes
973 | Change time screen lock, click no",0,"$Text_SelectAction",3)
974 | if ($output -eq "6") {$timeout = "0"}
975 | if ($output -eq "7") {$timeout = Read-Host "Enter time to minutes"}
976 | if (($output -eq "6") -or ($output -eq "7")) {
977 | $session = New-PSSession $srv
978 | icm -Session $session {$timeout = $using:timeout}
979 | icm -Session $session {powercfg -change -monitor-timeout-ac $timeout}
980 | icm -Session $session {powercfg -change -monitor-timeout-dc $timeout}
981 | Remove-PSSession $session
982 | }
983 | }
984 |
985 | function power-standby {
986 | $wshell = New-Object -ComObject Wscript.Shell
987 | $output = $wshell.Popup("Disable sleep mode, click yes
988 | Change time sleep mode, click no",0,"$Text_SelectAction",3)
989 | if ($output -eq "6") {$timeout = "0"}
990 | if ($output -eq "7") {$timeout = Read-Host "Enter time to minutes"}
991 | if (($output -eq "6") -or ($output -eq "7")) {
992 | $session = New-PSSession $srv
993 | icm -Session $session {$timeout = $using:timeout}
994 | icm -Session $session {powercfg -x -standby-timeout-ac $timeout}
995 | icm -Session $session {powercfg -x -standby-timeout-dc $timeout}
996 | Remove-PSSession $session
997 | }
998 | }
999 |
1000 | function power-wol {
1001 | [string]$mac_out = $outputBox_message.text
1002 | $wshell = New-Object -ComObject Wscript.Shell
1003 | $output = $wshell.Popup("MAC: $mac_out ?",0,"$Text_PowerOn",4)
1004 | if ($output -eq "6") {
1005 | $global:mac = $mac_out;
1006 | wol-pack
1007 | }}
1008 |
1009 | function wol-pack {
1010 | $BroadcastProxy=[System.Net.IPAddress]::Broadcast
1011 | $Ports = 0,7,9
1012 |
1013 | $synchronization = [byte[]](,0xFF * 6)
1014 | $bmac = $mac -Split '-' | ForEach-Object { [byte]('0x' + $_) }
1015 | $packet = $synchronization + $bmac * 16
1016 |
1017 | $UdpClient = New-Object System.Net.Sockets.UdpClient
1018 | ForEach ($port in $Ports) {$UdpClient.Connect($BroadcastProxy, $port)
1019 | $UdpClient.Send($packet, $packet.Length) | Out-Null}
1020 | $UdpClient.Close()
1021 | $Status.Text = "WOL package sent"
1022 | }
1023 |
1024 | function Get-DHCP {
1025 | $mac = Invoke-Command -ComputerName $srv -ScriptBlock {Get-DhcpServerv4Scope | Get-DhcpServerv4Lease} |
1026 | select AddressState,HostName,IPAddress,ClientId,DnsRegistration,DnsRR,ScopeId,ServerIP |
1027 | Out-GridView -Title "HDCP Server: $srv" –PassThru
1028 | $mac = $mac.ClientId
1029 | $outputBox_message.ForeColor = [System.Drawing.SystemColors]::WindowText
1030 | $outputBox_message.text = $mac
1031 | }
1032 | #endregion
1033 |
1034 | #region Get-ARP
1035 | function Get-ARP {
1036 | Param (
1037 | $proxy = $srv
1038 | )
1039 | #$search = Read-Host "Enter hostname or ip-address for search MAC-Address on server $srv"
1040 | if ($proxy -like "localhost") {
1041 | $arp = arp -a
1042 | } else {
1043 | $arp = icm $proxy {arp -a}
1044 | }
1045 | $mac = $arp[3..260]
1046 | $mac = $mac -replace "^\s\s"
1047 | $mac = $mac -replace "\s{1,50}"," "
1048 | $mac_coll = New-Object System.Collections.Generic.List[System.Object]
1049 | foreach ($m in $mac) {
1050 | $smac = $m -split " "
1051 | $mac_coll.Add([PSCustomObject]@{
1052 | IP = $smac[0];
1053 | MAC = $smac[1];
1054 | Type = $smac[2]
1055 | })
1056 | }
1057 | #if ($search) {
1058 | #if ($search -NotMatch "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}") {
1059 | ##$ns = nslookup $search
1060 | ##$ns = $ns[-2]
1061 | ##$global:ns = $ns -replace "Address:\s{1,10}"
1062 | #$rdns = Resolve-DnsName $search -ErrorAction Ignore
1063 | #$ns = $rdns.IPAddress
1064 | #if ($ns -eq $null) {
1065 | #return
1066 | #}
1067 | #} else {
1068 | #$ns = $search
1069 | #}
1070 | #$mac_coll = $mac_coll | ? ip -Match $ns
1071 | #}
1072 | $mac_coll
1073 | }
1074 | #endregion
1075 |
1076 | #region Get-EventTS
1077 | #function event-sys {
1078 | #Get-EventLog -ComputerName $srv -LogName System -Newest 100 -EntryType Error,Warning |
1079 | #select TimeWritten,EventID,EntryType,Source,Message |
1080 | #Out-Gridview -Title "$Text_Event System $srv"
1081 | #}
1082 | #
1083 | #function event-app {
1084 | #Get-EventLog -ComputerName $srv -LogName Application -Newest 100 -EntryType Error,Warning |
1085 | #select TimeWritten,EventID,EntryType,Source,Message |
1086 | #Out-Gridview -Title "$Text_Event Application $srv"
1087 | #}
1088 | ###
1089 | # -LogName Security
1090 | # EventID:
1091 | # 4624 - An account was successfully logged on
1092 | # 4625 - An account failed to log on (LogonType: 10/3 — RDP service, 7 Reconnect Session, 5 – mstsc.exe /admin)
1093 | # 4634 - An account was logged off
1094 | # 4647 - User initiated logoff
1095 | # 4778 - A session was reconnected to a Window Station
1096 | # 4779 - A session was disconnected from a Window Station
1097 | # TS-LSM:
1098 | # 39 - Session has been disconnected by session
1099 | # 39 - Session has been disconnected, reason code
1100 | # reason code 0 - No additional information is available
1101 | # reason code 5 - The client connection was replaced by another connection
1102 | # reason code 11 - User activity has initiated the disconnect
1103 | ###
1104 |
1105 | function event-power {
1106 | Get-WinEvent -ComputerName $srv -FilterHashtable @{logname='System';id=1074} | select TimeCreated,Message |
1107 | Out-Gridview -Title "$Text_Event $Text_Power $srv"
1108 | }
1109 |
1110 | function Get-EventTS {
1111 | Param (
1112 | [switch]$connect,
1113 | [switch]$logon,
1114 | [switch]$logoff,
1115 | [switch]$disconnect,
1116 | [switch]$reconnect
1117 | )
1118 | if ($connect) {
1119 | $RDPAuths = Get-WinEvent -ComputerName $srv -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" `
1120 | -FilterXPath '*[System[EventID=1149]] '
1121 | [xml[]]$xml = $RDPAuths | Foreach {$_.ToXml()}
1122 | $EventData = Foreach ($event in $xml.Event) {
1123 | New-Object PSObject -Property @{
1124 | "Connection Time" = (Get-Date ($event.System.TimeCreated.SystemTime) -Format 'yyyy-MM-dd hh:mm K')
1125 | "User Name" = $event.UserData.EventXML.Param1
1126 | "User Address" = $event.UserData.EventXML.Param3
1127 | "Event ID" = $event.System.EventID
1128 | }}
1129 | $EventData | Out-Gridview -Title "TS-Remote-Connection-Manager to server $srv"
1130 | }
1131 |
1132 | if (!($connect)) {
1133 | if ($logon) {
1134 | $FilterXPath = '*[System[EventID=21]] '
1135 | }
1136 | if ($logoff) {
1137 | $FilterXPath = '*[System[EventID=23]] '
1138 | }
1139 | if ($disconnect) {
1140 | $FilterXPath = '*[System[EventID=24]] '
1141 | }
1142 | if ($reconnect) {
1143 | $FilterXPath = '*[System[EventID=25]] '
1144 | }
1145 | $RDPAuths = Get-WinEvent -ComputerName $srv -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" `
1146 | -FilterXPath $FilterXPath
1147 | [xml[]]$xml = $RDPAuths | Foreach {$_.ToXml()}
1148 | $EventData = Foreach ($event in $xml.Event) {
1149 | New-Object PSObject -Property @{
1150 | "Connection Time" = (Get-Date ($event.System.TimeCreated.SystemTime) -Format 'yyyy-MM-dd hh:mm K')
1151 | "User Name" = $event.UserData.EventXML.User
1152 | "User ID" = $event.UserData.EventXML.SessionID
1153 | "User Address" = $event.UserData.EventXML.Address
1154 | "Event ID" = $event.System.EventID
1155 | }}
1156 | $EventData | Out-Gridview -Title "TS-Local-Session-Manager to server $srv"
1157 | }
1158 | }
1159 | #endregion
1160 |
1161 | #region functions-Time
1162 | function net-time {
1163 | $net_time = net time \\$srv
1164 | $regtime = $net_time -match "$srv"
1165 | $regtime = $regtime -replace "$srv"
1166 | $regtime = $regtime -replace "Current time at \\\\ is "
1167 | $global:nettime = $regtime
1168 | $Status.Text = "Current time $Text_ToServer $srv - $nettime. "
1169 |
1170 | $span = new-timespan -Start (get-date) -end (icm $srv {get-date})
1171 | [string]$diff = $span.TotalSeconds
1172 | $Status.Text += "Time difference: $diff seconds"
1173 | }
1174 |
1175 | function check-time {
1176 | [string]$in_time = icm $srv {w32tm /query /status}
1177 | if ($in_time -match "Last") {
1178 | [string]$in_time = $in_time -replace ".+(?<= Last)"
1179 | [string]$in_time = $in_time -replace "^","Last"
1180 | } else {
1181 | [string]$in_time = icm $srv {w32tm /query /source}
1182 | }
1183 | $wshell = New-Object -ComObject Wscript.Shell
1184 | $output = $wshell.Popup("$in_time",0,"$srv",64)
1185 | }
1186 |
1187 | function time-test {
1188 | $in_time = w32tm /stripchart /computer:$srv /dataonly /samples:1
1189 | if ($in_time -match "0x800705B4") {
1190 | $Status.Text = "Error on time source $srv"
1191 | } else {$Status.Text = "Available time source $srv"}
1192 | }
1193 |
1194 | function sync-PDC {
1195 | $session = New-PSSession $srv
1196 | icm -Session $session {Get-Service | Where {$_.Name -match "w32time"} | stop-service}
1197 | $Status.Text = "10%...Sto Service"; sleep 5
1198 | icm -Session $session {w32tm.exe /unregister}
1199 | $Status.Text = "20%...Reset Settings"; sleep 10
1200 | $Status.Text = "30%...Reset Settings"; sleep 10
1201 | $Status.Text = "40%...Reset Settings"; sleep 5
1202 | $Status.Text = "50%...Time Setting"; sleep 5
1203 | icm -Session $session {w32tm.exe /register}
1204 | $Status.Text = "60%...Time Setting"; sleep 5
1205 | $Status.Text = "70%...Time Setting"; sleep 5
1206 | icm -Session $session {Get-Service | Where {$_.Name -match "w32time"} | start-service}
1207 | $Status.Text = "80%...Time Setting"; sleep 5
1208 | icm -Session $session {w32tm /config /syncfromflags:domhier /update}
1209 | $Status.Text = "90%...Start Service"; sleep 5
1210 | icm -Session $session {Get-Service | Where {$_.Name -match "w32time"} | restart-service}
1211 | Remove-PSSession $session
1212 | $Status.Text = "100%...Ready"
1213 | }
1214 |
1215 | function sync-external {
1216 | $session = New-PSSession $srv
1217 | $servertime = Read-Host "Enter name source time"
1218 | icm -Session $session {$servertime = $using:servertime}
1219 | if ($servertime -ne $null) {
1220 | icm -Session $session {
1221 | w32tm.exe /config /manualpeerlist:"$servertime,0x8" /syncfromflags:manual /reliable:yes /update
1222 | }
1223 | }
1224 | icm -Session $session {Get-Service | Where {$_.Name -match "w32time"} | restart-service}
1225 | Remove-PSSession $session
1226 | $Status.Text = "$servertime selected from an external source to server $srv"
1227 | }
1228 |
1229 | function sync-time {
1230 | icm $srv {w32tm /resync /rediscover}
1231 | $Status.Text = "Synced"
1232 | }
1233 | #endregion
1234 |
1235 | #region functions-KMS
1236 | function kms-status {
1237 | $wmios = gwmi Win32_OperatingSystem -computername $srv
1238 | $os = $wmios.Caption
1239 |
1240 | $check = icm $srv {Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" | where {$_.PartialProductKey}}
1241 | $kms_ver = $check.LicenseFamily
1242 | $kms_channel = $check.Description
1243 | $kms_key = $check.ProductKeyChannel
1244 | $kms_check = $check.LicenseStatus
1245 | if ($kms_check -eq 0) {$kms_status = "Server not activated"}
1246 | if ($kms_check -eq 1) {$kms_status = "Server activated"}
1247 | if ($kms_check -eq 2) {$kms_status = "OOBGrace"}
1248 | if ($kms_check -eq 3) {$kms_status = "OOTGrace (not activate automatically or more than 180 days have passed)"}
1249 | if ($kms_check -eq 4) {$kms_status = "NonGenuineGrace"}
1250 | if ($kms_check -eq 5) {$kms_status = "The trial period for Windows is over"}
1251 | if ($kms_check -eq 6) {$kms_status = "ExtendedGrace (You can extend the trial version of Windows several times by using: slmgr /rearm)"}
1252 |
1253 | $kms_ip = $check.DiscoveredKeyManagementServiceMachineIpAddress
1254 | if ($check.DiscoveredKeyManagementServiceMachineName -gt 0) {$kms_name = $check.DiscoveredKeyManagementServiceMachineName}
1255 | if ($check.KeyManagementServiceMachine -gt 0) {$kms_name = $check.KeyManagementServiceMachine}
1256 | if ($check.DiscoveredKeyManagementServiceMachinePort -gt 0) {$kms_port = $check.DiscoveredKeyManagementServiceMachinePort}
1257 | if ($check.KeyManagementServicePort -gt 0) {$kms_port = $check.KeyManagementServicePort}
1258 | $ip_port = "$kms_ip"+":"+"$kms_port"
1259 |
1260 | $wshell = New-Object -ComObject Wscript.Shell
1261 | $output = $wshell.Popup(
1262 | "Operating System: $os
1263 | Edition: $kms_ver
1264 | Channel: $kms_channel
1265 | Key: $kms_key
1266 | Status: $kms_status ($kms_check)
1267 | License Server: $kms_name ($ip_port)",
1268 | 64,"$srv")
1269 | }
1270 |
1271 | function kms-domain {
1272 | $kms_domain = nslookup -type=srv _vlmcs._tcp.$domain
1273 | #$kms_domain = $kms_domain -Match "(hostname|port)"
1274 | $kms_domain = $kms_domain -Match "(hostname)"
1275 | [string]$kms_domain = $kms_domain -replace ".+(?<== )"
1276 | $Status.Text = "KMS-Server Address $kms_domain in domain $domain"
1277 | }
1278 |
1279 | function gvlk-managment {
1280 | $main_form_gvlk = New-Object System.Windows.Forms.Form
1281 | $main_form_gvlk.Text = "Generic Volume License Key Activator"
1282 | $main_form_gvlk.ShowIcon = $false
1283 | $main_form_gvlk.StartPosition = "CenterScreen"
1284 | $main_form_gvlk.Font = "$Font,$Size"
1285 | $main_form_gvlk.ForeColor = "Black"
1286 | $main_form_gvlk.Size = New-Object System.Drawing.Size(290,390)
1287 | $main_form_gvlk.FormBorderStyle = "FixedSingle"
1288 | $main_form_gvlk.AutoSize = $true
1289 |
1290 | $ListBox_gvlk = New-Object System.Windows.Forms.ListBox
1291 | $ListBox_gvlk.Location = New-Object System.Drawing.Point(10,10)
1292 | $ListBox_gvlk.Size = New-Object System.Drawing.Size(250,300)
1293 | $ListBox_gvlk.Items.Add("Windows Server 2016 Datacenter")
1294 | $ListBox_gvlk.Items.Add("Windows Server 2016 Standart")
1295 | $ListBox_gvlk.Items.Add("Windows Server 2019 Datacenter")
1296 | $ListBox_gvlk.Items.Add("Windows Server 2019 Standart")
1297 | $ListBox_gvlk.Items.Add("Windows Server 2022 Datacenter")
1298 | $ListBox_gvlk.Items.Add("Windows Server 2022 Standart")
1299 | $ListBox_gvlk.Items.Add("Windows 10 Professional")
1300 | $main_form_gvlk.Controls.add($ListBox_gvlk)
1301 |
1302 | $button_gvlk = New-Object System.Windows.Forms.Button
1303 | $button_gvlk.Text = "Select Edition"
1304 | $button_gvlk.Location = New-Object System.Drawing.Point(10,310)
1305 | $button_gvlk.Size = New-Object System.Drawing.Size(100,30)
1306 | $main_form_gvlk.Controls.Add($button_gvlk)
1307 |
1308 | $button_gvlk.Add_Click({
1309 | $global:gvlk_key = $ListBox_gvlk.selectedItem
1310 | $main_form_gvlk.close()
1311 | })
1312 |
1313 | $main_form_gvlk.ShowDialog()
1314 |
1315 | if ($gvlk_key -eq "Windows Server 2016 Datacenter") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk CB7KF-BWN84-R7R2Y-793K2-8XDDG}}
1316 | if ($gvlk_key -eq "Windows Server 2016 Standart") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY}}
1317 | if ($gvlk_key -eq "Windows Server 2019 Datacenter") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk WMDGN-G9PQG-XVVXX-R3X43-63DFG}}
1318 | if ($gvlk_key -eq "Windows Server 2019 Standart") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk N69G4-B89J2-4G8F4-WWYCC-J464C}}
1319 | if ($gvlk_key -eq "Windows Server 2022 Datacenter") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk WX4NM-KYWYW-QJJR4-XV3QB-6VM33}}
1320 | if ($gvlk_key -eq "Windows Server 2022 Standart") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk VDYBN-27WPP-V4HQT-9VMD4-VMK7H}}
1321 | if ($gvlk_key -eq "Windows 10 Professional") {icm $srv {cscript $env:windir\system32\slmgr.vbs /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX}}
1322 | if ($gvlk_key -eq $null) {
1323 |
1324 | $Status.Text = "Edition not selected"} else {
1325 | $Status.Text = "Public GVLK Key Activation for edition $gvlk_key completed on server $srv"}
1326 | $gvlk_key = $null
1327 | }
1328 |
1329 | function kms-server {
1330 | $kms_srv_enter = Read-Host "Enter KMS-Server address"
1331 | $Status.Text = "Selected KMS-Server: $kms_srv_enter"
1332 | $port_default = "1688"
1333 | $kms_srv_port = "$kms_srv_enter"+":"+"$port_default"
1334 | $session = New-PSSession $srv
1335 | icm -Session $session {$kms_srv_port = $using:kms_srv_port}
1336 | icm -Session $session {cscript $env:windir\system32\slmgr.vbs /skms $kms_srv_port}
1337 | Remove-PSSession $session
1338 | }
1339 |
1340 | function kms-lic {
1341 | icm $srv {cscript $env:windir\system32\slmgr.vbs /ato}
1342 | $Status.Text = "Activation completed"
1343 | }
1344 | #endregion
1345 |
1346 | #region functions-WMI
1347 | function Get-SizeDisk {
1348 | $DataGridView.DataSource = $null
1349 | $DataGridView.Rows.Clear()
1350 | $DataGridView.ColumnCount = 4
1351 | $datagridview.Columns[0].Name = $Text_Volume
1352 | $datagridview.Columns[1].Name = $Text_Size
1353 | $datagridview.Columns[2].Name = $Text_Free
1354 | $datagridview.Columns[3].Name = $Text_FreeProc
1355 |
1356 | gwmi Win32_logicalDisk -ComputerName $srv | foreach{
1357 | $dataGridView.Rows.Add($_.DeviceID,[string]([int]($_.Size/1Gb))+" ГБ",[string]([int]($_.FreeSpace/1Gb))+" ГБ",[string]([int]($_.FreeSpace/$_.Size*100))+" %")
1358 | }
1359 |
1360 | $DataGridView.Rows | ForEach-Object {
1361 | if ($_.Cells[$Text_FreeProc].Value -gt "15") {
1362 | $_.Cells[3] | %{$_.Style.BackColor = "lightgreen"}
1363 | } elseif ($_.Cells[$Text_FreeProc].Value -eq $null) {
1364 | } elseif ($_.Cells[$Text_FreeProc].Value -le "15") {
1365 | $_.Cells[3] | %{$_.Style.BackColor = "pink"}
1366 | }}
1367 | }
1368 |
1369 | function Get-SizeMem {
1370 | if ($srv -like "localhost") {
1371 | $memory = Get-ComputerInfo
1372 | } else {
1373 | $memory = Invoke-Command -ComputerName $srv -ScriptBlock {Get-ComputerInfo}
1374 | }
1375 | $memout = $memory | select @{
1376 | Label="Size"; Expression={[string]($_.CsPhyicallyInstalledMemory/1mb)+" Gb"}},
1377 | @{Label="Free"; Expression={[string]([int]($_.OsFreePhysicalMemory/1kb))+" Mb"}}
1378 | $DataGridView.DataSource = $null
1379 | $DataGridView.Rows.Clear()
1380 | $DataGridView.ColumnCount = 2
1381 | $DataGridView.Columns[0].Name = "Size"
1382 | $DataGridView.Columns[1].Name = "Free"
1383 | $DataGridView.Rows.Add(
1384 | $memout.Size,
1385 | $memout.Free
1386 | )
1387 | }
1388 |
1389 | function wmi-upd {
1390 | $HotFixID = Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName "$srv"
1391 | $DataGridView.DataSource = $null
1392 | $DataGridView.Rows.Clear()
1393 | $DataGridView.ColumnCount = 4
1394 | $DataGridView.Columns[0].Name = "HotFixID"
1395 | $DataGridView.Columns[1].Name = "Description"
1396 | $DataGridView.Columns[2].Name = "InstalledBy"
1397 | $DataGridView.Columns[3].Name = "InstalledOn"
1398 | $Service_dgv = foreach ($upd in $HotFixID) {
1399 | $DataGridView.Rows.Add($upd.HotFixID,$upd.Description,$upd.InstalledBy,$upd.InstalledOn)
1400 | }
1401 |
1402 | $HotFixIDCount = $HotFixID.Count
1403 | $Status.Text = "$HotFixIDCount updates"
1404 |
1405 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu
1406 | $ContextMenu_services.MenuItems.Add("Copy ID",{
1407 | $dgv_selected_upd = $DataGridView.SelectedCells.Value
1408 | Set-Clipboard $dgv_selected_upd
1409 | $status.Text = "Update $dgv_selected_upd copy to clipboard, use to search in DISM"
1410 | })
1411 | $main_form.ContextMenu = $ContextMenu_services
1412 | }
1413 |
1414 | function wmi-drivers {
1415 | gwmi -ComputerName $srv Win32_SystemDriver | Out-Gridview -Title "$Text_Drivers $Text_ToServer $srv"
1416 | }
1417 |
1418 | ### Out Drivers to DGV
1419 | #function wmi-drivers-dgv {
1420 | #$drivers = gwmi -ComputerName $srv Win32_SystemDriver
1421 | #$DataGridView.DataSource = $null
1422 | #$DataGridView.Rows.Clear()
1423 | #$DataGridView.ColumnCount = 3
1424 | #$DataGridView.Columns[0].Name = "Name"
1425 | #$DataGridView.Columns[1].Name = "Display Name"
1426 | #$DataGridView.Columns[2].Name = "Status"
1427 | #$Service_dgv = foreach ($drs in $drivers) {
1428 | #$DataGridView.Rows.Add($drs.Name,$drs.DisplayName,$drs.State)
1429 | #}
1430 | #$DataGridView.Rows | ForEach-Object {
1431 | #if ($_.Cells["Status"].Value -eq "Running") {
1432 | #$_.Cells[2] | %{$_.Style.BackColor = "lightgreen"}
1433 | #} elseif ($_.Cells["Status"].Value -eq "Stopped") {
1434 | #$_.Cells[2] | %{$_.Style.BackColor = "pink"}
1435 | #}}
1436 | #}
1437 |
1438 | function wmi-share {
1439 | $DataGridView.DataSource = $null
1440 | $DataGridView.Rows.Clear()
1441 | $DataGridView.ColumnCount = 0
1442 | $share = Get-WmiObject -ComputerName $srv -Class Win32_Share | Select Name,Path
1443 | $list = New-Object System.collections.ArrayList
1444 | $list.AddRange($share)
1445 | $dataGridView.DataSource = $list
1446 |
1447 | $ContextMenu_services = New-Object System.Windows.Forms.ContextMenu
1448 | $ContextMenu_services.MenuItems.Add("$Text_Open $Text_Path",{
1449 | $RowIndex = @($dataGridView.SelectedCells.RowIndex)
1450 | $Column_Path = 0
1451 | $dgv_selected_share = $dataGridView.Rows[$RowIndex].Cells[$Column_Path].FormattedValue
1452 |
1453 | $path_smb = "\\$srv\"+"$dgv_selected_share"
1454 | ii $path_smb
1455 | })
1456 | $main_form.ContextMenu = $ContextMenu_services
1457 | }
1458 |
1459 | function wmi-rdp {
1460 | $rdp = Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace root\CIMV2\TerminalServices -Computer $srv -Authentication 6
1461 | $rdp_status = $rdp.AllowTSConnections
1462 | if ($rdp_status -eq 1) {$rdp_var = "$Text_On"} elseif ($rdp_status -eq 0) {$rdp_var = "$Text_Off"}
1463 | $wshell = New-Object -ComObject Wscript.Shell
1464 | $output = $wshell.Popup("Remote Desktop Protocol - $rdp_var, $Text_ToServer $srv `
1465 | $Text_On - click yes `
1466 | $Text_Off - click no",0,"$Text_SelectAction",3)
1467 | if ($output -eq "6") {
1468 | (Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace root\CIMV2\TerminalServices -Computer $srv `
1469 | -Authentication 6).SetAllowTSConnections(1,1)
1470 | }
1471 | if ($output -eq "7") {
1472 | (Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace root\CIMV2\TerminalServices -Computer $srv `
1473 | -Authentication 6).SetAllowTSConnections(0,0)
1474 | }
1475 | }
1476 |
1477 | function wmi-nla {
1478 | $nla = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\Terminalservices -ComputerName $srv -Filter "TerminalName='RDP-tcp'")
1479 | if ($nla.UserAuthenticationRequired -eq 1) {$nla_out = "$Text_On"} elseif ($nla.UserAuthenticationRequired -eq 0) {$nla_out = "$Text_Off"}
1480 | $wshell = New-Object -ComObject Wscript.Shell
1481 | $output = $wshell.Popup("Network Level Authentication - $nla_out, $Text_ToServer $srv `
1482 | $Text_On - click yes `
1483 | $Text_Off - click no",0,"$Text_SelectAction",3)
1484 | if ($output -eq "6") {
1485 | (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\Terminalservices -ComputerName $srv `
1486 | -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(1)
1487 | }
1488 | if ($output -eq "7") {
1489 | (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\Terminalservices -ComputerName $srv `
1490 | -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(0)
1491 | }
1492 | }
1493 | #endregion
1494 |
1495 | #region functions-install
1496 | function openfile {
1497 | $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
1498 | $OpenFileDialog.Filter = "msi (*.msi)|*.msi"
1499 | $OpenFileDialog.InitialDirectory = ".\"
1500 | $OpenFileDialog.Title = "Select File"
1501 | $getKey = $OpenFileDialog.ShowDialog()
1502 | [string]$global:path_msi = $OpenFileDialog.FileNames
1503 | [string]$global:name_msi = $OpenFileDialog.SafeFileName
1504 | $status.Text = "Selected File: $path_msi"
1505 | }
1506 |
1507 | function wmi-install {
1508 | openfile
1509 | $wshell = New-Object -ComObject Wscript.Shell
1510 | if ($path_msi -ne $null) {
1511 | $output = $wshell.Popup("$Text_Setup $name_msi $Text_ToServer $srv ?",0,"$Text_SelectAction",4)
1512 | }
1513 | if ($output -eq "6") {wmi-installer}
1514 | }
1515 |
1516 | function wmi-installer {
1517 | #$Status.Text = "Setup start $name_msi on $srv"
1518 | #$install = Invoke-CimMethod -ComputerName $srv -ClassName Win32_Product -MethodName Install -Arguments @{PackageLocation=$path_msi}
1519 | #$install_out = $install.ReturnValue
1520 | #if ($install_out -eq "0") {$status.Text = "Setup $name_msi on $srv successfully completed"} else {
1521 | #$status.Text = "Setup Error ($install_out)"
1522 | #}
1523 | ############################################################
1524 | #$Status.Text = "Setup start $name_msi on $srv"
1525 | #$install = (Get-WMIObject -Authentication PacketPrivacy -ComputerName $srv -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install($path_msi)
1526 | #$install_out = $install.ReturnValue
1527 | #if ($install_out -eq "0") {$status.Text = "Setup $name_msi on $srv successfully completed"} else {
1528 | #$status.Text = "Setup Error ($install_out)"
1529 | #}
1530 | ############################################################
1531 | $session = New-PSSession $srv
1532 | icm -Session $session {$path_msi = $using:path_msi}
1533 | $Status.Text = "Setup start $name_msi on $srv"
1534 | $install = icm -Session $session {Install-Package -Name $path_msi -Force -Verbose}
1535 | icm -Session $session {$path_msi = $null}
1536 | Disconnect-PSSession $session
1537 | Remove-PSSession $session
1538 | $path_msi = $null
1539 | [string]$inst_out = $install.Status
1540 | if ($install -ne $null) {$Status.Text = "Setup completed ($inst_out)"} else {
1541 | $Status.Text = "Setup Error"
1542 | }
1543 | }
1544 | #endregion
1545 |
1546 | #region Get-Invent-1.1
1547 | function Get-Invent {
1548 | <#
1549 | .SYNOPSIS
1550 | Remote and local hardware inventory via WMI
1551 | .DESCRIPTION
1552 | Example:
1553 | Get-Invent server-01
1554 | Get-Invent localhost # default localhost
1555 | Get-Invent -Full server-01 # full report
1556 | .LINK
1557 | https://github.com/Lifailon/Get-Invent
1558 | #>
1559 | Param (
1560 | $srv="localhost",
1561 | [switch]$Full
1562 | )
1563 | $Collection = New-Object System.Collections.Generic.List[System.Object]
1564 | $SYS = gwmi Win32_ComputerSystem -computername $srv
1565 | $OS = gwmi Win32_OperatingSystem -computername $srv
1566 | $BB = gwmi Win32_BaseBoard -computername $srv
1567 | $BBv = $BB.Manufacturer+" "+$BB.Product+" "+$BB.Version
1568 | $CPU = gwmi Win32_Processor -computername $srv | select Name,
1569 | @{Label="Core"; Expression={$_.NumberOfCores}},
1570 | @{Label="Thread"; Expression={$_.NumberOfLogicalProcessors}}
1571 | $Memory = gwmi Win32_PhysicalMemory -computername $srv | select Manufacturer,PartNumber,
1572 | ConfiguredClockSpeed,@{Label="Memory"; Expression={[string]($_.Capacity/1Mb)}}
1573 | $MEMs = $Memory.Memory | Measure -Sum
1574 | $PhysicalDisk = gwmi Win32_DiskDrive -computername $srv | select Model,
1575 | @{Label="Size"; Expression={[int]($_.Size/1Gb)}}
1576 | $PDs = $PhysicalDisk.Size | Measure -Sum
1577 | $LogicalDisk = gwmi Win32_logicalDisk -ComputerName $srv | where {$_.Size -ne $null} | select @{
1578 | Label="Value"; Expression={$_.DeviceID}}, @{Label="AllSize"; Expression={
1579 | ([int]($_.Size/1Gb))}},@{Label="FreeSize"; Expression={
1580 | ([int]($_.FreeSpace/1Gb))}}, @{Label="Free%"; Expression={
1581 | [string]([int]($_.FreeSpace/$_.Size*100))+" %"}}
1582 | $LDs = $LogicalDisk.AllSize | Measure -Sum
1583 | $VideoCard = gwmi Win32_VideoController -computername $srv | select @{
1584 | Label="VideoCard"; Expression={$_.Name}}, @{Label="Display"; Expression={
1585 | [string]$_.CurrentHorizontalResolution+"x"+[string]$_.CurrentVerticalResolution}},
1586 | @{Label="vRAM"; Expression={($_.AdapterRAM/1Gb)}}
1587 | $VCs = $VideoCard.vRAM | Measure -Sum
1588 | $NetworkAdapter = gwmi Win32_NetworkAdapter -computername $srv | where {
1589 | $_.Macaddress -ne $null} | select Manufacturer, @{
1590 | Label="NetworkAdapter"; Expression={$_.Name}},Macaddress
1591 | $NAs = $NetworkAdapter | Measure
1592 | $Collection.Add([PSCustomObject]@{
1593 | Host = $SYS.Name
1594 | Owner = $SYS.PrimaryOwnerName
1595 | OS = $OS.Caption
1596 | MotherBoard = $BBv
1597 | CPU = $CPU[0].Name
1598 | Core = $CPU[0].Core
1599 | Thread = $CPU[0].Thread
1600 | MemoryAll = [String]$MEMs.Sum+" Mb"
1601 | MemorySlots = $MEMs.Count
1602 | PhysicalDiskCount = $PDs.Count
1603 | LogicalDiskCount = $LDs.Count
1604 | LogicalDiskAllSize = [String]$LDs.Sum+" Gb"
1605 | VideoCardCount = $VCs.Count
1606 | VideoCardAllSize = [String]$VCs.Sum+" Gb"
1607 | NetworkAdapterCount = $NAs.Count
1608 | })
1609 | $Collection
1610 |
1611 | if ($full) {
1612 | $CollectionMEM = New-Object System.Collections.Generic.List[System.Object]
1613 | $Memory | %{
1614 | $CollectionMEM.Add([PSCustomObject]@{
1615 | MemoryModel = [String]$_.ConfiguredClockSpeed+" Mhz "+$_.Manufacturer+" "+$_.PartNumber
1616 | Memory = [string]($_.Memory)+" Mb"
1617 | })
1618 | }
1619 |
1620 | $CollectionPD = New-Object System.Collections.Generic.List[System.Object]
1621 | $PhysicalDisk | %{
1622 | $CollectionPD.Add([PSCustomObject]@{
1623 | PhysicalDiskModel = $_.Model
1624 | Size = [string]$_.Size+" Gb"
1625 | })
1626 | }
1627 |
1628 | $CollectionLD = New-Object System.Collections.Generic.List[System.Object]
1629 | $LogicalDisk | %{
1630 | $CollectionLD.Add([PSCustomObject]@{
1631 | LogicalDisk = $_.Value
1632 | AllSize = [string]$_.AllSize+" Gb"
1633 | FreeSize = [string]$_.FreeSize+" Gb"
1634 | Free = $_."Free%"
1635 | })
1636 | }
1637 |
1638 | $CollectionVC = New-Object System.Collections.Generic.List[System.Object]
1639 | $VideoCard | %{
1640 | $CollectionVC.Add([PSCustomObject]@{
1641 | VideoCard = $_.VideoCard
1642 | Display = $_.Display
1643 | vRAM = [string]$_.vRAM+" Gb"
1644 | })
1645 | }
1646 |
1647 | $CollectionMEM
1648 | $CollectionPD
1649 | $CollectionLD
1650 | $CollectionVC
1651 | $NetworkAdapter
1652 | }
1653 | }
1654 | #endregion
1655 |
1656 | #region functions-cred-rdp
1657 | function srv-cred {
1658 | $user = $env:USERDNSDOMAIN + "\" + $env:username
1659 | $cred = Get-Credential $user
1660 | $global:username = $Cred.UserName
1661 | $global:password = $Cred.GetNetworkCredential().password
1662 | if ($password -ne $null) {$Status.Text = "$Text_Performed $username"}
1663 | if ($password -eq $null) {$Status.Text = "$Text_NotPerformed"}
1664 | }
1665 | #endregion
1666 |
1667 | #region Form-srv-List
1668 | $GroupBox_srv = New-Object System.Windows.Forms.GroupBox
1669 | $GroupBox_srv.Text = $Text_ServerList
1670 | $GroupBox_srv.AutoSize = $true
1671 | $GroupBox_srv.Location = New-Object System.Drawing.Point(10,55)
1672 | $GroupBox_srv.Size = New-Object System.Drawing.Size(300,735)
1673 | $main_form.Controls.Add($GroupBox_srv)
1674 |
1675 | $outputBox_Search_Srv = New-Object System.Windows.Forms.TextBox
1676 | $outputBox_Search_Srv.Location = New-Object System.Drawing.Point(10,25)
1677 | $outputBox_Search_Srv.Size = New-Object System.Drawing.Size(280,25)
1678 | $GroupBox_srv.Controls.Add($outputBox_Search_Srv)
1679 |
1680 | $outputBox_Search_Srv.Add_TextChanged({
1681 | $search_text = $outputBox_Search_Srv.Text
1682 | $search_list = $srv_list -match $search_text
1683 | $srv_list_count = $search_list.Count
1684 | $ListBox.Items.Clear()
1685 | foreach ($tmp in $search_list) {$ListBox.Items.Add($tmp)}
1686 | $Status.Text = "$srv_list_count computers count"
1687 | })
1688 |
1689 | $ListBox = New-Object System.Windows.Forms.ListBox
1690 | $ListBox.Location = New-Object System.Drawing.Point(10,50)
1691 | $ListBox.Size = New-Object System.Drawing.Size(280,630)
1692 | $GroupBox_srv.Controls.add($ListBox)
1693 |
1694 | $ContextMenu = New-Object System.Windows.Forms.ContextMenu
1695 | $ContextMenu.MenuItems.Add($Text_ListUpdate,{list-update})
1696 | $ContextMenu.MenuItems.Add($Text_ListChange,{ii $conf})
1697 | $ContextMenu.MenuItems.Add($Text_ServerListDomain,{list-domain})
1698 | $ListBox.ContextMenu = $ContextMenu
1699 |
1700 | $button_1 = New-Object System.Windows.Forms.Button
1701 | $button_1.Text = " $Text_Query"
1702 | $button_1.Image = $ico_usr
1703 | $button_1.ImageAlign = "MiddleLeft"
1704 | $button_1.TextAlign = "MiddleLeft"
1705 | $button_1.Location = New-Object System.Drawing.Point(8,680)
1706 | $button_1.Size = New-Object System.Drawing.Size(135,40)
1707 | $GroupBox_srv.Controls.Add($button_1)
1708 |
1709 | $button_1.Add_Click({
1710 | $button_1.Enabled = $false
1711 | $global:srv = $ListBox.selectedItem
1712 | fun-main
1713 | $button_1.Enabled = $true
1714 | })
1715 |
1716 | $button_mstsc = New-Object System.Windows.Forms.Button
1717 | $button_mstsc.Text = " $Text_Connect"
1718 | $button_mstsc.Image = $ico_rdp
1719 | $button_mstsc.ImageAlign = "MiddleLeft"
1720 | $button_mstsc.Location = New-Object System.Drawing.Point(155,680)
1721 | $button_mstsc.Size = New-Object System.Drawing.Size(135,40)
1722 | $GroupBox_srv.Controls.Add($button_mstsc)
1723 |
1724 | $button_mstsc.Add_Click({
1725 | $Status.Text = "Connection to server: $srv"
1726 | if ($password -ne $Null) {
1727 | cmdkey /generic:"TERMSRV/$srv" /user:"$username" /pass:"$password"
1728 | }
1729 | mstsc /admin /v:$srv
1730 | Start-Sleep -Seconds 1
1731 | cmdkey /delete:"TERMSRV/$srv"
1732 | })
1733 | #endregion
1734 |
1735 | #region Form-User-List-DGV
1736 | $GroupBox_usr = New-Object System.Windows.Forms.GroupBox
1737 | $GroupBox_usr.Text = $Text_UserList
1738 | $GroupBox_usr.AutoSize = $true
1739 | $GroupBox_usr.Location = New-Object System.Drawing.Point(320,55)
1740 | $GroupBox_usr.Size = New-Object System.Drawing.Size(910,735)
1741 | $main_form.Controls.Add($GroupBox_usr)
1742 |
1743 | $dataGridView = New-Object System.Windows.Forms.DataGridView
1744 | $dataGridView.Location = New-Object System.Drawing.Point(10,25)
1745 | $dataGridView.Size = New-Object System.Drawing.Size(890,640)
1746 | $dataGridView.AutoSizeColumnsMode = "Fill"
1747 | $dataGridView.Font = "$Font,10"
1748 | $dataGridView.AutoSize = $false
1749 | $dataGridView.MultiSelect = $false
1750 | $dataGridView.ReadOnly = $true
1751 | $GroupBox_usr.Controls.Add($dataGridView)
1752 |
1753 | $button_2 = New-Object System.Windows.Forms.Button
1754 | $button_2.Text = $Text_Connect
1755 | $button_2.Location = New-Object System.Drawing.Point(8,680)
1756 | $button_2.Size = New-Object System.Drawing.Size(140,40)
1757 | $button_2.Image = [System.IconExtractor]::Extract("imageres.dll", 194, $true)
1758 | $button_2.ImageAlign = "MiddleLeft"
1759 | $GroupBox_usr.Controls.Add($button_2)
1760 |
1761 | $button_2.Add_Click({
1762 | $RowIndex = @($dataGridView.SelectedCells.RowIndex)
1763 | $id = $dataGridView.Rows[$RowIndex].Cells[$Column_ID].FormattedValue
1764 | $Table_User = $dataGridView.Rows[$RowIndex].Cells[$Column_User].FormattedValue
1765 |
1766 | $wshell = New-Object -ComObject Wscript.Shell
1767 | $output = $wshell.Popup("Consent prompt connect to user $Table_User ?",0,"Select action",3)
1768 | if ($output -eq "6") {mstsc /shadow:$id /v:$srv /control}
1769 | if ($output -eq "7") {mstsc /shadow:$id /v:$srv /control /noconsentprompt}
1770 | })
1771 |
1772 | $button_3 = New-Object System.Windows.Forms.Button
1773 | $button_3.Text = " $text_Disconnect"
1774 | $button_3.Location = New-Object System.Drawing.Point(160,680)
1775 | $button_3.Size = New-Object System.Drawing.Size(140,40)
1776 | $button_3.Image = [System.IconExtractor]::Extract("dsuiext.dll", 27, $true)
1777 | $button_3.ImageAlign = "MiddleLeft"
1778 | $GroupBox_usr.Controls.Add($button_3)
1779 |
1780 | $button_3.Add_Click({
1781 | $RowIndex = @($dataGridView.SelectedCells.RowIndex)
1782 | $id = $dataGridView.Rows[$RowIndex].Cells[$Column_ID].FormattedValue
1783 | $Table_User = $dataGridView.Rows[$RowIndex].Cells[$Column_User].FormattedValue
1784 |
1785 | $wshell = New-Object -ComObject Wscript.Shell
1786 | $Output = $wshell.Popup("Disconnect user $Table_User ?",0,"Select action",4)
1787 | if ($output -eq "6") {logoff $id /server:$srv /v}
1788 | Get-Query $srv
1789 | Add-TableUser
1790 | })
1791 |
1792 | $button_Proc = New-Object System.Windows.Forms.Button
1793 | $button_Proc.Text = " $Text_User $Text_Process"
1794 | $button_Proc.Location = New-Object System.Drawing.Point(310,680)
1795 | $button_Proc.Size = New-Object System.Drawing.Size(150,40)
1796 | $button_Proc.Image = $ico_proc
1797 | $button_Proc.ImageAlign = "MiddleLeft"
1798 | $button_Proc.TextAlign = "MiddleLeft"
1799 | $GroupBox_usr.Controls.Add($button_Proc)
1800 |
1801 | $button_Proc.Add_Click({
1802 | $RowIndex = @($dataGridView.SelectedCells.RowIndex)
1803 | $id = $dataGridView.Rows[$RowIndex].Cells[$Column_ID].FormattedValue
1804 | $Global:Table_UserGlobal = $dataGridView.Rows[$RowIndex].Cells[$Column_User].FormattedValue
1805 |
1806 | Get-Query $srv -proc -user $Table_UserGlobal
1807 | Add-TableProc
1808 | Get-QueryStopProc
1809 | })
1810 | #endregion
1811 |
1812 | #region Form-Message
1813 | $watermark_Message = "Enter the message to send to users"
1814 | $outputBox_Enter = {
1815 | if ($outputBox_message.Text -like $watermark_Message) {
1816 | $outputBox_message.Text = ""
1817 | $outputBox_message.ForeColor = [System.Drawing.SystemColors]::WindowText
1818 | }}
1819 | $outputBox_Leave = {
1820 | if ($outputBox_message.Text -like "") {
1821 | $outputBox_message.Text = $watermark_Message
1822 | $outputBox_message.ForeColor = [System.Drawing.Color]::LightGray
1823 | }}
1824 |
1825 | $outputBox_message = New-Object System.Windows.Forms.TextBox
1826 | $outputBox_message.Location = New-Object System.Drawing.Point(470,680)
1827 | $outputBox_message.Size = New-Object System.Drawing.Size(290,40)
1828 | $outputBox_message.MultiLine = $True
1829 | $outputBox_message.Font = "$Font,11"
1830 | $outputBox_message.ForeColor = [System.Drawing.Color]::LightGray
1831 | $outputBox_message.add_Enter($outputBox_Enter)
1832 | $outputBox_message.add_Leave($outputBox_Leave)
1833 | $outputBox_message.Text = $watermark_Message
1834 | $GroupBox_usr.Controls.Add($outputBox_message)
1835 |
1836 | $VScrollBar = New-Object System.Windows.Forms.VScrollBar
1837 | $outputBox_message.Scrollbars = "Vertical"
1838 |
1839 | $button_6 = New-Object System.Windows.Forms.Button
1840 | $button_6.Text = " $Text_Send"
1841 | $button_6.TextAlign = "MiddleLeft"
1842 | $button_6.Location = New-Object System.Drawing.Point(770,680)
1843 | $button_6.Size = New-Object System.Drawing.Size(130,40)
1844 | $button_6.Image = [System.IconExtractor]::Extract("accessibilitycpl.dll", 1, $true)
1845 | $button_6.ImageAlign = "MiddleLeft"
1846 | $GroupBox_usr.Controls.Add($button_6)
1847 |
1848 | $button_6.Add_Click({
1849 | $RowIndex = @($dataGridView.SelectedCells.RowIndex)
1850 | $id = $dataGridView.Rows[$RowIndex].Cells[$Column_ID].FormattedValue
1851 | $Table_User = $dataGridView.Rows[$RowIndex].Cells[$Column_User].FormattedValue
1852 |
1853 | $text = $outputBox_message.Text
1854 | $wshell = New-Object -ComObject Wscript.Shell
1855 | $output = $wshell.Popup("To send a message to all users, click yes
1856 | To send a message to user $Table_User, click no",0,"$srv",3)
1857 | if ($output -eq "6") {msg * /server:$srv $text}
1858 | if ($output -eq "7") {msg $id /server:$srv $text}
1859 | if ($lastexitcode -eq 0) {$Status.Text = "Message sent"} else {$Status.Text = "Message not sent"}
1860 | })
1861 | #endregion
1862 |
1863 | #region menu-File
1864 | $Menu = New-Object System.Windows.Forms.MenuStrip
1865 | $Menu.BackColor = "white"
1866 | $main_form.MainMenuStrip = $Menu
1867 | $main_form.Controls.Add($Menu)
1868 |
1869 | $menuItem_file = New-Object System.Windows.Forms.ToolStripMenuItem
1870 | $menuItem_file.Text = $Text_File
1871 | $Menu.Items.Add($menuItem_file)
1872 |
1873 | $menuItem_file_cred = New-Object System.Windows.Forms.ToolStripMenuItem
1874 | $menuItem_file_cred.Text = $Text_Authentication
1875 | $menuItem_file_cred.Image = [System.IconExtractor]::Extract("shell32.dll", 44, $true)
1876 | $menuItem_file_cred.ShortcutKeys = "Control, U"
1877 | $menuItem_file_cred.Add_Click({srv-cred})
1878 | $menuItem_file.DropDownItems.Add($menuItem_file_cred)
1879 |
1880 | $menuItem_file_pad = New-Object System.Windows.Forms.ToolStripMenuItem
1881 | $menuItem_file_pad.Text = $Text_ListChange
1882 | $menuItem_file_pad.Image = $ico_pad
1883 | $menuItem_file_pad.ShortcutKeys = "Control, S"
1884 | $menuItem_file_pad.Add_Click({ii $conf})
1885 | $menuItem_file.DropDownItems.Add($menuItem_file_pad)
1886 |
1887 | $menuItem_file_update = New-Object System.Windows.Forms.ToolStripMenuItem
1888 | $menuItem_file_update.Text = $Text_ListUpdate
1889 | $menuItem_file_update.ShortcutKeys = "Control, R"
1890 | $menuItem_file_update.Add_Click({list-update})
1891 | $menuItem_file.DropDownItems.Add($menuItem_file_update)
1892 |
1893 | $menuItem_file_domain = New-Object System.Windows.Forms.ToolStripMenuItem
1894 | $menuItem_file_domain.Text = $Text_ServerListDomain
1895 | $menuItem_file_domain.ShortcutKeys = "Control, D"
1896 | $menuItem_file_domain.Add_Click({list-domain})
1897 | $menuItem_file.DropDownItems.Add($menuItem_file_domain)
1898 |
1899 | $menuItem_file_domain_table = New-Object System.Windows.Forms.ToolStripMenuItem
1900 | $menuItem_file_domain_table.Text = $Text_ServerTableDomain
1901 | $menuItem_file_domain_table.ShortcutKeys = "Control, T"
1902 | $menuItem_file_domain_table.Add_Click({table-domain})
1903 | $menuItem_file.DropDownItems.Add($menuItem_file_domain_table)
1904 |
1905 | $menuItem_file_exit = New-Object System.Windows.Forms.ToolStripMenuItem
1906 | $menuItem_file_exit.Text = $Text_Exit
1907 | $menuItem_file_exit.ShortcutKeys = "Control, W"
1908 | $menuItem_file_exit.Add_Click({$main_form.Close()})
1909 | $menuItem_file.DropDownItems.Add($menuItem_file_exit)
1910 | #endregion
1911 |
1912 | #region menu-Admin
1913 | $menuItem_admin = New-Object System.Windows.Forms.ToolStripMenuItem
1914 | $menuItem_admin.Text = $Text_Admin
1915 | $Menu.Items.Add($menuItem_admin)
1916 |
1917 | $menuItem_admin_comp = New-Object System.Windows.Forms.ToolStripMenuItem
1918 | $menuItem_admin_comp.Text = $Text_CompManager
1919 | $menuItem_admin_comp.Image = [System.IconExtractor]::Extract("imageres.dll", 186, $true)
1920 | $menuItem_admin_comp.Add_Click({comp-manager})
1921 | $menuItem_admin.DropDownItems.Add($menuItem_admin_comp)
1922 |
1923 | $menuItem_admin_services = New-Object System.Windows.Forms.ToolStripMenuItem
1924 | $menuItem_admin_services.Text = $Text_Services
1925 | $menuItem_admin_services.Image = [System.IconExtractor]::Extract("imageres.dll", 109, $true)
1926 | $menuItem_admin_services.Add_Click({services-view-ogv})
1927 | $menuItem_admin.DropDownItems.Add($menuItem_admin_services)
1928 |
1929 | $menuItem_admin_QueryProc = New-Object System.Windows.Forms.ToolStripMenuItem
1930 | $menuItem_admin_QueryProc.Text = "$Text_All $Text_Remote $Text_User $Text_Process (Get-Query)"
1931 | $menuItem_admin_QueryProc.Image = $ico_proc
1932 | $menuItem_admin_QueryProc.Add_Click({
1933 | Get-Query $srv -proc | Out-GridView -Title "$Text_All $Text_Remote $Text_User $Text_Process $Text_ToServer $srv"
1934 | })
1935 | $menuItem_admin.DropDownItems.Add($menuItem_admin_QueryProc)
1936 |
1937 | $menuItem_admin_process = New-Object System.Windows.Forms.ToolStripMenuItem
1938 | $menuItem_admin_process.Text = "$Text_All $Text_Remote $Text_User $Text_Process (Get-UserProcess)"
1939 | $menuItem_admin_process.Image = [System.IconExtractor]::Extract("imageres.dll", 144, $true)
1940 | $menuItem_admin_process.Add_Click({Get-UserProcess -ogv})
1941 | $menuItem_admin.DropDownItems.Add($menuItem_admin_process)
1942 |
1943 | $menuItem_admin_software_remove = New-Object System.Windows.Forms.ToolStripMenuItem
1944 | $menuItem_admin_software_remove.Text = "$Text_Software (Get-Package)"
1945 | $menuItem_admin_software_remove.Image = [System.IconExtractor]::Extract("shell32.dll", 21, $true)
1946 | $menuItem_admin_software_remove.Add_Click({
1947 | Get-Soft -package
1948 | })
1949 | $menuItem_admin.DropDownItems.Add($menuItem_admin_software_remove)
1950 |
1951 | $menuItem_admin_dism = New-Object System.Windows.Forms.ToolStripMenuItem
1952 | $menuItem_admin_dism.Text = "DISM $Text_Packages"
1953 | $menuItem_admin_dism.Image = [System.IconExtractor]::Extract("shell32.dll", 162, $true)
1954 | $menuItem_admin_dism.Add_Click({Get-DISM})
1955 | $menuItem_admin.DropDownItems.Add($menuItem_admin_dism)
1956 |
1957 | $menuItem_admin_SMB = New-Object System.Windows.Forms.ToolStripMenuItem
1958 | $menuItem_admin_SMB.Text = "SMB $Text_OpenFiles"
1959 | $menuItem_admin_SMB.Image = [System.IconExtractor]::Extract("imageres.dll", 169, $true)
1960 | $menuItem_admin_SMB.Add_Click({SMB-files-ogv})
1961 | $menuItem_admin.DropDownItems.Add($menuItem_admin_SMB)
1962 |
1963 | $menuItem_admin_TCP = New-Object System.Windows.Forms.ToolStripMenuItem
1964 | $menuItem_admin_TCP.Text = "Get-Netstat"
1965 | $menuItem_admin_TCP.Image = [System.IconExtractor]::Extract("imageres.dll", 20, $true)
1966 | $menuItem_admin_TCP.Add_Click({Get-Netstat})
1967 | $menuItem_admin.DropDownItems.Add($menuItem_admin_TCP)
1968 |
1969 | $menuItem_admin_dnsz = New-Object System.Windows.Forms.ToolStripMenuItem
1970 | $menuItem_admin_dnsz.Text = "Get-RemoteDNS"
1971 | $menuItem_admin_dnsz.Add_Click({Get-RemoteDNS})
1972 | $menuItem_admin.DropDownItems.Add($menuItem_admin_dnsz)
1973 |
1974 | $menuItem_admin_gpu = New-Object System.Windows.Forms.ToolStripMenuItem
1975 | $menuItem_admin_gpu.Text = "GPUpdate"
1976 | $menuItem_admin_gpu.Add_Click({gp-upd})
1977 | $menuItem_admin.DropDownItems.Add($menuItem_admin_gpu)
1978 |
1979 | $menuItem_admin_gpr = New-Object System.Windows.Forms.ToolStripMenuItem
1980 | $menuItem_admin_gpr.Text = "GPResult"
1981 | $menuItem_admin_gpr.Add_Click({gp-res})
1982 | $menuItem_admin.DropDownItems.Add($menuItem_admin_gpr)
1983 | #endregion
1984 |
1985 | #region menu-Power
1986 | $menuItem_power = New-Object System.Windows.Forms.ToolStripMenuItem
1987 | $menuItem_power.Text = $Text_Power
1988 | $Menu.Items.Add($menuItem_power)
1989 |
1990 | $menuItem_power_reboot = New-Object System.Windows.Forms.ToolStripMenuItem
1991 | $menuItem_power_reboot.Text = $Text_Reboot
1992 | $menuItem_power_reboot.Image = [System.IconExtractor]::Extract("shell32.dll", 238, $true)
1993 | $menuItem_power_reboot.Add_Click({power-reboot})
1994 | $menuItem_power.DropDownItems.Add($menuItem_power_reboot)
1995 |
1996 | $menuItem_power_off = New-Object System.Windows.Forms.ToolStripMenuItem
1997 | $menuItem_power_off.Text = $Text_PowerOff
1998 | $menuItem_power_off.Image = [System.IconExtractor]::Extract("shell32.dll", 27, $true)
1999 | $menuItem_power_off.Add_Click({power-off})
2000 | $menuItem_power.DropDownItems.Add($menuItem_power_off)
2001 |
2002 | $menuItem_power_cancel = New-Object System.Windows.Forms.ToolStripMenuItem
2003 | $menuItem_power_cancel.Text = $Text_Cacel
2004 | $menuItem_power_cancel.Image = [System.IconExtractor]::Extract("imageres.dll", 255, $true)
2005 | $menuItem_power_cancel.Add_Click({power-cancel})
2006 | $menuItem_power.DropDownItems.Add($menuItem_power_cancel)
2007 |
2008 | $menuItem_power_monitor = New-Object System.Windows.Forms.ToolStripMenuItem
2009 | $menuItem_power_monitor.Text = $Text_CreenLock
2010 | $menuItem_power_monitor.Add_Click({power-monitor})
2011 | $menuItem_power.DropDownItems.Add($menuItem_power_monitor)
2012 |
2013 | $menuItem_power_standby = New-Object System.Windows.Forms.ToolStripMenuItem
2014 | $menuItem_power_standby.Text = $Text_SleepMode
2015 | $menuItem_power_standby.Add_Click({power-standby})
2016 | $menuItem_power.DropDownItems.Add($menuItem_power_standby)
2017 |
2018 | $menuItem_power_mac = New-Object System.Windows.Forms.ToolStripMenuItem
2019 | $menuItem_power_mac.Text = "Get-ARP"
2020 | $menuItem_power_mac.Add_Click({
2021 | $mac_out = Get-ARP | Out-GridView -Title "ARP Table to server $srv" -PassThru
2022 | if ($mac_out -ne $null) {
2023 | $outputBox_message.ForeColor = [System.Drawing.SystemColors]::WindowText
2024 | $outputBox_message.text = $mac_out.MAC
2025 | }
2026 | })
2027 | $menuItem_power.DropDownItems.Add($menuItem_power_mac)
2028 |
2029 | $menuItem_power_dhcp = New-Object System.Windows.Forms.ToolStripMenuItem
2030 | $menuItem_power_dhcp.Text = "Get-DHCP"
2031 | $menuItem_power_dhcp.Add_Click({Get-DHCP})
2032 | $menuItem_power.DropDownItems.Add($menuItem_power_dhcp)
2033 |
2034 | $menuItem_power_wol = New-Object System.Windows.Forms.ToolStripMenuItem
2035 | $menuItem_power_wol.Text = "Wake-on-Lan"
2036 | $menuItem_power_wol.Add_Click({power-wol})
2037 | $menuItem_power.DropDownItems.Add($menuItem_power_wol)
2038 | #endregion
2039 |
2040 | #region menu-Event
2041 | $menuItem_event = New-Object System.Windows.Forms.ToolStripMenuItem
2042 | $menuItem_event.Text = $Text_Event
2043 | $Menu.Items.Add($menuItem_event)
2044 |
2045 | #$menuItem_event_sys = New-Object System.Windows.Forms.ToolStripMenuItem
2046 | #$menuItem_event_sys.Text = "System"
2047 | #$menuItem_event_sys.Add_Click({event-sys})
2048 | #$menuItem_event.DropDownItems.Add($menuItem_event_sys)
2049 | #
2050 | #$menuItem_event_app = New-Object System.Windows.Forms.ToolStripMenuItem
2051 | #$menuItem_event_app.Text = "Application"
2052 | #$menuItem_event_app.Add_Click({event-app})
2053 | #$menuItem_event.DropDownItems.Add($menuItem_event_app)
2054 |
2055 | $menuItem_event_power = New-Object System.Windows.Forms.ToolStripMenuItem
2056 | $menuItem_event_power.Text = $Text_Power
2057 | $menuItem_event_power.Add_Click({event-power})
2058 | $menuItem_event.DropDownItems.Add($menuItem_event_power)
2059 |
2060 | $menuItem_event_ts_connect = New-Object System.Windows.Forms.ToolStripMenuItem
2061 | $menuItem_event_ts_connect.Text = "Remote Connection"
2062 | $menuItem_event_ts_connect.Add_Click({Get-EventTS -connect})
2063 | $menuItem_event.DropDownItems.Add($menuItem_event_ts_connect)
2064 |
2065 | $menuItem_event_ts_logon = New-Object System.Windows.Forms.ToolStripMenuItem
2066 | $menuItem_event_ts_logon.Text = "Session Logon"
2067 | $menuItem_event_ts_logon.Add_Click({Get-EventTS -logon})
2068 | $menuItem_event.DropDownItems.Add($menuItem_event_ts_logon)
2069 |
2070 | $menuItem_event_ts_logoff = New-Object System.Windows.Forms.ToolStripMenuItem
2071 | $menuItem_event_ts_logoff.Text = "Session Logoff"
2072 | $menuItem_event_ts_logoff.Add_Click({Get-EventTS -logoff})
2073 | $menuItem_event.DropDownItems.Add($menuItem_event_ts_logoff)
2074 |
2075 | $menuItem_event_ts_disconnect = New-Object System.Windows.Forms.ToolStripMenuItem
2076 | $menuItem_event_ts_disconnect.Text = "Session Disconnection"
2077 | $menuItem_event_ts_disconnect.Add_Click({Get-EventTS -disconnect})
2078 | $menuItem_event.DropDownItems.Add($menuItem_event_ts_disconnect)
2079 |
2080 | $menuItem_event_ts_reconnection = New-Object System.Windows.Forms.ToolStripMenuItem
2081 | $menuItem_event_ts_reconnection.Text = "Session Reconnection"
2082 | $menuItem_event_ts_reconnection.Add_Click({Get-EventTS -reconnect})
2083 | $menuItem_event.DropDownItems.Add($menuItem_event_ts_reconnection)
2084 | #endregion
2085 |
2086 | #region menu-Broker
2087 | $menuItem_Broker = New-Object System.Windows.Forms.ToolStripMenuItem
2088 | $menuItem_Broker.Text = "Broker"
2089 | $Menu.Items.Add($menuItem_Broker)
2090 |
2091 | $menuItem_Broker_RDP = New-Object System.Windows.Forms.ToolStripMenuItem
2092 | $menuItem_Broker_RDP.Text = "Connection to User"
2093 | $menuItem_Broker_RDP.Add_Click({Get-Broker -r})
2094 | $menuItem_Broker.DropDownItems.Add($menuItem_Broker_RDP)
2095 |
2096 | $menuItem_Broker_Disc = New-Object System.Windows.Forms.ToolStripMenuItem
2097 | $menuItem_Broker_Disc.Text = "Disconnect User"
2098 | $menuItem_Broker_Disc.Add_Click({Get-Broker -d})
2099 | $menuItem_Broker.DropDownItems.Add($menuItem_Broker_Disc)
2100 |
2101 | $menuItem_Broker_Soft = New-Object System.Windows.Forms.ToolStripMenuItem
2102 | $menuItem_Broker_Soft.Text = "Collection List and Software"
2103 | $menuItem_Broker_Soft.Add_Click({Get-Broker -c})
2104 | $menuItem_Broker.DropDownItems.Add($menuItem_Broker_Soft)
2105 |
2106 | $menuItem_Broker_Roles = New-Object System.Windows.Forms.ToolStripMenuItem
2107 | $menuItem_Broker_Roles.Text = "Hosts List and Roles"
2108 | $menuItem_Broker_Roles.Add_Click({Get-Broker -h})
2109 | $menuItem_Broker.DropDownItems.Add($menuItem_Broker_Roles)
2110 | #endregion
2111 |
2112 | #region menu-Time
2113 | $menuItem_Time = New-Object System.Windows.Forms.ToolStripMenuItem
2114 | $menuItem_Time.Text = $Text_Time
2115 | $Menu.Items.Add($menuItem_Time)
2116 |
2117 | $menuItem_Time_Time = New-Object System.Windows.Forms.ToolStripMenuItem
2118 | $menuItem_Time_Time.Text = $Text_Time
2119 | $menuItem_Time_Time.Image = [System.IconExtractor]::Extract("shell32.dll", 239, $true)
2120 | $menuItem_Time_Time.Add_Click({net-time})
2121 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Time)
2122 |
2123 | $menuItem_Time_Check_Time = New-Object System.Windows.Forms.ToolStripMenuItem
2124 | $menuItem_Time_Check_Time.Text = $Text_Time_Source
2125 | $menuItem_Time_Check_Time.Image = $ico_time
2126 | $menuItem_Time_Check_Time.Add_Click({check-time})
2127 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Check_Time)
2128 |
2129 | $menuItem_Time_Test_Time = New-Object System.Windows.Forms.ToolStripMenuItem
2130 | $menuItem_Time_Test_Time.Text = $Text_Check_Source
2131 | $menuItem_Time_Test_Time.Add_Click({time-test})
2132 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Test_Time)
2133 |
2134 | $menuItem_Time_Sync_Domain = New-Object System.Windows.Forms.ToolStripMenuItem
2135 | $menuItem_Time_Sync_Domain.Text = $Text_Change_Domain
2136 | $menuItem_Time_Sync_Domain.Add_Click({sync-PDC})
2137 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Sync_Domain)
2138 |
2139 | $menuItem_Time_Sync_External = New-Object System.Windows.Forms.ToolStripMenuItem
2140 | $menuItem_Time_Sync_External.Text = $Text_Change_External
2141 | $menuItem_Time_Sync_External.Add_Click({sync-external})
2142 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Sync_External)
2143 |
2144 | $menuItem_Time_Sync_Time = New-Object System.Windows.Forms.ToolStripMenuItem
2145 | $menuItem_Time_Sync_Time.Text = $Text_Synchronize_Time
2146 | $menuItem_Time_Sync_Time.Add_Click({sync-time})
2147 | $menuItem_Time.DropDownItems.Add($menuItem_Time_Sync_Time)
2148 | #endregion
2149 |
2150 | #region menu-KMS
2151 | $menuItem_kms = New-Object System.Windows.Forms.ToolStripMenuItem
2152 | $menuItem_kms.Text = "KMS"
2153 | $Menu.Items.Add($menuItem_kms)
2154 |
2155 | $menuItem_kms_status = New-Object System.Windows.Forms.ToolStripMenuItem
2156 | $menuItem_kms_status.Text = $Text_License
2157 | $menuItem_kms_status.Image = [System.IconExtractor]::Extract("accessibilitycpl.dll", 14, $true)
2158 | $menuItem_kms_status.Add_Click({kms-status})
2159 | $menuItem_kms.DropDownItems.Add($menuItem_kms_status)
2160 |
2161 | $menuItem_kms_domain = New-Object System.Windows.Forms.ToolStripMenuItem
2162 | $menuItem_kms_domain.Text = $Text_DomainServers
2163 | $menuItem_kms_domain.Add_Click({kms-domain})
2164 | $menuItem_kms.DropDownItems.Add($menuItem_kms_domain)
2165 |
2166 | $menuItem_kms_gvlk = New-Object System.Windows.Forms.ToolStripMenuItem
2167 | $menuItem_kms_gvlk.Text = "GVLK $Text_Activator"
2168 | $menuItem_kms_gvlk.Add_Click({gvlk-managment})
2169 | $menuItem_kms.DropDownItems.Add($menuItem_kms_gvlk)
2170 |
2171 | $menuItem_kms_srv = New-Object System.Windows.Forms.ToolStripMenuItem
2172 | $menuItem_kms_srv.Text = "$Text_SelectServer KMS"
2173 | $menuItem_kms_srv.Add_Click({kms-server})
2174 | $menuItem_kms.DropDownItems.Add($menuItem_kms_srv)
2175 |
2176 | $menuItem_kms_lic = New-Object System.Windows.Forms.ToolStripMenuItem
2177 | $menuItem_kms_lic.Text = $Text_GetLicense
2178 | $menuItem_kms_lic.Add_Click({kms-lic})
2179 | $menuItem_kms.DropDownItems.Add($menuItem_kms_lic)
2180 | #endregion
2181 |
2182 | #region menu-WMI
2183 | $menuItem_wmi = New-Object System.Windows.Forms.ToolStripMenuItem
2184 | $menuItem_wmi.Text = "WMI"
2185 | $Menu.Items.Add($menuItem_wmi)
2186 |
2187 | $menuItem_wmi_disk = New-Object System.Windows.Forms.ToolStripMenuItem
2188 | $menuItem_wmi_disk.Text = $Text_LD
2189 | $menuItem_wmi_disk.Image = [System.IconExtractor]::Extract("imageres.dll", 293, $true)
2190 | $menuItem_wmi_disk.Add_Click({Get-SizeDisk})
2191 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_disk)
2192 |
2193 | $menuItem_wmi_memory = New-Object System.Windows.Forms.ToolStripMenuItem
2194 | $menuItem_wmi_memory.Text = $Text_Memory
2195 | $menuItem_wmi_memory.Image = [System.IconExtractor]::Extract("imageres.dll", 315, $true)
2196 | $menuItem_wmi_memory.Add_Click({Get-SizeMem})
2197 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_memory)
2198 |
2199 | $menuItem_wmi_software = New-Object System.Windows.Forms.ToolStripMenuItem
2200 | $menuItem_wmi_software.Text = $Text_Software
2201 | $menuItem_wmi_software.Image = $ico_soft
2202 | $menuItem_wmi_software.Add_Click({
2203 | Get-Soft -wmi
2204 | })
2205 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_software)
2206 |
2207 | $menuItem_wmi_update = New-Object System.Windows.Forms.ToolStripMenuItem
2208 | $menuItem_wmi_update.Text = "Windows $Text_Update"
2209 | $menuItem_wmi_update.Image = [System.IconExtractor]::Extract("shell32.dll", 46, $true)
2210 | $menuItem_wmi_update.Add_Click({wmi-upd})
2211 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_update)
2212 |
2213 | $menuItem_wmi_drivers = New-Object System.Windows.Forms.ToolStripMenuItem
2214 | $menuItem_wmi_drivers.Text = $Text_Drivers
2215 | $menuItem_wmi_drivers.Image = [System.IconExtractor]::Extract("imageres.dll", 142, $true)
2216 | $menuItem_wmi_drivers.Add_Click({wmi-drivers})
2217 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_drivers)
2218 |
2219 | $menuItem_wmi_share = New-Object System.Windows.Forms.ToolStripMenuItem
2220 | $menuItem_wmi_share.Text = "$Text_File Share"
2221 | $menuItem_wmi_share.Image = [System.IconExtractor]::Extract("imageres.dll", 205, $true)
2222 | $menuItem_wmi_share.Add_Click({wmi-share})
2223 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_share)
2224 |
2225 | $menuItem_wmi_rdp = New-Object System.Windows.Forms.ToolStripMenuItem
2226 | $menuItem_wmi_rdp.Text = "$Text_Power RDP"
2227 | $menuItem_wmi_rdp.Image = $ico_rdp
2228 | $menuItem_wmi_rdp.Add_Click({wmi-rdp})
2229 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_rdp)
2230 |
2231 | $menuItem_wmi_nla = New-Object System.Windows.Forms.ToolStripMenuItem
2232 | $menuItem_wmi_nla.Text = "$Text_Power NLA"
2233 | $menuItem_wmi_nla.Image = [System.IconExtractor]::Extract("shell32.dll", 174, $true)
2234 | $menuItem_wmi_nla.Add_Click({wmi-nla})
2235 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_nla)
2236 |
2237 | $menuItem_wmi_install = New-Object System.Windows.Forms.ToolStripMenuItem
2238 | $menuItem_wmi_install.Text = "$Text_Setup (Beta)"
2239 | $menuItem_wmi_install.Image = $ico_upd
2240 | $menuItem_wmi_install.Add_Click({wmi-install})
2241 | $menuItem_wmi.DropDownItems.Add($menuItem_wmi_install)
2242 | #endregion
2243 |
2244 | #region menu-Inventory
2245 | $menuItem_Invent = New-Object System.Windows.Forms.ToolStripMenuItem
2246 | $menuItem_Invent.Text = "Inventory"
2247 | $Menu.Items.Add($menuItem_Invent)
2248 |
2249 | $menuItem_Invent_HTML = New-Object System.Windows.Forms.ToolStripMenuItem
2250 | $menuItem_Invent_HTML.Text = "Get-Invent-Out-HTML"
2251 | $menuItem_Invent_HTML.Image = [System.IconExtractor]::Extract("setupapi.dll", 27, $true)
2252 | $menuItem_Invent_HTML.Add_Click({
2253 | $GetInventPath = "$home\Desktop\Get-Invent-$srv.html"
2254 | Get-Invent $srv -full | ConvertTo-Html -as List > $GetInventPath
2255 | ii $GetInventPath
2256 | $Status.Text = "Saved to $GetInventPath"
2257 | })
2258 | $menuItem_Invent.DropDownItems.Add($menuItem_Invent_HTML)
2259 | #endregion
2260 |
2261 | #region menu-LOW
2262 | $mainToolStrip = New-Object System.Windows.Forms.ToolStrip
2263 | $mainToolStrip.Location = New-Object System.Drawing.Point(0,25)
2264 | $mainToolStrip.ImageScalingSize = New-Object System.Drawing.Size(22,40)
2265 | $mainToolStrip.Size = New-Object System.Drawing.Size(1250,28)
2266 | $mainToolStrip.AutoSize = $false
2267 | $mainToolStrip.Anchor = "Top"
2268 | $main_form.Controls.Add($mainToolStrip)
2269 |
2270 | $toolStripCred = New-Object System.Windows.Forms.ToolStripButton
2271 | $toolStripCred.ToolTipText = $Text_Authentication
2272 | $toolStripCred.Image = [System.IconExtractor]::Extract("shell32.dll", 44, $true)
2273 | $toolStripCred.Add_Click({srv-cred})
2274 | $mainToolStrip.Items.Add($toolStripCred)
2275 |
2276 | $toolStripComp = New-Object System.Windows.Forms.ToolStripButton
2277 | $toolStripComp.ToolTipText = $Text_CompManager
2278 | $toolStripComp.Image = [System.IconExtractor]::Extract("imageres.dll", 186, $true)
2279 | $toolStripComp.Add_Click({comp-manager})
2280 | $mainToolStrip.Items.Add($toolStripComp)
2281 |
2282 | $toolStripLog = New-Object System.Windows.Forms.ToolStripButton
2283 | $toolStripLog.ToolTipText = $Text_Event
2284 | $toolStripLog.Image = $ico_event
2285 | $toolStripLog.Add_Click({eventvwr $srv})
2286 | $mainToolStrip.Items.Add($toolStripLog)
2287 |
2288 | $toolStripDisk = New-Object System.Windows.Forms.ToolStripButton
2289 | $toolStripDisk.ToolTipText = $Text_LD
2290 | $toolStripDisk.Image = [System.IconExtractor]::Extract("imageres.dll", 293, $true)
2291 | $toolStripDisk.Add_Click({Get-SizeDisk})
2292 | $mainToolStrip.Items.Add($toolStripDisk)
2293 |
2294 | $toolStripMem = New-Object System.Windows.Forms.ToolStripButton
2295 | $toolStripMem.ToolTipText = $Text_Memory
2296 | $toolStripMem.Image = [System.IconExtractor]::Extract("imageres.dll", 315, $true)
2297 | $toolStripMem.Add_Click({Get-SizeMem})
2298 | $mainToolStrip.Items.Add($toolStripMem)
2299 |
2300 | $toolStripServices = New-Object System.Windows.Forms.ToolStripButton
2301 | $toolStripServices.ToolTipText = $Text_Services
2302 | $toolStripServices.Image = [System.IconExtractor]::Extract("imageres.dll", 109, $true)
2303 | $toolStripServices.Add_Click({
2304 | $global:Service = Get-Service -computername $srv | Sort Name
2305 | $global:Service_search = $Service
2306 | services-view
2307 | services-search
2308 | })
2309 | $mainToolStrip.Items.Add($toolStripServices)
2310 |
2311 | $toolStripProcess = New-Object System.Windows.Forms.ToolStripButton
2312 | $toolStripProcess.ToolTipText = "$Text_ALL $Text_User $Text_Process (Get-Process)"
2313 | $toolStripProcess.Image = [System.IconExtractor]::Extract("imageres.dll", 144, $true)
2314 | $toolStripProcess.Add_Click({
2315 | proc-click
2316 | })
2317 | $mainToolStrip.Items.Add($toolStripProcess)
2318 |
2319 | $toolStripShare = New-Object System.Windows.Forms.ToolStripButton
2320 | $toolStripShare.ToolTipText = "$Text_File Share"
2321 | $toolStripShare.Image = [System.IconExtractor]::Extract("imageres.dll", 205, $true)
2322 | $toolStripShare.Add_Click({wmi-share})
2323 | $mainToolStrip.Items.Add($toolStripShare)
2324 |
2325 | $toolStripSMB = New-Object System.Windows.Forms.ToolStripButton
2326 | $toolStripSMB.ToolTipText = "SMB $Text_OpenFiles"
2327 | $toolStripSMB.Image = [System.IconExtractor]::Extract("imageres.dll", 169, $true)
2328 | $toolStripSMB.Add_Click({SMB-files})
2329 | $mainToolStrip.Items.Add($toolStripSMB)
2330 |
2331 | $toolStripUpdate = New-Object System.Windows.Forms.ToolStripButton
2332 | $toolStripUpdate.ToolTipText = "Windows $Text_Update"
2333 | $toolStripUpdate.Image = [System.IconExtractor]::Extract("shell32.dll", 46, $true)
2334 | $toolStripUpdate.Add_Click({wmi-upd})
2335 | $mainToolStrip.Items.Add($toolStripUpdate)
2336 |
2337 | $toolStripDISM = New-Object System.Windows.Forms.ToolStripButton
2338 | $toolStripDISM.ToolTipText = "DISM $Text_Packages"
2339 | $toolStripDISM.Image = [System.IconExtractor]::Extract("shell32.dll", 162, $true)
2340 | $toolStripDISM.Add_Click({Get-DISM})
2341 | $mainToolStrip.Items.Add($toolStripDISM)
2342 |
2343 | $toolStripSoftPackage = New-Object System.Windows.Forms.ToolStripButton
2344 | $toolStripSoftPackage.ToolTipText = "$Text_Software (Get-Package)"
2345 | $toolStripSoftPackage.Image = [System.IconExtractor]::Extract("shell32.dll", 21, $true)
2346 | $toolStripSoftPackage.Add_Click({
2347 | Get-Soft -package
2348 | })
2349 | $mainToolStrip.Items.Add($toolStripSoftPackage)
2350 |
2351 | $toolStripSoftWMI = New-Object System.Windows.Forms.ToolStripButton
2352 | $toolStripSoftWMI.ToolTipText = "$Text_Software (WMI)"
2353 | $toolStripSoftWMI.Image = $ico_soft
2354 | $toolStripSoftWMI.Add_Click({
2355 | Get-Soft -wmi
2356 | })
2357 | $mainToolStrip.Items.Add($toolStripSoftWMI)
2358 |
2359 | #$toolStripDrivers = New-Object System.Windows.Forms.ToolStripButton
2360 | #$toolStripDrivers.ToolTipText = $Text_Drivers
2361 | #$toolStripDrivers.Image = [System.IconExtractor]::Extract("imageres.dll", 142, $true)
2362 | #$toolStripDrivers.Add_Click({wmi-drivers-dgv})
2363 | #$mainToolStrip.Items.Add($toolStripDrivers)
2364 |
2365 | $toolStripTCP = New-Object System.Windows.Forms.ToolStripButton
2366 | $toolStripTCP.ToolTipText = "TCP Viewer"
2367 | $toolStripTCP.Image = [System.IconExtractor]::Extract("imageres.dll", 20, $true)
2368 | $toolStripTCP.Add_Click({Get-Netstat})
2369 | $mainToolStrip.Items.Add($toolStripTCP)
2370 |
2371 | $toolStripTime = New-Object System.Windows.Forms.ToolStripButton
2372 | $toolStripTime.ToolTipText = $Text_Time
2373 | $toolStripTime.Image = [System.IconExtractor]::Extract("shell32.dll", 239, $true)
2374 | $toolStripTime.Add_Click({net-time})
2375 | $mainToolStrip.Items.Add($toolStripTime)
2376 |
2377 | $toolStripWDS = New-Object System.Windows.Forms.ToolStripButton
2378 | $toolStripWDS.ToolTipText = $Text_License
2379 | $toolStripWDS.Image = [System.IconExtractor]::Extract("accessibilitycpl.dll", 14, $true)
2380 | $toolStripWDS.Add_Click({kms-status})
2381 | $mainToolStrip.Items.Add($toolStripWDS)
2382 |
2383 | $SearchTextBox = New-Object System.Windows.Forms.ToolStripTextBox
2384 | $SearchTextBox.Size = New-Object System.Drawing.Size(150)
2385 | $SearchTextBox.Font = "$Font,11"
2386 | $mainToolStrip.Items.Add($SearchTextBox)
2387 | #endregion
2388 |
2389 | #region watermark-find
2390 | #$watermark = "Find"
2391 | #
2392 | #$TextBox_Enter = {
2393 | #if ($SearchTextBox.Text -like $watermark) {
2394 | #$SearchTextBox.Text = ""
2395 | #$SearchTextBox.ForeColor = [System.Drawing.SystemColors]::WindowText
2396 | #}}
2397 | #
2398 | #$TextBox_Leave = {
2399 | #if ($SearchTextBox.Text -like "") {
2400 | #$SearchTextBox.Text = $watermark
2401 | #$SearchTextBox.ForeColor = [System.Drawing.Color]::LightGray
2402 | #}}
2403 | #
2404 | #$SearchTextBox.ForeColor = [System.Drawing.Color]::LightGray
2405 | #$SearchTextBox.add_Enter($TextBox_Enter)
2406 | #$SearchTextBox.add_Leave($TextBox_Leave)
2407 | #$SearchTextBox.Text = $watermark
2408 | #endregion
2409 |
2410 | #region status
2411 | $StatusStrip = New-Object System.Windows.Forms.StatusStrip
2412 | $StatusStrip.BackColor = "white"
2413 | $StatusStrip.Font = "$Font,9"
2414 | $main_form.Controls.Add($statusStrip)
2415 |
2416 | $Status = New-Object System.Windows.Forms.ToolStripMenuItem
2417 | $StatusStrip.Items.Add($Status)
2418 | $Status.Text = "©Telegram @kup57"
2419 |
2420 | list-update
2421 | Creat-Table
2422 | $main_form.ShowDialog()
2423 | #endregion
2424 |
--------------------------------------------------------------------------------