SEBWIN-902: Implemented fix for GHSA-9cr5-q96r-887f and refactored various integrity aspects.

This commit is contained in:
Damian Büchel 2024-07-24 20:31:08 +02:00
parent b48ef21708
commit 1f50ab74c9
43 changed files with 1678 additions and 668 deletions

View file

@ -36,7 +36,6 @@ using SafeExamBrowser.Settings;
using SafeExamBrowser.Settings.Monitoring; using SafeExamBrowser.Settings.Monitoring;
using SafeExamBrowser.Settings.UserInterface; using SafeExamBrowser.Settings.UserInterface;
using SafeExamBrowser.SystemComponents.Contracts.Network; using SafeExamBrowser.SystemComponents.Contracts.Network;
using SafeExamBrowser.SystemComponents.Contracts.Registry;
using SafeExamBrowser.UserInterface.Contracts; using SafeExamBrowser.UserInterface.Contracts;
using SafeExamBrowser.UserInterface.Contracts.FileSystemDialog; using SafeExamBrowser.UserInterface.Contracts.FileSystemDialog;
using SafeExamBrowser.UserInterface.Contracts.MessageBox; using SafeExamBrowser.UserInterface.Contracts.MessageBox;
@ -67,8 +66,8 @@ namespace SafeExamBrowser.Client.UnitTests
private Mock<IMessageBox> messageBox; private Mock<IMessageBox> messageBox;
private Mock<INetworkAdapter> networkAdapter; private Mock<INetworkAdapter> networkAdapter;
private Mock<IOperationSequence> operationSequence; private Mock<IOperationSequence> operationSequence;
private Mock<IRegistry> registry;
private Mock<IRuntimeProxy> runtimeProxy; private Mock<IRuntimeProxy> runtimeProxy;
private Mock<ISystemSentinel> sentinel;
private Mock<IServerProxy> server; private Mock<IServerProxy> server;
private Guid sessionId; private Guid sessionId;
private AppSettings settings; private AppSettings settings;
@ -102,8 +101,8 @@ namespace SafeExamBrowser.Client.UnitTests
messageBox = new Mock<IMessageBox>(); messageBox = new Mock<IMessageBox>();
networkAdapter = new Mock<INetworkAdapter>(); networkAdapter = new Mock<INetworkAdapter>();
operationSequence = new Mock<IOperationSequence>(); operationSequence = new Mock<IOperationSequence>();
registry = new Mock<IRegistry>();
runtimeProxy = new Mock<IRuntimeProxy>(); runtimeProxy = new Mock<IRuntimeProxy>();
sentinel = new Mock<ISystemSentinel>();
server = new Mock<IServerProxy>(); server = new Mock<IServerProxy>();
sessionId = Guid.NewGuid(); sessionId = Guid.NewGuid();
settings = new AppSettings(); settings = new AppSettings();
@ -132,11 +131,11 @@ namespace SafeExamBrowser.Client.UnitTests
messageBox.Object, messageBox.Object,
networkAdapter.Object, networkAdapter.Object,
operationSequence.Object, operationSequence.Object,
registry.Object,
runtimeProxy.Object, runtimeProxy.Object,
shutdown.Object, shutdown.Object,
splashScreen.Object, splashScreen.Object,
systemMonitor.Object, systemMonitor.Object,
sentinel.Object,
taskbar.Object, taskbar.Object,
text.Object, text.Object,
uiFactory.Object); uiFactory.Object);

View file

@ -31,6 +31,7 @@ using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Monitoring.Contracts.Applications; using SafeExamBrowser.Monitoring.Contracts.Applications;
using SafeExamBrowser.Monitoring.Contracts.Display; using SafeExamBrowser.Monitoring.Contracts.Display;
using SafeExamBrowser.Monitoring.Contracts.System; using SafeExamBrowser.Monitoring.Contracts.System;
using SafeExamBrowser.Monitoring.Contracts.System.Events;
using SafeExamBrowser.Proctoring.Contracts; using SafeExamBrowser.Proctoring.Contracts;
using SafeExamBrowser.Proctoring.Contracts.Events; using SafeExamBrowser.Proctoring.Contracts.Events;
using SafeExamBrowser.Server.Contracts; using SafeExamBrowser.Server.Contracts;
@ -38,7 +39,6 @@ using SafeExamBrowser.Server.Contracts.Data;
using SafeExamBrowser.Settings; using SafeExamBrowser.Settings;
using SafeExamBrowser.SystemComponents.Contracts.Network; using SafeExamBrowser.SystemComponents.Contracts.Network;
using SafeExamBrowser.SystemComponents.Contracts.Network.Events; using SafeExamBrowser.SystemComponents.Contracts.Network.Events;
using SafeExamBrowser.SystemComponents.Contracts.Registry;
using SafeExamBrowser.UserInterface.Contracts; using SafeExamBrowser.UserInterface.Contracts;
using SafeExamBrowser.UserInterface.Contracts.FileSystemDialog; using SafeExamBrowser.UserInterface.Contracts.FileSystemDialog;
using SafeExamBrowser.UserInterface.Contracts.MessageBox; using SafeExamBrowser.UserInterface.Contracts.MessageBox;
@ -63,11 +63,11 @@ namespace SafeExamBrowser.Client
private readonly IMessageBox messageBox; private readonly IMessageBox messageBox;
private readonly INetworkAdapter networkAdapter; private readonly INetworkAdapter networkAdapter;
private readonly IOperationSequence operations; private readonly IOperationSequence operations;
private readonly IRegistry registry;
private readonly IRuntimeProxy runtime; private readonly IRuntimeProxy runtime;
private readonly Action shutdown; private readonly Action shutdown;
private readonly ISplashScreen splashScreen; private readonly ISplashScreen splashScreen;
private readonly ISystemMonitor systemMonitor; private readonly ISystemMonitor systemMonitor;
private readonly ISystemSentinel sentinel;
private readonly ITaskbar taskbar; private readonly ITaskbar taskbar;
private readonly IText text; private readonly IText text;
private readonly IUserInterfaceFactory uiFactory; private readonly IUserInterfaceFactory uiFactory;
@ -94,11 +94,11 @@ namespace SafeExamBrowser.Client
IMessageBox messageBox, IMessageBox messageBox,
INetworkAdapter networkAdapter, INetworkAdapter networkAdapter,
IOperationSequence operations, IOperationSequence operations,
IRegistry registry,
IRuntimeProxy runtime, IRuntimeProxy runtime,
Action shutdown, Action shutdown,
ISplashScreen splashScreen, ISplashScreen splashScreen,
ISystemMonitor systemMonitor, ISystemMonitor systemMonitor,
ISystemSentinel sentinel,
ITaskbar taskbar, ITaskbar taskbar,
IText text, IText text,
IUserInterfaceFactory uiFactory) IUserInterfaceFactory uiFactory)
@ -115,11 +115,11 @@ namespace SafeExamBrowser.Client
this.messageBox = messageBox; this.messageBox = messageBox;
this.networkAdapter = networkAdapter; this.networkAdapter = networkAdapter;
this.operations = operations; this.operations = operations;
this.registry = registry;
this.runtime = runtime; this.runtime = runtime;
this.shutdown = shutdown; this.shutdown = shutdown;
this.splashScreen = splashScreen; this.splashScreen = splashScreen;
this.systemMonitor = systemMonitor; this.systemMonitor = systemMonitor;
this.sentinel = sentinel;
this.taskbar = taskbar; this.taskbar = taskbar;
this.text = text; this.text = text;
this.uiFactory = uiFactory; this.uiFactory = uiFactory;
@ -223,8 +223,10 @@ namespace SafeExamBrowser.Client
ClientHost.Shutdown += ClientHost_Shutdown; ClientHost.Shutdown += ClientHost_Shutdown;
displayMonitor.DisplayChanged += DisplayMonitor_DisplaySettingsChanged; displayMonitor.DisplayChanged += DisplayMonitor_DisplaySettingsChanged;
networkAdapter.CredentialsRequired += NetworkAdapter_CredentialsRequired; networkAdapter.CredentialsRequired += NetworkAdapter_CredentialsRequired;
registry.ValueChanged += Registry_ValueChanged;
runtime.ConnectionLost += Runtime_ConnectionLost; runtime.ConnectionLost += Runtime_ConnectionLost;
sentinel.CursorChanged += Sentinel_CursorChanged;
sentinel.EaseOfAccessChanged += Sentinel_EaseOfAccessChanged;
sentinel.StickyKeysChanged += Sentinel_StickyKeysChanged;
systemMonitor.SessionChanged += SystemMonitor_SessionChanged; systemMonitor.SessionChanged += SystemMonitor_SessionChanged;
taskbar.LoseFocusRequested += Taskbar_LoseFocusRequested; taskbar.LoseFocusRequested += Taskbar_LoseFocusRequested;
taskbar.QuitButtonClicked += Shell_QuitButtonClicked; taskbar.QuitButtonClicked += Shell_QuitButtonClicked;
@ -248,8 +250,10 @@ namespace SafeExamBrowser.Client
applicationMonitor.ExplorerStarted -= ApplicationMonitor_ExplorerStarted; applicationMonitor.ExplorerStarted -= ApplicationMonitor_ExplorerStarted;
applicationMonitor.TerminationFailed -= ApplicationMonitor_TerminationFailed; applicationMonitor.TerminationFailed -= ApplicationMonitor_TerminationFailed;
displayMonitor.DisplayChanged -= DisplayMonitor_DisplaySettingsChanged; displayMonitor.DisplayChanged -= DisplayMonitor_DisplaySettingsChanged;
registry.ValueChanged -= Registry_ValueChanged;
runtime.ConnectionLost -= Runtime_ConnectionLost; runtime.ConnectionLost -= Runtime_ConnectionLost;
sentinel.CursorChanged -= Sentinel_CursorChanged;
sentinel.EaseOfAccessChanged -= Sentinel_EaseOfAccessChanged;
sentinel.StickyKeysChanged -= Sentinel_StickyKeysChanged;
systemMonitor.SessionChanged -= SystemMonitor_SessionChanged; systemMonitor.SessionChanged -= SystemMonitor_SessionChanged;
taskbar.LoseFocusRequested -= Taskbar_LoseFocusRequested; taskbar.LoseFocusRequested -= Taskbar_LoseFocusRequested;
taskbar.QuitButtonClicked -= Shell_QuitButtonClicked; taskbar.QuitButtonClicked -= Shell_QuitButtonClicked;
@ -365,24 +369,19 @@ namespace SafeExamBrowser.Client
timer.Interval = TEN_MINUTES + (new Random().NextDouble() * FIVE_MINUTES); timer.Interval = TEN_MINUTES + (new Random().NextDouble() * FIVE_MINUTES);
timer.Start(); timer.Start();
if (!Settings.Security.AllowStickyKeys)
{
sentinel.StartMonitoringStickyKeys();
}
if (Settings.Security.VerifyCursorConfiguration) if (Settings.Security.VerifyCursorConfiguration)
{ {
if (registry.TryGetNames(RegistryValue.UserHive.Cursors_Key, out var names)) sentinel.StartMonitoringCursors();
{
foreach (var name in names)
{
registry.StartMonitoring(RegistryValue.UserHive.Cursors_Key, name);
}
}
else
{
logger.Warn("Failed to start monitoring cursor registry values!");
}
} }
if (Settings.Service.IgnoreService) if (Settings.Service.IgnoreService)
{ {
registry.StartMonitoring(RegistryValue.MachineHive.EaseOfAccess_Key, RegistryValue.MachineHive.EaseOfAccess_Name); sentinel.StartMonitoringEaseOfAccess();
} }
} }
@ -451,7 +450,7 @@ namespace SafeExamBrowser.Client
private void TerminateIntegrityVerification() private void TerminateIntegrityVerification()
{ {
registry.StopMonitoring(); sentinel.StopMonitoring();
} }
private void ApplicationMonitor_ExplorerStarted() private void ApplicationMonitor_ExplorerStarted()
@ -782,22 +781,16 @@ namespace SafeExamBrowser.Client
splashScreen.UpdateStatus(status, true); splashScreen.UpdateStatus(status, true);
} }
private void Registry_ValueChanged(string key, string name, object oldValue, object newValue) private void Runtime_ConnectionLost()
{ {
if (key == RegistryValue.UserHive.Cursors_Key) logger.Error("Lost connection to the runtime!");
{
HandleCursorRegistryChange(key, name, oldValue, newValue); messageBox.Show(TextKey.MessageBox_ApplicationError, TextKey.MessageBox_ApplicationErrorTitle, icon: MessageBoxIcon.Error);
} shutdown.Invoke();
else if (key == RegistryValue.MachineHive.EaseOfAccess_Key)
{
HandleEaseOfAccessRegistryChange(key, name, oldValue, newValue);
}
} }
private void HandleCursorRegistryChange(string key, string name, object oldValue, object newValue) private void Sentinel_CursorChanged(SentinelEventArgs args)
{ {
logger.Warn($@"The cursor registry value '{key}\{name}' has changed from '{oldValue}' to '{newValue}'! Attempting to show lock screen...");
if (coordinator.RequestSessionLock()) if (coordinator.RequestSessionLock())
{ {
var message = text.Get(TextKey.LockScreen_CursorMessage); var message = text.Get(TextKey.LockScreen_CursorMessage);
@ -805,7 +798,8 @@ namespace SafeExamBrowser.Client
var continueOption = new LockScreenOption { Text = text.Get(TextKey.LockScreen_CursorContinueOption) }; var continueOption = new LockScreenOption { Text = text.Get(TextKey.LockScreen_CursorContinueOption) };
var terminateOption = new LockScreenOption { Text = text.Get(TextKey.LockScreen_CursorTerminateOption) }; var terminateOption = new LockScreenOption { Text = text.Get(TextKey.LockScreen_CursorTerminateOption) };
registry.StopMonitoring(key, name); args.Allow = true;
logger.Info("Cursor changed! Attempting to show lock screen...");
var result = ShowLockScreen(message, title, new[] { continueOption, terminateOption }); var result = ShowLockScreen(message, title, new[] { continueOption, terminateOption });
@ -823,14 +817,12 @@ namespace SafeExamBrowser.Client
} }
else else
{ {
logger.Info("Lock screen is already active."); logger.Info("Cursor changed but lock screen is already active.");
} }
} }
private void HandleEaseOfAccessRegistryChange(string key, string name, object oldValue, object newValue) private void Sentinel_EaseOfAccessChanged(SentinelEventArgs args)
{ {
logger.Warn($@"The ease of access registry value '{key}\{name}' has changed from '{oldValue}' to '{newValue}'! Attempting to show lock screen...");
if (coordinator.RequestSessionLock()) if (coordinator.RequestSessionLock())
{ {
var message = text.Get(TextKey.LockScreen_EaseOfAccessMessage); var message = text.Get(TextKey.LockScreen_EaseOfAccessMessage);
@ -838,7 +830,8 @@ namespace SafeExamBrowser.Client
var continueOption = new LockScreenOption { Text = text.Get(TextKey.LockScreen_EaseOfAccessContinueOption) }; var continueOption = new LockScreenOption { Text = text.Get(TextKey.LockScreen_EaseOfAccessContinueOption) };
var terminateOption = new LockScreenOption { Text = text.Get(TextKey.LockScreen_EaseOfAccessTerminateOption) }; var terminateOption = new LockScreenOption { Text = text.Get(TextKey.LockScreen_EaseOfAccessTerminateOption) };
registry.StopMonitoring(key, name); args.Allow = true;
logger.Info("Ease of access changed! Attempting to show lock screen...");
var result = ShowLockScreen(message, title, new[] { continueOption, terminateOption }); var result = ShowLockScreen(message, title, new[] { continueOption, terminateOption });
@ -856,16 +849,40 @@ namespace SafeExamBrowser.Client
} }
else else
{ {
logger.Info("Lock screen is already active."); logger.Info("Ease of access changed but lock screen is already active.");
} }
} }
private void Runtime_ConnectionLost() private void Sentinel_StickyKeysChanged(SentinelEventArgs args)
{ {
logger.Error("Lost connection to the runtime!"); if (coordinator.RequestSessionLock())
{
var message = text.Get(TextKey.LockScreen_StickyKeysMessage);
var title = text.Get(TextKey.LockScreen_Title);
var continueOption = new LockScreenOption { Text = text.Get(TextKey.LockScreen_StickyKeysContinueOption) };
var terminateOption = new LockScreenOption { Text = text.Get(TextKey.LockScreen_StickyKeysTerminateOption) };
messageBox.Show(TextKey.MessageBox_ApplicationError, TextKey.MessageBox_ApplicationErrorTitle, icon: MessageBoxIcon.Error); args.Allow = true;
shutdown.Invoke(); logger.Info("Sticky keys changed! Attempting to show lock screen...");
var result = ShowLockScreen(message, title, new[] { continueOption, terminateOption });
if (result.OptionId == continueOption.Id)
{
logger.Info("The session will be allowed to resume as requested by the user...");
}
else if (result.OptionId == terminateOption.Id)
{
logger.Info("Attempting to shutdown as requested by the user...");
TryRequestShutdown();
}
coordinator.ReleaseSessionLock();
}
else
{
logger.Info("Sticky keys changed but lock screen is already active.");
}
} }
private void Server_LockScreenConfirmed() private void Server_LockScreenConfirmed()

View file

@ -119,6 +119,7 @@ namespace SafeExamBrowser.Client
var explorerShell = new ExplorerShell(ModuleLogger(nameof(ExplorerShell)), nativeMethods); var explorerShell = new ExplorerShell(ModuleLogger(nameof(ExplorerShell)), nativeMethods);
var fileSystemDialog = BuildFileSystemDialog(); var fileSystemDialog = BuildFileSystemDialog();
var hashAlgorithm = new HashAlgorithm(); var hashAlgorithm = new HashAlgorithm();
var sentinel = new SystemSentinel(ModuleLogger(nameof(SystemSentinel)), nativeMethods, registry);
var splashScreen = uiFactory.CreateSplashScreen(); var splashScreen = uiFactory.CreateSplashScreen();
var systemMonitor = new SystemMonitor(ModuleLogger(nameof(SystemMonitor))); var systemMonitor = new SystemMonitor(ModuleLogger(nameof(SystemMonitor)));
@ -158,11 +159,11 @@ namespace SafeExamBrowser.Client
messageBox, messageBox,
networkAdapter, networkAdapter,
sequence, sequence,
registry,
runtimeProxy, runtimeProxy,
shutdown, shutdown,
splashScreen, splashScreen,
systemMonitor, systemMonitor,
sentinel,
taskbar, taskbar,
text, text,
uiFactory); uiFactory);

View file

@ -26,6 +26,9 @@ namespace SafeExamBrowser.Configuration.ConfigurationData.DataMapping
case Keys.Security.AllowReconfiguration: case Keys.Security.AllowReconfiguration:
MapAllowReconfiguration(settings, value); MapAllowReconfiguration(settings, value);
break; break;
case Keys.Security.AllowStickyKeys:
MapAllowStickyKeys(settings, value);
break;
case Keys.Security.AllowTermination: case Keys.Security.AllowTermination:
MapAllowTermination(settings, value); MapAllowTermination(settings, value);
break; break;
@ -78,6 +81,14 @@ namespace SafeExamBrowser.Configuration.ConfigurationData.DataMapping
} }
} }
private void MapAllowStickyKeys(AppSettings settings, object value)
{
if (value is bool allow)
{
settings.Security.AllowStickyKeys = allow;
}
}
private void MapAllowTermination(AppSettings settings, object value) private void MapAllowTermination(AppSettings settings, object value)
{ {
if (value is bool allow) if (value is bool allow)

View file

@ -132,6 +132,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "remoting_host.exe", OriginalName = "remoting_host.exe" }); settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "remoting_host.exe", OriginalName = "remoting_host.exe" });
settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "RPCService.exe", OriginalName = "RPCService.exe" }); settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "RPCService.exe", OriginalName = "RPCService.exe" });
settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "RPCSuite.exe", OriginalName = "RPCSuite.exe" }); settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "RPCSuite.exe", OriginalName = "RPCSuite.exe" });
settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "sethc.exe", OriginalName = "sethc.exe" });
settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "Skype.exe", OriginalName = "Skype.exe" }); settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "Skype.exe", OriginalName = "Skype.exe" });
settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "SkypeApp.exe", OriginalName = "SkypeApp.exe" }); settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "SkypeApp.exe", OriginalName = "SkypeApp.exe" });
settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "SkypeHost.exe", OriginalName = "SkypeHost.exe" }); settings.Applications.Blacklist.Add(new BlacklistApplication { ExecutableName = "SkypeHost.exe", OriginalName = "SkypeHost.exe" });
@ -250,6 +251,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
settings.Security.AllowApplicationLogAccess = false; settings.Security.AllowApplicationLogAccess = false;
settings.Security.AllowTermination = true; settings.Security.AllowTermination = true;
settings.Security.AllowReconfiguration = false; settings.Security.AllowReconfiguration = false;
settings.Security.AllowStickyKeys = false;
settings.Security.ClipboardPolicy = ClipboardPolicy.Isolated; settings.Security.ClipboardPolicy = ClipboardPolicy.Isolated;
settings.Security.DisableSessionChangeLockScreen = false; settings.Security.DisableSessionChangeLockScreen = false;
settings.Security.KioskMode = KioskMode.CreateNewDesktop; settings.Security.KioskMode = KioskMode.CreateNewDesktop;

View file

@ -262,6 +262,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
internal const string AdminPasswordHash = "hashedAdminPassword"; internal const string AdminPasswordHash = "hashedAdminPassword";
internal const string AllowApplicationLog = "allowApplicationLog"; internal const string AllowApplicationLog = "allowApplicationLog";
internal const string AllowReconfiguration = "examSessionReconfigureAllow"; internal const string AllowReconfiguration = "examSessionReconfigureAllow";
internal const string AllowStickyKeys = "allowStickyKeys";
internal const string AllowTermination = "allowQuit"; internal const string AllowTermination = "allowQuit";
internal const string AllowVirtualMachine = "allowVirtualMachine"; internal const string AllowVirtualMachine = "allowVirtualMachine";
internal const string ClipboardPolicy = "clipboardPolicy"; internal const string ClipboardPolicy = "clipboardPolicy";

View file

@ -83,6 +83,9 @@ namespace SafeExamBrowser.I18n.Contracts
LockScreen_EaseOfAccessMessage, LockScreen_EaseOfAccessMessage,
LockScreen_EaseOfAccessTerminateOption, LockScreen_EaseOfAccessTerminateOption,
LockScreen_SessionIntegrityMessage, LockScreen_SessionIntegrityMessage,
LockScreen_StickyKeysMessage,
LockScreen_StickyKeysContinueOption,
LockScreen_StickyKeysTerminateOption,
LockScreen_Title, LockScreen_Title,
LockScreen_UnlockButton, LockScreen_UnlockButton,
LockScreen_UserSessionContinueOption, LockScreen_UserSessionContinueOption,

View file

@ -207,6 +207,15 @@
<Entry key="LockScreen_SessionIntegrityMessage"> <Entry key="LockScreen_SessionIntegrityMessage">
Die letzte Sitzung mit der momentan aktiven Konfiguration oder Start-URL wurde nicht ordnungsgemäss beendet! Geben Sie bitte das korrekte Passwort ein, um SEB zu entsperren. Die letzte Sitzung mit der momentan aktiven Konfiguration oder Start-URL wurde nicht ordnungsgemäss beendet! Geben Sie bitte das korrekte Passwort ein, um SEB zu entsperren.
</Entry> </Entry>
<Entry key="LockScreen_StickyKeysContinueOption">
Zustand der Sticky-Keys temporär erlauben. Dies gilt nur für die momentan laufende Sitzung!
</Entry>
<Entry key="LockScreen_StickyKeysMessage">
Ein verbotener Zustand der Sticky-Keys wurde detektiert. Bitte wählen Sie eine der verfügbaren Optionen aus und geben Sie das korrekte Passwort ein, um SEB zu entsperren.
</Entry>
<Entry key="LockScreen_StickyKeysTerminateOption">
Safe Exam Browser beenden. WARNUNG: Sie werden keine Möglichkeit haben, Daten zu speichern oder weitere Aktionen auszuführen, SEB wird sofort beendet!
</Entry>
<Entry key="LockScreen_Title"> <Entry key="LockScreen_Title">
SEB GESPERRT SEB GESPERRT
</Entry> </Entry>

View file

@ -207,6 +207,15 @@
<Entry key="LockScreen_SessionIntegrityMessage"> <Entry key="LockScreen_SessionIntegrityMessage">
The last session with the currently active configuration or start URL was not terminated properly! Please enter the correct password to unlock SEB. The last session with the currently active configuration or start URL was not terminated properly! Please enter the correct password to unlock SEB.
</Entry> </Entry>
<Entry key="LockScreen_StickyKeysContinueOption">
Temporarily allow the state of the sticky keys. This applies only to the currently running session!
</Entry>
<Entry key="LockScreen_StickyKeysMessage">
A prohibited state of the sticky keys has been detected. In order to unlock SEB, please select one of the available options and enter the correct unlock password.
</Entry>
<Entry key="LockScreen_StickyKeysTerminateOption">
Terminate Safe Exam Browser. WARNING: There will be no possibility to save data or perform any further actions, the shutdown will be initiated immediately!
</Entry>
<Entry key="LockScreen_Title"> <Entry key="LockScreen_Title">
SEB LOCKED SEB LOCKED
</Entry> </Entry>

View file

@ -207,6 +207,15 @@
<Entry key="LockScreen_SessionIntegrityMessage"> <Entry key="LockScreen_SessionIntegrityMessage">
La última sesión con la configuración activa o la URL de inicio no se ha cerrado correctamente. Por favor, introduzca la contraseña correcta para desbloquear SEB. La última sesión con la configuración activa o la URL de inicio no se ha cerrado correctamente. Por favor, introduzca la contraseña correcta para desbloquear SEB.
</Entry> </Entry>
<Entry key="LockScreen_StickyKeysContinueOption">
Permitir temporalmente el estado de las teclas adhesivas. Esto sólo se aplica a la sesión que se está ejecutando en ese momento.
</Entry>
<Entry key="LockScreen_StickyKeysMessage">
Se ha detectado un estado prohibido de las teclas adhesivas. Para desbloquear SEB, seleccione una de las opciones disponibles e introduzca la contraseña de desbloqueo correcta.
</Entry>
<Entry key="LockScreen_StickyKeysTerminateOption">
Finalizar Safe Exam Browser. ADVERTENCIA: No habrá posibilidad de guardar datos o realizar ninguna otra acción, ¡el cierre se iniciará inmediatamente!
</Entry>
<Entry key="LockScreen_Title"> <Entry key="LockScreen_Title">
SEB BLOQUEADO SEB BLOQUEADO
</Entry> </Entry>

View file

@ -207,6 +207,15 @@
<Entry key="LockScreen_SessionIntegrityMessage"> <Entry key="LockScreen_SessionIntegrityMessage">
Viimast seanssi hetkel aktiivse seadistuse või algus-URL-iga ei suletud korrektselt! Palun sisestage SEB'i avamiseks õige parool. Viimast seanssi hetkel aktiivse seadistuse või algus-URL-iga ei suletud korrektselt! Palun sisestage SEB'i avamiseks õige parool.
</Entry> </Entry>
<Entry key="LockScreen_StickyKeysContinueOption">
Lubab ajutiselt kleepuvate võtmete oleku. See kehtib ainult hetkel käimasoleva seansi kohta!
</Entry>
<Entry key="LockScreen_StickyKeysMessage">
Avastati kleepuvate võtmete keelatud olek. SEB avamiseks valige üks olemasolevatest võimalustest ja sisestage õige avamisparool.
</Entry>
<Entry key="LockScreen_StickyKeysTerminateOption">
Sulge Safe Exam Browser. HOIATUS: andmete salvestamise ega edasiste toimingute tegemise võimalust ei ole, sulgemine käivitatakse kohe!
</Entry>
<Entry key="LockScreen_Title"> <Entry key="LockScreen_Title">
SEB ON LUKUSTATUD SEB ON LUKUSTATUD
</Entry> </Entry>

View file

@ -207,6 +207,15 @@
<Entry key="LockScreen_SessionIntegrityMessage"> <Entry key="LockScreen_SessionIntegrityMessage">
La dernière session avec la configuration ou l'URL de démarrage actuellement active n'a pas été terminée correctement! Afin de déverrouiller SEB, veuillez entrer le mot de passe de déverrouillage correct. La dernière session avec la configuration ou l'URL de démarrage actuellement active n'a pas été terminée correctement! Afin de déverrouiller SEB, veuillez entrer le mot de passe de déverrouillage correct.
</Entry> </Entry>
<Entry key="LockScreen_StickyKeysContinueOption">
Autoriser temporairement l'état des clés autocollantes. Cela ne s'applique qu'à la session en cours!
</Entry>
<Entry key="LockScreen_StickyKeysMessage">
Un état d'interdiction des clés autocollantes a été détecté. Pour déverrouiller SEB, veuillez sélectionner l'une des options disponibles et saisir le mot de passe de déverrouillage correct.
</Entry>
<Entry key="LockScreen_StickyKeysTerminateOption">
Terminate Safe Exam Browser. WARNING: There will be no possibility to save data or perform any further actions, the shutdown will be initiated immediately!
</Entry>
<Entry key="LockScreen_Title"> <Entry key="LockScreen_Title">
SEB VEROUILLE SEB VEROUILLE
</Entry> </Entry>

View file

@ -207,6 +207,15 @@
<Entry key="LockScreen_SessionIntegrityMessage"> <Entry key="LockScreen_SessionIntegrityMessage">
Sesi terakhir dengan konfigurasi yang sedang aktif atau URL awal tidak diakhiri dengan benar! Silakan masukkan kata sandi yang benar untuk membuka kunci SEB. Sesi terakhir dengan konfigurasi yang sedang aktif atau URL awal tidak diakhiri dengan benar! Silakan masukkan kata sandi yang benar untuk membuka kunci SEB.
</Entry> </Entry>
<Entry key="LockScreen_StickyKeysContinueOption">
Mengizinkan status tombol tempel untuk sementara waktu. Ini hanya berlaku untuk sesi yang sedang berjalan!
</Entry>
<Entry key="LockScreen_StickyKeysMessage">
Kondisi kunci tempel yang dilarang telah terdeteksi. Untuk membuka kunci SEB, pilih salah satu opsi yang tersedia dan masukkan kata sandi buka kunci yang benar.
</Entry>
<Entry key="LockScreen_StickyKeysTerminateOption">
Menghentikan Safe Exam Browser. PERINGATAN: Tidak akan ada kemungkinan untuk menyimpan data atau melakukan tindakan lebih lanjut, penghentian akan segera dilakukan!
</Entry>
<Entry key="LockScreen_Title"> <Entry key="LockScreen_Title">
SEB TERKUNCI SEB TERKUNCI
</Entry> </Entry>

View file

@ -207,6 +207,15 @@
<Entry key="LockScreen_SessionIntegrityMessage"> <Entry key="LockScreen_SessionIntegrityMessage">
L'ultima sessione con la configurazione o l'URL di avvio attualmente attiva non è stata terminata correttamente! Per sbloccare SEB, inserisci la password di sblocco corretta. L'ultima sessione con la configurazione o l'URL di avvio attualmente attiva non è stata terminata correttamente! Per sbloccare SEB, inserisci la password di sblocco corretta.
</Entry> </Entry>
<Entry key="LockScreen_StickyKeysContinueOption">
Consente temporaneamente lo stato dei tasti adesivi. Questo vale solo per la sessione in corso!
</Entry>
<Entry key="LockScreen_StickyKeysMessage">
È stato rilevato uno stato non consentito dei tasti adesivi. Per sbloccare SEB, selezionare una delle opzioni disponibili e inserire la password di sblocco corretta.
</Entry>
<Entry key="LockScreen_StickyKeysTerminateOption">
Terminare Safe Exam Browser. ATTENZIONE: Non sarà possibile salvare i dati o eseguire ulteriori azioni, la chiusura verrà avviata immediatamente!
</Entry>
<Entry key="LockScreen_Title"> <Entry key="LockScreen_Title">
SEB BLOCCATO SEB BLOCCATO
</Entry> </Entry>

View file

@ -207,6 +207,15 @@
<Entry key="LockScreen_SessionIntegrityMessage"> <Entry key="LockScreen_SessionIntegrityMessage">
De laatste sessie met de huidige actieve configuratie of start URL is niet goed afgesloten! Voer het juiste wachtwoord in om SEB te ontgrendelen. De laatste sessie met de huidige actieve configuratie of start URL is niet goed afgesloten! Voer het juiste wachtwoord in om SEB te ontgrendelen.
</Entry> </Entry>
<Entry key="LockScreen_StickyKeysContinueOption">
Tijdelijk de toestand van de sticky keys toestaan. Dit geldt alleen voor de huidige sessie!
</Entry>
<Entry key="LockScreen_StickyKeysMessage">
Er is een verboden toestand van de sticky keys gedetecteerd. Om SEB te ontgrendelen, selecteert u een van de beschikbare opties en voert u het juiste ontgrendelwachtwoord in.
</Entry>
<Entry key="LockScreen_StickyKeysTerminateOption">
Beëindig de Safe Exam Browser. WAARSCHUWING: er is geen mogelijkheid om gegevens op te slaan of verdere acties uit te voeren, de browser wordt onmiddellijk afgesloten!
</Entry>
<Entry key="LockScreen_Title"> <Entry key="LockScreen_Title">
SEB VERGRENDELD SEB VERGRENDELD
</Entry> </Entry>

View file

@ -206,6 +206,15 @@
<Entry key="LockScreen_SessionIntegrityMessage"> <Entry key="LockScreen_SessionIntegrityMessage">
Последний сеанс с текущей активной конфигурацией или URL-адресом запуска не был завершен должным образом! Пожалуйста, введите правильный пароль, чтобы разблокировать SEB. Последний сеанс с текущей активной конфигурацией или URL-адресом запуска не был завершен должным образом! Пожалуйста, введите правильный пароль, чтобы разблокировать SEB.
</Entry> </Entry>
<Entry key="LockScreen_StickyKeysContinueOption">
Временно разрешить состояние липких ключей. Это относится только к текущему сеансу!
</Entry>
<Entry key="LockScreen_StickyKeysMessage">
Обнаружено запрещенное состояние липких клавиш. Чтобы разблокировать SEB, пожалуйста, выберите один из доступных вариантов и введите правильный пароль разблокировки.
</Entry>
<Entry key="LockScreen_StickyKeysTerminateOption">
Завершить работу Safe Exam Browser. ВНИМАНИЕ: Сохранить данные или выполнить какие-либо дальнейшие действия будет невозможно, завершение работы будет инициировано немедленно!
</Entry>
<Entry key="LockScreen_Title"> <Entry key="LockScreen_Title">
SEB ЗАБЛОКИРОВАН SEB ЗАБЛОКИРОВАН
</Entry> </Entry>

