diff --git a/ColorControl/ColorControl.csproj b/ColorControl/ColorControl.csproj
index d71a006..3153c1a 100644
--- a/ColorControl/ColorControl.csproj
+++ b/ColorControl/ColorControl.csproj
@@ -27,7 +27,7 @@
true
false
true
- pngbarn.ico
+ Resources\pngbarn.ico
10.0.20348.0
2020-2024 Maassoft
Maassoft
@@ -65,6 +65,12 @@
UserControl
+
+
+ True
+ True
+ Resources.resx
+
Form
@@ -81,13 +87,11 @@
+
PreserveNewest
-
-
-
@@ -134,6 +138,10 @@
+
+ PublicResXFileCodeGenerator
+ Resources.Designer.cs
+
Designer
diff --git a/ColorControl/MainForm.Designer.cs b/ColorControl/MainForm.Designer.cs
index 0d0d10d..6df3652 100644
--- a/ColorControl/MainForm.Designer.cs
+++ b/ColorControl/MainForm.Designer.cs
@@ -96,7 +96,6 @@
ClientSize = new System.Drawing.Size(1150, 594);
Controls.Add(btnUpdate);
Controls.Add(tcMain);
- Icon = (System.Drawing.Icon)resources.GetObject("$this.Icon");
Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
MinimumSize = new System.Drawing.Size(1140, 611);
Name = "MainForm";
diff --git a/ColorControl/MainForm.cs b/ColorControl/MainForm.cs
index 4a460d7..7d56c5b 100644
--- a/ColorControl/MainForm.cs
+++ b/ColorControl/MainForm.cs
@@ -1,4 +1,5 @@
using ColorControl.Forms;
+using ColorControl.Properties;
using ColorControl.Services.AMD;
using ColorControl.Services.Common;
using ColorControl.Services.GameLauncher;
@@ -14,7 +15,6 @@ using ColorControl.Shared.Services;
using Linearstar.Windows.RawInput;
using Microsoft.Extensions.DependencyInjection;
using NLog;
-using novideo_srgb;
using NWin32;
using System;
using System.Collections.Generic;
@@ -46,7 +46,7 @@ namespace ColorControl
private NvPanel _nvPanel;
- public NotifyIcon _trayIcon;
+ public NotifyIconManager _notifyIconManager;
private bool _initialized = false;
private Config _config;
private bool _setVisibleCalled = false;
@@ -54,13 +54,6 @@ namespace ColorControl
private LgPanel _lgPanel;
private SamsungPanel _samsungPanel;
- private ToolStripMenuItem _nvTrayMenu;
- private ToolStripMenuItem _novideoTrayMenu;
- private ToolStripMenuItem _amdTrayMenu;
- private ToolStripMenuItem _lgTrayMenu;
- private ToolStripMenuItem _samsungTrayMenu;
- private ToolStripMenuItem _gameTrayMenu;
-
private StartUpParams StartUpParams { get; }
public string _lgTabMessage { get; private set; }
@@ -78,14 +71,22 @@ namespace ColorControl
private Dictionary> _modules = new();
public MainForm(AppContextProvider appContextProvider, PowerEventDispatcher powerEventDispatcher, ServiceManager serviceManager,
- IServiceProvider serviceProvider, WinApiAdminService winApiAdminService, WinApiService winApiService, ElevationService elevationService)
+ IServiceProvider serviceProvider, WinApiAdminService winApiAdminService, WinApiService winApiService, ElevationService elevationService, NotifyIconManager notifyIconManager)
{
InitializeComponent();
+ Icon = Resources.AppIcon;
+
+ var appContext = appContextProvider.GetAppContext();
+
+ if (appContext.MainHandle == 0)
+ {
+ appContext.MainHandle = Handle;
+ }
KeyboardShortcutManager.MainHandle = Handle;
- StartUpParams = appContextProvider.GetAppContext().StartUpParams;
- appContextProvider.GetAppContext().SynchronizationContext = AsyncOperationManager.SynchronizationContext;
+ StartUpParams = appContext.StartUpParams;
+ appContext.SynchronizationContext = AsyncOperationManager.SynchronizationContext;
_powerEventDispatcher = powerEventDispatcher;
_serviceManager = serviceManager;
@@ -93,17 +94,11 @@ namespace ColorControl
_winApiAdminService = winApiAdminService;
_winApiService = winApiService;
_elevationService = elevationService;
+ _notifyIconManager = notifyIconManager;
_dataDir = Program.DataDir;
_config = Program.Config;
- var currentVersionInfo = FileVersionInfo.GetVersionInfo(Application.ExecutablePath);
-
- Text = Application.ProductName + " " + Application.ProductVersion;
-
- if (_winApiService.IsAdministrator())
- {
- Text += " (administrator)";
- }
+ Text = appContext.ApplicationTitleAdmin;
LoadConfig();
@@ -113,37 +108,7 @@ namespace ColorControl
MessageForms.MainForm = this;
- _nvTrayMenu = new ToolStripMenuItem("NVIDIA presets");
- _novideoTrayMenu = new ToolStripMenuItem("Novideo sRGB");
- _amdTrayMenu = new ToolStripMenuItem("AMD presets");
- _lgTrayMenu = new ToolStripMenuItem("LG presets");
- _samsungTrayMenu = new ToolStripMenuItem("Samsung presets");
- _gameTrayMenu = new ToolStripMenuItem("Game Launcher");
- _trayIcon = new NotifyIcon()
- {
- Icon = Icon,
- ContextMenuStrip = new ContextMenuStrip(),
- Visible = _config.MinimizeToTray,
- Text = Text
- };
-
- _trayIcon.ContextMenuStrip.Items.AddRange(new ToolStripItem[] {
- _nvTrayMenu,
- _novideoTrayMenu,
- _amdTrayMenu,
- _lgTrayMenu,
- _samsungTrayMenu,
- _gameTrayMenu,
- new ToolStripSeparator(),
- new ToolStripMenuItem("Open", null, OpenForm),
- new ToolStripSeparator(),
- new ToolStripMenuItem("Restart", null, Restart),
- new ToolStripMenuItem("Exit", null, Exit)
- });
-
- _trayIcon.MouseDoubleClick += trayIcon_MouseDoubleClick;
- _trayIcon.ContextMenuStrip.Opened += trayIconContextMenu_Popup;
- _trayIcon.BalloonTipClicked += trayIconBalloonTip_Clicked;
+ _notifyIconManager.Build();
InitShortcut(SHORTCUTID_SCREENSAVER, _config.ScreenSaverShortcut, StartScreenSaver);
@@ -155,7 +120,7 @@ namespace ColorControl
_winApiAdminService.InstallChromeFix(true, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
}
- _screenStateNotify = WinApi.RegisterPowerSettingNotification(Handle, ref Utils.GUID_CONSOLE_DISPLAY_STATE, 0);
+ _screenStateNotify = WinApi.RegisterPowerSettingNotification(appContext.MainHandle, ref Utils.GUID_CONSOLE_DISPLAY_STATE, 0);
//Scale(new SizeF(1.25F, 1.25F));
@@ -225,8 +190,6 @@ namespace ColorControl
}
tcMain.SelectedIndex = 0;
-
- _serviceManager.NvService?.InstallEventHandlers();
}
private UserControl InitNvService()
@@ -242,7 +205,7 @@ namespace ColorControl
var rpcService = _serviceProvider.GetRequiredService();
var winAdminService = _serviceProvider.GetRequiredService();
- _nvPanel = new NvPanel(_serviceManager.NvService, _trayIcon, Handle, appContextProvider, rpcService, winAdminService);
+ _nvPanel = new NvPanel(_serviceManager.NvService, _notifyIconManager.NotifyIcon, appContextProvider, rpcService, winAdminService);
_nvPanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
InitShortcut(NvPanel.SHORTCUTID_NVQA, _config.NvQuickAccessShortcut, _serviceManager.NvService.ToggleQuickAccessForm);
@@ -262,10 +225,10 @@ namespace ColorControl
{
try
{
- var appContextProvider = _serviceProvider.GetRequiredService();
- _serviceManager.AmdService = new AmdService(appContextProvider);
+ _serviceManager.AmdService = _serviceProvider.GetRequiredService();
- _amdPanel = new AmdPanel(_serviceManager.AmdService, _trayIcon, Handle);
+ var appContextProvider = _serviceProvider.GetRequiredService();
+ _amdPanel = new AmdPanel(_serviceManager.AmdService, _notifyIconManager.NotifyIcon, appContextProvider);
_amdPanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
InitShortcut(AmdPanel.SHORTCUTID_AMDQA, _config.AmdQuickAccessShortcut, _serviceManager.AmdService.ToggleQuickAccessForm);
@@ -287,7 +250,8 @@ namespace ColorControl
{
_serviceManager.GameService = _serviceProvider.GetRequiredService();
- _gamePanel = new GamePanel(_serviceManager.GameService, _serviceManager.NvService, _serviceManager.AmdService, _serviceManager.LgService, _serviceManager.SamsungService, _trayIcon, Handle);
+ var appContextProvider = _serviceProvider.GetRequiredService();
+ _gamePanel = new GamePanel(_serviceManager.GameService, _serviceManager.NvService, _serviceManager.AmdService, _serviceManager.LgService, _serviceManager.SamsungService, _notifyIconManager.NotifyIcon, appContextProvider);
_gamePanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
InitShortcut(GamePanel.SHORTCUTID_GAMEQA, _config.GameQuickAccessShortcut, _serviceManager.GameService.ToggleQuickAccessForm);
@@ -318,7 +282,8 @@ namespace ColorControl
{
_serviceManager.LgService = _serviceProvider.GetRequiredService();
- _lgPanel = new LgPanel(_serviceManager.LgService, _serviceManager.NvService, _serviceManager.AmdService, _trayIcon, Handle, _powerEventDispatcher);
+ var appContextProvider = _serviceProvider.GetRequiredService();
+ _lgPanel = new LgPanel(_serviceManager.LgService, _serviceManager.NvService, _serviceManager.AmdService, _notifyIconManager.NotifyIcon, _powerEventDispatcher, appContextProvider);
_lgPanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
_lgPanel.Init();
@@ -342,9 +307,8 @@ namespace ColorControl
{
_serviceManager.SamsungService = _serviceProvider.GetRequiredService();
- //_serviceManager.SamsungService.Init();
-
- _samsungPanel = new SamsungPanel(_serviceManager.SamsungService, _serviceManager.NvService, _serviceManager.AmdService, Handle, _powerEventDispatcher);
+ var appContextProvider = _serviceProvider.GetRequiredService();
+ _samsungPanel = new SamsungPanel(_serviceManager.SamsungService, _serviceManager.NvService, _serviceManager.AmdService, _powerEventDispatcher, appContextProvider);
_samsungPanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
_samsungPanel.Init();
@@ -379,6 +343,13 @@ namespace ColorControl
Program.Restart();
}
+ public void OpenForm()
+ {
+ Show();
+ WindowState = FormWindowState.Normal;
+ Activate();
+ }
+
private void trayIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
Show();
@@ -466,25 +437,25 @@ namespace ColorControl
var preset = _serviceManager.NvService?.GetPresets().FirstOrDefault(x => x.id == id);
if (preset != null)
{
- _nvPanel?.ApplyNvPreset(preset);
+ _serviceManager.NvService?.ApplyPresetUi(preset);
}
var amdPreset = _serviceManager.AmdService?.GetPresets().FirstOrDefault(x => x.id == id);
if (amdPreset != null)
{
- _amdPanel?.ApplyAmdPreset(amdPreset);
+ _serviceManager.AmdService?.ApplyPresetUi(amdPreset);
}
var lgPreset = _serviceManager.LgService?.GetPresets().FirstOrDefault(x => x.id == id);
if (lgPreset != null)
{
- _lgPanel?.ApplyLgPreset(lgPreset);
+ _serviceManager.LgService?.ApplyPresetUi(lgPreset);
}
var samsungPreset = _serviceManager.SamsungService?.GetPresets().FirstOrDefault(x => x.id == id);
if (samsungPreset != null)
{
- _samsungPanel?.ApplyPreset(samsungPreset);
+ _serviceManager.SamsungService?.ApplyPresetUi(samsungPreset);
}
}
}
@@ -511,15 +482,6 @@ namespace ColorControl
Logger.Debug("WM_BRINGTOFRONT message received, opening form");
OpenForm(this, EventArgs.Empty);
}
- else if (m.Msg == NativeConstants.WM_SYSCOMMAND)
- {
- //Logger.Debug($"WM_SYSCOMMAND: {m.WParam.ToInt32()}");
-
- //if (m.WParam.ToInt32() == NativeConstants.SC_MONITORPOWER)
- //{
-
- //}
- }
else if (m.Msg == NativeConstants.WM_POWERBROADCAST)
{
//Logger.Debug($"WM_POWERBROADCAST: {m.WParam.ToInt32()}");
@@ -548,7 +510,7 @@ namespace ColorControl
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
// Hide tray icon, otherwise it will remain shown until user mouses over it
- _trayIcon.Visible = false;
+ _notifyIconManager.HideIcon();
if (_screenStateNotify != IntPtr.Zero)
{
@@ -723,124 +685,6 @@ NOTE: installing the service may cause a User Account Control popup.");
//control.BackColor = SystemColors.Window;
}
- private void UpdateTrayMenu(ToolStripMenuItem menu, IEnumerable presets, EventHandler eventHandler)
- {
- menu.DropDownItems.Clear();
-
- foreach (var preset in presets.OrderBy(p => p.name))
- {
- var name = preset.GetTextForMenuItem();
- var keys = Keys.None;
-
- if (!string.IsNullOrEmpty(preset.shortcut))
- {
- name += " " + preset.shortcut;
- //keys = Utils.ShortcutToKeys(preset.shortcut);
- }
-
- var item = new ToolStripMenuItem(name, null, null, keys);
- item.Tag = preset;
- item.Click += eventHandler;
- item.ForeColor = FormUtils.MenuItemForeColor;
- menu.DropDownItems.Add(item);
- }
- }
-
- private async void TrayMenuItemNv_Click(object sender, EventArgs e)
- {
- var item = sender as ToolStripMenuItem;
- var preset = (NvPreset)item.Tag;
-
- await _nvPanel?.ApplyNvPreset(preset);
- }
-
- private async void TrayMenuItemAmd_Click(object sender, EventArgs e)
- {
- var item = sender as ToolStripMenuItem;
- var preset = (AmdPreset)item.Tag;
-
- await _amdPanel?.ApplyAmdPreset(preset);
- }
-
- private async void TrayMenuItemGame_Click(object sender, EventArgs e)
- {
- var item = sender as ToolStripMenuItem;
- var preset = (GamePreset)item.Tag;
-
- await _gamePanel?.ApplyGamePreset(preset);
- }
-
- private void trayIconContextMenu_Popup(object sender, EventArgs e)
- {
- _nvTrayMenu.Visible = _serviceManager.NvService != null;
- if (_nvTrayMenu.Visible)
- {
- var presets = _serviceManager.NvService.GetPresets().Where(x => x.applyColorData || x.applyDithering || x.applyHDR || x.applyRefreshRate || x.applyResolution || x.applyDriverSettings || x.applyOther || x.applyOverclocking || x.ApplyColorEnhancements || x.applyHdmiSettings);
-
- UpdateTrayMenu(_nvTrayMenu, presets, TrayMenuItemNv_Click);
- }
-
- _novideoTrayMenu.Visible = _serviceManager.NvService != null && MainWindow.IsInitialized();
- if (_novideoTrayMenu.Visible)
- {
- MainWindow.UpdateContextMenu(_novideoTrayMenu);
- }
-
- _amdTrayMenu.Visible = _serviceManager.AmdService != null;
- if (_amdTrayMenu.Visible)
- {
- var presets = _serviceManager.AmdService.GetPresets().Where(x => x.applyColorData || x.applyDithering || x.applyHDR || x.applyRefreshRate);
-
- UpdateTrayMenu(_amdTrayMenu, presets, TrayMenuItemAmd_Click);
- }
-
- _lgTrayMenu.Visible = _serviceManager.LgService != null;
- if (_lgTrayMenu.Visible)
- {
- var presets = _serviceManager.LgService.GetPresets().Where(x => !string.IsNullOrEmpty(x.appId) || x.steps.Any());
-
- _lgTrayMenu.DropDownItems.Clear();
-
- UpdateTrayMenu(_lgTrayMenu, presets, TrayMenuItemLg_Click);
- }
-
- _samsungTrayMenu.Visible = _serviceManager.SamsungService != null;
- if (_samsungTrayMenu.Visible)
- {
- var presets = _serviceManager.SamsungService.GetPresets().Where(x => x.Steps.Any());
-
- _samsungTrayMenu.DropDownItems.Clear();
-
- UpdateTrayMenu(_samsungTrayMenu, presets, TrayMenuItemSamsung_Click);
- }
-
- _gameTrayMenu.Visible = _serviceManager.GameService != null;
- if (_gameTrayMenu.Visible)
- {
- var presets = _serviceManager.GameService.GetPresets();
-
- _gameTrayMenu.DropDownItems.Clear();
-
- UpdateTrayMenu(_gameTrayMenu, presets, TrayMenuItemGame_Click);
- }
- }
-
- private async void TrayMenuItemLg_Click(object sender, EventArgs e)
- {
- var item = sender as ToolStripMenuItem;
- var preset = (LgPreset)item.Tag;
-
- await _lgPanel?.ApplyLgPreset(preset);
- }
-
- private async void TrayMenuItemSamsung_Click(object sender, EventArgs e)
- {
- var item = sender as ToolStripMenuItem;
- var preset = (SamsungPreset)item.Tag;
-
- await _samsungPanel?.ApplyPreset(preset);
- }
-
private void MainForm_Activated(object sender, EventArgs e)
{
if (tcMain.SelectedTab?.Controls.Count > 0 && tcMain.SelectedTab.Controls[0] is IModulePanel panel)
@@ -861,10 +705,10 @@ NOTE: installing the service may cause a User Account Control popup.");
{
await _amdPanel.AfterInitialized();
}
- if (_trayIcon.Visible)
- {
- await CheckForUpdates();
- }
+ //if (_trayIcon.Visible)
+ //{
+ // await CheckForUpdates();
+ //}
}
private async Task CheckForUpdates()
@@ -943,9 +787,9 @@ NOTE: installing the service may cause a User Account Control popup.");
btnUpdate.Visible = true;
- if (_trayIcon.Visible)
+ if (_notifyIconManager.NotifyIcon.Visible)
{
- _trayIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click on the Update-button to update", ToolTipIcon.Info);
+ _notifyIconManager.NotifyIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click on the Update-button to update", ToolTipIcon.Info);
}
else
{
@@ -955,9 +799,9 @@ NOTE: installing the service may cause a User Account Control popup.");
return;
}
- if (_trayIcon.Visible)
+ if (_notifyIconManager.NotifyIcon.Visible)
{
- _trayIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click to open the GitHub page", ToolTipIcon.Info);
+ _notifyIconManager.NotifyIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click to open the GitHub page", ToolTipIcon.Info);
}
else
{
@@ -1039,7 +883,7 @@ NOTE: installing the service may cause a User Account Control popup.");
DarkModeUtils.InitWpfTheme();
- DarkModeUtils.SetContextMenuForeColor(_trayIcon.ContextMenuStrip, FormUtils.CurrentForeColor);
+ DarkModeUtils.SetContextMenuForeColor(_notifyIconManager.NotifyIcon.ContextMenuStrip, FormUtils.CurrentForeColor);
InitSelectedTab();
}
@@ -1059,7 +903,7 @@ NOTE: installing the service may cause a User Account Control popup.");
internal void CloseForRestart()
{
Hide();
- _trayIcon.Visible = false;
+ _notifyIconManager.NotifyIcon.Visible = false;
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
diff --git a/ColorControl/MainForm.resx b/ColorControl/MainForm.resx
index 74bd8a9..274336b 100644
--- a/ColorControl/MainForm.resx
+++ b/ColorControl/MainForm.resx
@@ -1,17 +1,17 @@
-
@@ -117,1787 +117,8 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 147, 17
-
-
-
- AAABAAYAAAAAAAEAIACBGgAAZgAAAICAAAABACAAKAgBAOcaAABAQAAAAQAgAChCAAAPIwEAMDAAAAEA
- IACoJQAAN2UBACAgAAABACAAqBAAAN+KAQAQEAAAAQAgAGgEAACHmwEAiVBORw0KGgoAAAANSUhEUgAA
- AQAAAAEACAYAAABccqhmAAAaSElEQVR42u2de3RV1Z3H9zn3kXcICYQA4SGiUh8gD8OjoGidKr7HNbS6
- plZanWW7pp3acTpjq85yTV2trXbZsdrHklFXOxa1ju9WBVygKBgQUHzAgIUQCBEISSAhyb039575Y/6Y
- /fse5+webpJ7wv5+/vtmP84+J+HH/v32b++tFCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBChhNO
- oQdABpaP7585SddjKxLLdB1z1byg9r0Zb6OudxxIPa7rC+7Z1gRNvEK/Mzlx3EIPgBBSOGgACLEYGgBC
- LIYxgGFG228abtR1ebH7KFQZbKOe08X+jvQ3dD311i3LoT5jBBGGMwBCLIYGgBCLoQEgxGIYA4ge4nfS
- 859zd+vadZzJhR5gEJl+1azrihvfmYpVCj1G8n9wBkCIxdAAEGIxNACEWAxjABGjd8XcI7p2laqWNfL8
- lZma571qLzvoz6kOXZf9bWMtNOjP94nkxOEMgBCLoQEgxGJoAAixGMYACkzXioZndZ2MOX8d2CDqvzFD
- DOFIV+YVXY+7actlhR6yzXAGQIjF0AAQYjE0AIRYTLzQA7CNF35yRoWuk0UGn/8ko2ZkYomur51bXa/r
- Zxvb9xd6jDbBGQAhFkMDQIjF0AAQYjFRX1XOm6VLVUzXD2SW3Krrknj8Nl27MTVGdODCN3Jl7nq/432g
- 66a+PtHfec+sfkPXx/7Q8LSuixLqbwr9jQpJa0fmVV1P/tpWESPY0dhwiq7H1jkP6TqRUBfq2nW8YqHx
- gZ53TJc9x3O/1/VT/9XxfV3fcvvuo4X+RoMJZwCEWAwNACEWQwNAiMWcdDGAA9dc9nNdF7ux74gXjkED
- 16ChvmOq79NeVpfJz+8T3zw2qghahN2Qj7/C4dU+l8uJ75OanRQ+d8yV5yE4juwfPzeOxoXxOD4N9aH/
- VF+2UdeLJm9ZpOvNw/yMQ84ACLEYGgBCLIYGgBCLGY4xADHmI9dc2SIKXTVW6CH3+YPbZ/aJtABVtGCU
- 0MnZNX/5y38GJg/c2N4LbpDv87P9vUJ3H90j3/8LM+B5Bp9/iGMCjidjOt/+l1aRN/Lwb1uOqGEEZwCE
- WAwNACEWQwNAiMUMuxhA2zVXNunaddUk8UIR8/mVC+fk738TGkiZnCtjAEVzgmMCUScDPv+xo03y80D9
- 5GKIAfhiENGOCUyZ/265rpuaVN9AfcvBgDMAQiyGBoAQi6EBIMRiIn8mYPNVS+R+/bA+v6F8sH3+sP2l
- N8tlZOw/OQeuCowYmX7p8nYeawp8Hw987hx+Hl9eggP1wef3oNwQE8jhcQ++rQ0wPs9XX/yFbVs18x1d
- V562dSb2GP6rDh6cARBiMTQAhFgMDQAhFhPFGIBwssrj8ftFYcF9/rA+vhesneD26S1t8H6yfXJ2YWMC
- aVjnbz/aDN8LXw98anh/T5l8fBjAQMcEvPxiAmUVcZHIsOy6KhGzevzJzqa//OsOPpwBEGIxNACEWAwN
- ACEWE7m9AB9f9sXzdT22rEhuoB/y3P78fH5sn2lZJ8vxN2CICWB5EeQFJGaZYgIhTwwAmc7Idf7DHc1B
- 1f25875yqRPzZwaWm/cChK0/uHsH9rekntP1KXPev1ZFCM4ACLEYGgBCLIYGgBCLiVwewMjSxD+LH0TO
- 5w8uR5/S51KbxqOCy9HHTW9th+8hn5+YGTZPAM7FB5//YOe+wPGgz465/Y4h6oQRihx+buO6f/ADB3zv
- gOENxtYlL4UK/i4LCGcAhFgMDQAhFkMDQIjFRC4GkHAdWAiGCgVf54f2Tn4xA2OMwJgnIPtPv2eICZw7
- UgWRyqSEPtC5P3B8foc22IdWvtx/aO/7XIbzAiIeE3BjqgR+hP/m0qqAcAZAiMXQABBiMTQAhFhM5GIA
- ylUJoQvu80Oud0ifH+s7Ic8D8McAQp4nADEBp1x+UO9U6aI2t8t1ftd0NyDmAUBxLmQ53k2YA5/dxf34
- 6MNHLCbg+PdeROo/3UgNhhAytNAAEGIxNACEWEzkYgBZ1xNOaNx1RosKeZ/bjzpkbr/PRzfECFDHgtsb
- 1/0N2jHFBDYcFrq5DMbvG5+hf2XY+6CC+0Of3ecxD/eYQM7Jwo9QFxTOAAixGBoAQiyGBoAQi4lcDOBg
- qvcxXU9Mls0SFQb5rr7QPn/YdX1TfSTfvQKg2/v7he57U+qii5KB7U37/cPXN+T6Y/1hFhNoa+//b+ix
- X0UIzgAIsRgaAEIshgaAEIuJXAzgn976SMQAnr684ReiQt4+/8Dm9pv253t5rvMb7w0w7RWA92lNye3n
- DuxGTxj+S/AMuf2mmAbGBLC/HG4GcAxn8IWOCeB4MA8BOswzJvDQI60/DB5xYeEMgBCLoQEgxGJoAAix
- mMjFAFYePHhc193ZzDu6rogn5okGYX1+47o9+vwqVH3PtDfAcM6/yaf3jDGC4PfLog8P48l2g5dc4QZ1
- l/feBeWLAeADBjgmANVzBh/fCZknkOrPiUMV73/wwEsqwnAGQIjF0AAQYjE0AIRYTMFjAHeDEbri7hXf
- 0vVR1z1N14de/Ilo78DKrv++dlO5ob6H+72Dy039xWB7eOVU6UMmKoM31DsqXF5B1nCuPrq0mSNQo9Lg
- c/tiIsGJAJ+m5BPf6pDP6/b2CB0HpzsOMY4EPC8B5TFoLw+c9PefgOHHQGP/OJ7SEQszun5yw1W36Pq6
- +S8+CEMo6N4AzgAIsRgaAEIshgaAEIsx7UYfcDb92zPCxy9NJESuv5OTPrLrwRFqfd1C9r727/BCwV6u
- a9AKnoflfp/fEBPwYDzZXvm4dJt8HvxGqhtkmCZWguvUAPwgA+N/v0ve/Yd5AMkZ8nmJqfKQQNeQR9Dd
- L5/3xF7p4uJ4k2NGSF0mzyOIQ//ooycwRgD14yF9eNPzsH7FSHmVZTIp716MGWJAHYe6b9P1dYtWPQCf
- aFD3DnAGQIjF0AAQYjE0AIRYzKDHALbe+/Ibuo476nxdu+jzg3bAJ8cYgerrErJ3tTw+wLQuj/vFcaXc
- HwMw5QGAz2+ICXi9LVCuAnXl2dInL66TNhz3s+PegXePyhgAnqdQtEiulMfHyAoYA9jVJd9n5afy9+Pz
- qTHmMHF0YDlqf3/B6/j+mADWx5iACuyvslr6/EVFNULH4Nj/mCO/TxzKXYgJZHozG3S9ZMYrC+UI/Mcq
- 5gNnAIRYDA0AIRZDA0CIxQx4DODde//4lK6TrvslXbsGnz5sDMAYE1jzkOzft+5v8vkN6/qmmIIhZqBy
- GVk9dQjqq8D21XPlun1cLqv7fsMbOuUhgLiOX3y1XIePQfL8oT6pn4R1fp8PD3cNJsZKnzmZlA18Prhr
- 0vmt4ycMeQBVI+W1FMXFo+T3AR8/fAwguH13Z9+Lur6yYfXVagDhDIAQi6EBIMRiaAAIsZi8YwCvff/3
- 03RdV12zXTwAfWxTDCCkz+/XsL26V8YE+tb9SpabYgA5w3kChpiAkzPEHDAm0N8jq2c64XkK2ks96lIZ
- E8AzA7d2yZhDD7xP8bUQA4D2D2yX39e4zl9TKcvLigLrJ0LGAHz7+U31DTGAquo5QpeAzx9Hn90JzvWP
- +/JKgmME/hiC1C8/1TJf1z+9c5s4MzMsnAEQYjE0AIRYDA0AIRaTdwxgy32rjug6pnLV4gEFjgE4WcwT
- OCblW7+BD2Lw8Q0xA5ULeT6AKSaQlev2Xro9sP/y0+XCe+lUaePxfIBNZ8jnJybI9o1wRmDjYcz1l39C
- yVq5Hz6RhPMFMC8AYwaG/fxJXPePBZ8JaIoZVIPPX1os9yb41vFNMQDw4bF+vjEAL9N/VNcXnLlKfvCQ
- 5wdwBkCIxdAAEGIxNACEWEzoewHuXrasWNeO4wif37cBfagxeEBOolTokgU3Cd23YXlwe8PzHFMF7M93
- HT2cWejAmXxJuS6t+uUZgz07xdWKqvQ08NFLpc0fc6Zclz/cLc8LeOswnLNfIdf1FazrexAT8G2NMGhf
- 2gTeHagM/UN9/PoVIxuEThTB9xzcI/jyJp5wxG6PyWeWjdF108fHPw3TH2cAhFgMDQAhFkMDQIjFhI4B
- NEy89MJCD3og8cUEGr4mdN9GjAl4Bi3JgpPal5HrvlnIUyjCu+bARPvyFNwiKIcN/FX14gETfvrxeWL0
- D/eJdeXfvjZ9rRjfyE8n6NqFdXdIe1A5GH8PnB+Qha0aRfAXWFUm+48n4IxDL1yMobJa+vzJIrnOj3s3
- ohcBCI6p/d03plyq6zv+4YPHw/TOGQAhFkMDQIjF0AAQYjGhYwClyVJ5Tjm6KNFzokLhJEqELmm4Wei+
- dx8Vem+H3L/f0gVn7vnuDQh35iCWx0BPLZc2vLZExjQueHDfIl139mS2Br3/j5aXiBhB7UXjxbpyd7u8
- x6Dpz3K8uI4fg9x/16BjkKuP5XUj5R/ceVPln3B17WKhk8lyeMPC/oEOdJbMuMml8+BHj4dpzxkAIRZD
- A0CIxdAAEGIxoWMAnsolw7YZzqSz0mvb6F0gv0eiWWpnm9A5D84ngP5Da0f+yvaoKUIfSIutGmps2X5x
- CODW9nYVSK30mffsGy90T/dUobNqE4y3W34PZcALlMqDL9Cerhd67b5JQl9UIf88J1Wrkxonp4ryac8Z
- ACEWQwNAiMXQABBiMaFjAMd6j7+n66ri8rBdRJrjvXIdv/G9JqHRYjol44ROFNXKcjyjEPbvq6xMlnfB
- 58Vz/333HsDdghko/8cv/3ijrnte/JUc4E7Vqcuqzz0s7nV4f+cPRfUYXBZYXC2OqVcuruO7cjyuI88b
- wHX+eDwB7RXUD76HYe2ODqHnTakQ+qyxJaqQDHQWwv69xz/Kpz1nAIRYDA0AIRZDA0CIxYSOAfxx2xuv
- 6fqbF3yp0O+QF+jzb9gm1/XRQmKuu2PI7nbgkEA3loT28gke+PA5hT607G9PSsYA3j4mtver/pWNokFp
- 6ezDum79oswjaF7+J6E7UgeErjy3Sujiepl3gGciOuDEOzFZ3/UHOUCbzl8I1hub5PfAc/bPHiv3ThT4
- RMvPIDhq8OQjLSvz6Z0zAEIshgaAEIuhASDEYk7E5RFttty/Sixkxzy5VyBqdwMe75b799dv+XPg813s
- D58Huf6m+i7uDYBD8rC/7oxcN3/u4CGhc3CXnFsm8xJio84WOgOH+O1KlgkdHyGT57t6Nwud6t8rxwv/
- hYy+WJ65l6iQFdDnj7nw9xHDPIKcQWN9+B5OcPmCU+Q9B9Pr5PeI2t2ATjYrgj6Lpq2EixoUnMIYDGcA
- hFgMDQAhFkMDQIjFhM4DULAw+WHzxzfqesaEaSsK/VI63T1ynf+treDDeuF25GMp5u7j/nWUOXgeruvv
- 65PjXXtE5rZ76HTDGYHxuplQLuXunmNC9/fIuwTjNfKuvMrK2UIf7twHH0A+oG2NSDNQNfOqhC4ZJ3P9
- TXcp+s5QxLwAU56AofydvfL7ok+OMYGwDHTu/3NPNt8OPwrl8yOcARBiMTQAhFgMDQAhFjMQqc+ij8Yf
- vbRL1yXx+Km6NuYB+NbZw+UBHO+W++3f2PSJ7N8Lfp6v3AvOM/Ct65vW/aG8B9b5Xzh4UH5dyKPwYDzx
- 2nOEjlXWQ33Z3fudbfIH4KWWnDpNjhfuAuxL7xG6u3eL7A7X5cEHH3OxzDNIwl2A4df9g+s7uA7vyxOA
- chjvwskjhJ5hyBOIGdb54yr4+di+51ifCLpcPmf16fKDMwZACDlBaAAIsRgaAEIsZjC2P4sN31vufalV
- 1wnHqdK1m8tvb0A3+PxrGyG3H/fT53KB5dh/zBgDCI5Z+PYGQEzgqRZx9Z7Px1fY3wjp48dqp0N96cN6
- cGbetg4ZA3CgPFk/QfZfLs98RJ+6q0deNZiCGIGDPjmcAVh/mYwJmGMABu2YYgCGmIAv70CWnz+5SugZ
- dfL7hI8BSJ1N9Xfp+pJz/oQ+/6dqAOEMgBCLoQEgxGJoAAixmBPZC2BCrEvOuv3Ksbpee+fvVul6dFnl
- wjCdd/fKM/BWb5Q+p8+iecG5/J5hLwCeQo+5+/720D/01wpn+OV8ewfkG8THzRI6ViH3+/sv15O6H2Ms
- eBA/Ph/PJ4jDmX5QvXKEHF8qLfcSdPVslA1gnT11RO59KKmF8fl+PXnuBXCCs/MxZoJ7D9btlTGUOMQU
- pteWYYdSwvu0Nve8q+sbLl69BIaEiRsDCmcAhFgMDQAhFkMDQIjFFOIYdPHMS85aKBay77rq64/purq0
- /FxdP//6Dkd2Frxu7/rOJAxexw+vTXsBpH7poHTp0pWw7j76jP//YymlTD4/lmfh/T/skHsNfHkA40XI
- RsWrZC68Mqyz+31uyG3v/VC+vyPzNsYvluvqea/745l6+bZ3MG9A1r9h+nihvc70B7q+73uN39b1B5va
- 3pYfDBJTBhnOAAixGBoAQiyGBoAQi4neVWgwpl/etVb4UMl48ixZGXP7VaDGM+b8ud9Q3zPUN/UPFR57
- czu0COfTO8ZT5oLLtx1pgZ/I71dyhji+QblJSBXxraOjjxzurj/0uedddxrUD/bBfZka6NP7yrP51VfY
- HvZeeDKR4pHFt+ChgmkVITgDIMRiaAAIsRgaAEIsZjD2AuTF0qXfFecJuDHp8/ty88GG5QznzLu+XH8s
- xwfg/vpgHxtjBti/B7n4YX16zxQTQBcc68fk8zHk4JYUQQf4xfEBwfcgfMbB/4HlprwCU3f++obva/h7
- Me418O0dyIl/UxffffMVul599/JnVYTgDIAQi6EBIMRiaAAIsZjIxQAapiz5pq5zvv32PidXAC67yjnB
- 7Y0xAXg+xhgwLwCf53MhY/KTe3mu+xtjAsCEyhqhW1SPrAD7//1XHeL3x/9D0IdHH98UQzDsNTCs0/vW
- 8Q15Av51fcO6vwpu74Gun3vaj6EBYwCEkGhAA0CIxdAAEGIxkYsBxOMlX9V1zufSRj0mEDxcz3cmX7AP
- jzEC4/kAvlJZPrJE7u/vnFgH74vb0dFHN6z7+97f0F4F7w0I7fM7plz+kLn+IX1+LI+XyrsxlVKxwAZD
- DGcAhFgMDQAhFkMDQIjFRC4G4ClXHKqW81cAohYTCC73nOBz9j3DeQO+mIATrrx2jjxzcPxIeQbfup3v
- wXhwndzkw+P/KQYX1xdDCLu/v8A+v7k/9PkT4T7Q4MIZACEWQwNAiMXQABBiMZGLAWS9XErXjhecm+4j
- YnsHPDwzzg0+Y8//9PzKR8+YInRJXXVg/fnTZgi94ZOtUCP4LkX/5gf8HnhXo+k8gLA+fZ4+P9T3vHA+
- P8YIfO1NiRtDDGcAhFgMDQAhFkMDQIjFRC4GkMqkxH3prhsff6J9/S+FjQlgTMK0FyDfmMDoc6XPX15f
- A+0Dn66K46VCz582R+j1uzYGfj8TjiGEYDq3Xxn3+xfW58fyXH8aDlwY2rv/THAGQIjF0AAQYjE0AIRY
- TORiAPsP7bpP16fWn3t1UH3H9INC7x3A6q4b0Nr/E/+quvxJ7Szw+ScE+/xhwZjAgmnzhN7wyXrfCIOk
- 6X2NPn6+Z/gNss+P/XU0tb5iGGBB4QyAEIuhASDEYmgACLGYkKu4Q4JYKL/3BxsyohCSx114gxj68IYz
- +3zluJ/f0N7xlQffNfi7bQdle8P+ffwF1c05RejKAfb5EdMfSG+6T+j1u96AGoZ1eljnX3hxNbQfXj6/
- B/09/5Wfn63r9ub2j1SE4AyAEIuhASDEYmgACLGYyOUBKHCyWlo/+Xtd14+d+su8ei9wnoBy5F4Azw32
- 2tHnr5g4uD4/Yuq/uKRM6AWfu1Do9bteD2zvjzEM8F19Q+zzd7W2bdJ1e3P7DhVhOAMgxGJoAAixGBoA
- QiwminkAgWO8+7bXP9B1SVHpWbp2DXkAxjwBY95AfnkCT3x0BF5O9jeuQeb2j5hUo4YzfRm5HX79zleh
- hvShFy6uCCwf6HP7w/r82F8ul07r+rHF90yEDg+qCMMZACEWQwNAiMXQABBiMcMhBoCIu9U+IyYgLr8z
- +vimGIEytQ8XE3hie4fQ9Qvk9fGVEzAX/uQCYwIbdr4g9MJFZdCisD4/rvPn+tPi3ooVS+47R9epVGrX
- oH/EAYQzAEIshgaAEIuhASDEYoZjDAARyfW33PDrf9X1lAkzhB7qmEAum+nV9XvnnF6k63hxMtgIG/cu
- GIh4e8/LCie/N7Fin66TZclJsrlhb4AzsD5/x+4DYjPDc8t+fT10eDjkF4kUnAEQYjE0AIRYDA0AIRZz
- MsQATFTq4stX3vUVXU+bOv9bui4vqRAb8GOOK85M8Dy5kN3eeWCzrl9d88jPdL15+5o1ur7p6aandZ0s
- q7w81NtE7TeW54EEx1qb1un6iZtnLdb1uHNOP13Xc79z9R26rpxYc6mu40lnhBxeVowwc7znkK5btnzy
- B12/fc9z4ryJVCq1G4aMiQnDGs4ACLEYGgBCLIYGgBCLiZpHWQjwG8QM5abL6wK94vOWfq9O17NvurM1
- 8GmDfehfgXnm1gvn6Lptx5bNIbvA/8RihvqmAwasgjMAQiyGBoAQi6EBIMRiGAMoMMue3bda10UVI7+g
- 6+H+C8IQxrHW3Y26XvHV6Z+HKllFhgzOAAixGBoAQiyGBoAQixnuLubJQFIXN6/qatO1G4vDQfnoVZsS
- Bwpbns2kj+v6Py6pmgwN2hQpGJwBEGIxNACEWAwNACEWwxhA9BAH43995VGxHz2WLK4NbD3Yv1HD3oRM
- b7e4/PDxJTUzoco+RSIDZwCEWAwNACEWQwNAiMUwBhB9xF2IVzy0RtxzMGbGojug/iD/Tj0RBWhe9/wv
- dL3qB0vvhAZdQ/GRyInBGQAhFkMDQIjF0AAQYjGMAQx/SnVx1vXfPV/XU//q+ht0XTJq/Nm69jxP/A30
- HGzerusdLz/6lK53vbh8LTy/A/RJforhyQVnAIRYDA0AIRZDA0CIxTAGYB+m3zl9eIvgDIAQi6EBIMRi
- aAAIIYQQQgghhBBCCCGEEEIIIYQQQgg5CfgfmiDFoks+WbcAAAAASUVORK5CYIIoAAAAgAAAAAABAAAB
- ACAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACnFZK0hxWStIyp5PpcqeT6XlsljR5bJY0eSxV9Lk
- sVfSxppNqcaaTalkTiVSZE4lUgAAABIAAAASAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoA
- AAAKcVkrSHFZK0jKnk+lyp5PpeWyWNHlsljR5LFX0uSxV9LGmk2pxppNqWROJVJkTiVSAAAAEgAAABIA
- AAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAFAAAABb+UTIO/lEyD/MNj/vzDY/78w2P//MNj//zDY//8w2P//MNj//zDY//8
- w2P//MNj//zDY//8w2P//MNj//zDY//7w2P++8Nj/quGRZGrhkWRAAAADQAAAA0AAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFv5RMg7+UTIP8
- w2P+/MNj/vzDY//8w2P//MNj//zDY//8w2P//MNj//zDY//8w2P//MNj//zDY//8w2P//MNj//vDY/77
- w2P+q4ZFkauGRZEAAAANAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAsAAAAL8bpi6fG6Yun5wGX/+cBl//nAZf/5wGX/+cFl//nBZf/5wWX/+cFl//nBZf/5
- wWX/+cFl//nBZf/5wWX/+cFl//nBZf/5wWX/+cBl//nAZf/5wGX/+cBl/+23YOztt2DsAAAAHQAAAB0A
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAvxumLp8bpi6fnAZf/5
- wGX/+cBl//nAZf/5wWX/+cFl//nBZf/5wWX/+cFl//nBZf/5wWX/+cFl//nBZf/5wWX/+cFl//nBZf/5
- wGX/+cBl//nAZf/5wGX/7bdg7O23YOwAAAAdAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAABgAAAAbzu2Ty87tk8ve+Zv/3vmb/9r5m//a+Zv/3vmb/975m//a+Zv/2vmb/975m//e+Zv/2
- vmb/9r5m//e+Zv/3vmb/9r5m//a+Zv/3vmb/975m//a+Zv/2vmb/975m//e+Zv/2vmb/9r5m//C5Y/Tw
- uWP0AAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABvO7ZPLzu2Ty975m//e+Zv/2
- vmb/9r5m//e+Zv/3vmb/9r5m//a+Zv/3vmb/975m//a+Zv/2vmb/975m//e+Zv/2vmb/9r5m//e+Zv/3
- vmb/9r5m//a+Zv/3vmb/975m//a+Zv/2vmb/8Llj9PC5Y/QAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAOOuYLzjrmC89Ltn//S7Z//0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0
- u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0
- u2f/9Ltn/9KiWcjSolnIAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA465gvOOuYLz0u2f/9Ltn//S7aP/0
- u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0
- u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7Z//0u2f/0qJZyNKiWcgAAAADAAAAAwAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAEAAAABAAAABAAAAAQAAAAFAAAABQAAAAMAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAA
- AAAAdVU1GHVVNRjxuGj/8bho//G5aP/xuWj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/x
- uGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/x
- uGj/8bho//G4aP/xuGj/8bho/zIoFDMyKBQzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIA
- AAAFAAAABQAAAAUAAAAFAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAEAAAABAAAAAUA
- AAAFAAAAAwAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAB1VTUYdVU1GPG4aP/xuGj/8blo//G5aP/x
- uGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/x
- uGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/MigUMzIoFDMA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAUAAAAFAAAABQAAAAUAAAACAAAAAgAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4A
- AAAOfU1Xan1NV2q2cX/WtnF/1sN6i/fDeov3xXuO+8V7jvvAeo3xwHqN8aZqe76manu+QSkzS0EpM0sA
- AAAKAAAACuCqY7TgqmO07rVp/+61af/utWn/7rVp/+61af/utWn/7rZp/+62af/utmn/7rZp/+62af/u
- tmn/7rZp/+62af/utmn/7rZp/+62af/utmn/7rZp/+62af/utmn/7rZp/+62af/utmn/7rVp/+61af/u
- tWn/7rVp/+61af/utWn/7rVp/+61af/OnFvCzpxbwgAAAAIAAAACJi0aKCYtGih1nFGjdZxRo4i6X+uI
- ul/ricBj+onAY/qGwGL5hsBi+Xy1XeN8tV3jWINCjliDQo4HBwckBwcHJAAAAAIAAAACAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA59TVdqfU1XarZxf9a2cX/Ww3qL98N6i/fF
- e477xXuO+8B6jfHAeo3xpmp7vqZqe75BKTNLQSkzSwAAAAoAAAAK4KpjtOCqY7TutWn/7rVp/+61af/u
- tWn/7rVp/+61af/utmn/7rZp/+62af/utmn/7rZp/+62af/utmn/7rZp/+62af/utmn/7rZp/+62af/u
- tmn/7rZp/+62af/utmn/7rZp/+62af/utWn/7rVp/+61af/utWn/7rVp/+61af/utWn/7rVp/86cW8LO
- nFvCAAAAAgAAAAImLRooJi0aKHWcUaN1nFGjiLpf64i6X+uJwGP6icBj+obAYvmGwGL5fLVd43y1XeNY
- g0KOWINCjgcHByQHBwckAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADmF1ngZhdZ4HH
- eon/x3qJ/8d7i//He4v/x3yN/8d8jf/HfY//x32P/8d+kv/HfpL/x36U/8d+lP/Hf5b/x3+W/8aAmP/G
- gJj/wX2W9sF9lvbnqmb956pm/e2yav/tsmr/7bJq/+2yav/ts2r/7bNq/+2yav/tsmr/7bJq/+2yav/t
- smr/7bJq/+2zav/ts2r/7bJq/+2yav/tsmr/7bJq/+2yav/tsmr/7bNq/+2zav/tsmr/7bJq/+2yav/t
- smr/7bJq/+2yav/ts2r/7bNq/+2yav/tsmr/6rFp/eqxaf2RtmDgkbZg4JfBZv+XwWb/lMFl/5TBZf+R
- wWX/kcFl/47CZf+OwmX/i8Jk/4vCZP+IwmT/iMJk/4XBY/+FwWP/gsJi/4LCYv9ooFG8aKBRvAAAABUA
- AAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAwAAAAOYXWeBmF1ngcd6if/Heon/x3uL/8d7i//HfI3/x3yN/8d9j//H
- fY//x36S/8d+kv/HfpT/x36U/8d/lv/Hf5b/xoCY/8aAmP/BfZb2wX2W9ueqZv3nqmb97bJq/+2yav/t
- smr/7bJq/+2zav/ts2r/7bJq/+2yav/tsmr/7bJq/+2yav/tsmr/7bNq/+2zav/tsmr/7bJq/+2yav/t
- smr/7bJq/+2yav/ts2r/7bNq/+2yav/tsmr/7bJq/+2yav/tsmr/7bJq/+2zav/ts2r/7bJq/+2yav/q
- sWn96rFp/ZG2YOCRtmDgl8Fm/5fBZv+UwWX/lMFl/5HBZf+RwWX/jsJl/47CZf+LwmT/i8Jk/4jCZP+I
- wmT/hcFj/4XBY/+CwmL/gsJi/2igUbxooFG8AAAAFQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAW9c4DYvXOA2Md6if/H
- eon/x3uL/8d7i//HfI3/x3yN/8d9j//HfY//x36S/8d+kv/HfpT/x36U/8d/lv/Hf5b/xoCY/8aAmP/G
- gZr/xoGa/8aBnP/GgZz/tVhB/7VYQf/Ykl3/2JJd/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//q
- r2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//q
- r2v/6q9r/+qva//qr2v/6q9r/+qva//gqmP/4Kpj/5GEKv+RhCr/nMFm/5zBZv+awWb/msFm/5fBZv+X
- wWb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+IwmT/iMJk/4XBY/+FwWP/gsJi/4LCYv98
- vmD4fL5g+AcHByUHBwclAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAFAAAABb1zgNi9c4DYx3qJ/8d6if/He4v/x3uL/8d8jf/HfI3/x32P/8d9j//H
- fpL/x36S/8d+lP/HfpT/x3+W/8d/lv/GgJj/xoCY/8aBmv/GgZr/xoGc/8aBnP+1WEH/tVhB/9iSXf/Y
- kl3/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//q
- r2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+CqY//g
- qmP/kYQq/5GEKv+cwWb/nMFm/5rBZv+awWb/l8Fm/5fBZv+UwWX/lMFl/5HCZf+RwmX/jsJl/47CZf+L
- wmT/i8Jk/4jCZP+IwmT/hcFj/4XBY/+CwmL/gsJi/3y+YPh8vmD4BwcHJQcHByUAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAb1zgNS9c4DUx3qJ/8d6if/H
- e4v/x3uL/8d8jf/HfI3/x32Q/8d9kP/HfpL/x36S/8d/lP/Hf5T/x3+W/8d/lv/GgJj/xoCY/8aBmv/G
- gZr/xoGc/8aBnP/Ggp3/xoKd/7NXQv+zV0L/sldD/7JXQ//UjV3/1I1d/+esbP/nrGz/56xs/+esbP/n
- rGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/n
- rGz/56xs/+esbP/nrGz/56xs/92nZP/dp2T/lYEq/5WBKv+SgSr/koEq/5/BZv+fwWb/nMFm/5zBZv+a
- wWb/msFm/5fBZv+XwWb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+IwmT/iMJk/4XBY/+F
- wWP/gsJj/4LCY/98wGH5fMBh+QAAABcAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAEAAAABvXOA1L1zgNTHeon/x3qJ/8d7i//He4v/x3yN/8d8jf/HfZD/x32Q/8d+kv/H
- fpL/x3+U/8d/lP/Hf5b/x3+W/8aAmP/GgJj/xoGa/8aBmv/GgZz/xoGc/8aCnf/Ggp3/s1dC/7NXQv+y
- V0P/sldD/9SNXf/UjV3/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/n
- rGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/nrGz/3adk/92nZP+V
- gSr/lYEq/5KBKv+SgSr/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Fm/5fBZv+UwWX/lMFl/5HCZf+R
- wmX/jsJl/47CZf+LwmT/i8Jk/4jCZP+IwmT/hcFj/4XBY/+CwmP/gsJj/3zAYfl8wGH5AAAAFwAAABcA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo2FtaaNhbWnHeon/x3qJ/8d7i//H
- e4v/x3yN/8d8jf/HfZD/x32Q/8d+kv/HfpL/x36U/8d+lP/Hf5b/x3+W/8aAmP/GgJj/xoGa/8aBmv/G
- gZz/xoGc/8aCnf/Ggp3/xYKf/8WCn/+xVUT/sVVE/7BWRP+wVkT/sFZF/7BWRf/Ril7/0Ype/+SobP/k
- qGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/k
- qGz/5Khs/+SobP/kqGz/26Nk/9ujZP+Yfir/mH4q/5V+Kv+Vfir/k34r/5N+K/+iwGb/osBm/5/BZv+f
- wWb/nMFm/5zBZv+awWb/msFm/5fBZv+XwWb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+I
- wmT/iMJk/4XBY/+FwWP/gsJi/4LCYv9uqVXKbqlVygAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAACjYW1po2Ftacd6if/Heon/x3uL/8d7i//HfI3/x3yN/8d9kP/HfZD/x36S/8d+kv/H
- fpT/x36U/8d/lv/Hf5b/xoCY/8aAmP/GgZr/xoGa/8aBnP/GgZz/xoKd/8aCnf/Fgp//xYKf/7FVRP+x
- VUT/sFZE/7BWRP+wVkX/sFZF/9GKXv/Ril7/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/k
- qGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/5Khs/+SobP/bo2T/26Nk/5h+Kv+Y
- fir/lX4q/5V+Kv+Tfiv/k34r/6LAZv+iwGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Fm/5fBZv+U
- wWX/lMFl/5HCZf+RwmX/jsJl/47CZf+LwmT/i8Jk/4jCZP+IwmT/hcFj/4XBY/+CwmL/gsJi/26pVcpu
- qVXKAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAA8d6iP7Heoj+x3uL/8d7i//H
- fI3/x3yN/8d9kP/HfZD/x36S/8d+kv/HfpT/x36U/8d/lv/Hf5b/xoCY/8aAmP/GgZr/xoGa/8aBnP/G
- gZz/xoKd/8aCnf/Fgp//xYKf/8WCof/FgqH/rlRE/65URP+tU0X/rVNF/61URv+tVEb/rVRH/61UR//O
- iF//zohf/+Glbf/hpW3/4aVs/+GlbP/hpWz/4aVs/+GlbP/hpWz/4aVs/+GlbP/hpWz/4aVs/+Glbf/h
- pW3/4aVt/+Glbf/Zn2T/2Z9k/5p6Kv+aeir/mHoq/5h6Kv+Veyr/lXsq/5N8Kv+TfCr/pcBm/6XAZv+i
- wGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fCZv+Xwmb/lMFl/5TBZf+RwmX/kcJl/47CZf+O
- wmX/i8Jk/4vCZP+IwmT/iMJk/4XBY/+FwWP/gsJi/4LCYv8SHhIrEh4SKwAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAMAAAADx3qI/sd6iP7He4v/x3uL/8d8jf/HfI3/x32Q/8d9kP/HfpL/x36S/8d+lP/H
- fpT/x3+W/8d/lv/GgJj/xoCY/8aBmv/GgZr/xoGc/8aBnP/Ggp3/xoKd/8WCn//Fgp//xYKh/8WCof+u
- VET/rlRE/61TRf+tU0X/rVRG/61URv+tVEf/rVRH/86IX//OiF//4aVt/+Glbf/hpWz/4aVs/+GlbP/h
- pWz/4aVs/+GlbP/hpWz/4aVs/+GlbP/hpWz/4aVt/+Glbf/hpW3/4aVt/9mfZP/Zn2T/mnoq/5p6Kv+Y
- eir/mHoq/5V7Kv+Veyr/k3wq/5N8Kv+lwGb/pcBm/6LAZv+iwGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+a
- wWb/l8Jm/5fCZv+UwWX/lMFl/5HCZf+RwmX/jsJl/47CZf+LwmT/i8Jk/4jCZP+IwmT/hcFj/4XBY/+C
- wmL/gsJi/xIeEisSHhIrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl19oO5dfaDvHe4v/x3uL/8d8jf/H
- fI3/x32Q/8d9kP/HfpL/x36S/8d+lP/HfpT/x3+W/8d/lv/GgJj/xoCY/8aBmv/GgZr/xoGc/8aBnP/G
- gp3/xoKd/8WCn//Fgp//xYKh/8WCof/Fg6L/xYOi/6tSRv+rUkb/q1JG/6tSRv+qUkf/qlJH/6pSR/+q
- Ukf/qVJI/6lSSP/LhF//y4Rf/96hbP/eoWz/3qFs/96hbP/eoWz/3qFs/96hbP/eoWz/3qFs/96hbP/e
- oWz/3qFs/9abZP/Wm2T/nHcr/5x3K/+bdyv/m3cr/5h4K/+YeCv/lngq/5Z4Kv+TeCr/k3gq/6e/Zv+n
- v2b/pcBm/6XAZv+iwGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fCZv+Xwmb/lMFl/5TBZf+R
- wmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+IwmT/iMJk/4XBY/+FwWP/aZ1QrGmdUKwAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAACXX2g7l19oO8d7i//He4v/x3yN/8d8jf/HfZD/x32Q/8d+kv/HfpL/x36U/8d+lP/H
- f5b/x3+W/8aAmP/GgJj/xoGa/8aBmv/GgZz/xoGc/8aCnf/Ggp3/xYKf/8WCn//FgqH/xYKh/8WDov/F
- g6L/q1JG/6tSRv+rUkb/q1JG/6pSR/+qUkf/qlJH/6pSR/+pUkj/qVJI/8uEX//LhF//3qFs/96hbP/e
- oWz/3qFs/96hbP/eoWz/3qFs/96hbP/eoWz/3qFs/96hbP/eoWz/1ptk/9abZP+cdyv/nHcr/5t3K/+b
- dyv/mHgr/5h4K/+WeCr/lngq/5N4Kv+TeCr/p79m/6e/Zv+lwGb/pcBm/6LAZv+iwGb/n8Fm/5/BZv+c
- wWb/nMFm/5rBZv+awWb/l8Jm/5fCZv+UwWX/lMFl/5HCZf+RwmX/jsJl/47CZf+LwmT/i8Jk/4jCZP+I
- wmT/hcFj/4XBY/9pnVCsaZ1QrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALx1hLC8dYSwx3yN/8d8jf/H
- fY//x32P/8d+kv/HfpL/x36U/8d+lP/Hf5b/x3+W/8aAmP/GgJj/xoGa/8aBmv/GgZz/xoGc/8aCnf/G
- gp3/xYKf/8WCn//FgqH/xYKh/8SCov/EgqL/xIKk/8SCpP+pUEb/qVBG/6hQR/+oUEf/p1FI/6dRSP+n
- UUn/p1FJ/6ZRSf+mUUn/plFK/6ZRSv/IgWD/yIFg/9udbf/bnW3/251s/9udbP/bnWz/251s/9udbP/b
- nWz/1Jhk/9SYZP+ecyr/nnMq/5x0Kv+cdCr/mnQq/5p0Kv+YdCr/mHQq/5Z1K/+WdSv/lHYr/5R2K/+p
- v2b/qb9m/6fAZv+nwGb/pcBm/6XAZv+iwGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fCZv+X
- wmb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+IwmT/iMJk/4K9YfWCvWH1AAAAAwAAAAMA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAvHWEsLx1hLDHfI3/x3yN/8d9j//HfY//x36S/8d+kv/HfpT/x36U/8d/lv/H
- f5b/xoCY/8aAmP/GgZr/xoGa/8aBnP/GgZz/xoKd/8aCnf/Fgp//xYKf/8WCof/FgqH/xIKi/8SCov/E
- gqT/xIKk/6lQRv+pUEb/qFBH/6hQR/+nUUj/p1FI/6dRSf+nUUn/plFJ/6ZRSf+mUUr/plFK/8iBYP/I
- gWD/251t/9udbf/bnWz/251s/9udbP/bnWz/251s/9udbP/UmGT/1Jhk/55zKv+ecyr/nHQq/5x0Kv+a
- dCr/mnQq/5h0Kv+YdCr/lnUr/5Z1K/+Udiv/lHYr/6m/Zv+pv2b/p8Bm/6fAZv+lwGb/pcBm/6LAZv+i
- wGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Jm/5fCZv+UwWX/lMFl/5HCZf+RwmX/jsJl/47CZf+L
- wmT/i8Jk/4jCZP+IwmT/gr1h9YK9YfUAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDeovkw3qL5Md9j//H
- fY//x36S/8d+kv/Hf5T/x3+U/8d/lv/Hf5b/xoCY/8aAmP/GgZr/xoGa/8aBnP/GgZz/xoKd/8aCnf/F
- gp//xYKf/8WCof/FgqH/xIKi/8SCov/EgqT/xIKk/8ODpv/Dg6b/pk5H/6ZOR/+lT0j/pU9I/6VPSf+l
- T0n/pE9J/6RPSf+kT0r/pE9K/6NPSv+jT0r/o09L/6NPS//FfmH/xX5h/9iZbP/YmWz/2Jlt/9iZbf/R
- lGT/0ZRk/6BwK/+gcCv/nnAr/55wK/+ccCv/nHAr/5pxK/+acSv/mHEr/5hxK/+Wcir/lnIq/5RyK/+U
- civ/rL5m/6y+Zv+pv2b/qb9m/6e/Zv+nv2b/pMBm/6TAZv+iwGb/osBm/5/BZv+fwWb/nMFm/5zBZv+a
- wWb/msFm/5fCZv+Xwmb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP+IwWP/iMFj/wAAAAcA
- AAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAMN6i+TDeovkx32P/8d9j//HfpL/x36S/8d/lP/Hf5T/x3+W/8d/lv/G
- gJj/xoCY/8aBmv/GgZr/xoGc/8aBnP/Ggp3/xoKd/8WCn//Fgp//xYKh/8WCof/EgqL/xIKi/8SCpP/E
- gqT/w4Om/8ODpv+mTkf/pk5H/6VPSP+lT0j/pU9J/6VPSf+kT0n/pE9J/6RPSv+kT0r/o09K/6NPSv+j
- T0v/o09L/8V+Yf/FfmH/2Jls/9iZbP/YmW3/2Jlt/9GUZP/RlGT/oHAr/6BwK/+ecCv/nnAr/5xwK/+c
- cCv/mnEr/5pxK/+YcSv/mHEr/5ZyKv+Wcir/lHIr/5RyK/+svmb/rL5m/6m/Zv+pv2b/p79m/6e/Zv+k
- wGb/pMBm/6LAZv+iwGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Jm/5fCZv+UwWX/lMFl/5HCZf+R
- wmX/jsJl/47CZf+LwmT/i8Jk/4jBY/+IwWP/AAAABwAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxXuO68V7juvH
- fpL/x36S/8d+lP/HfpT/x3+W/8d/lv/GgJj/xoCY/8aBmv/GgZr/xoGc/8aBnP/Ggp3/xoKd/8WCn//F
- gp//xYKh/8WCof/EgqL/xIKi/8SCpP/EgqT/w4Ol/8ODpf/Dgqf/w4Kn/6JMSP+iTEj/ok1J/6JNSf+h
- TUn/oU1J/6FNSv+hTUr/oExK/6BMSv+gTUv/oE1L/59MS/+fTEv/n01M/59NTP/GgWP/xoFj/9KSaP/S
- kmj/omwr/6JsK/+fbCr/n2wq/51tKv+dbSr/m20q/5ttKv+abiv/mm4r/5duK/+Xbiv/lW4r/5VuK/+T
- byv/k28r/669Zf+uvWX/rL5l/6y+Zf+pvmb/qb5m/6e/Zv+nv2b/pMBm/6TAZv+iwGb/osBm/5/BZv+f
- wWb/nMFm/5zBZv+awWb/msFm/5fBZv+XwWb/lMFl/5TBZf+RwmX/kcJl/47CZf+OwmX/i8Jk/4vCZP8A
- AAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFe47rxXuO68d+kv/HfpL/x36U/8d+lP/Hf5b/x3+W/8aAmP/G
- gJj/xoGa/8aBmv/GgZz/xoGc/8aCnf/Ggp3/xYKf/8WCn//FgqH/xYKh/8SCov/EgqL/xIKk/8SCpP/D
- g6X/w4Ol/8OCp//Dgqf/okxI/6JMSP+iTUn/ok1J/6FNSf+hTUn/oU1K/6FNSv+gTEr/oExK/6BNS/+g
- TUv/n0xL/59MS/+fTUz/n01M/8aBY//GgWP/0pJo/9KSaP+ibCv/omwr/59sKv+fbCr/nW0q/51tKv+b
- bSr/m20q/5puK/+abiv/l24r/5duK/+Vbiv/lW4r/5NvK/+Tbyv/rr1l/669Zf+svmX/rL5l/6m+Zv+p
- vmb/p79m/6e/Zv+kwGb/pMBm/6LAZv+iwGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Fm/5fBZv+U
- wWX/lMFl/5HCZf+RwmX/jsJl/47CZf+LwmT/i8Jk/wAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMN7j9DD
- e4/Qx36U/8d+lP/Hf5b/x3+W/8aAmP/GgJj/xoGa/8aBmv/GgZz/xoGc/8aCnf/Ggp3/xYKf/8WCn//F
- gqH/xYKh/8SCov/EgqL/xIKk/8SCpP/Dg6X/w4Ol/8ODp//Dg6f/woOo/8KDqP+gS0n/oEtJ/59LSf+f
- S0n/nktK/55LSv+dSkr/nUpK/51KS/+dSkv/nEpL/5xKS/+cSkz/nEpM/5tKTP+bSkz/m0pN/5tKTf+k
- aCz/pGgs/6BoKv+gaCr/n2gq/59oKv+caSr/nGkq/5tqKv+bair/mGoq/5hqKv+Xayr/l2sq/5VsK/+V
- bCv/k2wr/5NsK/+wvWX/sL1l/669Zf+uvWX/q75l/6u+Zf+pvmb/qb5m/6e/Zv+nv2b/pMBm/6TAZv+i
- wGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fBZv+XwWb/lMFl/5TBZf+RwWX/kcFl/43BZPyN
- wWT8AAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw3uP0MN7j9DHfpT/x36U/8d/lv/Hf5b/xoCY/8aAmP/G
- gZr/xoGa/8aBnP/GgZz/xoKd/8aCnf/Fgp//xYKf/8WCof/FgqH/xIKi/8SCov/EgqT/xIKk/8ODpf/D
- g6X/w4On/8ODp//Cg6j/woOo/6BLSf+gS0n/n0tJ/59LSf+eS0r/nktK/51KSv+dSkr/nUpL/51KS/+c
- Skv/nEpL/5xKTP+cSkz/m0pM/5tKTP+bSk3/m0pN/6RoLP+kaCz/oGgq/6BoKv+faCr/n2gq/5xpKv+c
- aSr/m2oq/5tqKv+Yair/mGoq/5drKv+Xayr/lWwr/5VsK/+TbCv/k2wr/7C9Zf+wvWX/rr1l/669Zf+r
- vmX/q75l/6m+Zv+pvmb/p79m/6e/Zv+kwGb/pMBm/6LAZv+iwGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+a
- wWb/l8Fm/5fBZv+UwWX/lMFl/5HBZf+RwWX/jcFk/I3BZPwAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6
- d4tyuneLcsd/lv/Hf5b/xoCY/8aAmP/GgZr/xoGa/8aBnP/GgZz/xoKd/8aCnf/Fgp//xYKf/8WCof/F
- gqH/xIKi/8SCov/EgqT/xIKk/8ODpf/Dg6X/woOn/8KDp//Cg6j/woOo/8GCqf/Bgqn/nUlK/51JSv+c
- SEr/nEhK/5tISv+bSEr/mkhL/5pIS/+aSEv/mkhL/5lIS/+ZSEv/mEhM/5hITP+YSE3/mEhN/4xBPP+M
- QTz/gkEh/4JBIf+gZCn/oGQp/55lKf+eZSn/m2Uq/5tlKv+aZir/mmYq/5hmKv+YZir/lmcq/5ZnKv+U
- aCv/lGgr/5NpK/+TaSv/srxk/7K8ZP+wvWX/sL1l/669Zf+uvWX/q75l/6u+Zf+pvmb/qb5m/6e/Zv+n
- v2b/pcBm/6XAZv+iwGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fBZv+XwWb/lMFl/5TBZf+J
- t2DZibdg2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALp3i3K6d4tyx3+W/8d/lv/GgJj/xoCY/8aBmv/G
- gZr/xoGc/8aBnP/Ggp3/xoKd/8WCn//Fgp//xYKh/8WCof/EgqL/xIKi/8SCpP/EgqT/w4Ol/8ODpf/C
- g6f/woOn/8KDqP/Cg6j/wYKp/8GCqf+dSUr/nUlK/5xISv+cSEr/m0hK/5tISv+aSEv/mkhL/5pIS/+a
- SEv/mUhL/5lIS/+YSEz/mEhM/5hITf+YSE3/jEE8/4xBPP+CQSH/gkEh/6BkKf+gZCn/nmUp/55lKf+b
- ZSr/m2Uq/5pmKv+aZir/mGYq/5hmKv+WZyr/lmcq/5RoK/+UaCv/k2kr/5NpK/+yvGT/srxk/7C9Zf+w
- vWX/rr1l/669Zf+rvmX/q75l/6m+Zv+pvmb/p79m/6e/Zv+lwGb/pcBm/6LAZv+iwGb/n8Fm/5/BZv+c
- wWb/nMFm/5rBZv+awWb/l8Fm/5fBZv+UwWX/lMFl/4m3YNmJt2DZAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAcVVVCXFVVQnGgJj/xoCY/8aBmv/GgZr/xoGc/8aBnP/Ggp3/xoKd/8WCn//Fgp//xYKh/8WCof/E
- gqL/xIKi/8SCpP/EgqT/w4Ol/8ODpf/Cg6f/woOn/8KDqP/Cg6j/wYKq/8GCqv/Agqr/wIKq/5lGSv+Z
- Rkr/mEZL/5hGS/+YRkv/mEZL/5dGS/+XRkv/lkZL/5ZGS/+VRkz/lUZM/5VFTP+VRUz/lEVN/5RFTf95
- Mx//eTMf/3YyHv92Mh7/nmAp/55gKf+cYSn/nGEp/5phKf+aYSn/mGIp/5hiKf+XYyr/l2Mq/5VkKv+V
- ZCr/lGQq/5RkKv+SZSv/kmUr/7S7ZP+0u2T/srxk/7K8ZP+wvWX/sL1l/669Zf+uvWX/q75l/6u+Zf+p
- v2b/qb9m/6e/Zv+nv2b/pcBm/6XAZv+iwGb/osBm/5/BZv+fwWb/nMFm/5zBZv+awWb/msFm/5fBZv+X
- wWb/ZIBEUmSARFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxVVUJcVVVCcaAmP/GgJj/xoGa/8aBmv/G
- gZz/xoGc/8aCnf/Ggp3/xYKf/8WCn//FgqH/xYKh/8SCov/EgqL/xIKk/8SCpP/Dg6X/w4Ol/8KDp//C
- g6f/woOo/8KDqP/Bgqr/wYKq/8CCqv/Agqr/mUZK/5lGSv+YRkv/mEZL/5hGS/+YRkv/l0ZL/5dGS/+W
- Rkv/lkZL/5VGTP+VRkz/lUVM/5VFTP+URU3/lEVN/3kzH/95Mx//djIe/3YyHv+eYCn/nmAp/5xhKf+c
- YSn/mmEp/5phKf+YYin/mGIp/5djKv+XYyr/lWQq/5VkKv+UZCr/lGQq/5JlK/+SZSv/tLtk/7S7ZP+y
- vGT/srxk/7C9Zf+wvWX/rr1l/669Zf+rvmX/q75l/6m/Zv+pv2b/p79m/6e/Zv+lwGb/pcBm/6LAZv+i
- wGb/n8Fm/5/BZv+cwWb/nMFm/5rBZv+awWb/l8Fm/5fBZv9kgERSZIBEUgAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAEAAAABwH2W1MB9ltTGgZz/xoGc/8SBnf/EgZ3/xIGf/8SBn//EgaH/xIGh/8OBov/D
- gaL/woGk/8KBpP/CgqX/woKl/8GBpv/Bgab/wIGo/8CBqP/Agan/wIGp/7+Bqv+/gar/v4Ks/7+CrP+W
- REv/lkRL/5VES/+VREv/lENL/5RDS/+TQ0v/k0NL/5JDTP+SQ0z/kkNM/5JDTP+RQ0z/kUNM/5FDTP+R
- Q0z/djAe/3YwHv90MB7/dDAe/5dXJ/+XVyf/m10p/5tdKf+aXin/ml4p/5deKf+XXin/ll8q/5ZfKv+U
- YCr/lGAq/5NhKv+TYSr/kWIr/5FiK/+2umP/trpj/7O7Y/+zu2P/sLxk/7C8ZP+uvGT/rrxk/6y9ZP+s
- vWT/qr1l/6q9Zf+nvmX/p75l/6W/Zf+lv2X/o79m/6O/Zv+gwGb/oMBm/53AZv+dwGb/nMFm/5zBZv+Z
- wGX7mcBl+wAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAHAfZbUwH2W1MaBnP/G
- gZz/xIGd/8SBnf/EgZ//xIGf/8SBof/EgaH/w4Gi/8OBov/CgaT/woGk/8KCpf/CgqX/wYGm/8GBpv/A
- gaj/wIGo/8CBqf/Agan/v4Gq/7+Bqv+/gqz/v4Ks/5ZES/+WREv/lURL/5VES/+UQ0v/lENL/5NDS/+T
- Q0v/kkNM/5JDTP+SQ0z/kkNM/5FDTP+RQ0z/kUNM/5FDTP92MB7/djAe/3QwHv90MB7/l1cn/5dXJ/+b
- XSn/m10p/5peKf+aXin/l14p/5deKf+WXyr/ll8q/5RgKv+UYCr/k2Eq/5NhKv+RYiv/kWIr/7a6Y/+2
- umP/s7tj/7O7Y/+wvGT/sLxk/668ZP+uvGT/rL1k/6y9ZP+qvWX/qr1l/6e+Zf+nvmX/pb9l/6W/Zf+j
- v2b/o79m/6DAZv+gwGb/ncBm/53AZv+cwWb/nMFm/5nAZfuZwGX7AAAABgAAAAYAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
- AAABPCtHLzwrRy+eecTOnnnEzqqD1v6qg9b+gkCG/4JAhv9/QIf/f0CH/3w/iv98P4r/ej6M/3o+jP92
- PY7/dj2O/3M8kP9zPJD/cDuS/3A7kv9tOpT/bTqU/2o5lv9qOZb/ZjiY/2Y4mP9jNpn/YzaZ/2A1m/9g
- NZv/TB5O/0weTv9pLEj/aSxI/5BBS/+QQUv/kEFM/5BBTP+PQUz/j0FM/45ATP+OQEz/jUBM/41ATP+L
- P0n/iz9J/3QuHf90Lh3/ci4e/3IuHv+LSST/i0kk/5pZKP+aWSj/mFoo/5haKP+WWyn/llsp/5VcKf+V
- XCn/kl0p/5JdKf9mVB//ZlQf/0NVGf9DVRn/T5U0/0+VNP9Nlzb/TZc2/0uZOP9LmTj/SZo6/0maOv9H
- mzv/R5s7/0ScPf9EnD3/Qp4+/0KePv9An0D/QJ9A/z6gQf8+oEH/O6FD/zuhQ/84okT/OKJE/zaiRv82
- okb/UdCj/1HQo/9LwKLSS8Ci0hQ1LT8UNS0/AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAE8K0cvPCtHL555xM6eecTOqoPW/qqD1v6C
- QIb/gkCG/39Ah/9/QIf/fD+K/3w/iv96Poz/ej6M/3Y9jv92PY7/czyQ/3M8kP9wO5L/cDuS/206lP9t
- OpT/ajmW/2o5lv9mOJj/ZjiY/2M2mf9jNpn/YDWb/2A1m/9MHk7/TB5O/2ksSP9pLEj/kEFL/5BBS/+Q
- QUz/kEFM/49BTP+PQUz/jkBM/45ATP+NQEz/jUBM/4s/Sf+LP0n/dC4d/3QuHf9yLh7/ci4e/4tJJP+L
- SST/mlko/5pZKP+YWij/mFoo/5ZbKf+WWyn/lVwp/5VcKf+SXSn/kl0p/2ZUH/9mVB//Q1UZ/0NVGf9P
- lTT/T5U0/02XNv9Nlzb/S5k4/0uZOP9Jmjr/SZo6/0ebO/9Hmzv/RJw9/0ScPf9Cnj7/Qp4+/0CfQP9A
- n0D/PqBB/z6gQf87oUP/O6FD/ziiRP84okT/NqJG/zaiRv9R0KP/UdCj/0vAotJLwKLSFDUtPxQ1LT8A
- AAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAij
- fMDDo3zAw7GH1f+xh9X/roXW/66F1v+rhNj/q4TY/6N5zf+jec3/fkCJ/35Aif98P4v/fD+L/3k+jf95
- Po3/dj2Q/3Y9kP9zPJL/czyS/3A7k/9wO5P/bDqV/2w6lf9pOZf/aTmX/2Y3mf9mN5n/Yjaa/2I2mv9f
- NJz/XzSc/1UshP9VLIT/QxhF/0MYRf9BGEX/QRhF/3ExSf9xMUn/iz5M/4s+TP+KPkz/ij5M/4k9TP+J
- PUz/hjtH/4Y7R/9yKx3/cisd/3ArHf9wKx3/hkIj/4ZCI/+YVSf/mFUn/5ZWKP+WVij/lVco/5VXKP93
- USH/d1Eh/0FHFP9BRxT/QEgV/0BIFf9Mfir/TH4q/0+UM/9PlDP/TpY1/06WNf9LmDf/S5g3/0maOf9J
- mjn/R5o7/0eaO/9FnDz/RZw8/0OePv9Dnj7/QZ9A/0GfQP8+n0H/Pp9B/zyhQ/88oUP/OaFE/zmhRP9L
- woX/S8KF/1bYs/9W2LP/VNi2/1TYtv9R2bn/Udm5/0S8o8tEvKPLAAAAFAAAABQAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACKN8wMOjfMDDsYfV/7GH1f+uhdb/roXW/6uE2P+r
- hNj/o3nN/6N5zf9+QIn/fkCJ/3w/i/98P4v/eT6N/3k+jf92PZD/dj2Q/3M8kv9zPJL/cDuT/3A7k/9s
- OpX/bDqV/2k5l/9pOZf/ZjeZ/2Y3mf9iNpr/Yjaa/180nP9fNJz/VSyE/1UshP9DGEX/QxhF/0EYRf9B
- GEX/cTFJ/3ExSf+LPkz/iz5M/4o+TP+KPkz/iT1M/4k9TP+GO0f/hjtH/3IrHf9yKx3/cCsd/3ArHf+G
- QiP/hkIj/5hVJ/+YVSf/llYo/5ZWKP+VVyj/lVco/3dRIf93USH/QUcU/0FHFP9ASBX/QEgV/0x+Kv9M
- fir/T5Qz/0+UM/9OljX/TpY1/0uYN/9LmDf/SZo5/0maOf9Hmjv/R5o7/0WcPP9FnDz/Q54+/0OePv9B
- n0D/QZ9A/z6fQf8+n0H/PKFD/zyhQ/85oUT/OaFE/0vChf9LwoX/Vtiz/1bYs/9U2Lb/VNi2/1HZuf9R
- 2bn/RLyjy0S8o8sAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACLOIzu+z
- iM7vtInT/7SJ0/+xh9X/sYfV/66F1v+uhdb/q4TY/6uE2P+ogtn/qILZ/592zf+fds3/fD+N/3w/jf94
- P4//eD+P/3Y9kf92PZH/cj2T/3I9k/9vO5T/bzuU/2w6l/9sOpf/aDiY/2g4mP9lN5r/ZTea/2I2m/9i
- Npv/XjSd/140nf9aM57/WjOe/0IYR/9CGEf/PxdG/z8XRv88Fkb/PBZG/1glSP9YJUj/hjtL/4Y7S/+F
- Okv/hTpL/4M6Sv+DOkr/bykc/28pHP9tKR3/bSkd/4pFI/+KRSP/llEm/5ZRJv+UUif/lFIn/2NIGv9j
- SBr/QkIT/0JCE/9ARBT/QEQU/0BHFf9ARxX/UpEx/1KRMf9QkzP/UJMz/06VNf9OlTX/TJc3/0yXN/9K
- mTn/Spk5/0iaO/9Imjv/Rps8/0abPP9EnT7/RJ0+/0GfQP9Bn0D/QJ9C/0CfQv89oEP/PaBD/03Agf9N
- wIH/Wdiw/1nYsP9W2LP/Vtiz/1TZtv9U2bb/Udm6/1HZuv9O2rz/Ttq8/0rTufJK07nyAAAAGAAAABgA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIs4jO77OIzu+0idP/tInT/7GH1f+xh9X/roXW/66F1v+r
- hNj/q4TY/6iC2f+ogtn/n3bN/592zf98P43/fD+N/3g/j/94P4//dj2R/3Y9kf9yPZP/cj2T/287lP9v
- O5T/bDqX/2w6l/9oOJj/aDiY/2U3mv9lN5r/Yjab/2I2m/9eNJ3/XjSd/1oznv9aM57/QhhH/0IYR/8/
- F0b/PxdG/zwWRv88Fkb/WCVI/1glSP+GO0v/hjtL/4U6S/+FOkv/gzpK/4M6Sv9vKRz/bykc/20pHf9t
- KR3/ikUj/4pFI/+WUSb/llEm/5RSJ/+UUif/Y0ga/2NIGv9CQhP/QkIT/0BEFP9ARBT/QEcV/0BHFf9S
- kTH/UpEx/1CTM/9QkzP/TpU1/06VNf9Mlzf/TJc3/0qZOf9KmTn/SJo7/0iaO/9Gmzz/Rps8/0SdPv9E
- nT7/QZ9A/0GfQP9An0L/QJ9C/z2gQ/89oEP/TcCB/03Agf9Z2LD/Wdiw/1bYs/9W2LP/VNm2/1TZtv9R
- 2br/Udm6/07avP9O2rz/StO58krTufIAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABs4bJ3LOGydy3
- itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+uhdf/roXX/6uE2P+rhNj/qILZ/6iC2f+lgNr/pYDa/5x0z/+c
- dM//eD+Q/3g/kP91PpL/dT6S/3I8lP9yPJT/bzuW/287lv9sOpj/bDqY/2g4mf9oOJn/ZDeb/2Q3m/9h
- NZz/YTWc/100nv9dNJ7/WjKf/1oyn/9TLZX/Uy2V/zwWRv88Fkb/OhVG/zoVRv83FEX/NxRF/2QqSf9k
- Kkn/gDhM/4A4TP+AN0v/gDdL/2wnHP9sJxz/aycc/2snHP+TSiX/k0ol/5RNJv+UTSb/c0ce/3NHHv9B
- PhL/QT4S/0BAEv9AQBL/P0EU/z9BFP9RhSv/UYUr/1KQMf9SkDH/UJIz/1CSM/9OlDX/TpQ1/02WN/9N
- ljf/S5g5/0uYOf9Jmjv/SZo7/0ebPP9Hmzz/RJ0+/0SdPv9CnkD/Qp5A/0GfQv9Bn0L/UL9+/1C/fv9b
- 163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U2bb/VNm2/1HZuv9R2br/T9q8/0/avP9M2r//TNq//0TMteJE
- zLXiAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAGzhsncs4bJ3LeK0v+3itL/tInU/7SJ1P+xh9X/sYfV/66F1/+u
- hdf/q4TY/6uE2P+ogtn/qILZ/6WA2v+lgNr/nHTP/5x0z/94P5D/eD+Q/3U+kv91PpL/cjyU/3I8lP9v
- O5b/bzuW/2w6mP9sOpj/aDiZ/2g4mf9kN5v/ZDeb/2E1nP9hNZz/XTSe/100nv9aMp//WjKf/1Mtlf9T
- LZX/PBZG/zwWRv86FUb/OhVG/zcURf83FEX/ZCpJ/2QqSf+AOEz/gDhM/4A3S/+AN0v/bCcc/2wnHP9r
- Jxz/aycc/5NKJf+TSiX/lE0m/5RNJv9zRx7/c0ce/0E+Ev9BPhL/QEAS/0BAEv8/QRT/P0EU/1GFK/9R
- hSv/UpAx/1KQMf9QkjP/UJIz/06UNf9OlDX/TZY3/02WN/9LmDn/S5g5/0maO/9Jmjv/R5s8/0ebPP9E
- nT7/RJ0+/0KeQP9CnkD/QZ9C/0GfQv9Qv37/UL9+/1vXrf9b163/Wdiw/1nYsP9W2LP/Vtiz/1TZtv9U
- 2bb/Udm6/1HZuv9P2rz/T9q8/0zav/9M2r//RMy14kTMteIAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRbqJYkW6iWLmL0f+5
- i9H/t4rS/7eK0v+0idT/tInU/7GH1f+xh9X/robX/66G1/+rhNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+h
- ftv/oX7b/5hx0P+YcdD/dT6U/3U+lP9yPJX/cjyV/288l/9vPJf/azqZ/2s6mf9nOJr/Zzia/2Q3nP9k
- N5z/YDWe/2A1nv9cNJ//XDSf/1kyoP9ZMqD/VTCi/1Uwov9KJ4b/SieG/zgURv84FEb/NRNF/zUTRf8y
- EkX/MhJF/3s1S/97NUv/ezRL/3s0S/9tJyP/bScj/2klHP9pJRz/k0gk/5NIJP+RSSX/kUkl/0E5EP9B
- ORD/QDsR/0A7Ef8/PBL/PzwS/090Jf9PdCX/VI4u/1SOLv9TjzH/U48x/1GRMv9RkTL/T5M1/0+TNf9N
- ljf/TZY3/0yYOP9MmDj/SZk6/0mZOv9Imzz/SJs8/0WcPv9FnD7/Q55A/0OeQP9Svnv/Ur57/13Wqf9d
- 1qn/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W2LP/VNm2/1TZtv9R2bn/Udm5/0/avP9P2rz/TNq//0zav/9J
- 28L/SdvC/yiAcnIogHJyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAJFuoliRbqJYuYvR/7mL0f+3itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+u
- htf/robX/6uE2P+rhNj/qILZ/6iC2f+lgNr/pYDa/6F+2/+hftv/mHHQ/5hx0P91PpT/dT6U/3I8lf9y
- PJX/bzyX/288l/9rOpn/azqZ/2c4mv9nOJr/ZDec/2Q3nP9gNZ7/YDWe/1w0n/9cNJ//WTKg/1kyoP9V
- MKL/VTCi/0onhv9KJ4b/OBRG/zgURv81E0X/NRNF/zISRf8yEkX/ezVL/3s1S/97NEv/ezRL/20nI/9t
- JyP/aSUc/2klHP+TSCT/k0gk/5FJJf+RSSX/QTkQ/0E5EP9AOxH/QDsR/z88Ev8/PBL/T3Ql/090Jf9U
- ji7/VI4u/1OPMf9TjzH/UZEy/1GRMv9PkzX/T5M1/02WN/9Nljf/TJg4/0yYOP9JmTr/SZk6/0ibPP9I
- mzz/RZw+/0WcPv9DnkD/Q55A/1K+e/9Svnv/Xdap/13Wqf9b163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U
- 2bb/VNm2/1HZuf9R2bn/T9q8/0/avP9M2r//TNq//0nbwv9J28L/KIByciiAcnIAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABu4zO+buMzvm5
- i9H/uYvR/7eK0v+3itL/tInU/7SJ1P+xh9X/sYfV/66G1/+uhtf/q4TY/6uE2P+ogtn/qILZ/6WA2v+l
- gNr/oX7b/6F+2/+ee9z/nnvc/5Rv0f+Ub9H/cT2X/3E9l/9uPJn/bjyZ/2o6m/9qOpv/Zzic/2c4nP9j
- N53/Yzed/181n/9fNZ//XDOg/1wzoP9YMqL/WDKi/1Qvo/9UL6P/UC6k/1AupP9JKZj/SSmY/zMSR/8z
- Ekf/MBJF/zASRf9KHUf/Sh1H/3YxSv92MUr/dC9F/3QvRf9/NSD/fzUg/5FEJP+RRCT/XjsX/147F/8/
- NxD/PzcQ/z85Ef8/ORH/VH0m/1R9Jv9Wiiv/Voor/1WMLf9VjC3/U44w/1OOMP9SkTL/UpEy/1CTNP9Q
- kzT/TpU2/06VNv9Nlzj/TZc4/0qZOv9KmTr/SZo8/0maPP9GnD7/Rpw+/1S9eP9UvXj/X9Wm/1/Vpv9d
- 1qn/Xdap/1vXrf9b163/Wdiw/1nYsP9W2LP/Vtiz/1TZt/9U2bf/Udm5/1HZuf9P2rz/T9q8/0zav/9M
- 2r//SdvC/0nbwv9G2MP6RtjD+gAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAG7jM75u4zO+bmL0f+5i9H/t4rS/7eK0v+0idT/tInU/7GH1f+x
- h9X/robX/66G1/+rhNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+hftv/oX7b/5573P+ee9z/lG/R/5Rv0f9x
- PZf/cT2X/248mf9uPJn/ajqb/2o6m/9nOJz/Zzic/2M3nf9jN53/XzWf/181n/9cM6D/XDOg/1gyov9Y
- MqL/VC+j/1Qvo/9QLqT/UC6k/0kpmP9JKZj/MxJH/zMSR/8wEkX/MBJF/0odR/9KHUf/djFK/3YxSv90
- L0X/dC9F/381IP9/NSD/kUQk/5FEJP9eOxf/XjsX/z83EP8/NxD/PzkR/z85Ef9UfSb/VH0m/1aKK/9W
- iiv/VYwt/1WMLf9TjjD/U44w/1KRMv9SkTL/UJM0/1CTNP9OlTb/TpU2/02XOP9Nlzj/Spk6/0qZOv9J
- mjz/SZo8/0acPv9GnD7/VL14/1S9eP9f1ab/X9Wm/13Wqf9d1qn/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W
- 2LP/VNm3/1TZt/9R2bn/Udm5/0/avP9P2rz/TNq//0zav/9J28L/SdvC/0bYw/pG2MP6AAAACAAAAAgA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmTWYUZk1mFLyMz/+8
- jM//uovR/7qL0f+3itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+uhtf/robX/6uE2P+rhNj/qILZ/6iC2f+l
- gNr/pYDa/6F92/+hfdv/nnvc/5573P+aeN3/mnjd/5Bt0/+QbdP/bjya/248mv9qOpz/ajqc/2Y4nf9m
- OJ3/Yzee/2M3nv9eNaD/XjWg/1s0of9bNKH/VzKj/1cyo/9TL6T/Uy+k/08tpf9PLaX/Syym/0sspv9H
- Kqj/Ryqo/zwgiP88IIj/LRJN/y0STf9yLkn/ci5J/3MwSv9zMEr/lUYx/5VGMf+OPyL/jj8i/0E4EP9B
- OBD/UWge/1FoHv9ZhCb/WYQm/1iGKf9Yhin/Vokr/1aJK/9VjC3/VYwt/1SOMP9UjjD/UpAy/1KQMv9R
- kjT/UZI0/0+UNv9PlDb/TZY4/02WOP9LmDr/S5g6/0qaPP9Kmjz/Vrt1/1a7df9g1KH/YNSh/1/Vpv9f
- 1ab/Xdap/13Wqf9b163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U2bf/VNm3/1HZuf9R2bn/T9q8/0/avP9M
- 2r//TNq//0nbwv9J28L/RtvF/0bbxf8RLCwuESwsLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAGZNZhRmTWYUvIzP/7yMz/+6i9H/uovR/7eK0v+3itL/tInU/7SJ1P+x
- h9X/sYfV/66G1/+uhtf/q4TY/6uE2P+ogtn/qILZ/6WA2v+lgNr/oX3b/6F92/+ee9z/nnvc/5p43f+a
- eN3/kG3T/5Bt0/9uPJr/bjya/2o6nP9qOpz/Zjid/2Y4nf9jN57/Yzee/141oP9eNaD/WzSh/1s0of9X
- MqP/VzKj/1MvpP9TL6T/Ty2l/08tpf9LLKb/Syym/0cqqP9HKqj/PCCI/zwgiP8tEk3/LRJN/3IuSf9y
- Lkn/czBK/3MwSv+VRjH/lUYx/44/Iv+OPyL/QTgQ/0E4EP9RaB7/UWge/1mEJv9ZhCb/WIYp/1iGKf9W
- iSv/Vokr/1WMLf9VjC3/VI4w/1SOMP9SkDL/UpAy/1GSNP9RkjT/T5Q2/0+UNv9Nljj/TZY4/0uYOv9L
- mDr/Spo8/0qaPP9Wu3X/Vrt1/2DUof9g1KH/X9Wm/1/Vpv9d1qn/Xdap/1vXrf9b163/Wdiw/1nYsP9W
- 2LP/Vtiz/1TZt/9U2bf/Udm5/1HZuf9P2rz/T9q8/0zav/9M2r//SdvC/0nbwv9G28X/RtvF/xEsLC4R
- LCwuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApXuxW6V7sVu8
- jM//vIzP/7qL0f+6i9H/t4rS/7eK0v+0idT/tInU/7GH1f+xh9X/robX/66G1/+rhNj/q4TY/6iC2f+o
- gtn/pYDa/6WA2v+hfdv/oX3b/5573P+ee9z/mnjd/5p43f+Wdt7/lnbe/4xq1P+MatT/ajqd/2o6nf9m
- OZ//Zjmf/2I3oP9iN6D/XjWi/141ov9aM6P/WjOj/1EvpP9RL6T/SSyk/0kspP9KLKb/Siym/0orqP9K
- K6j/Rimp/0Ypqf9BJ6r/QSeq/z0lrP89Jaz/qXS8/ql0vP5AJkAUQCZAFEAAQARAAEAE2KNQ7tijUO5b
- fSH/W30h/1qAJP9agCT/WYMm/1mDJv9YhSj/WIUo/1SHKv9Uhyr/TYgs/02ILP9Niy7/TYsu/1KPMv9S
- jzL/UpE0/1KRNP9QlDb/UJQ2/06WOP9Oljj/TJg6/0yYOv9ZunL/Wbpy/2LTnf9i053/YNSh/2DUof9f
- 1aX/X9Wl/13Wqf9d1qn/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W2LP/VNm3/1TZt/9R2bn/Udm5/0/avP9P
- 2rz/TNq//0zav/9K28L/StvC/0bbxf9G28X/LJGEdCyRhHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACle7FbpXuxW7yMz/+8jM//uovR/7qL0f+3itL/t4rS/7SJ1P+0
- idT/sYfV/7GH1f+uhtf/robX/6uE2P+rhNj/qILZ/6iC2f+lgNr/pYDa/6F92/+hfdv/nnvc/5573P+a
- eN3/mnjd/5Z23v+Wdt7/jGrU/4xq1P9qOp3/ajqd/2Y5n/9mOZ//Yjeg/2I3oP9eNaL/XjWi/1ozo/9a
- M6P/US+k/1EvpP9JLKT/SSyk/0ospv9KLKb/Siuo/0orqP9GKan/Rimp/0Enqv9BJ6r/PSWs/z0lrP+p
- dLz+qXS8/kAmQBRAJkAUQABABEAAQATYo1Du2KNQ7lt9If9bfSH/WoAk/1qAJP9Zgyb/WYMm/1iFKP9Y
- hSj/VIcq/1SHKv9NiCz/TYgs/02LLv9Niy7/Uo8y/1KPMv9SkTT/UpE0/1CUNv9QlDb/TpY4/06WOP9M
- mDr/TJg6/1m6cv9ZunL/YtOd/2LTnf9g1KH/YNSh/1/Vpf9f1aX/Xdap/13Wqf9b163/W9et/1nYsP9Z
- 2LD/Vtiz/1bYs/9U2bf/VNm3/1HZuf9R2bn/T9q8/0/avP9M2r//TNq//0rbwv9K28L/RtvF/0bbxf8s
- kYR0LJGEdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCEv4uw
- hL+LvI3P/7yNz/+6i9H/uovR/7eK0v+3itL/tInU/7SJ1P+xh9X/sYfV/66G1/+uhtf/q4TY/6uE2P+o
- gtn/qILZ/6WA2v+lgNr/oX3b/6F92/+ee9z/nnvc/5p43f+aeN3/lnbe/5Z23v+Sc9//knPf/4pr2f+K
- a9n/Zjmh/2Y5of9ILqD/SC6g/xodnf8aHZ3/Fhue/xYbnv8VG5//FRuf/xQaoP8UGqD/Ehmh/xIZof8R
- GKL/ERii/xQYpf8UGKX/NiOq/zYjqv8+JrH/Piax/yIdSjQiHUo0AAAAAAAAAAAAAAAAAAAAAEN6NxdD
- ejcXXoks/16JLP9VfSL/VX0i/yBxHv8gcR7/FHAf/xRwH/8UcyH/FHMh/xR2JP8UdiT/FHgm/xR4Jv8T
- eyj/E3so/xR+Kv8Ufir/MIkx/zCJMf9Pljj/T5Y4/13Aev9dwHr/Y9KZ/2PSmf9i053/YtOd/2DUof9g
- 1KH/X9Wl/1/Vpf9d1qn/Xdap/1vXrf9b163/Wdiw/1nYsP9W2LP/Vtiz/1TZt/9U2bf/Udm6/1HZuv9P
- 2rz/T9q8/0zav/9M2r//StvC/0rbwv9G28X/RtvF/zewoJ83sKCfAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsIS/i7CEv4u8jc//vI3P/7qL0f+6i9H/t4rS/7eK0v+0
- idT/tInU/7GH1f+xh9X/robX/66G1/+rhNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+hfdv/oX3b/5573P+e
- e9z/mnjd/5p43f+Wdt7/lnbe/5Jz3/+Sc9//imvZ/4pr2f9mOaH/Zjmh/0guoP9ILqD/Gh2d/xodnf8W
- G57/Fhue/xUbn/8VG5//FBqg/xQaoP8SGaH/Ehmh/xEYov8RGKL/FBil/xQYpf82I6r/NiOq/z4msf8+
- JrH/Ih1KNCIdSjQAAAAAAAAAAAAAAAAAAAAAQ3o3F0N6NxdeiSz/Xoks/1V9Iv9VfSL/IHEe/yBxHv8U
- cB//FHAf/xRzIf8UcyH/FHYk/xR2JP8UeCb/FHgm/xN7KP8Teyj/FH4q/xR+Kv8wiTH/MIkx/0+WOP9P
- ljj/XcB6/13Aev9j0pn/Y9KZ/2LTnf9i053/YNSh/2DUof9f1aX/X9Wl/13Wqf9d1qn/W9et/1vXrf9Z
- 2LD/Wdiw/1bYs/9W2LP/VNm3/1TZt/9R2br/Udm6/0/avP9P2rz/TNq//0zav/9K28L/StvC/0bbxf9G
- 28X/N7CgnzewoJ8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACy
- hMCFsoTAhbyNz/+8jc//uovR/7qL0f+3itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+uhtf/robX/6uE2P+r
- hNj/qILZ/6iC2f+lgNr/pYDa/6F92/+hfdv/nnvc/5573P+aeN3/mnjd/5Z23v+Wdt7/knPf/5Jz3/+J
- bt//iW7f/yc61/8nOtf/HSm5/x0puf8XHJ7/Fxye/xYboP8WG6D/FRuh/xUbof8UGqL/FBqi/xIZo/8S
- GaP/ERik/xEYpP8QF6f/EBen/xIjy/8SI8v/HCzh/xws4f8SEjE5EhIxOQAAAAAAAAAAAAAAAAAAAAA3
- ZDcXN2Q3FzGmTf8xpk3/FpRB/xaUQf8UcSH/FHEh/xRwH/8UcB//FHMi/xRzIv8UdiT/FHYk/xR5Jv8U
- eSb/E3sp/xN7Kf8Tfiv/E34r/xSPQ/8Uj0P/GLN4/xizeP9XzJH/V8yR/2PSmf9j0pn/YtOd/2LTnf9g
- 1KH/YNSh/1/Vpf9f1aX/Xdap/13Wqf9b163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U2bf/VNm3/1HZuv9R
- 2br/T9q8/0/avP9M2r//TNq//0rbwv9K28L/RtvF/0bbxf83sp+YN7KfmAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKEwIWyhMCFvI3P/7yNz/+6i9H/uovR/7eK0v+3
- itL/tInU/7SJ1P+xh9X/sYfV/66G1/+uhtf/q4TY/6uE2P+ogtn/qILZ/6WA2v+lgNr/oX3b/6F92/+e
- e9z/nnvc/5p43f+aeN3/lnbe/5Z23v+Sc9//knPf/4lu3/+Jbt//JzrX/yc61/8dKbn/HSm5/xccnv8X
- HJ7/Fhug/xYboP8VG6H/FRuh/xQaov8UGqL/Ehmj/xIZo/8RGKT/ERik/xAXp/8QF6f/EiPL/xIjy/8c
- LOH/HCzh/xISMTkSEjE5AAAAAAAAAAAAAAAAAAAAADdkNxc3ZDcXMaZN/zGmTf8WlEH/FpRB/xRxIf8U
- cSH/FHAf/xRwH/8UcyL/FHMi/xR2JP8UdiT/FHkm/xR5Jv8Teyn/E3sp/xN+K/8Tfiv/FI9D/xSPQ/8Y
- s3j/GLN4/1fMkf9XzJH/Y9KZ/2PSmf9i053/YtOd/2DUof9g1KH/X9Wl/1/Vpf9d1qn/Xdap/1vXrf9b
- 163/Wdiw/1nYsP9W2LP/Vtiz/1TZt/9U2bf/Udm6/1HZuv9P2rz/T9q8/0zav/9M2r//StvC/0rbwv9G
- 28X/RtvF/zeyn5g3sp+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAqH62Sah+tkm8jM//vIzP/7qL0f+6i9H/t4rS/7eK0v+0idT/tInU/7GH1f+xh9X/robX/66G1/+r
- hNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+hfdv/oX3b/5573P+ee9z/mnjd/5p43f+Wdt7/lnbe/4lu3v+J
- bt7/JTjW/yU41v8jN9f/IzfX/yI22P8iNtj/ITXZ/yE12f8eM9b/HjPW/xwtzv8cLc7/GSrL/xkqy/8Y
- K9L/GCvS/xgt3P8YLdz/Fize/xYs3v8VKt//FSrf/xMo4P8TKOD/L4Dy/C+A8vwFChAxBQoQMQAPDyIA
- Dw8iLsix4i7IseIWnEf/FpxH/xefTP8Xn0z/F6FR/xehUf8XpFb/F6RW/xegU/8XoFP/F5xQ/xecUP8X
- oFf/F6BX/xirZ/8Yq2f/F7Bw/xewcP8YsnX/GLJ1/xi0ev8YtHr/F7Z//xe2f/9Ny5P/TcuT/2LTnf9i
- 053/YNSh/2DUof9f1aX/X9Wl/13Wqf9d1qn/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W2LP/VNm3/1TZt/9R
- 2bn/Udm5/0/avP9P2rz/TNq//0zav/9K28L/StvC/0bbxf9G28X/LZKFYC2ShWAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACofrZJqH62SbyMz/+8jM//uovR/7qL0f+3
- itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+uhtf/robX/6uE2P+rhNj/qILZ/6iC2f+lgNr/pYDa/6F92/+h
- fdv/nnvc/5573P+aeN3/mnjd/5Z23v+Wdt7/iW7e/4lu3v8lONb/JTjW/yM31/8jN9f/IjbY/yI22P8h
- Ndn/ITXZ/x4z1v8eM9b/HC3O/xwtzv8ZKsv/GSrL/xgr0v8YK9L/GC3c/xgt3P8WLN7/Fize/xUq3/8V
- Kt//Eyjg/xMo4P8vgPL8L4Dy/AUKEDEFChAxAA8PIgAPDyIuyLHiLsix4hacR/8WnEf/F59M/xefTP8X
- oVH/F6FR/xekVv8XpFb/F6BT/xegU/8XnFD/F5xQ/xegV/8XoFf/GKtn/xirZ/8XsHD/F7Bw/xiydf8Y
- snX/GLR6/xi0ev8Xtn//F7Z//03Lk/9Ny5P/YtOd/2LTnf9g1KH/YNSh/1/Vpf9f1aX/Xdap/13Wqf9b
- 163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U2bf/VNm3/1HZuf9R2bn/T9q8/0/avP9M2r//TNq//0rbwv9K
- 28L/RtvF/0bbxf8tkoVgLZKFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAGBggAhgYIAIvIzP/7yMz/+6i9H/uovR/7eK0v+3itL/tInU/7SJ1P+xh9X/sYfV/66G1/+u
- htf/q4TY/6uE2P+ogtn/qILZ/6WA2v+lgNr/oX3b/6F92/+ee9z/nnvc/5p43f+aeN3/jHHd/4xx3f8o
- ONX/KDjV/yY31v8mN9b/JDbX/yQ21/8jNdj/IzXY/yE02f8hNNn/HzPZ/x8z2f8eMtr/HjLa/xww2/8c
- MNv/Gi/b/xov2/8YLd3/GC3d/xcs3v8XLN7/Dije/w4o3v8DJd7/AyXe/wZw8v8GcPL/CHrz/wh68/8N
- wM//DcDP/wa0uv8GtLr/BItK/wSLSv8QmE3/EJhN/xejU/8Xo1P/GKVY/xilWP8YqF3/GKhd/xirYv8Y
- q2L/GK1n/xitZ/8Yr2z/GK9s/xixcf8YsXH/GLN2/xizdv8YtXv/GLV7/xe3gP8Xt4D/F7mF/xe5hf9M
- zJf/TMyX/2DUof9g1KH/X9Wm/1/Vpv9d1qn/Xdap/1vXrf9b163/Wdiw/1nYsP9W2LP/Vtiz/1TZt/9U
- 2bf/Udm5/1HZuf9P2rz/T9q8/0zav/9M2r//SdvC/0nbwv9G28X/RtvF/wsqIBgLKiAYAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGCACGBggAi8jM//vIzP/7qL0f+6
- i9H/t4rS/7eK0v+0idT/tInU/7GH1f+xh9X/robX/66G1/+rhNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+h
- fdv/oX3b/5573P+ee9z/mnjd/5p43f+Mcd3/jHHd/yg41f8oONX/JjfW/yY31v8kNtf/JDbX/yM12P8j
- Ndj/ITTZ/yE02f8fM9n/HzPZ/x4y2v8eMtr/HDDb/xww2/8aL9v/Gi/b/xgt3f8YLd3/Fyze/xcs3v8O
- KN7/Dije/wMl3v8DJd7/BnDy/wZw8v8IevP/CHrz/w3Az/8NwM//BrS6/wa0uv8Ei0r/BItK/xCYTf8Q
- mE3/F6NT/xejU/8YpVj/GKVY/xioXf8YqF3/GKti/xirYv8YrWf/GK1n/xivbP8Yr2z/GLFx/xixcf8Y
- s3b/GLN2/xi1e/8YtXv/F7eA/xe3gP8XuYX/F7mF/0zMl/9MzJf/YNSh/2DUof9f1ab/X9Wm/13Wqf9d
- 1qn/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W2LP/VNm3/1TZt/9R2bn/Udm5/0/avP9P2rz/TNq//0zav/9J
- 28L/SdvC/0bbxf9G28X/CyogGAsqIBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAALuLzu27i87tuYvR/7mL0f+3itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+u
- htf/robX/6uE2P+rhNj/qILZ/6iC2f+lgNr/pYDa/6F+2/+hftv/nnvc/5573P+Qc9z/kHPc/yk31P8p
- N9T/KDfV/yg31f8mNtb/JjbW/yQ11v8kNdb/IzXY/yM12P8hM9j/ITPY/yAy2f8gMtn/HjHa/x4x2v8c
- MNr/HDDa/xsv3P8bL9z/FSzc/xUs3P8DJtv/Aybb/wIl3P8CJdz/BUvo/wVL6P8Hb/L/B2/y/wZv7f8G
- b+3/BJa4/wSWuP8Hs73/B7O9/wWghv8FoIb/AotP/wKLT/8DjVP/A41T/xSjWf8Uo1n/GKle/xipXv8Y
- rGP/GKxj/xiuaP8Yrmj/GLBu/xiwbv8YsXL/GLFy/xezeP8Xs3j/GLZ8/xi2fP8Xt4H/F7eB/xe5hv8X
- uYb/FruK/xa7iv9KzZz/Ss2c/1/Vpv9f1ab/Xdap/13Wqf9b163/W9et/1nYsP9Z2LD/Vtiz/1bYs/9U
- 2bf/VNm3/1HZuf9R2bn/T9q8/0/avP9M2r//TNq//0nbwv9J28L/RdbB8EXWwfAAAAABAAAAAQAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu4vO7buLzu25
- i9H/uYvR/7eK0v+3itL/tInU/7SJ1P+xh9X/sYfV/66G1/+uhtf/q4TY/6uE2P+ogtn/qILZ/6WA2v+l
- gNr/oX7b/6F+2/+ee9z/nnvc/5Bz3P+Qc9z/KTfU/yk31P8oN9X/KDfV/yY21v8mNtb/JDXW/yQ11v8j
- Ndj/IzXY/yEz2P8hM9j/IDLZ/yAy2f8eMdr/HjHa/xww2v8cMNr/Gy/c/xsv3P8VLNz/FSzc/wMm2/8D
- Jtv/AiXc/wIl3P8FS+j/BUvo/wdv8v8Hb/L/Bm/t/wZv7f8Elrj/BJa4/wezvf8Hs73/BaCG/wWghv8C
- i0//AotP/wONU/8DjVP/FKNZ/xSjWf8YqV7/GKle/xisY/8YrGP/GK5o/xiuaP8YsG7/GLBu/xixcv8Y
- sXL/F7N4/xezeP8Ytnz/GLZ8/xe3gf8Xt4H/F7mG/xe5hv8Wu4r/FruK/0rNnP9KzZz/X9Wm/1/Vpv9d
- 1qn/Xdap/1vXrf9b163/Wdiw/1nYsP9W2LP/Vtiz/1TZt/9U2bf/Udm5/1HZuf9P2rz/T9q8/0zav/9M
- 2r//SdvC/0nbwv9F1sHwRdbB8AAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmebkopnm5KLmL0f+5i9H/t4rS/7eK0v+0idT/tInU/7GH1f+x
- h9X/robX/66G1/+rhNj/q4TY/6iC2f+ogtn/pYDa/6WA2v+hftv/oX7b/5R12/+Uddv/KzjT/ys40/8p
- N9P/KTfT/yg31f8oN9X/JjXW/yY11v8lNdf/JTXX/yM02P8jNNj/ITTY/yE02P8gMtn/IDLZ/x4x2f8e
- Mdn/HTDb/x0w2/8TLNv/Eyzb/wMn2v8DJ9r/Aybb/wMm2/8DJd3/AyXd/wdt8f8HbfH/B27y/wdu8v8C
- YcH/AmHB/wFht/8BYbf/B7O//wezv/8HtML/B7TC/wOLUf8Di1H/A41V/wONVf8Dj1r/A49a/xGiYP8R
- omD/GK1l/xitZf8Yr2r/GK9q/xiwb/8YsG//GLJ0/xiydP8YtHn/GLR5/xe2ff8Xtn3/F7iC/xe4gv8X
- uof/F7qH/xa7i/8Wu4v/FbyQ/xW8kP9JzqD/Sc6g/13Wqf9d1qn/W9et/1vXrf9Z2LD/Wdiw/1bZs/9W
- 2bP/VNm3/1TZt/9R2bn/Udm5/0/avP9P2rz/TNq//0zav/9J28L/SdvC/y6EdjguhHY4AAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKZ5uSim
- ebkouYvR/7mL0f+3itL/t4rS/7SJ1P+0idT/sYfV/7GH1f+uhtf/robX/6uE2P+rhNj/qILZ/6iC2f+l
- gNr/pYDa/6F+2/+hftv/lHXb/5R12/8rONP/KzjT/yk30/8pN9P/KDfV/yg31f8mNdb/JjXW/yU11/8l
- Ndf/IzTY/yM02P8hNNj/ITTY/yAy2f8gMtn/HjHZ/x4x2f8dMNv/HTDb/xMs2/8TLNv/Ayfa/wMn2v8D
- Jtv/Aybb/wMl3f8DJd3/B23x/wdt8f8HbvL/B27y/wJhwf8CYcH/AWG3/wFht/8Hs7//B7O//we0wv8H
- tML/A4tR/wOLUf8DjVX/A41V/wOPWv8Dj1r/EaJg/xGiYP8YrWX/GK1l/xivav8Yr2r/GLBv/xiwb/8Y
- snT/GLJ0/xi0ef8YtHn/F7Z9/xe2ff8XuIL/F7iC/xe6h/8Xuof/FruL/xa7i/8VvJD/FbyQ/0nOoP9J
- zqD/Xdap/13Wqf9b163/W9et/1nYsP9Z2LD/Vtmz/1bZs/9U2bf/VNm3/1HZuf9R2bn/T9q8/0/avP9M
- 2r//TNq//0nbwv9J28L/LoR2OC6EdjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1iMyptYjMqbeK0v+3itL/tInU/7SJ1P+x
- h9X/sYfV/66F1/+uhdf/q4TY/6uE2P+ogtn/qILZ/6WA2v+lgNr/mHja/5h42v8sN9H/LDfR/ys30/8r
- N9P/KTbT/yk20/8oNtX/KDbV/yc11v8nNdb/JTTX/yU01/8jNNf/IzTX/yIz2f8iM9n/IDLZ/yAy2f8f
- Mdr/HzHa/xov2v8aL9r/BCjZ/wQo2f8EJ9r/BCfa/wMm2/8DJtv/B13t/wdd7f8HbPH/B2zx/wdt8f8H
- bfH/AV24/wFduP8BX7r/AV+6/weuwv8HrsL/B7PF/wezxf8Hq6//B6uv/wOMV/8DjFf/A45c/wOOXP8D
- kWH/A5Fh/xaqZv8Wqmb/GLBs/xiwbP8YsXD/GLFw/xizdf8Ys3X/GLV6/xi1ev8Xt3//F7d//xe5g/8X
- uYP/F7qI/xe6iP8Wu4z/FruM/xW8kf8VvJH/Fb6V/xW+lf9Hz6X/R8+l/1vXrf9b163/Wdiw/1nYsP9W
- 2LP/Vtiz/1TZtv9U2bb/Udm6/1HZuv9P2rz/T9q8/0zav/9M2r//RMqzsUTKs7EAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAALWIzKm1iMypt4rS/7eK0v+0idT/tInU/7GH1f+xh9X/roXX/66F1/+rhNj/q4TY/6iC2f+o
- gtn/pYDa/6WA2v+YeNr/mHja/yw30f8sN9H/KzfT/ys30/8pNtP/KTbT/yg21f8oNtX/JzXW/yc11v8l
- NNf/JTTX/yM01/8jNNf/IjPZ/yIz2f8gMtn/IDLZ/x8x2v8fMdr/Gi/a/xov2v8EKNn/BCjZ/wQn2v8E
- J9r/Aybb/wMm2/8HXe3/B13t/wds8f8HbPH/B23x/wdt8f8BXbj/AV24/wFfuv8BX7r/B67C/weuwv8H
- s8X/B7PF/werr/8Hq6//A4xX/wOMV/8Djlz/A45c/wORYf8DkWH/Fqpm/xaqZv8YsGz/GLBs/xixcP8Y
- sXD/GLN1/xizdf8YtXr/GLV6/xe3f/8Xt3//F7mD/xe5g/8Xuoj/F7qI/xa7jP8Wu4z/FbyR/xW8kf8V
- vpX/Fb6V/0fPpf9Hz6X/W9et/1vXrf9Z2LD/Wdiw/1bYs/9W2LP/VNm2/1TZtv9R2br/Udm6/0/avP9P
- 2rz/TNq//0zav/9EyrOxRMqzsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0iM/BtIjPwbSJ0/+0
- idP/sYfV/7GH1f+uhdf/roXX/6uE2P+rhNj/qILZ/6iC2f+betn/m3rZ/y420P8uNtD/LTbR/y020f8r
- NtL/KzbS/yo11P8qNdT/KDXU/yg11P8nNdb/JzXW/yU01/8lNNf/JDPY/yQz2P8iM9n/IjPZ/yEy2f8h
- Mtn/HzHa/x8x2v8EKNn/BCjZ/wQn2v8EJ9r/BCbb/wQm2/8HUun/B1Lp/wlq8f8JavH/CGrw/whq8P8I
- a+//CGvv/wFcu/8BXLv/AV68/wFevP8Gm8P/BpvD/wiyx/8Issf/CLPJ/wizyf8GpqT/Bqak/wOOXv8D
- jl7/A5Bi/wOQYv8Dkmf/A5Jn/xiwbf8YsG3/GLJy/xiycv8YtHf/GLR3/xi2e/8Ytnv/F7iA/xe4gP8X
- uYX/F7mF/xe7if8Xu4n/FryN/xa8jf8VvZL/Fb2S/xW+lv8Vvpb/Fb+b/xW/m/9G0an/RtGp/1nYsP9Z
- 2LD/Vtiz/1bYs/9U2bb/VNm2/1HZuv9R2br/Ttq8/07avP9J0bfGSdG3xgAAAAIAAAACAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAALSIz8G0iM/BtInT/7SJ0/+xh9X/sYfV/66F1/+uhdf/q4TY/6uE2P+o
- gtn/qILZ/5t62f+betn/LjbQ/y420P8tNtH/LTbR/ys20v8rNtL/KjXU/yo11P8oNdT/KDXU/yc11v8n
- Ndb/JTTX/yU01/8kM9j/JDPY/yIz2f8iM9n/ITLZ/yEy2f8fMdr/HzHa/wQo2f8EKNn/BCfa/wQn2v8E
- Jtv/BCbb/wdS6f8HUun/CWrx/wlq8f8IavD/CGrw/whr7/8Ia+//AVy7/wFcu/8BXrz/AV68/wabw/8G
- m8P/CLLH/wiyx/8Is8n/CLPJ/wampP8GpqT/A45e/wOOXv8DkGL/A5Bi/wOSZ/8Dkmf/GLBt/xiwbf8Y
- snL/GLJy/xi0d/8YtHf/GLZ7/xi2e/8XuID/F7iA/xe5hf8XuYX/F7uJ/xe7if8WvI3/FryN/xW9kv8V
- vZL/Fb6W/xW+lv8Vv5v/Fb+b/0bRqf9G0an/Wdiw/1nYsP9W2LP/Vtiz/1TZtv9U2bb/Udm6/1HZuv9O
- 2rz/Ttq8/0nRt8ZJ0bfGAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACs
- gstsrILLbLGH1f+xh9X/roXW/66F1v+rhNj/q4TY/5982P+ffNj/MDXP/zA1z/8uNdD/LjXQ/y010P8t
- NdD/LDXS/yw10v8rNdT/KzXU/yg01P8oNNT/JzTW/yc01v8mM9f/JjPX/yQz2P8kM9j/IzLZ/yMy2f8h
- Mdr/ITHa/xgu2v8YLtr/BCjZ/wQo2f8EKdv/BCnb/whf7f8IX+3/CWjw/wlo8P8JaPH/CWjx/wlp8f8J
- afH/CGns/whp7P8BXL3/AVy9/wFev/8BXr//BY3F/wWNxf8Iscr/CLHK/wiyzP8Issz/CLTO/wi0zv8H
- sML/B7DC/wORZ/8DkWf/A5Fo/wORaP8SqG7/Eqhu/xizdP8Ys3T/GLV4/xi1eP8Ytn3/GLZ9/xe4gv8X
- uIL/F7qG/xe6hv8Xu4r/F7uK/xa8j/8WvI//Fb2T/xW9k/8Vv5f/Fb+X/xXAnP8VwJz/FMGg/xTBoP9F
- 0q3/RdKt/1bYs/9W2LP/VNi2/1TYtv9R2bn/Udm5/0XDqHJFw6hyAAAAAQAAAAEAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKyCy2ysgstssYfV/7GH1f+uhdb/roXW/6uE2P+r
- hNj/n3zY/5982P8wNc//MDXP/y410P8uNdD/LTXQ/y010P8sNdL/LDXS/ys11P8rNdT/KDTU/yg01P8n
- NNb/JzTW/yYz1/8mM9f/JDPY/yQz2P8jMtn/IzLZ/yEx2v8hMdr/GC7a/xgu2v8EKNn/BCjZ/wQp2/8E
- Kdv/CF/t/whf7f8JaPD/CWjw/wlo8f8JaPH/CWnx/wlp8f8Iaez/CGns/wFcvf8BXL3/AV6//wFev/8F
- jcX/BY3F/wixyv8Iscr/CLLM/wiyzP8ItM7/CLTO/wewwv8HsML/A5Fn/wORZ/8DkWj/A5Fo/xKobv8S
- qG7/GLN0/xizdP8YtXj/GLV4/xi2ff8Ytn3/F7iC/xe4gv8Xuob/F7qG/xe7iv8Xu4r/FryP/xa8j/8V
- vZP/Fb2T/xW/l/8Vv5f/FcCc/xXAnP8UwaD/FMGg/0XSrf9F0q3/Vtiz/1bYs/9U2Lb/VNi2/1HZuf9R
- 2bn/RcOockXDqHIAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAIACAACAAqeAzG6ngMxuqYLV7KmC1ewyNM7/MjTO/zA0z/8wNM//LzTQ/y800P8t
- NNH/LTTR/yw00v8sNNL/KzTT/ys00/8pNNT/KTTU/ygz1f8oM9X/JjPX/yYz1/8lMtj/JTLY/yQy2f8k
- Mtn/IjLa/yIy2v8IM93/CDPd/wlX6/8JV+v/CmXw/wpl8P8KZvD/Cmbw/wlm8P8JZvD/CWfw/wln8P8J
- aPD/CWjw/who7f8IaO3/AVvA/wFbwP8BXcH/AV3B/wWQx/8FkMf/CLHM/wixzP8Isc7/CLHO/wiy0P8I
- stD/CbTS/wm00v8JtNT/CbTU/witvv8Irb7/BpyC/wacgv8ZtHb/GbR2/xi2ev8Ytnr/F7d+/xe3fv8Y
- uYP/GLmD/xe6iP8Xuoj/FryL/xa8i/8WvJD/FryQ/xW+lP8VvpT/Fb+Z/xW/mf8VwJz/FcCc/xTBof8U
- waH/E8Kl/xPCpf9P0a/zT9Gv807HqHJOx6hyAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAIAAIACp4DMbqeAzG6p
- gtXsqYLV7DI0zv8yNM7/MDTP/zA0z/8vNND/LzTQ/y000f8tNNH/LDTS/yw00v8rNNP/KzTT/yk01P8p
- NNT/KDPV/ygz1f8mM9f/JjPX/yUy2P8lMtj/JDLZ/yQy2f8iMtr/IjLa/wgz3f8IM93/CVfr/wlX6/8K
- ZfD/CmXw/wpm8P8KZvD/CWbw/wlm8P8JZ/D/CWfw/wlo8P8JaPD/CGjt/who7f8BW8D/AVvA/wFdwf8B
- XcH/BZDH/wWQx/8Iscz/CLHM/wixzv8Isc7/CLLQ/wiy0P8JtNL/CbTS/wm01P8JtNT/CK2+/witvv8G
- nIL/BpyC/xm0dv8ZtHb/GLZ6/xi2ev8Xt37/F7d+/xi5g/8YuYP/F7qI/xe6iP8WvIv/FryL/xa8kP8W
- vJD/Fb6U/xW+lP8Vv5n/Fb+Z/xXAnP8VwJz/FMGh/xTBof8TwqX/E8Kl/0/Rr/NP0a/zTseock7HqHIA
- AAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEhf5MdIX+THTWbx/01m8f9MaPH/TGjx/0xq8f9M
- avH/S2zx/0ts8f9KbvL/Sm7y/0pv8v9Kb/L/SXHy/0lx8v9JcvP/SXLz/0hz8/9Ic/P/R3Xz/0d18/9G
- dvL/Rnby/0V38/9Fd/P/C2Hv/wth7/8LYvD/C2Lw/wtj8P8LY/D/CmTw/wpk8P8KZe//CmXv/wpm8P8K
- ZvD/CWfw/wln8P8JaPD/CWjw/wFbwv8BW8L/AV3E/wFdxP8Ho8z/B6PM/wmwz/8JsM//CbDQ/wmw0P8J
- sdL/CbHS/wmy1P8JstT/CbPW/wmz1v8JtNj/CbTY/wm12v8Jtdr/OuDf/zrg3/864eH/OuHh/zvi4/87
- 4uP/O+Ll/zvi5f874ub/O+Lm/zvj5/874+f/O+Tp/zvk6f875Or/O+Tq/zvl7P875ez/OuXt/zrl7f86
- 5e//OuXv/zrm8P865vD/OOLs+Dji7PgAAAALAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAASF/kx0hf5MdNZvH/TWbx/0xo8f9MaPH/TGrx/0xq8f9LbPH/S2zx/0pu8v9KbvL/Sm/y/0pv8v9J
- cfL/SXHy/0ly8/9JcvP/SHPz/0hz8/9HdfP/R3Xz/0Z28v9GdvL/RXfz/0V38/8LYe//C2Hv/wti8P8L
- YvD/C2Pw/wtj8P8KZPD/CmTw/wpl7/8KZe//Cmbw/wpm8P8JZ/D/CWfw/wlo8P8JaPD/AVvC/wFbwv8B
- XcT/AV3E/wejzP8Ho8z/CbDP/wmwz/8JsND/CbDQ/wmx0v8JsdL/CbLU/wmy1P8Js9b/CbPW/wm02P8J
- tNj/CbXa/wm12v864N//OuDf/zrh4f864eH/O+Lj/zvi4/874uX/O+Ll/zvi5v874ub/O+Pn/zvj5/87
- 5On/O+Tp/zvk6v875Or/O+Xs/zvl7P865e3/OuXt/zrl7/865e//Oubw/zrm8P844uz4OOLs+AAAAAsA
- AAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFxdGCxcXRgtNYvD/TWLw/01k8P9NZPD/TWbx/01m8f9M
- aPH/TGjx/0xq8f9MavH/S2zx/0ts8f9KbfL/Sm3y/0pv8v9Kb/L/SXHy/0lx8v9IcvP/SHLz/0hz8/9I
- c/P/R3Xz/0d18/9GdvL/Rnby/wtf7/8LX+//C2Dv/wtg7/8LYe//C2Hv/wti8P8LYvD/C2Pw/wtj8P8L
- ZPD/C2Tw/wpl8P8KZfD/Cmfw/wpn8P8BWsX/AVrF/wFbxv8BW8b/Ca/P/wmvz/8Jr9H/Ca/R/wmw0v8J
- sNL/CbDU/wmw1P8Jsdb/CbHW/wmx2P8Jsdj/CbLa/wmy2v8Js9z/CbPc/zrh4f864eH/O+Lj/zvi4/87
- 4uX/O+Ll/zvi5v874ub/O+Pn/zvj5/864+n/OuPp/zvk6v875Or/O+Xs/zvl7P865e7/OuXu/zrl7/86
- 5e//Oubw/zrm8P855vH/Oebx/znm8/855vP/Gm50WBpudFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX
- F0YLFxdGC01i8P9NYvD/TWTw/01k8P9NZvH/TWbx/0xo8f9MaPH/TGrx/0xq8f9LbPH/S2zx/0pt8v9K
- bfL/Sm/y/0pv8v9JcfL/SXHy/0hy8/9IcvP/SHPz/0hz8/9HdfP/R3Xz/0Z28v9GdvL/C1/v/wtf7/8L
- YO//C2Dv/wth7/8LYe//C2Lw/wti8P8LY/D/C2Pw/wtk8P8LZPD/CmXw/wpl8P8KZ/D/Cmfw/wFaxf8B
- WsX/AVvG/wFbxv8Jr8//Ca/P/wmv0f8Jr9H/CbDS/wmw0v8JsNT/CbDU/wmx1v8Jsdb/CbHY/wmx2P8J
- str/CbLa/wmz3P8Js9z/OuHh/zrh4f874uP/O+Lj/zvi5f874uX/O+Lm/zvi5v874+f/O+Pn/zrj6f86
- 4+n/O+Tq/zvk6v875ez/O+Xs/zrl7v865e7/OuXv/zrl7/865vD/Oubw/znm8f855vH/Oebz/znm8/8a
- bnRYGm50WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJT0mxCU9JsTWDw/01g8P9NYvD/TWLw/01k8P9N
- ZPD/TWbx/01m8f9MaPH/TGjx/0xq8f9MavH/S2zx/0ts8f9KbfL/Sm3y/0pv8v9Kb/L/SXDy/0lw8v9I
- cvP/SHLz/0hz8/9Ic/P/R3Xz/0d18/8LXu//C17v/wtf7/8LX+//C1/v/wtf7/8LYO//C2Dv/wti8P8L
- YvD/C2Pw/wtj8P8LZPD/C2Tw/wtl8P8LZfD/B2He/wdh3v8Da8r/A2vK/wmt0f8JrdH/Ca7T/wmu0/8J
- r9X/Ca/V/wmv1v8Jr9b/CbDY/wmw2P8Jsdr/CbHa/wmx2/8Jsdv/CbLd/wmy3f874uP/O+Lj/zvi5f87
- 4uX/O+Lm/zvi5v874+f/O+Pn/zrj6f864+n/OuTq/zrk6v875ez/O+Xs/zrl7f865e3/OuXv/zrl7/86
- 5vD/Oubw/znm8f855vH/Oebz/znm8/845/T/OOf0/zPT4NUz0+DVAAAAAQAAAAEAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAQlPSbEJT0mxNYPD/TWDw/01i8P9NYvD/TWTw/01k8P9NZvH/TWbx/0xo8f9MaPH/TGrx/0xq8f9L
- bPH/S2zx/0pt8v9KbfL/Sm/y/0pv8v9JcPL/SXDy/0hy8/9IcvP/SHPz/0hz8/9HdfP/R3Xz/wte7/8L
- Xu//C1/v/wtf7/8LX+//C1/v/wtg7/8LYO//C2Lw/wti8P8LY/D/C2Pw/wtk8P8LZPD/C2Xw/wtl8P8H
- Yd7/B2He/wNryv8Da8r/Ca3R/wmt0f8JrtP/Ca7T/wmv1f8Jr9X/Ca/W/wmv1v8JsNj/CbDY/wmx2v8J
- sdr/CbHb/wmx2/8Jst3/CbLd/zvi4/874uP/O+Ll/zvi5f874ub/O+Lm/zvj5/874+f/OuPp/zrj6f86
- 5Or/OuTq/zvl7P875ez/OuXt/zrl7f865e//OuXv/zrm8P865vD/Oebx/znm8f855vP/Oebz/zjn9P84
- 5/T/M9Pg1TPT4NUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLWunNS1rpzU1e8P9NXvD/TWDw/01g8P9N
- YvD/TWLw/01k8P9NZPD/TWbx/01m8f9MaPH/TGjx/0tq8f9LavH/S2zx/0ts8f9KbfL/Sm3y/0pv8v9K
- b/L/SXDy/0lw8v9IcvP/SHLz/0dz8/9Hc/P/DFzv/wxc7/8LXe//C13v/wte7/8LXu//C1/v/wtf7/8L
- YO//C2Dv/wth7/8LYe//C2Lw/wti8P8LZPD/C2Tw/wtl8P8LZfD/CqnS/wqp0v8KrNP/CqzT/wqt1f8K
- rdX/Cq7W/wqu1v8Jrtj/Ca7Y/wmv2v8Jr9r/Ca/b/wmv2/8JsN3/CbDd/wqx3/8Ksd//O+Ll/zvi5f87
- 4ub/O+Lm/zvj5/874+f/OuPp/zrj6f865Or/OuTq/zvl7P875ez/OuXt/zrl7f865e//OuXv/zrm8P86
- 5vD/Oebx/znm8f855vP/Oebz/zjn9P845/T/OOf2/zjn9v835fX8N+X1/AAAAAUAAAAFAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAEta6c1LWunNTV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TWTw/01k8P9NZvH/TWbx/0xo8f9M
- aPH/S2rx/0tq8f9LbPH/S2zx/0pt8v9KbfL/Sm/y/0pv8v9JcPL/SXDy/0hy8/9IcvP/R3Pz/0dz8/8M
- XO//DFzv/wtd7/8LXe//C17v/wte7/8LX+//C1/v/wtg7/8LYO//C2Hv/wth7/8LYvD/C2Lw/wtk8P8L
- ZPD/C2Xw/wtl8P8KqdL/CqnS/wqs0/8KrNP/Cq3V/wqt1f8Krtb/Cq7W/wmu2P8Jrtj/Ca/a/wmv2v8J
- r9v/Ca/b/wmw3f8JsN3/CrHf/wqx3/874uX/O+Ll/zvi5v874ub/O+Pn/zvj5/864+n/OuPp/zrk6v86
- 5Or/O+Xs/zvl7P865e3/OuXt/zrl7/865e//Oubw/zrm8P855vH/Oebx/znm8/855vP/OOf0/zjn9P84
- 5/b/OOf2/zfl9fw35fX8AAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATFjs6kxY7OpNXO//TVzv/01e8P9N
- XvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TGbx/0xm8f9MaPH/TGjx/0xq8f9MavH/S2zx/0ts8f9K
- bfL/Sm3y/0pv8v9Kb/L/SXHy/0lx8v9IcvP/SHLz/wxZ7/8MWe//DFrv/wxa7/8MXO//DFzv/wxd7/8M
- Xe//C17v/wte7/8LX+//C1/v/wth7/8LYe//C2Lv/wti7/8gnvb/IJ72/ynB9f8pwfX/CqvV/wqr1f8K
- rNf/CqzX/wqs2P8KrNj/Cq3a/wqt2v8Krdz/Cq3c/wqu3f8Krt3/Cq7f/wqu3/8Kr+D/Cq/g/zvi5v87
- 4ub/O+Pn/zvj5/864+n/OuPp/zrk6v865Or/O+Xs/zvl7P865e3/OuXt/zrl7/865e//Oubw/zrm8P85
- 5vH/Oebx/znm8/855vP/OOf0/zjn9P845/b/OOf2/zjn9/845/f/Nuf4/zbn+P8AAAAIAAAACAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAABMWOzqTFjs6k1c7/9NXO//TV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TWTw/01k8P9M
- ZvH/TGbx/0xo8f9MaPH/TGrx/0xq8f9LbPH/S2zx/0pt8v9KbfL/Sm/y/0pv8v9JcfL/SXHy/0hy8/9I
- cvP/DFnv/wxZ7/8MWu//DFrv/wxc7/8MXO//DF3v/wxd7/8LXu//C17v/wtf7/8LX+//C2Hv/wth7/8L
- Yu//C2Lv/yCe9v8gnvb/KcH1/ynB9f8Kq9X/CqvV/wqs1/8KrNf/CqzY/wqs2P8Krdr/Cq3a/wqt3P8K
- rdz/Cq7d/wqu3f8Krt//Cq7f/wqv4P8Kr+D/O+Lm/zvi5v874+f/O+Pn/zrj6f864+n/OuTq/zrk6v87
- 5ez/O+Xs/zrl7f865e3/OuXv/zrl7/865vD/Oubw/znm8f855vH/Oebz/znm8/845/T/OOf0/zjn9v84
- 5/b/OOf3/zjn9/825/j/Nuf4/wAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExW7OVMVuzlTVnv/01Z7/9N
- XO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TGbx/0xm8f9MaPH/TGjx/0xq8f9M
- avH/S2zx/0ts8f9KbfL/Sm3y/0pv8v9Kb/L/SXHy/0lx8v8NV+7/DVfu/w1Y7v8NWO7/DVrv/w1a7/8N
- W+//DVvv/w1c7/8NXO//DF7v/wxe7/8MX+//DF/v/x2S9f8dkvX/LsL6/y7C+v8uwvr/LsL6/ye98/8n
- vfP/C6vZ/wur2f8LrNr/C6za/wus3P8LrNz/Cqzd/wqs3f8KrN//Cqzf/wqt4P8KreD/Cq3i/wqt4v87
- 4+f/O+Pn/zrj6f864+n/OuTq/zrk6v875ez/O+Xs/zrl7f865e3/OuXv/zrl7/865vD/Oubw/znm8f85
- 5vH/Oebz/znm8/845/T/OOf0/zjn9v845/b/OOf3/zjn9/835/n/N+f5/zbn+v825/r/AAAABgAAAAYA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAATFbs5UxW7OVNWe//TVnv/01c7/9NXO//TV7w/01e8P9NYPD/TWDw/01i8P9N
- YvD/TWTw/01k8P9MZvH/TGbx/0xo8f9MaPH/TGrx/0xq8f9LbPH/S2zx/0pt8v9KbfL/Sm/y/0pv8v9J
- cfL/SXHy/w1X7v8NV+7/DVju/w1Y7v8NWu//DVrv/w1b7/8NW+//DVzv/w1c7/8MXu//DF7v/wxf7/8M
- X+//HZL1/x2S9f8uwvr/LsL6/y7C+v8uwvr/J73z/ye98/8Lq9n/C6vZ/wus2v8LrNr/C6zc/wus3P8K
- rN3/Cqzd/wqs3/8KrN//Cq3g/wqt4P8KreL/Cq3i/zvj5/874+f/OuPp/zrj6f865Or/OuTq/zvl7P87
- 5ez/OuXt/zrl7f865e//OuXv/zrm8P865vD/Oebx/znm8f855vP/Oebz/zjn9P845/T/OOf2/zjn9v84
- 5/f/OOf3/zfn+f835/n/Nuf6/zbn+v8AAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLVOe0S1TntE1X7/9N
- V+//TVnv/01Z7/9NXO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TGbx/0xm8f9M
- aPH/TGjx/0tq8f9LavH/S2zx/0ts8f9KbfL/Sm3y/0pv8v9Kb/L/DVXu/w1V7v8NV+7/DVfu/w1X7v8N
- V+7/DVnu/w1Z7v8NWu//DVrv/w1b7/8NW+//Ho/1/x6P9f8wwPr/MMD6/zDA+v8wwPr/MMD6/zDA+v8w
- wPr/MMD6/yi78/8ou/P/C6rc/wuq3P8Lqt3/C6rd/wur3/8Lq9//Cqvg/wqr4P8KrOH/Cqzh/wqs4/8K
- rOP/O+Tp/zvk6f875Or/O+Tq/zvl7P875ez/OuXt/zrl7f865e//OuXv/zrm8P865vD/Oebx/znm8f85
- 5vP/Oebz/zjn9P845/T/OOf2/zjn9v845/f/OOf3/zfn+f835/n/Nuf6/zbn+v815Pj2NeT49gAAAAIA
- AAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAEtU57RLVOe0TVfv/01X7/9NWe//TVnv/01c7/9NXO//TV7w/01e8P9N
- YPD/TWDw/01i8P9NYvD/TWTw/01k8P9MZvH/TGbx/0xo8f9MaPH/S2rx/0tq8f9LbPH/S2zx/0pt8v9K
- bfL/Sm/y/0pv8v8NVe7/DVXu/w1X7v8NV+7/DVfu/w1X7v8NWe7/DVnu/w1a7/8NWu//DVvv/w1b7/8e
- j/X/Ho/1/zDA+v8wwPr/MMD6/zDA+v8wwPr/MMD6/zDA+v8wwPr/KLvz/yi78/8Lqtz/C6rc/wuq3f8L
- qt3/C6vf/wur3/8Kq+D/Cqvg/wqs4f8KrOH/Cqzj/wqs4/875On/O+Tp/zvk6v875Or/O+Xs/zvl7P86
- 5e3/OuXt/zrl7/865e//Oubw/zrm8P855vH/Oebx/znm8/855vP/OOf0/zjn9P845/b/OOf2/zjn9/84
- 5/f/N+f5/zfn+f825/r/Nuf6/zXk+PY15Pj2AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARkrWPkZK1j5N
- Ve//TVXv/01X7/9NV+//TVnv/01Z7/9NXO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/01k8P9N
- ZPD/TGbx/0xm8f9MaPH/TGjx/0xq8f9MavH/S2zx/0ts8f9KbvL/Sm7y/w1T7f8NU+3/DVTu/w1U7v8N
- Ve7/DVXu/w1X7v8NV+7/DVju/w1Y7v8fjPX/H4z1/zG++v8xvvr/Mb76/zG++v8wvvr/ML76/zC++v8w
- vvr/Mb76/zG++v8xv/r/Mb/6/ym69P8puvT/C6nf/wup3/8LqeD/C6ng/wqq4v8KquL/Cqrj/wqq4/8K
- q+X/Cqvl/zvk6v875Or/O+Xs/zvl7P865e3/OuXt/zrl7/865e//Oubw/zrm8P855vH/Oebx/znm8/85
- 5vP/OOf0/zjn9P845/b/OOf2/zjn9/845/f/N+f5/zfn+f825/r/Nuf6/zbn+/825/v/L8zfri/M364A
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGStY+RkrWPk1V7/9NVe//TVfv/01X7/9NWe//TVnv/01c7/9N
- XO//TV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TWTw/01k8P9MZvH/TGbx/0xo8f9MaPH/TGrx/0xq8f9L
- bPH/S2zx/0pu8v9KbvL/DVPt/w1T7f8NVO7/DVTu/w1V7v8NVe7/DVfu/w1X7v8NWO7/DVju/x+M9f8f
- jPX/Mb76/zG++v8xvvr/Mb76/zC++v8wvvr/ML76/zC++v8xvvr/Mb76/zG/+v8xv/r/Kbr0/ym69P8L
- qd//C6nf/wup4P8LqeD/Cqri/wqq4v8KquP/Cqrj/wqr5f8Kq+X/O+Tq/zvk6v875ez/O+Xs/zrl7f86
- 5e3/OuXv/zrl7/865vD/Oubw/znm8f855vH/Oebz/znm8/845/T/OOf0/zjn9v845/b/OOf3/zjn9/83
- 5/n/N+f5/zbn+v825/r/Nuf7/zbn+/8vzN+uL8zfrgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
- AAABTVLu/01S7v9NVe//TVXv/01X7/9NV+//TVrv/01a7/9NXO//TVzv/01e8P9NXvD/TWDw/01g8P9N
- YvD/TWLw/01k8P9NZPD/TGbx/0xm8f9MaPH/TGjx/0xq8f9MavH/S2zx/0ts8f8NUO3/DVDt/w1R7f8N
- Ue3/DVPt/w1T7f8NVO7/DVTu/yCJ9P8gifT/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8y
- vPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/ym49P8puPT/C6fi/wun4v8LqOP/C6jj/wqo5f8K
- qOX/Cqnm/wqp5v875ez/O+Xs/zrl7f865e3/OuXv/zrl7/865vD/Oubw/znm8f855vH/Oebz/znm8/84
- 5/T/OOf0/zjn9v845/b/OOf3/zjn9/836Pn/N+j5/zbn+v825/r/Nuf7/zbn+/816P3/Nej9/xBYYCAQ
- WGAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFNUu7/TVLu/01V7/9NVe//TVfv/01X7/9N
- Wu//TVrv/01c7/9NXO//TV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TWTw/01k8P9MZvH/TGbx/0xo8f9M
- aPH/TGrx/0xq8f9LbPH/S2zx/w1Q7f8NUO3/DVHt/w1R7f8NU+3/DVPt/w1U7v8NVO7/IIn0/yCJ9P8y
- vPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8y
- vPr/Kbj0/ym49P8Lp+L/C6fi/wuo4/8LqOP/Cqjl/wqo5f8Kqeb/Cqnm/zvl7P875ez/OuXt/zrl7f86
- 5e//OuXv/zrm8P865vD/Oebx/znm8f855vP/Oebz/zjn9P845/T/OOf2/zjn9v845/f/OOf3/zfo+f83
- 6Pn/Nuf6/zbn+v825/v/Nuf7/zXo/f816P3/EFhgIBBYYCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAElO4nNJTuJzTVLu/01S7v9NVe//TVXv/01X7/9NV+//TVrv/01a7/9NXO//TVzv/01e8P9N
- XvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TWbx/01m8f9MaPH/TGjx/0xq8f9MavH/Dk7t/w5O7f8O
- UO3/DlDt/w5R7f8OUe3/IYb0/yGG9P8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8z
- uvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/yu29f8rtvX/C6bl/wum5f8L
- p+b/C6fm/wqn6P8Kp+j/OuXt/zrl7f865e//OuXv/zrm8P865vD/Oebx/znm8f855vP/Oebz/zjn9P84
- 5/T/OOf2/zjn9v845/f/OOf3/zfo+f836Pn/Nuf6/zbn+v825/v/Nuf7/zXo/f816P3/Mdvy0DHb8tAA
- AAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASU7ic0lO4nNNUu7/TVLu/01V7/9N
- Ve//TVfv/01X7/9NWu//TVrv/01c7/9NXO//TV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TWTw/01k8P9N
- ZvH/TWbx/0xo8f9MaPH/TGrx/0xq8f8OTu3/Dk7t/w5Q7f8OUO3/DlHt/w5R7f8hhvT/IYb0/zO6+v8z
- uvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8zuvr/M7r6/zO6+v8z
- uvr/M7r6/zO6+v8zuvr/K7b1/yu29f8LpuX/C6bl/wun5v8Lp+b/Cqfo/wqn6P865e3/OuXt/zrl7/86
- 5e//Oubw/zrm8P855vH/Oebx/znm8/855vP/OOf0/zjn9P845/b/OOf2/zjn9/845/f/N+j5/zfo+f82
- 5/r/Nuf6/zbn+/825/v/Nej9/zXo/f8x2/LQMdvy0AAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAE1Q7OBNUOzgTVLu/01S7v9NVe//TVXv/01X7/9NV+//TVnv/01Z7/9N
- XO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TWbx/01m8f9MaPH/TGjx/w5M7f8O
- TO3/Dk3t/w5N7f8hhPP/IYTz/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80
- uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/yu09f8r
- tPX/C6Xn/wul5/8Lpen/C6Xp/zrl7/865e//Oubw/zrm8P855vH/Oebx/znm8/855vP/OOf0/zjn9P84
- 5/b/OOf2/zjn9/845/f/N+f5/zfn+f825/r/Nuf6/zbn+/825/v/Nej9/zXo/f805/78NOf+/AAgIAgA
- ICAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATVDs4E1Q7OBN
- Uu7/TVLu/01V7/9NVe//TVfv/01X7/9NWe//TVnv/01c7/9NXO//TV7w/01e8P9NYPD/TWDw/01i8P9N
- YvD/TWTw/01k8P9NZvH/TWbx/0xo8f9MaPH/Dkzt/w5M7f8OTe3/Dk3t/yGE8/8hhPP/NLj6/zS4+v80
- uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80
- uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/K7T1/yu09f8Lpef/C6Xn/wul6f8Lpen/OuXv/zrl7/86
- 5vD/Oubw/znm8f855vH/Oebz/znm8/845/T/OOf0/zjn9v845/b/OOf3/zjn9/835/n/N+f5/zbn+v82
- 5/r/Nuf7/zbn+/816P3/Nej9/zTn/vw05/78ACAgCAAgIAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAU1Q7eZNUO3mTVLu/01S7v9NVe//TVXv/01X7/9N
- V+//TVnv/01Z7/9NXO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/01k8P9NZPD/TWbx/01m8f8O
- Sez/Dkns/yKD8/8ig/P/Nbb5/zW2+f81tvn/Nbb5/zW2+v81tvr/Nbb6/zW2+v81tvn/Nbb5/zW2+f81
- tvn/Nbb6/zW2+v81tvr/Nbb6/zW1+f81tfn/Nbb5/zW2+f81tvr/Nbb6/zW2+v81tvr/Nbb5/zW2+f81
- tvn/Nbb5/yyy9v8ssvb/C6Pq/wuj6v865vD/Oubw/znm8f855vH/Oebz/znm8/845/T/OOf0/zjn9v84
- 5/b/OOf3/zjn9/835/n/N+f5/zbn+v825/r/Nuf7/zbn+/816P3/Nej9/zTn/vw05/78G15rExteaxMA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
- AAABTVDt5k1Q7eZNUu7/TVLu/01V7/9NVe//TVfv/01X7/9NWe//TVnv/01c7/9NXO//TV7w/01e8P9N
- YPD/TWDw/01i8P9NYvD/TWTw/01k8P9NZvH/TWbx/w5J7P8OSez/IoPz/yKD8/81tvn/Nbb5/zW2+f81
- tvn/Nbb6/zW2+v81tvr/Nbb6/zW2+f81tvn/Nbb5/zW2+f81tvr/Nbb6/zW2+v81tvr/NbX5/zW1+f81
- tvn/Nbb5/zW2+v81tvr/Nbb6/zW2+v81tvn/Nbb5/zW2+f81tvn/LLL2/yyy9v8Lo+r/C6Pq/zrm8P86
- 5vD/Oebx/znm8f855vP/Oebz/zjn9P845/T/OOf2/zjn9v845/f/OOf3/zfn+f835/n/Nuf6/zbn+v82
- 5/v/Nuf7/zXo/f816P3/NOf+/DTn/vwbXmsTG15rEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpQ5pBKUOaQTVLu/01S7v9N
- Ve//TVXv/01X7/9NV+//TVnv/01Z7/9NXO//TVzv/01e8P9NXvD/TWDw/01g8P9NYvD/TWLw/0xk8PxM
- ZPD8L5/2/S+f9v02s/n/NrP5/zWz+f81s/n/NbP5/zWz+f81s/n/NbP5/zaz+f82s/n/NbP5/zWz+f81
- s/n/NbP5/zWz+f81s/n/NrP5/zaz+f81s/n/NbP5/zWz+f81s/n/NbP5/zWz+f82s/n/NrP5/zWz+f81
- s/n/NbP5/zWz+f81s/n/NbP5/zOx9/wzsff8OeTw7Tnk8O055vP/Oebz/zjn9P845/T/OOf2/zjn9v84
- 5/f/OOf3/zfn+f835/n/Nuf6/zbn+v825/v/Nuf7/zXo/f816P3/MuD2yDLg9sgAADMFAAAzBQAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAASlDmkEpQ5pBNUu7/TVLu/01V7/9NVe//TVfv/01X7/9NWe//TVnv/01c7/9N
- XO//TV7w/01e8P9NYPD/TWDw/01i8P9NYvD/TGTw/Exk8Pwvn/b9L5/2/Taz+f82s/n/NbP5/zWz+f81
- s/n/NbP5/zWz+f81s/n/NrP5/zaz+f81s/n/NbP5/zWz+f81s/n/NbP5/zWz+f82s/n/NrP5/zWz+f81
- s/n/NbP5/zWz+f81s/n/NbP5/zaz+f82s/n/NbP5/zWz+f81s/n/NbP5/zWz+f81s/n/M7H3/DOx9/w5
- 5PDtOeTw7Tnm8/855vP/OOf0/zjn9P845/b/OOf2/zjn9/845/f/N+f5/zfn+f825/r/Nuf6/zbn+/82
- 5/v/Nej9/zXo/f8y4PbIMuD2yAAAMwUAADMFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVQMA
- VVUDSVDkc0lQ5HNNVO3mTVTt5k1X7/1NV+/9TVnv/k1Z7/5NW+/6TVvv+kxc681MXOvNRFTLQERUy0AA
- AAABAAAAATar8qs2q/KrNrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82
- sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82
- sPn/NrD5/zaw+f82sPn/NrD5/zaw+f8xn+C3MZ/gtwAAAAAAAAAANsnYITbJ2CE34fG1N+HxtTfm9vY3
- 5vb2Nuf4/jbn+P425/r+Nuf6/jXm+vA15vrwM9vwljPb8JYiiJkPIoiZDwAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVAwBVVQNJUORzSVDkc01U7eZNVO3mTVfv/U1X7/1N
- We/+TVnv/k1b7/pNW+/6TFzrzUxc681EVMtARFTLQAAAAAEAAAABNqvyqzar8qs2sPn/NrD5/zaw+f82
- sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82
- sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zGf4Lcx
- n+C3AAAAAAAAAAA2ydghNsnYITfh8bU34fG1N+b29jfm9vY25/j+Nuf4/jbn+v425/r+Neb68DXm+vAz
- 2/CWM9vwliKImQ8iiJkPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAnibENJ4mxDTeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83
- rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83
- rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/EjdSHBI3UhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACeJsQ0nibENN675/zeu+f83
- rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83
- rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f8S
- N1IcEjdSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2p/OuNqfzrjeq+f83qvn/N6r5/zeq+f83q/n/N6v5/zer+f83
- q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83
- q/n/N6v5/zeq+f83qvn/N6r5/zeq+f8ynea2Mp3mtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADan8642
- p/OuN6r5/zeq+f83qvn/N6r5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83
- q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6r5/zeq+f83qvn/N6r5/zKd5rYy
- nea2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3p/ftN6f37Ten+f83p/n/OKf5/zin+f84
- p/n/OKf5/zin+f84p/n/OKf5/zin+f84qPn/OKj5/zio+f84qPn/OKf5/zin+f84p/n/OKf5/zin+f84
- p/n/OKf5/zin+f83p/n/N6f5/zel9e43pfXuAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAADen9+03p/ftN6f5/zen+f84p/n/OKf5/zin+f84p/n/OKf5/zin+f84p/n/OKf5/zio+f84
- qPn/OKj5/zio+f84p/n/OKf5/zin+f84p/n/OKf5/zin+f84p/n/OKf5/zen+f83p/n/N6X17jel9e4A
- AAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAE3pPbfN6T23zil+P84
- pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84
- pfj/OKX4/zil+P84pfj/OKHz4Tih8+EAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAABAAAAATek9t83pPbfOKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84
- pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKX4/zil+P84ofPhOKHz4QAAAAUA
- AAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2
- mexfNpnsXzih+P04ofj9OKH4/zih+P84ofj/OKH4/zih+P84ofj/OKH4/zih+P84ofj/OKH4/zih+P84
- ofj/OKH4/Tih+P0ykNxlMpDcZQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaZ7F82mexfOKH4/Tih+P04ofj/OKH4/zih+P84
- ofj/OKH4/zih+P84ofj/OKH4/zih+P84ofj/OKH4/zih+P84ofj9OKH4/TKQ3GUykNxlAAAAAQAAAAEA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAADGM1h8xjNYfNpnvfzaZ7382m/K3Npvytzab8rc2m/K3NZbpgTWW6YEu
- fMEhLnzBIQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMYzWHzGM1h82
- me9/Npnvfzab8rc2m/K3Npvytzab8rc1lumBNZbpgS58wSEufMEhAAAAAQAAAAEAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////
- /////////////////////////////////////////////////////////////////////////D//////
- //////////////w///////////////////8AAD//////////////////AAA/////////////////8AAA
- D/////////////////AAAA/////////////////AAAAD////////////////wAAAA///////////////
- /wAAAAD///////////////8AAAAA////////////////AAAAAD///////////////wAAAAA/////////
- ////ADwAAAAAPwD//////////wA8AAAAAD8A//////////AAAAAAAAAAAAP////////wAAAAAAAAAAAD
- ////////AAAAAAAAAAAAAP///////wAAAAAAAAAAAAD///////wAAAAAAAAAAAAAP//////8AAAAAAAA
- AAAAAD//////8AAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAAP/////8AAA
- AAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD////
- /8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAA/////8AAAAAAAAAAAAAA
- AP/////AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAA/////8AAAAAAAAAAAAAAAP/////AAAAAAAAA
- AAAAAAD/////wAAAAAAAAAAAAAAA/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAA
- AAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD////
- /AAAAAAAAAAAAAAAAD////wAAAAAAAAAAAAAAAA////wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAA
- AA///8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAA
- AAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//AAAAAAAAAAAAAAAAAAAP/wAAAAA
- AAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/8
- AAAAAAAAAAAAAAAAAAA//AAAAAAAAAPAAAAAAAAAP/wAAAAAAAADwAAAAAAAAD/8AAAAAAAAA8AAAAAA
- AAA//AAAAAAAAAPAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAA
- AAAAAAAAP/wAAAAAAAAAAAAAAAAAAD//AAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAP/8AAAAA
- AAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///
- 8AAAAAAAAAAAAAAAAAP///AAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAA
- AA////8AAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAA//////wAAAAAAAA
- AAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAD/////wAAA
- AAAAAAAAAAAA/////8AAAAAAAAAAAAAAAP/////AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAA////
- /8AAAAAAAAAAAAAAAP/////AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAA/////8AAAAAAAAAAAAAA
- AP/////AAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAA
- AAAAAAP/////wAAAAAAAAAAAAAAD//////AAAAAAAAAAAAAAA//////wAAAAAAAAAAAAAAP//////AAA
- AAAAAAAAAAAP//////wAAAAAAAAAAAAAD//////8AAAAAAAAAAAAAD///////AAAAAAAAAAAAAA/////
- ///AAAAAAAAAAAAA////////wAAAAAAAAAAAAP////////AAAAAAAAAwAA/////////wAAAAAAAAMAAP
- ///////////8AAAAAD///////////////AAAAAA///////////////8AAAAA////////////////AAAA
- AP///////////////8AAAAD////////////////AAAAA////////////////wAAAA///////////////
- /8AAAAP////////////////8AAAP/////////////////AAAD//////////////////AAP//////////
- ////////wAD/////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////KAAAAEAAAACA
- AAAAAQAgAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAKcVkrSMqeT6XlsljR5LFX0saaTalkTiVSAAAAEgAAAAEAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW/lEyD/MNj/vzDY//8w2P//MNj//zDY//8w2P//MNj//vDY/6r
- hkWRAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvxumLp+cBl//nAZf/5wWX/+cFl//nBZf/5
- wWX/+cFl//nBZf/5wGX/+cBl/+23YOwAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbzu2Ty975m//a+Zv/3
- vmb/9r5m//e+Zv/2vmb/975m//a+Zv/3vmb/9r5m//e+Zv/2vmb/8Llj9AAAABQAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj
- rmC89Ltn//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7aP/0u2j/9Lto//S7Z//S
- olnIAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAABQAAAAMA
- AAABAAAAAAAAAAB1VTUY8bho//G5aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/xuGj/8bho//G4aP/x
- uGj/8bho//G4aP/xuGj/8bho/zIoFDMAAAAAAAAAAAAAAAAAAAACAAAABQAAAAUAAAACAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADn1NV2q2
- cX/Ww3qL98V7jvvAeo3xpmp7vkEpM0sAAAAK4KpjtO61af/utWn/7rVp/+62af/utmn/7rZp/+62af/u
- tmn/7rZp/+62af/utmn/7rZp/+61af/utWn/7rVp/+61af/OnFvCAAAAAiYtGih1nFGjiLpf64nAY/qG
- wGL5fLVd41iDQo4HBwckAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAADmF1ngcd6if/He4v/x3yN/8d9j//HfpL/x36U/8d/lv/GgJj/wX2W9ueqZv3tsmr/7bJq/+2zav/t
- smr/7bJq/+2yav/ts2r/7bJq/+2yav/tsmr/7bNq/+2yav/tsmr/7bJq/+2zav/tsmr/6rFp/ZG2YOCX
- wWb/lMFl/5HBZf+OwmX/i8Jk/4jCZP+FwWP/gsJi/2igUbwAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAFvXOA2Md6if/He4v/x3yN/8d9j//HfpL/x36U/8d/lv/GgJj/xoGa/8aBnP+1
- WEH/2JJd/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//qr2v/6q9r/+qva//q
- r2v/4Kpj/5GEKv+cwWb/msFm/5fBZv+UwWX/kcJl/47CZf+LwmT/iMJk/4XBY/+CwmL/fL5g+AcHByUA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvXOA1Md6if/He4v/x3yN/8d9kP/HfpL/x3+U/8d/lv/G
- gJj/xoGa/8aBnP/Ggp3/s1dC/7JXQ//UjV3/56xs/+esbP/nrGz/56xs/+esbP/nrGz/56xs/+esbP/n
- rGz/56xs/+esbP/nrGz/3adk/5WBKv+SgSr/n8Fm/5zBZv+awWb/l8Fm/5TBZf+RwmX/jsJl/4vCZP+I
- wmT/hcFj/4LCY/98wGH5AAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo2Ftacd6if/He4v/x3yN/8d9kP/H
- fpL/x36U/8d/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/7FVRP+wVkT/sFZF/9GKXv/kqGz/5Khs/+SobP/k
- qGz/5Khs/+SobP/kqGz/5Khs/+SobP/kqGz/26Nk/5h+Kv+Vfir/k34r/6LAZv+fwWb/nMFm/5rBZv+X
- wWb/lMFl/5HCZf+OwmX/i8Jk/4jCZP+FwWP/gsJi/26pVcoAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8d6iP7H
- e4v/x3yN/8d9kP/HfpL/x36U/8d/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/8WCof+uVET/rVNF/61URv+t
- VEf/zohf/+Glbf/hpWz/4aVs/+GlbP/hpWz/4aVs/+Glbf/hpW3/2Z9k/5p6Kv+Yeir/lXsq/5N8Kv+l
- wGb/osBm/5/BZv+cwWb/msFm/5fCZv+UwWX/kcJl/47CZf+LwmT/iMJk/4XBY/+CwmL/Eh4SKwAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAJdfaDvHe4v/x3yN/8d9kP/HfpL/x36U/8d/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/8WCof/F
- g6L/q1JG/6tSRv+qUkf/qlJH/6lSSP/LhF//3qFs/96hbP/eoWz/3qFs/96hbP/eoWz/1ptk/5x3K/+b
- dyv/mHgr/5Z4Kv+TeCr/p79m/6XAZv+iwGb/n8Fm/5zBZv+awWb/l8Jm/5TBZf+RwmX/jsJl/4vCZP+I
- wmT/hcFj/2mdUKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8dYSwx3yN/8d9j//HfpL/x36U/8d/lv/GgJj/xoGa/8aBnP/G
- gp3/xYKf/8WCof/EgqL/xIKk/6lQRv+oUEf/p1FI/6dRSf+mUUn/plFK/8iBYP/bnW3/251s/9udbP/b
- nWz/1Jhk/55zKv+cdCr/mnQq/5h0Kv+WdSv/lHYr/6m/Zv+nwGb/pcBm/6LAZv+fwWb/nMFm/5rBZv+X
- wmb/lMFl/5HCZf+OwmX/i8Jk/4jCZP+CvWH1AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw3qL5Md9j//HfpL/x3+U/8d/lv/G
- gJj/xoGa/8aBnP/Ggp3/xYKf/8WCof/EgqL/xIKk/8ODpv+mTkf/pU9I/6VPSf+kT0n/pE9K/6NPSv+j
- T0v/xX5h/9iZbP/YmW3/0ZRk/6BwK/+ecCv/nHAr/5pxK/+YcSv/lnIq/5RyK/+svmb/qb9m/6e/Zv+k
- wGb/osBm/5/BZv+cwWb/msFm/5fCZv+UwWX/kcJl/47CZf+LwmT/iMFj/wAAAAcAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMV7juvH
- fpL/x36U/8d/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/8WCof/EgqL/xIKk/8ODpf/Dgqf/okxI/6JNSf+h
- TUn/oU1K/6BMSv+gTUv/n0xL/59NTP/GgWP/0pJo/6JsK/+fbCr/nW0q/5ttKv+abiv/l24r/5VuK/+T
- byv/rr1l/6y+Zf+pvmb/p79m/6TAZv+iwGb/n8Fm/5zBZv+awWb/l8Fm/5TBZf+RwmX/jsJl/4vCZP8A
- AAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAADDe4/Qx36U/8d/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/8WCof/EgqL/xIKk/8ODpf/D
- g6f/woOo/6BLSf+fS0n/nktK/51KSv+dSkv/nEpL/5xKTP+bSkz/m0pN/6RoLP+gaCr/n2gq/5xpKv+b
- air/mGoq/5drKv+VbCv/k2wr/7C9Zf+uvWX/q75l/6m+Zv+nv2b/pMBm/6LAZv+fwWb/nMFm/5rBZv+X
- wWb/lMFl/5HBZf+NwWT8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuneLcsd/lv/GgJj/xoGa/8aBnP/Ggp3/xYKf/8WCof/E
- gqL/xIKk/8ODpf/Cg6f/woOo/8GCqf+dSUr/nEhK/5tISv+aSEv/mkhL/5lIS/+YSEz/mEhN/4xBPP+C
- QSH/oGQp/55lKf+bZSr/mmYq/5hmKv+WZyr/lGgr/5NpK/+yvGT/sL1l/669Zf+rvmX/qb5m/6e/Zv+l
- wGb/osBm/5/BZv+cwWb/msFm/5fBZv+UwWX/ibdg2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFVVQnGgJj/xoGa/8aBnP/G
- gp3/xYKf/8WCof/EgqL/xIKk/8ODpf/Cg6f/woOo/8GCqv/Agqr/mUZK/5hGS/+YRkv/l0ZL/5ZGS/+V
- Rkz/lUVM/5RFTf95Mx//djIe/55gKf+cYSn/mmEp/5hiKf+XYyr/lWQq/5RkKv+SZSv/tLtk/7K8ZP+w
- vWX/rr1l/6u+Zf+pv2b/p79m/6XAZv+iwGb/n8Fm/5zBZv+awWb/l8Fm/2SARFIAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAABwH2W1MaBnP/EgZ3/xIGf/8SBof/DgaL/woGk/8KCpf/Bgab/wIGo/8CBqf+/gar/v4Ks/5ZES/+V
- REv/lENL/5NDS/+SQ0z/kkNM/5FDTP+RQ0z/djAe/3QwHv+XVyf/m10p/5peKf+XXin/ll8q/5RgKv+T
- YSr/kWIr/7a6Y/+zu2P/sLxk/668ZP+svWT/qr1l/6e+Zf+lv2X/o79m/6DAZv+dwGb/nMFm/5nAZfsA
- AAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAE8K0cvnnnEzqqD1v6CQIb/f0CH/3w/iv96Poz/dj2O/3M8kP9wO5L/bTqU/2o5lv9m
- OJj/YzaZ/2A1m/9MHk7/aSxI/5BBS/+QQUz/j0FM/45ATP+NQEz/iz9J/3QuHf9yLh7/i0kk/5pZKP+Y
- Wij/llsp/5VcKf+SXSn/ZlQf/0NVGf9PlTT/TZc2/0uZOP9Jmjr/R5s7/0ScPf9Cnj7/QJ9A/z6gQf87
- oUP/OKJE/zaiRv9R0KP/S8Ci0hQ1LT8AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAijfMDDsYfV/66F1v+rhNj/o3nN/35Aif98P4v/eT6N/3Y9kP9z
- PJL/cDuT/2w6lf9pOZf/ZjeZ/2I2mv9fNJz/VSyE/0MYRf9BGEX/cTFJ/4s+TP+KPkz/iT1M/4Y7R/9y
- Kx3/cCsd/4ZCI/+YVSf/llYo/5VXKP93USH/QUcU/0BIFf9Mfir/T5Qz/06WNf9LmDf/SZo5/0eaO/9F
- nDz/Q54+/0GfQP8+n0H/PKFD/zmhRP9LwoX/Vtiz/1TYtv9R2bn/RLyjywAAABQAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiziM7vtInT/7GH1f+uhdb/q4TY/6iC2f+f
- ds3/fD+N/3g/j/92PZH/cj2T/287lP9sOpf/aDiY/2U3mv9iNpv/XjSd/1oznv9CGEf/PxdG/zwWRv9Y
- JUj/hjtL/4U6S/+DOkr/bykc/20pHf+KRSP/llEm/5RSJ/9jSBr/QkIT/0BEFP9ARxX/UpEx/1CTM/9O
- lTX/TJc3/0qZOf9Imjv/Rps8/0SdPv9Bn0D/QJ9C/z2gQ/9NwIH/Wdiw/1bYs/9U2bb/Udm6/07avP9K
- 07nyAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzhsnct4rS/7SJ1P+x
- h9X/roXX/6uE2P+ogtn/pYDa/5x0z/94P5D/dT6S/3I8lP9vO5b/bDqY/2g4mf9kN5v/YTWc/100nv9a
- Mp//Uy2V/zwWRv86FUb/NxRF/2QqSf+AOEz/gDdL/2wnHP9rJxz/k0ol/5RNJv9zRx7/QT4S/0BAEv8/
- QRT/UYUr/1KQMf9QkjP/TpQ1/02WN/9LmDn/SZo7/0ebPP9EnT7/Qp5A/0GfQv9Qv37/W9et/1nYsP9W
- 2LP/VNm2/1HZuv9P2rz/TNq//0TMteIAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACR
- bqJYuYvR/7eK0v+0idT/sYfV/66G1/+rhNj/qILZ/6WA2v+hftv/mHHQ/3U+lP9yPJX/bzyX/2s6mf9n
- OJr/ZDec/2A1nv9cNJ//WTKg/1Uwov9KJ4b/OBRG/zUTRf8yEkX/ezVL/3s0S/9tJyP/aSUc/5NIJP+R
- SSX/QTkQ/0A7Ef8/PBL/T3Ql/1SOLv9TjzH/UZEy/0+TNf9Nljf/TJg4/0mZOv9Imzz/RZw+/0OeQP9S
- vnv/Xdap/1vXrf9Z2LD/Vtiz/1TZtv9R2bn/T9q8/0zav/9J28L/KIBycgAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAABu4zO+bmL0f+3itL/tInU/7GH1f+uhtf/q4TY/6iC2f+lgNr/oX7b/5573P+U
- b9H/cT2X/248mf9qOpv/Zzic/2M3nf9fNZ//XDOg/1gyov9UL6P/UC6k/0kpmP8zEkf/MBJF/0odR/92
- MUr/dC9F/381IP+RRCT/XjsX/z83EP8/ORH/VH0m/1aKK/9VjC3/U44w/1KRMv9QkzT/TpU2/02XOP9K
- mTr/SZo8/0acPv9UvXj/X9Wm/13Wqf9b163/Wdiw/1bYs/9U2bf/Udm5/0/avP9M2r//SdvC/0bYw/oA
- AAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZk1mFLyMz/+6i9H/t4rS/7SJ1P+xh9X/robX/6uE2P+o
- gtn/pYDa/6F92/+ee9z/mnjd/5Bt0/9uPJr/ajqc/2Y4nf9jN57/XjWg/1s0of9XMqP/Uy+k/08tpf9L
- LKb/Ryqo/zwgiP8tEk3/ci5J/3MwSv+VRjH/jj8i/0E4EP9RaB7/WYQm/1iGKf9WiSv/VYwt/1SOMP9S
- kDL/UZI0/0+UNv9Nljj/S5g6/0qaPP9Wu3X/YNSh/1/Vpv9d1qn/W9et/1nYsP9W2LP/VNm3/1HZuf9P
- 2rz/TNq//0nbwv9G28X/ESwsLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKV7sVu8jM//uovR/7eK0v+0
- idT/sYfV/66G1/+rhNj/qILZ/6WA2v+hfdv/nnvc/5p43f+Wdt7/jGrU/2o6nf9mOZ//Yjeg/141ov9a
- M6P/US+k/0kspP9KLKb/Siuo/0Ypqf9BJ6r/PSWs/6l0vP5AJkAUQABABNijUO5bfSH/WoAk/1mDJv9Y
- hSj/VIcq/02ILP9Niy7/Uo8y/1KRNP9QlDb/TpY4/0yYOv9ZunL/YtOd/2DUof9f1aX/Xdap/1vXrf9Z
- 2LD/Vtiz/1TZt/9R2bn/T9q8/0zav/9K28L/RtvF/yyRhHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACw
- hL+LvI3P/7qL0f+3itL/tInU/7GH1f+uhtf/q4TY/6iC2f+lgNr/oX3b/5573P+aeN3/lnbe/5Jz3/+K
- a9n/Zjmh/0guoP8aHZ3/Fhue/xUbn/8UGqD/Ehmh/xEYov8UGKX/NiOq/z4msf8iHUo0AAAAAAAAAABD
- ejcXXoks/1V9Iv8gcR7/FHAf/xRzIf8UdiT/FHgm/xN7KP8Ufir/MIkx/0+WOP9dwHr/Y9KZ/2LTnf9g
- 1KH/X9Wl/13Wqf9b163/Wdiw/1bYs/9U2bf/Udm6/0/avP9M2r//StvC/0bbxf83sKCfAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAsoTAhbyNz/+6i9H/t4rS/7SJ1P+xh9X/robX/6uE2P+ogtn/pYDa/6F92/+e
- e9z/mnjd/5Z23v+Sc9//iW7f/yc61/8dKbn/Fxye/xYboP8VG6H/FBqi/xIZo/8RGKT/EBen/xIjy/8c
- LOH/EhIxOQAAAAAAAAAAN2Q3FzGmTf8WlEH/FHEh/xRwH/8UcyL/FHYk/xR5Jv8Teyn/E34r/xSPQ/8Y
- s3j/V8yR/2PSmf9i053/YNSh/1/Vpf9d1qn/W9et/1nYsP9W2LP/VNm3/1HZuv9P2rz/TNq//0rbwv9G
- 28X/N7KfmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKh+tkm8jM//uovR/7eK0v+0idT/sYfV/66G1/+r
- hNj/qILZ/6WA2v+hfdv/nnvc/5p43f+Wdt7/iW7e/yU41v8jN9f/IjbY/yE12f8eM9b/HC3O/xkqy/8Y
- K9L/GC3c/xYs3v8VKt//Eyjg/y+A8vwFChAxAA8PIi7IseIWnEf/F59M/xehUf8XpFb/F6BT/xecUP8X
- oFf/GKtn/xewcP8YsnX/GLR6/xe2f/9Ny5P/YtOd/2DUof9f1aX/Xdap/1vXrf9Z2LD/Vtiz/1TZt/9R
- 2bn/T9q8/0zav/9K28L/RtvF/y2ShWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYIAIvIzP/7qL0f+3
- itL/tInU/7GH1f+uhtf/q4TY/6iC2f+lgNr/oX3b/5573P+aeN3/jHHd/yg41f8mN9b/JDbX/yM12P8h
- NNn/HzPZ/x4y2v8cMNv/Gi/b/xgt3f8XLN7/Dije/wMl3v8GcPL/CHrz/w3Az/8GtLr/BItK/xCYTf8X
- o1P/GKVY/xioXf8Yq2L/GK1n/xivbP8YsXH/GLN2/xi1e/8Xt4D/F7mF/0zMl/9g1KH/X9Wm/13Wqf9b
- 163/Wdiw/1bYs/9U2bf/Udm5/0/avP9M2r//SdvC/0bbxf8LKiAYAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAALuLzu25i9H/t4rS/7SJ1P+xh9X/robX/6uE2P+ogtn/pYDa/6F+2/+ee9z/kHPc/yk31P8o
- N9X/JjbW/yQ11v8jNdj/ITPY/yAy2f8eMdr/HDDa/xsv3P8VLNz/Aybb/wIl3P8FS+j/B2/y/wZv7f8E
- lrj/B7O9/wWghv8Ci0//A41T/xSjWf8YqV7/GKxj/xiuaP8YsG7/GLFy/xezeP8Ytnz/F7eB/xe5hv8W
- u4r/Ss2c/1/Vpv9d1qn/W9et/1nYsP9W2LP/VNm3/1HZuf9P2rz/TNq//0nbwv9F1sHwAAAAAQAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmebkouYvR/7eK0v+0idT/sYfV/66G1/+rhNj/qILZ/6WA2v+h
- ftv/lHXb/ys40/8pN9P/KDfV/yY11v8lNdf/IzTY/yE02P8gMtn/HjHZ/x0w2/8TLNv/Ayfa/wMm2/8D
- Jd3/B23x/wdu8v8CYcH/AWG3/wezv/8HtML/A4tR/wONVf8Dj1r/EaJg/xitZf8Yr2r/GLBv/xiydP8Y
- tHn/F7Z9/xe4gv8Xuof/FruL/xW8kP9JzqD/Xdap/1vXrf9Z2LD/Vtmz/1TZt/9R2bn/T9q8/0zav/9J
- 28L/LoR2OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALWIzKm3itL/tInU/7GH1f+u
- hdf/q4TY/6iC2f+lgNr/mHja/yw30f8rN9P/KTbT/yg21f8nNdb/JTTX/yM01/8iM9n/IDLZ/x8x2v8a
- L9r/BCjZ/wQn2v8DJtv/B13t/wds8f8HbfH/AV24/wFfuv8HrsL/B7PF/werr/8DjFf/A45c/wORYf8W
- qmb/GLBs/xixcP8Ys3X/GLV6/xe3f/8XuYP/F7qI/xa7jP8VvJH/Fb6V/0fPpf9b163/Wdiw/1bYs/9U
- 2bb/Udm6/0/avP9M2r//RMqzsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAtIjPwbSJ0/+xh9X/roXX/6uE2P+ogtn/m3rZ/y420P8tNtH/KzbS/yo11P8oNdT/JzXW/yU01/8k
- M9j/IjPZ/yEy2f8fMdr/BCjZ/wQn2v8EJtv/B1Lp/wlq8f8IavD/CGvv/wFcu/8BXrz/BpvD/wiyx/8I
- s8n/Bqak/wOOXv8DkGL/A5Jn/xiwbf8YsnL/GLR3/xi2e/8XuID/F7mF/xe7if8WvI3/Fb2S/xW+lv8V
- v5v/RtGp/1nYsP9W2LP/VNm2/1HZuv9O2rz/SdG3xgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsgstssYfV/66F1v+rhNj/n3zY/zA1z/8uNdD/LTXQ/yw10v8r
- NdT/KDTU/yc01v8mM9f/JDPY/yMy2f8hMdr/GC7a/wQo2f8EKdv/CF/t/wlo8P8JaPH/CWnx/whp7P8B
- XL3/AV6//wWNxf8Iscr/CLLM/wi0zv8HsML/A5Fn/wORaP8SqG7/GLN0/xi1eP8Ytn3/F7iC/xe6hv8X
- u4r/FryP/xW9k/8Vv5f/FcCc/xTBoP9F0q3/Vtiz/1TYtv9R2bn/RcOocgAAAAEAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAKngMxuqYLV7DI0zv8w
- NM//LzTQ/y000f8sNNL/KzTT/yk01P8oM9X/JjPX/yUy2P8kMtn/IjLa/wgz3f8JV+v/CmXw/wpm8P8J
- ZvD/CWfw/wlo8P8IaO3/AVvA/wFdwf8FkMf/CLHM/wixzv8IstD/CbTS/wm01P8Irb7/BpyC/xm0dv8Y
- tnr/F7d+/xi5g/8Xuoj/FryL/xa8kP8VvpT/Fb+Z/xXAnP8UwaH/E8Kl/0/Rr/NOx6hyAAAABAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAEhf5MdNZvH/TGjx/0xq8f9LbPH/Sm7y/0pv8v9JcfL/SXLz/0hz8/9HdfP/Rnby/0V38/8L
- Ye//C2Lw/wtj8P8KZPD/CmXv/wpm8P8JZ/D/CWjw/wFbwv8BXcT/B6PM/wmwz/8JsND/CbHS/wmy1P8J
- s9b/CbTY/wm12v864N//OuHh/zvi4/874uX/O+Lm/zvj5/875On/O+Tq/zvl7P865e3/OuXv/zrm8P84
- 4uz4AAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAABcXRgtNYvD/TWTw/01m8f9MaPH/TGrx/0ts8f9KbfL/Sm/y/0lx8v9I
- cvP/SHPz/0d18/9GdvL/C1/v/wtg7/8LYe//C2Lw/wtj8P8LZPD/CmXw/wpn8P8BWsX/AVvG/wmvz/8J
- r9H/CbDS/wmw1P8Jsdb/CbHY/wmy2v8Js9z/OuHh/zvi4/874uX/O+Lm/zvj5/864+n/O+Tq/zvl7P86
- 5e7/OuXv/zrm8P855vH/Oebz/xpudFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCU9JsTWDw/01i8P9NZPD/TWbx/0xo8f9M
- avH/S2zx/0pt8v9Kb/L/SXDy/0hy8/9Ic/P/R3Xz/wte7/8LX+//C1/v/wtg7/8LYvD/C2Pw/wtk8P8L
- ZfD/B2He/wNryv8JrdH/Ca7T/wmv1f8Jr9b/CbDY/wmx2v8Jsdv/CbLd/zvi4/874uX/O+Lm/zvj5/86
- 4+n/OuTq/zvl7P865e3/OuXv/zrm8P855vH/Oebz/zjn9P8z0+DVAAAAAQAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS1rpzU1e8P9N
- YPD/TWLw/01k8P9NZvH/TGjx/0tq8f9LbPH/Sm3y/0pv8v9JcPL/SHLz/0dz8/8MXO//C13v/wte7/8L
- X+//C2Dv/wth7/8LYvD/C2Tw/wtl8P8KqdL/CqzT/wqt1f8Krtb/Ca7Y/wmv2v8Jr9v/CbDd/wqx3/87
- 4uX/O+Lm/zvj5/864+n/OuTq/zvl7P865e3/OuXv/zrm8P855vH/Oebz/zjn9P845/b/N+X1/AAAAAUA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAExY7OpNXO//TV7w/01g8P9NYvD/TWTw/0xm8f9MaPH/TGrx/0ts8f9KbfL/Sm/y/0lx8v9I
- cvP/DFnv/wxa7/8MXO//DF3v/wte7/8LX+//C2Hv/wti7/8gnvb/KcH1/wqr1f8KrNf/CqzY/wqt2v8K
- rdz/Cq7d/wqu3/8Kr+D/O+Lm/zvj5/864+n/OuTq/zvl7P865e3/OuXv/zrm8P855vH/Oebz/zjn9P84
- 5/b/OOf3/zbn+P8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMVuzlTVnv/01c7/9NXvD/TWDw/01i8P9NZPD/TGbx/0xo8f9M
- avH/S2zx/0pt8v9Kb/L/SXHy/w1X7v8NWO7/DVrv/w1b7/8NXO//DF7v/wxf7/8dkvX/LsL6/y7C+v8n
- vfP/C6vZ/wus2v8LrNz/Cqzd/wqs3/8KreD/Cq3i/zvj5/864+n/OuTq/zvl7P865e3/OuXv/zrm8P85
- 5vH/Oebz/zjn9P845/b/OOf3/zfn+f825/r/AAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS1TntE1X7/9NWe//TVzv/01e8P9N
- YPD/TWLw/01k8P9MZvH/TGjx/0tq8f9LbPH/Sm3y/0pv8v8NVe7/DVfu/w1X7v8NWe7/DVrv/w1b7/8e
- j/X/MMD6/zDA+v8wwPr/MMD6/yi78/8Lqtz/C6rd/wur3/8Kq+D/Cqzh/wqs4/875On/O+Tq/zvl7P86
- 5e3/OuXv/zrm8P855vH/Oebz/zjn9P845/b/OOf3/zfn+f825/r/NeT49gAAAAIAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZK1j5N
- Ve//TVfv/01Z7/9NXO//TV7w/01g8P9NYvD/TWTw/0xm8f9MaPH/TGrx/0ts8f9KbvL/DVPt/w1U7v8N
- Ve7/DVfu/w1Y7v8fjPX/Mb76/zG++v8wvvr/ML76/zG++v8xv/r/Kbr0/wup3/8LqeD/Cqri/wqq4/8K
- q+X/O+Tq/zvl7P865e3/OuXv/zrm8P855vH/Oebz/zjn9P845/b/OOf3/zfn+f825/r/Nuf7/y/M364A
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAABTVLu/01V7/9NV+//TVrv/01c7/9NXvD/TWDw/01i8P9NZPD/TGbx/0xo8f9M
- avH/S2zx/w1Q7f8NUe3/DVPt/w1U7v8gifT/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8yvPr/Mrz6/zK8+v8p
- uPT/C6fi/wuo4/8KqOX/Cqnm/zvl7P865e3/OuXv/zrm8P855vH/Oebz/zjn9P845/b/OOf3/zfo+f82
- 5/r/Nuf7/zXo/f8QWGAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElO4nNNUu7/TVXv/01X7/9NWu//TVzv/01e8P9N
- YPD/TWLw/01k8P9NZvH/TGjx/0xq8f8OTu3/DlDt/w5R7f8hhvT/M7r6/zO6+v8zuvr/M7r6/zO6+v8z
- uvr/M7r6/zO6+v8zuvr/M7r6/yu29f8LpuX/C6fm/wqn6P865e3/OuXv/zrm8P855vH/Oebz/zjn9P84
- 5/b/OOf3/zfo+f825/r/Nuf7/zXo/f8x2/LQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATVDs4E1S7v9N
- Ve//TVfv/01Z7/9NXO//TV7w/01g8P9NYvD/TWTw/01m8f9MaPH/Dkzt/w5N7f8hhPP/NLj6/zS4+v80
- uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/NLj6/zS4+v80uPr/K7T1/wul5/8Lpen/OuXv/zrm8P85
- 5vH/Oebz/zjn9P845/b/OOf3/zfn+f825/r/Nuf7/zXo/f805/78ACAgCAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAFNUO3mTVLu/01V7/9NV+//TVnv/01c7/9NXvD/TWDw/01i8P9NZPD/TWbx/w5J7P8i
- g/P/Nbb5/zW2+f81tvr/Nbb6/zW2+f81tvn/Nbb6/zW2+v81tfn/Nbb5/zW2+v81tvr/Nbb5/zW2+f8s
- svb/C6Pq/zrm8P855vH/Oebz/zjn9P845/b/OOf3/zfn+f825/r/Nuf7/zXo/f805/78G15rEwAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpQ5pBNUu7/TVXv/01X7/9NWe//TVzv/01e8P9N
- YPD/TWLw/0xk8Pwvn/b9NrP5/zWz+f81s/n/NbP5/zaz+f81s/n/NbP5/zWz+f82s/n/NbP5/zWz+f81
- s/n/NrP5/zWz+f81s/n/NbP5/zOx9/w55PDtOebz/zjn9P845/b/OOf3/zfn+f825/r/Nuf7/zXo/f8y
- 4PbIAAAzBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVA0lQ5HNN
- VO3mTVfv/U1Z7/5NW+/6TFzrzURUy0AAAAABNqvyqzaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82
- sPn/NrD5/zaw+f82sPn/NrD5/zaw+f82sPn/NrD5/zaw+f8xn+C3AAAAADbJ2CE34fG1N+b29jbn+P42
- 5/r+Neb68DPb8JYiiJkPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACeJsQ03rvn/N675/zeu+f83
- rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/N675/zeu+f83rvn/EjdSHAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAANqfzrjeq+f83qvn/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zer+f83q/n/N6v5/zeq+f83
- qvn/Mp3mtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3p/ftN6f5/zin+f84p/n/OKf5/zin+f84qPn/OKj5/zin+f84
- p/n/OKf5/zin+f83p/n/N6X17gAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATek9t84pfj/OKX4/zil+P84
- pfj/OKX4/zil+P84pfj/OKX4/zil+P84pfj/OKHz4QAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAANpnsXzih+P04ofj/OKH4/zih+P84ofj/OKH4/zih+P84ofj9MpDcZQAAAAEAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMYzWHzaZ7382m/K3NpvytzWW6YEufMEhAAAAAQAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////n//////
- ///wB////////8AD////////gAH///////8AAP///////wAAf/////8GAABw/////AAAAAAf///wAAAA
- AA///+AAAAAAB///wAAAAAAD///AAAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAD//4AAAAAAAP//
- gAAAAAAA//+AAAAAAAD//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//gAAAAAAAH/8AAAAAAAAP/gAAAAA
- AAAf8AAAAAAAAA/wAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB+AAAAGAAAAH4AAAAYAAAAfg
- AAAAAAAAB+AAAAAAAAAH8AAAAAAAAAfwAAAAAAAAD/gAAAAAAAAf/AAAAAAAAB/+AAAAAAAAP/8AAAAA
- AAD//8AAAAAAAf//gAAAAAAB//+AAAAAAAD//4AAAAAAAP//gAAAAAAA//+AAAAAAAD//4AAAAAAAP//
- gAAAAAAB//+AAAAAAAH//8AAAAAAAf//4AAAAAAD///gAAAAAAf///gAAAAAD////AAAAEA//////gAA
- f///////AAD///////+AAP///////4AB////////4AP////////4D///////////////////////////
- /////////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQPx4Tr4lEWd+uVpXdrFWWpoFAXjwvFhoA
- AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2adYINemV4n7wmT++8Nk//vDZP/7
- w2T/+8Nk//vCZP7InFGTuI5LJgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADZp1ki8Lljufe+Zfz4
- v2b/+MBm//jAZv/4wGb/+MBm//i/Zv/2vmX96LNfv7CISSoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo
- smKq9Ltn/fW8aP/1vGj/9bxo//W8aP/1vGj/9bxo//W8aP/1vGj/9Ltn/tmnXLMAAAACAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnhKUxW1cX85unSFQrl1h0CY
- YXEpOSQtC7+QVTDwt2j/8Lho//C3aP/wuGj/8Lho//C4aP/wuGj/8Lho//C4aP/wt2j/8Ldo//C3aP+J
- aTxBJCsZBW+UTSGEtV0+gLVdQnqyWzxSeT0dBwcHBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOV2ARsWx5ZLRvfanB
- eIjvxnyP/MR8kPm2dInQsHGIk92ibMLutGr/7rRq/+60av/utGr/7rRq/+60av/utGr/7rRq/+60av/u
- tGr/7rRq/+60av/TqmLEi7BdgoixXcKMv2P3isFk/IS9YfR0q1e5bqZUeE13PCAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO9
- dIGyxHiI78d8jP/HfY//x36S/8d/lf/GgJj/xYCa/sJxXv7hn2P/67Br/+uwa//rsGv/67Br/+uwa//r
- sGv/67Br/+uwa//rsGv/67Br/+WtZv+km0T9mcBl+5fBZv+TwWX/j8Jl/4vCZP+HwmT/gb5h93q6XssH
- BwcVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAnl5qDr90gq7He4r/x3yN/8d9kP/HfpP/x3+W/8aAmP/GgZv/xoKd/7dhWf+4YUj/1pFg/+Wpa//m
- q2z/5qts/+arbP/mq2z/5qts/+arbP/mq2z/2KNg/6OHNf+WkDn/nsFm/5vBZv+XwWb/k8Fl/5DCZf+L
- wmT/h8Jk/4TCY/96u17NUX0/IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAu3J/W8V5iOzHfI3/x32Q/8d+k//Hf5b/xoCY/8aBm//Ggp3/xYKf/7VgW/+v
- VUX/t2JM/9OOYf/jp2z/46ds/+OnbP/jp2z/46ds/+Onbf/WnmD/qYU5/5Z8Kv+Xjjn/osBm/57BZv+a
- wWb/l8Fm/5PCZf+PwmX/i8Jk/4fCZP+Bv2H4cKlVfhEcEQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUXWYLv3aFlsd8jP/HfZD/x36T/8d/lf/GgJj/xoGb/8aCnP/F
- gp//xYKh/7JfXf+rUkb/q1NH/7BcTP/UkmX/36Js/9+ibP/fomz/36Js/9qfaP+nfzb/mXgr/5Z5Kv+Y
- izn/pcBm/6LAZv+ewWb/msFm/5fCZv+TwWX/j8Jl/4vCZP+HwmT/eLFaxWKTSyMAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+d4Yvw3qK3sd9j//HfpP/x3+W/8aAmP/G
- gZv/xoKd/8WCn//FgqL/xIKk/69cXv+nUEj/plFJ/6ZRSf+sWk7/yoVi/9mabP/anGz/0JRg/6h5Nf+c
- cyr/mXMq/5d0K/+Zhzr/qb9m/6bAZv+iwGb/nsFm/5vBZv+Xwmb/k8Jl/5DCZf+LwmT/hsBj+321XUEA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEe406xnyP88d+kv/H
- f5b/xoCY/8aBm//Ggp3/xYKf/8WCof/EgqP/w4Om/6xaX/+jTkn/o05J/6JOSv+hTkv/qlpR/8iDY//O
- kGL/rXc5/55uK/+bbyv/mXAr/5ZwK/+ahDr/rL5m/6m/Zv+lwGb/osBm/57BZv+awWb/l8Fm/5PBZf+P
- wmX/i8Jk/36yW0UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADE
- e482xX2R68d/lf/GgJj/xoGb/8aCnP/Fgp//xYKh/8SCo//Dg6X/w4On/6lZYf+gTEn/nktK/55LS/+d
- S0v/nEtM/6NVUf+scDf/oGkq/51qKv+aayr/mGsq/5ZsK/+agTr/r71l/6u+Zf+ov2b/pcBm/6LAZv+e
- wWb/msFm/5fBZv+TwWX/jsFl/oa4X0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAC4dooWw32Tq8aAmP/GgZv/xoKd/8WCn//FgqL/xIKj/8ODpf/Cg6j/wYKp/6VXYv+b
- SEr/mkhL/5lIS/+YR0v/l0dN/4tAO/+HRyL/n2Qp/5tkKv+ZZSr/l2Yq/5RnK/+bfTn/srxk/6+9Zf+r
- vmX/qb9m/6bAZv+iwGb/nsFm/5vBZv+XwWb/jrpi24WxXS4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmTU0BwX6Wd8WAmvrFgZ3/xYKf/8SCof/DgqP/w4Kl/8GCp//B
- gqn/wIKr/6JUY/+WRUv/lkVL/5RFS/+TREz/k0RM/342Kv9+PCH/m10p/5pfKf+XYCn/lmIq/5RiKv+a
- eTn/tLtk/7G8ZP+tvWX/q75l/6i+Zv+kwGb/ocBm/53BZv+awWb/j7ZglV13PwsAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF2WZFBqH7Gx5pcmvyQUI3/jU+Q/4pOk/+G
- TZX/g0yY/4BLmv98Sp3/eUme/2UwYv97Nkn/kUJL/5BCTP+PQUz/jUBL/3szKP95NiD/lFMn/5lbKP+W
- XCn/lF0p/3pZJP9baib/aJ9B/2WhQ/9io0X/X6RG/1ymSP9Zp0r/VqhL/1KpTP9Usl//WceZzzF+aksA
- AAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnni2IqiAxa6wh9X/rYXX/6Z90v+E
- Spb/ej+N/3c9kP9yPJP/bjuU/2o5l/9lN5r/YDWb/1gvj/9CGEX/UiFH/3g0Sv+JPUz/hzxK/3YvKP91
- MR//j0sl/5ZVKP+BUiP/VUoZ/0BHFf9Ohy7/T5U0/0yXN/9Jmjr/Rps8/0SdPv9An0D/PaBC/z6nT/9Q
- zJn/Vdi1/1LZuP9Gwqi1N52JKQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqgL8dsofMtbSJ0/2w
- h9X/rYXX/6mD2f+dc8r/gkyf/3Y+kf9xPJT/bjuW/2k5mP9kN5v/YDWd/1sznv9HIGT/PBZG/0QbRv94
- NEr/gjlL/3MsKP91MB7/kksl/4hNI/9OQxX/QEIT/0ZdHf9SkTL/T5Q0/02WN/9KmTr/SJs8/0WdPv9B
- n0H/RKdR/1HFif9Y2LH/Vdm1/1LZuf9O2bz9Rsy0uziolSIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACm
- fbtvt4rR+7WJ1P+wh9b/rYXY/6mD2f+kf9r/mHDM/3xIn/9xPJX/bTuY/2g5mv9jN5z/XjWe/1ozoP9R
- LJX/QBxe/zYURf9OH0f/fDVL/3EqLP90Lh7/kkkl/19AGP9APBH/RVIZ/1GDKv9SkDH/UJI0/02VN/9L
- mDn/SJo7/0acPv9GpEv/VMOG/1vVqf9Y2LH/Vdm1/1LZuP9O2r3/Stm/+zeploAAAAAAAAAAAAAAAAAA
- AAAAAAAAAFlDWQS7jM/8uIvS/7WJ1P+wh9b/rYXY/6mD2f+kf9r/oHzc/5h01v92RqP/bDua/2g5nP9i
- N57/XTSg/1kyov9TL6T/TSyg/zwcbv83F1L/XCVJ/3QwR/+HPCT/dD8c/0hBFP9JWRr/VoUp/1WLLf9T
- jzH/UZIz/0+UNv9Mlzn/Spk7/0qhSP9Zx4v/Xtao/1zXrP9Y2LH/Vdm1/1LZuf9O2r3/S9vB/0fZw/wL
- HR0NAAAAAAAAAAAAAAAAAAAAAJpzoyq8jND/uYvS/7WJ1P+wh9b/rYXY/6mD2f+kf9r/oHzc/5t53f+O
- atD/dEeq/2c5nv9hN6D/XDSi/1Yxo/9OLaT/TCym/0gqqP88IpL/YTZ//3s8X6efVTSff2Uo+1RuH/9Z
- hCf/V4cq/1KKLP9RjTD/UpEz/1CTNv9Nlzn/T6FJ/1nAff9g1KL/Xtan/1zXrP9Y2LH/Vdm1/1LZuf9O
- 2r3/S9vB/0fbxP8kdGs9AAAAAAAAAAAAAAAAAAAAAK6CvF+8jND/uYvS/7WJ1P+wh9b/rYXY/6mD2f+k
- f9r/oHzc/5t53f+Vdd7/iWjT/21Cq/9GLaD/KSKf/yUgoP8hHqH/IB2j/yAcpf86JKv/TjOns29Nhh2y
- lEoUcosxpliAJP8sdSD/JXci/yN6Jf8ifin/I4Es/zOKMf9RnkX/XcF9/2LRmv9g1KL/Xtan/1zXrP9Y
- 2LH/Vdm1/1LZuf9O2r3/S9vB/0fbxP81qptvAAAAAAAAAAAAAAAAAAAAALCDvlm8jND/uYvS/7WJ1P+w
- h9b/rYXY/6mD2f+kf9r/oHzc/5t53f+Udd7/gGne/zlD2P8dKrz/GSKt/xcgrf8VHq3/Ex2w/xIdtP8V
- JtT/HTfPtBtBfiQkh3IZLKZcpBuaRv8VfS3/FX4u/xV/L/8VhDT/FIk6/xWUS/8kuH7/UsuS/2HSnP9g
- 1KL/Xtan/1zXrP9Y2LH/Vdm1/1LZuf9O2r3/S9vB/0fbxP81rJpoAAAAAAAAAAAAAAAAAAAAAKF7sR68
- jND/uYvS/7WJ1P+wh9b/rYXY/6mD2f+kf9r/oHzc/5t53f+Da93/P0XY/yQ31/8iNdj/IDTY/x0w1f8a
- LdT/GS3a/xcs3v8QKN//E0/o/g5u27EQsrepE6h++BKaTP8Xo1P/GKRY/xikWf8YqGL/GK9t/xiydP8Y
- tXz/JbyG/07Ml/9g1KL/Xtan/1zXrP9Y2LH/Vdm1/1LZuf9O2r3/S9vB/0fbxP8mfXEtAAAAAAAAAAAA
- AAAAAAAAAGBggAK7i8/1uIvS/7WJ1P+wh9b/rYXY/6mD2f+kf9r/oHzc/5V23P87Qtb/JzfW/yU21v8j
- Ndj/IDPZ/x4y2v8cMNv/GC7c/wsp3P8FLd//Bljs/wdx7/8Gpb3/Bqea/wWRWf8Ll1T/F6Zb/xirYv8Y
- rmn/GLBw/xezdv8Ytn3/F7iD/yC+i/9T0J//Xtao/1zXrP9Y2LH/Vdm1/1LZuf9O2r3/S9vB/0bYwvcK
- JRwFAAAAAAAAAAAAAAAAAAAAAAAAAACzhspRuIrR9LWJ1P+wh9b/rYXY/6mD2f+jf9r/jHHa/z9D1P8p
- N9T/JzbW/yU11/8jNNj/ITPZ/x8x2f8ZL9v/CSna/wMm2/8FQeX/B23x/wNjzP8Ddbr/B7PB/wWbf/8D
- jVf/CJZd/xWpZP8YsGz/GLFy/xi0eP8Xt3//F7mF/xa7iv8fwJT/Ss+j/1rWrP9Y2LH/Vdm1/1LZuf9O
- 2r3/Stm/9T+7ploAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1iMwVtonPmrSJ0/ewh9b/rYXY/6mD2f+R
- dNj/SEfT/ys30v8pNtT/KDXV/yY01/8jM9j/ITPZ/x8x2v8MK9r/BCfa/wU34P8IZe//CGzw/wNgx/8C
- cL3/B6zE/wiwv/8ElnX/A49f/wqbZf8YsG7/GLN0/xi1ef8XuIH/F7qG/xa7jP8VvZP/IsOb/0jRqP9Y
- 2LH/Vdm1/1LZuf9O2bz4SdK5nkPIsRYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtIjPGLCFz3mw
- h9X/rYXX/6R/2P9EQtH/LjXQ/yw10v8qNdT/KDTV/yY01/8kM9j/IjLZ/xwv2v8EKNn/Bj3i/whe7f8J
- afH/CGnv/wNfyf8Ca8D/B6HH/wiyy/8Hrr3/BZyH/wORZ/8VrG//GLR2/xi2e/8XuIP/F7qI/xa8jf8V
- vZT/Fb+Z/x7Eof9N1a//Vdi1/1LZuP9JzbF9R8yyGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAACeecgWmXzVm05O1/g3Qdj/NULZ/zRC2v8yQ9v/MUPc/y9D3v8tQ9//LEPg/xFA4f8K
- XO3/CmXw/wlm8P8JZ/D/CWjv/wNezP8Ca8P/B6PL/wixzv8IstH/CbTU/wiwyf8NqZb/IcCS/yDClv8h
- w53/IMWh/x/Gpf8fyKv/Hsmv/x7Ks/8nzbn8StC3pkWvlBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXF0YBSl/ndExk7/hMaPH/TGrx/0tt8f9Kb/L/SXHy/0hy8/9H
- dPP/Rnbz/xpm8P8LYfD/C2Pw/wtk8P8KZfD/Cmfw/wNez/8Db8f/CazP/wmw0f8JsdT/CbLW/wmz2f8V
- v9z/OuHh/zvi5P874ub/O+Pn/zvk6f875ez/OuXu/zrl7/855vD+M8/ZlxdiZwwAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBUc0VSl3nqU1i8P9NZfD/TGjx/0xq8f9L
- bfH/Sm/y/0lw8v9Ic/P/R3Tz/xpk8P8LX+//C2Dv/wti8P8LZPD/C2Xw/wdh3v8Eecv/Ca7S/wmv1P8J
- sNb/CbHZ/wmx2v8Vvt7/O+Lk/zvi5f874+f/OuPp/zvl6/865e3/OuXv/znm8f855vP/Ndnm2i/E0C4A
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLWeo1TFzt6k1f8P9N
- YvD/TWXw/0xn8f9LavH/S2zx/0pu8v9JcPL/SHLz/xth8P8LXe//C17v/wtf7/8LYe//C2Pw/w9v8f8Q
- rtn/CqzV/wqt1v8Jrtn/Ca/b/wmv3f8WveH/O+Lm/zvj5/865Or/O+Xr/zrl7f865fD/Oebx/znm8/84
- 5/X/N+b2/jPX5kQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABM
- V+w6TVnu801c7/9NYPD/TWLw/01l8P9MaPH/TGrx/0ts8f9Kb/L/SXHy/xxe8P8NWu//DVzv/wxd7/8M
- X+//EG3x/yKj9/8nvvP/ErDe/wus2f8Krdv/Cq3d/wqt3/8Wu+L/O+Pn/zrj6f875ev/OuXt/zrl7/85
- 5vH/Oebz/zjn9f845/f/N+f5/zLV5kUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAABLVegwTFbs4E1Z7/9NXe//TWDw/01i8P9NZfD/TGjx/0tq8f9LbfH/Sm/y/xxc7/8N
- V+7/DVnu/w1a7/8QZvD/Ipz2/y6++v8vwPr/J7vy/xCu4P8Lq93/Cqvf/wqs4f8WuuT/O+Tp/zvl6/86
- 5e3/OuXv/znm8f855vP/OOf1/zjn9v835/n/Nub5/DPd8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGStUMTFPrl01W7/9NWe//TV3v/01f8P9NYvD/TWXw/0xn8f9M
- avH/S23x/xxZ7v8NVO7/DVXu/xFh7/8noff/Mb76/zG++v8xvvr/Mb76/y279/8RrOP/C6nh/wqq4/8W
- uef/O+Xr/zrl7f865fD/Oebx/znm8/845/X/OOf3/zfn+f825/v/M9vvxS3F2CMAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATFHqXU1T7u5NV+//TVrv/01d7/9N
- YPD/TWLw/01l8P9MaPH/TGrx/x1W7v8OUe3/EmDv/yWU9v8zu/r/M7v6/zO7+v8zu/r/M7v6/zO7+v8p
- tvT/E6vo/wun5f8Wt+j/OuXt/zrl7/855vH/Oebz/zjn9f845/f/N+j5/zbn+v815vv5MdnufBBVXQQA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASU7iDk1Q7LVN
- U+7/TVfv/01Z7/9NXe//TWDw/01i8P9NZfD/TGjx/x5U7v8SWO7/JpH1/zO1+v80ufr/NLn6/zS5+v80
- ufr/NLn6/zS5+v8zuPr/KrT1/xGo6f8Xter/OuXv/znm8f855vP/OOf1/zjn9v835/n/Nuf6/zXo/P80
- 5fvMLMfbHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAFNUe26TVPu8U1W7/9NWe//TVzv/01f8P9NYvD/TWXw/yRg7/4rmfb/NbX5/zW1+v81
- tfr/NbX5/zW1+v81tfr/NbX5/zW1+v81tfr/NbX5/zCz9/8etu79Oebx/Tnm8/845/X/OOf3/zfn+f82
- 5/v/Nef8+DTm/MsbXmsLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKUOYSS1HqZUxT7KtNVu71TVnv/k1c7/1MXu3US2HrjzaZ9L82
- svn/NrL5/zay+f82svn/NrL5/zay+f82svn/NrL5/zay+f82svn/NrL5/zay+f8zsu7BOePwgzjk8sg3
- 5/b8N+f4/zbn+vk14/e6M+L3di/Q6BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVAEhQ4xZNVe47TVjvP01a7z9L
- W+gqQ1PICDOk5ic3r/n/N6/5/zev+f83r/n/N6/5/zev+f83r/n/N6/5/zev+f83r/n/N6/5/zev+f8n
- frMyNsnYBDfg8CQ35vc+Nuf5QDXm+j0y2O0dIoiZAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2qPWhN6n5/Teq+f83qvn/N6r5/zeq+f83qvn/N6r5/zeq+f83
- qvn/N6n5/TSh7KYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3pvYeN6b3szim+Ps4pvn/OKb5/zim+f84
- pvn/OKb5/zim+f84pvj7N6P0tTOa5SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6P1HDef8nM4
- ovj+OKL4/zii+P84ovj/OKL4/zii+P41mup3NpvrHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAxjNYGNZbqOzab8X82mvB/NJHhPSpysQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///n///wAA///4D///AAD//8AD//8AAP//wAP/
- /wAA///AAf//AAD/wAAAAf8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8
- AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA+AAAAAAfAADgAAAAAAcAAOAAAAAA
- BwAA4AAAAAAHAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADg
- AAAAAAcAAOAAAAAABwAA8AAAAAAHAAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAA
- PwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/gAAAAA/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/
- /8AD//8AAP//wAP//wAA///AA///AAD///gf//8AAP///////wAA////////AAAoAAAAIAAAAEAAAAAB
- ACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNOJhXZqVRe1qZSX1JAHhkAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPos16c+sJk//vCZP/7wmT/+sJk/96sWqIA
- AAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7bZjrfW9Z//1vWf/9b1n//W9Z//1
- vWf/9b1n/+KuX7QAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbkRNHrt1hHW/eYt9iVdmQ8qZWTbwt2n/8Ldp//C3af/w
- t2n/8Ldp//C3af/wt2n/8Ldp/6yDTD5lhkYzh7pge3+4XnlIajYtAAAAAQAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbhxfpfHe4v/x32P/8d+lP/GgJj/yYB2/OepZ//s
- sWv/7LFr/+yxa//ssWv/7LFr/+yxa//psGn/q6tW95fBZv+RwmX/i8Jk/4XCY/91slqyBwcHCQAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8c4CPx3uL/8d9kP/Hf5T/xoCY/8aBnP+8
- bHH/umRK/+Gjaf/mqmz/5qps/+aqbP/mqmz/46lq/6iJOf+aoEj/nMFm/5fBZv+RwmX/i8Jk/4XCY/92
- tFu2AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkFpjEMd7i//HfZD/x36U/8aAmP/G
- gZz/xYKf/7lrc/+sU0b/tGBN/9ucaf/go2z/4KNs/96ia/+rgjn/l3kq/52dSP+iwGb/nMFm/5fCZv+R
- wmX/i8Jk/4XCY/9YhEQ2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAeIhlx32P/8d/lP/G
- gJj/xoGc/8WCn//EgqL/tml2/6ZQSP+lUEn/rVxQ/9WUav/Ymmr/rHs5/5tyK/+Xcyv/n5lJ/6fAZv+i
- wGb/nMFm/5fCZv+RwmX/i8Jk/4K7YIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMR7jm/H
- fpT/xoCY/8aBnP/Fgp//xIKi/8ODpf+yZ3j/oExJ/59LSv+eS0v/p1lS/650Ov+eayr/mmwq/5ZtK/+h
- lUj/rL5l/6e/Zv+iwGb/nMFm/5fBZv+RwmX/ib1iggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAtXWHH8aAmP/GgZz/xYKf/8SCov/Dg6X/woOo/65lev+aR0v/mEdL/5dHTP+MQD3/jk4k/5xjKf+Y
- ZCr/lWYq/6ORSP+wvWX/q75l/6e/Zv+iwGb/nMFm/5fBZv9/qFhLAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAACLaqxArHCk9KFgk/+eX5f/ml+b/5Zdnv+SXKH/gEZ4/4k9Sv+RQkz/kEJM/4I4NP+C
- QCL/mlwp/5ZdKf+IXSf/doI3/3+qTf97rE//dq1R/3KvU/9ssVX/b71t/j2chEYAAAABAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAACrYPKrrCG1v+ogdb/hU2c/3c+j/9xPJP/ajmX/2Q3mv9bMpf/QRhG/2QrSf+I
- PEz/ezIz/3s3IP+WVCf/bE0e/0BHFf9PjjD/TZc2/0maOv9FnT3/QJ9B/0CpU/9U06f/U9m4/0jJr7QA
- AAAGAAAAAAAAAAAAAAAAAAAAALCExo22itP/sIbW/6qD2f+ifdj/f0ui/3E8lv9qOZn/Yjac/1szn/9M
- J4H/OBRG/2QqSf91LjX/fzgg/3ZGHv9APRL/TXIl/1KRMv9OlTb/Spk6/0acPf9Gpk//WdGg/1jYsv9T
- 2bj/Ttq+/0DBq5cAAAAAAAAAAAAAAABhSWEFuovQ/raK0/+wh9b/qoPZ/6N/2/+bd9r/d0mn/2g5nP9h
- Np//WjOi/1IupP9EJIv/ORhY/3QwSf+NQCb/TEUV/1FwIv9Wiyz/U48x/1CUNf9MmDn/TKNL/13Pmf9c
- 16v/WNiy/1PZuP9O2r7/SNrD/g4lJQ4AAAAAAAAAAKyAuTq7jND/torT/7CH1v+qg9n/o3/b/5x63f+T
- ctz/cEau/0kuoP82JqH/LiOj/y0hpv89Jaz/jWGiUsmdTkJagSX/OXoj/zJ+J/8ygyz/Oosx/1KhSf9g
- zZH/YNWj/1zXq/9Y2LL/U9m4/07avv9I28T/MqOURQAAAAAAAAAAroK8NLuM0P+2itP/sIfW/6qD2f+j
- f9v/nHrd/5Jz3v8+Rtn/HizC/xkmuf8WIrn/FCLB/xYo2/8lXrRaKaqURx2dSP8Wijr/Fok6/xaQQ/8W
- nFX/KLqB/13Rmv9g1aP/XNer/1jYsv9T2bj/Ttq+/0jbxP8zppU+AAAAAAAAAABgYIACuovQ+7aK0/+w
- h9b/qoPZ/6N/2/+aeNz/QUbX/yU21v8iNNj/HzLa/xsw2/8SK93/Bi/g/wdy8f8Ir8D/B5Rb/xKeVv8Y
- qmD/GK9q/xiydP8Ytn7/JL6L/1rTov9c16v/WNiy/1PZuP9O2r7/R9rD+wsoHwYAAAAAAAAAAAAAAAC2
- iM10torT/7CG1v+qg9n/oX7a/0ZH1f8pN9T/JjXX/yI02P8fMtn/FC3a/wMn2/8GV+v/BGbX/wSIvf8G
- p6L/A45Z/xGjY/8YsG3/GLR3/xe4gP8Xu4r/IsGW/1fVqv9Y2LL/U9m4/07avv9Ey7R6AAAAAAAAAAAA
- AAAAAAAAAAAAAACyh9CLsIbW/6eC2P9KR9L/LDbR/yk11P8mNNf/IzPZ/x4x2v8EKNr/B1Do/wlp8f8F
- Y9X/A3nB/wiyyv8GpqX/A5Fm/xevcP8YtXr/F7mD/xe8jP8VvpX/IcSg/1PXsf9T2bj/StK2jgAAAAEA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkfsscXF7e7D5P4P88UeL/OlLj/zhT5f82VOb/H0/m/wpg7/8K
- ZfD/CWfw/wVi2P8Ee8b/CbHO/wmy0v8JstD/Gbms/ynMr/8pzrb/KdC7/yjSwf8n08b/NdfM+kWwlCAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD5NxR5NYvD/TWbx/0xq8f9KbfL/SXHy/0hz8/8p
- avH/C2Dv/wti8P8LZPD/B2Lh/waJzP8Jr9P/CbDW/wmx2v8iyt//O+Ll/zvj5/875Or/OuXu/zrm8P85
- 5vP/LLXATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATFnrbk1e8P9NYvD/TWbx/0xq8f9K
- bfL/SXHy/ypn8f8MXO//C1/v/wth7/8QcvH/ErDc/wqt1/8Krtr/Cq/d/yPJ4/874+f/OuTq/zrl7f86
- 5vD/Oebz/zjn9v814PCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMVepmTVnv/01e8P9N
- YvD/TGbx/0xq8f9KbfL/K2Pw/w1Y7v8NW+//EWrx/yu1+f8twPj/Eq/h/wur3f8KrOD/I8jl/zvk6v86
- 5e3/Oubw/znm8/845/b/N+f5/zXi9X8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVJ0xBN
- Ve//TVrv/01e8P9NYvD/TGbx/0xq8f8sX+//DVPu/xJj8P8tsfn/Mb36/zG9+v8wvPn/E6zl/wqp4/8j
- x+j/OuXt/zrm8P855vP/OOf2/zfn+f825/v/KrrLNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAExQ65VNVe//TVrv/01e8P9NYvD/TWbx/y1b7/8TXe//L6z5/zS5+v80ufr/NLn6/zS5+v8y
- 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
-
+
+ 147, 17
\ No newline at end of file
diff --git a/ColorControl/MainWorker.cs b/ColorControl/MainWorker.cs
new file mode 100644
index 0000000..f522b67
--- /dev/null
+++ b/ColorControl/MainWorker.cs
@@ -0,0 +1,187 @@
+using ColorControl.Services.Common;
+using ColorControl.Shared.Common;
+using ColorControl.Shared.Contracts;
+using ColorControl.Shared.EventDispatcher;
+using ColorControl.Shared.Forms;
+using ColorControl.Shared.Native;
+using ColorControl.Shared.Services;
+using NLog;
+using System;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.IO;
+using System.Runtime.InteropServices;
+using System.Threading.Tasks;
+
+namespace ColorControl;
+
+internal class MainWorker
+{
+ private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
+
+ private readonly BackgroundWorker _backgroundWorker;
+ private readonly AppContextProvider _appContextProvider;
+ private readonly ServiceManager _serviceManager;
+ private readonly Config _config;
+ private readonly NotifyIconManager _notifyIconManager;
+ private readonly WindowMessageDispatcher _windowMessageDispatcher;
+ private readonly KeyboardShortcutDispatcher _keyboardShortcutDispatcher;
+ private readonly PowerEventDispatcher _powerEventDispatcher;
+ private readonly WinApiService _winApiService;
+ private readonly WinApiAdminService _winApiAdminService;
+ private readonly UpdateManager _updateManager;
+ private bool _isInitialized;
+ private bool _queryEndSession;
+ private nint _screenStateNotify;
+
+ public static int SHORTCUTID_SCREENSAVER = -100;
+
+ public MainWorker(
+ AppContextProvider appContextProvider,
+ ServiceManager serviceManager,
+ NotifyIconManager notifyIconManager,
+ WindowMessageDispatcher windowMessageDispatcher,
+ KeyboardShortcutDispatcher keyboardShortcutDispatcher,
+ PowerEventDispatcher powerEventDispatcher,
+ WinApiService winApiService,
+ WinApiAdminService winApiAdminService,
+ UpdateManager updateManager)
+ {
+ _backgroundWorker = new BackgroundWorker();
+ _appContextProvider = appContextProvider;
+ _serviceManager = serviceManager;
+ _notifyIconManager = notifyIconManager;
+ _windowMessageDispatcher = windowMessageDispatcher;
+ _keyboardShortcutDispatcher = keyboardShortcutDispatcher;
+ _powerEventDispatcher = powerEventDispatcher;
+ _winApiService = winApiService;
+ _winApiAdminService = winApiAdminService;
+ _updateManager = updateManager;
+ _config = _appContextProvider.GetAppContext().Config;
+ }
+
+ public async Task DoWork()
+ {
+ while (!_backgroundWorker.CancellationPending)
+ {
+
+ if (!_isInitialized)
+ {
+ await Init();
+ }
+
+ //await Task.Delay(1000);
+
+ System.Windows.Forms.Application.Run(_windowMessageDispatcher.MessageForm);
+
+ _notifyIconManager.HideIcon();
+
+ if (_screenStateNotify != 0)
+ {
+ WinApi.UnregisterPowerSettingNotification(_screenStateNotify);
+ _screenStateNotify = 0;
+ }
+
+ break;
+ }
+ }
+
+ private async Task Init()
+ {
+ _appContextProvider.GetAppContext().SynchronizationContext = AsyncOperationManager.SynchronizationContext;
+
+ _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessageQueryEndSession, HandleQueryEndSessionEvent);
+ _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessageClose, HandleCloseEvent);
+ _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessagePowerBroadcast, HandlePowerBroadcastEvent);
+ _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessageShowWindow, HandleShowWindowEvent);
+
+ _screenStateNotify = WinApi.RegisterPowerSettingNotification(_windowMessageDispatcher.MessageForm.Handle, ref Utils.GUID_CONSOLE_DISPLAY_STATE, 0);
+
+ _keyboardShortcutDispatcher.SetUseRawInput(_config.UseRawInput);
+
+ _serviceManager.LoadModules();
+
+ _notifyIconManager.Build();
+
+ // Auto-apply fix if desired but not currently installed
+ if (_config.FixChromeFonts && _winApiService.IsChromeInstalled() && !_winApiService.IsChromeFixInstalled())
+ {
+ _winApiAdminService.InstallChromeFix(true, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
+ }
+
+ InitTheme();
+
+ _keyboardShortcutDispatcher.RegisterShortcut(SHORTCUTID_SCREENSAVER, _config.ScreenSaverShortcut);
+ _keyboardShortcutDispatcher.RegisterEventHandler(KeyboardShortcutDispatcher.Event_HotKey, HandleHotKeyEvent);
+
+ _isInitialized = true;
+ }
+
+ private bool _startupSent = false;
+
+ private void HandleShowWindowEvent(object sender, WindowMessageEventArgs e)
+ {
+ if (_startupSent)
+ {
+ return;
+ }
+
+ _startupSent = true;
+
+ var _ = _powerEventDispatcher.SendEventAsync(PowerEventDispatcher.Event_Startup);
+
+ var x = _updateManager.CheckForUpdates();
+ }
+
+ private void HandlePowerBroadcastEvent(object sender, WindowMessageEventArgs e)
+ {
+ if (e.Message.WParam.ToInt32() == WinApi.PBT_POWERSETTINGCHANGE)
+ {
+ var ps = Marshal.PtrToStructure(e.Message.LParam);
+
+ var power = (WindowsMonitorPowerSetting)ps.Data;
+
+ Logger.Debug($"PBT_POWERSETTINGCHANGE: {power}");
+
+ _powerEventDispatcher.SendEvent(power == WindowsMonitorPowerSetting.Off ? PowerEventDispatcher.Event_MonitorOff : PowerEventDispatcher.Event_MonitorOn);
+ }
+ }
+
+ private void HandleCloseEvent(object sender, WindowMessageEventArgs e)
+ {
+ if (_queryEndSession)
+ {
+ _powerEventDispatcher.SendEvent(PowerEventDispatcher.Event_Shutdown);
+ }
+ }
+
+ private void HandleQueryEndSessionEvent(object sender, WindowMessageEventArgs e)
+ {
+ _queryEndSession = true;
+ }
+
+ private void HandleHotKeyEvent(object sender, KeyboardShortcutEventArgs args)
+ {
+ if (args.HotKeyId == SHORTCUTID_SCREENSAVER)
+ {
+ StartScreenSaver();
+ }
+ }
+
+ private void StartScreenSaver()
+ {
+ var screenSaver = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "scrnsave.scr");
+ Process.Start("explorer.exe", screenSaver);
+ }
+
+ private void InitTheme()
+ {
+ DarkModeUtils.SetDarkMode(_config.UseDarkMode);
+
+ WinApi.RefreshImmersiveColorPolicyState();
+
+ DarkModeUtils.InitWpfTheme();
+
+ DarkModeUtils.SetContextMenuForeColor(_notifyIconManager.NotifyIcon.ContextMenuStrip, FormUtils.CurrentForeColor);
+ }
+}
diff --git a/ColorControl/Program.cs b/ColorControl/Program.cs
index 6590a95..71fae67 100644
--- a/ColorControl/Program.cs
+++ b/ColorControl/Program.cs
@@ -1,4 +1,5 @@
using ColorControl.Forms;
+using ColorControl.Services.AMD;
using ColorControl.Services.Common;
using ColorControl.Services.GameLauncher;
using ColorControl.Services.LG;
@@ -7,6 +8,7 @@ using ColorControl.Services.Samsung;
using ColorControl.Shared.Common;
using ColorControl.Shared.Contracts;
using ColorControl.Shared.EventDispatcher;
+using ColorControl.Shared.Forms;
using ColorControl.Shared.Native;
using ColorControl.Shared.Services;
using ColorControl.Svc;
@@ -38,12 +40,16 @@ namespace ColorControl
public static bool IsRestarting { get; private set; }
public static bool UserExit = false;
+ public static bool UseWorker = true;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private static Mutex _mutex;
- private static MainForm _mainForm;
+ public static MainForm _mainForm;
private static LoggingRule _loggingRule;
+ ///
+ /// The main entry point for the application.
+ ///
[STAThread] // autogenerated
public static void Main(string[] args)
{
@@ -51,10 +57,6 @@ namespace ColorControl
MainAsync(args).GetAwaiter().GetResult();
}
- ///
- /// The main entry point for the application.
- ///
- //[STAThread]
static async Task MainAsync(string[] args)
{
DataDir = Utils.GetDataPath();
@@ -73,6 +75,11 @@ namespace ColorControl
return;
}
+ await RunApp(args);
+ }
+
+ static async Task RunApp(string[] args)
+ {
var currentDomain = AppDomain.CurrentDomain;
// Handler for unhandled exceptions.
currentDomain.UnhandledException += GlobalUnhandledExceptionHandler;
@@ -96,9 +103,9 @@ namespace ColorControl
var appContextProvider = ServiceProvider.GetRequiredService();
var startUpParams = StartUpParams.Parse(args);
- AppContext = new GlobalContext(Config, startUpParams, DataDir, _loggingRule, mutexId);
+ AppContext = new GlobalContext(Config, startUpParams, DataDir, _loggingRule, ServiceProvider, mutexId);
appContextProvider.SetAppContext(AppContext);
-
+ MessageForms.Title = AppContext.ApplicationTitle;
var existingProcess = Utils.GetProcessByName("ColorControl");
@@ -134,19 +141,12 @@ namespace ColorControl
_mutex.WaitOne();
try
{
- //if (Debugger.IsAttached)
- //{
- // Utils.StartService();
- //}
-
- //var result = WinApi.SetPreferredAppMode(1);
- //result = WinApi.RefreshImmersiveColorPolicyState();
-
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (Debugger.IsAttached)
{
+ //Utils.StartService();
var winApiService = ServiceProvider.GetRequiredService();
if (winApiService.IsAdministrator())
@@ -158,8 +158,19 @@ namespace ColorControl
}
}
- _mainForm = ServiceProvider.GetRequiredService();
- Application.Run(_mainForm);
+ if (UseWorker)
+ {
+ var worker = ServiceProvider.GetRequiredService();
+
+ await worker.DoWork();
+
+ //Application.Run();
+ }
+ else
+ {
+ _mainForm = ServiceProvider.GetRequiredService();
+ Application.Run(_mainForm);
+ }
if (Debugger.IsAttached && !IsRestarting)
{
@@ -182,6 +193,23 @@ namespace ColorControl
}
}
+ public static void OpenMainForm()
+ {
+ _mainForm ??= ServiceProvider.GetRequiredService();
+ _mainForm.OpenForm();
+ }
+
+ public static void Exit()
+ {
+ UserExit = true;
+ _mainForm?.Close();
+
+ if (AppContext.MainHandle != 0)
+ {
+ NativeMethods.SendMessageW(AppContext.MainHandle, NativeConstants.WM_CLOSE, 0, 0);
+ }
+ }
+
public static void Restart()
{
IsRestarting = true;
@@ -251,11 +279,16 @@ namespace ColorControl
{
//services.AddSingleton();
services.RegisterSharedServices();
+ services.AddSingleton();
+ services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
+ services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
@@ -264,6 +297,7 @@ namespace ColorControl
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
+ services.AddSingleton();
});
}
private static async Task RunService(string[] args)
@@ -286,7 +320,7 @@ namespace ColorControl
ServiceProvider = host.Services;
var appContextProvider = ServiceProvider.GetRequiredService();
- AppContext = new GlobalContext(null, new StartUpParams(), DataDir, _loggingRule);
+ AppContext = new GlobalContext(null, new StartUpParams(), DataDir, _loggingRule, ServiceProvider);
appContextProvider.SetAppContext(AppContext);
await host.RunAsync();
@@ -348,7 +382,7 @@ namespace ColorControl
internal static NotifyIcon GetNotifyIcon()
{
- return _mainForm?._trayIcon;
+ return _mainForm?._notifyIconManager?.NotifyIcon;
}
}
}
diff --git a/ColorControl/Properties/Resources.Designer.cs b/ColorControl/Properties/Resources.Designer.cs
index 2d4d2a4..bf85d6f 100644
--- a/ColorControl/Properties/Resources.Designer.cs
+++ b/ColorControl/Properties/Resources.Designer.cs
@@ -22,7 +22,7 @@ namespace ColorControl.Properties {
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources {
+ public class Resources {
private static global::System.Resources.ResourceManager resourceMan;
@@ -36,7 +36,7 @@ namespace ColorControl.Properties {
/// Returns the cached ResourceManager instance used by this class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
+ public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ColorControl.Properties.Resources", typeof(Resources).Assembly);
@@ -51,7 +51,7 @@ namespace ColorControl.Properties {
/// resource lookups using this strongly typed resource class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
+ public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
@@ -60,10 +60,20 @@ namespace ColorControl.Properties {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
+ ///
+ public static System.Drawing.Icon AppIcon {
+ get {
+ object obj = ResourceManager.GetObject("AppIcon", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
- internal static System.Drawing.Bitmap LG_remote {
+ public static System.Drawing.Bitmap LG_remote {
get {
object obj = ResourceManager.GetObject("LG_remote", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
@@ -108,7 +118,7 @@ namespace ColorControl.Properties {
///Rakuten TV;116;1218
///Play;202 [rest of string was truncated]";.
///
- internal static string RC_coords {
+ public static string RC_coords {
get {
return ResourceManager.GetString("RC_coords", resourceCulture);
}
diff --git a/ColorControl/Properties/Resources.resx b/ColorControl/Properties/Resources.resx
index 7bd5ff2..d9c44eb 100644
--- a/ColorControl/Properties/Resources.resx
+++ b/ColorControl/Properties/Resources.resx
@@ -118,6 +118,9 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ..\Resources\pngbarn.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\LG_remote.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/ColorControl/pngbarn.ico b/ColorControl/Resources/pngbarn.ico
similarity index 100%
rename from ColorControl/pngbarn.ico
rename to ColorControl/Resources/pngbarn.ico
diff --git a/ColorControl/Services/AMD/AmdPanel.cs b/ColorControl/Services/AMD/AmdPanel.cs
index 36819b0..3be1ac4 100644
--- a/ColorControl/Services/AMD/AmdPanel.cs
+++ b/ColorControl/Services/AMD/AmdPanel.cs
@@ -3,6 +3,7 @@ using ColorControl.Shared.Common;
using ColorControl.Shared.Contracts;
using ColorControl.Shared.Forms;
using ColorControl.Shared.Native;
+using ColorControl.Shared.Services;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -18,18 +19,17 @@ namespace ColorControl.Services.AMD
{
public static readonly int SHORTCUTID_AMDQA = -201;
- private AmdService _amdService;
- private NotifyIcon _trayIcon;
- private IntPtr _mainHandle;
+ private readonly AmdService _amdService;
+ private readonly NotifyIcon _trayIcon;
+ private readonly AppContextProvider _appContextProvider;
private Config _config;
private string _lastDisplayRefreshRates = string.Empty;
- internal AmdPanel(AmdService amdService, NotifyIcon trayIcon, IntPtr handle)
+ internal AmdPanel(AmdService amdService, NotifyIcon trayIcon, AppContextProvider appContextProvider)
{
_amdService = amdService;
_trayIcon = trayIcon;
- _mainHandle = handle;
-
+ _appContextProvider = appContextProvider;
_config = Shared.Common.GlobalContext.CurrentContext.Config;
InitializeComponent();
@@ -144,7 +144,7 @@ namespace ColorControl.Services.AMD
{
if (_amdService.HasDisplaysAttached())
{
- await ApplyAmdPreset(preset);
+ await _amdService.ApplyPresetUi(preset);
}
else
{
@@ -227,30 +227,7 @@ namespace ColorControl.Services.AMD
private async Task ApplySelectedAmdPreset()
{
var preset = GetSelectedAmdPreset();
- await ApplyAmdPreset(preset);
- }
-
- internal async Task ApplyAmdPreset(AmdPreset preset)
- {
- if (preset == null || _amdService == null)
- {
- return false;
- }
- try
- {
- var result = await _amdService.ApplyPreset(preset);
- if (!result)
- {
- throw new Exception("Error while applying AMD preset. At least one setting could not be applied. Check the log for details.");
- }
-
- return true;
- }
- catch (Exception e)
- {
- MessageForms.ErrorOk($"Error applying AMD-preset ({e.TargetSite.Name}): {e.Message}");
- return false;
- }
+ await _amdService.ApplyPresetUi(preset);
}
private async void btnApplyAmd_Click(object sender, EventArgs e)
@@ -325,7 +302,7 @@ namespace ColorControl.Services.AMD
if (!string.IsNullOrEmpty(preset.shortcut))
{
- WinApi.UnregisterHotKey(_mainHandle, preset.id);
+ WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, preset.id);
}
_amdService.GetPresets().Remove(preset);
diff --git a/ColorControl/Services/AMD/AmdService.cs b/ColorControl/Services/AMD/AmdService.cs
index e7bd558..1591d1e 100644
--- a/ColorControl/Services/AMD/AmdService.cs
+++ b/ColorControl/Services/AMD/AmdService.cs
@@ -25,6 +25,8 @@ namespace ColorControl.Services.AMD
public AmdService(AppContextProvider appContextProvider) : base(appContextProvider)
{
LoadPresets();
+
+ SetShortcuts(-201, _appContextProvider.GetAppContext().Config.AmdQuickAccessShortcut);
}
public static async Task ExecutePresetAsync(string idOrName)
diff --git a/ColorControl/Services/Common/IServiceBase.cs b/ColorControl/Services/Common/IServiceBase.cs
new file mode 100644
index 0000000..6063fd6
--- /dev/null
+++ b/ColorControl/Services/Common/IServiceBase.cs
@@ -0,0 +1,6 @@
+namespace ColorControl.Services.Common;
+
+internal interface IServiceBase
+{
+ void InstallEventHandlers();
+}
diff --git a/ColorControl/Services/Common/NotifyIconManager.cs b/ColorControl/Services/Common/NotifyIconManager.cs
new file mode 100644
index 0000000..d37b719
--- /dev/null
+++ b/ColorControl/Services/Common/NotifyIconManager.cs
@@ -0,0 +1,233 @@
+using ColorControl.Properties;
+using ColorControl.Services.AMD;
+using ColorControl.Services.GameLauncher;
+using ColorControl.Services.LG;
+using ColorControl.Services.NVIDIA;
+using ColorControl.Services.Samsung;
+using ColorControl.Shared.Contracts;
+using ColorControl.Shared.Forms;
+using ColorControl.Shared.Services;
+using novideo_srgb;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace ColorControl.Services.Common;
+
+public class NotifyIconManager
+{
+ private readonly AppContextProvider _appContextProvider;
+ private readonly ServiceManager _serviceManager;
+ private readonly Config _config;
+
+ public NotifyIcon NotifyIcon { get; private set; }
+
+ private ToolStripMenuItem _nvTrayMenu;
+ private ToolStripMenuItem _novideoTrayMenu;
+ private ToolStripMenuItem _amdTrayMenu;
+ private ToolStripMenuItem _lgTrayMenu;
+ private ToolStripMenuItem _samsungTrayMenu;
+ private ToolStripMenuItem _gameTrayMenu;
+
+ public NotifyIconManager(AppContextProvider appContextProvider, ServiceManager serviceManager)
+ {
+ _appContextProvider = appContextProvider;
+ _serviceManager = serviceManager;
+ _config = appContextProvider.GetAppContext().Config;
+ }
+
+ public void Build()
+ {
+ if (_nvTrayMenu != null)
+ {
+ return;
+ }
+
+ _nvTrayMenu = new ToolStripMenuItem("NVIDIA presets");
+ _novideoTrayMenu = new ToolStripMenuItem("Novideo sRGB");
+ _amdTrayMenu = new ToolStripMenuItem("AMD presets");
+ _lgTrayMenu = new ToolStripMenuItem("LG presets");
+ _samsungTrayMenu = new ToolStripMenuItem("Samsung presets");
+ _gameTrayMenu = new ToolStripMenuItem("Game Launcher");
+ NotifyIcon = new NotifyIcon()
+ {
+ Icon = Resources.AppIcon,
+ ContextMenuStrip = new ContextMenuStrip(),
+ Visible = _config.MinimizeToTray,
+ Text = _appContextProvider.GetAppContext().ApplicationTitleAdmin
+ };
+
+ NotifyIcon.ContextMenuStrip.Items.AddRange(new ToolStripItem[] {
+ _nvTrayMenu,
+ _novideoTrayMenu,
+ _amdTrayMenu,
+ _lgTrayMenu,
+ _samsungTrayMenu,
+ _gameTrayMenu,
+ new ToolStripSeparator(),
+ new ToolStripMenuItem("Open", null, OpenForm),
+ new ToolStripSeparator(),
+ new ToolStripMenuItem("Restart", null, Restart),
+ new ToolStripMenuItem("Exit", null, Exit)
+ });
+
+ NotifyIcon.MouseDoubleClick += trayIcon_MouseDoubleClick;
+ NotifyIcon.ContextMenuStrip.Opened += trayIconContextMenu_Popup;
+ NotifyIcon.BalloonTipClicked += trayIconBalloonTip_Clicked;
+ }
+
+ public void HideIcon()
+ {
+ if (NotifyIcon != null)
+ {
+ NotifyIcon.Visible = false;
+ }
+ }
+
+ private void Exit(object sender, EventArgs e)
+ {
+ Program.Exit();
+ }
+
+ private void Restart(object sender, EventArgs e)
+ {
+ Program.Restart();
+ }
+
+ private void OpenForm(object sender, EventArgs e)
+ {
+ Program.OpenMainForm();
+ }
+
+ private void trayIcon_MouseDoubleClick(object sender, MouseEventArgs e)
+ {
+ Program.OpenMainForm();
+ }
+
+ private void trayIconBalloonTip_Clicked(object sender, EventArgs e)
+ {
+ //if (_updateHtmlUrl != null)
+ //{
+ // _winApiAdminService.StartProcess(_updateHtmlUrl);
+ //}
+ }
+
+ private void trayIconContextMenu_Popup(object sender, EventArgs e)
+ {
+ _nvTrayMenu.Visible = _serviceManager.NvService != null;
+ if (_nvTrayMenu.Visible)
+ {
+ var presets = _serviceManager.NvService.GetPresets().Where(x => x.applyColorData || x.applyDithering || x.applyHDR || x.applyRefreshRate || x.applyResolution || x.applyDriverSettings || x.applyOther || x.applyOverclocking || x.ApplyColorEnhancements || x.applyHdmiSettings);
+
+ UpdateTrayMenu(_nvTrayMenu, presets, TrayMenuItemNv_Click);
+ }
+
+ _novideoTrayMenu.Visible = _serviceManager.NvService != null && MainWindow.IsInitialized();
+ if (_novideoTrayMenu.Visible)
+ {
+ MainWindow.UpdateContextMenu(_novideoTrayMenu);
+ }
+
+ _amdTrayMenu.Visible = _serviceManager.AmdService != null;
+ if (_amdTrayMenu.Visible)
+ {
+ var presets = _serviceManager.AmdService.GetPresets().Where(x => x.applyColorData || x.applyDithering || x.applyHDR || x.applyRefreshRate);
+
+ UpdateTrayMenu(_amdTrayMenu, presets, TrayMenuItemAmd_Click);
+ }
+
+ _lgTrayMenu.Visible = _serviceManager.LgService != null;
+ if (_lgTrayMenu.Visible)
+ {
+ var presets = _serviceManager.LgService.GetPresets().Where(x => !string.IsNullOrEmpty(x.appId) || x.steps.Any());
+
+ _lgTrayMenu.DropDownItems.Clear();
+
+ UpdateTrayMenu(_lgTrayMenu, presets, TrayMenuItemLg_Click);
+ }
+
+ _samsungTrayMenu.Visible = _serviceManager.SamsungService != null;
+ if (_samsungTrayMenu.Visible)
+ {
+ var presets = _serviceManager.SamsungService.GetPresets().Where(x => x.Steps.Any());
+
+ _samsungTrayMenu.DropDownItems.Clear();
+
+ UpdateTrayMenu(_samsungTrayMenu, presets, TrayMenuItemSamsung_Click);
+ }
+
+ _gameTrayMenu.Visible = _serviceManager.GameService != null;
+ if (_gameTrayMenu.Visible)
+ {
+ var presets = _serviceManager.GameService.GetPresets();
+
+ _gameTrayMenu.DropDownItems.Clear();
+
+ UpdateTrayMenu(_gameTrayMenu, presets, TrayMenuItemGame_Click);
+ }
+ }
+
+ private void UpdateTrayMenu(ToolStripMenuItem menu, IEnumerable presets, EventHandler eventHandler)
+ {
+ menu.DropDownItems.Clear();
+
+ foreach (var preset in presets.OrderBy(p => p.name))
+ {
+ var name = preset.GetTextForMenuItem();
+ var keys = Keys.None;
+
+ if (!string.IsNullOrEmpty(preset.shortcut))
+ {
+ name += " " + preset.shortcut;
+ //keys = Utils.ShortcutToKeys(preset.shortcut);
+ }
+
+ var item = new ToolStripMenuItem(name, null, null, keys);
+ item.Tag = preset;
+ item.Click += eventHandler;
+ item.ForeColor = FormUtils.MenuItemForeColor;
+ menu.DropDownItems.Add(item);
+ }
+ }
+
+ private async void TrayMenuItemNv_Click(object sender, EventArgs e)
+ {
+ var item = sender as ToolStripMenuItem;
+ var preset = (NvPreset)item.Tag;
+
+ await _serviceManager.NvService?.ApplyPresetUi(preset);
+ }
+
+ private async void TrayMenuItemAmd_Click(object sender, EventArgs e)
+ {
+ var item = sender as ToolStripMenuItem;
+ var preset = (AmdPreset)item.Tag;
+
+ await _serviceManager.AmdService?.ApplyPresetUi(preset);
+ }
+
+ private async void TrayMenuItemGame_Click(object sender, EventArgs e)
+ {
+ var item = sender as ToolStripMenuItem;
+ var preset = (GamePreset)item.Tag;
+
+ await _serviceManager.GameService?.ApplyPresetUi(preset);
+ }
+
+ private async void TrayMenuItemLg_Click(object sender, EventArgs e)
+ {
+ var item = sender as ToolStripMenuItem;
+ var preset = (LgPreset)item.Tag;
+
+ await _serviceManager.LgService?.ApplyPresetUi(preset);
+ }
+
+ private async void TrayMenuItemSamsung_Click(object sender, EventArgs e)
+ {
+ var item = sender as ToolStripMenuItem;
+ var preset = (SamsungPreset)item.Tag;
+
+ await _serviceManager.SamsungService?.ApplyPresetUi(preset);
+ }
+}
diff --git a/ColorControl/Services/Common/ServiceBase.cs b/ColorControl/Services/Common/ServiceBase.cs
index 073ce6a..1c229cc 100644
--- a/ColorControl/Services/Common/ServiceBase.cs
+++ b/ColorControl/Services/Common/ServiceBase.cs
@@ -1,17 +1,21 @@
using ColorControl.Shared.EventDispatcher;
+using ColorControl.Shared.Forms;
using ColorControl.Shared.Native;
using ColorControl.Shared.Services;
+using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
+using NStandard;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
+using System.Threading;
using System.Threading.Tasks;
namespace ColorControl.Services.Common
{
- abstract class ServiceBase where T : PresetBase, new()
+ abstract class ServiceBase : IServiceBase where T : PresetBase, new()
{
private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
@@ -31,6 +35,7 @@ namespace ColorControl.Services.Common
protected T _lastAppliedPreset;
protected string _loadPresetsError;
protected T _lastTriggeredPreset;
+ protected int _quickAccessShortcutId;
protected AppContextProvider _appContextProvider;
@@ -68,6 +73,72 @@ namespace ColorControl.Services.Common
public abstract Task ApplyPreset(T preset);
+ public async Task ApplyPresetUi(T preset)
+ {
+ if (preset == null)
+ {
+ return false;
+ }
+ try
+ {
+ var result = await ApplyPreset(preset);
+ if (!result)
+ {
+ throw new Exception($"Error while applying {ServiceName}-preset. At least one setting could not be applied. Check the log for details.");
+ }
+
+ return true;
+ }
+ catch (Exception e)
+ {
+ Logger.Error(e);
+
+ MessageForms.ErrorOk($"Error applying {ServiceName}-preset ({e.TargetSite.Name}): {e.Message}");
+ return false;
+ }
+ }
+
+ public async Task ApplyPresetById(int id)
+ {
+ var preset = _presets.FirstOrDefault(p => p.id == id);
+
+ if (preset == null)
+ {
+ return false;
+ }
+
+ return await ApplyPresetUi(preset);
+ }
+
+ protected void SetShortcuts(int quickAccessShortcutId = 0, string shortcut = null)
+ {
+ if (!Program.UseWorker)
+ {
+ return;
+ }
+
+ _quickAccessShortcutId = quickAccessShortcutId;
+
+ var keyboardShortcutDispatcher = _appContextProvider.GetAppContext().ServiceProvider.GetRequiredService();
+
+ if (quickAccessShortcutId != 0 && !shortcut.IsNullOrWhiteSpace())
+ {
+ keyboardShortcutDispatcher.RegisterShortcut(quickAccessShortcutId, shortcut);
+ }
+
+ foreach (var preset in _presets)
+ {
+ keyboardShortcutDispatcher.RegisterShortcut(preset.id, preset.shortcut);
+ }
+
+ keyboardShortcutDispatcher.RegisterAsyncEventHandler(KeyboardShortcutDispatcher.Event_HotKey, HotKeyPressed);
+ }
+
+ public virtual void InstallEventHandlers()
+ {
+
+ }
+
public T GetLastAppliedPreset()
{
return _lastAppliedPreset;
@@ -233,5 +304,15 @@ namespace ColorControl.Services.Common
}
}
+ protected virtual async Task HotKeyPressed(object sender, KeyboardShortcutEventArgs e, CancellationToken _)
+ {
+ if (e.HotKeyId == _quickAccessShortcutId)
+ {
+ ToggleQuickAccessForm();
+ return;
+ }
+
+ await ApplyPresetById(e.HotKeyId);
+ }
}
}
diff --git a/ColorControl/Services/Common/ServiceManager.cs b/ColorControl/Services/Common/ServiceManager.cs
index 9132e46..6e08d6a 100644
--- a/ColorControl/Services/Common/ServiceManager.cs
+++ b/ColorControl/Services/Common/ServiceManager.cs
@@ -3,8 +3,11 @@ using ColorControl.Services.GameLauncher;
using ColorControl.Services.LG;
using ColorControl.Services.NVIDIA;
using ColorControl.Services.Samsung;
+using ColorControl.Shared.Contracts;
using ColorControl.Shared.Services;
+using NLog;
using System;
+using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@@ -12,7 +15,11 @@ namespace ColorControl.Services.Common;
public class ServiceManager
{
+ private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private readonly WinApiAdminService _winApiAdminService;
+ private readonly IServiceProvider _serviceProvider;
+ private readonly Config _config;
+ public Dictionary Modules { get; } = new();
internal NvService NvService { get; set; }
internal LgService LgService { get; set; }
@@ -20,9 +27,55 @@ public class ServiceManager
internal GameService GameService { get; set; }
internal SamsungService SamsungService { get; set; }
- public ServiceManager(WinApiAdminService winApiAdminService)
+ public ServiceManager(WinApiAdminService winApiAdminService, IServiceProvider serviceProvider, AppContextProvider appContextProvider)
{
_winApiAdminService = winApiAdminService;
+ _serviceProvider = serviceProvider;
+
+ _config = appContextProvider.GetAppContext().Config;
+ }
+
+ public void LoadModules()
+ {
+ AddModule("NVIDIA controller");
+ AddModule("AMD controller");
+ AddModule("LG controller");
+ AddModule("Samsung controller");
+ AddModule("Game launcher");
+
+ var names = Modules.Select(m => m.Key).ToList();
+ _config.Modules = _config.Modules.OrderBy(m => names.IndexOf(m.DisplayName)).ToList();
+ }
+
+ private void AddModule(string displayName) where T : class, IServiceBase
+ {
+ var moduleEx = new ModuleEx { DisplayName = displayName };
+ Modules.Add(displayName, moduleEx);
+
+ var existingModule = _config.Modules.FirstOrDefault(m => m.DisplayName == displayName);
+
+ if (existingModule == null)
+ {
+ existingModule = new Module { DisplayName = displayName, IsActive = true };
+ _config.Modules.Add(existingModule);
+ }
+
+ if (existingModule.IsActive)
+ {
+ var service = moduleEx.CreateService(_serviceProvider);
+
+ service?.InstallEventHandlers();
+
+ object _ = service switch
+ {
+ NvService nvService => NvService = nvService,
+ AmdService amdService => AmdService = amdService,
+ LgService lgService => LgService = lgService,
+ SamsungService samsungService => SamsungService = samsungService,
+ GameService gameService => GameService = gameService,
+ _ => throw new InvalidOperationException("Unknown module")
+ };
+ }
}
public async Task HandleExternalServiceAsync(string serviceName, string[] parameters)
diff --git a/ColorControl/Services/Common/UpdateManager.cs b/ColorControl/Services/Common/UpdateManager.cs
new file mode 100644
index 0000000..0073845
--- /dev/null
+++ b/ColorControl/Services/Common/UpdateManager.cs
@@ -0,0 +1,163 @@
+using ColorControl.Shared.Common;
+using ColorControl.Shared.Contracts;
+using ColorControl.Shared.Forms;
+using ColorControl.Shared.Services;
+using System.Diagnostics;
+using System.IO;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ColorControl.Services.Common;
+
+public class UpdateManager
+{
+ private readonly AppContextProvider _appContextProvider;
+ private readonly ServiceManager _serviceManager;
+ private readonly NotifyIconManager _notifyIconManager;
+ private readonly WinApiService _winApiService;
+ private readonly Config _config;
+
+ private bool _checkedForUpdates;
+ private string _updateHtmlUrl;
+ private string _downloadUrl;
+
+ public UpdateManager(AppContextProvider appContextProvider, ServiceManager serviceManager, NotifyIconManager notifyIconManager, WinApiService winApiService)
+ {
+ _appContextProvider = appContextProvider;
+ _serviceManager = serviceManager;
+ _notifyIconManager = notifyIconManager;
+ _winApiService = winApiService;
+ _config = appContextProvider.GetAppContext().Config;
+ }
+
+ public async Task CheckForUpdates()
+ {
+ if (!_config.CheckForUpdates || _checkedForUpdates || Debugger.IsAttached)
+ {
+ return;
+ }
+
+ _checkedForUpdates = true;
+
+ await Utils.GetRestJsonAsync("https://api.github.com/repos/maassoft/colorcontrol/releases/latest", InitHandleCheckForUpdates);
+ }
+
+ private void InitHandleCheckForUpdates(dynamic latest)
+ {
+ HandleCheckForUpdates(latest);
+
+ //FormUtils.BeginInvokeCheck(() => HandleCheckForUpdates(latest));
+ }
+
+ private void HandleCheckForUpdates(dynamic latest)
+ {
+ if (latest?.tag_name == null)
+ {
+ return;
+ }
+
+ var currentVersion = Application.ProductVersion;
+ var cvParts = currentVersion.Split(".");
+
+ var newVersion = (string)latest.tag_name.Value.Substring(1);
+ var nvParts = newVersion.Split(".");
+
+ bool CompareVersions()
+ {
+ var result = true;
+ var aNumberIsLarger = false;
+
+ for (var i = 0; i < nvParts.Length; i++)
+ {
+ var part = Utils.ParseInt(nvParts[i]);
+ var cvPart = Utils.ParseInt(cvParts[i]);
+
+ if (part > cvPart)
+ {
+ aNumberIsLarger = true;
+ break;
+ }
+
+ if (part == cvPart)
+ {
+ continue;
+ }
+
+ result = false;
+ break;
+ }
+
+ return result && aNumberIsLarger;
+ }
+
+ if (nvParts.Length != cvParts.Length || CompareVersions())
+ {
+ _updateHtmlUrl = latest.html_url.Value;
+
+ if (latest.assets != null && _winApiService.IsServiceRunning())
+ {
+ var asset = latest.assets[0];
+ _downloadUrl = asset.browser_download_url.Value;
+
+ if (_config.AutoInstallUpdates)
+ {
+ InstallUpdate(_downloadUrl);
+
+ return;
+ }
+
+ _appContextProvider.GetAppContext().UpdateAvailable = true;
+
+ if (_notifyIconManager.NotifyIcon.Visible)
+ {
+ _notifyIconManager.NotifyIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click on the Update-button to update", ToolTipIcon.Info);
+ }
+ else
+ {
+ MessageForms.InfoOk($"New version {newVersion} is available. Click on the Update-button to update", "Update available", $"https://github.com/Maassoft/ColorControl/releases/tag/v{newVersion}");
+ }
+
+ return;
+ }
+
+ if (_notifyIconManager.NotifyIcon.Visible)
+ {
+ _notifyIconManager.NotifyIcon.ShowBalloonTip(5000, "Update available", $"Version {newVersion} is available. Click to open the GitHub page", ToolTipIcon.Info);
+ }
+ else
+ {
+ MessageForms.InfoOk($"New version {newVersion} is available. Click on the Help-button to open the GitHub page.", "Update available", $"https://github.com/Maassoft/ColorControl/releases/tag/v{newVersion}");
+ }
+ }
+ }
+
+ private void InstallUpdate(string downloadUrl)
+ {
+ var message = new SvcInstallUpdateMessage
+ {
+ DownloadUrl = downloadUrl,
+ ClientPath = new FileInfo(Application.ExecutablePath).Directory.FullName
+ };
+
+ var result = PipeUtils.SendMessage(message, 30000);
+
+ if (result != null && !result.Result)
+ {
+ MessageForms.ErrorOk($"Error while updating: {result.ErrorMessage}");
+
+ return;
+ }
+
+ PipeUtils.SendMessage(SvcMessageType.RestartAfterUpdate);
+
+ if (MessageForms.QuestionYesNo("Update installed successfully. Do you want to restart the application?") == DialogResult.Yes)
+ {
+ Program.Restart();
+ }
+ else
+ {
+ _downloadUrl = null;
+ _appContextProvider.GetAppContext().UpdateAvailable = true;
+ }
+ }
+}
diff --git a/ColorControl/Services/GameLauncher/GamePanel.cs b/ColorControl/Services/GameLauncher/GamePanel.cs
index a153796..8f05b68 100644
--- a/ColorControl/Services/GameLauncher/GamePanel.cs
+++ b/ColorControl/Services/GameLauncher/GamePanel.cs
@@ -7,6 +7,7 @@ using ColorControl.Shared.Common;
using ColorControl.Shared.Contracts;
using ColorControl.Shared.Forms;
using ColorControl.Shared.Native;
+using ColorControl.Shared.Services;
using nspector;
using System;
using System.Collections.Generic;
@@ -27,18 +28,18 @@ namespace ColorControl.Services.GameLauncher
private Config _config;
private GameService _gameService;
- private IntPtr _mainHandle;
private NotifyIcon _trayIcon;
+ private readonly AppContextProvider _appContextProvider;
private NvService _nvService;
private AmdService _amdService;
private LgService _lgService;
private SamsungService _samsungService;
- internal GamePanel(GameService gameService, NvService nvService, AmdService amdService, LgService lgService, SamsungService samsungService, NotifyIcon trayIcon, IntPtr handle)
+ internal GamePanel(GameService gameService, NvService nvService, AmdService amdService, LgService lgService, SamsungService samsungService, NotifyIcon trayIcon, AppContextProvider appContextProvider)
{
_gameService = gameService;
_trayIcon = trayIcon;
- _mainHandle = handle;
+ _appContextProvider = appContextProvider;
_nvService = nvService;
_amdService = amdService;
_lgService = lgService;
@@ -108,30 +109,7 @@ namespace ColorControl.Services.GameLauncher
private async Task ApplySelectedGamePreset()
{
var preset = GetSelectedGamePreset();
- await ApplyGamePreset(preset);
- }
-
- internal async Task ApplyGamePreset(GamePreset preset)
- {
- if (preset == null || _gameService == null)
- {
- return false;
- }
- try
- {
- var result = await _gameService.ApplyPreset(preset, Program.AppContext);
- if (!result)
- {
- throw new Exception("Error while applying Game-preset. At least one setting could not be applied. Check the log for details.");
- }
-
- return true;
- }
- catch (Exception e)
- {
- MessageForms.ErrorOk($"Error applying Game-preset ({e.TargetSite.Name}): {e.Message}");
- return false;
- }
+ await _gameService.ApplyPresetUi(preset);
}
private void lvGamePresets_SelectedIndexChanged(object sender, EventArgs _)
@@ -291,7 +269,7 @@ namespace ColorControl.Services.GameLauncher
if (!string.IsNullOrEmpty(preset.shortcut))
{
- WinApi.UnregisterHotKey(_mainHandle, preset.id);
+ WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, preset.id);
}
_gameService.GetPresets().Remove(preset);
diff --git a/ColorControl/Services/GameLauncher/GameService.cs b/ColorControl/Services/GameLauncher/GameService.cs
index 79490f9..9cbf2b5 100644
--- a/ColorControl/Services/GameLauncher/GameService.cs
+++ b/ColorControl/Services/GameLauncher/GameService.cs
@@ -41,6 +41,8 @@ namespace ColorControl.Services.GameLauncher
_winApiAdminService = winApiAdminService;
_winApiService = winApiService;
_processEventDispatcher.RegisterAsyncEventHandler(ProcessEventDispatcher.Event_ProcessChanged, ProcessChanged);
+
+ SetShortcuts(-203, _appContextProvider.GetAppContext().Config.GameQuickAccessShortcut);
}
private async Task ProcessChanged(object sender, ProcessChangedEventArgs e, CancellationToken token)
@@ -145,7 +147,7 @@ namespace ColorControl.Services.GameLauncher
var preset = GetPresetByIdOrName(idOrName);
if (preset != null)
{
- return await ApplyPreset(preset, Program.AppContext);
+ return await ApplyPreset(preset);
}
else
{
@@ -154,11 +156,6 @@ namespace ColorControl.Services.GameLauncher
}
public override async Task ApplyPreset(GamePreset preset)
- {
- return await ApplyPreset(preset, Program.AppContext);
- }
-
- public async Task ApplyPreset(GamePreset preset, GlobalContext _)
{
var result = await ExecutePreset(preset);
diff --git a/ColorControl/Services/LG/LgPanel.cs b/ColorControl/Services/LG/LgPanel.cs
index ee45323..4b39232 100644
--- a/ColorControl/Services/LG/LgPanel.cs
+++ b/ColorControl/Services/LG/LgPanel.cs
@@ -6,6 +6,7 @@ using ColorControl.Shared.Contracts;
using ColorControl.Shared.EventDispatcher;
using ColorControl.Shared.Forms;
using ColorControl.Shared.Native;
+using ColorControl.Shared.Services;
using LgTv;
using NLog;
using NStandard;
@@ -31,22 +32,21 @@ namespace ColorControl.Services.LG
private NvService _nvService;
private AmdService _amdService;
private readonly PowerEventDispatcher _powerEventDispatcher;
- private IntPtr _mainHandle;
+ private readonly AppContextProvider _appContextProvider;
private NotifyIcon _trayIcon;
private string _lgTabMessage;
private bool _disableEvents = false;
private LgGameBar _gameBarForm;
- internal LgPanel(LgService lgService, NvService nvService, AmdService amdService, NotifyIcon trayIcon, IntPtr handle, PowerEventDispatcher powerEventDispatcher)
+ internal LgPanel(LgService lgService, NvService nvService, AmdService amdService, NotifyIcon trayIcon, PowerEventDispatcher powerEventDispatcher, AppContextProvider appContextProvider)
{
_lgService = lgService;
_nvService = nvService;
_amdService = amdService;
_trayIcon = trayIcon;
- _mainHandle = handle;
_powerEventDispatcher = powerEventDispatcher;
-
+ _appContextProvider = appContextProvider;
_config = Shared.Common.GlobalContext.CurrentContext.Config;
InitializeComponent();
@@ -253,7 +253,7 @@ namespace ColorControl.Services.LG
{
var preset = GetSelectedLgPreset();
- await ApplyLgPreset(preset);
+ await _lgService.ApplyPresetUi(preset);
}
private void btnSetShortcutLg_Click(object sender, EventArgs e)
@@ -465,7 +465,7 @@ namespace ColorControl.Services.LG
if (!string.IsNullOrEmpty(preset.shortcut))
{
- WinApi.UnregisterHotKey(_mainHandle, preset.id);
+ WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, preset.id);
}
_lgService.GetPresets().Remove(preset);
@@ -479,20 +479,6 @@ namespace ColorControl.Services.LG
AddOrUpdateItemLg(_lgService.CreateNewPreset());
}
- internal async Task ApplyLgPreset(LgPreset preset, bool reconnect = false)
- {
- if (preset == null)
- {
- return;
- }
-
- var result = await _lgService.ApplyPreset(preset, reconnect);
- if (!result)
- {
- MessageForms.WarningOk("Could not apply the preset (entirely). Check the log for details.");
- }
- }
-
private void btnLgRefreshApps_Click(object sender, EventArgs e)
{
_lgService.RefreshApps(true).ContinueWith((task) => BeginInvoke(() => FillLgApps(true)));
@@ -526,7 +512,7 @@ namespace ColorControl.Services.LG
private async void ApplySelectedLgPreset()
{
var preset = GetSelectedLgPreset();
- await ApplyLgPreset(preset);
+ await _lgService.ApplyPresetUi(preset);
}
private void btnLgAddButton_Click(object sender, EventArgs e)
@@ -1267,7 +1253,7 @@ Do you want to continue?";
if (string.IsNullOrEmpty(shortcutGB))
{
- WinApi.UnregisterHotKey(_mainHandle, SHORTCUTID_GAMEBAR);
+ WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, SHORTCUTID_GAMEBAR);
}
else
{
diff --git a/ColorControl/Services/LG/LgService.cs b/ColorControl/Services/LG/LgService.cs
index 86897b0..ece2fba 100644
--- a/ColorControl/Services/LG/LgService.cs
+++ b/ColorControl/Services/LG/LgService.cs
@@ -425,8 +425,10 @@ namespace ColorControl.Services.LG
return PowerOnDevicesTask(wakeDevices, state, checkUserSession);
}
- public void InstallEventHandlers()
+ public override void InstallEventHandlers()
{
+ base.InstallEventHandlers();
+
_powerEventDispatcher.RegisterEventHandler(PowerEventDispatcher.Event_Suspend, PowerModeChanged);
_powerEventDispatcher.RegisterAsyncEventHandler(PowerEventDispatcher.Event_Resume, PowerModeResume);
_powerEventDispatcher.RegisterEventHandler(PowerEventDispatcher.Event_Shutdown, PowerModeChanged);
diff --git a/ColorControl/Services/NVIDIA/NvPanel.cs b/ColorControl/Services/NVIDIA/NvPanel.cs
index eeaf9aa..94f371b 100644
--- a/ColorControl/Services/NVIDIA/NvPanel.cs
+++ b/ColorControl/Services/NVIDIA/NvPanel.cs
@@ -34,18 +34,16 @@ namespace ColorControl.Services.NVIDIA
private Config _config;
private NvService _nvService;
- private IntPtr _mainHandle;
private readonly AppContextProvider _appContextProvider;
private string _lastDisplayRefreshRates = string.Empty;
private NotifyIcon _trayIcon;
private RpcClientService _rpcService;
private readonly WinApiAdminService _winApiAdminService;
- public NvPanel(NvService nvService, NotifyIcon trayIcon, IntPtr handle, AppContextProvider appContextProvider, RpcClientService rpcService, WinApiAdminService winApiAdminService)
+ public NvPanel(NvService nvService, NotifyIcon trayIcon, AppContextProvider appContextProvider, RpcClientService rpcService, WinApiAdminService winApiAdminService)
{
_nvService = nvService;
_trayIcon = trayIcon;
- _mainHandle = handle;
_appContextProvider = appContextProvider;
_config = appContextProvider.GetAppContext().Config;
_rpcService = rpcService;
@@ -245,7 +243,7 @@ namespace ColorControl.Services.NVIDIA
if (!string.IsNullOrEmpty(preset.shortcut))
{
- WinApi.UnregisterHotKey(_mainHandle, preset.id);
+ WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, preset.id);
}
_nvService.GetPresets().Remove(preset);
@@ -1248,32 +1246,7 @@ namespace ColorControl.Services.NVIDIA
private async Task ApplySelectedNvPreset()
{
var preset = GetSelectedNvPreset();
- await ApplyNvPreset(preset);
- }
-
- public async Task ApplyNvPreset(NvPreset preset)
- {
- if (preset == null || _nvService == null)
- {
- return false;
- }
- try
- {
- var result = await _nvService.ApplyPreset(preset);
- if (!result)
- {
- throw new Exception("Error while applying NVIDIA preset. At least one setting could not be applied. Check the log for details.");
- }
-
- return true;
- }
- catch (Exception e)
- {
- Logger.Error(e);
-
- MessageForms.ErrorOk($"Error applying NVIDIA-preset ({e.TargetSite.Name}): {e.Message}");
- return false;
- }
+ await _nvService.ApplyPresetUi(preset);
}
private NvPreset GetSelectedNvPreset(bool currentDisplay = false, bool driverSettings = false)
@@ -1905,7 +1878,7 @@ namespace ColorControl.Services.NVIDIA
}
preset.IsStartupPreset = true;
- await ApplyNvPreset(preset);
+ await _nvService.ApplyPresetUi(preset);
}
private void miNvDithering6bit_Click(object sender, EventArgs e)
diff --git a/ColorControl/Services/NVIDIA/NvService.cs b/ColorControl/Services/NVIDIA/NvService.cs
index 69b41d4..20c2057 100644
--- a/ColorControl/Services/NVIDIA/NvService.cs
+++ b/ColorControl/Services/NVIDIA/NvService.cs
@@ -169,7 +169,8 @@ namespace ColorControl.Services.NVIDIA
private int _lastSetSDRBrightness = -1;
private int _lastReadSDRBrightness = -1;
- private Semaphore _semaphore = new Semaphore(1, 1);
+ private SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1);
+ private SemaphoreSlim _refreshSemaphore = new SemaphoreSlim(1, 1);
public const uint DRS_GSYNC_APPLICATION_MODE = 294973784;
public const uint DRS_VSYNC_CONTROL = 11041231;
@@ -217,20 +218,26 @@ namespace ColorControl.Services.NVIDIA
private readonly RpcClientService _rpcClientService;
private readonly PowerEventDispatcher _powerEventDispatcher;
private readonly ServiceManager _serviceManager;
+ private readonly KeyboardShortcutDispatcher _keyboardShortcutDispatcher;
private static NvService ServiceInstance;
- public NvService(AppContextProvider appContextProvider, WinApiService winApiService, RpcClientService rpcClientService, PowerEventDispatcher powerEventDispatcher, ServiceManager serviceManager) : base(appContextProvider)
+ public static readonly int SHORTCUTID_NVQA = -200;
+
+ public NvService(AppContextProvider appContextProvider, WinApiService winApiService, RpcClientService rpcClientService, PowerEventDispatcher powerEventDispatcher, ServiceManager serviceManager, KeyboardShortcutDispatcher keyboardShortcutDispatcher) : base(appContextProvider)
{
_winApiService = winApiService;
_rpcClientService = rpcClientService;
_powerEventDispatcher = powerEventDispatcher;
_serviceManager = serviceManager;
+ _keyboardShortcutDispatcher = keyboardShortcutDispatcher;
_rpcClientService.Name = nameof(NvService);
NvPreset.NvService = this;
AddJsonConverter(new ColorDataConverter());
LoadConfig();
LoadPresets();
+
+ SetShortcuts(SHORTCUTID_NVQA, _appContextProvider.GetAppContext().Config.NvQuickAccessShortcut);
}
public void InstallEventHandlers()
@@ -1575,7 +1582,7 @@ namespace ColorControl.Services.NVIDIA
protected List GetSettings()
{
- _semaphore.WaitOne();
+ _semaphore.Wait();
try
{
if (!_settings.Any())
@@ -1620,7 +1627,7 @@ namespace ColorControl.Services.NVIDIA
public void RefreshProfileSettings()
{
- _semaphore.WaitOne();
+ _refreshSemaphore.Wait();
try
{
var firstTime = _settings?.Any() != true;
@@ -1644,7 +1651,7 @@ namespace ColorControl.Services.NVIDIA
}
finally
{
- _semaphore.Release();
+ _refreshSemaphore.Release();
}
}
diff --git a/ColorControl/Services/Samsung/ISamsungService.cs b/ColorControl/Services/Samsung/ISamsungService.cs
index 7fdb502..b8cefb8 100644
--- a/ColorControl/Services/Samsung/ISamsungService.cs
+++ b/ColorControl/Services/Samsung/ISamsungService.cs
@@ -14,7 +14,6 @@ namespace ColorControl.Services.Samsung
Task ApplyPreset(string idOrName);
SamsungDevice GetPresetDevice(SamsungPreset preset);
void GlobalSave();
- void InstallEventHandlers();
Task RefreshDevices(bool connect = true, bool afterStartUp = false);
}
}
\ No newline at end of file
diff --git a/ColorControl/Services/Samsung/SamsungPanel.cs b/ColorControl/Services/Samsung/SamsungPanel.cs
index 4a102e3..d5169c8 100644
--- a/ColorControl/Services/Samsung/SamsungPanel.cs
+++ b/ColorControl/Services/Samsung/SamsungPanel.cs
@@ -6,6 +6,7 @@ using ColorControl.Shared.Contracts;
using ColorControl.Shared.EventDispatcher;
using ColorControl.Shared.Forms;
using ColorControl.Shared.Native;
+using ColorControl.Shared.Services;
using NLog;
using NStandard;
using System;
@@ -28,18 +29,18 @@ namespace ColorControl.Services.Samsung
private SamsungService _samsungService;
private NvService _nvService;
private AmdService _amdService;
- private IntPtr _mainHandle;
private readonly PowerEventDispatcher _powerEventDispatcher;
+ private readonly AppContextProvider _appContextProvider;
private string _tabMessage;
private bool _disableEvents = false;
- internal SamsungPanel(SamsungService samsungService, NvService nvService, AmdService amdService, IntPtr handle, PowerEventDispatcher powerEventDispatcher)
+ internal SamsungPanel(SamsungService samsungService, NvService nvService, AmdService amdService, PowerEventDispatcher powerEventDispatcher, AppContextProvider appContextProvider)
{
_samsungService = samsungService;
_nvService = nvService;
_amdService = amdService;
- _mainHandle = handle;
_powerEventDispatcher = powerEventDispatcher;
+ _appContextProvider = appContextProvider;
_config = Shared.Common.GlobalContext.CurrentContext.Config;
InitializeComponent();
@@ -72,9 +73,11 @@ namespace ColorControl.Services.Samsung
public void Init()
{
var _ = Handle;
- _powerEventDispatcher.RegisterAsyncEventHandler(PowerEventDispatcher.Event_Startup, PowerStateChanged);
+ //_powerEventDispatcher.RegisterAsyncEventHandler(PowerEventDispatcher.Event_Startup, PowerStateChanged);
- _samsungService.InstallEventHandlers();
+ //_samsungService.InstallEventHandlers();
+
+ var x = AfterSamsungServiceRefreshDevices();
}
private async Task PowerStateChanged(object sender, PowerStateChangedEventArgs e, CancellationToken token)
@@ -247,7 +250,7 @@ namespace ColorControl.Services.Samsung
{
var preset = GetSelectedPreset();
- await ApplyPreset(preset);
+ await _samsungService.ApplyPresetUi(preset);
}
private void btnSetShortcutLg_Click(object sender, EventArgs e)
@@ -457,7 +460,7 @@ namespace ColorControl.Services.Samsung
if (!string.IsNullOrEmpty(preset.shortcut))
{
- WinApi.UnregisterHotKey(_mainHandle, preset.id);
+ WinApi.UnregisterHotKey(_appContextProvider.GetAppContext().MainHandle, preset.id);
}
_samsungService.GetPresets().Remove(preset);
@@ -471,20 +474,6 @@ namespace ColorControl.Services.Samsung
AddOrUpdateItem(_samsungService.CreateNewPreset());
}
- internal async Task ApplyPreset(SamsungPreset preset)
- {
- if (preset == null)
- {
- return;
- }
-
- var result = await _samsungService.ApplyPreset(preset);
- if (!result)
- {
- MessageForms.WarningOk("Could not apply the preset (entirely). Check the log for details.");
- }
- }
-
private void btnSamsungRefreshApps_Click(object sender, EventArgs e)
{
//_samsungService.RefreshApps(true).ContinueWith((task) => FormUtils.BeginInvokeCheck(this, () => FillLgApps(true)));
@@ -518,7 +507,7 @@ namespace ColorControl.Services.Samsung
private async void ApplySelectedPreset()
{
var preset = GetSelectedPreset();
- await ApplyPreset(preset);
+ await _samsungService.ApplyPresetUi(preset);
}
private void btnSamsungAddButton_Click(object sender, EventArgs e)
diff --git a/ColorControl/Services/Samsung/SamsungService.cs b/ColorControl/Services/Samsung/SamsungService.cs
index cb71848..d14cc1d 100644
--- a/ColorControl/Services/Samsung/SamsungService.cs
+++ b/ColorControl/Services/Samsung/SamsungService.cs
@@ -56,6 +56,8 @@ namespace ColorControl.Services.Samsung
LoadConfig();
LoadPresets();
+
+ SetShortcuts(-204, Config.QuickAccessShortcut);
}
public static async Task ExecutePresetAsync(string presetName)
@@ -82,8 +84,11 @@ namespace ColorControl.Services.Samsung
}
}
- public void InstallEventHandlers()
+ public override void InstallEventHandlers()
{
+ base.InstallEventHandlers();
+
+ _powerEventDispatcher.RegisterAsyncEventHandler(PowerEventDispatcher.Event_Startup, PowerStateChanged);
_powerEventDispatcher.RegisterEventHandler(PowerEventDispatcher.Event_MonitorOn, PowerModeChanged);
_powerEventDispatcher.RegisterEventHandler(PowerEventDispatcher.Event_MonitorOff, PowerModeChanged);
_powerEventDispatcher.RegisterEventHandler(PowerEventDispatcher.Event_Suspend, PowerModeChanged);
@@ -92,6 +97,11 @@ namespace ColorControl.Services.Samsung
_processEventDispatcher.RegisterAsyncEventHandler(ProcessEventDispatcher.Event_ProcessChanged, ProcessChanged);
}
+ private async Task PowerStateChanged(object sender, PowerStateChangedEventArgs e, CancellationToken token)
+ {
+ await RefreshDevices(afterStartUp: true);
+ }
+
private void LoadConfig()
{
_configFilename = Path.Combine(_dataPath, "SamsungConfig.json");
@@ -117,7 +127,7 @@ namespace ColorControl.Services.Samsung
await WakeAfterStartupOrResume(PowerOnOffState.Resume);
- ExecutePresetsForEvent(PresetTriggerType.Resume);
+ await ExecutePresetsForEvent(PresetTriggerType.Resume);
}
private void PowerModeChanged(object sender, PowerStateChangedEventArgs e)
@@ -134,7 +144,7 @@ namespace ColorControl.Services.Samsung
{
case PowerOnOffState.StandBy:
{
- ExecutePresetsForEvent(PresetTriggerType.Standby);
+ _ = ExecutePresetsForEvent(PresetTriggerType.Standby).ConfigureAwait(true);
var devices = Devices.Where(d => d.Options.PowerOffOnStandby);
PowerOffDevices(devices, PowerOnOffState.StandBy);
@@ -142,7 +152,7 @@ namespace ColorControl.Services.Samsung
}
case PowerOnOffState.ShutDown:
{
- ExecutePresetsForEvent(PresetTriggerType.Shutdown);
+ _ = ExecutePresetsForEvent(PresetTriggerType.Shutdown).ConfigureAwait(true);
var devices = Devices.Where(d => d.Options.PowerOffOnShutdown);
@@ -165,7 +175,7 @@ namespace ColorControl.Services.Samsung
}
}
- private void ExecutePresetsForEvent(PresetTriggerType triggerType)
+ private async Task ExecutePresetsForEvent(PresetTriggerType triggerType)
{
Logger.Debug($"Executing presets for event {triggerType}");
@@ -184,7 +194,7 @@ namespace ColorControl.Services.Samsung
return;
}
- ExecuteEventPresets(_serviceManager, new[] { triggerType }).Wait();
+ await ExecuteEventPresets(_serviceManager, new[] { triggerType });
}
public async Task RefreshDevices(bool connect = true, bool afterStartUp = false)
@@ -310,7 +320,12 @@ namespace ColorControl.Services.Samsung
var device = GetPresetDevice(preset);
- await device?.ExecutePresetAsync(preset, appContext, Config);
+ if (device == null)
+ {
+ return false;
+ }
+
+ await device.ExecutePresetAsync(preset, appContext, Config);
_lastAppliedPreset = preset;
diff --git a/Shared/Common/GlobalContext.cs b/Shared/Common/GlobalContext.cs
index f7fcb0c..ccbdf93 100644
--- a/Shared/Common/GlobalContext.cs
+++ b/Shared/Common/GlobalContext.cs
@@ -1,4 +1,5 @@
using ColorControl.Shared.Contracts;
+using ColorControl.Shared.Services;
using NLog;
using NLog.Config;
using System.ComponentModel;
@@ -18,16 +19,34 @@ namespace ColorControl.Shared.Common
public LoggingRule LoggingRule { get; private set; }
public DateTime StartTime { get; private set; } = DateTime.Now;
public string MutexId { get; private set; }
+ public nint MainHandle { get; set; }
+ public IServiceProvider ServiceProvider { get; private set; }
- public GlobalContext(Config config, StartUpParams startUpParams, string dataPath, LoggingRule loggingRule, string mutexId = null)
+ public string ApplicationTitle { get; private set; }
+ public string ApplicationTitleAdmin { get; private set; }
+ public bool UpdateAvailable { get; set; }
+
+ public GlobalContext(Config config, StartUpParams startUpParams, string dataPath, LoggingRule loggingRule, IServiceProvider serviceProvider, string mutexId = null)
{
Config = config;
StartUpParams = startUpParams;
DataPath = dataPath;
LoggingRule = loggingRule;
+ ServiceProvider = serviceProvider;
MutexId = mutexId;
CurrentContext = this;
+
+ ApplicationTitle = Application.ProductName + " " + Application.ProductVersion;
+
+ if (WinApiService.IsAdministratorStatic())
+ {
+ ApplicationTitleAdmin = ApplicationTitle + " (administrator)";
+ }
+ else
+ {
+ ApplicationTitleAdmin = ApplicationTitle;
+ }
}
public void SetLogLevel(LogLevel logLevel)
diff --git a/Shared/Common/ShortcutStruct.cs b/Shared/Common/ShortcutStruct.cs
index 54cba16..c744322 100644
--- a/Shared/Common/ShortcutStruct.cs
+++ b/Shared/Common/ShortcutStruct.cs
@@ -2,67 +2,66 @@
using System.ComponentModel;
using System.Runtime.InteropServices;
-namespace ColorControl.Shared.Common
+namespace ColorControl.Shared.Common;
+
+public class ShortcutStruct
{
- internal class ShortcutStruct
+ private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
+
+ public int VirtualKeyCode { get; private set; }
+ public int Modifiers { get; private set; }
+ public int Id { get; }
+ public string Shortcut { get; private set; }
+ public bool HotKeyRegistered { get; set; }
+
+ public ShortcutStruct(int modifiers, int virtualKeyCode, int id, string shortcut)
{
- private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
+ VirtualKeyCode = virtualKeyCode;
+ Modifiers = modifiers;
+ Id = id;
+ Shortcut = shortcut;
+ }
- public int VirtualKeyCode { get; private set; }
- public int Modifiers { get; private set; }
- public int Id { get; }
- public string Shortcut { get; private set; }
- public bool HotKeyRegistered { get; set; }
+ internal void SetModifiers(int mods)
+ {
+ Modifiers = mods;
+ }
- public ShortcutStruct(int modifiers, int virtualKeyCode, int id, string shortcut)
+ internal void SetKey(int key)
+ {
+ VirtualKeyCode = key;
+ }
+
+ internal void SetShortcut(string shortcut)
+ {
+ Shortcut = shortcut;
+ }
+
+ internal bool RegisterHotKey(nint handle)
+ {
+ var result = WinApi.RegisterHotKey(handle, Id, Modifiers, VirtualKeyCode);
+ if (!result)
{
- VirtualKeyCode = virtualKeyCode;
- Modifiers = modifiers;
- Id = id;
- Shortcut = shortcut;
+ var errorMessage = new Win32Exception(Marshal.GetLastWin32Error()).Message;
+ Logger.Error($"Could not register shortcut {Shortcut}: {errorMessage}");
+ }
+ else
+ {
+ HotKeyRegistered = true;
}
- internal void SetModifiers(int mods)
+ return result;
+ }
+
+ internal void UnregisterHotKey(nint handle)
+ {
+ if (!HotKeyRegistered)
{
- Modifiers = mods;
+ return;
}
- internal void SetKey(int key)
- {
- VirtualKeyCode = key;
- }
+ WinApi.UnregisterHotKey(handle, Id);
- internal void SetShortcut(string shortcut)
- {
- Shortcut = shortcut;
- }
-
- internal bool RegisterHotKey(nint handle)
- {
- var result = WinApi.RegisterHotKey(handle, Id, Modifiers, VirtualKeyCode);
- if (!result)
- {
- var errorMessage = new Win32Exception(Marshal.GetLastWin32Error()).Message;
- Logger.Error($"Could not register shortcut {Shortcut}: {errorMessage}");
- }
- else
- {
- HotKeyRegistered = true;
- }
-
- return result;
- }
-
- internal void UnregisterHotKey(nint handle)
- {
- if (!HotKeyRegistered)
- {
- return;
- }
-
- WinApi.UnregisterHotKey(handle, Id);
-
- HotKeyRegistered = false;
- }
+ HotKeyRegistered = false;
}
}
diff --git a/Shared/Contracts/Module.cs b/Shared/Contracts/Module.cs
index 8264578..c6236e7 100644
--- a/Shared/Contracts/Module.cs
+++ b/Shared/Contracts/Module.cs
@@ -1,12 +1,42 @@
-using Newtonsoft.Json;
+using ColorControl.Shared.Common;
+using Microsoft.Extensions.DependencyInjection;
+using Newtonsoft.Json;
+using NLog;
-namespace ColorControl.Shared.Contracts
+namespace ColorControl.Shared.Contracts;
+
+public class Module
{
- public class Module
+ public bool IsActive { get; set; }
+ public string DisplayName { get; set; }
+ [JsonIgnore]
+ public Func InitAction { get; set; }
+}
+
+public class ModuleEx where T : class
+{
+ private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
+
+ public bool IsActive { get; set; }
+ public string DisplayName { get; set; }
+
+ public T CreateService(IServiceProvider serviceProvider)
{
- public bool IsActive { get; set; }
- public string DisplayName { get; set; }
- [JsonIgnore]
- public Func InitAction { get; set; }
+ try
+ {
+ Logger.Debug($"Initializing {typeof(T).Name}...");
+
+ var service = serviceProvider.GetRequiredService();
+
+ Logger.Debug($"Initializing {typeof(T).Name}...Done");
+
+ return service;
+ }
+ catch (Exception ex)
+ {
+ Logger.Debug($"Error initializing {typeof(T).Name}. No device(s) or drivers are available: {ex.ToLogString()}");
+ return null;
+ }
}
}
+
diff --git a/Shared/EventDispatcher/KeyboardShortcutDispatcher.cs b/Shared/EventDispatcher/KeyboardShortcutDispatcher.cs
new file mode 100644
index 0000000..298c591
--- /dev/null
+++ b/Shared/EventDispatcher/KeyboardShortcutDispatcher.cs
@@ -0,0 +1,370 @@
+using ColorControl.Shared.Common;
+using ColorControl.Shared.Forms;
+using Linearstar.Windows.RawInput;
+using Linearstar.Windows.RawInput.Native;
+
+namespace ColorControl.Shared.EventDispatcher;
+
+public class KeyboardShortcutEventArgs : EventArgs
+{
+ public int HotKeyId { get; set; }
+}
+
+public class KeyboardShortcutDispatcher : EventDispatcher
+{
+ [Flags]
+ public enum ModKeys : int
+ {
+ None = 0,
+ Alt = 1,
+ Control = 2,
+ Shift = 4,
+ Win = 8
+ }
+
+ public const string Event_HotKey = "HotKey";
+
+ public nint MainHandle { get; set; }
+ public bool UseRawInput { get; private set; }
+
+ private bool WinKeyDown = false;
+
+ private static readonly List KeysWithoutModifiers = new List { Keys.F13, Keys.F14, Keys.F15, Keys.F16, Keys.F17, Keys.F18, Keys.F19, Keys.F20, Keys.F21, Keys.F22, Keys.F23, Keys.F24 };
+ private static readonly List Modifiers = new List { Keys.ControlKey, Keys.Menu, Keys.ShiftKey, Keys.LWin };
+
+ private readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
+
+ private readonly HashSet _downModifierKeys = new HashSet();
+ private readonly HashSet _downKeys = new HashSet();
+
+ private readonly object _modifiersLock = new object();
+ private readonly WindowMessageDispatcher _windowMessageDispatcher;
+ private readonly Dictionary _registeredShortcuts = new Dictionary();
+
+ public KeyboardShortcutDispatcher(WindowMessageDispatcher windowMessageDispatcher)
+ {
+ _windowMessageDispatcher = windowMessageDispatcher;
+
+ _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessageHotKey, HotKeyPressed);
+ _windowMessageDispatcher.RegisterEventHandler(WindowMessageDispatcher.Event_WindowMessageInput, HandleInputMessage);
+
+ MainHandle = _windowMessageDispatcher.MessageForm.Handle;
+ }
+
+ private async void HotKeyPressed(object sender, WindowMessageEventArgs e)
+ {
+ await DispatchEventAsync(Event_HotKey, new KeyboardShortcutEventArgs { HotKeyId = (int)e.Message.WParam });
+ }
+
+ private async void HandleInputMessage(object sender, WindowMessageEventArgs e)
+ {
+ // Create an RawInputData from the handle stored in lParam.
+ var data = RawInputData.FromHandle(e.Message.LParam);
+
+ if (data is RawInputKeyboardData keyboard)
+ {
+ var shortcut = GetRawKeyboardInputShortcut(keyboard);
+
+ if (shortcut != null)
+ {
+ await DispatchEventAsync(Event_HotKey, new KeyboardShortcutEventArgs { HotKeyId = shortcut.Id });
+ }
+ }
+ }
+
+ public void SetUseRawInput(bool useRawInput)
+ {
+ if (UseRawInput == useRawInput)
+ {
+ return;
+ }
+
+ UseRawInput = useRawInput;
+
+ if (useRawInput)
+ {
+ UnregisterHotKeys();
+
+ RawInputDevice.RegisterDevice(HidUsageAndPage.Keyboard, RawInputDeviceFlags.InputSink, MainHandle);
+ }
+ else
+ {
+ RawInputDevice.UnregisterDevice(HidUsageAndPage.Keyboard);
+
+ RegisterHotKeys();
+ }
+ }
+
+ private void UnregisterHotKeys()
+ {
+ foreach (var shortcut in _registeredShortcuts.Values.Where(s => s.HotKeyRegistered).ToList())
+ {
+ shortcut.UnregisterHotKey(MainHandle);
+ }
+ }
+
+ private void RegisterHotKeys()
+ {
+ foreach (var shortcut in _registeredShortcuts.Values.Where(s => !s.HotKeyRegistered).ToList())
+ {
+ shortcut.RegisterHotKey(MainHandle);
+ }
+ }
+
+ public ShortcutStruct GetRawKeyboardInputShortcut(RawInputKeyboardData data)
+ {
+ var keyboard = data.Keyboard;
+
+ //Debug.WriteLine($"Key: {keyboard}");
+
+ var add = !keyboard.Flags.HasFlag(RawKeyboardFlags.Up);
+
+ var keys = (Keys)keyboard.VirutalKey;
+
+ var isModifier = Modifiers.Contains(keys);
+ var modKey = KeysToModKeys(keys);
+ var changed = false;
+
+ lock (_modifiersLock)
+ {
+ if (add)
+ {
+ if (isModifier)
+ {
+ changed = _downModifierKeys.Add(modKey);
+ }
+ else
+ {
+ changed = _downKeys.Add((Keys)keyboard.VirutalKey);
+ }
+ }
+ else
+ {
+ if (isModifier)
+ {
+ changed = _downModifierKeys.Remove(modKey);
+ }
+ else
+ {
+ changed = _downKeys.Remove((Keys)keyboard.VirutalKey);
+ }
+ }
+ }
+
+ if (!changed || _downKeys.Count != 1 || !(_downModifierKeys.Any() || KeysWithoutModifiers.Contains(_downKeys.First())))
+ {
+ return null;
+ }
+
+ var sum = _downModifierKeys.Sum(k => (int)k) * 1000;
+ sum += _downKeys.Sum(k => (int)k);
+
+ var shortcut = _registeredShortcuts.Values.FirstOrDefault(s => (s.Modifiers * 1000 + s.VirtualKeyCode) == sum);
+
+ if (shortcut == null)
+ {
+ return null;
+ }
+
+ return shortcut;
+ }
+
+ public bool RegisterShortcut(int id, string shortcut)
+ {
+ var clear = string.IsNullOrWhiteSpace(shortcut);
+
+ var shortcutStruct = GetShortcutById(id);
+
+ if (shortcutStruct == null)
+ {
+ if (clear)
+ {
+ return true;
+ }
+
+ var (mods, key) = ParseShortcut(shortcut);
+
+ shortcutStruct = new ShortcutStruct(mods, key, id, shortcut);
+
+ _registeredShortcuts[id] = shortcutStruct;
+ }
+ else if (clear)
+ {
+ shortcutStruct.UnregisterHotKey(id);
+
+ _registeredShortcuts.Remove(id);
+
+ return true;
+ }
+ else
+ {
+ var (mods, key) = ParseShortcut(shortcut);
+
+ if (shortcutStruct.Modifiers == mods && shortcutStruct.VirtualKeyCode == key)
+ {
+ return true;
+ }
+
+ shortcutStruct.SetModifiers(mods);
+ shortcutStruct.SetKey(key);
+ shortcutStruct.SetShortcut(shortcut);
+ shortcutStruct.UnregisterHotKey(MainHandle);
+ }
+
+ //if (UseRawInput)
+ //{
+ // return true;
+ //}
+
+ return shortcutStruct.RegisterHotKey(MainHandle);
+ }
+
+ private ShortcutStruct GetShortcutById(int id)
+ {
+ if (_registeredShortcuts.TryGetValue(id, out var shortcut))
+ {
+ return shortcut;
+ }
+
+ return null;
+ }
+
+ public static (int mods, int key) ParseShortcut(string shortcut)
+ {
+ int mods = 0;
+ var key = 0;
+
+ shortcut = shortcut.Replace(",", "");
+ shortcut = shortcut.Replace("+", "");
+ shortcut = shortcut.Replace(" ", " ");
+ var parts = shortcut.Split(' ');
+
+ if (parts.Length > 0)
+ {
+ for (int i = 0; i + 1 < parts.Length; i++)
+ {
+ switch (parts[i])
+ {
+ case "Alt":
+ mods += (int)ModKeys.Alt;
+ break;
+ case "Control":
+ mods += (int)ModKeys.Control;
+ break;
+ case "Shift":
+ mods += (int)ModKeys.Shift;
+ break;
+ case "Win":
+ mods += (int)ModKeys.Win;
+ break;
+ }
+ }
+
+ var keyName = parts[parts.Length - 1];
+
+ key = (int)Enum.Parse(typeof(Keys), keyName);
+ }
+
+ return (mods, key);
+ }
+
+ public static Keys ShortcutToKeys(string shortcut)
+ {
+ var (mods, key) = ParseShortcut(shortcut);
+
+ var keys = Keys.None;
+
+ if (((uint)mods & (uint)ModKeys.Alt) > 0)
+ {
+ keys |= Keys.Alt;
+ }
+ if (((uint)mods & (uint)ModKeys.Control) > 0)
+ {
+ keys |= Keys.Control;
+ }
+ if (((uint)mods & (uint)ModKeys.Shift) > 0)
+ {
+ keys |= Keys.Shift;
+ }
+ if (((uint)mods & (uint)ModKeys.Win) > 0)
+ {
+ keys |= Keys.Control;
+ }
+
+ keys |= (Keys)key;
+
+ return keys;
+ }
+
+ public static ModKeys KeysToModKeys(Keys key)
+ {
+ return key switch
+ {
+ Keys.ControlKey => ModKeys.Control,
+ Keys.Menu => ModKeys.Alt,
+ Keys.ShiftKey => ModKeys.Shift,
+ Keys.LWin => ModKeys.Win,
+ _ => ModKeys.None,
+ };
+ }
+
+ public string FormatKeyboardShortcut(KeyEventArgs keyEvent)
+ {
+ var pressedModifiers = keyEvent.Modifiers;
+
+ //Debug.WriteLine("KD: " + e.Modifiers + ", " + e.KeyCode);
+
+ var shortcutString = pressedModifiers > 0 ? pressedModifiers.ToString() : "";
+ if (keyEvent.KeyCode == Keys.LWin || WinKeyDown)
+ {
+ WinKeyDown = true;
+ if (!string.IsNullOrEmpty(shortcutString))
+ {
+ shortcutString += ", ";
+ }
+ shortcutString += "Win";
+ }
+
+ var empty = string.IsNullOrEmpty(shortcutString);
+ if ((!empty || KeysWithoutModifiers.Contains(keyEvent.KeyCode)) && keyEvent.KeyCode != Keys.ControlKey && keyEvent.KeyCode != Keys.ShiftKey && keyEvent.KeyCode != Keys.Menu && keyEvent.KeyCode != Keys.LWin)
+ {
+ if (!empty)
+ {
+ shortcutString += " + ";
+ }
+ shortcutString += keyEvent.KeyCode.ToString();
+ }
+
+ if (string.IsNullOrEmpty(shortcutString))
+ {
+ keyEvent.SuppressKeyPress = true;
+ }
+
+ return shortcutString;
+ }
+
+ public static bool ValidateShortcut(string shortcut)
+ {
+ var valid = string.IsNullOrWhiteSpace(shortcut) || shortcut.Contains("+") || ShortcutIsAllowedWithoutModifier(shortcut);
+
+ if (!valid)
+ {
+ MessageForms.WarningOk("Invalid shortcut. The shortcut should have modifiers and a normal key or be F13-F24.");
+ }
+
+ return valid;
+ }
+
+ public static bool ShortcutIsAllowedWithoutModifier(string shortcut)
+ {
+ return Enum.TryParse(shortcut, out var key) && KeysWithoutModifiers.Contains(key);
+ }
+
+ public void HandleKeyboardShortcutUp(KeyEventArgs keyEvent)
+ {
+ if (keyEvent.KeyCode == Keys.LWin)
+ {
+ WinKeyDown = false;
+ }
+ }
+}
diff --git a/Shared/EventDispatcher/WindowMessageDispatcher.cs b/Shared/EventDispatcher/WindowMessageDispatcher.cs
new file mode 100644
index 0000000..ab52712
--- /dev/null
+++ b/Shared/EventDispatcher/WindowMessageDispatcher.cs
@@ -0,0 +1,86 @@
+using ColorControl.Shared.Services;
+using NWin32;
+
+namespace ColorControl.Shared.EventDispatcher;
+
+public class WindowMessageEventArgs : EventArgs
+{
+ public Message Message { get; private set; }
+
+ public WindowMessageEventArgs(Message message)
+ {
+ Message = message;
+ }
+}
+
+public class WindowMessageDispatcher : EventDispatcher
+{
+ public const string Event_WindowMessage = "WindowMessage";
+ public const string Event_WindowMessageHotKey = "WindowMessageHotKey";
+ public const string Event_WindowMessageInput = "WindowMessageInput";
+ public const string Event_WindowMessageQueryEndSession = "WindowMessageQueryEndSession";
+ public const string Event_WindowMessageClose = "WindowMessageClose";
+ public const string Event_WindowMessagePowerBroadcast = "WindowMessagePowerBroadcast";
+ public const string Event_WindowMessageShowWindow = "WindowMessageShowWindow";
+
+ private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
+ private readonly AppContextProvider _appContextProvider;
+
+ public DummyForm MessageForm { get; set; }
+
+ private static Dictionary Messages = new() {
+ { NativeConstants.WM_HOTKEY, Event_WindowMessageHotKey },
+ { NativeConstants.WM_INPUT, Event_WindowMessageInput },
+ { NativeConstants.WM_QUERYENDSESSION, Event_WindowMessageQueryEndSession },
+ { NativeConstants.WM_CLOSE, Event_WindowMessageClose },
+ { NativeConstants.WM_POWERBROADCAST, Event_WindowMessagePowerBroadcast },
+ { NativeConstants.WM_SHOWWINDOW, Event_WindowMessageShowWindow }
+ };
+
+ public WindowMessageDispatcher(AppContextProvider appContextProvider)
+ {
+ MessageForm = new DummyForm();
+ MessageForm.OnMessage += MessageForm_OnMessage;
+ _appContextProvider = appContextProvider;
+
+ _appContextProvider.GetAppContext().MainHandle = MessageForm.Handle;
+ }
+
+ private void MessageForm_OnMessage(object sender, Message e)
+ {
+ if (Messages.TryGetValue(e.Msg, out var eventName))
+ {
+ DispatchEvent(eventName, new WindowMessageEventArgs(e));
+ }
+ }
+
+ public class DummyForm : Form
+ {
+ public event EventHandler OnMessage;
+
+ public DummyForm()
+ {
+ FormBorderStyle = FormBorderStyle.None;
+ ShowInTaskbar = false;
+ Load += DummyForm_Load;
+ Shown += DummyForm_Shown;
+ }
+
+ private void DummyForm_Shown(object sender, EventArgs e)
+ {
+ Hide();
+ }
+
+ protected void DummyForm_Load(object sender, EventArgs e)
+ {
+ Size = new Size(0, 0);
+ }
+
+ protected override void WndProc(ref Message m)
+ {
+ OnMessage?.Invoke(this, m);
+
+ base.WndProc(ref m);
+ }
+ }
+}
diff --git a/Shared/Forms/DarkModeUtils.cs b/Shared/Forms/DarkModeUtils.cs
index a2af32d..ec37d73 100644
--- a/Shared/Forms/DarkModeUtils.cs
+++ b/Shared/Forms/DarkModeUtils.cs
@@ -81,6 +81,35 @@ namespace ColorControl.Shared.Forms
}
}
+ public static void SetDarkMode(bool darkMode)
+ {
+ UseDarkMode = darkMode;
+
+ // Takes care of system context menu
+ WinApi.SetPreferredAppMode(darkMode ? 1 : 0);
+
+ var backColor = darkMode ? FormUtils.DarkModeBackColor : SystemColors.Control;
+ var foreColor = darkMode ? FormUtils.DarkModeForeColor : SystemColors.ControlText;
+
+ FormUtils.CurrentBackColor = backColor;
+ FormUtils.CurrentForeColor = foreColor;
+
+ if (darkMode)
+ {
+ _defaultRenderer ??= ToolStripManager.Renderer;
+
+ ToolStripManager.Renderer = new DarkModeToolStripRenderer();
+ }
+ else if (_defaultRenderer != null)
+ {
+ ToolStripManager.Renderer = _defaultRenderer;
+ }
+
+ FormUtils.MenuItemForeColor = FormUtils.CurrentForeColor;
+
+ WinApi.FlushMenuThemes();
+ }
+
public static void UpdateTheme(this Form form, bool? useDarkMode = null, bool onlyIfDark = false)
{
var toDark = useDarkMode ?? UseDarkMode;
@@ -90,7 +119,7 @@ namespace ColorControl.Shared.Forms
return;
}
- UseDarkMode = toDark;
+ SetDarkMode(toDark);
form.SuspendLayout();
@@ -102,36 +131,12 @@ namespace ColorControl.Shared.Forms
//var backroundColorValue = settings.GetColorValue(UIColorType.Background);
//var isDarkMode = FormUtils.IsColorLight(foregroundColorValue);
- // Takes care of system context menu
- WinApi.SetPreferredAppMode(toDark ? 1 : 0);
-
- var backColor = toDark ? FormUtils.DarkModeBackColor : SystemColors.Control;
- var foreColor = toDark ? FormUtils.DarkModeForeColor : SystemColors.ControlText;
-
- FormUtils.CurrentBackColor = backColor;
- FormUtils.CurrentForeColor = foreColor;
-
- SetControlTheme(form, backColor, foreColor);
+ SetControlTheme(form, FormUtils.CurrentBackColor, FormUtils.CurrentForeColor);
var value = toDark ? 1 : 0;
// Takes care of title bar
WinApi.DwmSetWindowAttribute(form.Handle, DWMWA_USE_IMMERSIVE_DARK_MODE, ref value, 4);
-
- if (toDark)
- {
- _defaultRenderer ??= ToolStripManager.Renderer;
-
- ToolStripManager.Renderer = new DarkModeToolStripRenderer();
- }
- else if (_defaultRenderer != null)
- {
- ToolStripManager.Renderer = _defaultRenderer;
- }
-
- FormUtils.MenuItemForeColor = foreColor;
-
- WinApi.FlushMenuThemes();
}
finally
{
diff --git a/Shared/Forms/MessageForms.cs b/Shared/Forms/MessageForms.cs
index 489d8d7..32d9a94 100644
--- a/Shared/Forms/MessageForms.cs
+++ b/Shared/Forms/MessageForms.cs
@@ -113,32 +113,33 @@ namespace ColorControl.Shared.Forms
public class MessageForms
{
public static Form MainForm;
+ public static string Title = null;
public static void WarningOk(string text)
{
- MessageBox.Show(text, MainForm?.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ MessageBox.Show(text, Title ?? "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
public static void ErrorOk(string text)
{
- MessageBox.Show(text, MainForm?.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ MessageBox.Show(text, Title ?? "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
public static void InfoOk(string text, string title = null, string url = null)
{
if (url != null)
{
- MessageBox.Show(text, title ?? MainForm?.Text, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, 0, url);
+ MessageBox.Show(text, title ?? Title ?? "Info", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, 0, url);
}
else
{
- MessageBox.Show(text, title ?? MainForm?.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
+ MessageBox.Show(text, title ?? Title ?? "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
public static DialogResult QuestionYesNo(string text)
{
- return MessageBox.Show(text, MainForm?.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Information);
+ return MessageBox.Show(text, Title ?? "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
}
public static List ShowDialog(string caption, IEnumerable labels, Func, string> validateFunc = null)