View file

@ -193,7 +193,7 @@
检测到禁止的显示配置。 要解锁 SEB请选择可用选项之一并输入正确的解锁密码。 检测到禁止的显示配置。 要解锁 SEB请选择可用选项之一并输入正确的解锁密码。
</Entry> </Entry>
<Entry key="LockScreen_DisplayConfigurationTerminateOption"> <Entry key="LockScreen_DisplayConfigurationTerminateOption">
终止安全考试浏览器。 警告:将无法保存数据或执行任何进一步操作,将立即启动关机! 终止安全考试浏览器。警告:将无法保存数据或执行任何进一步操作,将立即启动关机!
</Entry> </Entry>
<Entry key="LockScreen_EaseOfAccessContinueOption"> <Entry key="LockScreen_EaseOfAccessContinueOption">
暂时允许轻松访问的配置。这只适用于当前运行的会话! 暂时允许轻松访问的配置。这只适用于当前运行的会话!
@ -207,6 +207,15 @@
<Entry key="LockScreen_SessionIntegrityMessage"> <Entry key="LockScreen_SessionIntegrityMessage">
当前激活的配置或启动URL的最后一个会话没有被正确终止! 请输入正确的密码以解锁SEB。 当前激活的配置或启动URL的最后一个会话没有被正确终止! 请输入正确的密码以解锁SEB。
</Entry> </Entry>
<Entry key="LockScreen_StickyKeysContinueOption">
暂时允许粘性按键的状态。这仅适用于当前运行的会话!
</Entry>
<Entry key="LockScreen_StickyKeysMessage">
已检测到粘滞键处于禁用状态。要解锁 SEB请选择一个可用选项并输入正确的解锁密码。
</Entry>
<Entry key="LockScreen_StickyKeysTerminateOption">
终止安全考试浏览器。警告:将没有可能保存数据或执行任何进一步的行动,关闭将立即启动!
</Entry>
<Entry key="LockScreen_Title"> <Entry key="LockScreen_Title">
防作弊考试专用浏览器已锁定 防作弊考试专用浏览器已锁定
</Entry> </Entry>

View file

@ -70,8 +70,11 @@
<Compile Include="Applications\InitializationResult.cs" /> <Compile Include="Applications\InitializationResult.cs" />
<Compile Include="Applications\IApplicationMonitor.cs" /> <Compile Include="Applications\IApplicationMonitor.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="System\Events\SentinelEventArgs.cs" />
<Compile Include="System\Events\SentinelEventHandler.cs" />
<Compile Include="System\Events\SessionChangedEventHandler.cs" /> <Compile Include="System\Events\SessionChangedEventHandler.cs" />
<Compile Include="System\ISystemMonitor.cs" /> <Compile Include="System\ISystemMonitor.cs" />
<Compile Include="System\ISystemSentinel.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\SafeExamBrowser.Settings\SafeExamBrowser.Settings.csproj"> <ProjectReference Include="..\SafeExamBrowser.Settings\SafeExamBrowser.Settings.csproj">

View file

@ -0,0 +1,21 @@
/*
* Copyright (c) 2024 ETH Zürich, IT Services
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
namespace SafeExamBrowser.Monitoring.Contracts.System.Events
{
/// <summary>
/// The event arguments used for the <see cref="SentinelEventHandler"/> fired by the <see cref="ISystemSentinel"/>.
/// </summary>
public class SentinelEventArgs
{
/// <summary>
/// Indicates whether a configuration or state change shall be allowed.
/// </summary>
public bool Allow { get; set; }
}
}

View file

@ -0,0 +1,15 @@
/*
* Copyright (c) 2024 ETH Zürich, IT Services
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
namespace SafeExamBrowser.Monitoring.Contracts.System.Events
{
/// <summary>
/// The default handler for events of the <see cref="ISystemSentinel"/>. Normally indicates that a configuration or state has changed.
/// </summary>
public delegate void SentinelEventHandler(SentinelEventArgs args);
}

View file

@ -0,0 +1,78 @@
/*
* Copyright (c) 2024 ETH Zürich, IT Services
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
using SafeExamBrowser.Monitoring.Contracts.System.Events;
namespace SafeExamBrowser.Monitoring.Contracts.System
{
/// <summary>
/// Provides the possibility to suppress and surveil various system components and functionalities.
/// </summary>
public interface ISystemSentinel
{
/// <summary>
/// Event fired when the cursor configuration has changed.
/// </summary>
event SentinelEventHandler CursorChanged;
/// <summary>
/// Event fired when the ease of access configuration has changed.
/// </summary>
event SentinelEventHandler EaseOfAccessChanged;
/// <summary>
/// Event fired when the sticky keys state has changed.
/// </summary>
event SentinelEventHandler StickyKeysChanged;
/// <summary>
/// Attempts to disable the sticky keys. Returns <c>true</c> if successful, otherwise <c>false</c>.
/// </summary>
bool DisableStickyKeys();
/// <summary>
/// Attempts to enable the sticky keys. Returns <c>true</c> if successful, otherwise <c>false</c>.
/// </summary>
bool EnableStickyKeys();
/// <summary>
/// Attempts to revert the sticky keys to their initial state. Returns <c>true</c> if successful, otherwise <c>false</c>.
/// </summary>
bool RevertStickyKeys();
/// <summary>
/// Starts monitoring the cursor configuration.
/// </summary>
void StartMonitoringCursors();
/// <summary>
/// Starts monitoring the ease of access configuration.
/// </summary>
void StartMonitoringEaseOfAccess();
/// <summary>
/// Starts monitoring the sticky keys state.
/// </summary>
void StartMonitoringStickyKeys();
/// <summary>
/// Stops all monitoring operations.
/// </summary>
void StopMonitoring();
/// <summary>
/// Verifies the cursor configuration. Returns <c>true</c> if permitted, otherwise <c>false</c>.
/// </summary>
bool VerifyCursors();
/// <summary>
/// Verifies the ease of access configuration. Returns <c>true</c> if permitted, otherwise <c>false</c>.
/// </summary>
bool VerifyEaseOfAccess();
}
}

View file

@ -67,7 +67,11 @@
<Compile Include="Mouse\MouseInterceptor.cs" /> <Compile Include="Mouse\MouseInterceptor.cs" />
<Compile Include="Applications\ApplicationMonitor.cs" /> <Compile Include="Applications\ApplicationMonitor.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="System\Components\Cursors.cs" />
<Compile Include="System\Components\EaseOfAccess.cs" />
<Compile Include="System\Components\StickyKeys.cs" />
<Compile Include="System\SystemMonitor.cs" /> <Compile Include="System\SystemMonitor.cs" />
<Compile Include="System\SystemSentinel.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\SafeExamBrowser.Logging.Contracts\SafeExamBrowser.Logging.Contracts.csproj"> <ProjectReference Include="..\SafeExamBrowser.Logging.Contracts\SafeExamBrowser.Logging.Contracts.csproj">

View file

@ -0,0 +1,152 @@
/*
* Copyright (c) 2024 ETH Zürich, IT Services
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
using System;
using System.Linq;
using System.Threading.Tasks;
using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Monitoring.Contracts.System.Events;
using SafeExamBrowser.SystemComponents.Contracts.Registry;
namespace SafeExamBrowser.Monitoring.System.Components
{
internal class Cursors
{
private static readonly string SYSTEM_PATH = $@"{Environment.ExpandEnvironmentVariables("%SystemRoot%")}\Cursors\";
private static readonly string USER_PATH = $@"{Environment.ExpandEnvironmentVariables("%LocalAppData%")}\Microsoft\Windows\Cursors\";
private readonly ILogger logger;
private readonly IRegistry registry;
internal event SentinelEventHandler CursorChanged;
internal Cursors(ILogger logger, IRegistry registry)
{
this.logger = logger;
this.registry = registry;
}
internal void StartMonitoring()
{
registry.ValueChanged += Registry_ValueChanged;
if (registry.TryGetNames(RegistryValue.UserHive.Cursors_Key, out var names))
{
foreach (var name in names)
{
registry.StartMonitoring(RegistryValue.UserHive.Cursors_Key, name);
}
logger.Info("Started monitoring cursors.");
}
else
{
logger.Warn("Failed to start monitoring cursor registry values!");
}
}
internal void StopMonitoring()
{
registry.ValueChanged -= Registry_ValueChanged;
if (registry.TryGetNames(RegistryValue.UserHive.Cursors_Key, out var names))
{
foreach (var name in names)
{
registry.StopMonitoring(RegistryValue.UserHive.Cursors_Key, name);
}
logger.Info("Stopped monitoring cursors.");
}
else
{
logger.Warn("Failed to stop monitoring cursor registry values!");
}
}
internal bool Verify()
{
logger.Info($"Starting cursor verification...");
var success = registry.TryGetNames(RegistryValue.UserHive.Cursors_Key, out var cursors);
if (success)
{
foreach (var cursor in cursors.Where(c => !string.IsNullOrWhiteSpace(c)))
{
success &= VerifyCursor(cursor);
}
if (success)
{
logger.Info("Cursor configuration successfully verified.");
}
else
{
logger.Warn("Cursor configuration is compromised!");
}
}
else
{
logger.Error("Failed to verify cursor configuration!");
}
return success;
}
private void Registry_ValueChanged(string key, string name, object oldValue, object newValue)
{
if (key == RegistryValue.UserHive.Cursors_Key)
{
HandleCursorChange(key, name, oldValue, newValue);
}
}
private void HandleCursorChange(string key, string name, object oldValue, object newValue)
{
var args = new SentinelEventArgs();
logger.Warn($@"The cursor registry value '{key}\{name}' has changed from '{oldValue}' to '{newValue}'!");
Task.Run(() => CursorChanged?.Invoke(args)).ContinueWith((_) =>
{
if (args.Allow)
{
registry.StopMonitoring(key, name);
}
});
}
private bool VerifyCursor(string cursor)
{
var success = true;
success &= registry.TryRead(RegistryValue.UserHive.Cursors_Key, cursor, out var value);
success &= !(value is string) || (value is string path && (string.IsNullOrWhiteSpace(path) || IsValidCursorPath(path)));
if (!success)
{
if (value != default)
{
logger.Warn($"Configuration of cursor '{cursor}' is compromised: '{value}'!");
}
else
{
logger.Warn($"Failed to verify configuration of cursor '{cursor}'!");
}
}
return success;
}
private bool IsValidCursorPath(string path)
{
return path.StartsWith(USER_PATH, StringComparison.OrdinalIgnoreCase) || path.StartsWith(SYSTEM_PATH, StringComparison.OrdinalIgnoreCase);
}
}
}

View file

@ -0,0 +1,95 @@
/*
* Copyright (c) 2024 ETH Zürich, IT Services
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
using System.Threading.Tasks;
using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Monitoring.Contracts.System.Events;
using SafeExamBrowser.SystemComponents.Contracts.Registry;
namespace SafeExamBrowser.Monitoring.System.Components
{
internal class EaseOfAccess
{
private readonly ILogger logger;
private readonly IRegistry registry;
internal event SentinelEventHandler EaseOfAccessChanged;
internal EaseOfAccess(ILogger logger, IRegistry registry)
{
this.logger = logger;
this.registry = registry;
}
internal void StartMonitoring()
{
registry.ValueChanged += Registry_ValueChanged;
registry.StartMonitoring(RegistryValue.MachineHive.EaseOfAccess_Key, RegistryValue.MachineHive.EaseOfAccess_Name);
logger.Info("Started monitoring ease of access.");
}
internal void StopMonitoring()
{
registry.ValueChanged -= Registry_ValueChanged;
registry.StopMonitoring(RegistryValue.MachineHive.EaseOfAccess_Key, RegistryValue.MachineHive.EaseOfAccess_Name);
logger.Info("Stopped monitoring ease of access.");
}
internal bool Verify()
{
logger.Info($"Starting ease of access verification...");
var success = registry.TryRead(RegistryValue.MachineHive.EaseOfAccess_Key, RegistryValue.MachineHive.EaseOfAccess_Name, out var value);
if (success)
{
if (value is string s && string.IsNullOrWhiteSpace(s))
{
logger.Info("Ease of access configuration successfully verified.");
}
else
{
logger.Warn($"Ease of access configuration is compromised: '{value}'!");
success = false;
}
}
else
{
success = true;
logger.Info("Ease of access configuration successfully verified (value does not exist).");
}
return success;
}
private void Registry_ValueChanged(string key, string name, object oldValue, object newValue)
{
if (key == RegistryValue.MachineHive.EaseOfAccess_Key)
{
HandleEaseOfAccessChange(key, name, oldValue, newValue);
}
}
private void HandleEaseOfAccessChange(string key, string name, object oldValue, object newValue)
{
var args = new SentinelEventArgs();
logger.Warn($@"The ease of access registry value '{key}\{name}' has changed from '{oldValue}' to '{newValue}'!");
Task.Run(() => EaseOfAccessChanged?.Invoke(args)).ContinueWith((_) =>
{
if (args.Allow)
{
registry.StopMonitoring(key, name);
}
});
}
}
}

View file

@ -0,0 +1,175 @@
/*
* Copyright (c) 2024 ETH Zürich, IT Services
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
using System.Threading.Tasks;
using System.Timers;
using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Monitoring.Contracts.System.Events;
using SafeExamBrowser.WindowsApi.Contracts;
namespace SafeExamBrowser.Monitoring.System.Components
{
internal class StickyKeys
{
private readonly ILogger logger;
private readonly INativeMethods nativeMethods;
private readonly Timer timer;
private IStickyKeysState original;
internal event SentinelEventHandler Changed;
internal StickyKeys(ILogger logger, INativeMethods nativeMethods)
{
this.logger = logger;
this.nativeMethods = nativeMethods;
this.timer = new Timer();
}
internal bool Disable()
{
var success = nativeMethods.TryGetStickyKeys(out var state);
if (success)
{
success = nativeMethods.DisableStickyKeys();
if (success)
{
original = state;
logger.Info($"Disabled sticky keys (original state: {ToString(state)}).");
}
else
{
logger.Error($"Failed to disable sticky keys (original state: {ToString(state)})!");
}
}
else
{
logger.Error("Failed to retrieve sticky keys state!");
}
return success;
}
internal bool Enable()
{
var success = nativeMethods.TryGetStickyKeys(out var state);
if (success)
{
success = nativeMethods.EnableStickyKeys();
if (success)
{
original = state;
logger.Info($"Enabled sticky keys (original state: {ToString(state)}).");
}
else
{
logger.Error($"Failed to enable sticky keys (original state: {ToString(state)})!");
}
}
else
{
logger.Error("Failed to retrieve sticky keys state!");
}
return success;
}
internal bool Revert()
{
var success = true;
if (original != default)
{
success = nativeMethods.TrySetStickyKeys(original);
if (success)
{
logger.Info($"Successfully reverted sticky keys (original state: {ToString(original)}).");
}
else
{
logger.Error($"Failed to revert sticky keys (original state: {ToString(original)})!");
}
}
original = default;
return success;
}
internal void StartMonitoring()
{
timer.AutoReset = true;
timer.Elapsed += Timer_Elapsed;
timer.Interval = 1000;
timer.Start();
logger.Info("Started monitoring sticky keys.");
}
internal void StopMonitoring()
{
timer.Elapsed -= Timer_Elapsed;
timer.Stop();
logger.Info("Stopped monitoring sticky keys.");
}
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
if (nativeMethods.TryGetStickyKeys(out var state))
{
if (state.IsEnabled || state.IsHotkeyActive)
{
HandleStickyKeysChange(state);
}
}
else
{
logger.Error("Failed to monitor sticky keys state!");
}
}
private void HandleStickyKeysChange(IStickyKeysState state)
{
var args = new SentinelEventArgs();
logger.Warn($"The sticky keys state has changed: {ToString(state)}.");
Task.Run(() => Changed?.Invoke(args)).ContinueWith((_) =>
{
if (args.Allow)
{
StopMonitoring();
}
});
if (nativeMethods.DisableStickyKeys())
{
logger.Info($"Disabled sticky keys.");
}
else
{
logger.Error($"Failed to disable sticky keys!");
}
}
private string ToString(IStickyKeysState state)
{
var availability = state.IsAvailable ? "available" : "unavailable";
var status = state.IsEnabled ? "enabled" : "disabled";
var hotkey = state.IsHotkeyActive ? "active" : "inactive";
return $"functionality {availability} and {status}, hotkey {hotkey}";
}
}
}

View file

@ -0,0 +1,85 @@
/*
* Copyright (c) 2024 ETH Zürich, IT Services
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Monitoring.Contracts.System;
using SafeExamBrowser.Monitoring.Contracts.System.Events;
using SafeExamBrowser.Monitoring.System.Components;
using SafeExamBrowser.SystemComponents.Contracts.Registry;
using SafeExamBrowser.WindowsApi.Contracts;
namespace SafeExamBrowser.Monitoring.System
{
public class SystemSentinel : ISystemSentinel
{
private readonly Cursors cursors;
private readonly EaseOfAccess easeOfAccess;
private readonly StickyKeys stickyKeys;
public event SentinelEventHandler CursorChanged;
public event SentinelEventHandler EaseOfAccessChanged;
public event SentinelEventHandler StickyKeysChanged;
public SystemSentinel(ILogger logger, INativeMethods nativeMethods, IRegistry registry)
{
this.cursors = new Cursors(logger, registry);
this.easeOfAccess = new EaseOfAccess(logger, registry);
this.stickyKeys = new StickyKeys(logger, nativeMethods);
}
public bool DisableStickyKeys()
{
return stickyKeys.Disable();
}
public bool EnableStickyKeys()
{
return stickyKeys.Enable();
}
public bool RevertStickyKeys()
{
return stickyKeys.Revert();
}
public void StartMonitoringCursors()
{
cursors.CursorChanged += (args) => CursorChanged?.Invoke(args);
cursors.StartMonitoring();
}
public void StartMonitoringEaseOfAccess()
{
easeOfAccess.EaseOfAccessChanged += (args) => EaseOfAccessChanged?.Invoke(args);
easeOfAccess.StartMonitoring();
}
public void StartMonitoringStickyKeys()
{
stickyKeys.Changed += (args) => StickyKeysChanged?.Invoke(args);
stickyKeys.StartMonitoring();
}
public void StopMonitoring()
{
cursors.StopMonitoring();
easeOfAccess.StopMonitoring();
stickyKeys.StopMonitoring();
}
public bool VerifyCursors()
{
return cursors.Verify();
}
public bool VerifyEaseOfAccess()
{
return easeOfAccess.Verify();
}
}
}

View file

@ -26,6 +26,7 @@ using SafeExamBrowser.I18n.Contracts;
using SafeExamBrowser.Logging; using SafeExamBrowser.Logging;
using SafeExamBrowser.Logging.Contracts; using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Monitoring.Display; using SafeExamBrowser.Monitoring.Display;
using SafeExamBrowser.Monitoring.System;
using SafeExamBrowser.Runtime.Communication; using SafeExamBrowser.Runtime.Communication;
using SafeExamBrowser.Runtime.Operations; using SafeExamBrowser.Runtime.Operations;
using SafeExamBrowser.Server; using SafeExamBrowser.Server;
@ -82,6 +83,7 @@ namespace SafeExamBrowser.Runtime
var remoteSessionDetector = new RemoteSessionDetector(ModuleLogger(nameof(RemoteSessionDetector))); var remoteSessionDetector = new RemoteSessionDetector(ModuleLogger(nameof(RemoteSessionDetector)));
var runtimeHost = new RuntimeHost(appConfig.RuntimeAddress, new HostObjectFactory(), ModuleLogger(nameof(RuntimeHost)), FIVE_SECONDS); var runtimeHost = new RuntimeHost(appConfig.RuntimeAddress, new HostObjectFactory(), ModuleLogger(nameof(RuntimeHost)), FIVE_SECONDS);
var runtimeWindow = uiFactory.CreateRuntimeWindow(appConfig); var runtimeWindow = uiFactory.CreateRuntimeWindow(appConfig);
var sentinel = new SystemSentinel(ModuleLogger(nameof(SystemSentinel)), nativeMethods, registry);
var server = new ServerProxy(appConfig, keyGenerator, ModuleLogger(nameof(ServerProxy)), systemInfo, userInfo); var server = new ServerProxy(appConfig, keyGenerator, ModuleLogger(nameof(ServerProxy)), systemInfo, userInfo);
var serviceProxy = new ServiceProxy(appConfig.ServiceAddress, new ProxyObjectFactory(), ModuleLogger(nameof(ServiceProxy)), Interlocutor.Runtime); var serviceProxy = new ServiceProxy(appConfig.ServiceAddress, new ProxyObjectFactory(), ModuleLogger(nameof(ServiceProxy)), Interlocutor.Runtime);
var sessionContext = new SessionContext(); var sessionContext = new SessionContext();
@ -101,7 +103,7 @@ namespace SafeExamBrowser.Runtime
sessionOperations.Enqueue(new VersionRestrictionOperation(logger, sessionContext, text)); sessionOperations.Enqueue(new VersionRestrictionOperation(logger, sessionContext, text));
sessionOperations.Enqueue(new DisclaimerOperation(logger, sessionContext)); sessionOperations.Enqueue(new DisclaimerOperation(logger, sessionContext));
sessionOperations.Enqueue(new RemoteSessionOperation(remoteSessionDetector, logger, sessionContext)); sessionOperations.Enqueue(new RemoteSessionOperation(remoteSessionDetector, logger, sessionContext));
sessionOperations.Enqueue(new SessionIntegrityOperation(logger, registry, sessionContext)); sessionOperations.Enqueue(new SessionIntegrityOperation(logger, sentinel, sessionContext));
sessionOperations.Enqueue(new VirtualMachineOperation(vmDetector, logger, sessionContext)); sessionOperations.Enqueue(new VirtualMachineOperation(vmDetector, logger, sessionContext));
sessionOperations.Enqueue(new DisplayMonitorOperation(displayMonitor, logger, sessionContext, text)); sessionOperations.Enqueue(new DisplayMonitorOperation(displayMonitor, logger, sessionContext, text));
sessionOperations.Enqueue(new ServiceOperation(logger, runtimeHost, serviceProxy, sessionContext, THIRTY_SECONDS, userInfo)); sessionOperations.Enqueue(new ServiceOperation(logger, runtimeHost, serviceProxy, sessionContext, THIRTY_SECONDS, userInfo));

View file

@ -6,31 +6,26 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/ */
using System;
using System.Linq;
using SafeExamBrowser.Core.Contracts.OperationModel; using SafeExamBrowser.Core.Contracts.OperationModel;
using SafeExamBrowser.Core.Contracts.OperationModel.Events; using SafeExamBrowser.Core.Contracts.OperationModel.Events;
using SafeExamBrowser.I18n.Contracts; using SafeExamBrowser.I18n.Contracts;
using SafeExamBrowser.Logging.Contracts; using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.SystemComponents.Contracts.Registry; using SafeExamBrowser.Monitoring.Contracts.System;
namespace SafeExamBrowser.Runtime.Operations namespace SafeExamBrowser.Runtime.Operations
{ {
internal class SessionIntegrityOperation : SessionOperation internal class SessionIntegrityOperation : SessionOperation
{ {
private static readonly string USER_PATH = $@"{Environment.ExpandEnvironmentVariables("%LocalAppData%")}\Microsoft\Windows\Cursors\";
private static readonly string SYSTEM_PATH = $@"{Environment.ExpandEnvironmentVariables("%SystemRoot%")}\Cursors\";
private readonly ILogger logger; private readonly ILogger logger;
private readonly IRegistry registry; private readonly ISystemSentinel sentinel;
public override event ActionRequiredEventHandler ActionRequired { add { } remove { } } public override event ActionRequiredEventHandler ActionRequired { add { } remove { } }
public override event StatusChangedEventHandler StatusChanged; public override event StatusChangedEventHandler StatusChanged;
public SessionIntegrityOperation(ILogger logger, IRegistry registry, SessionContext context) : base(context) public SessionIntegrityOperation(ILogger logger, ISystemSentinel sentinel, SessionContext context) : base(context)
{ {
this.logger = logger; this.logger = logger;
this.registry = registry; this.sentinel = sentinel;
} }
public override OperationResult Perform() public override OperationResult Perform()
@ -39,8 +34,11 @@ namespace SafeExamBrowser.Runtime.Operations
StatusChanged?.Invoke(TextKey.OperationStatus_VerifySessionIntegrity); StatusChanged?.Invoke(TextKey.OperationStatus_VerifySessionIntegrity);
success &= VerifyCursorConfiguration(); success &= InitializeStickyKeys();
success &= VerifyEaseOfAccessConfiguration(); success &= VerifyCursors();
success &= VerifyEaseOfAccess();
LogResult(success);
return success ? OperationResult.Success : OperationResult.Failed; return success ? OperationResult.Success : OperationResult.Failed;
} }
@ -51,43 +49,60 @@ namespace SafeExamBrowser.Runtime.Operations
StatusChanged?.Invoke(TextKey.OperationStatus_VerifySessionIntegrity); StatusChanged?.Invoke(TextKey.OperationStatus_VerifySessionIntegrity);
success &= VerifyCursorConfiguration(); success &= InitializeStickyKeys();
success &= VerifyEaseOfAccessConfiguration(); success &= VerifyCursors();
success &= VerifyEaseOfAccess();
LogResult(success);
return success ? OperationResult.Success : OperationResult.Failed; return success ? OperationResult.Success : OperationResult.Failed;
} }
public override OperationResult Revert() public override OperationResult Revert()
{ {
FinalizeStickyKeys();
return OperationResult.Success; return OperationResult.Success;
} }
private bool VerifyCursorConfiguration() private void FinalizeStickyKeys()
{
sentinel.RevertStickyKeys();
}
private bool InitializeStickyKeys()
{
var success = true;
sentinel.RevertStickyKeys();
if (!Context.Next.Settings.Security.AllowStickyKeys)
{
success = sentinel.DisableStickyKeys();
}
return success;
}
private void LogResult(bool success)
{
if (success)
{
logger.Info("Successfully ensured session integrity.");
}
else
{
logger.Error("Failed to ensure session integrity! Aborting session initialization...");
}
}
private bool VerifyCursors()
{ {
var success = true; var success = true;
if (Context.Next.Settings.Security.VerifyCursorConfiguration) if (Context.Next.Settings.Security.VerifyCursorConfiguration)
{ {
logger.Info($"Attempting to verify cursor configuration..."); success = sentinel.VerifyCursors();
success = registry.TryGetNames(RegistryValue.UserHive.Cursors_Key, out var cursors);
if (success)
{
foreach (var cursor in cursors.Where(c => !string.IsNullOrWhiteSpace(c)))
{
success &= VerifyCursor(cursor);
}
}
if (success)
{
logger.Info("Cursor configuration successfully verified.");
}
else
{
logger.Warn("Failed to verify cursor configuration or configuration is compromised! Aborting session initialization...");
}
} }
else else
{ {
@ -97,65 +112,22 @@ namespace SafeExamBrowser.Runtime.Operations
return success; return success;
} }
private bool VerifyCursor(string cursor) private bool VerifyEaseOfAccess()
{ {
var success = true; var success = sentinel.VerifyEaseOfAccess();
success &= registry.TryRead(RegistryValue.UserHive.Cursors_Key, cursor, out var value);
success &= !(value is string) || (value is string path && (string.IsNullOrWhiteSpace(path) || IsValidCursorPath(path)));
if (!success) if (!success)
{ {
if (value != default) if (Context.Current?.Settings.Service.IgnoreService == false)
{
logger.Warn($"Configuration of cursor '{cursor}' is compromised: '{value}'!");
}
else
{
logger.Warn($"Failed to verify configuration of cursor '{cursor}'!");
}
}
return success;
}
private bool IsValidCursorPath(string path)
{
return path.StartsWith(USER_PATH, StringComparison.OrdinalIgnoreCase) || path.StartsWith(SYSTEM_PATH, StringComparison.OrdinalIgnoreCase);
}
private bool VerifyEaseOfAccessConfiguration()
{
var success = false;
logger.Info($"Attempting to verify ease of access configuration...");
if (registry.TryRead(RegistryValue.MachineHive.EaseOfAccess_Key, RegistryValue.MachineHive.EaseOfAccess_Name, out var value))
{
if (value is string s && string.IsNullOrWhiteSpace(s))
{ {
logger.Info($"Ease of access configuration is compromised but service was active in the current session.");
success = true; success = true;
logger.Info("Ease of access configuration successfully verified.");
} }
else if (!Context.Next.Settings.Service.IgnoreService) else if (!Context.Next.Settings.Service.IgnoreService)
{ {
logger.Info($"Ease of access configuration is compromised but service will be active in the next session.");
success = true; success = true;
logger.Info($"Ease of access configuration is compromised ('{value}'), but service will be active in the next session.");
} }
else if (Context.Current?.Settings.Service.IgnoreService == false)
{
success = true;
logger.Info($"Ease of access configuration is set ('{value}'), but service was active in the current session.");
}
else
{
logger.Warn($"Ease of access configuration is compromised: '{value}'! Aborting session initialization...");
}
}
else
{
success = true;
logger.Info("Ease of access configuration successfully verified (value does not exist).");
} }
return success; return success;

View file

@ -37,6 +37,11 @@ namespace SafeExamBrowser.Settings.Security
/// </summary> /// </summary>
public bool AllowReconfiguration { get; set; } public bool AllowReconfiguration { get; set; }
/// <summary>
/// Determines whether the user may use the sticky keys feature of the operating system.
/// </summary>
public bool AllowStickyKeys { get; set; }
/// <summary> /// <summary>
/// Determines whether the user is allowed to use the system clipboard, a custom clipboard or no clipboard at all. /// Determines whether the user is allowed to use the system clipboard, a custom clipboard or no clipboard at all.
/// </summary> /// </summary>

View file

@ -46,6 +46,11 @@ namespace SafeExamBrowser.WindowsApi.Contracts
/// </exception> /// </exception>
void DeregisterSystemEventHook(Guid hookId); void DeregisterSystemEventHook(Guid hookId);
/// <summary>
/// Attempts to disable the sticky keys feature of the operating system. Returns <c>true</c> if successful, otherwise <c>false</c>.
/// </summary>
bool DisableStickyKeys();
/// <summary> /// <summary>
/// Empties the clipboard. /// Empties the clipboard.
/// </summary> /// </summary>
@ -54,6 +59,11 @@ namespace SafeExamBrowser.WindowsApi.Contracts
/// </exception> /// </exception>
void EmptyClipboard(); void EmptyClipboard();
/// <summary>
/// Attempts to enable the sticky keys feature of the operating system. Returns <c>true</c> if successful, otherwise <c>false</c>.
/// </summary>
bool EnableStickyKeys();
/// <summary> /// <summary>
/// Retrieves the current position of the mouse cursor. /// Retrieves the current position of the mouse cursor.
/// </summary> /// </summary>
@ -204,5 +214,15 @@ namespace SafeExamBrowser.WindowsApi.Contracts
/// otherwise <c>false</c>. /// otherwise <c>false</c>.
/// </summary> /// </summary>
bool SuspendThread(int threadId); bool SuspendThread(int threadId);
/// <summary>
/// Attempts to retrieve the state of the sticky keys feature of the operating system. Returns <c>true</c> if successful, otherwise <c>false</c>.
/// </summary>
bool TryGetStickyKeys(out IStickyKeysState state);
/// <summary>
/// Attempts to set the state of the sticky keys feature of the operating system. Returns <c>true</c> if successful, otherwise <c>false</c>.
/// </summary>
bool TrySetStickyKeys(IStickyKeysState state);
} }
} }

View file

@ -0,0 +1,31 @@
/*
* Copyright (c) 2024 ETH Zürich, IT Services
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
namespace SafeExamBrowser.WindowsApi.Contracts
{
/// <summary>
/// Represents a state of the sticky keys feature of the operating system.
/// </summary>
public interface IStickyKeysState
{
/// <summary>
/// Indicates whether the feature is available.
/// </summary>
bool IsAvailable { get; }
/// <summary>
/// Indicates whether the feature is enabled.
/// </summary>
bool IsEnabled { get; }
/// <summary>
/// Indicates whether the hotkey for the feature is active.
/// </summary>
bool IsHotkeyActive { get; }
}
}

View file

@ -73,6 +73,7 @@
<Compile Include="INativeMethods.cs" /> <Compile Include="INativeMethods.cs" />
<Compile Include="IProcess.cs" /> <Compile Include="IProcess.cs" />
<Compile Include="IProcessFactory.cs" /> <Compile Include="IProcessFactory.cs" />
<Compile Include="IStickyKeysState.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

View file

@ -9,6 +9,7 @@
namespace SafeExamBrowser.WindowsApi.Constants namespace SafeExamBrowser.WindowsApi.Constants
{ {
/// <remarks> /// <remarks>
/// See https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-systemparametersinfow.
/// See http://www.pinvoke.net/default.aspx/Enums/SPI.html?diff=y. /// See http://www.pinvoke.net/default.aspx/Enums/SPI.html?diff=y.
/// </remarks> /// </remarks>
internal enum SPI : uint internal enum SPI : uint
@ -20,6 +21,12 @@ namespace SafeExamBrowser.WindowsApi.Constants
/// </summary> /// </summary>
GETDESKWALLPAPER = 0x73, GETDESKWALLPAPER = 0x73,
/// <summary>
/// Retrieves information about the StickyKeys accessibility feature. The pvParam parameter must point to a STICKYKEYS structure
/// that receives the information. Set the cbSize member of this structure and the uiParam parameter to sizeof(STICKYKEYS).
/// </summary>
GETSTICKYKEYS = 0x3A,
/// <summary> /// <summary>
/// Retrieves the size of the work area on the primary display monitor. The work area is the portion of the screen /// Retrieves the size of the work area on the primary display monitor. The work area is the portion of the screen
/// not obscured by the system taskbar or by application desktop toolbars. The pvParam parameter must point to a /// not obscured by the system taskbar or by application desktop toolbars. The pvParam parameter must point to a
@ -35,6 +42,12 @@ namespace SafeExamBrowser.WindowsApi.Constants
/// </summary> /// </summary>
SETDESKWALLPAPER = 0x14, SETDESKWALLPAPER = 0x14,
/// <summary>
/// Sets the parameters of the StickyKeys accessibility feature. The pvParam parameter must point to a STICKYKEYS structure
/// that contains the new parameters. Set the cbSize member of this structure and the uiParam parameter to sizeof(STICKYKEYS).
/// </summary>
SETSTICKYKEYS = 0x3B,
/// <summary> /// <summary>
/// Sets the size of the work area. The work area is the portion of the screen not obscured by the system taskbar /// Sets the size of the work area. The work area is the portion of the screen not obscured by the system taskbar
/// or by application desktop toolbars. The pvParam parameter is a pointer to a RECT structure that specifies the /// or by application desktop toolbars. The pvParam parameter is a pointer to a RECT structure that specifies the

View file

@ -0,0 +1,64 @@
/*
* Copyright (c) 2024 ETH Zürich, IT Services
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
using System;
namespace SafeExamBrowser.WindowsApi.Constants
{
/// <remarks>
/// See https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-stickykeys#members
/// </remarks>
[Flags]
internal enum StickyKeysFlags : int
{
/// <summary>
/// If this flag is set, the StickyKeys feature is on.
/// </summary>
ON = 0x1,
/// <summary>
/// If this flag is set, the StickyKeys feature is available.
/// </summary>
AVAILABLE = 0x2,
/// <summary>
/// If this flag is set, the user can turn the StickyKeys feature on and off by pressing the SHIFT key five times.
/// </summary>
HOTKEYACTIVE = 0x4,
/// <summary>
/// A confirmation dialog appears when the StickyKeys feature is activated by using the hot key.
/// </summary>
CONFIRMHOTKEY = 0x8,
/// <summary>
/// If this flag is set, the system plays a siren sound when the user turns the StickyKeys feature on or off by using the hot key.
/// </summary>
HOTKEYSOUND = 0x10,
/// <summary>
/// A visual indicator should be displayed when the StickyKeys feature is on.
/// </summary>
INDICATOR = 0x20,
/// <summary>
/// If this flag is set, the system plays a sound when the user latches, locks, or releases modifier keys using the StickyKeys feature.
/// </summary>
AUDIBLEFEEDBACK = 0x40,
/// <summary>
/// If this flag is set, pressing a modifier key twice in a row locks down the key until the user presses it a third time.
/// </summary>
TRISTATE = 0x80,
/// <summary>
/// If this flag is set, releasing a modifier key that has been pressed in combination with any other key turns off the StickyKeys feature.
/// </summary>
TWOKEYSOFF = 0x100,
}
}

View file

@ -69,7 +69,7 @@ namespace SafeExamBrowser.WindowsApi
{ {
var hook = KeyboardHooks.Values.FirstOrDefault(h => h.Id == hookId); var hook = KeyboardHooks.Values.FirstOrDefault(h => h.Id == hookId);
if (hook != null) if (hook != default)
{ {
var success = hook.Detach(); var success = hook.Detach();
@ -86,7 +86,7 @@ namespace SafeExamBrowser.WindowsApi
{ {
var hook = MouseHooks.Values.FirstOrDefault(h => h.Id == hookId); var hook = MouseHooks.Values.FirstOrDefault(h => h.Id == hookId);
if (hook != null) if (hook != default)
{ {
var success = hook.Detach(); var success = hook.Detach();
@ -103,7 +103,7 @@ namespace SafeExamBrowser.WindowsApi
{ {
var hook = SystemHooks.Values.FirstOrDefault(h => h.Id == hookId); var hook = SystemHooks.Values.FirstOrDefault(h => h.Id == hookId);
if (hook != null) if (hook != default)
{ {
var success = hook.Detach(); var success = hook.Detach();
@ -116,6 +116,22 @@ namespace SafeExamBrowser.WindowsApi
} }
} }
public bool DisableStickyKeys()
{
var success = TryGetStickyKeys(out var state);
if (success)
{
(state as StickyKeysState).Flags &= ~StickyKeysFlags.AVAILABLE;
(state as StickyKeysState).Flags &= ~StickyKeysFlags.HOTKEYACTIVE;
(state as StickyKeysState).Flags &= ~StickyKeysFlags.ON;
success = TrySetStickyKeys(state);
}
return success;
}
public void EmptyClipboard() public void EmptyClipboard()
{ {
var success = true; var success = true;
@ -130,6 +146,22 @@ namespace SafeExamBrowser.WindowsApi
} }
} }
public bool EnableStickyKeys()
{
var success = TryGetStickyKeys(out var state);
if (success)
{
(state as StickyKeysState).Flags |= StickyKeysFlags.AVAILABLE;
(state as StickyKeysState).Flags |= StickyKeysFlags.HOTKEYACTIVE;
(state as StickyKeysState).Flags |= StickyKeysFlags.ON;
success = TrySetStickyKeys(state);
}
return success;
}
public (int x, int y) GetCursorPosition() public (int x, int y) GetCursorPosition()
{ {
var position = new POINT(); var position = new POINT();
@ -172,7 +204,7 @@ namespace SafeExamBrowser.WindowsApi
public IntPtr GetShellWindowHandle() public IntPtr GetShellWindowHandle()
{ {
return User32.FindWindow("Shell_TrayWnd", null); return User32.FindWindow("Shell_TrayWnd", default);
} }
public uint GetShellProcessId() public uint GetShellProcessId()
@ -187,7 +219,7 @@ namespace SafeExamBrowser.WindowsApi
{ {
const int MAX_PATH = 260; const int MAX_PATH = 260;
var buffer = new String('\0', MAX_PATH); var buffer = new String('\0', MAX_PATH);
var success = User32.SystemParametersInfo(SPI.GETDESKWALLPAPER, buffer.Length, buffer, 0); var success = User32.SystemParametersInfo(SPI.GETDESKWALLPAPER, buffer.Length, buffer, SPIF.NONE);
if (!success) if (!success)
{ {
@ -462,5 +494,48 @@ namespace SafeExamBrowser.WindowsApi
Kernel32.CloseHandle(handle); Kernel32.CloseHandle(handle);
} }
} }
public bool TryGetStickyKeys(out IStickyKeysState state)
{
var stickyKeys = new STICKYKEYS();
state = default;
stickyKeys.cbSize = Marshal.SizeOf(typeof(STICKYKEYS));
var success = User32.SystemParametersInfo(SPI.GETSTICKYKEYS, stickyKeys.cbSize, ref stickyKeys, SPIF.NONE);
if (success)
{
state = new StickyKeysState
{
Flags = stickyKeys.dwFlags,
IsAvailable = stickyKeys.dwFlags.HasFlag(StickyKeysFlags.AVAILABLE),
IsEnabled = stickyKeys.dwFlags.HasFlag(StickyKeysFlags.ON),
IsHotkeyActive = stickyKeys.dwFlags.HasFlag(StickyKeysFlags.HOTKEYACTIVE)
};
}
return success;
}
public bool TrySetStickyKeys(IStickyKeysState state)
{
var success = false;
var stickyKeys = new STICKYKEYS();
if (state is StickyKeysState stateWithFlags)
{
stickyKeys.cbSize = Marshal.SizeOf(typeof(STICKYKEYS));
stickyKeys.dwFlags = stateWithFlags.Flags;
success = User32.SystemParametersInfo(SPI.SETSTICKYKEYS, stickyKeys.cbSize, ref stickyKeys, SPIF.NONE);
}
else
{
success = state.IsEnabled ? EnableStickyKeys() : DisableStickyKeys();
}
return success;
}
} }
} }

View file

@ -57,6 +57,7 @@
<ItemGroup> <ItemGroup>
<Compile Include="Constants\Constant.cs" /> <Compile Include="Constants\Constant.cs" />
<Compile Include="Constants\HookType.cs" /> <Compile Include="Constants\HookType.cs" />
<Compile Include="Constants\StickyKeysFlags.cs" />
<Compile Include="Constants\ThreadAccess.cs" /> <Compile Include="Constants\ThreadAccess.cs" />
<Compile Include="Constants\VirtualKeyCode.cs" /> <Compile Include="Constants\VirtualKeyCode.cs" />
<Compile Include="Delegates\EnumDesktopDelegate.cs" /> <Compile Include="Delegates\EnumDesktopDelegate.cs" />
@ -90,6 +91,8 @@
<Compile Include="Types\PROCESS_INFORMATION.cs" /> <Compile Include="Types\PROCESS_INFORMATION.cs" />
<Compile Include="Types\RECT.cs" /> <Compile Include="Types\RECT.cs" />
<Compile Include="Types\STARTUPINFO.cs" /> <Compile Include="Types\STARTUPINFO.cs" />
<Compile Include="Types\STICKYKEYS.cs" />
<Compile Include="Types\StickyKeysState.cs" />
<Compile Include="Types\Window.cs" /> <Compile Include="Types\Window.cs" />
<Compile Include="Types\WINDOWPLACEMENT.cs" /> <Compile Include="Types\WINDOWPLACEMENT.cs" />
<Compile Include="User32.cs" /> <Compile Include="User32.cs" />

View file

@ -0,0 +1,23 @@
/*
* Copyright (c) 2024 ETH Zürich, IT Services
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
using System.Runtime.InteropServices;
using SafeExamBrowser.WindowsApi.Constants;
namespace SafeExamBrowser.WindowsApi.Types
{
/// <remarks>
/// See https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-stickykeys.
/// </remarks>
[StructLayout(LayoutKind.Sequential)]
internal struct STICKYKEYS
{
internal int cbSize;
internal StickyKeysFlags dwFlags;
}
}

View file

@ -0,0 +1,22 @@
/*
* Copyright (c) 2024 ETH Zürich, IT Services
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
using SafeExamBrowser.WindowsApi.Constants;
using SafeExamBrowser.WindowsApi.Contracts;
namespace SafeExamBrowser.WindowsApi.Types
{
public class StickyKeysState : IStickyKeysState
{
internal StickyKeysFlags Flags { get; set; }
public bool IsAvailable { get; internal set; }
public bool IsEnabled { get; internal set; }
public bool IsHotkeyActive { get; internal set; }
}
}

View file

@ -107,6 +107,9 @@ namespace SafeExamBrowser.WindowsApi
[DllImport("user32.dll", SetLastError = true)] [DllImport("user32.dll", SetLastError = true)]
internal static extern bool SystemParametersInfo(SPI uiAction, uint uiParam, ref RECT pvParam, SPIF fWinIni); internal static extern bool SystemParametersInfo(SPI uiAction, uint uiParam, ref RECT pvParam, SPIF fWinIni);
[DllImport("user32.dll", SetLastError = true)]
internal static extern bool SystemParametersInfo(SPI uiAction, int uiParam, ref STICKYKEYS pvParam, SPIF fWinIni);
[DllImport("user32.dll", SetLastError = true)] [DllImport("user32.dll", SetLastError = true)]
internal static extern bool SystemParametersInfo(SPI uiAction, int uiParam, string pvParam, SPIF fWinIni); internal static extern bool SystemParametersInfo(SPI uiAction, int uiParam, string pvParam, SPIF fWinIni);

View file

@ -385,6 +385,7 @@ namespace SebWindowsConfig
public const String KeyEnableCursorVerification = "enableCursorVerification"; public const String KeyEnableCursorVerification = "enableCursorVerification";
public const String KeyEnableSessionVerification = "enableSessionVerification"; public const String KeyEnableSessionVerification = "enableSessionVerification";
public const String KeyLockScreenBackgroundColor = "lockScreenBackgroundColor"; public const String KeyLockScreenBackgroundColor = "lockScreenBackgroundColor";
public const String KeyAllowStickyKeys = "allowStickyKeys";
// Group "macOS specific settings" // Group "macOS specific settings"
public const String KeyMinMacOSVersion = "minMacOSVersion"; public const String KeyMinMacOSVersion = "minMacOSVersion";
@ -877,7 +878,8 @@ namespace SebWindowsConfig
"obs32.exe", "obs32.exe",
"spotify.exe", "spotify.exe",
"Microsoft.Media.Player.exe", "Microsoft.Media.Player.exe",
"vlc.exe" "vlc.exe",
"sethc.exe"
}; };
// Default settings for group "Network - Filter" // Default settings for group "Network - Filter"
@ -1027,6 +1029,7 @@ namespace SebWindowsConfig
SEBSettings.settingsDefault.Add(SEBSettings.KeyEnableCursorVerification, true); SEBSettings.settingsDefault.Add(SEBSettings.KeyEnableCursorVerification, true);
SEBSettings.settingsDefault.Add(SEBSettings.KeyEnableSessionVerification, true); SEBSettings.settingsDefault.Add(SEBSettings.KeyEnableSessionVerification, true);
SEBSettings.settingsDefault.Add(SEBSettings.KeyLockScreenBackgroundColor, "#ff0000"); SEBSettings.settingsDefault.Add(SEBSettings.KeyLockScreenBackgroundColor, "#ff0000");
SEBSettings.settingsDefault.Add(SEBSettings.KeyAllowStickyKeys, false);
// Default selected index and string in combo box for minMacOSVersion // Default selected index and string in combo box for minMacOSVersion
SEBSettings.intArrayDefault[SEBSettings.ValMinMacOSVersion] = 4; SEBSettings.intArrayDefault[SEBSettings.ValMinMacOSVersion] = 4;

View file

@ -30,8 +30,8 @@ namespace SebWindowsConfig
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SebWindowsConfigForm)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SebWindowsConfigForm));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
this.openFileDialogSebConfigFile = new System.Windows.Forms.OpenFileDialog(); this.openFileDialogSebConfigFile = new System.Windows.Forms.OpenFileDialog();
this.saveFileDialogSebConfigFile = new System.Windows.Forms.SaveFileDialog(); this.saveFileDialogSebConfigFile = new System.Windows.Forms.SaveFileDialog();
this.imageListTabIcons = new System.Windows.Forms.ImageList(this.components); this.imageListTabIcons = new System.Windows.Forms.ImageList(this.components);
@ -360,6 +360,10 @@ namespace SebWindowsConfig
this.labelNewWindowPosition = new System.Windows.Forms.Label(); this.labelNewWindowPosition = new System.Windows.Forms.Label();
this.listBoxNewBrowserWindowPositioning = new System.Windows.Forms.ListBox(); this.listBoxNewBrowserWindowPositioning = new System.Windows.Forms.ListBox();
this.tabPageAppearance = new System.Windows.Forms.TabPage(); this.tabPageAppearance = new System.Windows.Forms.TabPage();
this.groupBox22 = new System.Windows.Forms.GroupBox();
this.lockscreenColorButton = new System.Windows.Forms.Button();
this.lockscreenColorTextbox = new System.Windows.Forms.TextBox();
this.label34 = new System.Windows.Forms.Label();
this.spellCheckerGroupBox = new System.Windows.Forms.GroupBox(); this.spellCheckerGroupBox = new System.Windows.Forms.GroupBox();
this.dictionariesDescriptionLabel = new System.Windows.Forms.Label(); this.dictionariesDescriptionLabel = new System.Windows.Forms.Label();
this.spellCheckerDescriptionLabel = new System.Windows.Forms.Label(); this.spellCheckerDescriptionLabel = new System.Windows.Forms.Label();
@ -481,10 +485,7 @@ namespace SebWindowsConfig
this.editDuplicateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.editDuplicateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.configureClientToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.configureClientToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.applyAndStartSEBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.applyAndStartSEBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.groupBox22 = new System.Windows.Forms.GroupBox(); this.checkBoxAllowStickyKeys = new System.Windows.Forms.CheckBox();
this.lockscreenColorButton = new System.Windows.Forms.Button();
this.lockscreenColorTextbox = new System.Windows.Forms.TextBox();
this.label34 = new System.Windows.Forms.Label();
this.tabPageHookedKeys.SuspendLayout(); this.tabPageHookedKeys.SuspendLayout();
this.groupBoxFunctionKeys.SuspendLayout(); this.groupBoxFunctionKeys.SuspendLayout();
this.groupBoxSpecialKeys.SuspendLayout(); this.groupBoxSpecialKeys.SuspendLayout();
@ -530,6 +531,7 @@ namespace SebWindowsConfig
this.groupBox11.SuspendLayout(); this.groupBox11.SuspendLayout();
this.groupBoxNewBrowserWindow.SuspendLayout(); this.groupBoxNewBrowserWindow.SuspendLayout();
this.tabPageAppearance.SuspendLayout(); this.tabPageAppearance.SuspendLayout();
this.groupBox22.SuspendLayout();
this.spellCheckerGroupBox.SuspendLayout(); this.spellCheckerGroupBox.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.spellCheckerDataGridView)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.spellCheckerDataGridView)).BeginInit();
this.groupBox16.SuspendLayout(); this.groupBox16.SuspendLayout();
@ -545,7 +547,6 @@ namespace SebWindowsConfig
this.groupBoxExitSequence.SuspendLayout(); this.groupBoxExitSequence.SuspendLayout();
this.tabControlSebWindowsConfig.SuspendLayout(); this.tabControlSebWindowsConfig.SuspendLayout();
this.menuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout();
this.groupBox22.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// openFileDialogSebConfigFile // openFileDialogSebConfigFile
@ -1138,6 +1139,7 @@ namespace SebWindowsConfig
// //
// tabPageSecurity // tabPageSecurity
// //
this.tabPageSecurity.Controls.Add(this.checkBoxAllowStickyKeys);
this.tabPageSecurity.Controls.Add(this.checkBoxEnableSessionVerification); this.tabPageSecurity.Controls.Add(this.checkBoxEnableSessionVerification);
this.tabPageSecurity.Controls.Add(this.checkBoxEnableCursorVerification); this.tabPageSecurity.Controls.Add(this.checkBoxEnableCursorVerification);
this.tabPageSecurity.Controls.Add(this.groupBox21); this.tabPageSecurity.Controls.Add(this.groupBox21);
@ -1167,7 +1169,7 @@ namespace SebWindowsConfig
// checkBoxEnableSessionVerification // checkBoxEnableSessionVerification
// //
this.checkBoxEnableSessionVerification.AutoSize = true; this.checkBoxEnableSessionVerification.AutoSize = true;
this.checkBoxEnableSessionVerification.Location = new System.Drawing.Point(230, 336); this.checkBoxEnableSessionVerification.Location = new System.Drawing.Point(919, 278);
this.checkBoxEnableSessionVerification.Name = "checkBoxEnableSessionVerification"; this.checkBoxEnableSessionVerification.Name = "checkBoxEnableSessionVerification";
this.checkBoxEnableSessionVerification.Size = new System.Drawing.Size(179, 17); this.checkBoxEnableSessionVerification.Size = new System.Drawing.Size(179, 17);
this.checkBoxEnableSessionVerification.TabIndex = 112; this.checkBoxEnableSessionVerification.TabIndex = 112;
@ -1178,7 +1180,7 @@ namespace SebWindowsConfig
// checkBoxEnableCursorVerification // checkBoxEnableCursorVerification
// //
this.checkBoxEnableCursorVerification.AutoSize = true; this.checkBoxEnableCursorVerification.AutoSize = true;
this.checkBoxEnableCursorVerification.Location = new System.Drawing.Point(230, 317); this.checkBoxEnableCursorVerification.Location = new System.Drawing.Point(919, 259);
this.checkBoxEnableCursorVerification.Name = "checkBoxEnableCursorVerification"; this.checkBoxEnableCursorVerification.Name = "checkBoxEnableCursorVerification";
this.checkBoxEnableCursorVerification.Size = new System.Drawing.Size(173, 17); this.checkBoxEnableCursorVerification.Size = new System.Drawing.Size(173, 17);
this.checkBoxEnableCursorVerification.TabIndex = 111; this.checkBoxEnableCursorVerification.TabIndex = 111;
@ -2069,8 +2071,8 @@ namespace SebWindowsConfig
// //
// Type // Type
// //
dataGridViewCellStyle11.BackColor = System.Drawing.Color.Silver; dataGridViewCellStyle3.BackColor = System.Drawing.Color.Silver;
this.Type.DefaultCellStyle = dataGridViewCellStyle11; this.Type.DefaultCellStyle = dataGridViewCellStyle3;
this.Type.HeaderText = "Type"; this.Type.HeaderText = "Type";
this.Type.Name = "Type"; this.Type.Name = "Type";
this.Type.ReadOnly = true; this.Type.ReadOnly = true;
@ -4735,6 +4737,49 @@ namespace SebWindowsConfig
this.tabPageAppearance.Text = "User Interface"; this.tabPageAppearance.Text = "User Interface";
this.tabPageAppearance.UseVisualStyleBackColor = true; this.tabPageAppearance.UseVisualStyleBackColor = true;
// //
// groupBox22
//
this.groupBox22.Controls.Add(this.lockscreenColorButton);
this.groupBox22.Controls.Add(this.lockscreenColorTextbox);
this.groupBox22.Controls.Add(this.label34);
this.groupBox22.Location = new System.Drawing.Point(529, 176);
this.groupBox22.Name = "groupBox22";
this.groupBox22.Size = new System.Drawing.Size(689, 59);
this.groupBox22.TabIndex = 88;
this.groupBox22.TabStop = false;
this.groupBox22.Text = "Lock Screen";
//
// lockscreenColorButton
//
this.lockscreenColorButton.Location = new System.Drawing.Point(226, 22);
this.lockscreenColorButton.Name = "lockscreenColorButton";
this.lockscreenColorButton.Size = new System.Drawing.Size(75, 23);
this.lockscreenColorButton.TabIndex = 118;
this.lockscreenColorButton.Text = "Choose";
this.lockscreenColorButton.UseVisualStyleBackColor = true;
this.lockscreenColorButton.Click += new System.EventHandler(this.lockscreenColorButton_Click);
//
// lockscreenColorTextbox
//
this.lockscreenColorTextbox.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lockscreenColorTextbox.ForeColor = System.Drawing.Color.White;
this.lockscreenColorTextbox.Location = new System.Drawing.Point(102, 23);
this.lockscreenColorTextbox.MaxLength = 7;
this.lockscreenColorTextbox.Name = "lockscreenColorTextbox";
this.lockscreenColorTextbox.Size = new System.Drawing.Size(111, 20);
this.lockscreenColorTextbox.TabIndex = 117;
this.lockscreenColorTextbox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.lockscreenColorTextbox.TextChanged += new System.EventHandler(this.lockscreenColorTextbox_TextChanged);
//
// label34
//
this.label34.AutoSize = true;
this.label34.Location = new System.Drawing.Point(6, 26);
this.label34.Name = "label34";
this.label34.Size = new System.Drawing.Size(92, 13);
this.label34.TabIndex = 116;
this.label34.Text = "Background Color";
//
// spellCheckerGroupBox // spellCheckerGroupBox
// //
this.spellCheckerGroupBox.Controls.Add(this.dictionariesDescriptionLabel); this.spellCheckerGroupBox.Controls.Add(this.dictionariesDescriptionLabel);
@ -4854,8 +4899,8 @@ namespace SebWindowsConfig
// spellCheckerDictionaryFilesColumn // spellCheckerDictionaryFilesColumn
// //
this.spellCheckerDictionaryFilesColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.spellCheckerDictionaryFilesColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.True; dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.spellCheckerDictionaryFilesColumn.DefaultCellStyle = dataGridViewCellStyle12; this.spellCheckerDictionaryFilesColumn.DefaultCellStyle = dataGridViewCellStyle4;
this.spellCheckerDictionaryFilesColumn.HeaderText = "Files"; this.spellCheckerDictionaryFilesColumn.HeaderText = "Files";
this.spellCheckerDictionaryFilesColumn.Name = "spellCheckerDictionaryFilesColumn"; this.spellCheckerDictionaryFilesColumn.Name = "spellCheckerDictionaryFilesColumn";
this.spellCheckerDictionaryFilesColumn.ReadOnly = true; this.spellCheckerDictionaryFilesColumn.ReadOnly = true;
@ -6253,48 +6298,18 @@ namespace SebWindowsConfig
this.applyAndStartSEBToolStripMenuItem.Visible = false; this.applyAndStartSEBToolStripMenuItem.Visible = false;
this.applyAndStartSEBToolStripMenuItem.Click += new System.EventHandler(this.applyAndStartSEBToolStripMenuItem_Click); this.applyAndStartSEBToolStripMenuItem.Click += new System.EventHandler(this.applyAndStartSEBToolStripMenuItem_Click);
// //
// groupBox22 // checkBoxAllowStickyKeys
// //
this.groupBox22.Controls.Add(this.lockscreenColorButton); this.checkBoxAllowStickyKeys.AutoSize = true;
this.groupBox22.Controls.Add(this.lockscreenColorTextbox); this.checkBoxAllowStickyKeys.Location = new System.Drawing.Point(230, 321);
this.groupBox22.Controls.Add(this.label34); this.checkBoxAllowStickyKeys.Name = "checkBoxAllowStickyKeys";
this.groupBox22.Location = new System.Drawing.Point(529, 176); this.checkBoxAllowStickyKeys.Size = new System.Drawing.Size(166, 17);
this.groupBox22.Name = "groupBox22"; this.checkBoxAllowStickyKeys.TabIndex = 113;
this.groupBox22.Size = new System.Drawing.Size(689, 59); this.checkBoxAllowStickyKeys.Text = "Allow to use sticky keys (Win)";
this.groupBox22.TabIndex = 88; this.toolTip1.SetToolTip(this.checkBoxAllowStickyKeys, "Indicates whether the sticky keys accessibility feature of the operating system m" +
this.groupBox22.TabStop = false; "ay be used while SEB is running.");
this.groupBox22.Text = "Lock Screen"; this.checkBoxAllowStickyKeys.UseVisualStyleBackColor = true;
// this.checkBoxAllowStickyKeys.CheckedChanged += new System.EventHandler(this.checkBoxAllowStickyKeys_CheckedChanged);
// lockscreenColorButton
//
this.lockscreenColorButton.Location = new System.Drawing.Point(226, 22);
this.lockscreenColorButton.Name = "lockscreenColorButton";
this.lockscreenColorButton.Size = new System.Drawing.Size(75, 23);
this.lockscreenColorButton.TabIndex = 118;
this.lockscreenColorButton.Text = "Choose";
this.lockscreenColorButton.UseVisualStyleBackColor = true;
this.lockscreenColorButton.Click += new System.EventHandler(this.lockscreenColorButton_Click);
//
// lockscreenColorTextbox
//
this.lockscreenColorTextbox.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lockscreenColorTextbox.ForeColor = System.Drawing.Color.White;
this.lockscreenColorTextbox.Location = new System.Drawing.Point(102, 23);
this.lockscreenColorTextbox.MaxLength = 7;
this.lockscreenColorTextbox.Name = "lockscreenColorTextbox";
this.lockscreenColorTextbox.Size = new System.Drawing.Size(111, 20);
this.lockscreenColorTextbox.TabIndex = 117;
this.lockscreenColorTextbox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.lockscreenColorTextbox.TextChanged += new System.EventHandler(this.lockscreenColorTextbox_TextChanged);
//
// label34
//
this.label34.AutoSize = true;
this.label34.Location = new System.Drawing.Point(6, 26);
this.label34.Name = "label34";
this.label34.Size = new System.Drawing.Size(92, 13);
this.label34.TabIndex = 116;
this.label34.Text = "Background Color";
// //
// SebWindowsConfigForm // SebWindowsConfigForm
// //
@ -6398,6 +6413,8 @@ namespace SebWindowsConfig
this.groupBoxNewBrowserWindow.ResumeLayout(false); this.groupBoxNewBrowserWindow.ResumeLayout(false);
this.groupBoxNewBrowserWindow.PerformLayout(); this.groupBoxNewBrowserWindow.PerformLayout();
this.tabPageAppearance.ResumeLayout(false); this.tabPageAppearance.ResumeLayout(false);
this.groupBox22.ResumeLayout(false);
this.groupBox22.PerformLayout();
this.spellCheckerGroupBox.ResumeLayout(false); this.spellCheckerGroupBox.ResumeLayout(false);
this.spellCheckerGroupBox.PerformLayout(); this.spellCheckerGroupBox.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.spellCheckerDataGridView)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.spellCheckerDataGridView)).EndInit();
@ -6425,8 +6442,6 @@ namespace SebWindowsConfig
this.tabControlSebWindowsConfig.ResumeLayout(false); this.tabControlSebWindowsConfig.ResumeLayout(false);
this.menuStrip1.ResumeLayout(false); this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout(); this.menuStrip1.PerformLayout();
this.groupBox22.ResumeLayout(false);
this.groupBox22.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -6888,6 +6903,7 @@ namespace SebWindowsConfig
private System.Windows.Forms.Button lockscreenColorButton; private System.Windows.Forms.Button lockscreenColorButton;
private System.Windows.Forms.TextBox lockscreenColorTextbox; private System.Windows.Forms.TextBox lockscreenColorTextbox;
private System.Windows.Forms.Label label34; private System.Windows.Forms.Label label34;
private System.Windows.Forms.CheckBox checkBoxAllowStickyKeys;
} }
} }

View file

@ -818,6 +818,7 @@ namespace SebWindowsConfig
checkBoxEnableCursorVerification.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableCursorVerification]; checkBoxEnableCursorVerification.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableCursorVerification];
checkBoxEnableSessionVerification.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableSessionVerification]; checkBoxEnableSessionVerification.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableSessionVerification];
lockscreenColorTextbox.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyLockScreenBackgroundColor]; lockscreenColorTextbox.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyLockScreenBackgroundColor];
checkBoxAllowStickyKeys.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowStickyKeys];
if (String.IsNullOrEmpty(textBoxLogDirectoryWin.Text)) if (String.IsNullOrEmpty(textBoxLogDirectoryWin.Text))
{ {
@ -4835,5 +4836,10 @@ namespace SebWindowsConfig
SEBSettings.settingsCurrent[SEBSettings.KeyLockScreenBackgroundColor] = raw; SEBSettings.settingsCurrent[SEBSettings.KeyLockScreenBackgroundColor] = raw;
} }
} }
private void checkBoxAllowStickyKeys_CheckedChanged(object sender, EventArgs e)
{
SEBSettings.settingsCurrent[SEBSettings.KeyAllowStickyKeys] = checkBoxAllowStickyKeys.Checked;
}
} }
} }

View file

@ -130,8 +130,8 @@
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC6
1QAAAk1TRnQBSQFMAgEBDAEAAYABDAGAAQwBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA 1QAAAk1TRnQBSQFMAgEBDAEAAYgBDAGIAQwBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
AwABgAMAAQEBAAEgBwABAf8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A AwABgAMAAQEBAAEgBwABAf8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A0QABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A0QABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO
@ -566,484 +566,483 @@
AbIBqAH/AcsBugGxAf8B0QHCAboB/wHoAeEB3QH/BAAB+QH3AfYB/wHcAdEBywH/AdYByQHBAf8B3QHS AbIBqAH/AcsBugGxAf8B0QHCAboB/wHoAeEB3QH/BAAB+QH3AfYB/wHcAdEBywH/AdYByQHBAf8B3QHS
AcwB/wHXAcoBwwH/AdIBxAG9Af8B0AHCAbsB/wHeAdUB0QH/A/4B/wHlAd4B2wH/AbcBpAGfAf8BmAGD AcwB/wHXAcoBwwH/AdIBxAG9Af8B0AHCAbsB/wHeAdUB0QH/A/4B/wHlAd4B2wH/AbcBpAGfAf8BmAGD
AQAB/wMzAVEIAANQAZ0BAAG9AQAB/wEAAcEBAAH/AQABuQEAAf8BAAG3AQAB/wEAAbEBAAH/AQABqwEA AQAB/wMzAVEIAANQAZ0BAAG9AQAB/wEAAcEBAAH/AQABuQEAAf8BAAG3AQAB/wEAAbEBAAH/AQABqwEA
Af8BAAGmAQAB/wEAAaABAAH/AQABmgEAAf8BAAGUAQAB/wEAAY4BAAH/AQABiAEAAf8BAAGCAQAB/wFk Af8BAAGmAQAB/wEAAaABAAH/AQABmgEAAf8BAAGUAQAB/wEAAY4BAAH/AQABiAEAAf8BAAGCAQAB/wNl
AWUBZAHxAwYBBwMMAQ8DSgGJA0QBeQNEAXkDRAF4A10B0QEAAb4BAAH/AQABtgEAAf8BAAGxAQAB/wEA AfEDBgEHAwwBDwNKAYkDRAF5A0QBeQNEAXgDXQHRAQABvgEAAf8BAAG2AQAB/wEAAbEBAAH/AQABrgEA
Aa4BAAH/AQABqgEAAf8DWAG3A0QBeANEAXkDRAF5A0MBdhAAAyUBNgPqAf8EAAPhAf8D4AH/A+cB/wPi Af8BAAGqAQAB/wNYAbcDRAF4A0QBeQNEAXkDQwF2EAADJQE2A+oB/wQAA+EB/wPgAf8D5wH/A+IB/wPk
Af8D5AH/A+YB/wPgAf8D5gH/A+EB/wPfAf8B4QHgAeEB/wPjAf8D4AH/A94B/wPlAf8D4AH/A9wB/wPd Af8D5gH/A+AB/wPmAf8D4QH/A98B/wHhAeAB4QH/A+MB/wPgAf8D3gH/A+UB/wPgAf8D3AH/A90B/wPm
Af8D5gH/BAADPgFrGAADKQE+A2oB+QPgAf8D9wH/AfQB9QH0Af8D9AH/AfMC9AH/AfMC9AH/AfMC9AH/ Af8EAAM+AWsYAAMpAT4DagH5A+AB/wP3Af8B9AH1AfQB/wP0Af8B8wL0Af8B8wL0Af8B8wL0Af8C8wH0
AvMB9AH/AfUB9AHyAf8B9wH1AfIB/wLzAfIB/wPuAf8B6AHqAesB/wHoAukB/wHcAtgB/wHtAt4B/wHi Af8B9QH0AfIB/wH3AfUB8gH/AvMB8gH/A+4B/wHoAeoB6wH/AegC6QH/AdwC2AH/Ae0C3gH/AeIBzQHK
Ac0BygH/AwAB/wMAAf8CAAGdAf8CAAGcAf8BuAG5AcsB/wNqAfkDIgExGAADRQF8AZICAAH/AaIBjAGH Af8DAAH/AwAB/wIAAZ0B/wIAAZwB/wG4AbkBywH/A2oB+QMiATEYAANFAXwBkgIAAf8BogGMAYcB/wGm
Af8BpgGQAYsB/wGqAZQBjQH/AckBuQGzAf8BuQGjAZkB/wHBAa4BpQH/AdcBywHEAf8BzAG7AbMB/wHR AZABiwH/AaoBlAGNAf8ByQG5AbMB/wG5AaMBmQH/AcEBrgGlAf8B1wHLAcQB/wHMAbsBswH/AdEBwwG7
AcMBuwH/AdIBxAG8Af8BzAG9AbQB/wHUAccBwAH/AfMB8AHuAf8B5gHeAdoB/wG9AagBngH/AcABrQGj Af8B0gHEAbwB/wHMAb0BtAH/AdQBxwHAAf8B8wHwAe4B/wHmAd4B2gH/Ab0BqAGeAf8BwAGtAaMB/wHJ
Af8ByQG5AbAB/wG4AaEBlgH/AbgBoQGXAf8BtwGiAZcB/wG+AawBpAH/AeMB2wHZAf8BxgG4AbQB/wG/ AbkBsAH/AbgBoQGWAf8BuAGhAZcB/wG3AaIBlwH/Ab4BrAGkAf8B4wHbAdkB/wHGAbgBtAH/Ab8BrgGp
Aa4BqQH/AaEBjgGKAf8DRgF+CAADQQFyA0IBdQNCAXQDQgF0A1MBqgEAAbUBAAH/AQABsAEAAf8BAAGp Af8BoQGOAYoB/wNGAX4IAANBAXIDQgF1A0IBdANCAXQDUwGqAQABtQEAAf8BAAGwAQAB/wEAAakBAAH/
AQAB/wEAAaQBAAH/AQABogEAAf8DYAHbA0IBdANCAXQDQgF0A0kBhQMLAQ4DBgEHA14B8AEAAcsBgwH/ AQABpAEAAf8BAAGiAQAB/wNgAdsDQgF0A0IBdANCAXQDSQGFAwsBDgMGAQcDXgHwAQABywGDAf8BAAHF
AQABxQEAAf8BAAHEAQAB/wEAAcIBAAH/AQABuwEAAf8BAAG4AQAB/wEAAbQBAAH/AQABrwEAAf8BAAGr AQAB/wEAAcQBAAH/AQABwgEAAf8BAAG7AQAB/wEAAbgBAAH/AQABtAEAAf8BAAGvAQAB/wEAAasBAAH/
AQAB/wEAAagBAAH/AQABoQEAAf8BAAGdAQAB/wEAAZIBAAH/AU8BUAFPAZsQAAMlATYD6QH/BAAD9gH/ AQABqAEAAf8BAAGhAQAB/wEAAZ0BAAH/AQABkgEAAf8BTwFQAU8BmxAAAyUBNgPpAf8EAAP2Af8D9gH/
A/YB/wP1Af8D9QH/A/UB/wP0Af8D9AH/A/MB/wPzAf8D8wH/A/IB/wPyAf8B8gHxAfIB/wPxAf8D8QH/ A/UB/wP1Af8D9QH/A/QB/wP0Af8D8wH/A/MB/wPzAf8D8gH/A/IB/wHyAfEB8gH/A/EB/wPxAf8ChgH2
AoYB9gH/AgAB9gH/AesB6gHrAf8B7QHsAe0B/wP+Af8DPgFrFAADBQEGA1gBvAPqAf8D4wH/A/cB/wHz Af8CAAH2Af8B6wHqAesB/wHtAewB7QH/A/4B/wM+AWsUAAMFAQYDWAG8A+oB/wPjAf8D9wH/AfMC9AH/
AvQB/wLzAfQB/wLzAfQB/wPzAf8B8gLzAf8B8gLzAf8D8gH/AfAC8QH/Ae4C7wH/AesB7AHtAf8B6QHq AvMB9AH/AvMB9AH/A/MB/wHyAvMB/wHyAvMB/wPyAf8B8ALxAf8B7gLvAf8B6wHsAe0B/wHpAeoB6wH/
AesB/wHnAukB/wHlAugB/wHfAeAB2gH/AcIBuwHgAf8CAAHEAf8CAAGdAf8CAAGTAf8CAAGnAf8B4gHl AecC6QH/AeUC6AH/Ad8B4AHaAf8BwgG7AeAB/wIAAcQB/wIAAZ0B/wIAAZMB/wIAAacB/wHiAeUB4gH/
AeIB/wNfAc4DBQEGGAADTgGYAYwCAAH/AZoBhAEAAf8BoAGJAYQB/wGkAYwBhQH/AcoBuwG1Af8ByAG3 A18BzgMFAQYYAANOAZgBjAIAAf8BmgGEAQAB/wGgAYkBhAH/AaQBjAGFAf8BygG7AbUB/wHIAbcBsAH/
AbAB/wHuAekB5wH/AeUB3QHZAf8BwwGwAacB/wG6AaQBmwH/AbYBnwGUAf8BtQGeAZMB/wG2AZ8BlQH/ Ae4B6QHnAf8B5QHdAdkB/wHDAbABpwH/AboBpAGbAf8BtgGfAZQB/wG1AZ4BkwH/AbYBnwGVAf8BvQGo
Ab0BqAGfAf8BzQG9AbYB/wGzAZsBkQH/AcYBtAGsAf8BuQGjAZoB/wG0AZ0BkwH/AbQBnQGTAf8BuQGj AZ8B/wHNAb0BtgH/AbMBmwGRAf8BxgG0AawB/wG5AaMBmgH/AbQBnQGTAf8BtAGdAZMB/wG5AaMBmAH/
AZgB/wGvAZgBjgH/Ab4BrQGoAf8BoAGKAYQB/wGhAYoBhAH/AZQBgAEAAf8DTwGZGAADLgFHAQABtAEA Aa8BmAGOAf8BvgGtAagB/wGgAYoBhAH/AaEBigGEAf8BlAGAAQAB/wNPAZkYAAMuAUcBAAG0AQAB/wEA
Af8BAAG0AQAB/wEAAawBAAH/AQABpwEAAf8BAAGnAQAB/wFVAVcBVQGxGAADGQEiAQABugEAAf8BAAHM AbQBAAH/AQABrAEAAf8BAAGnAQAB/wEAAacBAAH/AVUBVwFVAbEYAAMZASIBAAG6AQAB/wEAAcwBgwH/
AYMB/wEAAcIBAAH/AQABvwEAAf8BAAG8AQAB/wEAAboBAAH/AQABtgEAAf8BAAGyAQAB/wEAAa0BAAH/ AQABwgEAAf8BAAG/AQAB/wEAAbwBAAH/AQABugEAAf8BAAG2AQAB/wEAAbIBAAH/AQABrQEAAf8BAAGp
AQABqQEAAf8BAAGkAQAB/wEAAaQBAAH/AV4BYQFeAeIUAAMlATYD6AH/BAAD1QH/A9AB/wPiAf8D7QH/ AQAB/wEAAaQBAAH/AQABpAEAAf8BXgFhAV4B4hQAAyUBNgPoAf8EAAPVAf8D0AH/A+IB/wPtAf8D8QH/
A/EB/wPvAf8D7gH/A+8B/wPsAf8D7gH/A+8B/wPvAf8D7QH/A+4B/wLNAe4B/wIAAfoB/wIAAf0B/wLG A+8B/wPuAf8D7wH/A+wB/wPuAf8D7wH/A+8B/wPtAf8D7gH/As0B7gH/AgAB+gH/AgAB/QH/AsYB8gH/
AfIB/wHsAe0B7AH/AfsC+gH/Az4BaxQAAzgBWwQAA9UB/wPtAf8D9QH/A/MB/wHyAvMB/wHyAfMB8gH/ AewB7QHsAf8B+wL6Af8DPgFrFAADOAFbBAAD1QH/A+0B/wP1Af8D8wH/AfIC8wH/AfIB8wHyAf8D8gH/
A/IB/wHxAvIB/wHxAvIB/wHwAvEB/wHvAvAB/wHuAu8B/wHsAe0B7gH/AeoB6wHsAf8B5wHpAeoB/wHl AfEC8gH/AfEC8gH/AfAC8QH/Ae8C8AH/Ae4C7wH/AewB7QHuAf8B6gHrAewB/wHnAekB6gH/AeUC5wH/
AucB/wHlAegB5gH/Ac4B0AHdAf8BjwGMAeYB/wGMAYsBwgH/AgABlwH/AYABAAG4Af8B+AH7AfQB/wNK AeUB6AHmAf8BzgHQAd0B/wGPAYwB5gH/AYwBiwHCAf8CAAGXAf8BgAEAAbgB/wH4AfsB9AH/A0oBixwA
AYscAANSAaABgwIAAf8BkQIAAf8BlgIAAf8BqAGRAYsB/wHpAeIB4AH/AeEB2AHVAf8B0wHFAb8B/wG5 A1IBoAGDAgAB/wGRAgAB/wGWAgAB/wGoAZEBiwH/AekB4gHgAf8B4QHYAdUB/wHTAcUBvwH/AbkBowGa
AaMBmgH/AbEBmAGOAf8BsAGWAY0B/wGxAZgBjgH/AbEBmAGOAf8BsQGYAY8B/wGuAZQBigH/AcEBrQGl Af8BsQGYAY4B/wGwAZYBjQH/AbEBmAGOAf8BsQGYAY4B/wGxAZgBjwH/Aa4BlAGKAf8BwQGtAaUB/wHU
Af8B1AHHAcIB/wHGAbQBrQH/Aa4BlAGLAf8BsQGXAY4B/wGyAZgBjgH/AbsBogGWAf8BrwGXAY0B/wG8 AccBwgH/AcYBtAGtAf8BrgGUAYsB/wGxAZcBjgH/AbIBmAGOAf8BuwGiAZYB/wGvAZcBjQH/AbwBqwGm
AasBpgH/AZoBhAEAAf8BmgGDAQAB/wGGAgAB/wNSAaAYAAM7AWMBAAG2AQAB/wEAAbYBAAH/AQABrgEA Af8BmgGEAQAB/wGaAYMBAAH/AYYCAAH/A1IBoBgAAzsBYwEAAbYBAAH/AQABtgEAAf8BAAGuAQAB/wEA
Af8BAAGqAQAB/wEAAakBAAH/AVgBWgFYAb0cAAFOAk8BlwEAAcgBgQH/AQABwwEAAf8BAAG/AQAB/wEA AaoBAAH/AQABqQEAAf8BWAFaAVgBvRwAAU4CTwGXAQAByAGBAf8BAAHDAQAB/wEAAb8BAAH/AQABvgEA
Ab4BAAH/AQABuwEAAf8BAAG4AQAB/wEAAbQBAAH/AQABsAEAAf8BAAGqAQAB/wEAAaoBAAH/AQABnAEA Af8BAAG7AQAB/wEAAbgBAAH/AQABtAEAAf8BAAGwAQAB/wEAAaoBAAH/AQABqgEAAf8BAAGcAQAB/wMr
Af8DKwFCFAADJQE2A+YB/wQAA8sB/wO+Af8DzwH/A9oB/wPZAf8D2QH/A90B/wPYAf8DzAH/A9wB/wPc AUIUAAMlATYD5gH/BAADywH/A74B/wPPAf8D2gH/A9kB/wPZAf8D3QH/A9gB/wPMAf8D3AH/A9wB/wPU
Af8D1AH/A9MB/wPcAf8CvgHYAf8C4QHkAf8CvQH2Af8CAAH9Af8CugHxAf8B9gH3AfYB/wM+AWsQAAMM Af8D0wH/A9wB/wK+AdgB/wLhAeQB/wK9AfYB/wIAAf0B/wK6AfEB/wH2AfcB9gH/Az4BaxAAAwwBEANf
ARADXwHYA+4B/wPWAf8D8gH/AfIC8wH/A/IB/wHxAvIB/wHxAvIB/wHwAvEB/wLwAfEB/wHvAvAB/wHu AdgD7gH/A9YB/wPyAf8B8gLzAf8D8gH/AfEC8gH/AfEC8gH/AfAC8QH/AvAB8QH/Ae8C8AH/Ae4C7wH/
Au8B/wHtAe4B7wH/Ae0C7gH/AewB7QHuAf8B6gLsAf8B5wHpAeoB/wHlAecB6AH/AeMB5QHmAf8B4wHm Ae0B7gHvAf8B7QLuAf8B7AHtAe4B/wHqAuwB/wHnAekB6gH/AeUB5wHoAf8B4wHlAeYB/wHjAeYB5QH/
AeUB/wHrAe8B4AH/AZoBmwG3Af8CAAGfAf8BuAG7AcwB/wH5AfsB+AH/Ay0BRRwAA04BlQMAAf8BhgIA AesB7wHgAf8BmgGbAbcB/wIAAZ8B/wG4AbsBzAH/AfkB+wH4Af8DLQFFHAADTgGVAwAB/wGGAgAB/wGh
Af8BoQGNAYgB/wGzAaEBmwH/AboBpwGhAf8BzAG8AbcB/wG+AakBogH/AaoBjgGFAf8BrwGVAYsB/wGs AY0BiAH/AbMBoQGbAf8BugGnAaEB/wHMAbwBtwH/Ab4BqQGiAf8BqgGOAYUB/wGvAZUBiwH/AawBkQGI
AZEBiAH/AawBkgGJAf8BrAGSAYkB/wGtAZIBiQH/AaoBjgGFAf8BxwG1AbAB/wQAAeIB2QHWAf8BrAGR Af8BrAGSAYkB/wGsAZIBiQH/Aa0BkgGJAf8BqgGOAYUB/wHHAbUBsAH/BAAB4gHZAdYB/wGsAZEBiQH/
AYkB/wGsAZEBiQH/Aa0BkwGKAf8BtAGaAZAB/wGpAY8BhwH/AbgBpQGhAf8BkQIAAf8BjgIAAf8DAAH/ AawBkQGJAf8BrQGTAYoB/wG0AZoBkAH/AakBjwGHAf8BuAGlAaEB/wGRAgAB/wGOAgAB/wMAAf8DTgGW
A04BlhgAAzsBYwEAAbgBAAH/AQABuQEAAf8BAAGxAQAB/wEAAa0BAAH/AQABrQEAAf8BWAFaAVgBvRwA GAADOwFjAQABuAEAAf8BAAG5AQAB/wEAAbEBAAH/AQABrQEAAf8BAAGtAQAB/wFYAVoBWAG9HAADBgEH
AwYBBwFBAmoB+QEAAcwBgwH/AQABwAEAAf8BAAG/AQAB/wEAAb0BAAH/AQABugEAAf8BAAG2AQAB/wEA AUECagH5AQABzAGDAf8BAAHAAQAB/wEAAb8BAAH/AQABvQEAAf8BAAG6AQAB/wEAAbYBAAH/AQABsgEA
AbIBAAH/AQABrwEAAf8BAAGvAQAB/wNZAb4YAAMlATYD5AH/BAADygH/A64B/wO1Af8DxwH/A74B/wO1 Af8BAAGvAQAB/wEAAa8BAAH/A1kBvhgAAyUBNgPkAf8EAAPKAf8DrgH/A7UB/wPHAf8DvgH/A7UB/wO/
Af8DvwH/A7cB/wOsAf8DvAH/A7gB/wOxAf8DtAH/A7kB/wO0Af8DvAH/A80B/wIAAdIB/wIAAfQB/wPy Af8DtwH/A6wB/wO8Af8DuAH/A7EB/wO0Af8DuQH/A7QB/wO8Af8DzQH/AgAB0gH/AgAB9AH/A/IB/wM+
Af8DPgFrEAADRgF+BAAD3AH/A9wB/wP1Af8C8QHyAf8B8AHxAfIB/wHwAvEB/wHvAvAB/wHuAe8B8AH/ AWsQAANGAX4EAAPcAf8D3AH/A/UB/wLxAfIB/wHwAfEB8gH/AfAC8QH/Ae8C8AH/Ae4B7wHwAf8B7gLv
Ae4C7wH/Ae0B7gHvAf8B7AHtAe4B/wHsAu0B/wHrAewB7QH/AeoC7AH/AekC6wH/AegC6gH/AeYB5wHo Af8B7QHuAe8B/wHsAe0B7gH/AewC7QH/AesB7AHtAf8B6gLsAf8B6QLrAf8B6ALqAf8B5gHnAegB/wHj
Af8B4wHlAeYB/wHhAeMB5AH/AecB6gHkAf8BjAGLAbwB/wIAAbUB/wHhAeQB4QH/A2IB4QMMARAcAAND AeUB5gH/AeEB4wHkAf8B5wHqAeQB/wGMAYsBvAH/AgABtQH/AeEB5AHhAf8DYgHhAwwBEBwAA0MBdgMA
AXYDAAH/AYsCAAH/AZgBgwEAAf8BjQIAAf8BqwGUAY4B/wHzAfAB7wH/AdUByAHEAf8BrQGSAYoB/wGw Af8BiwIAAf8BmAGDAQAB/wGNAgAB/wGrAZQBjgH/AfMB8AHvAf8B1QHIAcQB/wGtAZIBigH/AbABlAGN
AZQBjQH/AawBjwGIAf8BqQGMAYUB/wGnAYkBgQH/AacBiQGBAf8BpgGIAYAB/wG6AaMBnQH/AfEB7QHs Af8BrAGPAYgB/wGpAYwBhQH/AacBiQGBAf8BpwGJAYEB/wGmAYgBgAH/AboBowGdAf8B8QHtAewB/wHe
Af8B3gHTAc8B/wGoAYoBgwH/AagBigGDAf8BqgGOAYYB/wGrAZABhgH/AaYBjAGFAf8BrwGdAZgB/wGF AdMBzwH/AagBigGDAf8BqAGKAYMB/wGqAY4BhgH/AasBkAGGAf8BpgGMAYUB/wGvAZ0BmAH/AYUCAAH/
AgAB/wGHAgAB/wMAAf8DRAF5GAADOwFjAQABugEAAf8BAAG6AQAB/wEAAbQBAAH/AQABrwEAAf8BAAGw AYcCAAH/AwAB/wNEAXkYAAM7AWMBAAG6AQAB/wEAAboBAAH/AQABtAEAAf8BAAGvAQAB/wEAAbABAAH/
AQAB/wFYAVoBWAG9IAADPQFoAQABwwEAAf8BAAHGAQAB/wEAAb8BAAH/AQABvgEAAf8BAAG7AQAB/wEA AVgBWgFYAb0gAAM9AWgBAAHDAQAB/wEAAcYBAAH/AQABvwEAAf8BAAG+AQAB/wEAAbsBAAH/AQABuAEA
AbgBAAH/AQABtAEAAf8BAAG2AQAB/wEAAaMBAAH/AxYBHhgAAyUBNgPjAf8EAAPXAf8D0gH/A90B/wPb Af8BAAG0AQAB/wEAAbYBAAH/AQABowEAAf8DFgEeGAADJQE2A+MB/wQAA9cB/wPSAf8D3QH/A9sB/wPc
Af8D3AH/A9wB/wPXAf8D3QH/A9gB/wPWAf8D1wH/A9oB/wPXAf8D1AH/A9sB/wPUAf8DzwH/A88B/wPZ Af8D3AH/A9cB/wPdAf8D2AH/A9YB/wPXAf8D2gH/A9cB/wPUAf8D2wH/A9QB/wPPAf8DzwH/A9kB/wPp
Af8D6QH/Az4BaxAAAy4BSANdAcwD+wH/A+YB/wHzAvQB/wHvAvAB/wHvAvAB/wHvAvAB/wHuAu8B/wHu Af8DPgFrEAADLgFIA10BzAP7Af8D5gH/AfMC9AH/Ae8C8AH/Ae8C8AH/Ae8C8AH/Ae4C7wH/Ae4C7wH/
Au8B/wHtAu4B/wHsAe0B7gH/AesC7QH/AesC7AH/AeoB6wHsAf8B6AHqAesB/wHoAekB6gH/AecB6QHq Ae0C7gH/AewB7QHuAf8B6wLtAf8B6wLsAf8B6gHrAewB/wHoAeoB6wH/AegB6QHqAf8B5wHpAeoB/wHm
Af8B5gLoAf8B5AHmAecB/wHiAeQB5QH/AeAC4wH/AdEB0wHbAf8BzwHRAdgB/wHvAvEB/wNSAaQgAAMt AugB/wHkAeYB5wH/AeIB5AHlAf8B4ALjAf8B0QHTAdsB/wHPAdEB2AH/Ae8C8QH/A1IBpCAAAy0BRQMA
AUUDAAH/AwAB/wMAAf8BjwIAAf8B0QHFAcMB/wQAAfMC7wH/AcABqwGlAf8BvQGnAaEB/wG+AakBogH/ Af8DAAH/AwAB/wGPAgAB/wHRAcUBwwH/BAAB8wLvAf8BwAGrAaUB/wG9AacBoQH/Ab4BqQGiAf8BwAGr
AcABqwGlAf8BvQGnAaEB/wG1AZwBlQH/AaoBjQGGAf8BqAGLAYMB/wG4AaEBmwH/AbcBnwGYAf8BtwGf AaUB/wG9AacBoQH/AbUBnAGVAf8BqgGNAYYB/wGoAYsBgwH/AbgBoQGbAf8BtwGfAZgB/wG3AZ8BmQH/
AZkB/wGhAYIBAAH/AaYBiQGAAf8BoAGDAQAB/wGmAY4BiAH/AaABjAGIAf8DAAH/AYECAAH/AwAB/wMv AaEBggEAAf8BpgGJAYAB/wGgAYMBAAH/AaYBjgGIAf8BoAGMAYgB/wMAAf8BgQIAAf8DAAH/Ay8BSRgA
AUkYAAM7AWMBAAG7AQAB/wEAAb0BAAH/AQABtgEAAf8BAAGyAQAB/wEAAbIBAAH/AVgBWgFYAb0kAAFb AzsBYwEAAbsBAAH/AQABvQEAAf8BAAG2AQAB/wEAAbIBAAH/AQABsgEAAf8BWAFaAVgBvSQAAVsCYQHe
AmEB3gEAAcwBgwH/AQABwAEAAf8BAAG/AQAB/wEAAb0BAAH/AQABugEAAf8BAAG5AQAB/wEAAbYBAAH/ AQABzAGDAf8BAAHAAQAB/wEAAb8BAAH/AQABvQEAAf8BAAG6AQAB/wEAAbkBAAH/AQABtgEAAf8DTQGS
A00BkhwAAyUBNgPhAf8EAAPtAf8D7QH/A+wB/wPsAf8D7AH/A+sB/wPrAf8D6wH/AesC6gH/A+sB/wPq HAADJQE2A+EB/wQAA+0B/wPtAf8D7AH/A+wB/wPsAf8D6wH/A+sB/wPrAf8B6wLqAf8D6wH/A+oB/wPo
Af8D6AH/AuUB5gH/A+MB/wHhAeIB4QH/A98B/wPdAf8D2wH/A9gB/wPaAf8DPgFrFAADBgEHA0ABcQNa Af8C5QHmAf8D4wH/AeEB4gHhAf8D3wH/A90B/wPbAf8D2AH/A9oB/wM+AWsUAAMGAQcDQAFxA1oB9QLz
AfUC8wH0Af8B7gHvAfAB/wHuAu8B/wHtAu8B/wHsAu4B/wHsAu0B/wHrAewB7QH/AeoB6wHsAf8B6QLr AfQB/wHuAe8B8AH/Ae4C7wH/Ae0C7wH/AewC7gH/AewC7QH/AesB7AHtAf8B6gHrAewB/wHpAusB/wHo
Af8B6AHqAesB/wHoAekB6gH/AecB6AHpAf8B5gLoAf8B5QLnAf8B5AHmAecB/wHjAuYB/wHiAeQB5QH/ AeoB6wH/AegB6QHqAf8B5wHoAekB/wHmAugB/wHlAucB/wHkAeYB5wH/AeMC5gH/AeIB5AHlAf8B3wHi
Ad8B4gHjAf8B3wLiAf8B3ALfAf8B9wL5Af8DOAFcIAADDAEQA1sB5AMAAf8BgwIAAf8BlgGBAQAB/wGq AeMB/wHfAuIB/wHcAt8B/wH3AvkB/wM4AVwgAAMMARADWwHkAwAB/wGDAgAB/wGWAYEBAAH/AaoBmAGU
AZgBlAH/AfQB8gHxAf8B2QHNAcoB/wGcAgAB/wGgAYEBAAH/AaEBgwEAAf8BpgGIAYEB/wGsAZEBigH/ Af8B9AHyAfEB/wHZAc0BygH/AZwCAAH/AaABgQEAAf8BoQGDAQAB/wGmAYgBgQH/AawBkQGKAf8BtgGd
AbYBnQGXAf8BvQGoAaIB/wHSAcMBvwH/AcgBtgGyAf8BnQIAAf8BuQGjAZwB/wGyAZkBkgH/AZkCAAH/ AZcB/wG9AagBogH/AdIBwwG/Af8ByAG2AbIB/wGdAgAB/wG5AaMBnAH/AbIBmQGSAf8BmQIAAf8BlAIA
AZQCAAH/AacBkwGNAf8BjwIAAf8DAAH/AwAB/wNcAecDDgESGAADOwFjAQABvAEAAf8BAAG+AQAB/wEA Af8BpwGTAY0B/wGPAgAB/wMAAf8DAAH/A1wB5wMOARIYAAM7AWMBAAG8AQAB/wEAAb4BAAH/AQABuAEA
AbgBAAH/AQABtAEAAf8BAAG1AQAB/wFYAVoBWAG9JAADKAE8AQABvQEAAf8BAAHIAYEB/wEAAb8BAAH/ Af8BAAG0AQAB/wEAAbUBAAH/AVgBWgFYAb0kAAMoATwBAAG9AQAB/wEAAcgBgQH/AQABvwEAAf8BAAG+
AQABvgEAAf8BAAG7AQAB/wEAAcEBAAH/AUgCYgH2AwQBBRwAAyUBNgLeAd8B/wL+Af0B/wH0AfMB6gH/ AQAB/wEAAbsBAAH/AQABwQEAAf8BSAJiAfYDBAEFHAADJQE2At4B3wH/Av4B/QH/AfQB8wHqAf8C7AHr
AuwB6wH/AuoB6wH/AecB5gHrAf8C9QHoAf8C9wHnAf8C5QHqAf8D6gH/A+oB/wPpAf8D5wH/AeQC5QH/ Af8C6gHrAf8B5wHmAesB/wL1AegB/wL3AecB/wLlAeoB/wPqAf8D6gH/A+kB/wPnAf8B5ALlAf8D3wH/
A98B/wPUAf8DywH/A8oB/wPMAf8DxwH/A7sB/wPQAf8DOgFiGAADDwETA14B7QHxAfIB8wH/Ae0C7gH/ A9QB/wPLAf8DygH/A8wB/wPHAf8DuwH/A9AB/wM6AWIYAAMPARMDXgHtAfEB8gHzAf8B7QLuAf8B7AHt
AewB7QHuAf8B6wHsAe0B/wHqAuwB/wHqAesB7AH/AekC6wH/AegB6QHrAf8B5wLpAf8B5gLoAf8B5QHn Ae4B/wHrAewB7QH/AeoC7AH/AeoB6wHsAf8B6QLrAf8B6AHpAesB/wHnAukB/wHmAugB/wHlAecB6AH/
AegB/wHkAeYB5wH/AeMC5gH/AeMB5QHmAf8B4gHkAeUB/wHhAuQB/wHgAeIB4wH/Ad8C4gH/AdwB3wHg AeQB5gHnAf8B4wLmAf8B4wHlAeYB/wHiAeQB5QH/AeEC5AH/AeAB4gHjAf8B3wLiAf8B3AHfAeAB/wHd
Af8B3QHgAeEB/wNeAfADFgEeJAADTAGRAwAB/wMAAf8DAAH/AwAB/wGvAZ0BmAH/AbwBqQGlAf8BnQIA AeAB4QH/A14B8AMWAR4kAANMAZEDAAH/AwAB/wMAAf8DAAH/Aa8BnQGYAf8BvAGpAaUB/wGdAgAB/wGf
Af8BnwGBAQAB/wGjAYUBAAH/AaYBiAGCAf8BpwGJAYMB/wGnAYkBgwH/AaYBiQGCAf8BygG6AbYB/wHY AYEBAAH/AaMBhQEAAf8BpgGIAYIB/wGnAYkBgwH/AacBiQGDAf8BpgGJAYIB/wHKAboBtgH/AdgBzAHJ
AcwByQH/AboBowGeAf8BpAGHAYAB/wG4AaIBnAH/AaUBjQGHAf8BjgIAAf8BpwGTAY4B/wMAAf8DAAH/ Af8BugGjAZ4B/wGkAYcBgAH/AbgBogGcAf8BpQGNAYcB/wGOAgAB/wGnAZMBjgH/AwAB/wMAAf8DAAH/
AwAB/wNOAZUcAAM7AWMBAAG+AQAB/wEAAcABAAH/AQABuQEAAf8BAAG2AQAB/wEAAbgBAAH/AVgBWgFY A04BlRwAAzsBYwEAAb4BAAH/AQABwAEAAf8BAAG5AQAB/wEAAbYBAAH/AQABuAEAAf8BWAFaAVgBvSgA
Ab0oAAFXAlkBuQEAAcsBgwH/AQABwgEAAf8BAAG/AQAB/wEAAcEBAAH/AQABuwEAAf8DOwFjIAADJQE2 AVcCWQG5AQABywGDAf8BAAHCAQAB/wEAAb8BAAH/AQABwQEAAf8BAAG7AQAB/wM7AWMgAAMlATYC3wHe
At8B3gH/AvYB/AH/AuIB6QH/AvEB6AH/AuYB6QP/AecB/wK5Ae0B/wKdAfAD/wHnAf8B6AHpAegB/wPn Af8C9gH8Af8C4gHpAf8C8QHoAf8C5gHpA/8B5wH/ArkB7QH/Ap0B8AP/AecB/wHoAekB6AH/A+cB/wHl
Af8B5QLmAf8D5AH/AeIC4QH/A9UB/wG4AbkBuAH/A5wB/wOUAf8DlQH/A4oB/wOpAf8DYgHvAxUBHRgA AuYB/wPkAf8B4gLhAf8D1QH/AbgBuQG4Af8DnAH/A5QB/wOVAf8DigH/A6kB/wNiAe8DFQEdGAADLQFF
Ay0BRQP9Af8B7ALtAf8B6wHsAe0B/wHqAesB7AH/AekC6wH/AegB6QHrAf8B5wHpAeoB/wHnAegB6QH/ A/0B/wHsAu0B/wHrAewB7QH/AeoB6wHsAf8B6QLrAf8B6AHpAesB/wHnAekB6gH/AecB6AHpAf8B5gLo
AeYC6AH/AeUC5wH/AeQB5gHnAf8B4wHlAeYB/wHiAeQB5QH/AeEC5AH/AeAB4wHkAf8B3wHiAeMB/wHe Af8B5QLnAf8B5AHmAecB/wHjAeUB5gH/AeIB5AHlAf8B4QLkAf8B4AHjAeQB/wHfAeIB4wH/Ad4B4QHi
AeEB4gH/Ad0B4AHhAf8B3QHgAeEB/wHbAd4B3wH/AekC7AH/A1kBuygAAxsBJQJNAT4B+gMAAf8DAAH/ Af8B3QHgAeEB/wHdAeAB4QH/AdsB3gHfAf8B6QLsAf8DWQG7KAADGwElAk0BQAH6AwAB/wMAAf8DAAH/
AwAB/wGZAYUBgAH/AZoBhAEAAf8BtQGgAZsB/wGcAgAB/wGlAYkBhAH/AakBjQGHAf8BqQGOAYgB/wGp AZkBhQGAAf8BmgGEAQAB/wG1AaABmwH/AZwCAAH/AaUBiQGEAf8BqQGNAYcB/wGpAY4BiAH/AakBjgGI
AY4BiAH/AagBjAGGAf8BswGbAZYB/wGyAZoBlAH/AbUBnQGYAf8BxgGzAa4B/wGkAYoBhAH/AakBlAGP Af8BqAGMAYYB/wGzAZsBlgH/AbIBmgGUAf8BtQGdAZgB/wHGAbMBrgH/AaQBigGEAf8BqQGUAY8B/wHg
Af8B4AHYAdYB/wG4AawBqgH/AwAB/wMAAf8BTQI+AfoDHQEoHAADOwFjAQABvwEAAf8BAAHBAQAB/wEA AdgB1gH/AbgBrAGqAf8DAAH/AwAB/wFNAkAB+gMdASgcAAM7AWMBAAG/AQAB/wEAAcEBAAH/AQABuwEA
AbsBAAH/AQABuQEAAf8BAAG6AQAB/wFYAloBvSgAAxMBGgEAAbUBAAH/AQABygGCAf8BAAG/AQAB/wEA Af8BAAG5AQAB/wEAAboBAAH/AVgCWgG9KAADEwEaAQABtQEAAf8BAAHKAYIB/wEAAb8BAAH/AQABxwEA
AccBAAH/AV8CYQHaJAADJQE2At8B3AP/AfoB/wIAAfQB/wLVAegD/wHkA/8B4QH/AgAB9AH/AoMB8gP/ Af8BXwJhAdokAAMlATYC3wHcA/8B+gH/AgAB9AH/AtUB6AP/AeQD/wHhAf8CAAH0Af8CgwHyA/8B5AH/
AeQB/wLrAeYB/wHmAeUB5AH/AuIB4wH/A+EB/wPfAf8DzwH/A6EB/wMAAf8DAAH/AwAB/wOZAf8DvAH/ AusB5gH/AeYB5QHkAf8C4gHjAf8D4QH/A98B/wPPAf8DoQH/AwAB/wMAAf8DAAH/A5kB/wO8Af8DLwFJ
Ay8BSRwAA0IBdAH+A/8B6QHqAesB/wHpAeoB6wH/AegC6gH/AecC6QH/AeYB6AHpAf8B5QLnAf8B5AHm HAADQgF0Af4D/wHpAeoB6wH/AekB6gHrAf8B6ALqAf8B5wLpAf8B5gHoAekB/wHlAucB/wHkAeYB5wH/
AecB/wHjAuYB/wHjAuUB/wHiAeQB5QH/AeEB4wHkAf8B4AHiAeMB/wHfAeEB4gH/Ad4B4QHiAf8B3QHg AeMC5gH/AeMC5QH/AeIB5AHlAf8B4QHjAeQB/wHgAeIB4wH/Ad8B4QHiAf8B3gHhAeIB/wHdAeAB4QH/
AeEB/wHcAd8B4AH/AdsB3gHfAf8B2gHdAd4B/wHYAdsB3AH/AfUB9wH4Af8DQgF1LAADTAGQAwAB/wMA AdwB3wHgAf8B2wHeAd8B/wHaAd0B3gH/AdgB2wHcAf8B9QH3AfgB/wNCAXUsAANMAZADAAH/AwAB/wMA
Af8DAAH/AZMBgQEAAf8BgwIAAf8BuQGqAacB/wGpAZIBjgH/AZ8BhgGCAf8BpAGKAYYB/wGmAYsBhwH/ Af8BkwGBAQAB/wGDAgAB/wG5AaoBpwH/AakBkgGOAf8BnwGGAYIB/wGkAYoBhgH/AaYBiwGHAf8BpwGM
AacBjAGHAf8BpwGLAYcB/wGzAZsBlgH/AbYBoAGbAf8BrAGQAYsB/wGxAZkBlAH/AbwBrQGpAf8BkgIA AYcB/wGnAYsBhwH/AbMBmwGWAf8BtgGgAZsB/wGsAZABiwH/AbEBmQGUAf8BvAGtAakB/wGSAgAB/wHV
Af8B1QHNAcwB/wGzAagBpgH/AwAB/wMAAf8DTQGTIAADOwFjAQABvwEAAf8BAAHCAQAB/wEAAb0BAAH/ Ac0BzAH/AbMBqAGmAf8DAAH/AwAB/wNNAZMgAAM7AWMBAAG/AQAB/wEAAcIBAAH/AQABvQEAAf8BAAG6
AQABugEAAf8BAAG9AQAB/wFYAloBvSwAA0sBjAEAAccBgAH/AQABywGDAf8BAAG7AQAB/wMmATgkAAMl AQAB/wEAAb0BAAH/AVgCWgG9LAADSwGMAQABxwGAAf8BAAHLAYMB/wEAAbsBAAH/AyYBOCQAAyUBNgPb
ATYD2wP/AfUB/wKGAfEB/wIAAfgB/wK/AesB/wKOAe8B/wIAAfYB/wLjAeYB/wLhAeYB/wLYAeUB/wLf A/8B9QH/AoYB8QH/AgAB+AH/Ar8B6wH/Ao4B7wH/AgAB9gH/AuMB5gH/AuEB5gH/AtgB5QH/At8B4gH/
AeIB/wLiAeAB/wPfAf8D3AH/A8IB/wOaAf8DzAH/A90B/wPyAf8D5wH/AzABSiAAA1IBpAH3AvkB/wHm AuIB4AH/A98B/wPcAf8DwgH/A5oB/wPMAf8D3QH/A/IB/wPnAf8DMAFKIAADUgGkAfcC+QH/AeYB6AHp
AegB6QH/AeYB6AHpAf8B5gHnAegB/wHlAecB6AH/AeQB5gHnAf8B4wHlAeYB/wHiAeUB5gH/AeIB5AHl Af8B5gHoAekB/wHmAecB6AH/AeUB5wHoAf8B5AHmAecB/wHjAeUB5gH/AeIB5QHmAf8B4gHkAeUB/wHh
Af8B4QHjAeQB/wHgAeIB4wH/Ad8C4gH/Ad4B4QHiAf8B3QHgAeEB/wHcAd8B4AH/AdsB3gHfAf8B2gHd AeMB5AH/AeAB4gHjAf8B3wLiAf8B3gHhAeIB/wHdAeAB4QH/AdwB3wHgAf8B2wHeAd8B/wHaAd0B3gH/
Ad4B/wHZAd0B3gH/AdgB2wHcAf8B2AHcAd0B/wNfAfsDIgExLAADCgENA10B1AMAAf8DAAH/AYkCAAH/ AdkB3QHeAf8B2AHbAdwB/wHYAdwB3QH/A18B+wMiATEsAAMKAQ0DXQHUAwAB/wMAAf8BiQIAAf8BlwGF
AZcBhQGBAf8BpgGTAZAB/wHLAbwBuQH/AaIBjQGJAf8BowGMAYgB/wGlAY0BiQH/AaUBjQGJAf8BpAGM AYEB/wGmAZMBkAH/AcsBvAG5Af8BogGNAYkB/wGjAYwBiAH/AaUBjQGJAf8BpQGNAYkB/wGkAYwBiAH/
AYgB/wGoAZMBjwH/AbUBogGfAf8BogGMAYkB/wGeAYoBhgH/AaIBkQGOAf8B0wHKAckB/wGgAZEBjwH/ AagBkwGPAf8BtQGiAZ8B/wGiAYwBiQH/AZ4BigGGAf8BogGRAY4B/wHTAcoByQH/AaABkQGPAf8DAAH/
AwAB/wMAAf8DXAHWAwsBDiAAAzsBYwEAAcABAAH/AQABwwEAAf8BAAG+AQAB/wEAAbwBAAH/AQABwAEA AwAB/wNcAdYDCwEOIAADOwFjAQABwAEAAf8BAAHDAQAB/wEAAb4BAAH/AQABvAEAAf8BAAHAAQAB/wFY
Af8BWAJaAb0sAAQCA2IB7gEAAdIBiAH/A1YBsygAAyUBNgPZA/8B9QH/AssB6AH/AgAB9wH/ApcB7QH/ AloBvSwABAIDYgHuAQAB0gGIAf8DVgGzKAADJQE2A9kD/wH1Af8CywHoAf8CAAH3Af8ClwHtAf8CAAH8
AgAB/AH/Aq4B6wH/AtgB5gH/AgAB8wH/AgAB8AH/AsMB4wH/Au4B2wH/A9sB/wPZAf8DuwH/A5gB/wPy Af8CrgHrAf8C2AHmAf8CAAHzAf8CAAHwAf8CwwHjAf8C7gHbAf8D2wH/A9kB/wO7Af8DmAH/A/IB/wQA
Af8EAAP1Af8DMAFKIAADBgEHA2EB2gHwAvIB/wHlAucB/wHjAuYB/wHjAeUB5gH/AeMB5QHmAf8B4gLl A/UB/wMwAUogAAMGAQcDYQHaAfAC8gH/AeUC5wH/AeMC5gH/AeMB5QHmAf8B4wHlAeYB/wHiAuUB/wHi
Af8B4gHkAeUB/wHhAeMB5AH/AeAB4gHjAf8B3wLiAf8B3gHhAeIB/wHdAeAB4QH/AdwB3wHgAf8B2wHe AeQB5QH/AeEB4wHkAf8B4AHiAeMB/wHfAuIB/wHeAeEB4gH/Ad0B4AHhAf8B3AHfAeAB/wHbAd4B3wH/
Ad8B/wHaAd0B3gH/AdkB3AHdAf8B2AHcAd0B/wHXAdsB3AH/AdYB2QHaAf8B4AHjAeQB/wNeAdIDBQEG AdoB3QHeAf8B2QHcAd0B/wHYAdwB3QH/AdcB2wHcAf8B1gHZAdoB/wHgAeMB5AH/A14B0gMFAQYwAAMd
MAADHQEpA2AB6AMAAf8DAAH/AakBnQGbAf8BngGNAYsB/wG4AaoBpwH/Ab4BsgGwAf8BnAGKAYcB/wGd ASkDYAHoAwAB/wMAAf8BqQGdAZsB/wGeAY0BiwH/AbgBqgGnAf8BvgGyAbAB/wGcAYoBhwH/AZ0BigGH
AYoBhwH/AZ0BigGHAf8BnAGJAYYB/wGiAY8BiwH/AbcBpwGlAf8BoAGPAY0B/wGiAZIBjwH/AZ8BkAGN Af8BnQGKAYcB/wGcAYkBhgH/AaIBjwGLAf8BtwGnAaUB/wGgAY8BjQH/AaIBkgGPAf8BnwGQAY0B/wHm
Af8B5gLhAf8BnAGQAY4B/wMAAf8DXQHqAx4BKyQAAz4BawEAAcYBgAH/AQABzAGDAf8BAAHGAQAB/wEA AuEB/wGcAZABjgH/AwAB/wNdAeoDHgErJAADPgFrAQABxgGAAf8BAAHMAYMB/wEAAcYBAAH/AQABxQEA
AcUBAAH/AQAByAEAAf8DXQHMMAABQQJCAXMBAAGoAQAB/wMSARgoAAMlATYD2AH/AvUB9gH/AvkB4gH/ Af8BAAHIAQAB/wNdAcwwAAFBAkIBcwEAAagBAAH/AxIBGCgAAyUBNgPYAf8C9QH2Af8C+QHiAf8CAAHw
AgAB8AH/AqUB6gH/AgAB8AH/AucB4wH/A+IB/wLUAeIB/wLTAeAB/wLZAdwB/wLbAdoB/wPZAf8D1gH/ Af8CpQHqAf8CAAHwAf8C5wHjAf8D4gH/AtQB4gH/AtMB4AH/AtkB3AH/AtsB2gH/A9kB/wPWAf8DsQH/
A7EB/wOYAf8EAAPwAf8DMAFLJAADDAEPA1gBvANeAe0C/QH+Af8B+wH8Af0B/wH0AfUB9gH/AeoB7AHt A5gB/wQAA/AB/wMwAUskAAMMAQ8DWAG8A14B7QL9Af4B/wH7AfwB/QH/AfQB9QH2Af8B6gHsAe0B/wHj
Af8B4wHlAeYB/wHfAuIB/wHdAuAB/wHcAd8B4AH/AdwB3wHgAf8B2wHeAd8B/wHbAd4B3wH/AdoB3QHe AeUB5gH/Ad8C4gH/Ad0C4AH/AdwB3wHgAf8B3AHfAeAB/wHbAd4B3wH/AdsB3gHfAf8B2gHdAd4B/wHZ
Af8B2QHcAd0B/wHYAdsB3AH/AdcB2gHbAf8B1gHZAdsB/wHVAdkB2gH/AdIB1gHXAf8B7gHwAfEB/wNM AdwB3QH/AdgB2wHcAf8B1wHaAdsB/wHWAdkB2wH/AdUB2QHaAf8B0gHWAdcB/wHuAfAB8QH/A0wBjjgA
AY44AAMiATEDWwHeAwAB/wGhAZUBkwH/AasBnwGdAf8BpAGWAZQB/wG9AbEBrwH/Ab4BswGxAf8BoAGR AyIBMQNbAd4DAAH/AaEBlQGTAf8BqwGfAZ0B/wGkAZYBlAH/Ab0BsQGvAf8BvgGzAbEB/wGgAZEBjgH/
AY4B/wGhAZEBjgH/AaYBlQGSAf8BpAGTAZAB/wGyAaUBowH/Aa4BoQGfAf8BpQGXAZQB/wG9AbIBsAH/ AaEBkQGOAf8BpgGVAZIB/wGkAZMBkAH/AbIBpQGjAf8BrgGhAZ8B/wGlAZcBlAH/Ab0BsgGwAf8BoQGW
AaEBlgGTAf8DAAH/A2AB4AMkATQoAAM5AV4BWgJnAfIBWgJnAfIBWgJnAfIBWgJnAfIBWgJnAfIDVgGz AZMB/wMAAf8DYAHgAyQBNCgAAzkBXgFaAmcB8gFaAmcB8gFaAmcB8gFaAmcB8gFaAmcB8gNWAbMwAAMM
MAADDAEPAzQBVCwAAyUBNgPXAf8C9AH1A/8B3wH/AroB6AH/AgAC/wKWAewD/wHcAf8D3wH/AuIB3QH/ AQ8DNAFULAADJQE2A9cB/wL0AfUD/wHfAf8CugHoAf8CAAL/ApYB7AP/AdwB/wPfAf8C4gHdAf8C4AHb
AuAB2wH/AtoB2QH/AtYB1wH/A9cB/wPQAf8DoAH/A7sB/wPvAf8DMAFKLAAEAQMTARoDKQQ+AWsDUQGc Af8C2gHZAf8C1gHXAf8D1wH/A9AB/wOgAf8DuwH/A+8B/wMwAUosAAQBAxMBGgMpBD4BawNRAZwDXQHJ
A10ByQNlAewB+gL7Af8B9wL5Af8B7wHxAfIB/wHkAecB6AH/AdwB3wHgAf8B2AHbAdwB/wHVAdkB2gH/ A2UB7AH6AvsB/wH3AvkB/wHvAfEB8gH/AeQB5wHoAf8B3AHfAeAB/wHYAdsB3AH/AdUB2QHaAf8B1AHY
AdQB2AHZAf8B1AHYAdoB/wHUAdgB2QH/AdMB1wHZAf8B0wHWAdgB/wHRAdUB1gH/AfcC+AH/Ay4BRzwA AdkB/wHUAdgB2gH/AdQB2AHZAf8B0wHXAdkB/wHTAdYB2AH/AdEB1QHWAf8B9wL4Af8DLgFHPAADFQEd
AxUBHQNWAbIDAAH/AZQBiAGGAf8BuAGtAasB/wGxAaUBowH/AcEBtwG1Af8BxgG9AbsB/wGwAaIBoAH/ A1YBsgMAAf8BlAGIAYYB/wG4Aa0BqwH/AbEBpQGjAf8BwQG3AbUB/wHGAb0BuwH/AbABogGgAf8BqAGa
AagBmgGYAf8BqAGcAZoB/wGuAaIBoAH/AcIBuAG2Af8BwQG3AbUB/wGqAaABngH/AwAB/wNVAbQDFgEe AZgB/wGoAZwBmgH/Aa4BogGgAf8BwgG4AbYB/wHBAbcBtQH/AaoBoAGeAf8DAAH/A1UBtAMWAR6sAAMl
rAADJQE3A9cB/wP0Af8C6AHiAf8C7AHiAf8CAAH2Af8CugHlAf8C8QHdAf8D3QH/A9oB/wPYAf8D1wH/ ATcD1wH/A/QB/wLoAeIB/wLsAeIB/wIAAfYB/wK6AeUB/wLxAd0B/wPdAf8D2gH/A9gB/wPXAf8D1QH/
A9UB/wPSAf8DwAH/A7UB/wPIAf8DMAFLSAADEgEYAygBPAM+AWoDUAGbA1oBxwNdAeoB+AL5Af8B9AL2 A9IB/wPAAf8DtQH/A8gB/wMwAUtIAAMSARgDKAE8Az4BagNQAZsDWgHHA10B6gH4AvkB/wH0AvYB/wHq
Af8B6gHtAe4B/wHeAeIB4wH/AdUB2QHbAf8B0QHVAdYB/wHNAdIB0wH/AdQB2QHaAf8DZQHlAwwBEEQA Ae0B7gH/Ad4B4gHjAf8B1QHZAdsB/wHRAdUB1gH/Ac0B0gHTAf8B1AHZAdoB/wNlAeUDDAEQRAADNgFY
AzYBWANdAckDAAH/AaMBmAGWAf8BvQGzAbEB/wHTAcoByAH/Ad4B1gHVAf8B0wHKAckB/wHLAcEBwAH/ A10ByQMAAf8BowGYAZYB/wG9AbMBsQH/AdMBygHIAf8B3gHWAdUB/wHTAcoByQH/AcsBwQHAAf8BwgG3
AcIBtwG2Af8BtwGuAa0B/wGiApoB/wNbAcoDNwFatAADIAEtA6gB/QwAAv4C/xAAA/0B/wP7Af8D9gH/ AbYB/wG3Aa4BrQH/AaICmgH/A1sBygM3AVq0AAMgAS0DqAH9DAAC/gL/EAAD/QH/A/sB/wP2Af8B6QLq
AekC6gH/A98B/wPFAf8DMAFMYAADEQEWAycBOgM9AWgDTwGZA1sBxQNjAekB9gH3AfgB/wHvAfIB8wH/ Af8D3wH/A8UB/wMwAUxgAAMRARYDJwE6Az0BaANPAZkDWwHFA2MB6QH2AfcB+AH/Ae8B8gHzAf8B9QH3
AfUB9wH4Af8DVgGrTAAEAgMqAT8DSQGHA1gBvQNdAdwDYQHrA2EB6wNhAdwDWQG+A0kBiAMqAUAEArgA AfgB/wNWAatMAAQCAyoBPwNJAYcDWAG9A10B3ANhAesDYQHrA2EB3ANZAb4DSQGIAyoBQAQCuAADCwEO
AwsBDgNIAYMDTgGUA0oBigNKAYoDSgGKA0oBigNKAYoDSgGKA0oBigNKAYoDSgGKA0oBigNMAZADTAGP A0gBgwNOAZQDSgGKA0oBigNKAYoDSgGKA0oBigNKAYoDSgGKA0oBigNKAYoDSgGKA0wBkANMAY8DIAEt
AyABLXgAAw8BFAMmATgDPAFmA1EBnAMuAUj/ADEACAFYAAgBGAAEAQMDAQQDAwEEAwMBBAMDAQQDAwEE eAADDwEUAyYBOAM8AWYDUQGcAy4BSP8AMQAIAVgACAEYAAQBAwMBBAMDAQQDAwEEAwMBBAMDAQQDAwEE
AwMBBAMDAQQDAwEEAwMBBAMDAQQDAwEEAwMBBAMDAQQDAwEEAwMBBAMDAQQDAwEEAwMBBAMDAQQDAwEE AwMBBAMDAQQDAwEEAwMBBAMDAQQDAwEEAwMBBAMDAQQDAwEEAwMBBAMDAQQDAwEEAwMBBAMDAQQDAwEE
AwMBBAMDAQQDAwEEAwMBBAQBNAADEwEaAzgBXANQAZsDWgHHA10B3wNhAesDYQHrA10B3wNaAccDUQGc AwMBBAMDAQQDAwEEBAE0AAMTARoDOAFcA1ABmwNaAccDXQHfA2EB6wNhAesDXQHfA1oBxwNRAZwDOAFc
AzgBXAMTARooAAMDAQQDJAE0AzMBUQMzAVADMwFQAzMBUAMzAVADMwFQAzMBUAMzAVADMwFQAzMBUAMz AxMBGigAAwMBBAMkATQDMwFRAzMBUAMzAVADMwFQAzMBUAMzAVADMwFQAzMBUAMzAVADMwFQAzMBUAMz
AVADMwFQAzMBUAMzAVADMwFQAzMBUAMzAVADMwFQAzMBUAMzAVADMwFQAzMBUAMzAVADMwFQAzMBUAMz AVADMwFQAzMBUAMzAVADMwFQAzMBUAMzAVADMwFQAzMBUAMzAVADMwFQAzMBUAMzAVADMwFQAzMBUAMz
AVADMwFQAzMBUQMkATUDAwEEEAADDgESAyoBPwMoATsDJwE6AycBOgMnAToDJwE6AycBOgMnAToDMwFR AVADMwFRAyQBNQMDAQQQAAMOARIDKgE/AygBOwMnAToDJwE6AycBOgMnAToDJwE6AycBOgMzAVEDTwGX
A08BlwNcAcgDZQHlA14B8ANlAewDXwHVA1UBrAM+AWsDJwE6AycBOgMnAToDKAE7AyoBPwMPARMEARAA A1wByANlAeUDXgHwA2UB7ANfAdUDVQGsAz4BawMnAToDJwE6AycBOgMoATsDKgE/Aw8BEwQBEAAEAQMP
BAEDDwEUAyEBMAMnAToDJwE6AycBOgMnAToDJwE6AycBOgMnAToDJwE6AycBOgMnAToDJwE6AycBOgMn ARQDIQEwAycBOgMnAToDJwE6AycBOgMnAToDJwE6AycBOgMnAToDJwE6AycBOgMnAToDJwE6AycBOgMn
AToDJwE6AycBOgMnAToDJwE6AycBOgMnAToDJwE6AycBOgMnAToDJwE6AycBOgMhATADDwEUBAEkAAMh AToDJwE6AycBOgMnAToDJwE6AycBOgMnAToDJwE6AycBOgMnAToDJwE6AyEBMAMPARQEASQAAyEBLwNR
AS8DUQGcA14B7QHiAa8BAAH/AdUBnAEAAf8ByQGKAQAB/wHAAgAB/wG7AgAB/wG6AgAB/wG+AgAB/wHG AZwDXgHtAeIBrwEAAf8B1QGcAQAB/wHJAYoBAAH/AcACAAH/AbsCAAH/AboCAAH/Ab4CAAH/AcYBhwEA
AYcBAAH/AdMBmQEAAf8B4QGuAQAB/wNeAe0DUAGdAyEBLyAAAwYBBwNdAc8DkAH/A5IB/wOSAf8DkgH/ Af8B0wGZAQAB/wHhAa4BAAH/A14B7QNQAZ0DIQEvIAADBgEHA10BzwOQAf8DkgH/A5IB/wOSAf8DkgH/
A5IB/wORAf8DkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/ A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/A5EB/wORAf8DkQH/
A5EB/wORAf8DkQH/A5EB/wGRApIB/wOSAf8DkgH/A5IB/wOPAf8DXQHPAwYBCBAAAzQBUwQAA/gB/wP2 A5EB/wORAf8DkQH/AZECkgH/A5IB/wOSAf8DkgH/A48B/wNdAc8DBgEIEAADNAFTBAAD+AH/A/YB/wP2
Af8D9gH/A/YB/wP2Af8D9QH/A+YB/wPAAf8DlwH/A4kB/wMAAf8DAAH/AwAB/wMAAf8DjQH/A64B/wPe Af8D9gH/A/YB/wP1Af8D5gH/A8AB/wOXAf8DiQH/AwAB/wMAAf8DAAH/AwAB/wONAf8DrgH/A94B/wPw
Af8D8AH/A/YB/wP3Af8EAAM4AVsUAAMUARsDUQGkA1oB8gMAAf8DfQH+A30B/gN9Af4DfQH+A30B/gN8 Af8D9gH/A/cB/wQAAzgBWxQAAxQBGwNRAaQDWgHyAwAB/wN+Af4DfgH+A34B/gN+Af4DfgH+A30B/gN3
Af4DdgH+A2IB/gNPAf4DgAH+A4AB/gOAAf4DgAH+A4AB/gOAAf4DgAH+A4AB/gOAAf4DgAH+A4AB/gOA Af4DYwH+A1AB/gOAAf4DgAH+A4AB/gOAAf4DgAH+A4AB/gOAAf4DgAH+A4AB/gOAAf4DgAH+A4AB/gOA
Af4DgAH+AwAB/wNnAfIDUQGkAxQBGxwAAwoBDQNLAYwCbQFsAfcB3AGmAQAB/wHFAYYBAAH/AbwCAAH/ Af4DAAH/A2cB8gNRAaQDFAEbHAADCgENA0sBjAJtAWwB9wHcAaYBAAH/AcUBhgEAAf8BvAIAAf8BvAIA
AbwCAAH/AbkCAAH/AbUCAAH/AawCAAH/AagCAAH/AagCAAH/AacCAAH/AagCAAH/Aa0CAAH/Ab0CAAH/ Af8BuQIAAf8BtQIAAf8BrAIAAf8BqAIAAf8BqAIAAf8BpwIAAf8BqAIAAf8BrQIAAf8BvQIAAf8B2AGg
AdgBoAEAAf8CbQFsAfcDSwGMAwoBDRgAAwYBBwOdAf8B7wLwAf8D6wH/Ae8B8AHxAf8B7wLxAf8D6wH/ AQAB/wJtAWwB9wNLAYwDCgENGAADBgEHA50B/wHvAvAB/wPrAf8B7wHwAfEB/wHvAvEB/wPrAf8D6gH/
A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/ A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/
A+oB/wPqAf8D6gH/AuoB6wH/Au8B8AH/A/EB/wLrAe0B/wPwAf8DnQH/AwYBCBAAAzMBUhQAA/gB/wPX A+oB/wPqAf8C6gHrAf8C7wHwAf8D8QH/AusB7QH/A/AB/wOdAf8DBgEIEAADMwFSFAAD+AH/A9cB/wOn
Af8DpwH/AwAB/wORAf8DuQH/A64B/wOYAf8DAAH/AwAB/wMAAf8DAAH/A4AB/wPAAf8D8QH/CAADNwFa Af8DAAH/A5EB/wO5Af8DrgH/A5gB/wMAAf8DAAH/AwAB/wMAAf8DgAH/A8AB/wPxAf8IAAM3AVoQAAMF
EAADBQEGA1ABmgMAAf8BvAG9AbwB/wHHAsgB/wPCAf8DwgH/A8IB/wPCAf8DwgH/A8IB/wO3Af8DnAH/ AQYDUAGaAwAB/wG8Ab0BvAH/AccCyAH/A8IB/wPCAf8DwgH/A8IB/wPCAf8DwgH/A7cB/wOcAf8DAAH/
AwAB/wP7Af8LAAH/A8oB/wQAA/UB/wMAAf8DygH/AwAB/wPnAf8DAAH/A5QB/wMAAf8DpQH/A5QB/wNQ A/sB/wsAAf8DygH/BAAD9QH/AwAB/wPKAf8DAAH/A+cB/wMAAf8DlAH/AwAB/wOlAf8DlAH/A1ABmgMF
AZoDBQEGFAADHgErA1wBzQHjAbABAAH/AcoBiwEAAf8BuQIAAf8BvQIAAf8BoQGHAQAB/wEAAY4BwwH/ AQYUAAMeASsDXAHNAeMBsAEAAf8BygGLAQAB/wG5AgAB/wG9AgAB/wGhAYcBAAH/AQABjgHDAf8BAAGL
AQABiwG1Af8BhwGFAQAB/wGtAgAB/wG3AgAB/wGrAgAB/wGrAgAB/wGrAgAB/wGqAgAB/wGoAgAB/wGp AbUB/wGHAYUBAAH/Aa0CAAH/AbcCAAH/AasCAAH/AasCAAH/AasCAAH/AaoCAAH/AagCAAH/AakCAAH/
AgAB/wG9AgAB/wHgAa0BAAH/A1wBzQMeASsUAAMGAQcDogH/A+0B/wLpAeoB/wHNAcwBygH/AdIBzwHO Ab0CAAH/AeABrQEAAf8DXAHNAx4BKxQAAwYBBwOiAf8D7QH/AukB6gH/Ac0BzAHKAf8B0gHPAc4B/wHr
Af8B6wHsAe0B/wPnAf8D5QH/A+QB/wPkAf8D5AH/A+QB/wPkAf8D5AH/A+UB/wPmAf8D5gH/A+UB/wPl AewB7QH/A+cB/wPlAf8D5AH/A+QB/wPkAf8D5AH/A+QB/wPkAf8D5QH/A+YB/wPmAf8D5QH/A+UB/wPl
Af8D5QH/A+UB/wPkAf8D5AH/A+UB/wLqAesB/wHUAdIB0QH/Ac0BywHJAf8D6wH/A+4B/wOiAf8DBgEI Af8D5QH/A+QB/wPkAf8D5QH/AuoB6wH/AdQB0gHRAf8BzQHLAckB/wPrAf8D7gH/A6IB/wMGAQgQAAMz
EAADMwFSEAAD+QH/A88B/wOeAf8DgQH/A5MB/wPIAf8DwAH/A70B/wPDAf8DsAH/A4kB/wMAAf8DAAH/ AVIQAAP5Af8DzwH/A54B/wOBAf8DkwH/A8gB/wPAAf8DvQH/A8MB/wOwAf8DiQH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8DtAH/A/AB/wQAAzcBWhAAAwwBEANIAfYDAAH/Ab0CvgH/AcIBwwHCAf8DvgH/A74B/wO+ AwAB/wO0Af8D8AH/BAADNwFaEAADDAEQA0gB9gMAAf8BvQK+Af8BwgHDAcIB/wO+Af8DvgH/A74B/wO+
Af8DvgH/A74B/wO+Af8DtAH/A5cB/wMAAf8D9AH/A/4B/wcAAf8DiQH/BAADvAH/AwAB/wPnAf8DAAH/ Af8DvgH/A74B/wO0Af8DlwH/AwAB/wP0Af8D/gH/BwAB/wOJAf8EAAO8Af8DAAH/A+cB/wMAAf8DAAH/
AwAB/wMAAf8B+gH7AfoB/wO7Af8DAAH/A4QB/wNiAfYDDAEQEAADJQE3A2UB5wHdAacBAAH/AcIBgAEA AwAB/wH6AfsB+gH/A7sB/wMAAf8DhAH/A2IB9gMMARAQAAMlATcDZQHnAd0BpwEAAf8BwgGAAQAB/wG8
Af8BvAIAAf8BwQIAAf8BqgGKAQAB/wEAAZAB8wH/AQABhgH9Af8BAAGEAfsB/wEAAYMB/QH/AQABhgHr AgAB/wHBAgAB/wGqAYoBAAH/AQABkAHzAf8BAAGGAf0B/wEAAYQB+wH/AQABgwH9Af8BAAGGAesB/wEA
Af8BAAGHAZoB/wG2AgAB/wGxAgAB/wGqAgAB/wGrAgAB/wGrAgAB/wGrAgAB/wGnAgAB/wGuAgAB/wHV AYcBmgH/AbYCAAH/AbECAAH/AaoCAAH/AasCAAH/AasCAAH/AasCAAH/AacCAAH/Aa4CAAH/AdUBnAEA
AZwBAAH/A2UB5wMlATcQAAMGAQcDoAH/A/AB/wHTAdAB0QH/AaYBoQGbAf8DAAH/AcUBwgG/Af8C7QHv Af8DZQHnAyUBNxAAAwYBBwOgAf8D8AH/AdMB0AHRAf8BpgGhAZsB/wMAAf8BxQHCAb8B/wLtAe8B/wPl
Af8D5QH/A+UB/wPlAf8D5QH/A+UB/wPlAf8D5QH/A+UB/wPmAf8D4wH/A+AB/wPhAf8D5AH/A+YB/wPl Af8D5QH/A+UB/wPlAf8D5QH/A+UB/wPlAf8D5QH/A+YB/wPjAf8D4AH/A+EB/wPkAf8D5gH/A+UB/wPl
Af8D5QH/A+oB/wHVAtQB/wGcAZYBkQH/AYICAAH/AbcBsgGvAf8B8wL0Af8DoQH/AwYBCBAAAzMBUhAA Af8D6gH/AdUC1AH/AZwBlgGRAf8BggIAAf8BtwGyAa8B/wHzAvQB/wOhAf8DBgEIEAADMwFSEAAD1QH/
A9UB/wOmAf8DlQH/A5EB/wOdAf8DygH/A78B/wO5Af8DsgH/A7gB/wPAAf8DsgH/A4oB/wMAAf8DAAH/ A6YB/wOVAf8DkQH/A50B/wPKAf8DvwH/A7kB/wOyAf8DuAH/A8AB/wOyAf8DigH/AwAB/wMAAf8DAAH/
AwAB/wO8Af8D9gH/AzcBWhAAAw4BEgMAAf8DAAH/Ab0CvAH/AcQBxQHEAf8DwQH/A8EB/wPBAf8BxAHC A7wB/wP2Af8DNwFaEAADDgESAwAB/wMAAf8BvQK8Af8BxAHFAcQB/wPBAf8DwQH/A8EB/wHEAcIBvgH/
Ab4B/wHEAcIBvgH/A78B/wO2Af8DmgH/AwAB/wP0Af8D/AH/BAAD0wH/AwAB/wMAAf8DAAH/A7AB/yAA AcQBwgG+Af8DvwH/A7YB/wOaAf8DAAH/A/QB/wP8Af8EAAPTAf8DAAH/AwAB/wMAAf8DsAH/IAADrgH/
A64B/wMOARIMAAMdASkDYAHoAdsBpAEAAf8BwwGBAQAB/wHAAgAB/wG/AgAB/wHIAgAB/wEAAZMBpwH/ Aw4BEgwAAx0BKQNgAegB2wGkAQAB/wHDAYEBAAH/AcACAAH/Ab8CAAH/AcgCAAH/AQABkwGnAf8BAAGL
AQABiwL/AQABiAHxAf8BAAGFAfEB/wEAAYMB8QH/AgAB8wH/AgAB/gH/AQABiAHGAf8BnwIAAf8BtgIA Av8BAAGIAfEB/wEAAYUB8QH/AQABgwHxAf8CAAHzAf8CAAH+Af8BAAGIAcYB/wGfAgAB/wG2AgAB/wG0
Af8BtAIAAf8BqwIAAf8BqwIAAf8BqwIAAf8BqQIAAf8BqQIAAf8B0AGVAQAB/wNgAegDHQEpDAADBgEH AgAB/wGrAgAB/wGrAgAB/wGrAgAB/wGpAgAB/wGpAgAB/wHQAZUBAAH/A2AB6AMdASkMAAMGAQcDoQH/
A6EB/wPwAf8CxgHHAf8C6AHpAf8BvwG8AboB/wGzAbABrQH/Ae4C8AH/A+YB/wPmAf8D5gH/A+YB/wPm A/AB/wLGAccB/wLoAekB/wG/AbwBugH/AbMBsAGtAf8B7gLwAf8D5gH/A+YB/wPmAf8D5gH/A+YB/wPm
Af8D5gH/A+cB/wPmAf8D3wH/A9UB/wPOAf8D0gH/A9wB/wPlAf8D5gH/A+YB/wLrAewB/wLIAccB/wHm Af8D5wH/A+YB/wPfAf8D1QH/A84B/wPSAf8D3AH/A+UB/wPmAf8D5gH/AusB7AH/AsgBxwH/AeYC5wH/
AucB/wG+AroB/wGmAaIBnwH/AvQB9QH/A6IB/wMGAQgQAAMzAVIMAAPoAf8DuAH/A54B/wOfAf8DnQH/ Ab4CugH/AaYBogGfAf8C9AH1Af8DogH/AwYBCBAAAzMBUgwAA+gB/wO4Af8DngH/A58B/wOdAf8DqwH/
A6sB/wPHAf8DxwH/A7sB/wO3Af8DswH/A7IB/wO+Af8DuQH/AwAB/wMAAf8DAAH/AwAB/wPUAf8DNwFa A8cB/wPHAf8DuwH/A7cB/wOzAf8DsgH/A74B/wO5Af8DAAH/AwAB/wMAAf8DAAH/A9QB/wM3AVoQAAMO
EAADDgESAUcBIgE1Af4DAAH/Ab8CwQH/AcgCyQH/A8QB/wHKAcgBxAH/AdQB0gHDAf8BwQHCAcoB/wHB ARIBSAEjATYB/gMAAf8BvwLBAf8ByALJAf8DxAH/AcoByAHEAf8B1AHSAcMB/wHBAcIBygH/AcEBwgHK
AcIBygH/AdQB0gHDAf8BvgG8AbcB/wKbAZwB/wMAAf8D9AH/A/wB/wH6AvkB/wQAAvoB+wH/As8BzgH/ Af8B1AHSAcMB/wG+AbwBtwH/ApsBnAH/AwAB/wP0Af8D/AH/AfoC+QH/BAAC+gH7Af8CzwHOAf8D8QH/
A/EB/wQAA/oB/wP5Af8D+gH/AfsC+gH/AfYB+QH3Af8B9gH5AfcB/wL7AfwB/wQAA4AB/gMOARIIAAMJ BAAD+gH/A/kB/wP6Af8B+wL6Af8B9gH5AfcB/wH2AfkB9wH/AvsB/AH/BAADgAH+Aw4BEggAAwkBDANf
AQwDXwHQAd4BqQEAAf8BxQGFAQAB/wHEAYMBAAH/AcMBgQEAAf8BwAIAAf8ByAIAAf8BAAGTAa0B/wEA AdAB3gGpAQAB/wHFAYUBAAH/AcQBgwEAAf8BwwGBAQAB/wHAAgAB/wHIAgAB/wEAAZMBrQH/AQABjQH8
AY0B/AH/AQABigHyAf8BAAGHAfEB/wEAAYQB8QH/AQABgQHwAf8CAAHwAf8CAAH4Af8BAAGDAfYB/wEA Af8BAAGKAfIB/wEAAYcB8QH/AQABhAHxAf8BAAGBAfAB/wIAAfAB/wIAAfgB/wEAAYMB9gH/AQABhwHL
AYcBywH/AYYBgwGAAf8BsgIAAf8BrQIAAf8BqwIAAf8BqwIAAf8BqgIAAf8BqQIAAf8B1QGcAQAB/wNf Af8BhgGDAYAB/wGyAgAB/wGtAgAB/wGrAgAB/wGrAgAB/wGqAgAB/wGpAgAB/wHVAZwBAAH/A18B0AMJ
AdADCQEMCAADBgEHA6EB/wPvAf8D3wH/A7UB/wG7AboBuQH/A+AB/wPqAf8D5wH/A+cB/wPnAf8D5wH/ AQwIAAMGAQcDoQH/A+8B/wPfAf8DtQH/AbsBugG5Af8D4AH/A+oB/wPnAf8D5wH/A+cB/wPnAf8D5wH/
A+cB/wPoAf8D7gH/A+cB/wPTAf8DvQH/A7EB/wPAAf8D1QH/A+MB/wPoAf8D5wH/A+kB/wPiAf8DxQH/ A+gB/wPuAf8D5wH/A9MB/wO9Af8DsQH/A8AB/wPVAf8D4wH/A+gB/wPnAf8D6QH/A+IB/wPFAf8BvgK9
Ab4CvQH/AdcC2AH/A/EB/wOhAf8DBgEIEAADMwFSCAAD/QH/A8sB/wOrAf8DqAH/A6oB/wOPAf8DAAH/ Af8B1wLYAf8D8QH/A6EB/wMGAQgQAAMzAVIIAAP9Af8DywH/A6sB/wOoAf8DqgH/A48B/wMAAf8DAAH/
AwAB/wOCAf8DzAH/A7kB/wO0Af8DswH/A7UB/wO2Af8DAAH/AwAB/wMAAf8DAAH/A6EB/wNPAZkQAAMO A4IB/wPMAf8DuQH/A7QB/wOzAf8DtQH/A7YB/wMAAf8DAAH/AwAB/wMAAf8DoQH/A08BmRAAAw4BEgFH
ARIBRgEhATUB/gMAAf8BwwLEAf8BywLNAf8CzQHIAf8CzgHJAf8BAAGBAeIB/wIAAfcB/wIAAfcB/wEA ASIBNgH+AwAB/wHDAsQB/wHLAs0B/wLNAcgB/wLOAckB/wEAAYEB4gH/AgAB9wH/AgAB9wH/AQABggHg
AYIB4AH/AcMBwgG9Af8BpAGjAZ8B/wMAAf8C9QH0Af8B/AH7AfwB/wHsAfUB9wH/AeoB9wH6Af8B7QH6 Af8BwwHCAb0B/wGkAaMBnwH/AwAB/wL1AfQB/wH8AfsB/AH/AewB9QH3Af8B6gH3AfoB/wHtAfoC/wH2
Av8B9gP/AfwC/gH/A/kB/wP5Af8D+QH/AfcB+QH3Af8B7wH4AfAB/wHrAfsB8wH/AesB+wHzAf8B7wH5 A/8B/AL+Af8D+QH/A/kB/wP5Af8B9wH5AfcB/wHvAfgB8AH/AesB+wHzAf8B6wH7AfMB/wHvAfkB8wH/
AfMB/wQAA4AB/gMOARIIAANLAY0B5QGzAQAB/wHLAY0BAAH/AccBhwEAAf8BxgGFAQAB/wHDAYIBAAH/ BAADgAH+Aw4BEggAA0sBjQHlAbMBAAH/AcsBjQEAAf8BxwGHAQAB/wHGAYUBAAH/AcMBggEAAf8BwQIA
AcECAAH/AckCAAH/AQABlQGtAf8BAAGOAfwB/wEAAYsB8gH/AQABiAHxAf8BAAGFAfEB/wEAAYIB8QH/ Af8ByQIAAf8BAAGVAa0B/wEAAY4B/AH/AQABiwHyAf8BAAGIAfEB/wEAAYUB8QH/AQABggHxAf8CAAHw
AgAB8AH/AgAB8AH/AgAB8QH/AgAB+AH/AQABgAL/AQABigHJAf8BrwIAAf8BrAIAAf8BqwIAAf8BqwIA Af8CAAHwAf8CAAHxAf8CAAH4Af8BAAGAAv8BAAGKAckB/wGvAgAB/wGsAgAB/wGrAgAB/wGrAgAB/wGp
Af8BqQIAAf8BrgIAAf8B4AGsAQAB/wNLAY0IAAMGAQcDoQH/A+0B/wPrAf8D6QH/AekC6gH/A+sB/wPn AgAB/wGuAgAB/wHgAawBAAH/A0sBjQgAAwYBBwOhAf8D7QH/A+sB/wPpAf8B6QLqAf8D6wH/A+cB/wPn
Af8D5wH/A+cB/wPnAf8D5wH/A+cB/wPrAf8D1gH/A8cB/wOrAf8BkQGSAZEB/wObAf8DtQH/A9IB/wPj Af8D5wH/A+cB/wPnAf8D5wH/A+sB/wPWAf8DxwH/A6sB/wGRAZIBkQH/A5sB/wO1Af8D0gH/A+MB/wPn
Af8D5wH/A+cB/wPnAf8D6gH/A+kB/wPpAf8D7QH/A+0B/wOhAf8DBgEIEAADMwFSCAAD7gH/A8AB/wOs Af8D5wH/A+cB/wPqAf8D6QH/A+kB/wPtAf8D7QH/A6EB/wMGAQgQAAMzAVIIAAPuAf8DwAH/A6wB/wOs
Af8DrAH/A7kB/wMAAf8DAAH/AwAB/wMAAf8DyAH/A70B/wO2Af8DswH/A8QB/wOgAf8DAAH/AwAB/wMA Af8DuQH/AwAB/wMAAf8DAAH/AwAB/wPIAf8DvQH/A7YB/wOzAf8DxAH/A6AB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wNgAdsDIQEvDAADDgESAUQBIAEzAf4DAAH/A8UB/wHPAdEBzwH/Ad0B2QHJAf8CAAHQ Af8DAAH/A2AB2wMhAS8MAAMOARIBRQEhATQB/gMAAf8DxQH/Ac8B0QHPAf8B3QHZAckB/wIAAdAB/wIA
Af8CAAH8Af8BqwG7Af4B/wGtAbsB/gH/AgAB/AH/AgABxgH/AbEBrwGfAf8DgQH/AfYB9AH1Af8B7wH2 AfwB/wGrAbsB/gH/Aa0BuwH+Af8CAAH8Af8CAAHGAf8BsQGvAZ8B/wOBAf8B9gH0AfUB/wHvAfYB+QH/
AfkB/wHhAfAB9wH/AeoB+QL/AewB+AL/AeEB8AH3Af8B6gHwAfUB/wH6AvkB/wH6AfkB+gH/AfoC+QH/ AeEB8AH3Af8B6gH5Av8B7AH4Av8B4QHwAfcB/wHqAfAB9QH/AfoC+QH/AfoB+QH6Af8B+gL5Af8B6gH1
AeoB9QHuAf8B5AH3AesB/wHtAf8B9AH/Ae0B/wH0Af8B5QH4AesB/wHyAf0B+AH/A4AB/gMOARIEAAMf Ae4B/wHkAfcB6wH/Ae0B/wH0Af8B7QH/AfQB/wHlAfgB6wH/AfIB/QH4Af8DgAH+Aw4BEgQAAx8BLAJq
ASwCagFoAfkB1QGcAQAB/wHJAYsBAAH/AckBigEAAf8BxgGGAQAB/wHFAYMBAAH/AcIBgAEAAf8BygIA AWgB+QHVAZwBAAH/AckBiwEAAf8ByQGKAQAB/wHGAYYBAAH/AcUBgwEAAf8BwgGAAQAB/wHKAgAB/wEA
Af8BAAGWAagB/wEAAZAB/QH/AQABjQHyAf8BAAGKAfIB/wEAAYYB8QH/AQABhAHxAf8BAAGAAfAB/wIA AZYBqAH/AQABkAH9Af8BAAGNAfIB/wEAAYoB8gH/AQABhgHxAf8BAAGEAfEB/wEAAYAB8AH/AgAB8AH/
AfAB/wIAAfAB/wIAAfAB/wIAAfAB/wEAAYIC/wGXAgAB/wGwAgAB/wGrAgAB/wGrAgAB/wGrAgAB/wGn AgAB8AH/AgAB8AH/AgAB8AH/AQABggL/AZcCAAH/AbACAAH/AasCAAH/AasCAAH/AasCAAH/AacCAAH/
AgAB/wG9AgAB/wJqAWgB+QMfASwEAAMGAQcDowH/A+8B/wPoAf8D6QH/A+kB/wPoAf8D6AH/A+kB/wPp Ab0CAAH/AmoBaAH5Ax8BLAQAAwYBBwOjAf8D7wH/A+gB/wPpAf8D6QH/A+gB/wPoAf8D6QH/A+kB/wPp
Af8D6QH/A+kB/wPqAf8D7wH/AZUBlgGVAf8BjgGPAY4B/wGUAZYBlQH/AwAB/wOIAf8DsAH/A9IB/wPn Af8D6QH/A+oB/wPvAf8BlQGWAZUB/wGOAY8BjgH/AZQBlgGVAf8DAAH/A4gB/wOwAf8D0gH/A+cB/wPq
Af8D6gH/A+kB/wPpAf8D6AH/A+kB/wPpAf8D6AH/A+4B/wOjAf8DBgEIEAADMwFSCAAD4QH/A7gB/wOs Af8D6QH/A+kB/wPoAf8D6QH/A+kB/wPoAf8D7gH/A6MB/wMGAQgQAAMzAVIIAAPhAf8DuAH/A6wB/wOu
Af8DrgH/A7IB/wORAf8DAAH/AwAB/wMAAf8DxgH/A8QB/wPFAf8DuwH/A6AB/wOSAf8DsgH/A5UB/wMA Af8DsgH/A5EB/wMAAf8DAAH/AwAB/wPGAf8DxAH/A8UB/wO7Af8DoAH/A5IB/wOyAf8DlQH/AwAB/wMA
Af8DAAH/AwAB/wMrAfwDQQFyDAADDgESAUEBHgExAf4DAAH/A8gB/wLZAdQB/wHJAcgBxwH/AgABvQH/ Af8DAAH/AysB/ANBAXIMAAMOARIBQgEfATIB/gMAAf8DyAH/AtkB1AH/AckByAHHAf8CAAG9Af8CAAHv
AgAB7wH/AgAB9QH/AgAB9QH/AgAB7wH/AgABswH/AaABnwGcAf8BhwGGAYUB/wLyAfQB/wHmAe4B8gH/ Af8CAAH1Af8CAAH1Af8CAAHvAf8CAAGzAf8BoAGfAZwB/wGHAYYBhQH/AvIB9AH/AeYB7gHyAf8B3gHr
Ad4B6wHyAf8B5wH1AfsB/wHkAfMB+QH/Ad4B6wHyAf8B5AHuAfIB/wH5AfcB+QH/A/wB/wH8Af4B/AH/ AfIB/wHnAfUB+wH/AeQB8wH5Af8B3gHrAfIB/wHkAe4B8gH/AfkB9wH5Af8D/AH/AfwB/gH8Af8B5gH2
AeYB9gHuAf8B4QH0AekB/wHmAfoB7QH/AeoB/AHwAf8B4AH1AegB/wHsAfsB8QH/A4AB/gMOARIEAANR Ae4B/wHhAfQB6QH/AeYB+gHtAf8B6gH8AfAB/wHgAfUB6AH/AewB+wHxAf8DgAH+Aw4BEgQAA1EBngHi
AZ4B4gGvAQAB/wHNAZABAAH/AcwBjgEAAf8BygGLAQAB/wHHAYgBAAH/AcUBhQEAAf8BwwGBAQAB/wHL Aa8BAAH/Ac0BkAEAAf8BzAGOAQAB/wHKAYsBAAH/AccBiAEAAf8BxQGFAQAB/wHDAYEBAAH/AcsCAAH/
AgAB/wGEAZYBngH/AQABkgH+Af8BAAGOAfIB/wEAAYsB8gH/AQABiAHxAf8BAAGFAfEB/wEAAYIB8QH/ AYQBlgGeAf8BAAGSAf4B/wEAAY4B8gH/AQABiwHyAf8BAAGIAfEB/wEAAYUB8QH/AQABggHxAf8CAAHw
AgAB8AH/AgAB8AH/AgAB8AH/AgAB8AH/AQABggH7Af8BlQIAAf8BsAIAAf8BqwIAAf8BqwIAAf8BqwIA Af8CAAHwAf8CAAHwAf8CAAHwAf8BAAGCAfsB/wGVAgAB/wGwAgAB/wGrAgAB/wGrAgAB/wGrAgAB/wGr
Af8BqwIAAf8BqAIAAf8B2AGgAQAB/wNRAZ8EAAMGAQcDpAH/A/AB/wPqAf8D6gH/A+oB/wPqAf8D6gH/ AgAB/wGoAgAB/wHYAaABAAH/A1EBnwQAAwYBBwOkAf8D8AH/A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/
A+oB/wPqAf8D6gH/A+oB/wPqAf8D9QH/AcsBygHLAf8DzwH/A9oB/wOuAf8DAAH/A64B/wPXAf8D6QH/ A+oB/wPqAf8D6gH/A+oB/wP1Af8BywHKAcsB/wPPAf8D2gH/A64B/wMAAf8DrgH/A9cB/wPpAf8D6wH/
A+sB/wPqAf8D6gH/A+oB/wPqAf8D6gH/A+oB/wPwAf8DpAH/AwYBCBAAAzMBUgQAA/4B/wPXAf8DzwH/ A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/A/AB/wOkAf8DBgEIEAADMwFSBAAD/gH/A9cB/wPPAf8DwQH/
A8EB/wOtAf8DqAH/A7sB/wMAAf8DAAH/AwAB/wPUAf8DuwH/A5kB/wMAAf8DAAH/A7wB/wPAAf8DvAH/ A60B/wOoAf8DuwH/AwAB/wMAAf8DAAH/A9QB/wO7Af8DmQH/AwAB/wMAAf8DvAH/A8AB/wO8Af8DAAH/
AwAB/wMAAf8DAAH/A64B/wNPAZcMAAMOARIBPQEdAS0B/gMAAf8BywLNAf8C2wHXAf8BzwHOAckB/wIA AwAB/wMAAf8DrgH/A08BlwwAAw4BEgE+AR4BLgH+AwAB/wHLAs0B/wLbAdcB/wHPAc4ByQH/AgABjgH/
AY4B/wIAAcsB/wIAAekB/wIAAekB/wIAAcoB/wIAAYUB/wKmAaEB/wGJAYgBhwH/AvIB9AH/AeUB7AHw AgABywH/AgAB6QH/AgAB6QH/AgABygH/AgABhQH/AqYBoQH/AYkBiAGHAf8C8gH0Af8B5QHsAfAB/wHg
Af8B4AHtAfEB/wHhAfAB9QH/AeIB8gH5Af8B5wH1AfoB/wHnAe8B8QH/AfwB+wH8Af8EAAPsAf8BzQHY Ae0B8QH/AeEB8AH1Af8B4gHyAfkB/wHnAfUB+gH/AecB7wHxAf8B/AH7AfwB/wQAA+wB/wHNAdgB0QH/
AdEB/wHhAfMB6AH/AesB/QHyAf8B6gH7AfAB/wHpAfwB8QH/AewB9wHwAf8DgAH+Aw4EEgEYA14B8AHY AeEB8wHoAf8B6wH9AfIB/wHqAfsB8AH/AekB/AHxAf8B7AH3AfAB/wOAAf4DDgQSARgDXgHwAdgBoAEA
AaABAAH/Ac0BkQEAAf8BzQGQAQAB/wHLAY0BAAH/AckBigEAAf8BxgGGAQAB/wHEAYMBAAH/AcwBgwEA Af8BzQGRAQAB/wHNAZABAAH/AcsBjQEAAf8ByQGKAQAB/wHGAYYBAAH/AcQBgwEAAf8BzAGDAQAB/wEA
Af8BAAGZAbgB/wEAAZIB/AH/AQABjwHyAf8BAAGMAfIB/wEAAYoB8gH/AQABhgHxAf8BAAGEAfEB/wEA AZkBuAH/AQABkgH8Af8BAAGPAfIB/wEAAYwB8gH/AQABigHyAf8BAAGGAfEB/wEAAYQB8QH/AQABgQHw
AYEB8AH/AgAB8AH/AgAB8AH/AgAB8QH/AQABhAH1Af8BoAIAAf8BrgIAAf8BqwIAAf8BqwIAAf8BqwIA Af8CAAHwAf8CAAHwAf8CAAHxAf8BAAGEAfUB/wGgAgAB/wGuAgAB/wGrAgAB/wGrAgAB/wGrAgAB/wGr
Af8BqwIAAf8BqAIAAf8BvQIAAf8DXgHwAxIBGAMGAQcDpAH/A/AB/wPqAf8D6gH/A+oB/wPqAf8D6gH/ AgAB/wGoAgAB/wG9AgAB/wNeAfADEgEYAwYBBwOkAf8D8AH/A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/
A+oB/wPqAf8D6gH/A+oB/wP1Af8DsgH/A74B/wgAA7sB/wMAAf8DuAH/A90B/wPrAf8D6gH/A+oB/wPq A+oB/wPqAf8D6gH/A/UB/wOyAf8DvgH/CAADuwH/AwAB/wO4Af8D3QH/A+sB/wPqAf8D6gH/A+oB/wPq
Af8D6gH/A+oB/wPqAf8D6gH/A/AB/wOkAf8DBgEIEAADMwFSBAAD/QH/A+EB/wPyAf8D8gH/A9IB/wOs Af8D6gH/A+oB/wPqAf8D8AH/A6QB/wMGAQgQAAMzAVIEAAP9Af8D4QH/A/IB/wPyAf8D0gH/A6wB/wOy
Af8DsgH/A7wB/wMAAf8DAAH/A8AB/wMAAf8DgwH/A5kB/wOjAf8DvQH/A7MB/wO7Af8DhgH/AwAB/wMA Af8DvAH/AwAB/wMAAf8DwAH/AwAB/wODAf8DmQH/A6MB/wO9Af8DswH/A7sB/wOGAf8DAAH/AwAB/wOo
Af8DqAH/A1EBogwAAw4BEgE7ARwBLAH+AwAB/wHOAs8B/wPXAf8B7QHqAd4B/wMAAf8CAAHDAf8CAAH8 Af8DUQGiDAADDgESATwBHQEtAf4DAAH/Ac4CzwH/A9cB/wHtAeoB3gH/AwAB/wIAAcMB/wIAAfwB/wIA
Af8CAAH8Af8CAAHEAf8DAAH/Ab4BvAGxAf8DhgH/A/UB/wHwAfQB9QH/AesB+AH8Af8DAAH/AeAB7QHy AfwB/wIAAcQB/wMAAf8BvgG8AbEB/wOGAf8D9QH/AfAB9AH1Af8B6wH4AfwB/wMAAf8B4AHtAfIB/wHb
Af8B2wHmAesB/wMAAf8D5QH/A5kB/wMAAf8DAAH/AdEB4QHYAf8BvQHLAcIB/wMAAf8B5gH2AesB/wMA AeYB6wH/AwAB/wPlAf8DmQH/AwAB/wMAAf8B0QHhAdgB/wG9AcsBwgH/AwAB/wHmAfYB6wH/AwAB/wOA
Af8DgAH+Aw4BEgM4AVwB5gG1AQAB/wHTAZkBAAH/Ac8BlAEAAf8BzgGSAQAB/wHMAY4BAAH/AcoBiwEA Af4DDgESAzgBXAHmAbUBAAH/AdMBmQEAAf8BzwGUAQAB/wHOAZIBAAH/AcwBjgEAAf8BygGLAQAB/wHH
Af8BxwGIAQAB/wHGAYMBAAH/AccBigEAAf8BAAGbAdwB/wEAAZMB+AH/AQABkQHzAf8BAAGOAfIB/wEA AYgBAAH/AcYBgwEAAf8BxwGKAQAB/wEAAZsB3AH/AQABkwH4Af8BAAGRAfMB/wEAAY4B8gH/AQABiwHy
AYsB8gH/AQABiAHxAf8BAAGFAfEB/wEAAYIB8AH/AgAB8AH/AgAB8AH/AgAB/gH/AQABiAHFAf8BuAIA Af8BAAGIAfEB/wEAAYUB8QH/AQABggHwAf8CAAHwAf8CAAHwAf8CAAH+Af8BAAGIAcUB/wG4AgAB/wGz
Af8BswIAAf8BrQIAAf8BqwIAAf8BqwIAAf8BqwIAAf8BqgIAAf8BrQIAAf8B4QGuAQAB/wM4AVwDBgEH AgAB/wGtAgAB/wGrAgAB/wGrAgAB/wGrAgAB/wGqAgAB/wGtAgAB/wHhAa4BAAH/AzgBXAMGAQcDpAH/
A6QB/wPxAf8D6wH/A+sB/wPrAf8D6wH/A+sB/wPrAf8D6wH/A+sB/wPrAf8D/AH/A5gB/wOjAf8IAAOp A/EB/wPrAf8D6wH/A+sB/wPrAf8D6wH/A+sB/wPrAf8D6wH/A+sB/wP8Af8DmAH/A6MB/wgAA6kB/wMA
Af8DAAH/A8cB/wPkAf8D7QH/A+sB/wPrAf8D6wH/A+sB/wPrAf8D6wH/A+sB/wPxAf8DpAH/AwYBCBAA Af8DxwH/A+QB/wPtAf8D6wH/A+sB/wPrAf8D6wH/A+sB/wPrAf8D6wH/A/EB/wOkAf8DBgEIEAADMwFS
AzMBUgQAA/wB/wPVAf8DrgH/AwAB/wMAAf8DswH/A7oB/wPpAf8DAAH/AwAB/wMAAf8DkwH/A7AB/wPD BAAD/AH/A9UB/wOuAf8DAAH/AwAB/wOzAf8DugH/A+kB/wMAAf8DAAH/AwAB/wOTAf8DsAH/A8MB/wO6
Af8DugH/A7EB/wOzAf8DugH/A4YB/wMAAf8DAAH/A64B/wNQAZoMAAMOARIBOgEfASwB/gMAAf8B0ALR Af8DsQH/A7MB/wO6Af8DhgH/AwAB/wMAAf8DrgH/A1ABmgwAAw4BEgE7ASABLQH+AwAB/wHQAtEB/wPa
Af8D2gH/AtsB2QH/AdwB2gHQAf8CAAGPAf8CAAGjAf8CAAGjAf8CAAGQAf8BzwHNAcQB/wKvAa0B/wOH Af8C2wHZAf8B3AHaAdAB/wIAAY8B/wIAAaMB/wIAAaMB/wIAAZAB/wHPAc0BxAH/Aq8BrQH/A4cB/wP1
Af8D9QH/Av4B/AH/AfoB/gL/AwAB/wHrAfEB9gH/AwAB/wMAAf8D0QH/AwAB/wOUAf8BvAK9Af8B9gH+ Af8C/gH8Af8B+gH+Av8DAAH/AesB8QH2Af8DAAH/AwAB/wPRAf8DAAH/A5QB/wG8Ar0B/wH2Af4B+QH/
AfkB/wEAAYIBgAH/AwAB/wGKAY4BiwH/AwAB/wOAAf4DDgESA1ABnQHhAa4BAAH/AdIBmAEAAf8B0QGW AQABggGAAf8DAAH/AYoBjgGLAf8DAAH/A4AB/gMOARIDUAGdAeEBrgEAAf8B0gGYAQAB/wHRAZYBAAH/
AQAB/wHOAZMBAAH/Ac0BkAEAAf8BywGNAQAB/wHIAYkBAAH/AcoBhAEAAf8BtgGTAQAB/wEAAZsB9QH/ Ac4BkwEAAf8BzQGQAQAB/wHLAY0BAAH/AcgBiQEAAf8BygGEAQAB/wG2AZMBAAH/AQABmwH1Af8BAAGV
AQABlQH1Af8BAAGSAfMB/wEAAY8B8gH/AQABjAHyAf8BAAGJAfEB/wEAAYYB8gH/AQABggH2Af8BAAGA AfUB/wEAAZIB8wH/AQABjwHyAf8BAAGMAfIB/wEAAYkB8QH/AQABhgHyAf8BAAGCAfYB/wEAAYAB+wH/
AfsB/wEAAYAB/gH/AQABiAHSAf8BsgIAAf8BpQIAAf8BhQGCAQAB/wGoAgAB/wGvAgAB/wGrAgAB/wGr AQABgAH+Af8BAAGIAdIB/wGyAgAB/wGlAgAB/wGFAYIBAAH/AagCAAH/Aa8CAAH/AasCAAH/AasCAAH/
AgAB/wGrAgAB/wGoAgAB/wHSAZkBAAH/A1ABnQMGAQcDpQH/A/IB/wPsAf8D7AH/A+wB/wPsAf8D7AH/ AasCAAH/AagCAAH/AdIBmQEAAf8DUAGdAwYBBwOlAf8D8gH/A+wB/wPsAf8D7AH/A+wB/wPsAf8D7AH/
A+wB/wPsAf8D7AH/A+wB/wP9Af8DoAH/A5gB/wP8Af8D/gH/A5oB/wMAAf8D1gH/A+oB/wPtAf8D7AH/ A+wB/wPsAf8D7AH/A/0B/wOgAf8DmAH/A/wB/wP+Af8DmgH/AwAB/wPWAf8D6gH/A+0B/wPsAf8D7AH/
A+wB/wPsAf8D7AH/A+wB/wPsAf8D7AH/A/IB/wOlAf8DBgEIEAADMwFSA7gB/wMAAf8DAAH/AwAB/wMA A+wB/wPsAf8D7AH/A+wB/wPsAf8D8gH/A6UB/wMGAQgQAAMzAVIDuAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/A4gB/wPqAf8DtAH/AwAB/wMAAf8DAAH/AwAB/wPTAf8DwwH/A7oB/wO7Af8DuQH/A7wB/wOA Af8DiAH/A+oB/wO0Af8DAAH/AwAB/wMAAf8DAAH/A9MB/wPDAf8DugH/A7sB/wO5Af8DvAH/A4AB/wMA
Af8DAAH/AwAB/wOAAf4DRAF4DAADDgESATwBIQEuAf4DAAH/A9YB/wHaAtsB/wPVAf8B3wHdAdoB/wHq Af8DAAH/A4AB/gNEAXgMAAMOARIBPQEiAS8B/gMAAf8D1gH/AdoC2wH/A9UB/wHfAd0B2gH/AeoB5wHb
AecB2wH/AcUBwwHBAf8BxQHEAcEB/wHoAecB2wH/AdMB0AHOAf8CqQGrAf8DhwH/A/YB/wsAAf8DAAH/ Af8BxQHDAcEB/wHFAcQBwQH/AegB5wHbAf8B0wHQAc4B/wKpAasB/wOHAf8D9gH/CwAB/wMAAf8DAAH/
AwAB/wMAAf8DywH/AwAB/wGXApYB/wMAAf8BzQLLAf8DAAH/AbYBtwG2Af8DAAH/A6YB/wOAAf4DDgES AwAB/wPLAf8DAAH/AZcClgH/AwAB/wHNAssB/wMAAf8BtgG3AbYB/wMAAf8DpgH/A4AB/gMOARIDXQHJ
A10ByQHjAasBAAH/AdsBmgEAAf8B2AGWAQAB/wHPAZQBAAH/Ac4BkQEAAf8BzAGOAQAB/wHJAYsBAAH/ AeMBqwEAAf8B2wGaAQAB/wHYAZYBAAH/Ac8BlAEAAf8BzgGRAQAB/wHMAY4BAAH/AckBiwEAAf8B0AGH
AdABhwEAAf8BkQGbAZgB/wEAAZoB/gH/AQABlwH0Af8BAAGTAfMB/wEAAZEB8wH/AQABjQHyAf8BAAGK AQAB/wGRAZsBmAH/AQABmgH+Af8BAAGXAfQB/wEAAZMB8wH/AQABkQHzAf8BAAGNAfIB/wEAAYoB+gH/
AfoB/wEAAYsB+AH/AQABjAHbAf8BAAGKAawB/wGQAYMBAAH/AbwCAAH/AZkCAAH/AQABhQH0Af8CAAL/ AQABiwH4Af8BAAGMAdsB/wEAAYoBrAH/AZABgwEAAf8BvAIAAf8BmQIAAf8BAAGFAfQB/wIAAv8BAAGJ
AQABiQHgAf8BqwIAAf8BrQIAAf8BqwIAAf8BqwIAAf8BpwIAAf8BxgGHAQAB/wNdAckDBgEHA6YB/wPz AeAB/wGrAgAB/wGtAgAB/wGrAgAB/wGrAgAB/wGnAgAB/wHGAYcBAAH/A10ByQMGAQcDpgH/A/MB/wPt
Af8D7QH/A+0B/wPtAf8D7QH/A+0B/wPtAf8D7QH/A+0B/wPtAf8EAAOiAf8DlQH/A/kB/wP7Af8DlgH/ Af8D7QH/A+0B/wPtAf8D7QH/A+0B/wPtAf8D7QH/A+0B/wQAA6IB/wOVAf8D+QH/A/sB/wOWAf8DAAH/
AwAB/wPjAf8D7gH/A+4B/wPtAf8D7QH/A+0B/wPtAf8D7QH/A+0B/wPtAf8D8wH/A6YB/wMGAQgQAAMz A+MB/wPuAf8D7gH/A+0B/wPtAf8D7QH/A+0B/wPtAf8D7QH/A+0B/wPzAf8DpgH/AwYBCBAAAzMBUgMA
AVIDAAH/AwAB/wOXAf8DsQH/A/AB/wODAf8DAAH/A4AB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A6EB/wO+ Af8DAAH/A5cB/wOxAf8D8AH/A4MB/wMAAf8DgAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DoQH/A74B/wO5
Af8DuQH/A6oB/wO0Af8DmgH/AwAB/wMAAf8DAAH/A2AB4AMlATcMAAMOARIBPAEjAS4B/gMAAf8BwQG8 Af8DqgH/A7QB/wOaAf8DAAH/AwAB/wMAAf8DYAHgAyUBNwwAAw4BEgE9ASQBLwH+AwAB/wHBAbwBvgH/
Ab4B/wHsAfMB8AH/A9wB/wHaAtwB/wPcAf8B4QHiAeAB/wHhAeIB4AH/AtsB3AH/A9AB/wGuAq8B/wOL AewB8wHwAf8D3AH/AdoC3AH/A9wB/wHhAeIB4AH/AeEB4gHgAf8C2wHcAf8D0AH/Aa4CrwH/A4sB/wP3
Af8D9wH/CwAB/wMAAf8D9wH/AwAB/wPWAf8DyAH/AwAB/wOPAf8D8gH/A4AB/wcAAf8D6gH/A4AB/gMO Af8LAAH/AwAB/wP3Af8DAAH/A9YB/wPIAf8DAAH/A48B/wPyAf8DgAH/BwAB/wPqAf8DgAH+Aw4BEgNg
ARIDYAHgAZoBtQGwAf8BgQGwAcEB/wG0AacBhQH/AdcBlwEAAf8BzgGSAQAB/wHNAZABAAH/AcoBjAEA AeABmgG1AbAB/wGBAbABwQH/AbQBpwGFAf8B1wGXAQAB/wHOAZIBAAH/Ac0BkAEAAf8BygGMAQAB/wHR
Af8B0QGNAQAB/wEAAaEByAH/AQABmwH8Af8BAAGYAfQB/wEAAZUB8wH/AQABkQH0Af8BAAGQAf0B/wEA AY0BAAH/AQABoQHIAf8BAAGbAfwB/wEAAZgB9AH/AQABlQHzAf8BAAGRAfQB/wEAAZAB/QH/AQABkwHJ
AZMByQH/AaMBiAEAAf8BvQIAAf8BwQIAAf8BuQIAAf8BrAIAAf8BAAGGAesB/wIAAfYB/wIAAfAB/wIA Af8BowGIAQAB/wG9AgAB/wHBAgAB/wG5AgAB/wGsAgAB/wEAAYYB6wH/AgAB9gH/AgAB8AH/AgAC/wEA
Av8BAAGEAZAB/wG1AgAB/wGrAgAB/wGrAgAB/wGoAgAB/wG+AgAB/wNgAeADBgEHA6YB/wP0Af8D7gH/ AYQBkAH/AbUCAAH/AasCAAH/AasCAAH/AagCAAH/Ab4CAAH/A2AB4AMGAQcDpgH/A/QB/wPuAf8D7gH/
A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/A+4B/wPuAf8EAAOkAf8DAAH/A9gB/wPYAf8DAAH/AwAB/wPv A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/A+4B/wQAA6QB/wMAAf8D2AH/A9gB/wMAAf8DAAH/A+8B/wPx
Af8D8QH/A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/A+4B/wPuAf8D9AH/A6YB/wMGAQgQAAMzAVIDlQH/ Af8D7gH/A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/A+4B/wP0Af8DpgH/AwYBCBAAAzMBUgOVAf8DAAH/
AwAB/wPzAf8D8QH/A/YB/wOzAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wOcAf8DmAH/ A/MB/wPxAf8D9gH/A7MB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A5wB/wOYAf8DAAH/
AwAB/wMAAf8DAAH/AwAB/wMAAf8DnAH/A1EBohAAAw4BEgE5ASQBLAH+AwAB/wMAAf8ByQHCAcUB/wHk AwAB/wMAAf8DAAH/AwAB/wOcAf8DUQGiEAADDgESAToBJQEtAf4DAAH/AwAB/wHJAcIBxQH/AeQC5QH/
AuUB/wHhAeAB4QH/AeEB4AHhAf8B4QHgAeEB/wHhAeAB4QH/AeEC4AH/AdUC1AH/AbQCswH/AYsBjQGL AeEB4AHhAf8B4QHgAeEB/wHhAeAB4QH/AeEB4AHhAf8B4QLgAf8B1QLUAf8BtAKzAf8BiwGNAYsB/wP2
Af8D9gH/CwAB/wOdAf8HAAH/A8sB/yAAA4AB/gMOARIDZQHsAQABtwHZAf8BAAG0Av8BAAGzAv8BqwGo Af8LAAH/A50B/wcAAf8DywH/IAADgAH+Aw4BEgNlAewBAAG3AdkB/wEAAbQC/wEAAbMC/wGrAagBjwH/
AY8B/wHdAZMBAAH/Ac4BkAEAAf8BzAGNAQAB/wHNAZEBAAH/AQABogHZAf8BAAGcAfoB/wEAAZkB9AH/ Ad0BkwEAAf8BzgGQAQAB/wHMAY0BAAH/Ac0BkQEAAf8BAAGiAdkB/wEAAZwB+gH/AQABmQH0Af8BAAGW
AQABlgH0Af8BAAGUAfoB/wEAAZYBrQH/AcQCAAH/AcACAAH/AawBgAEAAf8BqgIAAf8BxAIAAf8BAAGH AfQB/wEAAZQB+gH/AQABlgGtAf8BxAIAAf8BwAIAAf8BrAGAAQAB/wGqAgAB/wHEAgAB/wEAAYcBmQH/
AZkB/wIAAf4B/wIAAfAB/wIAAfAB/wIAAfsB/wEAAYUBpgH/AbYCAAH/AasCAAH/AasCAAH/AagCAAH/ AgAB/gH/AgAB8AH/AgAB8AH/AgAB+wH/AQABhQGmAf8BtgIAAf8BqwIAAf8BqwIAAf8BqAIAAf8BugIA
AboCAAH/A2UB7AMGAQcDpgH/A/QB/wPvAf8D7wH/A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/A+4B/wQA Af8DZQHsAwYBBwOmAf8D9AH/A+8B/wPvAf8D7gH/A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/BAADpQH/
A6UB/wMAAf8DxQH/A8UB/wMAAf8DhgH/A/cB/wPyAf8D7gH/A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/ AwAB/wPFAf8DxQH/AwAB/wOGAf8D9wH/A/IB/wPuAf8D7gH/A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/
A+4B/wP0Af8DpgH/AwYBCBAAAzMBUgPbAf8DAAH/A+EB/wPsAf8D3AH/A9wB/wMAAf8DAAH/AwAB/wOY A/QB/wOmAf8DBgEIEAADMwFSA9sB/wMAAf8D4QH/A+wB/wPcAf8D3AH/AwAB/wMAAf8DAAH/A5gB/wOd
Af8DnQH/AwAB/wOOAf8DuQH/A8gB/wOzAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wPOAf8DOAFdEAADDgES Af8DAAH/A44B/wO5Af8DyAH/A7MB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A84B/wM4AV0QAAMOARIBMwEi
ATIBIQEmAf4DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B5gHj AScB/gMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wHmAeMB5QH/
AeUB/wHyAfAB8QH/Ae0C7AH/AusB6gH/AfYB9AH1Af8B8AHtAe8B/wHqAegB6gH/AewB6wHsAf8B7QHr AfIB8AHxAf8B7QLsAf8C6wHqAf8B9gH0AfUB/wHwAe0B7wH/AeoB6AHqAf8B7AHrAewB/wHtAesB7AH/
AewB/wHsAeoB6wH/AewB6gHrAf8B6wHqAesB/wHsAeoB7AH/AewB6gHrAf8B7QHsAe0B/wH1AfQB9QH/ AewB6gHrAf8B7AHqAesB/wHrAeoB6wH/AewB6gHsAf8B7AHqAesB/wHtAewB7QH/AfUB9AH1Af8DgAH+
A4AB/gMOARIDZQHsAQABuAHVAf8BAAG1Av8BAAGyAfwB/wEAAbEB8gH/AaEBqQGaAf8B1AGWAQAB/wHP Aw4BEgNlAewBAAG4AdUB/wEAAbUC/wEAAbIB/AH/AQABsQHyAf8BoQGpAZoB/wHUAZYBAAH/Ac8BjAEA
AYwBAAH/AckBlQEAAf8BAAGjAeQB/wEAAZ0B+QH/AQABmwH0Af8BAAGYAfwB/wEAAZoBwwH/AdEBgAEA Af8ByQGVAQAB/wEAAaMB5AH/AQABnQH5Af8BAAGbAfQB/wEAAZgB/AH/AQABmgHDAf8B0QGAAQAB/wHA
Af8BwAIAAf8BwgIAAf8BpgGEAQAB/wEAAZIB1wH/AacBigEAAf8BAAGFAdQB/wIAAfUB/wIAAfAB/wIA AgAB/wHCAgAB/wGmAYQBAAH/AQABkgHXAf8BpwGKAQAB/wEAAYUB1AH/AgAB9QH/AgAB8AH/AgAB8AH/
AfAB/wIAAfsB/wEAAYUBpgH/AbYCAAH/AasCAAH/AasCAAH/AagCAAH/AboCAAH/A2UB7AMGAQcDqgH/ AgAB+wH/AQABhQGmAf8BtgIAAf8BqwIAAf8BqwIAAf8BqAIAAf8BugIAAf8DZQHsAwYBBwOqAf8D+QH/
A/kB/wP0Af8D8gH/A/IB/wPxAf8D8AH/A/AB/wPvAf8D7wH/A+8B/wQAA6EB/wOiAf8IAAOhAf8DkQH/ A/QB/wPyAf8D8gH/A/EB/wPwAf8D8AH/A+8B/wPvAf8D7wH/BAADoQH/A6IB/wgAA6EB/wORAf8D/gH/
A/4B/wPxAf8D7wH/A+8B/wPvAf8D7wH/A+8B/wPvAf8D7wH/A+8B/wP1Af8DpwH/AwYBCBAAAzMBUgcA A/EB/wPvAf8D7wH/A+8B/wPvAf8D7wH/A+8B/wPvAf8D7wH/A/UB/wOnAf8DBgEIEAADMwFSBwAB/wOY
Af8DmAH/A/IB/wPZAf8EAAOQAf8DAAH/A9YB/wPpAf8D4AH/A90B/wPXAf8D0QH/A84B/wOdAf8DAAH/ Af8D8gH/A9kB/wQAA5AB/wMAAf8D1gH/A+kB/wPgAf8D3QH/A9cB/wPRAf8DzgH/A50B/wMAAf8DgAH/
A4AB/wMAAf8DAAH/A7MB/wP0Af8DNwFaEAADDgESASsBHgEiAf4DAAH/AwAB/wMAAf8DAAH/AwAB/wMA AwAB/wMAAf8DswH/A/QB/wM3AVoQAAMOARIBLAEfASMB/gMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8B5wHlAeYB/wPxAf8B7AHnAeoB/wHwAesB7QH/Ae0B6gHs Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wHnAeUB5gH/A/EB/wHsAecB6gH/AfAB6wHtAf8B7QHqAewB/wHs
Af8B7AHnAeoB/wHwAesB7QH/Ae0B6gHsAf8B7AHqAesB/wHsAeoB6wH/AewB6gHsAf8B7QHrAewB/wHt AecB6gH/AfAB6wHtAf8B7QHqAewB/wHsAeoB6wH/AewB6gHrAf8B7AHqAewB/wHtAesB7AH/Ae0B6wHt
AesB7QH/Ae8B6wHtAf8B8AHtAe8B/wH3AfUB9wH/A4AB/gMOARIDYAHgAYQBuAHMAf8BAAG2Av8BAAGz Af8B7wHrAe0B/wHwAe0B7wH/AfcB9QH3Af8DgAH+Aw4BEgNgAeABhAG4AcwB/wEAAbYC/wEAAbMB+QH/
AfkB/wEAAbAB+wH/AQABsAL/AYwBqgGxAf8B2QGUAQAB/wHUAZQBAAH/AQABpQHfAf8BAAGeAfoB/wEA AQABsAH7Af8BAAGwAv8BjAGqAbEB/wHZAZQBAAH/AdQBlAEAAf8BAAGlAd8B/wEAAZ4B+gH/AQABnAH0
AZwB9AH/AQABmQH5Af8BAAGZAdoB/wGkAZEBAAH/AbABiQEAAf8BpQGJAQAB/wG4AYcBAAH/AQABjwHF Af8BAAGZAfkB/wEAAZkB2gH/AaQBkQEAAf8BsAGJAQAB/wGlAYkBAAH/AbgBhwEAAf8BAAGPAcUB/wEA
Af8BAAGHAfsB/wEAAYEB8QH/AgAB8AH/AgAB8AH/AgAB8AH/AgAB+wH/AQABhAGkAf8BtgIAAf8BqwIA AYcB+wH/AQABgQHxAf8CAAHwAf8CAAHwAf8CAAHwAf8CAAH7Af8BAAGEAaQB/wG2AgAB/wGrAgAB/wGr
Af8BqwIAAf8BqAIAAf8BvgIAAf8DYAHgAwYBBwOqAf8D+QH/A/QB/wP0Af8D9AH/A/QB/wP0Af8D8wH/ AgAB/wGoAgAB/wG+AgAB/wNgAeADBgEHA6oB/wP5Af8D9AH/A/QB/wP0Af8D9AH/A/QB/wPzAf8D8wH/
A/MB/wPzAf8D8gH/BAADogH/AaoCqQH/CAADqQH/A50B/wQAA/EB/wPwAf8D8AH/A/AB/wPwAf8D8AH/ A/MB/wPyAf8EAAOiAf8BqgKpAf8IAAOpAf8DnQH/BAAD8QH/A/AB/wPwAf8D8AH/A/AB/wPwAf8D8AH/
A/AB/wPwAf8D8AH/A/YB/wOoAf8DBgEIEAADMwFSBAADiAH/AwAB/wPwAf8D6QH/A6oB/wMAAf8DAAH/ A/AB/wPwAf8D9gH/A6gB/wMGAQgQAAMzAVIEAAOIAf8DAAH/A/AB/wPpAf8DqgH/AwAB/wMAAf8DrgH/
A64B/wPjAf8DygH/A8sB/wPOAf8DyAH/A50B/wOBAf8DhgH/AwAB/wMAAf8DqwH/A+cB/wQAAzcBWhAA A+MB/wPKAf8DywH/A84B/wPIAf8DnQH/A4EB/wOGAf8DAAH/AwAB/wOrAf8D5wH/BAADNwFaEAADDgES
Aw4BEgEgARgBGwH+AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ ASEBGQEcAf4DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8C6wHw
AusB8AH/AvYB/gH/Au8B9AH/AfAB7wH0Af8B8AHuAfUB/wHwAe4B9QH/AfAB8QH1Af8B8AHxAfUB/wHw Af8C9gH+Af8C7wH0Af8B8AHvAfQB/wHwAe4B9QH/AfAB7gH1Af8B8AHxAfUB/wHwAfEB9QH/AfAB8QH1
AfEB9QH/AvEB9QH/AfEB8AH3Af8B8QHyAfcB/wLyAfYB/wLyAfkB/wH0AfIB+gH/AfsB+gL/A4AB/gMO Af8C8QH1Af8B8QHwAfcB/wHxAfIB9wH/AvIB9gH/AvIB+QH/AfQB8gH6Af8B+wH6Av8DgAH+Aw4BEgNd
ARIDXQHJAZcBuQG4Af8BAAG4Av8BAAG1AfkB/wEAAbIB+QH/AQABrwH5Af8BAAGtAf4B/wEAAaoBwwH/ AckBlwG5AbgB/wEAAbgC/wEAAbUB+QH/AQABsgH5Af8BAAGvAfkB/wEAAa0B/gH/AQABqgHDAf8BnQGk
AZ0BpAGYAf8BAAGkAe4B/wEAAaAB9wH/AQABnQH1Af8BAAGaAfMB/wEAAZcB+AH/AQABlgH6Af8BAAGV AZgB/wEAAaQB7gH/AQABoAH3Af8BAAGdAfUB/wEAAZoB8wH/AQABlwH4Af8BAAGWAfoB/wEAAZUB9AH/
AfQB/wEAAZIB+QH/AQABkAHxAf8BAAGJAfEB/wEAAYUB8wH/AQABgwHxAf8BAAGAAfAB/wIAAfAB/wIA AQABkgH5Af8BAAGQAfEB/wEAAYkB8QH/AQABhQHzAf8BAAGDAfEB/wEAAYAB8AH/AgAB8AH/AgAB8AH/
AfAB/wIAAf0B/wEAAYQBlQH/AbUCAAH/AasCAAH/AasCAAH/AacCAAH/AcYBhwEAAf8DXQHJAwYBBwOr AgAB/QH/AQABhAGVAf8BtQIAAf8BqwIAAf8BqwIAAf8BpwIAAf8BxgGHAQAB/wNdAckDBgEHA6sB/wP6
Af8D+gH/A/QB/wP0Af8D9AH/A/QB/wP0Af8D9AH/A/QB/wP0Af8D9AH/BAADpgH/AwAB/wPEAf8DxAH/ Af8D9AH/A/QB/wP0Af8D9AH/A/QB/wP0Af8D9AH/A/QB/wP0Af8EAAOmAf8DAAH/A8QB/wPEAf8DAAH/
AwAB/wOkAf8EAAPxAf8D8QH/A/EB/wPwAf8D8AH/A/AB/wPwAf8D8AH/A/AB/wP1Af8DpwH/AwYBCBAA A6QB/wQAA/EB/wPxAf8D8QH/A/AB/wPwAf8D8AH/A/AB/wPwAf8D8AH/A/UB/wOnAf8DBgEIEAADMwFS
AzMBUgQAA8gB/wMAAf8DhwH/AwAB/wMAAf8DAAH/AwAB/wPLAf8D2wH/A88B/wPEAf8DrAH/A5oB/wOL BAADyAH/AwAB/wOHAf8DAAH/AwAB/wMAAf8DAAH/A8sB/wPbAf8DzwH/A8QB/wOsAf8DmgH/A4sB/wOH
Af8DhwH/AwAB/wOAAf8DtwH/A+cB/wPxAf8EAAM3AVoQAAMOARIBHQEXARkB/gMAAf8DAAH/AwAB/wMA Af8DAAH/A4AB/wO3Af8D5wH/A/EB/wQAAzcBWhAAAw4BEgEeARgBGgH+AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wHgAtwB/wHsAeoB6wH/AeYB4wHmAf8B5gHj Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AeAC3AH/AewB6gHrAf8B5gHjAeYB/wHmAeMB5gH/
AeYB/wHmAeMB5gH/AeYB4wHmAf8B5gHjAeYB/wHmAeMB5gH/AeYB4wHmAf8B5wHjAeYB/wHnAuYB/wHn AeYB4wHmAf8B5gHjAeYB/wHmAeMB5gH/AeYB4wHmAf8B5gHjAeYB/wHnAeMB5gH/AecC5gH/AecB5QHm
AeUB5gH/AecB5QHmAf8B5wHlAeYB/wHoAeYB6AH/AfEC7QH/A4AB/gMOARIDUAGdAbUBugGZAf8BAAG5 Af8B5wHlAeYB/wHnAeUB5gH/AegB5gHoAf8B8QLtAf8DgAH+Aw4BEgNQAZ0BtQG6AZkB/wEAAbkC/wEA
Av8BAAG2AfkB/wEAAbMB+QH/AQABsAH4Af8BAAGuAfgB/wEAAasB/gH/AQABqQL/AQABpAH3Af8BAAGi AbYB+QH/AQABswH5Af8BAAGwAfgB/wEAAa4B+AH/AQABqwH+Af8BAAGpAv8BAAGkAfcB/wEAAaIB9QH/
AfUB/wEAAZ8B9QH/AQABnAH0Af8BAAGZAfQB/wEAAZYB9AH/AQABkgH0Af8BAAGQAfMB/wEAAYwB+gH/ AQABnwH1Af8BAAGcAfQB/wEAAZkB9AH/AQABlgH0Af8BAAGSAfQB/wEAAZAB8wH/AQABjAH6Af8BAAGM
AQABjAH5Af8BAAGHAfAB/wEAAYMB9gH/AQABgQH7Af8CAAH5Af8CAAH4Af8BAAGDAf4B/wGXAgAB/wGw AfkB/wEAAYcB8AH/AQABgwH2Af8BAAGBAfsB/wIAAfkB/wIAAfgB/wEAAYMB/gH/AZcCAAH/AbACAAH/
AgAB/wGrAgAB/wGrAgAB/wGoAgAB/wHSAZkBAAH/A1ABnQMGAQcDqwH/A/sB/wP1Af8D9QH/A/UB/wP1 AasCAAH/AasCAAH/AagCAAH/AdIBmQEAAf8DUAGdAwYBBwOrAf8D+wH/A/UB/wP1Af8D9QH/A/UB/wP1
Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wQAA74B/wMAAf8DAAH/AwAB/wMAAf8DvgH/BAAD9gH/A/UB/wP1 Af8D9QH/A/UB/wP1Af8D9QH/BAADvgH/AwAB/wMAAf8DAAH/AwAB/wO+Af8EAAP2Af8D9QH/A/UB/wP0
Af8D9AH/A/QB/wPzAf8D8wH/A/MB/wPyAf8D+AH/A6oB/wMGAQgQAAMzAVIEAAPuAf8DAAH/AwAB/wMA Af8D9AH/A/MB/wPzAf8D8wH/A/IB/wP4Af8DqgH/AwYBCBAAAzMBUgQAA+4B/wMAAf8DAAH/AwAB/wOo
Af8DqAH/A9kB/wPwAf8D2QH/A88B/wPTAf8D0AH/A6AB/wOSAf8DlQH/A5gB/wOsAf8D1AH/A+gB/wPt Af8D2QH/A/AB/wPZAf8DzwH/A9MB/wPQAf8DoAH/A5IB/wOVAf8DmAH/A6wB/wPUAf8D6AH/A+0B/wPu
Af8D7gH/BAADNwFaEAADDgESAYABcQFzAf4B0QG5AbwB/wHKAbMBtgH/AckBsgG1Af8ByQGyAbUB/wHJ Af8EAAM3AVoQAAMOARIBgAFyAXQB/gHRAbkBvAH/AcoBswG2Af8ByQGyAbUB/wHJAbIBtQH/AckBsgG1
AbIBtQH/AckBsgG1Af8ByQGyAbUB/wHJAbIBtQH/AckBsgG1Af8ByQGyAbUB/wHJAbQBuwH/AcYCrAH/ Af8ByQGyAbUB/wHJAbIBtQH/AckBsgG1Af8ByQGyAbUB/wHJAbIBtQH/AckBtAG7Af8BxgKsAf8BzAIA
AcwCAAH/AcoCAAH/AcoCAAH/AcoCAAH/AcoCAAH/AcoCAAH/AcoCAAH/AcoCAAH/AcoCAAH/AcoCAAH/ Af8BygIAAf8BygIAAf8BygIAAf8BygIAAf8BygIAAf8BygIAAf8BygIAAf8BygIAAf8BygIAAf8BygIA
AcoCAAH/AckCAAH/AckCAAH/AckCAAH/AcoCAAH/AdICAAH/AYABNQETAf4DDgESAzgBXAHXAbkBAAH/ Af8ByQIAAf8ByQIAAf8ByQIAAf8BygIAAf8B0gIAAf8BgAE2ARQB/gMOARIDOAFcAdcBuQEAAf8BAAG6
AQABugH2Af8BAAG3AfwB/wEAAbUB+QH/AQABsgH5Af8BAAGvAfgB/wEAAawB+AH/AQABqQH3Af8BAAGm AfYB/wEAAbcB/AH/AQABtQH5Af8BAAGyAfkB/wEAAa8B+AH/AQABrAH4Af8BAAGpAfcB/wEAAaYB9gH/
AfYB/wEAAaMB9gH/AQABoAH1Af8BAAGdAfUB/wEAAZoB9AH/AQABmAH0Af8BAAGUAfMB/wEAAZIB/QH/ AQABowH2Af8BAAGgAfUB/wEAAZ0B9QH/AQABmgH0Af8BAAGYAfQB/wEAAZQB8wH/AQABkgH9Af8BAAGT
AQABkwHUAf8BnQGUAQAB/wEAAY8B7AH/AQABiwHaAf8BAAGKAacB/wEAAYgBvwH/AQABhwHRAf8BAAGH AdQB/wGdAZQBAAH/AQABjwHsAf8BAAGLAdoB/wEAAYoBpwH/AQABiAG/Af8BAAGHAdEB/wEAAYcBmwH/
AZsB/wGzAgAB/wGrAgAB/wGrAgAB/wGqAgAB/wGtAgAB/wHhAa4BAAH/AzgBXAMGAQcDrAH/A/wB/wP2 AbMCAAH/AasCAAH/AasCAAH/AaoCAAH/Aa0CAAH/AeEBrgEAAf8DOAFcAwYBBwOsAf8D/AH/A/YB/wP2
Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP4Af8D+wH/A/MB/wHxAvMB/wHxAvMB/wPz Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/gB/wP7Af8D8wH/AfEC8wH/AfEC8wH/A/MB/wP7
Af8D+wH/A/gB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/cB/wP8Af8DrAH/AwYBCBAA Af8D+AH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9wH/A/wB/wOsAf8DBgEIEAADMwFS
AzMBUgQAA+0B/wPTAf8DygH/A+sB/wPrAf8D6wH/A+sB/wPkAf8D2gH/A9UB/wPOAf8DwgH/A8IB/wPL BAAD7QH/A9MB/wPKAf8D6wH/A+sB/wPrAf8D6wH/A+QB/wPaAf8D1QH/A84B/wPCAf8DwgH/A8sB/wPa
Af8D2gH/A+IB/wPjAf8D4wH/A+MB/wPjAf8D/gH/AzgBWxAAAw4BEgGAAWsBbQH+AcYBqgGsAf8BvwGj Af8D4gH/A+MB/wPjAf8D4wH/A+MB/wP+Af8DOAFbEAADDgESAYABbAFuAf4BxgGqAawB/wG/AaMBpQH/
AaUB/wG+AaIBpAH/Ab4BogGkAf8BvgGiAaQB/wG+AaIBpAH/Ab4BogGkAf8BvgGiAaQB/wG+AaIBpAH/ Ab4BogGkAf8BvgGiAaQB/wG+AaIBpAH/Ab4BogGkAf8BvgGiAaQB/wG+AaIBpAH/Ab4BogGkAf8BvgGi
Ab4BogGjAf8BvgGjAagB/wG+AaIBoQH/AdACAAH/AdACAAH/AdACAAH/AdACAAH/AdACAAH/AdACAAH/ AaMB/wG+AaMBqAH/Ab4BogGhAf8B0AIAAf8B0AIAAf8B0AIAAf8B0AIAAf8B0AIAAf8B0AIAAf8B0AIA
AdACAAH/AdACAAH/AdACAAH/AdACAAH/AdACAAH/AdACAAH/AdACAAH/AdACAAH/AdECAAH/AdgCAAH/ Af8B0AIAAf8B0AIAAf8B0AIAAf8B0AIAAf8B0AIAAf8B0AIAAf8B0AIAAf8B0QIAAf8B2AIAAf8BgAE3
AYABNgETAf4DDgQSARgDXgHwAYQBugHNAf8BAAG5Av8BAAG2AfkB/wEAAbMB+QH/AQABsAH4Af8BAAGu ARQB/gMOBBIBGANeAfABhAG6Ac0B/wEAAbkC/wEAAbYB+QH/AQABswH5Af8BAAGwAfgB/wEAAa4B+AH/
AfgB/wEAAaoB9wH/AQABqAH3Af8BAAGkAfYB/wEAAaIB9gH/AQABngH1Af8BAAGcAfQB/wEAAZkB9AH/ AQABqgH3Af8BAAGoAfcB/wEAAaQB9gH/AQABogH2Af8BAAGeAfUB/wEAAZwB9AH/AQABmQH0Af8BAAGW
AQABlgH8Af8BAAGYAbUB/wHDAYIBAAH/AcUCAAH/AaQBiwEAAf8BtQIAAf8BvwIAAf8BvAIAAf8BuQIA AfwB/wEAAZgBtQH/AcMBggEAAf8BxQIAAf8BpAGLAQAB/wG1AgAB/wG/AgAB/wG8AgAB/wG5AgAB/wG2
Af8BtgIAAf8BqwIAAf8BqwIAAf8BqwIAAf8BqAIAAf8BvQIAAf8DXgHwAxIBGAMGAQcDqwH/A/wB/wP3 AgAB/wGrAgAB/wGrAgAB/wGrAgAB/wGoAgAB/wG9AgAB/wNeAfADEgEYAwYBBwOrAf8D/AH/A/cB/wP3
Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D+gH/A/0B/wP+Af8D/gH/A/0B/wP6 Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wP6Af8D/QH/A/4B/wP+Af8D/QH/A/oB/wP3
Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9wH/A/wB/wOrAf8DBgEIEAADMwFS Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D9wH/A/cB/wP3Af8D/AH/A6sB/wMGAQgQAAMzAVIEAAPs
BAAD7AH/A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/A+oB/wPmAf8D4AH/A9oB/wPaAf8D3QH/A98B/wPb Af8D6gH/A+oB/wPqAf8D6gH/A+oB/wPqAf8D6gH/A+YB/wPgAf8D2gH/A9oB/wPdAf8D3wH/A9sB/wPP
Af8DzwH/A8cB/wPFAf8DxwH/A8IB/wPXAf8DNQFVEAADDgESAYABaQFsAf4BxQGnAaoB/wG+AaABpAH/ Af8DxwH/A8UB/wPHAf8DwgH/A9cB/wM1AVUQAAMOARIBgAFqAW0B/gHFAacBqgH/Ab4BoAGkAf8BvQGf
Ab0BnwGjAf8BvQGfAaMB/wG9AZ8BowH/Ab0BnwGjAf8BvQGfAaMB/wG9AZ8BowH/Ab0BnwGjAf8BvQGf AaMB/wG9AZ8BowH/Ab0BnwGjAf8BvQGfAaMB/wG9AZ8BowH/Ab0BnwGjAf8BvQGfAaMB/wG9AZ8BoQH/
AaEB/wG9AaABpwH/Ab0BngGgAf8B0gIAAf8B0gIAAf8B0QIAAf8B0wIAAf8B0gIAAf8B0gIAAf8B0QIA Ab0BoAGnAf8BvQGeAaAB/wHSAgAB/wHSAgAB/wHRAgAB/wHTAgAB/wHSAgAB/wHSAgAB/wHRAgAB/wHT
Af8B0wIAAf8B0QIAAf8B0wIAAf8B0QIAAf8BzwIAAf8B1QIAAf8B1gIAAf8B0wIAAf8B2wIAAf8BgAE6 AgAB/wHRAgAB/wHTAgAB/wHRAgAB/wHPAgAB/wHVAgAB/wHWAgAB/wHTAgAB/wHbAgAB/wGAATsBFQH+
ARQB/gMOARIEAANRAZ8BwQG6AYwB/wEAAboB/gH/AQABtwH6Af8BAAG0AfkB/wEAAbIB+AH/AQABrwH4 Aw4BEgQAA1EBnwHBAboBjAH/AQABugH+Af8BAAG3AfoB/wEAAbQB+QH/AQABsgH4Af8BAAGvAfgB/wEA
Af8BAAGsAfgB/wEAAakB9wH/AQABpgH2Af8BAAGjAfYB/wEAAaAB9QH/AQABnQH1Af8BAAGaAfsB/wEA AawB+AH/AQABqQH3Af8BAAGmAfYB/wEAAaMB9gH/AQABoAH1Af8BAAGdAfUB/wEAAZoB+wH/AQABnAHL
AZwBywH/AdIBhAEAAf8BygIAAf8BvQGBAQAB/wGaAY4BAAH/AbcCAAH/AbQCAAH/AbICAAH/AbACAAH/ Af8B0gGEAQAB/wHKAgAB/wG9AYEBAAH/AZoBjgEAAf8BtwIAAf8BtAIAAf8BsgIAAf8BsAIAAf8BrQIA
Aa0CAAH/AawCAAH/AasCAAH/AasCAAH/AagCAAH/AdgBoAEAAf8DUQGfBAADBgEHA6wB/wP8Af8D+QH/ Af8BrAIAAf8BqwIAAf8BqwIAAf8BqAIAAf8B2AGgAQAB/wNRAZ8EAAMGAQcDrAH/A/wB/wP5Af8IAAP5
CAAD+QH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4 Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4
Af8D+AH/A/gB/wP4Af8D+AH/A/kB/wL+Av8EAAH5AvsB/wP8Af8DrAH/AwYBCBAAAzMBUgQAA+oB/wPo Af8D+AH/A/gB/wP4Af8D+QH/Av4C/wQAAfkC+wH/A/wB/wOsAf8DBgEIEAADMwFSBAAD6gH/A+gB/wPo
Af8D6AH/A+gB/wPoAf8D6AH/A+gB/wPoAf8D6AH/A+gB/wPoAf8D6AH/A+kB/wPiAf8DzAH/A6MB/wOL Af8D6AH/A+gB/wPoAf8D6AH/A+gB/wPoAf8D6AH/A+gB/wPoAf8D6QH/A+IB/wPMAf8DowH/A4sB/wOH
Af8DhwH/AwAB/wOMAf8DYgHvAwkBCxAAAw4BEgGAAWwBbgH+AcYBqwGtAf8BvwGkAaYB/wG+AaMBpQH/ Af8DAAH/A4wB/wNiAe8DCQELEAADDgESAYABbQFvAf4BxgGrAa0B/wG/AaQBpgH/Ab4BowGlAf8BvgGj
Ab4BowGlAf8BvgGjAaUB/wG+AaMBpQH/Ab4BowGlAf8BvgGjAaUB/wG+AaMBpQH/Ab4BowGlAf8BvgGk AaUB/wG+AaMBpQH/Ab4BowGlAf8BvgGjAaUB/wG+AaMBpQH/Ab4BowGlAf8BvgGjAaUB/wG+AaQBqQH/
AakB/wG/AqMB/wHYAgAB/wHZAgAB/wHXAgAB/wH5AeMBygH/AeIBkAEAAf8B1gIAAf8B2wIAAf8B+gHo Ab8CowH/AdgCAAH/AdkCAAH/AdcCAAH/AfkB4wHKAf8B4gGQAQAB/wHWAgAB/wHbAgAB/wH6AegB1AH/
AdQB/wHbAgAB/wH2Ad4BwwH/Ad0CAAH/AekBrAEAAf8B9wHZAbgB/wHxAcIBjAH/AeABggEAAf8B4QIA AdsCAAH/AfYB3gHDAf8B3QIAAf8B6QGsAQAB/wH3AdkBuAH/AfEBwgGMAf8B4AGCAQAB/wHhAgAB/wGA
Af8BgAE+ARQB/gMOARIEAAMfASwCagFoAfkBgwG6Ac8B/wEAAbkC/wEAAbYB+QH/AQABswH5Af8BAAGw AT8BFQH+Aw4BEgQAAx8BLAJqAWgB+QGDAboBzwH/AQABuQL/AQABtgH5Af8BAAGzAfkB/wEAAbAB+AH/
AfgB/wEAAa0B+AH/AQABqgH3Af8BAAGoAfcB/wEAAaQB9gH/AQABoQH1Af8BAAGeAfUB/wEAAZsB+gH/ AQABrQH4Af8BAAGqAfcB/wEAAagB9wH/AQABpAH2Af8BAAGhAfUB/wEAAZ4B9QH/AQABmwH6Af8BAAGc
AQABnAHMAf8BmAGUAYUB/wGPAZQBjQH/AQABlQHPAf8BAAGQAv8BkgGNAQAB/wG9AgAB/wGzAgAB/wGx AcwB/wGYAZQBhQH/AY8BlAGNAf8BAAGVAc8B/wEAAZAC/wGSAY0BAAH/Ab0CAAH/AbMCAAH/AbECAAH/
AgAB/wGvAgAB/wGtAgAB/wGrAgAB/wGnAgAB/wG9AgAB/wJqAWgB+QMfASwEAAMGAQcDrgH/A/wB/wQA Aa8CAAH/Aa0CAAH/AasCAAH/AacCAAH/Ab0CAAH/AmoBaAH5Ax8BLAQAAwYBBwOuAf8D/AH/BAAB4gHf
AeIB3wHeAf8B5AHiAeAB/wQAA/oB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5 Ad4B/wHkAeIB4AH/BAAD+gH/A/kB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5
Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5Af8D+gH/BAAB5AHjAeEB/wHgAd4B2wH/BAAD/AH/A64B/wMG Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP6Af8EAAHkAeMB4QH/AeAB3gHbAf8EAAP8Af8DrgH/AwYBCBAA
AQgQAAMzAVIEAAPoAf8D5gH/A+YB/wPmAf8D5gH/A+YB/wPmAf8D5gH/A+YB/wPmAf8D5gH/A+YB/wPn AzMBUgQAA+gB/wPmAf8D5gH/A+YB/wPmAf8D5gH/A+YB/wPmAf8D5gH/A+YB/wPmAf8D5gH/A+cB/wPe
Af8D3gH/A78B/wMAAf8DAAH/AwAB/wOQAf8DogH/AyEBMBQAAw4BEgGAAW8BcQH+AcoBrgGwAf8BwwGn Af8DvwH/AwAB/wMAAf8DAAH/A5AB/wOiAf8DIQEwFAADDgESAYABcAFyAf4BygGuAbAB/wHDAacBqQH/
AakB/wHCAaYBqAH/AcIBpgGoAf8BwgGmAagB/wHCAaYBqAH/AcIBpgGoAf8BwgGmAagB/wHCAaYBqAH/ AcIBpgGoAf8BwgGmAagB/wHCAaYBqAH/AcIBpgGoAf8BwgGmAagB/wHCAaYBqAH/AcIBpgGoAf8BwgGm
AcIBpgGoAf8BwgGnAa0B/wHDAaUBpgH/Ad4CAAH/AeACAAH/Ad0CAAH/Af4B8gHmAf8B6wGdAQAB/wHe AagB/wHCAacBrQH/AcMBpQGmAf8B3gIAAf8B4AIAAf8B3QIAAf8B/gHyAeYB/wHrAZ0BAAH/Ad4CAAH/
AgAB/wHiAgAB/wH+AfsB9gH/AeACAAH/AfsB7AHaAf8B6AGSAQAD/wH+Af8B7AGsAQAB/wHnAZcBAAH/ AeICAAH/Af4B+wH2Af8B4AIAAf8B+wHsAdoB/wHoAZIBAAP/Af4B/wHsAawBAAH/AecBlwEAAf8B5AIA
AeQCAAH/AegCAAH/AYABQgEUAf4DDgESCAADSwGNAdUBuQEAAf8BAAG5AfIB/wEAAbcB/QH/AQABtAH5 Af8B6AIAAf8BgAFDARUB/gMOARIIAANLAY0B1QG5AQAB/wEAAbkB8gH/AQABtwH9Af8BAAG0AfkB/wEA
Af8BAAGxAfgB/wEAAa4B+AH/AQABrAH3Af8BAAGpAfcB/wEAAaYB9gH/AQABowH2Af8BAAGgAfUB/wEA AbEB+AH/AQABrgH4Af8BAAGsAfcB/wEAAakB9wH/AQABpgH2Af8BAAGjAfYB/wEAAaAB9QH/AQABnQH0
AZ0B9AH/AQABmgH4Af8BAAGYAv8BAAGVAf4B/wEAAZAC/wEAAZMB/AH/AaYBiQEAAf8BuwIAAf8BtAIA Af8BAAGaAfgB/wEAAZgC/wEAAZUB/gH/AQABkAL/AQABkwH8Af8BpgGJAQAB/wG7AgAB/wG0AgAB/wGy
Af8BsgIAAf8BsAIAAf8BrgIAAf8BqgIAAf8BrgIAAf8B4AGsAQAB/wNLAY0IAAMGAQcDrwH/A/wB/wHf AgAB/wGwAgAB/wGuAgAB/wGqAgAB/wGuAgAB/wHgAawBAAH/A0sBjQgAAwYBBwOvAf8D/AH/Ad8B3gHd
Ad4B3QH/AasBpQGgAf8DAAH/AdMBzwHNAf8EAAP6Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6Af8D+gH/ Af8BqwGlAaAB/wMAAf8B0wHPAc0B/wQAA/oB/wP6Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6Af8D+gH/
A/oB/wP6Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6Af8EAAHoAecB6AH/AbsBtQGxAf8DAAH/AcMBvQG7 A/oB/wP6Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wQAAegB5wHoAf8BuwG1AbEB/wMAAf8BwwG9AbsB/wP8
Af8D/AH/A68B/wMGAQgQAAMzAVIEAAPnAf8D5QH/A+UB/wPlAf8D5QH/A+UB/wPlAf8D5QH/A+UB/wPl Af8DrwH/AwYBCBAAAzMBUgQAA+cB/wPlAf8D5QH/A+UB/wPlAf8D5QH/A+UB/wPlAf8D5QH/A+UB/wPl
Af8D5QH/A+YB/wPmAf8D1wH/A7YB/wPmAf8D7QH/BAAD7AH/AyUBNxgAAw4BEgGAAXQBdgH+Ac8BtAG2 Af8D5gH/A+YB/wPXAf8DtgH/A+YB/wPtAf8EAAPsAf8DJQE3GAADDgESAYABdQF3Af4BzwG0AbYB/wHI
Af8ByAGtAa8B/wHGAawBrgH/AcYBrAGuAf8BxgGsAa4B/wHGAawBrgH/AcYBrAGuAf8BxgGsAa4B/wHG Aa0BrwH/AcYBrAGuAf8BxgGsAa4B/wHGAawBrgH/AcYBrAGuAf8BxgGsAa4B/wHGAawBrgH/AcYBrAGu
AawBrgH/AcYBrAGuAf8BxQGtAbIB/wHGAasBrAH/AegCAAH/AegCAAH/AecCAAH/AfsB6gHVAf8B+gHh Af8BxgGsAa4B/wHFAa0BsgH/AcYBqwGsAf8B6AIAAf8B6AIAAf8B5wIAAf8B+wHqAdUB/wH6AeEBwQH/
AcEB/wH1AcEBhAH/AekCAAH/Af4B/wH+Af8B6AIAAf8B+gHqAdIB/wHtAZEBAAH/AfwB9AHqAf8B8gGx AfUBwQGEAf8B6QIAAf8B/gH/Af4B/wHoAgAB/wH6AeoB0gH/Ae0BkQEAAf8B/AH0AeoB/wHyAbEBAAH/
AQAB/wQAAe4BlgEAAf8B8AIAAf8BgAFGARYB/gMOARIIAAMJAQwCXwFbAdABugG5AZMB/wEAAbgB/QH/ BAAB7gGWAQAB/wHwAgAB/wGAAUcBFwH+Aw4BEggAAwkBDAJfAVsB0AG6AbkBkwH/AQABuAH9Af8BAAG2
AQABtgH8Af8BAAGzAfkB/wEAAbAB+AH/AQABrQH4Af8BAAGqAfcB/wEAAacB9wH/AQABpAH7Af8BAAGh AfwB/wEAAbMB+QH/AQABsAH4Af8BAAGtAfgB/wEAAaoB9wH/AQABpwH3Af8BAAGkAfsB/wEAAaEB9gH/
AfYB/wEAAZ4B9QH/AQABmwH0Af8BAAGYAfQB/wEAAZQB/AH/AQABmAHkAf8BngGRAQAB/wHAAgAB/wG3 AQABngH1Af8BAAGbAfQB/wEAAZgB9AH/AQABlAH8Af8BAAGYAeQB/wGeAZEBAAH/AcACAAH/AbcCAAH/
AgAB/wG1AgAB/wGzAgAB/wGxAgAB/wGuAgAB/wGrAgAB/wHVAZwBAAH/A18B0AMJAQwIAAMGAQcDsAH/ AbUCAAH/AbMCAAH/AbECAAH/Aa4CAAH/AasCAAH/AdUBnAEAAf8DXwHQAwkBDAgAAwYBBwOwAf8D/AH/
A/wB/wPJAf8B1QHUAdUB/wGyAbEBrgH/AbkBtgGzAf8EAAP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7 A8kB/wHVAdQB1QH/AbIBsQGuAf8BuQG2AbMB/wQAA/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7
Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8EAAPZAf8BzAHNAcwB/wHJAccBxQH/ Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wQAA9kB/wHMAc0BzAH/AckBxwHFAf8BtQGy
AbUBsgGuAf8D/AH/A7AB/wMGAQgQAAMzAVIEAAPmAf8D5AH/A+QB/wPkAf8D5AH/A+QB/wPkAf8D5AH/ Aa4B/wP8Af8DsAH/AwYBCBAAAzMBUgQAA+YB/wPkAf8D5AH/A+QB/wPkAf8D5AH/A+QB/wPkAf8D5AH/
A+QB/wPkAf8D5AH/A+UB/wPjAf8D0wH/A7IB/wP5Af8EAAPpAf8DKAE7HAADDgESAYABegF8Af4B1AG7 A+QB/wPkAf8D5QH/A+MB/wPTAf8DsgH/A/kB/wQAA+kB/wMoATscAAMOARIBgAF7AX0B/gHUAbsBvQH/
Ab0B/wHMAbQBtgH/AcsBswG1Af8BywGzAbUB/wHLAbMBtQH/AcsBswG1Af8BywGzAbUB/wHLAbMBtQH/ AcwBtAG2Af8BywGzAbUB/wHLAbMBtQH/AcsBswG1Af8BywGzAbUB/wHLAbMBtQH/AcsBswG1Af8BywGz
AcsBswG1Af8BywGzAbUB/wHKAbQBuwH/AcsCswH/AfACAAH/AfECAAH/Ae4CAAH/Af4B8gHmAf8B8gGa AbUB/wHLAbMBtQH/AcoBtAG7Af8BywKzAf8B8AIAAf8B8QIAAf8B7gIAAf8B/gHyAeYB/wHyAZoBAAH/
AQAB/wHtAgAB/wHuAgAB/wH6AccBiwH/AfACAAH/AfwB7wHeAf8B8QGMAQAB/wHyAZkBAAH/AfkB0AGe Ae0CAAH/Ae4CAAH/AfoBxwGLAf8B8AIAAf8B/AHvAd4B/wHxAYwBAAH/AfIBmQEAAf8B+QHQAZ4B/wH3
Af8B9wG9AQAB/wHxAgAB/wH4AYMBAAH/AYABSwEWAf4DDgESDAADHQEpA2AB6AGwAbkBnwH/AQABtwH9 Ab0BAAH/AfECAAH/AfgBgwEAAf8BgAFMARcB/gMOARIMAAMdASkDYAHoAbABuQGfAf8BAAG3Af0B/wEA
Af8BAAG0Af0B/wEAAbEB+AH/AQABrgH4Af8BAAGrAf0B/wEAAawBxQH/AQABqQG9Af8BAAGjAfoB/wEA AbQB/QH/AQABsQH4Af8BAAGuAfgB/wEAAasB/QH/AQABrAHFAf8BAAGpAb0B/wEAAaMB+gH/AQABoAL/
AaAC/wEAAZ4C/wEAAZwC/wEAAZ0B2wH/AboBjQEAAf8BxgIAAf8BugIAAf8BuAIAAf8BtgIAAf8BtAIA AQABngL/AQABnAL/AQABnQHbAf8BugGNAQAB/wHGAgAB/wG6AgAB/wG4AgAB/wG2AgAB/wG0AgAB/wGx
Af8BsQIAAf8BrgIAAf8B0QGXAQAB/wNgAegDHQEpDAADBgEHA7EB/wP9Af8D9QH/Ac8B0QHQAf8C1AHV AgAB/wGuAgAB/wHRAZcBAAH/A2AB6AMdASkMAAMGAQcDsQH/A/0B/wP1Af8BzwHRAdAB/wLUAdUB/wP1
Af8D9QH/BAAD/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/ Af8EAAP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/
A/wB/wP8Af8D/AH/BAAD+AH/AcMCxAH/AtIB0QH/A/EB/wP9Af8DsQH/AwYBCBAAAzMBUgP9Af8D5AH/ A/wB/wP8Af8EAAP4Af8BwwLEAf8C0gHRAf8D8QH/A/0B/wOxAf8DBgEIEAADMwFSA/0B/wPkAf8D4gH/
A+IB/wPiAf8D4gH/A+IB/wPiAf8D4gH/A+IB/wPiAf8D4gH/A+IB/wPjAf8D4QH/A84B/wOyAf8EAAPk A+IB/wPiAf8D4gH/A+IB/wPiAf8D4gH/A+IB/wPiAf8D4gH/A+MB/wPhAf8DzgH/A7IB/wQAA+QB/wMo
Af8DKAE8IAADDAEQAYYCAAH/AdkBwgHDAf8B0AG6AbwB/wHQAbkBuwH/AdABuQG7Af8B0AG5AbsB/wHQ ATwgAAMMARABhgIAAf8B2QHCAcMB/wHQAboBvAH/AdABuQG7Af8B0AG5AbsB/wHQAbkBuwH/AdABuQG7
AbkBuwH/AdABuQG7Af8B0AG5AbsB/wHQAbkBuwH/AdABuQG7Af8BzwG6AcAB/wHQAbkBuAH/AfYBggEA Af8B0AG5AbsB/wHQAbkBuwH/AdABuQG7Af8B0AG5AbsB/wHPAboBwAH/AdABuQG4Af8B9gGCAQAB/wH3
Af8B9wGBAQAB/wH2AgAB/wH8AeABvQH/AfwB4AG+Af8B/AHXAasB/wH3AZsBAAH/AfoByAGNAf8B9wGC AYEBAAH/AfYCAAH/AfwB4AG9Af8B/AHgAb4B/wH8AdcBqwH/AfcBmwEAAf8B+gHIAY0B/wH3AYIBAAH/
AQAB/wH+AfUB7gH/AfgBnAEAAf8B9gIAAf8B9gIAAf8B9gIAAf8B9wGBAQAC/wGKAQAB/wGpAgAB/wMM Af4B9QHuAf8B+AGcAQAB/wH2AgAB/wH2AgAB/wH2AgAB/wH3AYEBAAL/AYoBAAH/AakCAAH/AwwBEBAA
ARAQAAMlATcCZQFcAecBuQG4AZMB/wEAAbYB8gH/AQABsgL/AQABrwH5Af8BAAGtAfoB/wEAAaoB7QH/ AyUBNwJlAVwB5wG5AbgBkwH/AQABtgHyAf8BAAGyAv8BAAGvAfkB/wEAAa0B+gH/AQABqgHtAf8BlgGs
AZYBrAGpAf8BpAGqAZgB/wGbAaEBlQH/AZABnAGaAf8BoQGYAYIB/wHDAYoBAAH/AcQCAAH/Ab0CAAH/ AakB/wGkAaoBmAH/AZsBoQGVAf8BkAGcAZoB/wGhAZgBggH/AcMBigEAAf8BxAIAAf8BvQIAAf8BvAIA
AbwCAAH/AbkCAAH/AbcCAAH/AbICAAH/AbUCAAH/AdcBnwEAAf8DZQHnAyUBNxAAAwQBBQOuAf8D+AH/ Af8BuQIAAf8BtwIAAf8BsgIAAf8BtQIAAf8B1wGfAQAB/wNlAecDJQE3EAADBAEFA64B/wP4Af8D/AH/
A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/ A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/
A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D+AH/A64B/wMFAQYQAAMz A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP4Af8DrgH/AwUBBhAAAzMBUgP7
AVID+wH/A+MB/wPhAf8D4QH/A+EB/wPhAf8D4QH/A+EB/wPhAf8D4QH/A+EB/wPhAf8D3wH/A9sB/wO8 Af8D4wH/A+EB/wPhAf8D4QH/A+EB/wPhAf8D4QH/A+EB/wPhAf8D4QH/A+EB/wPfAf8D2wH/A7wB/wPN
Af8DzQH/A+oB/wMoATskAAMFAQYDWgH1AeIBzQHPAf8B2QHBAcMB/wHSAbwBvgH/AdIBvAG+Af8B0gG8 Af8D6gH/AygBOyQAAwUBBgNaAfUB4gHNAc8B/wHZAcEBwwH/AdIBvAG+Af8B0gG8Ab4B/wHSAbwBvgH/
Ab4B/wHSAbwBvgH/AdIBvAG+Af8B0gG8Ab4B/wHSAbwBvgH/AdIBvAG+Af8B0QG+AcQB/wHUAbwBuwH/ AdIBvAG+Af8B0gG8Ab4B/wHSAbwBvgH/AdIBvAG+Af8B0gG8Ab4B/wHRAb4BxAH/AdQBvAG7Af8B/AGD
AfwBgwEAAv8BggEAAf8B/AGCAQAB/wH8AYEBAAH/Af0BhgEAAf8B/QGKAQAB/wH8AYQBAAH/Af0BlQEA AQAC/wGCAQAB/wH8AYIBAAH/AfwBgQEAAf8B/QGGAQAB/wH9AYoBAAH/AfwBhAEAAf8B/QGVAQAB/wH8
Af8B/AGCAQAB/wH9AZkBAAH/Af0BiQEAAf8B/AGCAQAB/wH8AYMBAAH/AfwBgwEAAv8BiQEAAv8BkwEA AYIBAAH/Af0BmQEAAf8B/QGJAQAB/wH8AYIBAAH/AfwBgwEAAf8B/AGDAQAC/wGJAQAC/wGTAQAB/wFa
Af8BWgJWAfUDBQEGFAADHgErAlwBWwHNAdUBuAEAAf8BAAG1Ac0B/wEAAbEB/gH/AQABrgL/AQABqwH7 AlcB9QMFAQYUAAMeASsCXAFbAc0B1QG4AQAB/wEAAbUBzQH/AQABsQH+Af8BAAGuAv8BAAGrAfsB/wEA
Af8BAAGoAf4B/wEAAacB7wH/AZoBogGXAf8B1QGKAQAB/wHMAYIBAAH/AcUBgAEAAf8BwQIAAf8BvwIA AagB/gH/AQABpwHvAf8BmgGiAZcB/wHVAYoBAAH/AcwBggEAAf8BxQGAAQAB/wHBAgAB/wG/AgAB/wG8
Af8BvAIAAf8BuAIAAf8BtgIAAf8BxQGEAQAB/wHiAa4BAAH/A1wBzQMeASsYAANaAcIDwwH/A8IB/wPC AgAB/wG4AgAB/wG2AgAB/wHFAYQBAAH/AeIBrgEAAf8DXAHNAx4BKxgAA1oBwgPDAf8DwgH/A8IB/wPC
Af8DwgH/A8IB/wPCAf8DwgH/A8IB/wPCAf8DwgH/A8IB/wPCAf8DwgH/A8IB/wPCAf8DwgH/A8IB/wPC Af8DwgH/A8IB/wPCAf8DwgH/A8IB/wPCAf8DwgH/A8IB/wPCAf8DwgH/A8IB/wPCAf8DwgH/A8IB/wPC
Af8DwgH/A8IB/wPCAf8DwgH/A8IB/wPCAf8DwgH/A8IB/wPCAf8DwwH/A1sBxBQAAzMBUgP6Af8D4gH/ Af8DwgH/A8IB/wPCAf8DwgH/A8IB/wPCAf8DwgH/A8IB/wPDAf8DWwHEFAADMwFSA/oB/wPiAf8D4AH/
A+AB/wPgAf8D4AH/A+AB/wPgAf8D4AH/A+AB/wPgAf8D4AH/A+AB/wPbAf8DzwH/A8wB/wPMAf8DKAE7 A+AB/wPgAf8D4AH/A+AB/wPgAf8D4AH/A+AB/wPgAf8D4AH/A9sB/wPPAf8DzAH/A8wB/wMoATssAANI
LAADSAGDAbQCoQH/Ae8B3gHfAf8B7AHaAd0B/wHsAdoB3AH/AewB2gHcAf8B7AHaAdwB/wHsAdoB3AH/ AYMBtAKhAf8B7wHeAd8B/wHsAdoB3QH/AewB2gHcAf8B7AHaAdwB/wHsAdoB3AH/AewB2gHcAf8B7AHa
AewB2gHcAf8B7AHaAdwB/wHsAdoB3AH/AesB3QHiAf8B6wHZAdcC/wGgAQAC/wGdAQAC/wGfAQAC/wGd AdwB/wHsAdoB3AH/AewB2gHcAf8B6wHdAeIB/wHrAdkB1wL/AaABAAL/AZ0BAAL/AZ8BAAL/AZ0BAAL/
AQAC/wGdAQAC/wGdAQAC/wGdAQAC/wGaAQAC/wGeAQAC/wGZAQAC/wGdAQAC/wGeAQAC/wGfAQAC/wGg AZ0BAAL/AZ0BAAL/AZ0BAAL/AZoBAAL/AZ4BAAL/AZkBAAL/AZ0BAAL/AZ4BAAL/AZ8BAAL/AaABAAL/
AQAC/wGjAQAB/wHRAgAB/wFIAkcBgxwAAwoBDQNLAYwCbQFRAfcBvwG3AYwB/wEAAbIBzAH/AQABrQHz AaMBAAH/AdECAAH/AUgCRwGDHAADCgENA0sBjAJtAVEB9wG/AbcBjAH/AQABsgHMAf8BAAGtAfMB/wEA
Af8BAAGpAv8BAAGlAv8BAAGnAfYB/wHDAZIBAAH/AcYBggEAAf8BwgGAAQAB/wG/AgAB/wG+AgAB/wG/ AakC/wEAAaUC/wEAAacB9gH/AcMBkgEAAf8BxgGCAQAB/wHCAYABAAH/Ab8CAAH/Ab4CAAH/Ab8CAAH/
AgAB/wHJAYoBAAH/AdwBpQEAAf8CbQFsAfcDSwGMAwoBDagAAzQBUzgAA8gB/wMnATo0AANHAYIDXgHt AckBigEAAf8B3AGlAQAB/wJtAWwB9wNLAYwDCgENqAADNAFTOAADyAH/AycBOjQAA0cBggNeAe0BlAGF
AZQBhQGGAf8DgAH+A4AB/gOAAf4DgAH+A4AB/gOAAf4DgAH+A4AB/gOAAf4BgAFZARsB/gGAAVYBGQH+ AYYB/wOAAf4DgAH+A4AB/gOAAf4DgAH+A4AB/gOAAf4DgAH+A4AB/gGAAVoBHAH+AYABVwEaAf4BgAFZ
AYABWAEaAf4BgAFYARoB/gGAAVgBGgH+AYABWAEaAf4BgAFYARoB/gGAAVgBGgH+AYABWAEaAf4BgAFY ARsB/gGAAVkBGwH+AYABWQEbAf4BgAFZARsB/gGAAVkBGwH+AYABWQEbAf4BgAFZARsB/gGAAVkBGwH+
ARoB/gGAAVgBGgH+AYABWAEaAf4BgAFYARsB/gGwAgAB/wNeAe0DRwGCKAADIQEvA1ABnQNeAe0B1gG4 AYABWQEbAf4BgAFZARsB/gGAAVkBHAH+AbACAAH/A14B7QNHAYIoAAMhAS8DUAGdA14B7QHWAbgBAAH/
AQAB/wGvAbQBmAH/AY0BsAG3Af8BsgGrAYoB/wHUAZgBAAH/Ac8BkgEAAf8B0AGUAQAB/wHTAZkBAAH/ Aa8BtAGYAf8BjQGwAbcB/wGyAasBigH/AdQBmAEAAf8BzwGSAQAB/wHQAZQBAAH/AdMBmQEAAf8B2gGj
AdoBowEAAf8B5AGxAQAB/wNeAe0DUAGdAyEBL7AAAxsBJQNNAZMDSAGEA0gBgwNIAYMDSAGDA0gBgwNI AQAB/wHkAbEBAAH/A14B7QNQAZ0DIQEvsAADGwElA00BkwNIAYQDSAGDA0gBgwNIAYMDSAGDA0gBgwNI
AYMDSAGDA0gBgwNIAYMDSAGDA0gBgwNJAYgDRwGBAxgBINgAAxMBGgM4AVwDUQGcA1oBxwNdAd8DYQHr AYMDSAGDA0gBgwNIAYMDSAGDA0kBiANHAYEDGAEg2AADEwEaAzgBXANRAZwDWgHHA10B3wNhAesDYQHr
A2EB6wNdAd8DWgHHA1EBnAM4AVwDFAEbKAABQgFNAT4HAAE+AwABKAMAAYADAAGAAwABAQEAAQEGAAEI A10B3wNaAccDUQGcAzgBXAMUARsoAAFCAU0BPgcAAT4DAAEoAwABgAMAAYADAAEBAQABAQYAAQgWAAP/
FgAD//8A/wADAAT/BAABgAIAAQEF/wH4AQcB/wgAAfACAAEPAf8B4AEAAf8IAAHwAgABDwH/AYABAAE/ /wD/AAMABP8EAAGAAgABAQX/AfgBBwH/CAAB8AIAAQ8B/wHgAQAB/wgAAfACAAEPAf8BgAEAAT8IAAHw
CAAB8AIAAQ8B/gIAAR8BHAHnBgAB8AIAAQ8B/AIAAQ8BHAHnBgAB8AIAAQ8B/AIAAQcBHAHnBgAB8AIA AgABDwH+AgABHwEcAecGAAHwAgABDwH8AgABDwEcAecGAAHwAgABDwH8AgABBwEcAecGAAHwAgABDwH4
AQ8B+AIAAQMIAAHwAgABDwHwAgABAwEcAeADAAEBAeABAAHwAgABDwHwAgABAQEcAeADAAEGATABAAHw AgABAwgAAfACAAEPAfACAAEDARwB4AMAAQEB4AEAAfACAAEPAfACAAEBARwB4AMAAQYBMAEAAfACAAEP
AgABDwHgAgABAQEcAeMBwAIAAQwBGAEAAfACAAEPAeADAAEcAeMBwAIAAggBAAHwAgABDwHgBAABAwHA AeACAAEBARwB4wHAAgABDAEYAQAB8AIAAQ8B4AMAARwB4wHAAgACCAEAAfACAAEPAeAEAAEDAcACAAEQ
AgABEAEIAQAB8AIAAQ8BwAMAARwBAAEBAwABCAEAAfACAAEPAcADAAEcAQABAwGAAgABGAEAAfACAAEP AQgBAAHwAgABDwHAAwABHAEAAQEDAAEIAQAB8AIAAQ8BwAMAARwBAAEDAYACAAEYAQAB8AIAAQ8BwAMA
AcADAAEcAXgBAwHAAgABMAEAAfACAAEPAcADAAEcAXgB4QGAAgABYAEAAfACAAEPAcAEAAF4AeACAAEB ARwBeAEDAcACAAEwAQAB8AIAAQ8BwAMAARwBeAHhAYACAAFgAQAB8AIAAQ8BwAQAAXgB4AIAAQEBgAEA
AYABAAHwAgABDwYAAeACAAEBAYABAAHwAgABDwkAAQcBwAEAAfACAAEPCQABDwHgAQAB8AIAAQ8DAAEB AfACAAEPBgAB4AIAAQEBgAEAAfACAAEPCQABBwHAAQAB8AIAAQ8JAAEPAeABAAHwAgABDwMAAQEDAAGA
AwABgAEAAR8B8AEAAfACAAEPAwABAQIAAQEBwAEAAR8B+AEAAfACAAEPAwABAQIAAQMBwAEAAT8B+AEA AQABHwHwAQAB8AIAAQ8DAAEBAgABAQHAAQABHwH4AQAB8AIAAQ8DAAEBAgABAwHAAQABPwH4AQAB8AIA
AfACAAEPAYgCAAEDAgABYQGABAAB8AIAAR8BgAIAAQcCAAHwAgABPwH4AQAB8AIAAT8BgAIAAQ8CAAFw AQ8BiAIAAQMCAAFhAYAEAAHwAgABHwGAAgABBwIAAfACAAE/AfgBAAHwAgABPwGAAgABDwIAAXAFAAHw
BQAB8AIAAX8BwAIAAR8CAAEgBQAB8AIAAf8BwAIAAT8IAAHwAQABAQH/AcMBwAEAAf8IAAHwAQABAwL/ AgABfwHAAgABHwIAASAFAAHwAgAB/wHAAgABPwgAAfABAAEBAf8BwwHAAQAB/wgAAfABAAEDAv8B+AED
AfgBAwH/CAAB8AEAAQcF/wQAAYACAAEBAfABAAEPCv8BxwH/AccB/wHAAQMF/wHwAgABDwH/AcEB/wHD Af8IAAHwAQABBwX/BAABgAIAAQEB8AEAAQ8K/wHHAf8BxwH/AcABAwX/AfACAAEPAf8BwQH/AcMB/gIA
Af4CAAF/BP8B8gIAAS8B/AEQAf8BwwHwAgABDwH+AX8B+AEPAfMB/wH8Ae8B/AEAATsBwwHgAgABBwH8 AX8E/wHyAgABLwH8ARAB/wHDAfACAAEPAf4BfwH4AQ8B8wH/AfwB7wH8AQABOwHDAeACAAEHAfwBfwH4
AX8B+AEPAfICAAFvAf0BAAEHAccBwAIAAQMB/AE/AfgBDwHyAgABbwH8AwABwAIAAQMB+AE/AfgBDwHy AQ8B8gIAAW8B/QEAAQcBxwHAAgABAwH8AT8B+AEPAfICAAFvAfwDAAHAAgABAwH4AT8B+AEPAfICAAEv
AgABLwH4AwABwAIAAQMB+AEfAfgBDwHyAgABLwH4AwABwAIAAQMB8AEfAfgBDwHyAgABLwH4AwAB4AEB AfgDAAHAAgABAwH4AR8B+AEPAfICAAEvAfgDAAHAAgABAwHwAR8B+AEPAfICAAEvAfgDAAHgAQEBAAEH
AQABBwHgAQ8B+AEPAfICAAEvAfgDAAHwAgABDwHgAQ8B+AEPAfICAAEvAfIDAAHwAgABDwHAAQcB+AEP AeABDwH4AQ8B8gIAAS8B+AMAAfACAAEPAeABDwH4AQ8B8gIAAS8B8gMAAfACAAEPAcABBwH4AQ8B8gIA
AfICAAEvAfACAAEHAeACAAEHAcABAwH4AQ8B8gIAAS8B8AIAAQcB4AIAAQcBgAEDAfgBDwHyAgABLwHg AS8B8AIAAQcB4AIAAQcBwAEDAfgBDwHyAgABLwHwAgABBwHgAgABBwGAAQMB+AEPAfICAAEvAeACAAEH
AgABBwHAAgABAwGAAQEB+AEPAfICAAEvAeACAAEPAcABAAGAAQMEAAHyAgABLwHAAgABDwHAAgABAwQA AcACAAEDAYABAQH4AQ8B8gIAAS8B4AIAAQ8BwAEAAYABAwQAAfICAAEvAcACAAEPAcACAAEDBAAB8gIA
AfICAAEPAYACAAEPAcACAAEDAfABHwGAAQEB8gIAAQ8BoAIAAR8BwAIAAQMB8AEfAcABAQHyAgABDwMA AQ8BgAIAAQ8BwAIAAQMB8AEfAYABAQHyAgABDwGgAgABHwHAAgABAwHwAR8BwAEBAfICAAEPAwABHwHA
AR8BwAEAASABAwHwAR8BwAEDAfICAAEPAUACAAEfAcACAAEDAfABHwHgAQMB8gIAAQ8DAAE/AcABgAEA AQABIAEDAfABHwHAAQMB8gIAAQ8BQAIAAR8BwAIAAQMB8AEfAeABAwHyAgABDwMAAT8BwAGAAQABAwHw
AQMB8AEfAfABBwHyAgABDwGAAgABPwHAAgABAwHwAR8B8AEHAfACAAEPAcACAAE/AeACAAEHAfABHwH4 AR8B8AEHAfICAAEPAYACAAE/AcACAAEDAfABHwHwAQcB8AIAAQ8BwAIAAT8B4AIAAQcB8AEfAfgBDwHw
AQ8B8AIAAQ8BwAIAAX8B4AIAAQcB8AEfAfgBHwHwAgABHwHAAgABfwHwAgABDwHwAR8B/AEfAfACAAE/ AgABDwHAAgABfwHgAgABBwHwAR8B+AEfAfACAAEfAcACAAF/AfACAAEPAfABHwH8AR8B8AIAAT8BwAIA
AcACAAF/AfACAAEPAfABHwH8AT8B8AEAAQIBfwGAAgABfwH4AgABHwHwAR8B/gE/AfABAAEEAf8BgAIA AX8B8AIAAQ8B8AEfAfwBPwHwAQABAgF/AYACAAF/AfgCAAEfAfABHwH+AT8B8AEAAQQB/wGAAgAB/wH8
Af8B/AIAAT8B8AEfAf4BfwHwAQABAQH/AcACAAH/Af4CAAF/BP8B8AEAAQMC/wIAAv8BgAEBBf8B8wG8 AgABPwHwAR8B/gF/AfABAAEBAf8BwAIAAf8B/gIAAX8E/wHwAQABAwL/AgAC/wGAAQEF/wHzAbwBBwL/
AQcC/wH4AQEC/wHAAQMF/wHwAQABDwP/AcEJ/wHnAv8B5wHgAgABBwH/AcABAwH/BAAB8AIAAQcBgAIA AfgBAQL/AcABAwX/AfABAAEPA/8BwQn/AecC/wHnAeACAAEHAf8BwAEDAf8EAAHwAgABBwGAAgABAQH/
AQEB/wIAAf8EAAH0AgABLwGAAgABAQH8AgABPwQAAfcBwAEAAW8BAAEBAZABAAH4AgABHwQAAfcBgAEA AgAB/wQAAfQCAAEvAYACAAEBAfwCAAE/BAAB9wHAAQABbwEAAQEBkAEAAfgCAAEfBAAB9wGAAQABLwIA
AS8CAAGQAQAB8AIAAQ8EAAH3AYABAAEPAgABgwH8AeACAAEHBAAB9wIAAQ8CAAFEAQQBwAIAAQMEAAH2 AZABAAHwAgABDwQAAfcBgAEAAQ8CAAGDAfwB4AIAAQcEAAH3AgABDwIAAUQBBAHAAgABAwQAAfYCAAEP
AgABDwMAAQQBwAIAAQMEAAH2AgABBwQAAYACAAEBBAAB9gIAAQcEAAGAAgABAQQAAfQCAAEHAgABAgYA AwABBAHAAgABAwQAAfYCAAEHBAABgAIAAQEEAAH2AgABBwQAAYACAAEBBAAB9AIAAQcCAAECBgABAQGA
AQEBgAEAAfQCAAEHCQABAQGAAQAB9AIAAQcMAAHwAgABBwEAAQEBgAYAAQgCAAHwAgABBwEAAQEBgAEQ AQAB9AIAAQcJAAEBAYABAAH0AgABBwwAAfACAAEHAQABAQGABgABCAIAAfACAAEHAQABAQGAARAFAAEI
BQABCAIAAfACAAEPAQABAQGTAfwFAAEIAgAB8AIAAQ8JAAEJAYABAAH0ASABAAEPCQABCQGQAQAB9AIA AgAB8AIAAQ8BAAEBAZMB/AUAAQgCAAHwAgABDwkAAQkBgAEAAfQBIAEAAQ8JAAEJAZABAAH0AgABLwkA
AS8JAAEIARABAAH0AgABLwkAAQgBEAEAAfQCAAEvDAAB9AIAAQ8MAAH0AgABDwQAAYACAAEBAQwCAAEQ AQgBEAEAAfQCAAEvCQABCAEQAQAB9AIAAS8MAAH0AgABDwwAAfQCAAEPBAABgAIAAQEBDAIAARAB9AIA
AfQCAAEPBAABgAIAAQEBEgIAAUgB9AIAAR8EAAHAAgABAwEBAgABgAH0AQABAQE/AwABEAHAAgABAwEB AQ8EAAGAAgABAQESAgABSAH0AgABHwQAAcACAAEDAQECAAGAAfQBAAEBAT8DAAEQAcACAAEDAQECAAGA
AgABgAH0AQABAgF/BAAB4AIAAQcBAQIAAYAB8AEAAQQB/wQAAfACAAEPBAAB8AEAAQEB/wQAAfgCAAEf AfQBAAECAX8EAAHgAgABBwEBAgABgAHwAQABBAH/BAAB8AIAAQ8EAAHwAQABAQH/BAAB+AIAAR8BgAIA
AYACAAEBAfABAAEDAf8BgAIAAQEB/AIAAT8E/wH3Af8B5wH/AcACAAEDAf8CAAX/AfABAAEPBv8BwAED AQEB8AEAAQMB/wGAAgABAQH8AgABPwT/AfcB/wHnAf8BwAIAAQMB/wIABf8B8AEAAQ8G/wHAAQMB/ws=
Af8L
</value> </value>
</data> </data>
<metadata name="folderBrowserDialogDownloadDirectoryWin.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="folderBrowserDialogDownloadDirectoryWin.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">