diff --git a/LightlessSync/FileCache/CacheMonitor.cs b/LightlessSync/FileCache/CacheMonitor.cs index a571f99..d310851 100644 --- a/LightlessSync/FileCache/CacheMonitor.cs +++ b/LightlessSync/FileCache/CacheMonitor.cs @@ -1,5 +1,5 @@ using LightlessSync.Interop.Ipc; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.Services; using LightlessSync.Services.Mediator; using LightlessSync.Utils; @@ -11,7 +11,7 @@ namespace LightlessSync.FileCache; public sealed class CacheMonitor : DisposableMediatorSubscriberBase { - private readonly MareConfigService _configService; + private readonly LightlessConfigService _configService; private readonly DalamudUtilService _dalamudUtil; private readonly FileCompactor _fileCompactor; private readonly FileCacheManager _fileDbManager; @@ -22,8 +22,8 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase private readonly CancellationTokenSource _periodicCalculationTokenSource = new(); public static readonly IImmutableList AllowedFileExtensions = [".mdl", ".tex", ".mtrl", ".tmb", ".pap", ".avfx", ".atex", ".sklb", ".eid", ".phyb", ".pbd", ".scd", ".skp", ".shpk"]; - public CacheMonitor(ILogger logger, IpcManager ipcManager, MareConfigService configService, - FileCacheManager fileDbManager, MareMediator mediator, PerformanceCollectorService performanceCollector, DalamudUtilService dalamudUtil, + public CacheMonitor(ILogger logger, IpcManager ipcManager, LightlessConfigService configService, + FileCacheManager fileDbManager, LightlessMediator mediator, PerformanceCollectorService performanceCollector, DalamudUtilService dalamudUtil, FileCompactor fileCompactor) : base(logger, mediator) { _ipcManager = ipcManager; @@ -35,14 +35,14 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase Mediator.Subscribe(this, (_) => { StartPenumbraWatcher(_ipcManager.Penumbra.ModDirectory); - StartMareWatcher(configService.Current.CacheFolder); + StartLightlessWatcher(configService.Current.CacheFolder); InvokeScan(); }); Mediator.Subscribe(this, (msg) => HaltScan(msg.Source)); Mediator.Subscribe(this, (msg) => ResumeScan(msg.Source)); Mediator.Subscribe(this, (_) => { - StartMareWatcher(configService.Current.CacheFolder); + StartLightlessWatcher(configService.Current.CacheFolder); StartPenumbraWatcher(_ipcManager.Penumbra.ModDirectory); InvokeScan(); }); @@ -57,7 +57,7 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase } if (configService.Current.HasValidSetup()) { - StartMareWatcher(configService.Current.CacheFolder); + StartLightlessWatcher(configService.Current.CacheFolder); InvokeScan(); } @@ -102,37 +102,37 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase record WatcherChange(WatcherChangeTypes ChangeType, string? OldPath = null); private readonly Dictionary _watcherChanges = new Dictionary(StringComparer.OrdinalIgnoreCase); - private readonly Dictionary _mareChanges = new Dictionary(StringComparer.OrdinalIgnoreCase); + private readonly Dictionary _lightlessChanges = new Dictionary(StringComparer.OrdinalIgnoreCase); public void StopMonitoring() { - Logger.LogInformation("Stopping monitoring of Penumbra and Mare storage folders"); - MareWatcher?.Dispose(); + Logger.LogInformation("Stopping monitoring of Penumbra and Lightless storage folders"); + LightlessWatcher?.Dispose(); PenumbraWatcher?.Dispose(); - MareWatcher = null; + LightlessWatcher = null; PenumbraWatcher = null; } public bool StorageisNTFS { get; private set; } = false; - public void StartMareWatcher(string? marePath) + public void StartLightlessWatcher(string? lightlessPath) { - MareWatcher?.Dispose(); - if (string.IsNullOrEmpty(marePath) || !Directory.Exists(marePath)) + LightlessWatcher?.Dispose(); + if (string.IsNullOrEmpty(lightlessPath) || !Directory.Exists(lightlessPath)) { - MareWatcher = null; - Logger.LogWarning("Mare file path is not set, cannot start the FSW for Mare."); + LightlessWatcher = null; + Logger.LogWarning("Lightless file path is not set, cannot start the FSW for Lightless."); return; } DriveInfo di = new(new DirectoryInfo(_configService.Current.CacheFolder).Root.FullName); StorageisNTFS = string.Equals("NTFS", di.DriveFormat, StringComparison.OrdinalIgnoreCase); - Logger.LogInformation("Mare Storage is on NTFS drive: {isNtfs}", StorageisNTFS); + Logger.LogInformation("Lightless Storage is on NTFS drive: {isNtfs}", StorageisNTFS); - Logger.LogDebug("Initializing Mare FSW on {path}", marePath); - MareWatcher = new() + Logger.LogDebug("Initializing Lightless FSW on {path}", lightlessPath); + LightlessWatcher = new() { - Path = marePath, + Path = lightlessPath, InternalBufferSize = 8388608, NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.LastWrite @@ -143,23 +143,23 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase IncludeSubdirectories = false, }; - MareWatcher.Deleted += MareWatcher_FileChanged; - MareWatcher.Created += MareWatcher_FileChanged; - MareWatcher.EnableRaisingEvents = true; + LightlessWatcher.Deleted += LightlessWatcher_FileChanged; + LightlessWatcher.Created += LightlessWatcher_FileChanged; + LightlessWatcher.EnableRaisingEvents = true; } - private void MareWatcher_FileChanged(object sender, FileSystemEventArgs e) + private void LightlessWatcher_FileChanged(object sender, FileSystemEventArgs e) { - Logger.LogTrace("Mare FSW: FileChanged: {change} => {path}", e.ChangeType, e.FullPath); + Logger.LogTrace("Lightless FSW: FileChanged: {change} => {path}", e.ChangeType, e.FullPath); if (!AllowedFileExtensions.Any(ext => e.FullPath.EndsWith(ext, StringComparison.OrdinalIgnoreCase))) return; lock (_watcherChanges) { - _mareChanges[e.FullPath] = new(e.ChangeType); + _lightlessChanges[e.FullPath] = new(e.ChangeType); } - _ = MareWatcherExecution(); + _ = LightlessWatcherExecution(); } public void StartPenumbraWatcher(string? penumbraPath) @@ -247,18 +247,18 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase } private CancellationTokenSource _penumbraFswCts = new(); - private CancellationTokenSource _mareFswCts = new(); + private CancellationTokenSource _lightlessFswCts = new(); public FileSystemWatcher? PenumbraWatcher { get; private set; } - public FileSystemWatcher? MareWatcher { get; private set; } + public FileSystemWatcher? LightlessWatcher { get; private set; } - private async Task MareWatcherExecution() + private async Task LightlessWatcherExecution() { - _mareFswCts = _mareFswCts.CancelRecreate(); - var token = _mareFswCts.Token; + _lightlessFswCts = _lightlessFswCts.CancelRecreate(); + var token = _lightlessFswCts.Token; var delay = TimeSpan.FromSeconds(5); Dictionary changes; - lock (_mareChanges) - changes = _mareChanges.ToDictionary(t => t.Key, t => t.Value, StringComparer.Ordinal); + lock (_lightlessChanges) + changes = _lightlessChanges.ToDictionary(t => t.Key, t => t.Value, StringComparer.Ordinal); try { do @@ -271,11 +271,11 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase return; } - lock (_mareChanges) + lock (_lightlessChanges) { foreach (var key in changes.Keys) { - _mareChanges.Remove(key); + _lightlessChanges.Remove(key); } } @@ -458,9 +458,9 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase base.Dispose(disposing); _scanCancellationTokenSource?.Cancel(); PenumbraWatcher?.Dispose(); - MareWatcher?.Dispose(); + LightlessWatcher?.Dispose(); _penumbraFswCts?.CancelDispose(); - _mareFswCts?.CancelDispose(); + _lightlessFswCts?.CancelDispose(); _periodicCalculationTokenSource?.CancelDispose(); } @@ -478,7 +478,7 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase if (string.IsNullOrEmpty(_configService.Current.CacheFolder) || !Directory.Exists(_configService.Current.CacheFolder)) { cacheDirExists = false; - Logger.LogWarning("Mare Cache directory is not set or does not exist."); + Logger.LogWarning("Lightless Cache directory is not set or does not exist."); } if (!penDirExists || !cacheDirExists) { @@ -681,7 +681,7 @@ public sealed class CacheMonitor : DisposableMediatorSubscriberBase { _configService.Current.InitialScanComplete = true; _configService.Save(); - StartMareWatcher(_configService.Current.CacheFolder); + StartLightlessWatcher(_configService.Current.CacheFolder); StartPenumbraWatcher(penumbraDir); } } diff --git a/LightlessSync/FileCache/FileCacheManager.cs b/LightlessSync/FileCache/FileCacheManager.cs index f2959a1..c94971f 100644 --- a/LightlessSync/FileCache/FileCacheManager.cs +++ b/LightlessSync/FileCache/FileCacheManager.cs @@ -1,6 +1,6 @@ using K4os.Compression.LZ4.Legacy; using LightlessSync.Interop.Ipc; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.Services.Mediator; using LightlessSync.Utils; using Microsoft.Extensions.Hosting; @@ -16,8 +16,8 @@ public sealed class FileCacheManager : IHostedService public const string CachePrefix = "{cache}"; public const string CsvSplit = "|"; public const string PenumbraPrefix = "{penumbra}"; - private readonly MareConfigService _configService; - private readonly MareMediator _mareMediator; + private readonly LightlessConfigService _configService; + private readonly LightlessMediator _lightlessMediator; private readonly string _csvPath; private readonly ConcurrentDictionary> _fileCaches = new(StringComparer.Ordinal); private readonly SemaphoreSlim _getCachesByPathsSemaphore = new(1, 1); @@ -26,12 +26,12 @@ public sealed class FileCacheManager : IHostedService private readonly ILogger _logger; public string CacheFolder => _configService.Current.CacheFolder; - public FileCacheManager(ILogger logger, IpcManager ipcManager, MareConfigService configService, MareMediator mareMediator) + public FileCacheManager(ILogger logger, IpcManager ipcManager, LightlessConfigService configService, LightlessMediator lightlessMediator) { _logger = logger; _ipcManager = ipcManager; _configService = configService; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _csvPath = Path.Combine(configService.ConfigurationDirectory, "FileCache.csv"); } @@ -82,7 +82,7 @@ public sealed class FileCacheManager : IHostedService public Task> ValidateLocalIntegrity(IProgress<(int, int, FileCacheEntity)> progress, CancellationToken cancellationToken) { - _mareMediator.Publish(new HaltScanMessage(nameof(ValidateLocalIntegrity))); + _lightlessMediator.Publish(new HaltScanMessage(nameof(ValidateLocalIntegrity))); _logger.LogInformation("Validating local storage"); var cacheEntries = _fileCaches.SelectMany(v => v.Value).Where(v => v.IsCacheEntry).ToList(); List brokenEntities = []; @@ -131,7 +131,7 @@ public sealed class FileCacheManager : IHostedService } } - _mareMediator.Publish(new ResumeScanMessage(nameof(ValidateLocalIntegrity))); + _lightlessMediator.Publish(new ResumeScanMessage(nameof(ValidateLocalIntegrity))); return Task.FromResult(brokenEntities); } @@ -417,9 +417,9 @@ public sealed class FileCacheManager : IHostedService { if (!_ipcManager.Penumbra.APIAvailable || string.IsNullOrEmpty(_ipcManager.Penumbra.ModDirectory)) { - _mareMediator.Publish(new NotificationMessage("Penumbra not connected", - "Could not load local file cache data. Penumbra is not connected or not properly set up. Please enable and/or configure Penumbra properly to use Mare. After, reload Mare in the Plugin installer.", - MareConfiguration.Models.NotificationType.Error)); + _lightlessMediator.Publish(new NotificationMessage("Penumbra not connected", + "Could not load local file cache data. Penumbra is not connected or not properly set up. Please enable and/or configure Penumbra properly to use Lightless. After, reload Lightless in the Plugin installer.", + LightlessConfiguration.Models.NotificationType.Error)); } _logger.LogInformation("{csvPath} found, parsing", _csvPath); diff --git a/LightlessSync/FileCache/FileCompactor.cs b/LightlessSync/FileCache/FileCompactor.cs index 9fd6019..737c1f0 100644 --- a/LightlessSync/FileCache/FileCompactor.cs +++ b/LightlessSync/FileCache/FileCompactor.cs @@ -1,4 +1,4 @@ -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.Services; using Microsoft.Extensions.Logging; using System.Runtime.InteropServices; @@ -15,14 +15,14 @@ public sealed class FileCompactor private readonly WOF_FILE_COMPRESSION_INFO_V1 _efInfo; private readonly ILogger _logger; - private readonly MareConfigService _mareConfigService; + private readonly LightlessConfigService _lightlessConfigService; private readonly DalamudUtilService _dalamudUtilService; - public FileCompactor(ILogger logger, MareConfigService mareConfigService, DalamudUtilService dalamudUtilService) + public FileCompactor(ILogger logger, LightlessConfigService lightlessConfigService, DalamudUtilService dalamudUtilService) { _clusterSizes = new(StringComparer.Ordinal); _logger = logger; - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; _dalamudUtilService = dalamudUtilService; _efInfo = new WOF_FILE_COMPRESSION_INFO_V1 { @@ -50,7 +50,7 @@ public sealed class FileCompactor MassCompactRunning = true; int currentFile = 1; - var allFiles = Directory.EnumerateFiles(_mareConfigService.Current.CacheFolder).ToList(); + var allFiles = Directory.EnumerateFiles(_lightlessConfigService.Current.CacheFolder).ToList(); int allFilesCount = allFiles.Count; foreach (var file in allFiles) { @@ -82,7 +82,7 @@ public sealed class FileCompactor { await File.WriteAllBytesAsync(filePath, decompressedFile, token).ConfigureAwait(false); - if (_dalamudUtilService.IsWine || !_mareConfigService.Current.UseCompactor) + if (_dalamudUtilService.IsWine || !_lightlessConfigService.Current.UseCompactor) { return; } diff --git a/LightlessSync/FileCache/TransientResourceManager.cs b/LightlessSync/FileCache/TransientResourceManager.cs index 7e42920..4359bdc 100644 --- a/LightlessSync/FileCache/TransientResourceManager.cs +++ b/LightlessSync/FileCache/TransientResourceManager.cs @@ -1,6 +1,6 @@ using LightlessSync.API.Data.Enum; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Configurations; using LightlessSync.PlayerData.Data; using LightlessSync.PlayerData.Handlers; using LightlessSync.Services; @@ -26,7 +26,7 @@ public sealed class TransientResourceManager : DisposableMediatorSubscriberBase public bool IsTransientRecording { get; private set; } = false; public TransientResourceManager(ILogger logger, TransientConfigService configurationService, - DalamudUtilService dalamudUtil, MareMediator mediator) : base(logger, mediator) + DalamudUtilService dalamudUtil, LightlessMediator mediator) : base(logger, mediator) { _configurationService = configurationService; _dalamudUtil = dalamudUtil; diff --git a/LightlessSync/Interop/DalamudLogger.cs b/LightlessSync/Interop/DalamudLogger.cs index 3797596..3a833b9 100644 --- a/LightlessSync/Interop/DalamudLogger.cs +++ b/LightlessSync/Interop/DalamudLogger.cs @@ -1,5 +1,5 @@ using Dalamud.Plugin.Services; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using Microsoft.Extensions.Logging; using System.Text; @@ -7,15 +7,15 @@ namespace LightlessSync.Interop; internal sealed class DalamudLogger : ILogger { - private readonly MareConfigService _mareConfigService; + private readonly LightlessConfigService _lightlessConfigService; private readonly string _name; private readonly IPluginLog _pluginLog; private readonly bool _hasModifiedGameFiles; - public DalamudLogger(string name, MareConfigService mareConfigService, IPluginLog pluginLog, bool hasModifiedGameFiles) + public DalamudLogger(string name, LightlessConfigService lightlessConfigService, IPluginLog pluginLog, bool hasModifiedGameFiles) { _name = name; - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; _pluginLog = pluginLog; _hasModifiedGameFiles = hasModifiedGameFiles; } @@ -24,7 +24,7 @@ internal sealed class DalamudLogger : ILogger public bool IsEnabled(LogLevel logLevel) { - return (int)_mareConfigService.Current.LogLevel <= (int)logLevel; + return (int)_lightlessConfigService.Current.LogLevel <= (int)logLevel; } public void Log(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func formatter) diff --git a/LightlessSync/Interop/DalamudLoggingProvider.cs b/LightlessSync/Interop/DalamudLoggingProvider.cs index 3fb3b88..0a68789 100644 --- a/LightlessSync/Interop/DalamudLoggingProvider.cs +++ b/LightlessSync/Interop/DalamudLoggingProvider.cs @@ -1,5 +1,5 @@ using Dalamud.Plugin.Services; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using Microsoft.Extensions.Logging; using System.Collections.Concurrent; @@ -12,13 +12,13 @@ public sealed class DalamudLoggingProvider : ILoggerProvider private readonly ConcurrentDictionary _loggers = new(StringComparer.OrdinalIgnoreCase); - private readonly MareConfigService _mareConfigService; + private readonly LightlessConfigService _lightlessConfigService; private readonly IPluginLog _pluginLog; private readonly bool _hasModifiedGameFiles; - public DalamudLoggingProvider(MareConfigService mareConfigService, IPluginLog pluginLog, bool hasModifiedGameFiles) + public DalamudLoggingProvider(LightlessConfigService lightlessConfigService, IPluginLog pluginLog, bool hasModifiedGameFiles) { - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; _pluginLog = pluginLog; _hasModifiedGameFiles = hasModifiedGameFiles; } @@ -35,7 +35,7 @@ public sealed class DalamudLoggingProvider : ILoggerProvider catName = string.Join("", Enumerable.Range(0, 15 - catName.Length).Select(_ => " ")) + catName; } - return _loggers.GetOrAdd(catName, name => new DalamudLogger(name, _mareConfigService, _pluginLog, _hasModifiedGameFiles)); + return _loggers.GetOrAdd(catName, name => new DalamudLogger(name, _lightlessConfigService, _pluginLog, _hasModifiedGameFiles)); } public void Dispose() diff --git a/LightlessSync/Interop/DalamudLoggingProviderExtensions.cs b/LightlessSync/Interop/DalamudLoggingProviderExtensions.cs index 0b7b769..9d2117d 100644 --- a/LightlessSync/Interop/DalamudLoggingProviderExtensions.cs +++ b/LightlessSync/Interop/DalamudLoggingProviderExtensions.cs @@ -1,5 +1,5 @@ using Dalamud.Plugin.Services; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; @@ -13,7 +13,7 @@ public static class DalamudLoggingProviderExtensions builder.ClearProviders(); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton - (b => new DalamudLoggingProvider(b.GetRequiredService(), pluginLog, hasModifiedGameFiles))); + (b => new DalamudLoggingProvider(b.GetRequiredService(), pluginLog, hasModifiedGameFiles))); return builder; } } \ No newline at end of file diff --git a/LightlessSync/Interop/Ipc/IpcCallerCustomize.cs b/LightlessSync/Interop/Ipc/IpcCallerCustomize.cs index ebaa96d..60feaba 100644 --- a/LightlessSync/Interop/Ipc/IpcCallerCustomize.cs +++ b/LightlessSync/Interop/Ipc/IpcCallerCustomize.cs @@ -20,10 +20,10 @@ public sealed class IpcCallerCustomize : IIpcCaller private readonly ICallGateSubscriber _customizePlusDeleteByUniqueId; private readonly ILogger _logger; private readonly DalamudUtilService _dalamudUtil; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; public IpcCallerCustomize(ILogger logger, IDalamudPluginInterface dalamudPluginInterface, - DalamudUtilService dalamudUtil, MareMediator mareMediator) + DalamudUtilService dalamudUtil, LightlessMediator lightlessMediator) { _customizePlusApiVersion = dalamudPluginInterface.GetIpcSubscriber<(int, int)>("CustomizePlus.General.GetApiVersion"); _customizePlusGetActiveProfile = dalamudPluginInterface.GetIpcSubscriber("CustomizePlus.Profile.GetActiveProfileIdOnCharacter"); @@ -36,7 +36,7 @@ public sealed class IpcCallerCustomize : IIpcCaller _customizePlusOnScaleUpdate.Subscribe(OnCustomizePlusScaleChange); _logger = logger; _dalamudUtil = dalamudUtil; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; CheckAPI(); } @@ -129,7 +129,7 @@ public sealed class IpcCallerCustomize : IIpcCaller private void OnCustomizePlusScaleChange(ushort c, Guid g) { var obj = _dalamudUtil.GetCharacterFromObjectTableByIndex(c); - _mareMediator.Publish(new CustomizePlusMessage(obj?.Address ?? null)); + _lightlessMediator.Publish(new CustomizePlusMessage(obj?.Address ?? null)); } public void Dispose() diff --git a/LightlessSync/Interop/Ipc/IpcCallerGlamourer.cs b/LightlessSync/Interop/Ipc/IpcCallerGlamourer.cs index e10a0d6..8763188 100644 --- a/LightlessSync/Interop/Ipc/IpcCallerGlamourer.cs +++ b/LightlessSync/Interop/Ipc/IpcCallerGlamourer.cs @@ -2,7 +2,7 @@ using Dalamud.Plugin; using Glamourer.Api.Helpers; using Glamourer.Api.IpcSubscribers; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.PlayerData.Handlers; using LightlessSync.Services; using LightlessSync.Services.Mediator; @@ -15,7 +15,7 @@ public sealed class IpcCallerGlamourer : DisposableMediatorSubscriberBase, IIpcC private readonly ILogger _logger; private readonly IDalamudPluginInterface _pi; private readonly DalamudUtilService _dalamudUtil; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly RedrawManager _redrawManager; private readonly ApiVersion _glamourerApiVersions; @@ -30,8 +30,8 @@ public sealed class IpcCallerGlamourer : DisposableMediatorSubscriberBase, IIpcC private bool _shownGlamourerUnavailable = false; private readonly uint LockCode = 0x6D617265; - public IpcCallerGlamourer(ILogger logger, IDalamudPluginInterface pi, DalamudUtilService dalamudUtil, MareMediator mareMediator, - RedrawManager redrawManager) : base(logger, mareMediator) + public IpcCallerGlamourer(ILogger logger, IDalamudPluginInterface pi, DalamudUtilService dalamudUtil, LightlessMediator lightlessMediator, + RedrawManager redrawManager) : base(logger, lightlessMediator) { _glamourerApiVersions = new ApiVersion(pi); _glamourerGetAllCustomization = new GetStateBase64(pi); @@ -44,7 +44,7 @@ public sealed class IpcCallerGlamourer : DisposableMediatorSubscriberBase, IIpcC _logger = logger; _pi = pi; _dalamudUtil = dalamudUtil; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _redrawManager = redrawManager; CheckAPI(); @@ -97,7 +97,7 @@ public sealed class IpcCallerGlamourer : DisposableMediatorSubscriberBase, IIpcC if (!apiAvailable && !_shownGlamourerUnavailable) { _shownGlamourerUnavailable = true; - _mareMediator.Publish(new NotificationMessage("Glamourer inactive", "Your Glamourer installation is not active or out of date. Update Glamourer to continue to use Mare. If you just updated Glamourer, ignore this message.", + _lightlessMediator.Publish(new NotificationMessage("Glamourer inactive", "Your Glamourer installation is not active or out of date. Update Glamourer to continue to use Lightless. If you just updated Glamourer, ignore this message.", NotificationType.Error)); } } @@ -168,7 +168,7 @@ public sealed class IpcCallerGlamourer : DisposableMediatorSubscriberBase, IIpcC _glamourerRevert.Invoke(chara.ObjectIndex, LockCode); logger.LogDebug("[{appid}] Calling On IPC: PenumbraRedraw", applicationId); - _mareMediator.Publish(new PenumbraRedrawCharacterMessage(chara)); + _lightlessMediator.Publish(new PenumbraRedrawCharacterMessage(chara)); } catch (Exception ex) { @@ -212,6 +212,6 @@ public sealed class IpcCallerGlamourer : DisposableMediatorSubscriberBase, IIpcC private void GlamourerChanged(nint address) { - _mareMediator.Publish(new GlamourerChangedMessage(address)); + _lightlessMediator.Publish(new GlamourerChangedMessage(address)); } } diff --git a/LightlessSync/Interop/Ipc/IpcCallerHeels.cs b/LightlessSync/Interop/Ipc/IpcCallerHeels.cs index a32653b..69b359c 100644 --- a/LightlessSync/Interop/Ipc/IpcCallerHeels.cs +++ b/LightlessSync/Interop/Ipc/IpcCallerHeels.cs @@ -9,7 +9,7 @@ namespace LightlessSync.Interop.Ipc; public sealed class IpcCallerHeels : IIpcCaller { private readonly ILogger _logger; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly DalamudUtilService _dalamudUtil; private readonly ICallGateSubscriber<(int, int)> _heelsGetApiVersion; private readonly ICallGateSubscriber _heelsGetOffset; @@ -17,10 +17,10 @@ public sealed class IpcCallerHeels : IIpcCaller private readonly ICallGateSubscriber _heelsRegisterPlayer; private readonly ICallGateSubscriber _heelsUnregisterPlayer; - public IpcCallerHeels(ILogger logger, IDalamudPluginInterface pi, DalamudUtilService dalamudUtil, MareMediator mareMediator) + public IpcCallerHeels(ILogger logger, IDalamudPluginInterface pi, DalamudUtilService dalamudUtil, LightlessMediator lightlessMediator) { _logger = logger; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _dalamudUtil = dalamudUtil; _heelsGetApiVersion = pi.GetIpcSubscriber<(int, int)>("SimpleHeels.ApiVersion"); _heelsGetOffset = pi.GetIpcSubscriber("SimpleHeels.GetLocalPlayer"); @@ -37,7 +37,7 @@ public sealed class IpcCallerHeels : IIpcCaller private void HeelsOffsetChange(string offset) { - _mareMediator.Publish(new HeelsOffsetMessage()); + _lightlessMediator.Publish(new HeelsOffsetMessage()); } public async Task GetOffsetAsync() diff --git a/LightlessSync/Interop/Ipc/IpcCallerHonorific.cs b/LightlessSync/Interop/Ipc/IpcCallerHonorific.cs index 3f4ca87..58588c5 100644 --- a/LightlessSync/Interop/Ipc/IpcCallerHonorific.cs +++ b/LightlessSync/Interop/Ipc/IpcCallerHonorific.cs @@ -18,14 +18,14 @@ public sealed class IpcCallerHonorific : IIpcCaller private readonly ICallGateSubscriber _honorificReady; private readonly ICallGateSubscriber _honorificSetCharacterTitle; private readonly ILogger _logger; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly DalamudUtilService _dalamudUtil; public IpcCallerHonorific(ILogger logger, IDalamudPluginInterface pi, DalamudUtilService dalamudUtil, - MareMediator mareMediator) + LightlessMediator lightlessMediator) { _logger = logger; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _dalamudUtil = dalamudUtil; _honorificApiVersion = pi.GetIpcSubscriber<(uint, uint)>("Honorific.ApiVersion"); _honorificGetLocalCharacterTitle = pi.GetIpcSubscriber("Honorific.GetLocalCharacterTitle"); @@ -115,18 +115,18 @@ public sealed class IpcCallerHonorific : IIpcCaller private void OnHonorificDisposing() { - _mareMediator.Publish(new HonorificMessage(string.Empty)); + _lightlessMediator.Publish(new HonorificMessage(string.Empty)); } private void OnHonorificLocalCharacterTitleChanged(string titleJson) { string titleData = string.IsNullOrEmpty(titleJson) ? string.Empty : Convert.ToBase64String(Encoding.UTF8.GetBytes(titleJson)); - _mareMediator.Publish(new HonorificMessage(titleData)); + _lightlessMediator.Publish(new HonorificMessage(titleData)); } private void OnHonorificReady() { CheckAPI(); - _mareMediator.Publish(new HonorificReadyMessage()); + _lightlessMediator.Publish(new HonorificReadyMessage()); } } diff --git a/LightlessSync/Interop/Ipc/IpcCallerMoodles.cs b/LightlessSync/Interop/Ipc/IpcCallerMoodles.cs index f3369df..b84af47 100644 --- a/LightlessSync/Interop/Ipc/IpcCallerMoodles.cs +++ b/LightlessSync/Interop/Ipc/IpcCallerMoodles.cs @@ -16,14 +16,14 @@ public sealed class IpcCallerMoodles : IIpcCaller private readonly ICallGateSubscriber _moodlesRevertStatus; private readonly ILogger _logger; private readonly DalamudUtilService _dalamudUtil; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; public IpcCallerMoodles(ILogger logger, IDalamudPluginInterface pi, DalamudUtilService dalamudUtil, - MareMediator mareMediator) + LightlessMediator lightlessMediator) { _logger = logger; _dalamudUtil = dalamudUtil; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _moodlesApiVersion = pi.GetIpcSubscriber("Moodles.Version"); _moodlesOnChange = pi.GetIpcSubscriber("Moodles.StatusManagerModified"); @@ -38,7 +38,7 @@ public sealed class IpcCallerMoodles : IIpcCaller private void OnMoodlesChange(IPlayerCharacter character) { - _mareMediator.Publish(new MoodlesMessage(character.Address)); + _lightlessMediator.Publish(new MoodlesMessage(character.Address)); } public bool APIAvailable { get; private set; } = false; diff --git a/LightlessSync/Interop/Ipc/IpcCallerPenumbra.cs b/LightlessSync/Interop/Ipc/IpcCallerPenumbra.cs index c12c301..e7b23e3 100644 --- a/LightlessSync/Interop/Ipc/IpcCallerPenumbra.cs +++ b/LightlessSync/Interop/Ipc/IpcCallerPenumbra.cs @@ -1,5 +1,5 @@ using Dalamud.Plugin; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.PlayerData.Handlers; using LightlessSync.Services; using LightlessSync.Services.Mediator; @@ -15,7 +15,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa { private readonly IDalamudPluginInterface _pi; private readonly DalamudUtilService _dalamudUtil; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly RedrawManager _redrawManager; private bool _shownPenumbraUnavailable = false; private string? _penumbraModDirectory; @@ -27,7 +27,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa if (!string.Equals(_penumbraModDirectory, value, StringComparison.Ordinal)) { _penumbraModDirectory = value; - _mareMediator.Publish(new PenumbraDirectoryChangedMessage(_penumbraModDirectory)); + _lightlessMediator.Publish(new PenumbraDirectoryChangedMessage(_penumbraModDirectory)); } } } @@ -54,11 +54,11 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa private readonly GetGameObjectResourcePaths _penumbraResourcePaths; public IpcCallerPenumbra(ILogger logger, IDalamudPluginInterface pi, DalamudUtilService dalamudUtil, - MareMediator mareMediator, RedrawManager redrawManager) : base(logger, mareMediator) + LightlessMediator lightlessMediator, RedrawManager redrawManager) : base(logger, lightlessMediator) { _pi = pi; _dalamudUtil = dalamudUtil; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _redrawManager = redrawManager; _penumbraInit = Initialized.Subscriber(pi, PenumbraInit); _penumbraDispose = Disposed.Subscriber(pi, PenumbraDispose); @@ -76,7 +76,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa _penumbraModSettingChanged = ModSettingChanged.Subscriber(pi, (change, arg1, arg, b) => { if (change == ModSettingChange.EnableState) - _mareMediator.Publish(new PenumbraModSettingChangedMessage()); + _lightlessMediator.Publish(new PenumbraModSettingChangedMessage()); }); _penumbraConvertTextureFile = new ConvertTextureFile(pi); _penumbraResourcePaths = new GetGameObjectResourcePaths(pi); @@ -125,8 +125,8 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa if (!penumbraAvailable && !_shownPenumbraUnavailable) { _shownPenumbraUnavailable = true; - _mareMediator.Publish(new NotificationMessage("Penumbra inactive", - "Your Penumbra installation is not active or out of date. Update Penumbra and/or the Enable Mods setting in Penumbra to continue to use Mare. If you just updated Penumbra, ignore this message.", + _lightlessMediator.Publish(new NotificationMessage("Penumbra inactive", + "Your Penumbra installation is not active or out of date. Update Penumbra and/or the Enable Mods setting in Penumbra to continue to use Lightless. If you just updated Penumbra, ignore this message.", NotificationType.Error)); } } @@ -173,7 +173,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa { if (!APIAvailable) return; - _mareMediator.Publish(new HaltScanMessage(nameof(ConvertTextureFiles))); + _lightlessMediator.Publish(new HaltScanMessage(nameof(ConvertTextureFiles))); int currentTexture = 0; foreach (var texture in textures) { @@ -200,7 +200,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa } } } - _mareMediator.Publish(new ResumeScanMessage(nameof(ConvertTextureFiles))); + _lightlessMediator.Publish(new ResumeScanMessage(nameof(ConvertTextureFiles))); await _dalamudUtil.RunOnFrameworkThread(async () => { @@ -215,7 +215,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa return await _dalamudUtil.RunOnFrameworkThread(() => { - var collName = "Mare_" + uid; + var collName = "Lightless_" + uid; var collId = _penumbraCreateNamedTemporaryCollection.Invoke(collName); logger.LogTrace("Creating Temp Collection {collName}, GUID: {collId}", collName, collId); return collId; @@ -284,7 +284,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa await _dalamudUtil.RunOnFrameworkThread(() => { logger.LogTrace("[{applicationId}] Manip: {data}", applicationId, manipulationData); - var retAdd = _penumbraAddTemporaryMod.Invoke("MareChara_Meta", collId, [], manipulationData, 0); + var retAdd = _penumbraAddTemporaryMod.Invoke("LightlessChara_Meta", collId, [], manipulationData, 0); logger.LogTrace("[{applicationId}] Setting temp meta mod for {collId}, Success: {ret}", applicationId, collId, retAdd); }).ConfigureAwait(false); } @@ -299,9 +299,9 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa { logger.LogTrace("[{applicationId}] Change: {from} => {to}", applicationId, mod.Key, mod.Value); } - var retRemove = _penumbraRemoveTemporaryMod.Invoke("MareChara_Files", collId, 0); + var retRemove = _penumbraRemoveTemporaryMod.Invoke("LightlessChara_Files", collId, 0); logger.LogTrace("[{applicationId}] Removing temp files mod for {collId}, Success: {ret}", applicationId, collId, retRemove); - var retAdd = _penumbraAddTemporaryMod.Invoke("MareChara_Files", collId, modPaths, string.Empty, 0); + var retAdd = _penumbraAddTemporaryMod.Invoke("LightlessChara_Files", collId, modPaths, string.Empty, 0); logger.LogTrace("[{applicationId}] Setting temp files mod for {collId}, Success: {ret}", applicationId, collId, retAdd); }).ConfigureAwait(false); } @@ -315,7 +315,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa } else { - _mareMediator.Publish(new PenumbraRedrawMessage(objectAddress, objectTableIndex, wasRequested)); + _lightlessMediator.Publish(new PenumbraRedrawMessage(objectAddress, objectTableIndex, wasRequested)); } } @@ -323,21 +323,21 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa { if (ptr != IntPtr.Zero && string.Compare(arg1, arg2, ignoreCase: true, System.Globalization.CultureInfo.InvariantCulture) != 0) { - _mareMediator.Publish(new PenumbraResourceLoadMessage(ptr, arg1, arg2)); + _lightlessMediator.Publish(new PenumbraResourceLoadMessage(ptr, arg1, arg2)); } } private void PenumbraDispose() { _redrawManager.Cancel(); - _mareMediator.Publish(new PenumbraDisposedMessage()); + _lightlessMediator.Publish(new PenumbraDisposedMessage()); } private void PenumbraInit() { APIAvailable = true; ModDirectory = _penumbraResolveModDir.Invoke(); - _mareMediator.Publish(new PenumbraInitializedMessage()); + _lightlessMediator.Publish(new PenumbraInitializedMessage()); _penumbraRedraw!.Invoke(0, setting: RedrawType.Redraw); } } diff --git a/LightlessSync/Interop/Ipc/IpcCallerPetNames.cs b/LightlessSync/Interop/Ipc/IpcCallerPetNames.cs index 2017e05..a316502 100644 --- a/LightlessSync/Interop/Ipc/IpcCallerPetNames.cs +++ b/LightlessSync/Interop/Ipc/IpcCallerPetNames.cs @@ -11,7 +11,7 @@ public sealed class IpcCallerPetNames : IIpcCaller { private readonly ILogger _logger; private readonly DalamudUtilService _dalamudUtil; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly ICallGateSubscriber _petnamesReady; private readonly ICallGateSubscriber _petnamesDisposing; @@ -24,11 +24,11 @@ public sealed class IpcCallerPetNames : IIpcCaller private readonly ICallGateSubscriber _clearPlayerData; public IpcCallerPetNames(ILogger logger, IDalamudPluginInterface pi, DalamudUtilService dalamudUtil, - MareMediator mareMediator) + LightlessMediator lightlessMediator) { _logger = logger; _dalamudUtil = dalamudUtil; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _petnamesReady = pi.GetIpcSubscriber("PetRenamer.Ready"); _petnamesDisposing = pi.GetIpcSubscriber("PetRenamer.Disposing"); @@ -68,12 +68,12 @@ public sealed class IpcCallerPetNames : IIpcCaller private void OnPetNicknamesReady() { CheckAPI(); - _mareMediator.Publish(new PetNamesReadyMessage()); + _lightlessMediator.Publish(new PetNamesReadyMessage()); } private void OnPetNicknamesDispose() { - _mareMediator.Publish(new PetNamesMessage(string.Empty)); + _lightlessMediator.Publish(new PetNamesMessage(string.Empty)); } public string GetLocalNames() @@ -146,7 +146,7 @@ public sealed class IpcCallerPetNames : IIpcCaller private void OnLocalPetNicknamesDataChange(string data) { - _mareMediator.Publish(new PetNamesMessage(data)); + _lightlessMediator.Publish(new PetNamesMessage(data)); } public void Dispose() diff --git a/LightlessSync/Interop/Ipc/IpcManager.cs b/LightlessSync/Interop/Ipc/IpcManager.cs index 56edd9f..59d17c7 100644 --- a/LightlessSync/Interop/Ipc/IpcManager.cs +++ b/LightlessSync/Interop/Ipc/IpcManager.cs @@ -5,7 +5,7 @@ namespace LightlessSync.Interop.Ipc; public sealed partial class IpcManager : DisposableMediatorSubscriberBase { - public IpcManager(ILogger logger, MareMediator mediator, + public IpcManager(ILogger logger, LightlessMediator mediator, IpcCallerPenumbra penumbraIpc, IpcCallerGlamourer glamourerIpc, IpcCallerCustomize customizeIpc, IpcCallerHeels heelsIpc, IpcCallerHonorific honorificIpc, IpcCallerMoodles moodlesIpc, IpcCallerPetNames ipcCallerPetNames, IpcCallerBrio ipcCallerBrio) : base(logger, mediator) { diff --git a/LightlessSync/Interop/Ipc/IpcProvider.cs b/LightlessSync/Interop/Ipc/IpcProvider.cs index 93e2bc5..88e0202 100644 --- a/LightlessSync/Interop/Ipc/IpcProvider.cs +++ b/LightlessSync/Interop/Ipc/IpcProvider.cs @@ -19,15 +19,15 @@ public class IpcProvider : IHostedService, IMediatorSubscriber private ICallGateProvider>? _handledGameAddresses; private readonly List _activeGameObjectHandlers = []; - public MareMediator Mediator { get; init; } + public LightlessMediator Mediator { get; init; } public IpcProvider(ILogger logger, IDalamudPluginInterface pi, - CharaDataManager charaDataManager, MareMediator mareMediator) + CharaDataManager charaDataManager, LightlessMediator lightlessMediator) { _logger = logger; _pi = pi; _charaDataManager = charaDataManager; - Mediator = mareMediator; + Mediator = lightlessMediator; Mediator.Subscribe(this, (msg) => { diff --git a/LightlessSync/Interop/Ipc/RedrawManager.cs b/LightlessSync/Interop/Ipc/RedrawManager.cs index 59f4dc9..a7e6f05 100644 --- a/LightlessSync/Interop/Ipc/RedrawManager.cs +++ b/LightlessSync/Interop/Ipc/RedrawManager.cs @@ -10,22 +10,22 @@ namespace LightlessSync.Interop.Ipc; public class RedrawManager { - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly DalamudUtilService _dalamudUtil; private readonly ConcurrentDictionary _penumbraRedrawRequests = []; private CancellationTokenSource _disposalCts = new(); public SemaphoreSlim RedrawSemaphore { get; init; } = new(2, 2); - public RedrawManager(MareMediator mareMediator, DalamudUtilService dalamudUtil) + public RedrawManager(LightlessMediator lightlessMediator, DalamudUtilService dalamudUtil) { - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _dalamudUtil = dalamudUtil; } public async Task PenumbraRedrawInternalAsync(ILogger logger, GameObjectHandler handler, Guid applicationId, Action action, CancellationToken token) { - _mareMediator.Publish(new PenumbraStartRedrawMessage(handler.Address)); + _lightlessMediator.Publish(new PenumbraStartRedrawMessage(handler.Address)); _penumbraRedrawRequests[handler.Address] = true; @@ -43,7 +43,7 @@ public class RedrawManager finally { _penumbraRedrawRequests[handler.Address] = false; - _mareMediator.Publish(new PenumbraEndRedrawMessage(handler.Address)); + _lightlessMediator.Publish(new PenumbraEndRedrawMessage(handler.Address)); } } diff --git a/LightlessSync/Interop/VfxSpawnManager.cs b/LightlessSync/Interop/VfxSpawnManager.cs index 03f87b9..c20f826 100644 --- a/LightlessSync/Interop/VfxSpawnManager.cs +++ b/LightlessSync/Interop/VfxSpawnManager.cs @@ -25,23 +25,23 @@ public unsafe class VfxSpawnManager : DisposableMediatorSubscriberBase [Signature("40 53 48 83 EC 20 48 8B D9 48 8B 89 ?? ?? ?? ?? 48 85 C9 74 28 33 D2 E8 ?? ?? ?? ?? 48 8B 8B ?? ?? ?? ?? 48 85 C9")] private readonly delegate* unmanaged _staticVfxRemove; - public VfxSpawnManager(ILogger logger, IGameInteropProvider gameInteropProvider, MareMediator mareMediator) - : base(logger, mareMediator) + public VfxSpawnManager(ILogger logger, IGameInteropProvider gameInteropProvider, LightlessMediator lightlessMediator) + : base(logger, lightlessMediator) { gameInteropProvider.InitializeFromAttributes(this); - mareMediator.Subscribe(this, (msg) => + lightlessMediator.Subscribe(this, (msg) => { ChangeSpawnVisibility(0f); }); - mareMediator.Subscribe(this, (msg) => + lightlessMediator.Subscribe(this, (msg) => { RestoreSpawnVisiblity(); }); - mareMediator.Subscribe(this, (msg) => + lightlessMediator.Subscribe(this, (msg) => { ChangeSpawnVisibility(0f); }); - mareMediator.Subscribe(this, (msg) => + lightlessMediator.Subscribe(this, (msg) => { RestoreSpawnVisiblity(); }); diff --git a/LightlessSync/MareConfiguration/CharaDataConfigService.cs b/LightlessSync/MareConfiguration/CharaDataConfigService.cs index 9a3887c..6230486 100644 --- a/LightlessSync/MareConfiguration/CharaDataConfigService.cs +++ b/LightlessSync/MareConfiguration/CharaDataConfigService.cs @@ -1,6 +1,6 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; public class CharaDataConfigService : ConfigurationServiceBase { diff --git a/LightlessSync/MareConfiguration/ConfigurationExtensions.cs b/LightlessSync/MareConfiguration/ConfigurationExtensions.cs index 494fdfb..f64e11f 100644 --- a/LightlessSync/MareConfiguration/ConfigurationExtensions.cs +++ b/LightlessSync/MareConfiguration/ConfigurationExtensions.cs @@ -1,10 +1,10 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; public static class ConfigurationExtensions { - public static bool HasValidSetup(this MareConfig configuration) + public static bool HasValidSetup(this LightlessConfig configuration) { return configuration.AcceptedAgreement && configuration.InitialScanComplete && !string.IsNullOrEmpty(configuration.CacheFolder) diff --git a/LightlessSync/MareConfiguration/ConfigurationMigrator.cs b/LightlessSync/MareConfiguration/ConfigurationMigrator.cs index 08cecc9..4a8563f 100644 --- a/LightlessSync/MareConfiguration/ConfigurationMigrator.cs +++ b/LightlessSync/MareConfiguration/ConfigurationMigrator.cs @@ -2,7 +2,7 @@ using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; public class ConfigurationMigrator(ILogger logger, TransientConfigService transientConfigService, ServerConfigService serverConfigService) : IHostedService diff --git a/LightlessSync/MareConfiguration/ConfigurationSaveService.cs b/LightlessSync/MareConfiguration/ConfigurationSaveService.cs index b31465a..1dc0c44 100644 --- a/LightlessSync/MareConfiguration/ConfigurationSaveService.cs +++ b/LightlessSync/MareConfiguration/ConfigurationSaveService.cs @@ -1,10 +1,11 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; +using LightlessSync.LightlessConfiguration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System.Reflection; using System.Text.Json; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; public class ConfigurationSaveService : IHostedService { @@ -15,7 +16,7 @@ public class ConfigurationSaveService : IHostedService public const string BackupFolder = "config_backup"; private readonly MethodInfo _saveMethod; - public ConfigurationSaveService(ILogger logger, IEnumerable> configs) + public ConfigurationSaveService(ILogger logger, IEnumerable> configs) { foreach (var config in configs) { @@ -68,7 +69,7 @@ public class ConfigurationSaveService : IHostedService } } - private async Task SaveConfig(IConfigService config) where T : IMareConfiguration + private async Task SaveConfig(IConfigService config) where T : ILightlessConfiguration { _logger.LogTrace("Saving {configName}", config.ConfigurationName); var configDir = config.ConfigurationPath.Replace(config.ConfigurationName, string.Empty); diff --git a/LightlessSync/MareConfiguration/ConfigurationServiceBase.cs b/LightlessSync/MareConfiguration/ConfigurationServiceBase.cs index 4d9a102..cc151c4 100644 --- a/LightlessSync/MareConfiguration/ConfigurationServiceBase.cs +++ b/LightlessSync/MareConfiguration/ConfigurationServiceBase.cs @@ -1,9 +1,9 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; using System.Text.Json; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; -public abstract class ConfigurationServiceBase : IConfigService where T : IMareConfiguration +public abstract class ConfigurationServiceBase : IConfigService where T : ILightlessConfiguration { private readonly CancellationTokenSource _periodicCheckCts = new(); private DateTime _configLastWriteTime; diff --git a/LightlessSync/MareConfiguration/Configurations/CharaDataConfig.cs b/LightlessSync/MareConfiguration/Configurations/CharaDataConfig.cs index 94c5853..cda29f8 100644 --- a/LightlessSync/MareConfiguration/Configurations/CharaDataConfig.cs +++ b/LightlessSync/MareConfiguration/Configurations/CharaDataConfig.cs @@ -1,10 +1,10 @@ -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; -namespace LightlessSync.MareConfiguration.Configurations; +namespace LightlessSync.LightlessConfiguration.Configurations; -public class CharaDataConfig : IMareConfiguration +public class CharaDataConfig : ILightlessConfiguration { - public bool OpenMareHubOnGposeStart { get; set; } = false; + public bool OpenLightlessHubOnGposeStart { get; set; } = false; public string LastSavedCharaDataLocation { get; set; } = string.Empty; public Dictionary FavoriteCodes { get; set; } = []; public bool DownloadMcdDataOnConnection { get; set; } = true; diff --git a/LightlessSync/MareConfiguration/Configurations/IMareConfiguration.cs b/LightlessSync/MareConfiguration/Configurations/IMareConfiguration.cs index 019b36b..8093285 100644 --- a/LightlessSync/MareConfiguration/Configurations/IMareConfiguration.cs +++ b/LightlessSync/MareConfiguration/Configurations/IMareConfiguration.cs @@ -1,6 +1,6 @@ -namespace LightlessSync.MareConfiguration.Configurations; +namespace LightlessSync.LightlessConfiguration.Configurations; -public interface IMareConfiguration +public interface ILightlessConfiguration { int Version { get; set; } } \ No newline at end of file diff --git a/LightlessSync/MareConfiguration/Configurations/MareConfig.cs b/LightlessSync/MareConfiguration/Configurations/MareConfig.cs index 0247c4e..12047bb 100644 --- a/LightlessSync/MareConfiguration/Configurations/MareConfig.cs +++ b/LightlessSync/MareConfiguration/Configurations/MareConfig.cs @@ -1,11 +1,11 @@ -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.UI; using Microsoft.Extensions.Logging; -namespace LightlessSync.MareConfiguration.Configurations; +namespace LightlessSync.LightlessConfiguration.Configurations; [Serializable] -public class MareConfig : IMareConfiguration +public class LightlessConfig : ILightlessConfiguration { public bool AcceptedAgreement { get; set; } = false; public string CacheFolder { get; set; } = string.Empty; diff --git a/LightlessSync/MareConfiguration/Configurations/PlayerPerformanceConfig.cs b/LightlessSync/MareConfiguration/Configurations/PlayerPerformanceConfig.cs index 5dd57a0..f311a12 100644 --- a/LightlessSync/MareConfiguration/Configurations/PlayerPerformanceConfig.cs +++ b/LightlessSync/MareConfiguration/Configurations/PlayerPerformanceConfig.cs @@ -1,6 +1,6 @@ -namespace LightlessSync.MareConfiguration.Configurations; +namespace LightlessSync.LightlessConfiguration.Configurations; -public class PlayerPerformanceConfig : IMareConfiguration +public class PlayerPerformanceConfig : ILightlessConfiguration { public int Version { get; set; } = 1; public bool ShowPerformanceIndicator { get; set; } = true; diff --git a/LightlessSync/MareConfiguration/Configurations/ServerConfig.cs b/LightlessSync/MareConfiguration/Configurations/ServerConfig.cs index 6686081..03b060b 100644 --- a/LightlessSync/MareConfiguration/Configurations/ServerConfig.cs +++ b/LightlessSync/MareConfiguration/Configurations/ServerConfig.cs @@ -1,10 +1,10 @@ -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.WebAPI; -namespace LightlessSync.MareConfiguration.Configurations; +namespace LightlessSync.LightlessConfiguration.Configurations; [Serializable] -public class ServerConfig : IMareConfiguration +public class ServerConfig : ILightlessConfiguration { public int CurrentServer { get; set; } = 0; diff --git a/LightlessSync/MareConfiguration/Configurations/ServerTagConfig.cs b/LightlessSync/MareConfiguration/Configurations/ServerTagConfig.cs index 05715c6..bdfe68f 100644 --- a/LightlessSync/MareConfiguration/Configurations/ServerTagConfig.cs +++ b/LightlessSync/MareConfiguration/Configurations/ServerTagConfig.cs @@ -1,8 +1,8 @@ -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; -namespace LightlessSync.MareConfiguration.Configurations; +namespace LightlessSync.LightlessConfiguration.Configurations; -public class ServerTagConfig : IMareConfiguration +public class ServerTagConfig : ILightlessConfiguration { public Dictionary ServerTagStorage { get; set; } = new(StringComparer.OrdinalIgnoreCase); public int Version { get; set; } = 0; diff --git a/LightlessSync/MareConfiguration/Configurations/TransientConfig.cs b/LightlessSync/MareConfiguration/Configurations/TransientConfig.cs index 9461ca8..8d40ed4 100644 --- a/LightlessSync/MareConfiguration/Configurations/TransientConfig.cs +++ b/LightlessSync/MareConfiguration/Configurations/TransientConfig.cs @@ -1,8 +1,9 @@ using LightlessSync.API.Data.Enum; +using LightlessSync.LightlessConfiguration.Configurations; -namespace LightlessSync.MareConfiguration.Configurations; +namespace LightlessSync.LightlessConfiguration.Configurations; -public class TransientConfig : IMareConfiguration +public class TransientConfig : ILightlessConfiguration { public Dictionary TransientConfigs { get; set; } = []; public int Version { get; set; } = 1; diff --git a/LightlessSync/MareConfiguration/Configurations/UidNotesConfig.cs b/LightlessSync/MareConfiguration/Configurations/UidNotesConfig.cs index df7e9b3..39cdfe1 100644 --- a/LightlessSync/MareConfiguration/Configurations/UidNotesConfig.cs +++ b/LightlessSync/MareConfiguration/Configurations/UidNotesConfig.cs @@ -1,8 +1,8 @@ -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; -namespace LightlessSync.MareConfiguration.Configurations; +namespace LightlessSync.LightlessConfiguration.Configurations; -public class UidNotesConfig : IMareConfiguration +public class UidNotesConfig : ILightlessConfiguration { public Dictionary ServerNotes { get; set; } = new(StringComparer.Ordinal); public int Version { get; set; } = 0; diff --git a/LightlessSync/MareConfiguration/Configurations/XivDataStorageConfig.cs b/LightlessSync/MareConfiguration/Configurations/XivDataStorageConfig.cs index 7dba2b3..8444ae8 100644 --- a/LightlessSync/MareConfiguration/Configurations/XivDataStorageConfig.cs +++ b/LightlessSync/MareConfiguration/Configurations/XivDataStorageConfig.cs @@ -1,8 +1,8 @@ using System.Collections.Concurrent; -namespace LightlessSync.MareConfiguration.Configurations; +namespace LightlessSync.LightlessConfiguration.Configurations; -public class XivDataStorageConfig : IMareConfiguration +public class XivDataStorageConfig : ILightlessConfiguration { public ConcurrentDictionary TriangleDictionary { get; set; } = new(StringComparer.OrdinalIgnoreCase); public ConcurrentDictionary>> BonesDictionary { get; set; } = new(StringComparer.OrdinalIgnoreCase); diff --git a/LightlessSync/MareConfiguration/IConfigService.cs b/LightlessSync/MareConfiguration/IConfigService.cs index 7548e72..b142b43 100644 --- a/LightlessSync/MareConfiguration/IConfigService.cs +++ b/LightlessSync/MareConfiguration/IConfigService.cs @@ -1,8 +1,8 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; -public interface IConfigService : IDisposable where T : IMareConfiguration +public interface IConfigService : IDisposable where T : ILightlessConfiguration { T Current { get; } string ConfigurationName { get; } diff --git a/LightlessSync/MareConfiguration/MareConfigService.cs b/LightlessSync/MareConfiguration/MareConfigService.cs index fd2ea63..45c8e00 100644 --- a/LightlessSync/MareConfiguration/MareConfigService.cs +++ b/LightlessSync/MareConfiguration/MareConfigService.cs @@ -1,12 +1,12 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; -public class MareConfigService : ConfigurationServiceBase +public class LightlessConfigService : ConfigurationServiceBase { public const string ConfigName = "config.json"; - public MareConfigService(string configDir) : base(configDir) + public LightlessConfigService(string configDir) : base(configDir) { } diff --git a/LightlessSync/MareConfiguration/Models/Authentication.cs b/LightlessSync/MareConfiguration/Models/Authentication.cs index 6646578..2be86c0 100644 --- a/LightlessSync/MareConfiguration/Models/Authentication.cs +++ b/LightlessSync/MareConfiguration/Models/Authentication.cs @@ -1,4 +1,4 @@ -namespace LightlessSync.MareConfiguration.Models; +namespace LightlessSync.LightlessConfiguration.Models; [Serializable] public record Authentication diff --git a/LightlessSync/MareConfiguration/Models/CharaDataFavorite.cs b/LightlessSync/MareConfiguration/Models/CharaDataFavorite.cs index 85ce4f2..d299435 100644 --- a/LightlessSync/MareConfiguration/Models/CharaDataFavorite.cs +++ b/LightlessSync/MareConfiguration/Models/CharaDataFavorite.cs @@ -1,4 +1,4 @@ -namespace LightlessSync.MareConfiguration.Models; +namespace LightlessSync.LightlessConfiguration.Models; [Serializable] public class CharaDataFavorite diff --git a/LightlessSync/MareConfiguration/Models/DownloadSpeeds.cs b/LightlessSync/MareConfiguration/Models/DownloadSpeeds.cs index 78bc051..95538c4 100644 --- a/LightlessSync/MareConfiguration/Models/DownloadSpeeds.cs +++ b/LightlessSync/MareConfiguration/Models/DownloadSpeeds.cs @@ -1,4 +1,4 @@ -namespace LightlessSync.MareConfiguration.Models; +namespace LightlessSync.LightlessConfiguration.Models; public enum DownloadSpeeds { diff --git a/LightlessSync/MareConfiguration/Models/NotificationLocation.cs b/LightlessSync/MareConfiguration/Models/NotificationLocation.cs index 19e5468..a33e727 100644 --- a/LightlessSync/MareConfiguration/Models/NotificationLocation.cs +++ b/LightlessSync/MareConfiguration/Models/NotificationLocation.cs @@ -1,4 +1,4 @@ -namespace LightlessSync.MareConfiguration.Models; +namespace LightlessSync.LightlessConfiguration.Models; public enum NotificationLocation { diff --git a/LightlessSync/MareConfiguration/Models/Obsolete/ServerStorageV0.cs b/LightlessSync/MareConfiguration/Models/Obsolete/ServerStorageV0.cs index f2cb185..0cb5f3e 100644 --- a/LightlessSync/MareConfiguration/Models/Obsolete/ServerStorageV0.cs +++ b/LightlessSync/MareConfiguration/Models/Obsolete/ServerStorageV0.cs @@ -1,4 +1,4 @@ -namespace LightlessSync.MareConfiguration.Models.Obsolete; +namespace LightlessSync.LightlessConfiguration.Models.Obsolete; [Serializable] [Obsolete("Deprecated, use ServerStorage")] diff --git a/LightlessSync/MareConfiguration/Models/SecretKey.cs b/LightlessSync/MareConfiguration/Models/SecretKey.cs index de1c2d1..cffe648 100644 --- a/LightlessSync/MareConfiguration/Models/SecretKey.cs +++ b/LightlessSync/MareConfiguration/Models/SecretKey.cs @@ -1,4 +1,4 @@ -namespace LightlessSync.MareConfiguration.Models; +namespace LightlessSync.LightlessConfiguration.Models; [Serializable] public class SecretKey diff --git a/LightlessSync/MareConfiguration/Models/ServerNotesStorage.cs b/LightlessSync/MareConfiguration/Models/ServerNotesStorage.cs index 7ec58ee..b3a0b5b 100644 --- a/LightlessSync/MareConfiguration/Models/ServerNotesStorage.cs +++ b/LightlessSync/MareConfiguration/Models/ServerNotesStorage.cs @@ -1,4 +1,4 @@ -namespace LightlessSync.MareConfiguration.Models; +namespace LightlessSync.LightlessConfiguration.Models; public class ServerNotesStorage { diff --git a/LightlessSync/MareConfiguration/Models/ServerStorage.cs b/LightlessSync/MareConfiguration/Models/ServerStorage.cs index 598f662..2b003bb 100644 --- a/LightlessSync/MareConfiguration/Models/ServerStorage.cs +++ b/LightlessSync/MareConfiguration/Models/ServerStorage.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Http.Connections; -namespace LightlessSync.MareConfiguration.Models; +namespace LightlessSync.LightlessConfiguration.Models; [Serializable] public class ServerStorage diff --git a/LightlessSync/MareConfiguration/Models/ServerTagStorage.cs b/LightlessSync/MareConfiguration/Models/ServerTagStorage.cs index 0e2f034..75d3f46 100644 --- a/LightlessSync/MareConfiguration/Models/ServerTagStorage.cs +++ b/LightlessSync/MareConfiguration/Models/ServerTagStorage.cs @@ -1,4 +1,4 @@ -namespace LightlessSync.MareConfiguration.Models; +namespace LightlessSync.LightlessConfiguration.Models; [Serializable] public class ServerTagStorage diff --git a/LightlessSync/MareConfiguration/NotesConfigService.cs b/LightlessSync/MareConfiguration/NotesConfigService.cs index b7e0f4d..29a6bd2 100644 --- a/LightlessSync/MareConfiguration/NotesConfigService.cs +++ b/LightlessSync/MareConfiguration/NotesConfigService.cs @@ -1,6 +1,6 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; public class NotesConfigService : ConfigurationServiceBase { diff --git a/LightlessSync/MareConfiguration/PlayerPerformanceConfigService.cs b/LightlessSync/MareConfiguration/PlayerPerformanceConfigService.cs index f767836..1d02d2a 100644 --- a/LightlessSync/MareConfiguration/PlayerPerformanceConfigService.cs +++ b/LightlessSync/MareConfiguration/PlayerPerformanceConfigService.cs @@ -1,6 +1,6 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; public class PlayerPerformanceConfigService : ConfigurationServiceBase { diff --git a/LightlessSync/MareConfiguration/ServerConfigService.cs b/LightlessSync/MareConfiguration/ServerConfigService.cs index 1890856..3adb31e 100644 --- a/LightlessSync/MareConfiguration/ServerConfigService.cs +++ b/LightlessSync/MareConfiguration/ServerConfigService.cs @@ -1,6 +1,6 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; public class ServerConfigService : ConfigurationServiceBase { diff --git a/LightlessSync/MareConfiguration/ServerTagConfigService.cs b/LightlessSync/MareConfiguration/ServerTagConfigService.cs index 71f9ff7..b31e746 100644 --- a/LightlessSync/MareConfiguration/ServerTagConfigService.cs +++ b/LightlessSync/MareConfiguration/ServerTagConfigService.cs @@ -1,6 +1,6 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; public class ServerTagConfigService : ConfigurationServiceBase { diff --git a/LightlessSync/MareConfiguration/TransientConfigService.cs b/LightlessSync/MareConfiguration/TransientConfigService.cs index 8695d93..2de8965 100644 --- a/LightlessSync/MareConfiguration/TransientConfigService.cs +++ b/LightlessSync/MareConfiguration/TransientConfigService.cs @@ -1,6 +1,6 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; public class TransientConfigService : ConfigurationServiceBase { diff --git a/LightlessSync/MareConfiguration/XivDataStorageService.cs b/LightlessSync/MareConfiguration/XivDataStorageService.cs index 9101201..d1f7450 100644 --- a/LightlessSync/MareConfiguration/XivDataStorageService.cs +++ b/LightlessSync/MareConfiguration/XivDataStorageService.cs @@ -1,6 +1,6 @@ -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration.Configurations; -namespace LightlessSync.MareConfiguration; +namespace LightlessSync.LightlessConfiguration; public class XivDataStorageService : ConfigurationServiceBase { diff --git a/LightlessSync/MarePlugin.cs b/LightlessSync/MarePlugin.cs index d012b72..a78cdbb 100644 --- a/LightlessSync/MarePlugin.cs +++ b/LightlessSync/MarePlugin.cs @@ -1,5 +1,5 @@ using LightlessSync.FileCache; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.PlayerData.Pairs; using LightlessSync.PlayerData.Services; using LightlessSync.Services; @@ -67,21 +67,21 @@ namespace LightlessSync; #pragma warning restore S125 // Sections of code should not be commented out // thank you dark 🙏 -public class MarePlugin : MediatorSubscriberBase, IHostedService +public class LightlessPlugin : MediatorSubscriberBase, IHostedService { private readonly DalamudUtilService _dalamudUtil; - private readonly MareConfigService _mareConfigService; + private readonly LightlessConfigService _lightlessConfigService; private readonly ServerConfigurationManager _serverConfigurationManager; private readonly IServiceScopeFactory _serviceScopeFactory; private IServiceScope? _runtimeServiceScope; private Task? _launchTask = null; - public MarePlugin(ILogger logger, MareConfigService mareConfigService, + public LightlessPlugin(ILogger logger, LightlessConfigService lightlessConfigService, ServerConfigurationManager serverConfigurationManager, DalamudUtilService dalamudUtil, - IServiceScopeFactory serviceScopeFactory, MareMediator mediator) : base(logger, mediator) + IServiceScopeFactory serviceScopeFactory, LightlessMediator mediator) : base(logger, mediator) { - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; _serverConfigurationManager = serverConfigurationManager; _dalamudUtil = dalamudUtil; _serviceScopeFactory = serviceScopeFactory; @@ -91,7 +91,7 @@ public class MarePlugin : MediatorSubscriberBase, IHostedService { var version = Assembly.GetExecutingAssembly().GetName().Version!; Logger.LogInformation("Launching {name} {major}.{minor}.{build}", "Lightless Sync", version.Major, version.Minor, version.Build); - Mediator.Publish(new EventMessage(new Services.Events.Event(nameof(MarePlugin), Services.Events.EventSeverity.Informational, + Mediator.Publish(new EventMessage(new Services.Events.Event(nameof(LightlessPlugin), Services.Events.EventSeverity.Informational, $"Starting Lightless Sync {version.Major}.{version.Minor}.{version.Build}"))); Mediator.Subscribe(this, (msg) => { if (_launchTask == null || _launchTask.IsCompleted) _launchTask = Task.Run(WaitForPlayerAndLaunchCharacterManager); }); @@ -109,7 +109,7 @@ public class MarePlugin : MediatorSubscriberBase, IHostedService DalamudUtilOnLogOut(); - Logger.LogDebug("Halting MarePlugin"); + Logger.LogDebug("Halting LightlessPlugin"); return Task.CompletedTask; } @@ -142,7 +142,7 @@ public class MarePlugin : MediatorSubscriberBase, IHostedService _runtimeServiceScope = _serviceScopeFactory.CreateScope(); _runtimeServiceScope.ServiceProvider.GetRequiredService(); _runtimeServiceScope.ServiceProvider.GetRequiredService(); - if (!_mareConfigService.Current.HasValidSetup() || !_serverConfigurationManager.HasValidConfig()) + if (!_lightlessConfigService.Current.HasValidSetup() || !_serverConfigurationManager.HasValidConfig()) { Mediator.Publish(new SwitchToIntroUiMessage()); return; @@ -153,11 +153,11 @@ public class MarePlugin : MediatorSubscriberBase, IHostedService _runtimeServiceScope.ServiceProvider.GetRequiredService(); #if !DEBUG - if (_mareConfigService.Current.LogLevel != LogLevel.Information) + if (_lightlessConfigService.Current.LogLevel != LogLevel.Information) { Mediator.Publish(new NotificationMessage("Abnormal Log Level", - $"Your log level is set to '{_mareConfigService.Current.LogLevel}' which is not recommended for normal usage. Set it to '{LogLevel.Information}' in \"Mare Settings -> Debug\" unless instructed otherwise.", - MareConfiguration.Models.NotificationType.Error, TimeSpan.FromSeconds(15000))); + $"Your log level is set to '{_lightlessConfigService.Current.LogLevel}' which is not recommended for normal usage. Set it to '{LogLevel.Information}' in \"Lightless Settings -> Debug\" unless instructed otherwise.", + LightlessConfiguration.Models.NotificationType.Error, TimeSpan.FromSeconds(15000))); } #endif } diff --git a/LightlessSync/PlayerData/Factories/FileDownloadManagerFactory.cs b/LightlessSync/PlayerData/Factories/FileDownloadManagerFactory.cs index 24dbb55..eea3ea6 100644 --- a/LightlessSync/PlayerData/Factories/FileDownloadManagerFactory.cs +++ b/LightlessSync/PlayerData/Factories/FileDownloadManagerFactory.cs @@ -11,13 +11,13 @@ public class FileDownloadManagerFactory private readonly FileCompactor _fileCompactor; private readonly FileTransferOrchestrator _fileTransferOrchestrator; private readonly ILoggerFactory _loggerFactory; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; - public FileDownloadManagerFactory(ILoggerFactory loggerFactory, MareMediator mareMediator, FileTransferOrchestrator fileTransferOrchestrator, + public FileDownloadManagerFactory(ILoggerFactory loggerFactory, LightlessMediator lightlessMediator, FileTransferOrchestrator fileTransferOrchestrator, FileCacheManager fileCacheManager, FileCompactor fileCompactor) { _loggerFactory = loggerFactory; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _fileTransferOrchestrator = fileTransferOrchestrator; _fileCacheManager = fileCacheManager; _fileCompactor = fileCompactor; @@ -25,6 +25,6 @@ public class FileDownloadManagerFactory public FileDownloadManager Create() { - return new FileDownloadManager(_loggerFactory.CreateLogger(), _mareMediator, _fileTransferOrchestrator, _fileCacheManager, _fileCompactor); + return new FileDownloadManager(_loggerFactory.CreateLogger(), _lightlessMediator, _fileTransferOrchestrator, _fileCacheManager, _fileCompactor); } } \ No newline at end of file diff --git a/LightlessSync/PlayerData/Factories/GameObjectHandlerFactory.cs b/LightlessSync/PlayerData/Factories/GameObjectHandlerFactory.cs index fc75f28..83a7ce6 100644 --- a/LightlessSync/PlayerData/Factories/GameObjectHandlerFactory.cs +++ b/LightlessSync/PlayerData/Factories/GameObjectHandlerFactory.cs @@ -10,21 +10,21 @@ public class GameObjectHandlerFactory { private readonly DalamudUtilService _dalamudUtilService; private readonly ILoggerFactory _loggerFactory; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly PerformanceCollectorService _performanceCollectorService; - public GameObjectHandlerFactory(ILoggerFactory loggerFactory, PerformanceCollectorService performanceCollectorService, MareMediator mareMediator, + public GameObjectHandlerFactory(ILoggerFactory loggerFactory, PerformanceCollectorService performanceCollectorService, LightlessMediator lightlessMediator, DalamudUtilService dalamudUtilService) { _loggerFactory = loggerFactory; _performanceCollectorService = performanceCollectorService; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _dalamudUtilService = dalamudUtilService; } public async Task Create(ObjectKind objectKind, Func getAddressFunc, bool isWatched = false) { return await _dalamudUtilService.RunOnFrameworkThread(() => new GameObjectHandler(_loggerFactory.CreateLogger(), - _performanceCollectorService, _mareMediator, _dalamudUtilService, objectKind, getAddressFunc, isWatched)).ConfigureAwait(false); + _performanceCollectorService, _lightlessMediator, _dalamudUtilService, objectKind, getAddressFunc, isWatched)).ConfigureAwait(false); } } \ No newline at end of file diff --git a/LightlessSync/PlayerData/Factories/PairFactory.cs b/LightlessSync/PlayerData/Factories/PairFactory.cs index c6dfbf9..a9ee0ab 100644 --- a/LightlessSync/PlayerData/Factories/PairFactory.cs +++ b/LightlessSync/PlayerData/Factories/PairFactory.cs @@ -10,26 +10,26 @@ public class PairFactory { private readonly PairHandlerFactory _cachedPlayerFactory; private readonly ILoggerFactory _loggerFactory; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly ServerConfigurationManager _serverConfigurationManager; public PairFactory(ILoggerFactory loggerFactory, PairHandlerFactory cachedPlayerFactory, - MareMediator mareMediator, ServerConfigurationManager serverConfigurationManager) + LightlessMediator lightlessMediator, ServerConfigurationManager serverConfigurationManager) { _loggerFactory = loggerFactory; _cachedPlayerFactory = cachedPlayerFactory; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _serverConfigurationManager = serverConfigurationManager; } public Pair Create(UserFullPairDto userPairDto) { - return new Pair(_loggerFactory.CreateLogger(), userPairDto, _cachedPlayerFactory, _mareMediator, _serverConfigurationManager); + return new Pair(_loggerFactory.CreateLogger(), userPairDto, _cachedPlayerFactory, _lightlessMediator, _serverConfigurationManager); } public Pair Create(UserPairDto userPairDto) { return new Pair(_loggerFactory.CreateLogger(), new(userPairDto.User, userPairDto.IndividualPairStatus, [], userPairDto.OwnPermissions, userPairDto.OtherPermissions), - _cachedPlayerFactory, _mareMediator, _serverConfigurationManager); + _cachedPlayerFactory, _lightlessMediator, _serverConfigurationManager); } } \ No newline at end of file diff --git a/LightlessSync/PlayerData/Factories/PairHandlerFactory.cs b/LightlessSync/PlayerData/Factories/PairHandlerFactory.cs index 8537e60..50f16f0 100644 --- a/LightlessSync/PlayerData/Factories/PairHandlerFactory.cs +++ b/LightlessSync/PlayerData/Factories/PairHandlerFactory.cs @@ -19,7 +19,7 @@ public class PairHandlerFactory private readonly IHostApplicationLifetime _hostApplicationLifetime; private readonly IpcManager _ipcManager; private readonly ILoggerFactory _loggerFactory; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly PlayerPerformanceService _playerPerformanceService; private readonly ServerConfigurationManager _serverConfigManager; private readonly PluginWarningNotificationService _pluginWarningNotificationManager; @@ -27,7 +27,7 @@ public class PairHandlerFactory public PairHandlerFactory(ILoggerFactory loggerFactory, GameObjectHandlerFactory gameObjectHandlerFactory, IpcManager ipcManager, FileDownloadManagerFactory fileDownloadManagerFactory, DalamudUtilService dalamudUtilService, PluginWarningNotificationService pluginWarningNotificationManager, IHostApplicationLifetime hostApplicationLifetime, - FileCacheManager fileCacheManager, MareMediator mareMediator, PlayerPerformanceService playerPerformanceService, + FileCacheManager fileCacheManager, LightlessMediator lightlessMediator, PlayerPerformanceService playerPerformanceService, ServerConfigurationManager serverConfigManager) { _loggerFactory = loggerFactory; @@ -38,7 +38,7 @@ public class PairHandlerFactory _pluginWarningNotificationManager = pluginWarningNotificationManager; _hostApplicationLifetime = hostApplicationLifetime; _fileCacheManager = fileCacheManager; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _playerPerformanceService = playerPerformanceService; _serverConfigManager = serverConfigManager; } @@ -47,6 +47,6 @@ public class PairHandlerFactory { return new PairHandler(_loggerFactory.CreateLogger(), pair, _gameObjectHandlerFactory, _ipcManager, _fileDownloadManagerFactory.Create(), _pluginWarningNotificationManager, _dalamudUtilService, _hostApplicationLifetime, - _fileCacheManager, _mareMediator, _playerPerformanceService, _serverConfigManager); + _fileCacheManager, _lightlessMediator, _playerPerformanceService, _serverConfigManager); } } \ No newline at end of file diff --git a/LightlessSync/PlayerData/Factories/PlayerDataFactory.cs b/LightlessSync/PlayerData/Factories/PlayerDataFactory.cs index fe1738e..bc30c0e 100644 --- a/LightlessSync/PlayerData/Factories/PlayerDataFactory.cs +++ b/LightlessSync/PlayerData/Factories/PlayerDataFactory.cs @@ -2,7 +2,7 @@ using LightlessSync.API.Data.Enum; using LightlessSync.FileCache; using LightlessSync.Interop.Ipc; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.PlayerData.Data; using LightlessSync.PlayerData.Handlers; using LightlessSync.Services; @@ -20,12 +20,12 @@ public class PlayerDataFactory private readonly ILogger _logger; private readonly PerformanceCollectorService _performanceCollector; private readonly XivDataAnalyzer _modelAnalyzer; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly TransientResourceManager _transientResourceManager; public PlayerDataFactory(ILogger logger, DalamudUtilService dalamudUtil, IpcManager ipcManager, TransientResourceManager transientResourceManager, FileCacheManager fileReplacementFactory, - PerformanceCollectorService performanceCollector, XivDataAnalyzer modelAnalyzer, MareMediator mareMediator) + PerformanceCollectorService performanceCollector, XivDataAnalyzer modelAnalyzer, LightlessMediator lightlessMediator) { _logger = logger; _dalamudUtil = dalamudUtil; @@ -34,7 +34,7 @@ public class PlayerDataFactory _fileCacheManager = fileReplacementFactory; _performanceCollector = performanceCollector; _modelAnalyzer = modelAnalyzer; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _logger.LogTrace("Creating {this}", nameof(PlayerDataFactory)); } @@ -319,7 +319,7 @@ public class PlayerDataFactory if (noValidationFailed > 0) { - _mareMediator.Publish(new NotificationMessage("Invalid Skeleton Setup", + _lightlessMediator.Publish(new NotificationMessage("Invalid Skeleton Setup", $"Your client is attempting to send {noValidationFailed} animation files with invalid bone data. Those animation files have been removed from your sent data. " + $"Verify that you are using the correct skeleton for those animation files (Check /xllog for more information).", NotificationType.Warning, TimeSpan.FromSeconds(10))); diff --git a/LightlessSync/PlayerData/Handlers/GameObjectHandler.cs b/LightlessSync/PlayerData/Handlers/GameObjectHandler.cs index 5bc286f..8d56b4f 100644 --- a/LightlessSync/PlayerData/Handlers/GameObjectHandler.cs +++ b/LightlessSync/PlayerData/Handlers/GameObjectHandler.cs @@ -21,7 +21,7 @@ public sealed class GameObjectHandler : DisposableMediatorSubscriberBase, IHighP private CancellationTokenSource _zoningCts = new(); public GameObjectHandler(ILogger logger, PerformanceCollectorService performanceCollector, - MareMediator mediator, DalamudUtilService dalamudUtil, ObjectKind objectKind, Func getAddress, bool ownedObject = true) : base(logger, mediator) + LightlessMediator mediator, DalamudUtilService dalamudUtil, ObjectKind objectKind, Func getAddress, bool ownedObject = true) : base(logger, mediator) { _performanceCollector = performanceCollector; ObjectKind = objectKind; diff --git a/LightlessSync/PlayerData/Handlers/PairHandler.cs b/LightlessSync/PlayerData/Handlers/PairHandler.cs index 9f67354..345118a 100644 --- a/LightlessSync/PlayerData/Handlers/PairHandler.cs +++ b/LightlessSync/PlayerData/Handlers/PairHandler.cs @@ -48,7 +48,7 @@ public sealed class PairHandler : DisposableMediatorSubscriberBase IpcManager ipcManager, FileDownloadManager transferManager, PluginWarningNotificationService pluginWarningNotificationManager, DalamudUtilService dalamudUtil, IHostApplicationLifetime lifetime, - FileCacheManager fileDbManager, MareMediator mediator, + FileCacheManager fileDbManager, LightlessMediator mediator, PlayerPerformanceService playerPerformanceService, ServerConfigurationManager serverConfigManager) : base(logger, mediator) { diff --git a/LightlessSync/PlayerData/Pairs/Pair.cs b/LightlessSync/PlayerData/Pairs/Pair.cs index 1476194..6eaebb9 100644 --- a/LightlessSync/PlayerData/Pairs/Pair.cs +++ b/LightlessSync/PlayerData/Pairs/Pair.cs @@ -18,13 +18,13 @@ public class Pair private readonly PairHandlerFactory _cachedPlayerFactory; private readonly SemaphoreSlim _creationSemaphore = new(1); private readonly ILogger _logger; - private readonly MareMediator _mediator; + private readonly LightlessMediator _mediator; private readonly ServerConfigurationManager _serverConfigurationManager; private CancellationTokenSource _applicationCts = new(); private OnlineUserIdentDto? _onlineUserIdentDto = null; public Pair(ILogger logger, UserFullPairDto userPair, PairHandlerFactory cachedPlayerFactory, - MareMediator mediator, ServerConfigurationManager serverConfigurationManager) + LightlessMediator mediator, ServerConfigurationManager serverConfigurationManager) { _logger = logger; UserPair = userPair; diff --git a/LightlessSync/PlayerData/Pairs/PairManager.cs b/LightlessSync/PlayerData/Pairs/PairManager.cs index 55cbe98..87228a6 100644 --- a/LightlessSync/PlayerData/Pairs/PairManager.cs +++ b/LightlessSync/PlayerData/Pairs/PairManager.cs @@ -4,8 +4,8 @@ using LightlessSync.API.Data.Comparer; using LightlessSync.API.Data.Extensions; using LightlessSync.API.Dto.Group; using LightlessSync.API.Dto.User; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.PlayerData.Factories; using LightlessSync.Services.Events; using LightlessSync.Services.Mediator; @@ -18,7 +18,7 @@ public sealed class PairManager : DisposableMediatorSubscriberBase { private readonly ConcurrentDictionary _allClientPairs = new(UserDataComparer.Instance); private readonly ConcurrentDictionary _allGroups = new(GroupDataComparer.Instance); - private readonly MareConfigService _configurationService; + private readonly LightlessConfigService _configurationService; private readonly IContextMenu _dalamudContextMenu; private readonly PairFactory _pairFactory; private Lazy> _directPairsInternal; @@ -26,7 +26,7 @@ public sealed class PairManager : DisposableMediatorSubscriberBase private Lazy>> _pairsWithGroupsInternal; public PairManager(ILogger logger, PairFactory pairFactory, - MareConfigService configurationService, MareMediator mediator, + LightlessConfigService configurationService, LightlessMediator mediator, IContextMenu dalamudContextMenu) : base(logger, mediator) { _pairFactory = pairFactory; diff --git a/LightlessSync/PlayerData/Pairs/VisibleUserDataDistributor.cs b/LightlessSync/PlayerData/Pairs/VisibleUserDataDistributor.cs index c5c8edf..3542f06 100644 --- a/LightlessSync/PlayerData/Pairs/VisibleUserDataDistributor.cs +++ b/LightlessSync/PlayerData/Pairs/VisibleUserDataDistributor.cs @@ -24,7 +24,7 @@ public class VisibleUserDataDistributor : DisposableMediatorSubscriberBase public VisibleUserDataDistributor(ILogger logger, ApiController apiController, DalamudUtilService dalamudUtil, - PairManager pairManager, MareMediator mediator, FileUploadManager fileTransferManager) : base(logger, mediator) + PairManager pairManager, LightlessMediator mediator, FileUploadManager fileTransferManager) : base(logger, mediator) { _apiController = apiController; _dalamudUtil = dalamudUtil; diff --git a/LightlessSync/PlayerData/Services/CacheCreationService.cs b/LightlessSync/PlayerData/Services/CacheCreationService.cs index a89533a..9c64d8f 100644 --- a/LightlessSync/PlayerData/Services/CacheCreationService.cs +++ b/LightlessSync/PlayerData/Services/CacheCreationService.cs @@ -23,7 +23,7 @@ public sealed class CacheCreationService : DisposableMediatorSubscriberBase private bool _haltCharaDataCreation; private bool _isZoning = false; - public CacheCreationService(ILogger logger, MareMediator mediator, GameObjectHandlerFactory gameObjectHandlerFactory, + public CacheCreationService(ILogger logger, LightlessMediator mediator, GameObjectHandlerFactory gameObjectHandlerFactory, PlayerDataFactory characterDataFactory, DalamudUtilService dalamudUtil) : base(logger, mediator) { _characterDataFactory = characterDataFactory; diff --git a/LightlessSync/Plugin.cs b/LightlessSync/Plugin.cs index 6350bb9..39b1225 100644 --- a/LightlessSync/Plugin.cs +++ b/LightlessSync/Plugin.cs @@ -6,8 +6,8 @@ using Dalamud.Plugin.Services; using LightlessSync.FileCache; using LightlessSync.Interop; using LightlessSync.Interop.Ipc; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Configurations; using LightlessSync.PlayerData.Factories; using LightlessSync.PlayerData.Pairs; using LightlessSync.PlayerData.Services; @@ -76,7 +76,7 @@ public sealed class Plugin : IDalamudPlugin { lb.ClearProviders(); lb.AddDalamudLogging(pluginLog, gameData.HasModifiedGameDataFiles); - lb.AddFile(Path.Combine(traceDir, $"mare-trace-{DateTime.Now:yyyy-MM-dd-HH-mm-ss}.log"), (opt) => + lb.AddFile(Path.Combine(traceDir, $"lightless-trace-{DateTime.Now:yyyy-MM-dd-HH-mm-ss}.log"), (opt) => { opt.Append = true; opt.RollingFilesConvention = FileLoggerOptions.FileRollingConvention.Ascending; @@ -91,8 +91,8 @@ public sealed class Plugin : IDalamudPlugin collection.AddSingleton(); collection.AddSingleton(new Dalamud.Localization("LightlessSync.Localization.", "", useEmbedded: true)); - // add mare related singletons - collection.AddSingleton(); + // add lightless related singletons + collection.AddSingleton(); collection.AddSingleton(); collection.AddSingleton(); collection.AddSingleton(); @@ -100,8 +100,8 @@ public sealed class Plugin : IDalamudPlugin collection.AddSingleton(); collection.AddSingleton(); collection.AddSingleton(); - collection.AddSingleton(); - collection.AddSingleton(); + collection.AddSingleton(); + collection.AddSingleton(); collection.AddSingleton(); collection.AddSingleton(); collection.AddSingleton(); @@ -123,47 +123,47 @@ public sealed class Plugin : IDalamudPlugin collection.AddSingleton(); collection.AddSingleton(s => new VfxSpawnManager(s.GetRequiredService>(), - gameInteropProvider, s.GetRequiredService())); + gameInteropProvider, s.GetRequiredService())); collection.AddSingleton((s) => new BlockedCharacterHandler(s.GetRequiredService>(), gameInteropProvider)); collection.AddSingleton((s) => new IpcProvider(s.GetRequiredService>(), pluginInterface, s.GetRequiredService(), - s.GetRequiredService())); + s.GetRequiredService())); collection.AddSingleton(); collection.AddSingleton((s) => new EventAggregator(pluginInterface.ConfigDirectory.FullName, - s.GetRequiredService>(), s.GetRequiredService())); + s.GetRequiredService>(), s.GetRequiredService())); collection.AddSingleton((s) => new DalamudUtilService(s.GetRequiredService>(), clientState, objectTable, framework, gameGui, condition, gameData, targetManager, gameConfig, - s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), - s.GetRequiredService())); - collection.AddSingleton((s) => new DtrEntry(s.GetRequiredService>(), dtrBar, s.GetRequiredService(), - s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), + s.GetRequiredService())); + collection.AddSingleton((s) => new DtrEntry(s.GetRequiredService>(), dtrBar, s.GetRequiredService(), + s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService())); collection.AddSingleton(s => new PairManager(s.GetRequiredService>(), s.GetRequiredService(), - s.GetRequiredService(), s.GetRequiredService(), contextMenu)); + s.GetRequiredService(), s.GetRequiredService(), contextMenu)); collection.AddSingleton(); collection.AddSingleton((s) => new IpcCallerPenumbra(s.GetRequiredService>(), pluginInterface, - s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService())); collection.AddSingleton((s) => new IpcCallerGlamourer(s.GetRequiredService>(), pluginInterface, - s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService())); collection.AddSingleton((s) => new IpcCallerCustomize(s.GetRequiredService>(), pluginInterface, - s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService())); collection.AddSingleton((s) => new IpcCallerHeels(s.GetRequiredService>(), pluginInterface, - s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService())); collection.AddSingleton((s) => new IpcCallerHonorific(s.GetRequiredService>(), pluginInterface, - s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService())); collection.AddSingleton((s) => new IpcCallerMoodles(s.GetRequiredService>(), pluginInterface, - s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService())); collection.AddSingleton((s) => new IpcCallerPetNames(s.GetRequiredService>(), pluginInterface, - s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService())); collection.AddSingleton((s) => new IpcCallerBrio(s.GetRequiredService>(), pluginInterface, s.GetRequiredService())); collection.AddSingleton((s) => new IpcManager(s.GetRequiredService>(), - s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), + s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService())); collection.AddSingleton((s) => new NotificationService(s.GetRequiredService>(), - s.GetRequiredService(), s.GetRequiredService(), - notificationManager, chatGui, s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService(), + notificationManager, chatGui, s.GetRequiredService())); collection.AddSingleton((s) => { var httpClient = new HttpClient(); @@ -171,7 +171,7 @@ public sealed class Plugin : IDalamudPlugin httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("LightlessSync", ver!.Major + "." + ver!.Minor + "." + ver!.Build)); return httpClient; }); - collection.AddSingleton((s) => new MareConfigService(pluginInterface.ConfigDirectory.FullName)); + collection.AddSingleton((s) => new LightlessConfigService(pluginInterface.ConfigDirectory.FullName)); collection.AddSingleton((s) => new ServerConfigService(pluginInterface.ConfigDirectory.FullName)); collection.AddSingleton((s) => new NotesConfigService(pluginInterface.ConfigDirectory.FullName)); collection.AddSingleton((s) => new ServerTagConfigService(pluginInterface.ConfigDirectory.FullName)); @@ -179,14 +179,14 @@ public sealed class Plugin : IDalamudPlugin collection.AddSingleton((s) => new XivDataStorageService(pluginInterface.ConfigDirectory.FullName)); collection.AddSingleton((s) => new PlayerPerformanceConfigService(pluginInterface.ConfigDirectory.FullName)); collection.AddSingleton((s) => new CharaDataConfigService(pluginInterface.ConfigDirectory.FullName)); - collection.AddSingleton>(s => s.GetRequiredService()); - collection.AddSingleton>(s => s.GetRequiredService()); - collection.AddSingleton>(s => s.GetRequiredService()); - collection.AddSingleton>(s => s.GetRequiredService()); - collection.AddSingleton>(s => s.GetRequiredService()); - collection.AddSingleton>(s => s.GetRequiredService()); - collection.AddSingleton>(s => s.GetRequiredService()); - collection.AddSingleton>(s => s.GetRequiredService()); + collection.AddSingleton>(s => s.GetRequiredService()); + collection.AddSingleton>(s => s.GetRequiredService()); + collection.AddSingleton>(s => s.GetRequiredService()); + collection.AddSingleton>(s => s.GetRequiredService()); + collection.AddSingleton>(s => s.GetRequiredService()); + collection.AddSingleton>(s => s.GetRequiredService()); + collection.AddSingleton>(s => s.GetRequiredService()); + collection.AddSingleton>(s => s.GetRequiredService()); collection.AddSingleton(); collection.AddSingleton(); @@ -209,28 +209,28 @@ public sealed class Plugin : IDalamudPlugin collection.AddScoped(); collection.AddScoped((s) => new EditProfileUi(s.GetRequiredService>(), - s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), - s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), + s.GetRequiredService(), s.GetRequiredService())); collection.AddScoped(); collection.AddScoped(); collection.AddScoped(); collection.AddScoped(); collection.AddScoped(); collection.AddScoped(); - collection.AddScoped((s) => new UiService(s.GetRequiredService>(), pluginInterface.UiBuilder, s.GetRequiredService(), + collection.AddScoped((s) => new UiService(s.GetRequiredService>(), pluginInterface.UiBuilder, s.GetRequiredService(), s.GetRequiredService(), s.GetServices(), s.GetRequiredService(), - s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService())); collection.AddScoped((s) => new CommandManagerService(commandManager, s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), - s.GetRequiredService(), s.GetRequiredService())); + s.GetRequiredService(), s.GetRequiredService())); collection.AddScoped((s) => new UiSharedService(s.GetRequiredService>(), s.GetRequiredService(), s.GetRequiredService(), - s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), + s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), pluginInterface, textureProvider, s.GetRequiredService(), s.GetRequiredService(), s.GetRequiredService(), - s.GetRequiredService())); + s.GetRequiredService())); collection.AddHostedService(p => p.GetRequiredService()); - collection.AddHostedService(p => p.GetRequiredService()); + collection.AddHostedService(p => p.GetRequiredService()); collection.AddHostedService(p => p.GetRequiredService()); collection.AddHostedService(p => p.GetRequiredService()); collection.AddHostedService(p => p.GetRequiredService()); @@ -239,7 +239,7 @@ public sealed class Plugin : IDalamudPlugin collection.AddHostedService(p => p.GetRequiredService()); collection.AddHostedService(p => p.GetRequiredService()); collection.AddHostedService(p => p.GetRequiredService()); - collection.AddHostedService(p => p.GetRequiredService()); + collection.AddHostedService(p => p.GetRequiredService()); }) .Build(); diff --git a/LightlessSync/Services/CharaData/CharaDataCharacterHandler.cs b/LightlessSync/Services/CharaData/CharaDataCharacterHandler.cs index 904d129..d88d89c 100644 --- a/LightlessSync/Services/CharaData/CharaDataCharacterHandler.cs +++ b/LightlessSync/Services/CharaData/CharaDataCharacterHandler.cs @@ -17,7 +17,7 @@ public sealed class CharaDataCharacterHandler : DisposableMediatorSubscriberBase public IEnumerable HandledCharaData => _handledCharaData; - public CharaDataCharacterHandler(ILogger logger, MareMediator mediator, + public CharaDataCharacterHandler(ILogger logger, LightlessMediator mediator, GameObjectHandlerFactory gameObjectHandlerFactory, DalamudUtilService dalamudUtilService, IpcManager ipcManager) : base(logger, mediator) diff --git a/LightlessSync/Services/CharaData/CharaDataFileHandler.cs b/LightlessSync/Services/CharaData/CharaDataFileHandler.cs index 0fc7b4c..6c70157 100644 --- a/LightlessSync/Services/CharaData/CharaDataFileHandler.cs +++ b/LightlessSync/Services/CharaData/CharaDataFileHandler.cs @@ -22,7 +22,7 @@ public sealed class CharaDataFileHandler : IDisposable private readonly FileUploadManager _fileUploadManager; private readonly GameObjectHandlerFactory _gameObjectHandlerFactory; private readonly ILogger _logger; - private readonly MareCharaFileDataFactory _mareCharaFileDataFactory; + private readonly LightlessCharaFileDataFactory _lightlessCharaFileDataFactory; private readonly PlayerDataFactory _playerDataFactory; private int _globalFileCounter = 0; @@ -36,7 +36,7 @@ public sealed class CharaDataFileHandler : IDisposable _dalamudUtilService = dalamudUtilService; _gameObjectHandlerFactory = gameObjectHandlerFactory; _playerDataFactory = playerDataFactory; - _mareCharaFileDataFactory = new(fileCacheManager); + _lightlessCharaFileDataFactory = new(fileCacheManager); } public void ComputeMissingFiles(CharaDataDownloadDto charaDataDownloadDto, out Dictionary modPaths, out List missingFiles) @@ -132,16 +132,16 @@ public sealed class CharaDataFileHandler : IDisposable } } - public Task<(MareCharaFileHeader loadedCharaFile, long expectedLength)> LoadCharaFileHeader(string filePath) + public Task<(LightlessCharaFileHeader loadedCharaFile, long expectedLength)> LoadCharaFileHeader(string filePath) { try { using var unwrapped = File.OpenRead(filePath); using var lz4Stream = new LZ4Stream(unwrapped, LZ4StreamMode.Decompress, LZ4StreamFlags.HighCompression); using var reader = new BinaryReader(lz4Stream); - var loadedCharaFile = MareCharaFileHeader.FromBinaryReader(filePath, reader); + var loadedCharaFile = LightlessCharaFileHeader.FromBinaryReader(filePath, reader); - _logger.LogInformation("Read Mare Chara File"); + _logger.LogInformation("Read Lightless Chara File"); _logger.LogInformation("Version: {ver}", (loadedCharaFile?.Version ?? -1)); long expectedLength = 0; if (loadedCharaFile != null) @@ -181,19 +181,19 @@ public sealed class CharaDataFileHandler : IDisposable } } - public Dictionary McdfExtractFiles(MareCharaFileHeader? charaFileHeader, long expectedLength, List extractedFiles) + public Dictionary McdfExtractFiles(LightlessCharaFileHeader? charaFileHeader, long expectedLength, List extractedFiles) { if (charaFileHeader == null) return []; using var lz4Stream = new LZ4Stream(File.OpenRead(charaFileHeader.FilePath), LZ4StreamMode.Decompress, LZ4StreamFlags.HighCompression); using var reader = new BinaryReader(lz4Stream); - MareCharaFileHeader.AdvanceReaderToData(reader); + LightlessCharaFileHeader.AdvanceReaderToData(reader); long totalRead = 0; Dictionary gamePathToFilePath = new(StringComparer.Ordinal); foreach (var fileData in charaFileHeader.CharaFileData.Files) { - var fileName = Path.Combine(_fileCacheManager.CacheFolder, "mare_" + _globalFileCounter++ + ".tmp"); + var fileName = Path.Combine(_fileCacheManager.CacheFolder, "lightless_" + _globalFileCounter++ + ".tmp"); extractedFiles.Add(fileName); var length = fileData.Length; var bufferSize = length; @@ -256,8 +256,8 @@ public sealed class CharaDataFileHandler : IDisposable var data = await CreatePlayerData().ConfigureAwait(false); if (data == null) return; - var mareCharaFileData = _mareCharaFileDataFactory.Create(description, data); - MareCharaFileHeader output = new(MareCharaFileHeader.CurrentVersion, mareCharaFileData); + var lightlessCharaFileData = _lightlessCharaFileDataFactory.Create(description, data); + LightlessCharaFileHeader output = new(LightlessCharaFileHeader.CurrentVersion, lightlessCharaFileData); using var fs = new FileStream(tempFilePath, FileMode.Create, FileAccess.ReadWrite, FileShare.None); using var lz4 = new LZ4Stream(fs, LZ4StreamMode.Compress, LZ4StreamFlags.HighCompression); @@ -291,7 +291,7 @@ public sealed class CharaDataFileHandler : IDisposable } catch (Exception ex) { - _logger.LogError(ex, "Failure Saving Mare Chara File, deleting output"); + _logger.LogError(ex, "Failure Saving Lightless Chara File, deleting output"); File.Delete(tempFilePath); } } diff --git a/LightlessSync/Services/CharaData/CharaDataGposeTogetherManager.cs b/LightlessSync/Services/CharaData/CharaDataGposeTogetherManager.cs index 905da8f..d7463b2 100644 --- a/LightlessSync/Services/CharaData/CharaDataGposeTogetherManager.cs +++ b/LightlessSync/Services/CharaData/CharaDataGposeTogetherManager.cs @@ -30,7 +30,7 @@ public class CharaDataGposeTogetherManager : DisposableMediatorSubscriberBase private CancellationTokenSource _lobbyCts = new(); private int _poseGenerationExecutions = 0; - public CharaDataGposeTogetherManager(ILogger logger, MareMediator mediator, + public CharaDataGposeTogetherManager(ILogger logger, LightlessMediator mediator, ApiController apiController, IpcCallerBrio brio, DalamudUtilService dalamudUtil, VfxSpawnManager vfxSpawnManager, CharaDataFileHandler charaDataFileHandler, CharaDataManager charaDataManager) : base(logger, mediator) { diff --git a/LightlessSync/Services/CharaData/CharaDataManager.cs b/LightlessSync/Services/CharaData/CharaDataManager.cs index 0ceb4cf..0c6ed50 100644 --- a/LightlessSync/Services/CharaData/CharaDataManager.cs +++ b/LightlessSync/Services/CharaData/CharaDataManager.cs @@ -3,7 +3,7 @@ using K4os.Compression.LZ4.Legacy; using LightlessSync.API.Data; using LightlessSync.API.Dto.CharaData; using LightlessSync.Interop.Ipc; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.PlayerData.Factories; using LightlessSync.PlayerData.Handlers; using LightlessSync.PlayerData.Pairs; @@ -42,10 +42,10 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase public CharaDataManager(ILogger logger, ApiController apiController, CharaDataFileHandler charaDataFileHandler, - MareMediator mareMediator, IpcManager ipcManager, DalamudUtilService dalamudUtilService, + LightlessMediator lightlessMediator, IpcManager ipcManager, DalamudUtilService dalamudUtilService, FileDownloadManagerFactory fileDownloadManagerFactory, CharaDataConfigService charaDataConfigService, CharaDataNearbyManager charaDataNearbyManager, - CharaDataCharacterHandler charaDataCharacterHandler, PairManager pairManager) : base(logger, mareMediator) + CharaDataCharacterHandler charaDataCharacterHandler, PairManager pairManager) : base(logger, lightlessMediator) { _apiController = apiController; _fileHandler = charaDataFileHandler; @@ -55,7 +55,7 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase _nearbyManager = charaDataNearbyManager; _characterHandler = charaDataCharacterHandler; _pairManager = pairManager; - mareMediator.Subscribe(this, (msg) => + lightlessMediator.Subscribe(this, (msg) => { _connectCts?.Cancel(); _connectCts?.Dispose(); @@ -75,7 +75,7 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase _ = GetAllSharedData(token); } }); - mareMediator.Subscribe(this, (msg) => + lightlessMediator.Subscribe(this, (msg) => { _ownCharaData.Clear(); _metaInfoCache.Clear(); @@ -98,7 +98,7 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase public IEnumerable HandledCharaData => _characterHandler.HandledCharaData; public bool Initialized { get; private set; } public CharaDataMetaInfoExtendedDto? LastDownloadedMetaInfo { get; private set; } - public Task<(MareCharaFileHeader LoadedFile, long ExpectedLength)>? LoadedMcdfHeader { get; private set; } + public Task<(LightlessCharaFileHeader LoadedFile, long ExpectedLength)>? LoadedMcdfHeader { get; private set; } public int MaxCreatableCharaData { get; private set; } public Task? McdfApplicationTask { get; private set; } public List NearbyData => _nearbyData; @@ -519,7 +519,7 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase } } - public void SaveMareCharaFile(string description, string filePath) + public void SaveLightlessCharaFile(string description, string filePath) { UiBlockingComputation = Task.Run(async () => await _fileHandler.SaveCharaFileAsync(description, filePath).ConfigureAwait(false)); } diff --git a/LightlessSync/Services/CharaData/CharaDataNearbyManager.cs b/LightlessSync/Services/CharaData/CharaDataNearbyManager.cs index 4a80ac6..8b86e8e 100644 --- a/LightlessSync/Services/CharaData/CharaDataNearbyManager.cs +++ b/LightlessSync/Services/CharaData/CharaDataNearbyManager.cs @@ -1,7 +1,7 @@ using FFXIVClientStructs.FFXIV.Client.Graphics.Scene; using LightlessSync.API.Data; using LightlessSync.Interop; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.Services.CharaData.Models; using LightlessSync.Services.Mediator; using LightlessSync.Services.ServerConfiguration; @@ -29,7 +29,7 @@ public sealed class CharaDataNearbyManager : DisposableMediatorSubscriberBase private (Guid VfxId, PoseEntryExtended Pose)? _hoveredVfx = null; private DateTime _lastExecutionTime = DateTime.UtcNow; private SemaphoreSlim _sharedDataUpdateSemaphore = new(1, 1); - public CharaDataNearbyManager(ILogger logger, MareMediator mediator, + public CharaDataNearbyManager(ILogger logger, LightlessMediator mediator, DalamudUtilService dalamudUtilService, VfxSpawnManager vfxSpawnManager, ServerConfigurationManager serverConfigurationManager, CharaDataConfigService charaDataConfigService) : base(logger, mediator) diff --git a/LightlessSync/Services/CharaData/MareCharaFileDataFactory.cs b/LightlessSync/Services/CharaData/MareCharaFileDataFactory.cs index 7d7b9f5..a25929c 100644 --- a/LightlessSync/Services/CharaData/MareCharaFileDataFactory.cs +++ b/LightlessSync/Services/CharaData/MareCharaFileDataFactory.cs @@ -4,17 +4,17 @@ using LightlessSync.Services.CharaData.Models; namespace LightlessSync.Services.CharaData; -public sealed class MareCharaFileDataFactory +public sealed class LightlessCharaFileDataFactory { private readonly FileCacheManager _fileCacheManager; - public MareCharaFileDataFactory(FileCacheManager fileCacheManager) + public LightlessCharaFileDataFactory(FileCacheManager fileCacheManager) { _fileCacheManager = fileCacheManager; } - public MareCharaFileData Create(string description, CharacterData characterCacheDto) + public LightlessCharaFileData Create(string description, CharacterData characterCacheDto) { - return new MareCharaFileData(_fileCacheManager, description, characterCacheDto); + return new LightlessCharaFileData(_fileCacheManager, description, characterCacheDto); } } \ No newline at end of file diff --git a/LightlessSync/Services/CharaData/Models/MareCharaFileData.cs b/LightlessSync/Services/CharaData/Models/MareCharaFileData.cs index 1f3db17..7b2bd1b 100644 --- a/LightlessSync/Services/CharaData/Models/MareCharaFileData.cs +++ b/LightlessSync/Services/CharaData/Models/MareCharaFileData.cs @@ -6,7 +6,7 @@ using System.Text.Json; namespace LightlessSync.Services.CharaData.Models; -public record MareCharaFileData +public record LightlessCharaFileData { public string Description { get; set; } = string.Empty; public string GlamourerData { get; set; } = string.Empty; @@ -15,8 +15,8 @@ public record MareCharaFileData public List Files { get; set; } = []; public List FileSwaps { get; set; } = []; - public MareCharaFileData() { } - public MareCharaFileData(FileCacheManager manager, string description, CharacterData dto) + public LightlessCharaFileData() { } + public LightlessCharaFileData(FileCacheManager manager, string description, CharacterData dto) { Description = description; @@ -59,9 +59,9 @@ public record MareCharaFileData return Encoding.UTF8.GetBytes(JsonSerializer.Serialize(this)); } - public static MareCharaFileData FromByteArray(byte[] data) + public static LightlessCharaFileData FromByteArray(byte[] data) { - return JsonSerializer.Deserialize(Encoding.UTF8.GetString(data))!; + return JsonSerializer.Deserialize(Encoding.UTF8.GetString(data))!; } public record FileSwap(IEnumerable GamePaths, string FileSwapPath); diff --git a/LightlessSync/Services/CharaData/Models/MareCharaFileHeader.cs b/LightlessSync/Services/CharaData/Models/MareCharaFileHeader.cs index 6f56199..de972de 100644 --- a/LightlessSync/Services/CharaData/Models/MareCharaFileHeader.cs +++ b/LightlessSync/Services/CharaData/Models/MareCharaFileHeader.cs @@ -1,11 +1,11 @@ namespace LightlessSync.Services.CharaData.Models; -public record MareCharaFileHeader(byte Version, MareCharaFileData CharaFileData) +public record LightlessCharaFileHeader(byte Version, LightlessCharaFileData CharaFileData) { public static readonly byte CurrentVersion = 1; public byte Version { get; set; } = Version; - public MareCharaFileData CharaFileData { get; set; } = CharaFileData; + public LightlessCharaFileData CharaFileData { get; set; } = CharaFileData; public string FilePath { get; private set; } = string.Empty; public void WriteToStream(BinaryWriter writer) @@ -20,19 +20,19 @@ public record MareCharaFileHeader(byte Version, MareCharaFileData CharaFileData) writer.Write(charaFileDataArray); } - public static MareCharaFileHeader? FromBinaryReader(string path, BinaryReader reader) + public static LightlessCharaFileHeader? FromBinaryReader(string path, BinaryReader reader) { var chars = new string(reader.ReadChars(4)); - if (!string.Equals(chars, "MCDF", StringComparison.Ordinal)) throw new InvalidDataException("Not a Mare Chara File"); + if (!string.Equals(chars, "MCDF", StringComparison.Ordinal)) throw new InvalidDataException("Not a Lightless Chara File"); - MareCharaFileHeader? decoded = null; + LightlessCharaFileHeader? decoded = null; var version = reader.ReadByte(); if (version == 1) { var dataLength = reader.ReadInt32(); - decoded = new(version, MareCharaFileData.FromByteArray(reader.ReadBytes(dataLength))) + decoded = new(version, LightlessCharaFileData.FromByteArray(reader.ReadBytes(dataLength))) { FilePath = path, }; diff --git a/LightlessSync/Services/CharacterAnalyzer.cs b/LightlessSync/Services/CharacterAnalyzer.cs index 9f06de9..b7743aa 100644 --- a/LightlessSync/Services/CharacterAnalyzer.cs +++ b/LightlessSync/Services/CharacterAnalyzer.cs @@ -17,7 +17,7 @@ public sealed class CharacterAnalyzer : MediatorSubscriberBase, IDisposable private CancellationTokenSource _baseAnalysisCts = new(); private string _lastDataHash = string.Empty; - public CharacterAnalyzer(ILogger logger, MareMediator mediator, FileCacheManager fileCacheManager, XivDataAnalyzer modelAnalyzer) + public CharacterAnalyzer(ILogger logger, LightlessMediator mediator, FileCacheManager fileCacheManager, XivDataAnalyzer modelAnalyzer) : base(logger, mediator) { Mediator.Subscribe(this, (msg) => @@ -185,7 +185,7 @@ public sealed class CharacterAnalyzer : MediatorSubscriberBase, IDisposable LastAnalysis.Values.Sum(v => v.Values.Count), UiSharedService.ByteToString(LastAnalysis.Values.Sum(c => c.Values.Sum(v => v.OriginalSize))), UiSharedService.ByteToString(LastAnalysis.Values.Sum(c => c.Values.Sum(v => v.CompressedSize)))); - Logger.LogInformation("IMPORTANT NOTES:\n\r- For Mare up- and downloads only the compressed size is relevant.\n\r- An unusually high total files count beyond 200 and up will also increase your download time to others significantly."); + Logger.LogInformation("IMPORTANT NOTES:\n\r- For Lightless up- and downloads only the compressed size is relevant.\n\r- An unusually high total files count beyond 200 and up will also increase your download time to others significantly."); } internal sealed record FileDataEntry(string Hash, string FileType, List GamePaths, List FilePaths, long OriginalSize, long CompressedSize, long Triangles) diff --git a/LightlessSync/Services/CommandManagerService.cs b/LightlessSync/Services/CommandManagerService.cs index 838f474..3f22195 100644 --- a/LightlessSync/Services/CommandManagerService.cs +++ b/LightlessSync/Services/CommandManagerService.cs @@ -1,8 +1,8 @@ using Dalamud.Game.Command; using Dalamud.Plugin.Services; using LightlessSync.FileCache; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.Services.Mediator; using LightlessSync.Services.ServerConfiguration; using LightlessSync.UI; @@ -17,15 +17,15 @@ public sealed class CommandManagerService : IDisposable private readonly ApiController _apiController; private readonly ICommandManager _commandManager; - private readonly MareMediator _mediator; - private readonly MareConfigService _mareConfigService; + private readonly LightlessMediator _mediator; + private readonly LightlessConfigService _lightlessConfigService; private readonly PerformanceCollectorService _performanceCollectorService; private readonly CacheMonitor _cacheMonitor; private readonly ServerConfigurationManager _serverConfigurationManager; public CommandManagerService(ICommandManager commandManager, PerformanceCollectorService performanceCollectorService, ServerConfigurationManager serverConfigurationManager, CacheMonitor periodicFileScanner, - ApiController apiController, MareMediator mediator, MareConfigService mareConfigService) + ApiController apiController, LightlessMediator mediator, LightlessConfigService lightlessConfigService) { _commandManager = commandManager; _performanceCollectorService = performanceCollectorService; @@ -33,16 +33,16 @@ public sealed class CommandManagerService : IDisposable _cacheMonitor = periodicFileScanner; _apiController = apiController; _mediator = mediator; - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; _commandManager.AddHandler(_commandName, new CommandInfo(OnCommand) { HelpMessage = "Opens the Lightless Sync UI" + Environment.NewLine + Environment.NewLine + "Additionally possible commands:" + Environment.NewLine + - "\t /light toggle - Disconnects from Mare, if connected. Connects to Mare, if disconnected" + Environment.NewLine + - "\t /light toggle on|off - Connects or disconnects to Mare respectively" + Environment.NewLine + - "\t /light gpose - Opens the Mare Character Data Hub window" + Environment.NewLine + - "\t /light analyze - Opens the Mare Character Data Analysis window" + Environment.NewLine + - "\t /light settings - Opens the Mare Settings window" + "\t /light toggle - Disconnects from Lightless, if connected. Connects to Lightless, if disconnected" + Environment.NewLine + + "\t /light toggle on|off - Connects or disconnects to Lightless respectively" + Environment.NewLine + + "\t /light gpose - Opens the Lightless Character Data Hub window" + Environment.NewLine + + "\t /light analyze - Opens the Lightless Character Data Analysis window" + Environment.NewLine + + "\t /light settings - Opens the Lightless Settings window" }); } @@ -58,21 +58,21 @@ public sealed class CommandManagerService : IDisposable if (splitArgs.Length == 0) { // Interpret this as toggling the UI - if (_mareConfigService.Current.HasValidSetup()) + if (_lightlessConfigService.Current.HasValidSetup()) _mediator.Publish(new UiToggleMessage(typeof(CompactUi))); else _mediator.Publish(new UiToggleMessage(typeof(IntroUi))); return; } - if (!_mareConfigService.Current.HasValidSetup()) + if (!_lightlessConfigService.Current.HasValidSetup()) return; if (string.Equals(splitArgs[0], "toggle", StringComparison.OrdinalIgnoreCase)) { if (_apiController.ServerState == WebAPI.SignalR.Utils.ServerState.Disconnecting) { - _mediator.Publish(new NotificationMessage("Mare disconnecting", "Cannot use /toggle while Lightless Sync is still disconnecting", + _mediator.Publish(new NotificationMessage("Lightless disconnecting", "Cannot use /toggle while Lightless Sync is still disconnecting", NotificationType.Error)); } diff --git a/LightlessSync/Services/DalamudUtilService.cs b/LightlessSync/Services/DalamudUtilService.cs index e2d4e95..b0539bb 100644 --- a/LightlessSync/Services/DalamudUtilService.cs +++ b/LightlessSync/Services/DalamudUtilService.cs @@ -13,7 +13,7 @@ using FFXIVClientStructs.FFXIV.Client.UI.Agent; using Lumina.Excel.Sheets; using LightlessSync.API.Dto.CharaData; using LightlessSync.Interop; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.PlayerData.Handlers; using LightlessSync.Services.Mediator; using LightlessSync.Utils; @@ -39,7 +39,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber private readonly ILogger _logger; private readonly IObjectTable _objectTable; private readonly PerformanceCollectorService _performanceCollector; - private readonly MareConfigService _configService; + private readonly LightlessConfigService _configService; private uint? _classJobId = 0; private DateTime _delayedFrameworkUpdateCheck = DateTime.UtcNow; private string _lastGlobalBlockPlayer = string.Empty; @@ -52,8 +52,8 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber public DalamudUtilService(ILogger logger, IClientState clientState, IObjectTable objectTable, IFramework framework, IGameGui gameGui, ICondition condition, IDataManager gameData, ITargetManager targetManager, IGameConfig gameConfig, - BlockedCharacterHandler blockedCharacterHandler, MareMediator mediator, PerformanceCollectorService performanceCollector, - MareConfigService configService) + BlockedCharacterHandler blockedCharacterHandler, LightlessMediator mediator, PerformanceCollectorService performanceCollector, + LightlessConfigService configService) { _logger = logger; _clientState = clientState; @@ -169,7 +169,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber public Lazy> TerritoryData { get; private set; } public Lazy> MapData { get; private set; } public bool IsLodEnabled { get; private set; } - public MareMediator Mediator { get; } + public LightlessMediator Mediator { get; } public IGameObject? CreateGameObject(IntPtr reference) { diff --git a/LightlessSync/Services/Events/EventAggregator.cs b/LightlessSync/Services/Events/EventAggregator.cs index 04a1255..97cdf88 100644 --- a/LightlessSync/Services/Events/EventAggregator.cs +++ b/LightlessSync/Services/Events/EventAggregator.cs @@ -18,7 +18,7 @@ public class EventAggregator : MediatorSubscriberBase, IHostedService private string CurrentLogName => $"{DateTime.Now:yyyy-MM-dd}-events.log"; private DateTime _currentTime; - public EventAggregator(string configDirectory, ILogger logger, MareMediator mareMediator) : base(logger, mareMediator) + public EventAggregator(string configDirectory, ILogger logger, LightlessMediator lightlessMediator) : base(logger, lightlessMediator) { Mediator.Subscribe(this, (msg) => { diff --git a/LightlessSync/Services/MareProfileData.cs b/LightlessSync/Services/MareProfileData.cs index aba5a65..a6f0053 100644 --- a/LightlessSync/Services/MareProfileData.cs +++ b/LightlessSync/Services/MareProfileData.cs @@ -1,6 +1,6 @@ namespace LightlessSync.Services; -public record MareProfileData(bool IsFlagged, bool IsNSFW, string Base64ProfilePicture, string Base64SupporterPicture, string Description) +public record LightlessProfileData(bool IsFlagged, bool IsNSFW, string Base64ProfilePicture, string Base64SupporterPicture, string Description) { public Lazy ImageData { get; } = new Lazy(Convert.FromBase64String(Base64ProfilePicture)); public Lazy SupporterImageData { get; } = new Lazy(string.IsNullOrEmpty(Base64SupporterPicture) ? [] : Convert.FromBase64String(Base64SupporterPicture)); diff --git a/LightlessSync/Services/MareProfileManager.cs b/LightlessSync/Services/MareProfileManager.cs index bf7f35b..fcd71da 100644 --- a/LightlessSync/Services/MareProfileManager.cs +++ b/LightlessSync/Services/MareProfileManager.cs @@ -1,6 +1,6 @@ using LightlessSync.API.Data; using LightlessSync.API.Data.Comparer; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.Services.Mediator; using LightlessSync.WebAPI; using Microsoft.Extensions.Logging; @@ -8,73 +8,73 @@ using System.Collections.Concurrent; namespace LightlessSync.Services; -public class MareProfileManager : MediatorSubscriberBase +public class LightlessProfileManager : MediatorSubscriberBase { - private const string _mareLogo = "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAFQGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjU2IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjU2IgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHRpZmY6SW1hZ2VMZW5ndGg9IjI1NiIKICAgdGlmZjpJbWFnZVdpZHRoPSIyNTYiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjcyLzEiCiAgIHRpZmY6WVJlc29sdXRpb249IjcyLzEiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIw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"; - private const string _mareLogoLoading = "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAFQGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjU2IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjU2IgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHRpZmY6SW1hZ2VMZW5ndGg9IjI1NiIKICAgdGlmZjpJbWFnZVdpZHRoPSIyNTYiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjcyLzEiCiAgIHRpZmY6WVJlc29sdXRpb249IjcyLzEiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDMtMTlUMDE6NDI6MzIrMDE6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDIzLTAzLTE5VDAxOjQyOjMyKzAxOjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHhtcE1NOmFjdGlvbj0icHJvZHVjZWQiCiAgICAgIHhtcE1NOnNvZnR3YXJlQWdlbnQ9IkFmZmluaXR5IFBob3RvIDEuMTAuNSIKICAgICAgeG1wTU06d2hlbj0iMjAyMi0wNi0xNFQyMzo1MzoxNyswMjowMCIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJwcm9kdWNlZCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgUGhvdG8gMS4xMC41IgogICAgICBzdEV2dDp3aGVuPSIyMDIzLTAzLTE5VDAxOjQyOjMyKzAxOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz6rHhZwAAABgWlDQ1BzUkdCIElFQzYxOTY2LTIuMQAAKJF1kc8rRFEUxz8zQ8TIz2RhMWlYIUZNbCxmYigsZkYZbGbe/FLz4/XeTJpsle0UJTZ+LfgL2CprpYiUbFkTG/ScZ9RMMud27vnc773ndO+5YA2mlLReMwTpTE7z+zyOhdCio+4JG2100kprWNHV2cBkkKr2fovFjNcDZq3q5/61xmhMV8BSLzyuqFpOeEp4ZjWnmrwl3KEkw1HhE+F+TS4ofGPqkRI/m5wo8afJWtDvBWuLsCNRwZEKVpJaWlhejjOdyiu/9zFfYo9l5gMSe8S70fHjw4ODaSbw4maYMZndDOBiUFZUyR/6yZ8jK7mKzCoFNFZIkCRHv6h5qR6TGBc9JiNFwez/377q8RFXqbrdA7WPhvHaC3Wb8FU0jI8Dw/g6BNsDnGfK+dl9GH0TvVjWnHvQvA6nF2Utsg1nG9B1r4a18I9kE7fG4/ByDE0haL+ChqVSz373ObqD4Jp81SXs7EKfnG9e/gY/0WfU3EFh5gAAAAlwSFlzAAALEwAACxMBAJqcGAAAIABJREFUeJzsvXmQHVd5N/ycpbtv333uzGhGoxlJ1mZZDsYQgiHkxewkkLzfxxfepN5KUqlUqvJ38k8oFwkhRViqIKkQwh+QkKKKACniYBPAFGDAO7JsZFmWtcuakUaafebut9dzvj9uPz3Pbd1750qWLInMqeq6fXs5fXp5tt+zHAa3b2PRkgGAFADomzuczbbZboumAMCPFu8mj2WzbbbNdjMbu9kDuE7tl+U+Nttmey3apra82TbbZttsm22zbbbNttk22//Mtmk7/xI1rfV1e5+MMa21ZoyxTXvxl7htMoDbpPUhbtyeJNRrebe0D9alz/aOTabwS9M2GcAt1gaQ4sn9N/IdJgn9CsLfZAa3d9tkADe5dSF4lLwssS3ZNto/yD6A/i4h3eWYXuubzOA2bJsM4DVuPSR8L2Luto4RkDqxbZD+ug6pxzr9r/usd5y3yQRur7bJAF6D1kPK91pPEnryuF7bB13vGFqP/91+kwtAO6x0kwncxm2TAdyAtoGU70fIvRhAclu3fd36TO7vOtwu690IPrmoHtvbF91kArdF22QA16n1IfqNJDz+51229zr+ejCCbtKfMoAkgSuyTfXYv8kEbrMmb/YAbvfWR73vR+y9CBmZAP3tdky/vugYkuPpGHqf326ErgAgjH7xWrgfx6oSfW22W7xtMoBraAPY9IMuSQLnXbb3WmdRoA5TSjEAYJzzeLvWGjjnEAQB01qDYRgAABCGIWOMYaAPKKVACKEZYzoIAs0Y00IIBQBKKaUAQHHOkfC51jpkjIXQyVhCso7g5K0WSHQ9td1b5Z5eddtkAFfRBpD2gxI7JfQk0ffdFoYhJ4TOgyBghmFoAOCu63IpJeOcAwCwVqvFbNtWAACNRsNgjOl0Oh0CAPN9nxmGoTjnyvM8rpTSqVQqAADtOA4YhhEKIUIAUI7jhKlUKtBac9/3uRCCRfsA2sSP0h/v72YQyKAEfi2MoF+Q1W3NDDYxgAFagvAHkfZJYu9F3D0XrTUPw5BLKVkYhkIpxaWUwBgD3/ellBKlK5uenk4bhgHbtm1rLS4uptPptMpmsyEAqJ/85Cej6XRavfWtby2/8sor6UuXLllve9vbqpxz9fDDD49u3brVue+++1YAQD377LPFsbExd+fOndXV1VXDcRw1Pj7ucs7darXK0um0L6V0AUC1Wq3Qtu0AAALoNA+oWaCvswYwyPe60TGMsY270bpj2BsGRPXYdsu3TQbQp/Ug/GuR8P0WobXmACAYY9x1XSGE4FJKBgDMdV1pWZYGAPA8zzx79mzmwIEDtSNHjgz97Gc/2/qe97xncWVlxTp79mz+zJkzwx/5yEeOf/WrX73j0KFDu9/ylrecW11dzSwvL+dM0/Q+8IEPnH/ooYf2z8zMbL3//vtf2rZtW+2JJ564IwgC9kd/9EcvHDx4cMv09HRx69atyx//+Md/8eUvf3n7iRMnCr/1W7917n3ve9/c0aNHrW9+85sjn/70p88CgNtqtXQfJhADgtfABDYk4niFsQ5iZe0GWmu6PamZDNJ/x/h7MIRBGMMt3TYZQJd2jYTfl8gTv1xrLcIwFEIIrrUWvu8LpZSwbTsEANloNMy5ubnUnj176g8//PB2IQTce++9jU996lNvllKqLVu2NGu1WvrZZ599/dTU1KVcLuc8+uijv10qlWZN0/TDMJQzMzP3TE1NHbMsyzl9+vRb8/n8Zdu2a5xzWFpa2r5169ZTQohwYWFhtxCieeDAgWcdx7HOnTt3z8jIyKndu3efCIJAHT9+/PX33nvvD/fu3Tv75JNP7k6lUsvvfve7X/rzP//z2WazCel0OoA28eNytQyg13fYdTsSeRui6Hg3HRGUkanU0RdjDLLZbE8tgDEGjuOA4ziacw5hGGogmkzECLoFRQHZdtu0TQZA2lUQftJGjwkbriR4ARHBM8ZEGIYiDENhmiYHAKaUMqIPVQMA+5d/+Zd9v/mbv7l88eLFzMc+9rH//aEPfejZZ599du/09PQdvu+btm07a2trYysrK9snJiZOz87O3t1qtYZM06xZltWo1WrjjDGVzWYXy+XyNq01E0KEpmk2HMfJAwBkMpnler0+opQCKaXKZDJLjUZjVGvNbdte5Zx7zWZzLJVKLRSLxdO1Wm2r53l50zQX9+7d+y3P80LGWPlP//RPH/2TP/mT5UgT8OHqGEA/IDXexjlHQu9G5EwIgUTJtNaQSqVYKpUCpRSzbRsZBYs0gpgJ4PHxhdrbNP4iiKqUUtVqVTuOg54QgCsZQL9oylu6bTIAuGrC7ybxkwQvoK3ad/wGQSBN0wQAYLVazZ6dnU3fdddd9X/7t3/b8/zzz+98+9vffvErX/nK+6SUIeccFhYWtlcqlTHf91PFYnFxenr6V03TbEkpnVqtNsQYAyllCAA6DEMphAgjZF/gBwwRwUREqLXWXGsNjDEdqbboctQQEQXnXDHGwjAMjciD0GSMad/3M7lc7vDo6OiTQ0NDxx944IGfvPe97y27rqssy+rGAFTUnwZoS2QitemzjteJSt/xHoQQLBo35HI59GwwwzCYUgoizwdKdqaU6tiO75mYBozcOzDGVPRMgDGmOecafznnKgxDXa/XleM4yejH25oJ/I9nAF2IfyPCp9JewJXEL5HgGWMikvAxs3jkkUe2mqbJbNtmn/3sZ99TKpXq5XJ5aHp6+s5GozEUofKZtbW1HZZlVXzfT/u+b0kpfaWUUEpxAADOuU4QSof62+U/XMO+DptZSlkpFouHTNOcf+973/vvn//854/UajWWy+U8aOMAFAvQWmultQYhBGoCLDHmeD2xj3HOGWMMMpkMM02TSSlZJMkZHqu1ZmEYxsSNkp68M0beL+OcX6Ex4D7GmFZKaaVUHAcRMULFOddSSiWEUEEQqOXlZQWRWRC9hCQT2GQAt3rrIfW7+eWThH8FweO6UkoyxgRjTDiOY54+fTpzzz33uEePHi1+73vf27lv377697///XtWVlZGWq1WttlsFlZWVraVy+WtmUxmrVwuTwZBYEgpfZS+qJLCzX9XulQqPZ/JZGYmJyd//r3vfe87nHNXKeUJIXzowQAYY7Bz506YmZlJSncGESIfbeOMMWZZFsvlckwIwaKYBa6UYmEYYnxDByPAfrTWjHPOIi0DGUjMBKJnicfiGCgHAABQEVErrXUYhqGKtikhRMg5V4ZhqCAI1MrKSgh9oiDhNmEC/+PiAPqo+71cd13Ve1hX82UQBAbnXAghRL1etwBAmqYpZmdnR3/+858XDh8+fEc+nw8/8YlPvMfzvGw+n187derU/0qlUlWllHAcJ+M4ThGg/SGGYWhE65qM6WY1rbVm6XR6LpvNLti2vfJnf/ZnzwohQsdxWCqV6jo2ZF5f+9rXoFqt4uYOtZ5IfV4oFLhlWYwxxsMw5K7rskjC80hVjzUDIQRHIuecc2QIEKn1Ub9MKcWRMeA26NQKANYlOUAU/MQYCxljoWEYIQCoIAjCIAi4ECIAADAMA4aHh/XKygoSflLzum3a/ygGsIG6n7Ttu0l8SX6lUkpyzqVhGAwArOXl5VQQBIbnedYDDzzwznQ6rS5evLj9pZdeeufk5OTJy5cvv97zPHthYSEAAGi1WnkAACGEHiBN+GY1JqV0S6XSOSmld9999z37oQ99aNlxHGlZVgBdUHDEGB599FH20ksvAR5DQLhYmqdSKZ7NZrkQggdBwJVSLAgCEREyj7wknDHGGWM8wjBYtM6CIMB9jOxD6c+J1I+1AaqJMMY6wp4R/1BKBQAQRHiM73keBEEQ32QqldKFQgEqlQoykG5m0y3PDP5HMIAB1P1BJL7EJQxDg3MuOee8Xq/bTz311PD999/f+NznPvemEydO7J6YmKg899xzH/A8L+t5Xtp13dypU6f+F0BbqiulJK7DlRLplmuFQmE6lUrVxsfHz33sYx87BgDcMAwfgcUeCywvL4OUEprNZnx/SKgAwEZGRrhhGNz3fe66rgjDUGitOedcSClj7wn+KqViJhCZWvG7i/rkvA2OUGZAwVo0G5BLoA2vovDnUCkVhmEYmKYZtFotr1wuu0NDQyydTrNWqwVhGOoIENXpdFrX63XEITrQzdul/dIzAAoCkd9uxL+htA/D0BBCSCGEOHPmTC6bzYrHHnts/NChQ7u+/e1vZ48fP/4rruvmnnvuuQNaax6p97lIqqCU6MaMbrkWMSpm23a5WCzOpVKp2u/93u8dHBkZcZrNJkQhxlcQPar+hw8fhunpafjOd74Drut2SH2IiF8IIVzX5ZFrVBLCl5EnQ0IEpgKAJFIdza84gCrqV+Av2v/R8Zy13RqMMYb4gtJaayGE5pzrSqXiMsaCbDarAcBfXl5uve51r0sPDw/rxx57bAkAwuHhYem6rkYmIIRQ2WyWVSoV5Ca3HRP4pWUAA6D7ScJPSntK/LHEBwDrRz/60djevXuDhx56aPu//uu//p+9e/e+8otf/OL+1dXVnbZtrzUajVIEKiHwxeE1agTZflVNKcWEEMHIyMjpVCpVefOb33zoj//4j88BAJimqVZWVliz2WRSSmYYBgghwLIsbRgGmKapa7UaVCoVOHXqVOxehOjZj46Ocs658DwP4yKkaZqSMSbDMJRaa4MxJhljsdaFC2MsdqviOmoUhDGwSEPgSinmui4IIXg2m5We52nHccLJyclUuVz2qtWqZ1mWestb3jLuOI5z5MiRpY9+9KP3X7p06YLruo177rln8m1ve9vsoUOHTj/33HPLUkoVBIGKgMlkDsRtofbT9kvJAHoQf1Lq91X1tdZGGIYGY0wKIeTx48fz09PThT179gRf/vKX32fbdnj+/Pndc3Nzb5ibm7u31WoVtNasXq+PsB5RZjfgPtdvkjHgnANr+7GBcw5CiPg/XfD4bv3hopQCwzCanPOU1lqOjIyUH3/88aHt27eX77jjDmdkZKQCAC4Q6X/hwgX2wgsvsMOHD4uVlRW1trYGlmVBs9mMQbhCoSCklMJxnJj4jXaqogyCwGSMGZxzQ2ttMsYMrbUBALhNKqUEY0xwzo2IAIUQQkQMBYIg4Ol02nBdF1zXhS1bttjj4+OZmZmZ5tDQkF0sFs1WqxWsra0599133/CBAwe2/Od//ufh9773vW8ulUrp97///RdGR0dH9+7d+8ZisTh58eLFn2it/fe///3ZIAgOPvHEEyv5fJ6HYciVUsq2bVar1dB9eNsxgVtWBb3W1kXl76bu93LlGQBgaK0lY8yItlme51lf//rXd87NzQ0/+eSTb5yfn9/leV728uXLd0sp3TAMZWTXDxprfi331e44Im5cUPriehT800Hs+P9qmlIKgiDQQRCwZrPpAkBLa+0XCoW1bDZ72jTNM41G42I2mz15xx13nN29e/fKpz71qVXaxxve8Aa+srIiXdeFWq0GQRCwUqkkfN+Xvu9LpZSUUhoAYCilTAAwhRCWEMIKgiD+H4ahdF1XmlHTWstarQbj4+MZrbVYXFwMpJRieHjYNgzDuHDhgvO7v/u7exzH0dPT0/XXv/71WwuFgl0ul5ue56l3v/vd99Rqtarv+/4dd9yxs9lslg3DEFJKMTo6uttxnEXDMOxCoTB87ty577zyyiuPt1qthW984xtHFhYW6qZp+r7ve6Zp+oZhBEtLS+gypC5BgNuAEfzSMIA+Kn83dL8buGdERGxwzo1Wq2UdOXJk6K1vfWvrgQceuO/JJ59825YtW1aeeuqpD/u+bxuG0fI8L3MD7qPjPxK6lLJjQaJPEvq1mAAk3gAYYyCEAM/zwPM8CMMQms0meJ4H2WwWcrkcVCoVsCwL1tbWIJPJOLlcbtU0zWnO+bF0Ov3y0tLSC7lc7syLL744Ty4jh4aGzKGhIVmv10Wr1RKcc5NzbgZBYEopLcMw7FqtJlutliyVSjnP88x6vS5KpVJ2+/btpdOnT7cmJycLU1NTQ+VyOZyfn/d37NhR/I3f+I3dDz/88Kl3vvOdu/fs2TOxtrZWF0KY+Xw+MzIykj9//vziXXfdtWPLli0jCwsLi/l8Pp9Op9Na69BxnEYmkylKKZnv+74QwpBSAuccyuXyhZMnT3671Wot/PSnPz346KOPXi6VSn4QBG4Yhq5hGIFlWUGr1QorlUqIMQSwyQBe27aByt/N1keix3UTpb7jOFYqlRKPP/742Le//e3XeZ6XfuaZZ+5vtVrD1Wp1vNVq5dCNdL1UfSRaVNtx3TRNME0T8IOkxH49bH28FobnRmo/aK3B89pTxzuOAwAAnufpTCYDruuClFKbpqmr1SrL5/M8l8tBEAQgpYQwDKHRaLSklMu5XO64YRiP1Wq1pyzLOnH27NlKuVzWAGDn8/msZVmpIAiMMAzNVCqVLhQKua1bt5ZKpdLId7/73cUPf/jDd3ueZywsLAT79u2bKhQK+dXVVW91ddX/nd/5nV9bWlqqeZ6n77rrrl2snSYdOo4T7N27d/vq6uoaALAdO3YM1Wo1pSNgwLIs7rpuqLXWpmlKAEBkH92DGgBYGIbe2bNnv3vp0qUTs7OzZ//93//9Jdu2Xa11S2uNDMC3LCt0HCcol8ubDOBmtAFU/m7qfmznA4DJGDOUUsbi4mJ6y5Yt7IUXXig98MADvzs+Pl59/vnn3zY3N/c627bLzWZz6DqOuz1YQuiGYcQEiJKYHnu9G2oRND7fMAzwfR8AAIIgAN/3IQiC2LSQUsLIyAgsLCwA5xwKhYIWQkAQBDqXy4Hnecz3faa1hmw2C0opaLVabrFYPBWG4UEhxLPNZvOFQ4cOXYrU5uKuXbtK7373u+88evRo/V3vetcb7rzzzreeP3/+gm3bw6Zp5nfs2LFnZmbmcqlUGh4bG9u6srKyhlIcAKBcLteHhoayUkrpuq5vWZY0DINprSEIAs05x9BhjPVnfZ6pFkKwS5cuvXT06NGfNRqNhYceeui55eXlspSypZRqSSkdz/M8KaWfSqV8x3HCTQZwE1qC+DdC+DvQ5AhpNgDADMPQFEIYf/d3f3dvtVotTE9Pb3/uuefezxiDSqWyNbJHX7XEp3a8aZqQSqU6JDw95ka0JLFLKdHWhy1btoDjOKCUAs/zwHVdiJJpYsnOGAPLskBHJcZs2wbf90FrDaZpglIKTNMExph2HAcajYYeGxvToh3pFDM1xthlpdQLy8vLT5bL5WcOHDiQ+vVf//VfzWQyU5OTk78RBAEbHh7e5XmeW6/Xq9u3b9/pOI4KgiCQUhqmaTLP87RSShmGIehzS97jVTYthGC1Wq38/PPP/2htbe3S888/f/TnP//5dCaTcZRSDa11S0rp+L7vcs5927aDTQ3gJrQuxE8lf0+pD22gzwQAo9FoWABgZTIZ9elPf/pXDx8+fHez2Sz+4he/+C0AgDAMTc/zUmw9JPdaxwqMMTAMAyzLAsuyOgC7G0n0ANABDAK0VX1qxiCwuGPHDlhcXITV1VUolUqgtYZWqxX347ouDA8PQ7VahUKhAL7vw8WLF2H37t0AAOB5HqTTaVBKgVIKlpeXYXR0FDKZjA6CQOt2ui5HphJpPHNSyqNSynMf/OAH33nnnXfe1Wg0At/3uZSSRx4Jjbn9Edo+WFmfa2zHjh07eOrUqZcXFhYuPPLII0cZYw0AqDPGGlrrFue85fu+J4TwbNu+rTWA284NeBX2ftLONwDAVEoZQRCYpmmKZ555ZvzYsWNb9+zZ4zz44IO/W6vVxj3Py7RarXzCXXbVHxuVSKlUCmzbBtM0O9T6G034ANCBGeh2Zl78SyV6GIZQq9UgDEMoFouQTqehVquBYRgQBAGEYRir9Ol0GiqVCkRlyOK+OefgOA6k02nwfR9GRkbAtm3wPC8OgAqCQBuGAZ7n6Uj72aq13lqtVt3vfve7+sSJE+Hdd98tJycnAQC07/sMABgyrRtF+BEmwGZnZy+fPHlyttls+s8999xCEATMsqw4iInGM2zU5Y0Y5/Vu4mYP4GraAMSPEt+AdaLHxVJKWZxzUwhhvPzyy8P//d//faDRaAx96Utf+r8LCwt3h2FoViqVra/mG0OillKCbdtQKBQgk8mAYRjXDTS8ljFRhoMmh2EYHV6FRqMRq9CtVgs8zwOlFDSbTVhdXYWtW7eClDLGBKKgnxgARBU/DMP4FzENpRRwziGXyzHOObNtmxmGwaJyZ5pzbtTrdfnCCy/AM888wxYWFiCTybBCoRAzKWQCN6IJIViz2fQOHjz4Urlcrp0+fXr27NmzK4ZhBFprDwD8aAk454FSKuCch1JKHYahchwnLiYCt1EswG3DALoQfzJ+P0n8ZrRuaq0txpjpeZ7985//fLRYLJqf+9zn3vL000+/Y25ubuLs2bNv8zwv6/u+Ddeo6iNxGYYRu8symUws8W90o2o99VAopSAMQ7AsCzjnsaRGrwJAW0sIggCEEFCr1eJj0DRQSsG+ffsglUrFJkFUThxYVJoLCVxrDa7rxswBADquh9pGZA6AjrL1DMPQQghWr9dZo9GAmZkZOH78OFy4cAEAAEZGRiCdTsfn3ghGcOzYsZlTp07Nr62tlQ8fPjyrlHIBwAMAT2sdMMY8AAgYY4FSKuScKyGEDoJAu66rCAO4FdK3B2q3BQPoQfxJlJ/a+Sa0Cd9kjJkAYAFA6ujRo6WZmZnRb3zjG/f8+Mc//p1mszly8eLFezzPsyM7/6pDdqlUzeVykM/nIZVKxar29W4USEQADqWj7/sxI4gSV2KQD4mUMQau68ZErpSCarUKYRjGx6P0RuzAsizI5XKwtLQEnPPYM4CESCW+EAKklDGh4zWROYRhCLZtgxAChBD0eszzPCgWi1CpVOJrX7p0CY4ePQpnzpyBdDoNw8PDYFlWDFBeD2DWMAyYm5urHTx48ILjOM0jR45cimIJPGgzAJ8x5jHGgmg9YIwppVRoGIYKw1C5rtutAvItzwRueQbQB+zrBvLFKn9E/JbruraU0jh9+vTQ3//93799eXl55PHHH3/3zMzMfa7rUql/TXY+Snwk/OspmegH7vs+TvQBruvGktDzPGi1WnExy1arFbvvMIUV9yHKH4ZhB9IfhiEEQQD5fB7CMIR6vR7fFwBAtVqFZrMJhmHEjIKGHmez2Q5mhyAfAp+YRoveAq01pNPpDuyAtcubgeu64DhOR/9aa1haWoKXXnoJLl++DEIIGBkZgVQqFfd9rc9dCAH1ej18+umnLy0vL9enp6dXzp49uyKl9LXWPgD4WmuPMUaLnoTQrh0QMsaUZVm61WpFIQR95xC45dotzQD6+Pi7Ze5RhN8CAIsxlpJSmkEQpD/ykY+8e25ubtepU6fueeWVV97CGNNhGJpwjYTPOYdsNguFQuG6ET5VkTnn4HleLOUxth2ld7PZjCUxbkeJi7Y7lZSoISSDf5BBoDSOEmegUCjE94lEjEQppYRUKgVh2J4bBJkRuhWFEGDbdnxP+GyQKWC/qCVh/AN6EGq1Wqyx4Niz2SwwxmBxcRFOnjwJ09PTMDQ0BKOjo7EZgte7msY5h/n5effYsWNrFy5cqJw4cWJFa+1GBI/SPyb+SAsIOedhNHOSjrQZHWkBXV/tVQ3qNWy3LAMYkPip1DejxQrDMMU5Nx555JFtvu/b3/rWt/Y++OCDf9BoNIaXlpZ2e56XTvQ96JiAMQbpdBoKhQKk0+lXRfhJCY8fveu6HUE4jUYDtNbg+35M6GEYxvsBoIMAwjAEKSVYlgWO48TqNxI5SlYhRMxgMpkMNBoNSKfTMdCHhIWEjsSI04whQ8H7oBIdAGKTgEp5VP1RExBCxC5RpRSkUilIpVKxRwI1A8x5QMByfn4eXnzxRajVajA8PAzFYvEK/GOjFplK2nVdlcvl5NmzZ8tnz55dY4z5QohYA4BOyR8CQKi1VlGxUIVaQLPZ1H2uf0sygVuSAVyDzR9L/jAMLSGE+cILL4wcPnx48vDhw9u/9rWv/d9KpTLZaDRGWq1W4Vr8+qi+FotFyGazsZ17LY2G3qKLDdXyVqsV+9+R2IMgiO141BBwTHQMlAkgw8DtSJQ0uAeJH7UC3/djQvN9P742Ei61+fFaiPTjdgT+8Dqu68aRjtgHEj8NDqJA4dLSUse9UgaG59m2DWEYwvT0NJw8eRKCIICJiYkOzWRQRuC6rm61WsH4+LidyWTU/Px8rdFoOFJKlPh0CaFd7VgJIZRSCusKdICktwsTuOUYwFUSP1X5Ee1PMcZSn/zkJ3/9xIkT+44dO3bPmTNn7vd9Px0l+1yVvY8fXjabhWKxGEu/a7gvAFgnUpTeSimo1+sd6jwF7ZLSlxI9Xcd9AJ1qN12nDbWEqIZ+7BpE6UzRdgq40b7of5Ts1LuA5gP2kUqlIJPJxOYINsuyAABircU0TajVatBsNmPmhL9oRuC6aZpQr9fhlVdegcuXL0OxWIRSqRRfcyMmwDlnuVxOhGEIa2tr7tDQkLV3795cKpXSFy5cqIRh6EspldY6Jn6IiocqpVQEYGqttY6iI3Wz2cRgpf4fxS3QbjkG8PGPf5yq/hsRP7r5TKVUyvf9lJRS/PVf//WbDx48+L8ajcbwyZMn3x4EgXEtAT3oqkJf/rU2VGXRpw7QTrJpNpsdqj5V57sRercFj0diTC40iQj/A7Q/zlQqFa+j/R4F6XRIXjQJANYTlhAQpOdh3zhmPBaZHmoDyODQjUjBPtM0Y+mOmhBlbKhhIChKzYP5+Xk4deoUuK4LY2NjsdsQz+33nvP5vBwfH8+Uy2W3Vqt52WxWlkolUavVWrVazZVSxnUDYT3tFwBAR7EAGp9VOp2GPkzgluIKtxQD6IH49yX+MAxNzrlx8eLF/NGjR0cWFhaGvvjFL/7+0tLS3nK5PFGv14evVuXHjzeXy0GhULgmdR8lNgB0SHdE3z3Pi9X0bhKdEjmV7rgv2ZJSn27R5LbfAAAgAElEQVTD/5SQkOgo4IjHoNqfBOxoABFAO/QXkf5MJgOmacbbMFgIf9FbgPeNKj/AelISmga+78feDNd1AQA6PA/IHDDICJkPMptLly7BhQsXoFQqwfDwcHxf/ZhAxMTY1q1b87lczmo2m161WnXT6TTXWgfNZtODTuLX7fKDcYKRjpiNTjIB+lng6+o5kNe43TIM4FqIX2ttcs7NpaWl3OOPP77N87zsZz7zmQ9PT0+/WWstK5XKxNVKfq01WJYVh8Ne473EH6njODEDaDabHf72bkSeJPgk4Q9K/ADQIZFxH9UI0MRAJkAJHvtBSY1MAhkE9RBE5cAgCAJotVoxg0AQEBeAda8DSnK8DnoC0FRQSsHKygq0Wq34fMylSGoWyByoaVCtVuHs2bPg+z5s3bo1Hl8vJkBNhuHhYXv79u1bgiDwFxcX66urq046nWZhGIa+74e8PdORhnZxUR3lKlB8phsTSBL/LcEEbgkG0If4u4X3ItpvhmFocc7NBx98cNezzz67/xe/+MX+559//gPNZrPk+35Kt2vHXc04YtceSperORc/IM/zwHEcCMMwDqmldn2S+JPE3ov4k41K0F7qP7Zu27HPJKOgUYBU4mJWYDcmQiUsSn3qcsQFtQhcTNPsACixb1Tx0a1p23b8H6+HICXiNElG5nkezMzMwNzcHIyPj0OxWNyQCQC06wNwzvnevXvHpqamRmZmZhYvXrxYL5fLnm3bLML9dMQIgEXzCpAAKA0ACHzqqChq10t2Hchr2G46A+hB/Bje203yW1prMwgCyzAM42c/+9nEQw899Guu6xYOHjz4vnK5vI2R0tsDjiH2fedyuasCb6gd7vv+Feor/Vj72fEbEX2SAVAwrBswhxIJCRMJkhIuJXTcR/tAmxxtbdyGjI768XE7SuakCYHETqsZmaYJhUIBXNeNk6bQW4B1Cer1eow1UCZDXZqoTaA2g/dt2zZG+cH58+chl8vBli1bOp5Lt8aiHb7vq3Q6nXnTm960b2pqKr20tFR55ZVXqrZtC0amBYv60kopHWEFsSaAsRi+79+SMQI3lQH0If5kgE+H5GeMWUKIFADYn/zkJ99+5syZ18/MzOyfn5+/i/Q16BjAMAwoFotg2/ZVSX1UQbXWsa/ecZw4WKebqn+tEh8/WATsADrtYmxImHSd2u9UvcdjKBNA4sRrCiGg1WrFngGKxifNAyrNqSegW2ETZAYYjYjBVJichElAlUolHgeWKgOAOHcBNQKMhsTrIENCk8FxHDhz5gxorWH79u2xNtGP2TPGmFJKO47jjY6Ojuzdu3cUAFoXL16sOY4TRhPCQIQxIROI50KMKg1BOp3W+H3cap6Bm8oAuiD+3Yp40EAfS2ttXb58OZvP59mnP/3pN/7gBz/4f5VS9uXLl+8KgsC6GsAPpcTQ0NDAKj89JhmJhxoAVVM3In663o3oe42BxtgjESalOEoflN4I2FHGQAm1G/HSwB9argyBPsoIaOARvR72if9Rc8B7oEFBOA7EEzBACVV3jHJE6Y9jRFOFYhcYy0C3TU9PQ7VahW3btsXehn5EyTlnUkpRr9eder3u7tq1azybzeqVlZVGs9kMyLk6Ol5Hz1xH34BGj0ufGIGbxhVuGgNISP+NUnrRx2+tra1lFhYWCk8//fTkV77yld+rVquT5XJ5wnEczOEfmPjR3k/awIOci2G6WDSzm9/+etj5uD0ptSmxoIqOfnFU8ZFAKVaAjcbfY19ox+I18DrdzApqq+N/x3GuABHRXUhNDzQNkAl1i2ZEwG9paQkqlUocuEQzDKmkx2eEDA8bYgRoHgC0E4zm5+dh27ZtG+ICAABSSp5KpSwppSyXy81WqxVOTExk1tbWGo1GI4jGHLsFIyagRXs2YdBaM8MwtG3b0Gq1binPwE1hAH1Av2RyjwntxB6LMWY1m830D3/4w22pVMr8whe+8JvHjx9/TxAEluM4BbjKB1goFCCfz1/VuBF0Qn8+Sn1U9a+Xug/QaePShsSeDLihoJ3jODEzoDUGUWpHabgdWgD2STGD5FjQBGCMgW3b8f3SMF8k0GT0ImOso8wYAHScj/9xLFSd55xDrVYDAIhrGKDWQTEGHCOdww81jiAIwHGc2HRYWlqCmZkZGBsbg+Hh4b6aQPSsWC6XS42Ojg67ruuePHly0ff90LIsqNfrdJq06JT2TQohYk3AMAzdwzOA7TVnAq85A9gA9Oum9ptKqRTn3HzsscfGpqenxx999NFfefzxxz/s+37a9/20HnDmHfxYisUiZDKZge19lCy0QAba+Shh+hH+IOo+3YYSMin1AdZ95vjBUgIAaAfbWJYF+Xw+Hi8AxJKRpuviOdS3n7Sjk4wGiRMJDrdTkwTDm1Hy0n7xuCAI4iQjep0kU6AJQtgPTSNOnoOaAk1FpqnHaE4YhhFHEObzeZiYmNjQHIhAPj41NTU2OTk5fPLkybmXX355zXXd0LZtrqJyZdB2DyoEB7FmAADoiCH18wy8pu01ZwAb2P1XEH8QBJaU0jh//nzx61//+r3VanX4Jz/5yQeWlpZ2AwDTA7r6UOKVSqWrAvvwQ3ZdN86xp+h+UurjtQaR/HRs2JJET/dRSYn7KXHimIaGhqDZbMYqOZosGGaLEhLdZpjOS9Vz7BOlLDUF6Ll0bEkTQ+u46EfcN9UIknUKkEHhfrzm2tpah/aAjAa34X9qttCaBDRwCF20eB+u68L09DRkMhmYmprqGznI2tA/BEGg8vl8Yf/+/RPj4+NGuVyuT09PN2zbZtAlUAgiT0HkHtTRbEk6yeTxMldc+Aa215QBdLH7e6n+sd0vhLAAIPX5z3/+9UtLS1tffPHF1587d+5tkatmYMkvhIChoaG4vNQgjabXYhAPStVeUn9Qwh9kDEnipyBdch0XagvjOibsYDgzBdps245z8znn0Gq1YgZDcQY8j95jt+ChJDOjfVENJ/ls6Hgty4qPkVJCqVSK3wEyDrxWr1wJGiyEx+H9oClAcYELFy6AaZqwffv2uI9eEpoxxoIgCDzP0xMTE+NjY2N2vV6vVqtV1/f9MGKEcbCQ1pq6BzXnXFNQkL5yvMSGH8d1aq8ZAxjQ7qdpvabv+5YQQn7rW9+648c//vFblpeXt50+ffptruumB0X7dQRslUqlgYifEhAm5mCRCvyY+kn9V0P4FGjrBvrhfoyYww8di3BSdB3Rfq3bkY2FQiEGLrPZLBiGAY7jQC6X6zAnANZrBlK3Ho49CRYCrDMGqnIjfoHPhLomAaADT6AmD47Ftu0YN/B9H6rVKnDOY/WeeiSw/1QqBb7vx/3gfVAgELdhVCO9t+npaTAMA3bs2LEhExBCcCGEKJfLtXq97k5MTBSazWazUqm4qs314rwBFsUM0JyBqCy8JqDgtaWWvsr2mjGASPUf2O4Pw9AyDMNcXFwsfOYzn3l/o9HYMjMzc2B1dXX71RL/0NBQ7Gra6Hg8ptVqxW49tPcHkfqvRuL3kqL4ESaJhUpnGthDbWTLsuLQWozQQ0KigB0yECR6lKAUUMO+aUYkHRPeQ1KFT8YpAKxnD+Izw3h+6img4cK1Wi2OqsTz6XPB69Piq9T7gWNC4kPGgNgImgyvvPIKGIYBO3fu3JAJGIYhSqVSzrbt1KFDh857nhcKIVQ01TgygPgTUEopLCIKbTxAa61jppVor4kW8JowgA1U/yuIX2ttBUFgCSGMj3/84299+eWX31Qulyfm5+f367bNPxDxo80/CPEDQAdwhRFoFMlOSn+8Dv2P27qtDzLmbsSfXADgCqJKpvUiIdEwXrSxkdjDqD4fMotSqdRBFMgIUCrjZCZ09iCqFaF2QoFDfA90/EnThhIzbsN+sbqyZVkxU0ZGhv0kIxxbrVaM7LdarTjdmJoEqOEkMQfOOUxPT4Nt27Bjx44NgUGtNWSzWfvAgQN3NJvN2g9/+MMZHhUL1e05AuKFMYZ1A3U0Y5GOgoR0gtG8ZtrADWcAG6j+3Yp6mL7vW6ZpyocffviOr33ta/+f67ql5eXlnY7jZAdBTvGjuxqbH4kFiR9txH7uvVej7m/UqHSjAFe3bRSsw+viB4UEh1I1DEPIZDKQTqfB8zzgnINlWXExENyGBEaZCXW14TNBN2MqlYJ8Ph8fj9vRa0C9B3gPlPDwWvR4/A8AsLa2Fp9fr9fj86mLEt2DqVQKtm3bFjNFBAsBII4MBFiviZDJZOL+sKDIxYsXIZ1Ow+Tk5EBMwDRNOTo6OnLPPfcMnzp1am5+fr4VMZ4OUyCKD9Baax2ZMprWEIBO4r/hWsANZwB9VP8rCnlCVNHHMAyzXq/nPvrRj/4/CwsL+xqNxki1Wh0f1G3COYehoaEYge7X8CPErD1EiXvZ+4MQ/6shfGxUYlKioduSkjYpRfGcZL8AEKv7nud1uMmofU3vh0p5ZAg0TXpycjLWCtDFRQOTKFiH40OJS7EPSvSGYUAqlYqZVBiGcQVjPBZVeaxlmM1mYWJiAnzfh9HRUdi+fTtks9m4sCkNd0bmDtBmDHRuA8/z4OLFi5DP52FycnLDYKEwDFUQBEpKaW7ZsiWVyWTCmZmZGmNMReZACJF7UCmlhBBaqXZWkWVZ/VyDN5QJ3FAG0Ef1pzP2YMCPBQBmq9VKm6Zp/O3f/u2bn3jiiQ/6vp+tVqvjSqmBxzpoXD8SDSV6SvzdGACed6MIH1svtb+XWUClPc7gQ/tJhtnm83kIgiBG3JMTgGJfeE9I9GgiYZ+4DwNuANqYgud5kMlkYvs26Q2g51MvBjZMp8Vz0+l0bI5g3D/VIhAYnZycjCsGYzq3aZrxM6EBRQBx0k4HE8R+XdeF8+fPw/j4OIyNjfWy1fEemGEYRqPRcFZWVhqtVsvnnAeO47iO4wSc845iIpE5oDBzkNYUjI5Bl+INbVddB/8aGkssV6T5aq0lAMh6vZ7KZDLiqaeeGv/BD37wQd/3s41Go+T7vjnIhbTWkMvlYrfWRseixEPbEivh9CL+XtI/uf5qWzfiT/7vdj8oFZPET4FCPGZlZSWuTkRVfWpS0Ai7JBOhdrrWGsrlcnwN3/fBsqzYZZq8j6TajtoITp9GvRK47vs+NBqNjsQm6g5EbwhqJaOjo1AsFqFQKMTA5djYWFxFGMOk0VSh2Zv4DQAA1Go1+M53vgOzs7N9saTIHGHbt2/fcuDAgV2WZWU9z7O11hnOeRoA0gBgA4DFOTeVUgbn3OCcS9/3hVJKlEolOr8ldPm97u2GaQA9pH831d9kjJlKqdTS0lKWc576y7/8y985e/bsW4IgsB3HKcKAoB/OyDPIscj5acAMxrVfTUhvcv3VtkGlPu6jx+A6SiqKyNN+0E1IowRpFiCaAbifqv9Ufab2PrrWaP4BRfkp2o5Ej8FJWPIbx43eh+S06el0GhzHgXK53OFGxL7Hx8eBsXbVZtM042IiON8BenUw8xDdg3iPdKHMsFarweLiIuzduzcGTXsxYqWUHhoayt511127h4eH5TPPPDPtOE4gpYxBQa11XFOQR3kD0A4Q0hEDpanDN1QLuCEMoAvw12223g6f/6VLl3JDQ0PGF77whXseeeSR3/c8L+t5Xk4NkNevdTurr1gsDjQ+lD6+73dU6bmZUh9bL9U+SezUlu+GDWBf2LrF1yu1Xm+fpuziscgAqM8fr0mj9qjqjscjESFzQdcbMg5kENg31v7DMeIsygjsocTH/h3HiccL0J46DD0+qO5r3Z4/wfM8KJVKoFR7FiSU9FjghDI6CnjSZ7u0tATVahX279/fYcZ0eX9MKaU9z/OllMbdd989XKlUyhcuXKiZpqm11iFbdxF2mAKMMUwYUsQUiLse6AO6ynYjTYAk8JdU/UWk+hvVajXlOE7q9OnTxW9/+9sfbDabw0EQpIIg2FD11xESnc/n+4I02DCyD1V/6ua72So/Xe+m7tNjALqX/EKJnNyGHzkAxBIW3WOYuKO1hnw+H+MCCORRQkVmgao3xhfgOsB6TEIYlQnHBB68NvaHNQGQmClzowyJplmrKBcDCTAMw7hwK2qBWHeRejaq1SqkUinYuXMnbN++HfL5fIfGgQ3vBYOmANarDx87dgwef/zxvqZYdI+Mt1+OqNfrbGpqauINb3jDZBiGNmOsrymgtWa5XI63HzWjpjPADWAC110D6AP8Jd1+FmPM1FpbMzMzhaGhIeNv/uZv3nPkyJEPaK257/tpGOCGEfEf1NeP0X34kdxsex8b/fAHAf2o2o8tGZHXzZTAdSRQVK8B1gE61IYwVoCeQ5F/zKdHAqKuPsw7QAmO94hSF/ugwUm4PULF43oGSOgYD+A4TszEpZQwNjYGlmWBYRgxI8DzMJAL6xSgZ2FoaAi01lCtVmPGkmRAeO/02czPz8PQ0FBfz4DWGkzTFLlcLhPhLbUnn3xyFgCCCP0PGGNhZArEcwxggFAXQPCGtevOALq4/bqm+epo7r75+fmsUsr+/ve/v+s//uM//th13bxSyhxE9Qdop/VuhPijtMByXVQLuBrivxGEj60f4Je04elC7dVu51OknV4L1XEETOlHj/eJ/VMTAK+B7j3cPzo6GmdYIvFls9k4dBfHgFGH+HzpOmUeWAMQzTPOOZRKJVhdXY2LaziOA1u3boVsNgtCiBj/QW8OZgbSYqbYp+d5MDQ0FB9DAdKk2QWwbhqFYQizs7MwMTHRN404uh+2bdu2Qj6fzymlGufPn19tNBpuFAEYzzGAmIDWbc+gEEInwoQ7PpVr+Lx6tuvKAPoAfx3gX0T8puM4qYWFhXytVst+9rOf/T+XLl26FwBYEASpAa4FmUxmINAPj8dsPjq77a1A/ACdfvtu0ju5P2nnb+QipCo4nosEjwE8qGoj8QFABx5A/eZILFprKJVKkMlkoNlsxkg9RgtSPz8SH0pbgHVbH585xReQSSMgiHhCvV6HpaWlOO0ZpyJHAk2lUjA+Pg6tVitm+DQ9GLVFzAosFouxSYjPhWotFPQzDAOazSYsLS3BnXfe2aGlJBtjDFqtVqi1Zrt27Zrwfb9SLpcbjuNgiXHEAZTWOhTRTENwJSB4wz6+G4EBdNMAOhgBY0wCgLG0tJQuFAriq1/96hvOnTv3FsaYuhq7f5ACnvgisVYftXdvFeKn95C08/GXgk7J4+kxyXMo4IeNmgM46QfGPwBAB7iHzwlBsTAMY588JWqc6wCrI6Ep0W28qJUopSCXy3XMDIT76NRkmMKMCL5pmjA8PBynMWOfOJ2a4zjxFO0AEHsTGGMxHoAaA5YLx5BjZA7IKADWs0LpeC5cuABPPvnkFUFTtEXfqbBtO7WyslIrFosjb3zjG3eapplljKUgmsQWIk8YABhCCBkEgfB9X+RyOcE5Z5FgvSFYwHXTALpIfyR4DPyh03ablUol7Xle+sUXX9zyL//yL39QqVSmtNZcKbXh3Fto929Uxw8/aJxgE9XJfoR/M4g/qbp3U9e7/Xbro5sKi8SL1YBs2+4IasHwXyqpsWgGur2QAGzbhmw2GwN8nPM4wg4ZDRIVAMSaAD57NDFwjFQyU/s/aZ4BtBkTMvJ0Oh1HeuI04bSoCSYN0WKhAG1mgMwKiT6TyUAQBLC8vNzhccAZjikmgvcopYS5uTkolUqwbdu2vpGChmGIkZGRUqvVav7oRz86ffny5Vr0XHGyUQXRhKNUCxBCKLE+6/AN+RCvGwPoYftfMY8fY8xSSlkLCwvZ4eFh+Vd/9VcfOHXq1NsZY6j69+VuiPRuVNGHEnSj0YjjwTey+/Fc+nsjWy+Vne6jBN+P8Gn2HUpF2gci8NQmp4wC04Tx2TDGYmaBxIs2M87Yg/2gLY/n06QkLMMFAB1Tg+E+tPHDMIxdf9g/MgmqllPQDrUVZEZI+Ojrx2AkxAIwpBhDvxlrJ1INDw+DbdvQbDah2WzG48drIYOizzYIArh8+TLs2bMndj32YgJCCDY8PFzat29fiTHWPHXq1ApjTHHOQ2hPOqpYBAzy9VmHMQlKdfkWr4sWcF0YQB/pnwz3NQHArFQqdqlUkl/60pcOfPe73/193/ezQRCk1AbhvviiB/H348fium7sNtrI3YfXoL83svUC7pLbAdZxgOT+5Lm9sARE8CmDwAU/XJSgSPzoJVFRQk2xWAQpJTSbTchmswAAHV4B+txQYtJtCPDR541SljEW4zk4JmQojLEYqMP7pq5JHC8CcogrlMvlDjclZXzIZOgYMZKQpoJTrwwNFcZtmDh255139n3XSindarU8wzBMKaUKgqCxtrbW8H3f5+0w4XjWYc65Uu00ASWl7KUFXJcP9HpiAN1CfikTEAAggyAwbNuWjuNY//Vf//XeZrM5opTiYRhuqPozxmLAql9Dro3TcVEA61ZQ+5OtG+Ent+O4+h2TxAC6mQ3dGAzucxwnRs+pKoyhvQiUjYyMxNWFUDugDIqaHojI40xJtVrtCs8F2v4YPpyMAsR9yIxQk0NXLrXRkRFUKpUY7MWGY8Z7wz6RMbiuC9VqFTKZTDypCMVeKEPC/0IIePHFF+HkyZMxUNnjHbNCoZDWWsPFixdbmUymoLVOMcZsrTXiAQZjzNBaS8MwhNZaBEHAU6lUNyzg1tAABrX9IUr4cRwnZds2/8hHPnL/oUOHflNrLV3XzcEGzEjrdpz/IKo/DfPdqJgHPY/+3ui2keTvR7DdzAE8Hj9K3EfnBOjGSGi4MP6nNi8SFtrLAAD5fB6azSZUKpVYhcZ+klmFUkpoNBoxgk9xGDyW8/VZg9BE0FrHgG0yRZjeCzIfOpUYenpoqLDv+3FyEV6H1kbQkVfJ8zxYXFzs2I/XQPMETSl8Xp7nwdLSEuzbt69vqHCk5WTGxsaKFy5cmD9+/PhSGIa+EAKxgJAxFkLkGQjDUGmtdQ8tgMF10AJeNQMY1PYHAMv3fSuVSsmnnnpq2xe/+MU/aLVao77vp4MgsPpdA4GeQqGw4XhQQnieF8/Wk5T82Cf+vtYSH2Aw27+XWo/r9Jd+kPR4yhiS0gw/fBryi8dhH5hWOzw8DIy1K/Ngnj2tl5DUMgDWNQDsmzIBRrABBP6w5h+19XGslElRUy6pdeB56IpMmgfIWNBdiHkgCCJikFAYhrC6uhq7GLEf1CzpZCZSSiiXy8A5hz179gzy7vmuXbu2TU1NGU8//fSMaZpKt+MCYiagtQ6llEoppRljKgqAwrwBgPWMwVfVXhUDGMD2j3P9lVIWY8zinFt/8Rd/8dsXLly4VyllNJvN0kbX4ZzH9me/Rj9KLP+MH08vJtBNC7jRrR+x95P2Sd8/7Y8i5b2YRJL5obRnbN3lhQUzUIvCCLtms9mBqOM5VCIm+0ZtDBkBhtYmtQ60x5NzCdi2HUthJDzcRzMTcQx4LxjdmAQikYAxYxQDoRzHASFEHP9AGQHWH6ABVdTcwH6llLC6ugpTU1NQKpX6FhFxXdev1WrNU6dOzebzeWi1Wq16ve5EmkCAWgAAKAQDpJSKc94NC3hVTOB6YABJu6QrMwiCwBBCsH/8x388cO7cuXs556rZbA5t1DmqZhuF+uLHprWO48D7qf7Jvm6mFoDrdHuyddNe6HqSCST77+Y6TKa+AkAc2MI5h1wu10GsWusYgEV3HA2XxUYDhhCdR4bRTZrT6ks4NgQeEdWnarjneeB5XkzkyCiQcaE/H5kFMo5GowG+78cxDxgrgKYBXhsZlWmaMDIyAul0OvZQ4DnIBHBsAO3U4WeeeWbD4iH5fD49MTGxZf/+/Tur1Sovl8tcSpnSWmNJPBOxANH2C/IwDHk0F2ESA3hVH+41awBdpD9dOqb1Ctoz+Zqzs7OFf/qnf3r/6urq9kajMdxqtQr9HhSCLoMk+tBADRqMcqsg/tg2Uvf7aQHdjsdt+IslrVCNp6o5HoNBMRgaSwnT87z4HPSZY/w9hlw3m824ZiIyAjqzEDZUxaktTl14SUwCx43gH747JEgsZJrL5WLtjpYQR9OEMRYzD9RS0Jan6D5WU8bxNJvNWBPCvhqNRhx2jKnMaLpQhovMa3FxEUqlEkxNTfXLFdCWZYnR0dHRVCoVLC0trczNzdWklLEZAOtxAWEUF6AipqavZ3Tgq9UAukn+KyL/ouAe9oUvfOHetbW1rQDA6vX6lo2IGgBi10y/RqU/1nzvR/B0/WZIfmxJQk7uSxIuLsn7oFoAlb7J8zF4B9V69KNTDwnAur3uOA5ks1lotVpxQA/WT2CMxZIYo+swT59iF5hVh8wFCZQGAOF94HyAqNZT7QNjD+r1OlQqFahWq7EkR28A5v/jdOOILaAWgmYFJjFVKpUOwBM9BugBSKVSMDY2FmsI1EuCGAMAdNwzYwwOHjwIq6urHUwi8W6Z1hrW1taqhUJh+B3veMfdpVIpzzlHb4AJkRBVSkkhhAjDUCiluGVZ1zUq8HqaAMlS3wIApO/7hmma8OSTT46dOHFir1LKWltbm1BK9UUxURIMUt0HCZ4mfvST+jeL6Dci+I3OocRPwToK9CWLgWAfSrVz/4eHh2OCQXWfgnhIqPih53K5OHW2Xq9DvV7vmAEZCQgr6tTr9Rh/oSAj1Txobf9uqcU0aQsZFvbheR7U6/WOwCa8Pr57BDOxr7m5uRhsZIzFuAKd5AWgrfKjtoFmg2EYcMcdd8Du3bs78iXofnQNIhawsLAAx48f7xsmrJSCYrGYGxkZGTp79mzV8zwznU5n0AyAdtCcobU2OOeSMSZ83+eWZbGES/BVgYHXZAL0Uf+7Jv0wxqx/+Id/uG9paWlqaWlpamVlZVf0wfccOGMMCoVCrJL1alStxHBfqvpH473pdv/VgHu9VP7kuUnUHQmpF9NAiVWr1cDzvDikl36oqD3kcrkYuEOJWavV4g+f+voRGKPAH74HfBdIsLTeIIJu2BeeZxhGLMXpDD70nqhkB+is+0eZiRACqtVqbC4ArBRBhCUAACAASURBVL93dOtRBoDETOcfcF039n7QsmHUS5HUUuv1Ouzfv79vspAQgmez2UyxWDRqtVr5zJkzKwDgk+jAGBBkUTHRyCUIERjY8Yl1//L6t1ejAWwE/skwDCXnnD/44IOTrVYrBwByaWlpT/TAN5T+G5X0Tqr+/YA/eg79vdntak0AKtWTx9PjqGoN0CZUqsLmcrmObDs6oSdWC0bmgBoB9pPMG+iloSCRYHAPQJsJYf0GmkBEjwFYj/tH7wP2R49RSsUZoTTuADUcLDYyMjLSUQEZtZHk9yWE6CgXhs8jk8lANJ9fh7ZJcSff92PmZhgGzM7OwqFDh/qaryqqHDQxMbHtTW960979+/ePWZaVploAtAWpYIwJrTWPAoOYEIJFY39tTQAi/enFkyCgUEoJKaVYW1tLnzlzZlQIwaenp++Mavv3VVsYY5DJZAaK+KPqZz91/2aq/rR1k+7J/d1MBUr4dKFMgrrEujEERMkR9KPFOPAclIAotcMwhHK53BHBh0EyeC5upyYJRckxUAglJ6r3QRBAvV6PcRuKG6D/nY4tea+oIeDxOHsQXgfxCbTxM5lMbDZgpSCUzhQAxWxH3GYYBmzbtg0mJychctt1eBco9kLHfOTIEVhcXLwiXJq2bDZrtlotd3l52du6deuwECKlte7AAbTWBkSCNQgCobXmmUyGAQCLaOSamcD11ABi6a+1FpxzAQDyJz/5yZZisaguX748MT8/f/dGqv/VSH9cMMw0uf1WUP0Betv3tPVS52lLajJ4DrWVcRud2Qc/ekqwAOtzAOI+JDQMdAGAuPoOjgsJi6rA9DoA0KHyonTEX0rwiFfQgB28b0TckVnRykI0hRnTf6lJIYSIE8ZopiBOR46oPsB6TQR8nqhp0CnS0K2czWZhaGgIcrlcPC5q6mAOATLPcrkMR48e7YfvsCAIYNu2baO//du//RtKKWN5eZkJISwWpQdDOzxYaq0FdQmapskAgEVYGsBrbAIkCZ9iAbEJsLCwYA8PD+tqtZp98cUX366U4jCA3xL9uv0aSv9kaa+NiP5mAoB0vRcegL/dbPlkf3ifaLvix4eSjRI+nRQUCTxJtMhMc7kc2LbdkSZMnyv1GlCXXnI/LkiomJFJpT29b1S70+l0B+NAhJ4yCNQU6vU6eJ4XBymlUilIpVJQLBahVCp1eBbQS4DfF2IcCEriPdOUcYC2BgMAsTmE06PheJRar3hMg9EAAE6ePAm1Wq2nRwAA8Ll773rXu974h3/4h/c4jiMj7IxqAZJzLhhjIgxDLqXkUkpKh9cEBl4VA+ii/vdy/0kAEGtra1apVFI/+9nP3litVid5O+up7yDRDsMH2K3hPqVUrI5F49uQEdyM1g+0A+ge5NPN/qf9IfEk748W76TrKM3Qjk1+kCjNEPBbWFiITStExpEpAawHv6ANTN8XzZunKnLS3MDrI5pOnwFKblTf8RclOU5FprWOXYA0b6BarcaEx9h6SrHWOs4RoVoSMgp0j9Lxo7ZgmiZMTk7GMyvjvdJ3SN+fEAIWFhbg5Zdf7lu7IrpfS2stZmdn3VwulxFCWEqpGAdgUWAQ55yHYciVUty2bUa+o2vSBF6NBoC/SenPGWPC8zxj//797qOPPrr92LFj7xBCeKxdDrlnwxffT/rTjwRfOv7vRfA3U/pvJMWTUh8nq6CqeRL8w+2YMYfgJ0p6PIa6uRhrx/FjfX1EuZHwKU7QaDRi5oEfOl6bSnbEELCfpAaQLAKS1BywT1S9EdnHdVqhGO1oBDExQQkZAJoXqCkg4eOxABDPgYiSH8OPqfmI16f5DrSWBADA1NQUTE1NxePWet0FjdfHZ845h+eeew6q1WpfLKBYLGZ27do1uW/fvq2e5xlBEKAHzYB2FS2hCRgYhiEzTZMDALoEsV3VR34tDKBf8A+HCKgwTZPNzc1lv/e9772dc85Y243RN6KHcx5nnPVq+GAR/MFt/Zab2XAMySi5JGqOx2LaLcCVZb/p9FtUwlP/NSVwKrFRelJ1GqUcXosxFjNVqmojw6H3g9dKMjUkbgzdxW14PSRIGqyF75L66bF/27bjZ2UYRly9B9VuBPfQxYkhvvQ5otpPsxpxPgRkUBi7gEw0nU5DNpvtKBOG5yOTxkAjSvDUpEKXZrlchhMnTvT0CDDGwPM8JaU03/nOd953//3375RSpjjnpm4DgIYmQCBjjEdmAEun07SEOMBroAH0df9praVu1/vn//zP//y65eXlnVJKb6N8f+S+G8X848NGJHlQYr+Z0r/X9ZMqPrrq8EOiCHXyOMZY7JPGmHitdYeqSQmcfphUq6B9UumOdnFy/HgtyoywUZUe/yMTSUYdUvAMmQWafxj8hZoAMhJkAGNjYzA+Pg5hGEI2m4VisRi7Fqk2BAAdYcQIllKGzDmPa0zUajVoNBoAAHEmKS06ggylWCzGzw/fEV2oBwXv89SpU/G7TbZoHCydTqfm5+dXl5aW1K5du4allDEDgPXYGsk5F2EYcq015gdAxACumgkMHAike0/zTWv9m0EQmIZhyOeee27LN7/5zXeEYWivrKxMua7b1/3HOYdCodDXb4ofGIJK+AI2kv43SwvoB/YlbXyATrufflhJSU4/NkSxMeYdJWqS+VCmgIky+AxpiW+KilPpliQaZBi07yROQRfqgaBmCRIMAMTEn0ql4pp9NEoRGQfVYjC4B80HXEdvBRI9agvoMUiaW3SSFNRSUFPBX3Q7KqVgy5YtMdIPsB5khVoOfSZoVu3atStONe5iDjLDMHgqlUoppZrHjh27tLi4WDMMIwAAP1owOEgppULOueKc61arpXXnRz7wB3+1GkA3JhCvRxyJB0Fg/vSnP52ybTuo1WojrVZrKAFUdDRUfTdy/aHK1ov4b4fWDw8A6GRW1GamRIhEickxFM0H6JzdFxtNhEFpiKAXEgc+06S20E1joEg3HT/AOpNKugmxT8bWw4Kp/e04TuxKw0lCASCOO8DIUIxJwEg+AIgnOkXio+5PyhxQy6TmCEYdUsZEA6Tw/pDphGEY1w3csWNHnJyE18b3hmOI6vrB2bNn+8a2+L6vstls9sCBA7vf+MY3br/zzjtHfN+XiAMAKbaDZoBhGIx4A66aCK4nBiDCMBQAwF566aXc7OzsFs45X1tbmwjDsO/gGGPxVM79GgI+SAxJCXSrSX/87bVQyZ787dUHVS+RSGg2Gjbq9weAjoQctL+llJDJZGLmgOmuNKwXr49IeXJ78jfJLKjng5oGuA/X8d22Wq04dBddltg/uuCKxWLHdRA7Sk4uSkOWW61WrF1goA8CnOhCxWg+/E9LyaMJgBoEY+0ahjjXIPWw0CKoGFkohIATJ07EeQzdmpSSA4C+cOHCCmPMYusgIF2kjuJsIm8AS6fTDACAc37V7sCBTACi/iOxM0gU/tBam0IIo1qtZl566aURADAeffTR9ywtLe3hnPccFL5oBGX6NQSL0EalvtpbTQNISvpuaj7dTvd1MxtwP92OUgvtfir5qURDhkElfLPZBM7bs+1UKpWOmHXq1sP+UEugLtgkJpHUYigDSpo2KN2p1KXeBcdxYlDQcZw4MhTDfVEdB2gTMM1pQK0A5xBA6Tw0NBTfe71ej58X3js1gZCZ0LoCeCzVTBCLocdQ0wmfjRDtCU3Gxsb6lhHnnLMdO3ZM+L7feOaZZ87WarWmlDLQWnsQmQAQ5QjoqIColFKRqcTiT2uQ7/RqNIBuMQDdPAByfHw8PHr06M6FhYX9EfH3baji9Wuo8gKsZ2p1k/a3CiNISvduKn83c4ASD1Xj6b3SSDtaxitZAQkArtAMMLINPQWVSiUOqsHj0R6mEhqZLhI8Eg/VNJJqPmUISDR0P71falqgeVGr1eJr4vjwOrQAJ3VjYjNNE0qlUkclZJr7QJkJ/ZZQglPTCL83jJNAJqGUglKpBCMjIx1eFvodIpiIwVqnT5/uWzAk0kxcKWXqgx/84K8Ui8VMEARoBsSRtowxrtvuQC6E4EKIJAA4ECEMNP8eab08AJwxxn3fl6VSKazVauGRI0d+LQiCNGtPe9SXuvGD69eo/YXqLLYk4ffTCvrZYBu1fsFJ3a6Dkik5NkrcFFSj46b7AdYlMSLmlHlQUImuowodBOszAdMJMbAgBhI0lcCUQJPjpyYMHT/9+JG4KKBIr9ENvKVaEhIj9XBQj4ZSKiZGlPAUKEylUnHtAmRSGAbMGIvnE8TzcSZhdG3KqPw5FkJRqj0rcblcjnMKMKHJdd0OoBMZJt4PjVW5dOkSrK6uQqlU6soIIo1YmqZpzs/PNxuNBiNmgIS2G1AopQTnnKt2KDDLZrOsUqkw1p5jcPDvdOAj262n/19rLVS7rr/+xCc+8euVSmVrJpNZUn1q/aNqOUjcP/5S4u9F+MmWlFDX2q6mHyTMbnY+HSfdRlXqbvdD91GJStVsVH/RXqcqOhIh2tB0ezqdjhlGksnQ61OtBLU2ijNQ6UrPT3oAqKaDDbdhxR4kRlS18Zo4PmQSSHDI/HA7MgLEFzAbEOMLkLEgoCeEgNHRUcjlcrHkxnEhPkJLnGHMxc6dO6FYLHZUWMLro6aCuMDq6irMzs72/IaUUtq2bbl79+4d27ZtG52YmCgIIQzddq3jgvEAQinFtNZxTkD0nKhLsG/b8EvWne4/2nkHEwjDUFiWpR955JFt8/PzE+l0utpqtfqW8dV648g/gHWVkc7Z3kv1p78bESsl6F7LRuf22kfVXko0vUwB+j+5n14HGQuG6WIuBE1HpbYsPltE0WlATD6fj6UytWO7jY0SPR0PSmO8JmV4dDsAxJIyyURQcuN2tKtpGjBKXEqEtFw4xUDQXMFsQHTzoUaSyWQgm83G5hB+K3g9IUQ8bTjVomjAEZoF+A601nHJepT4lIlS3OLcuXM9hRVjjIVhCGtra9XJycnxd73rXfsiEyA2A1D95+0AOx4EAUskB10/BpAcH/mNF93OVOIAYD722GO7giCwlFLc9/2+YX2c85hD92r4QeAHj9s2UvO7EeegxH015yT3dZOY3dbptm54ABI+JeAkI6ESEOveeZ4Xo9yoPqfT6Y6JNrBWHn7g+HxRalGgLYlP4PtIahfUHMDxUgJI7uv2nuh7RXUdVXYcE33umKcPAB0SHZ8PxgKgBuD7PmzZsgWGh4fj61E8wbIsmJ+fh+Xl5ZghAEBHeDI+K2QMmJmIphTWTqBjxgXv9+LFi+A4Tt9vcGRkZMi27dQTTzxxudlscs65EWnTcaAdRK53pRQ3DIMRHOC6xwFQjtLh+4f/n7c3D5Lrqu7HP2/pvae7Z+tZ5ZEsW8K2JO8LoMgGhWBjCHYgBU4BgQQIVCUkKfILVSwh+YNUUjGprBRloJJKJS4osFls46/BLAZLXgCBY1myFkuylhnN1vve/d79/dH9uX3em+6ekWxyq6Zmpvst9913zzmf8znnntsmJUzDMIzHH398dGJiopZKpYorKytbOy+jZ2eosQflR8vGF+m/Bn/3gpRs/om2EcvfT/DXs/yc+DIGDXiFXn4nIbIUKn5G4eax8h5SSDmWzKegBY3FYkgkErogBpUuY+7y3jIjT/r1vL90GSTMl4qKiofvxP+OqUBkNqEUEJmcQ2QgIz6MYtCac2EQ0M32878vFothqJOrCAuFAsLhMGKxmP6uUqmgUChopMSo09DQkL4XFVosFoNhGBgZGcG2bdvWKHYqHomEbNvG6uoqzpw503eBkFIK0Wg0NDw8nHrnO995/a5du8aq1appWZZMB7Zc1zXJAyiljHg8bsCbFrxuu1gEIMOBWhEMDQ2pYDCoXnjhhWs3UvijVzrpmhsK6C8tTS8E4Ierg4T3QoV/vf/9feDffpLMn1fPa/mtu7S+FARJDvJ8HssIgOu6unbf8PAwDMPQi2roPvmvK39T+OQzyn7zh+iCk10qJbkKUSpA+Xx+ZCCVIeF+MpnE0NCQdgPkcttUKoXx8XHNEfhdPyo8/5Lm+fl5ZDIZLZiMDABdXiWbzWo+gcSj3CC12WzqoqRUPqVSSStbmZtBlCa5i1qthmPHjnnGRLbOMc16vd6KRCIRy7JCENvrGYah1wQYhqEVAN31jgLYUD7AwCiA6r/81+P/G4Zh1ut1++abb84++OCD13Zi/65SaqCCWa/eH9Bdbmp1Vrf1I/1M01zzv//vXp/5/1+P6fdbGPm/H8r7lZuc5BRcOTklAuC5FGper9exrFpjGO04dblcxtjYGMLhMIrFIpLJpFa2hLB+hp5jwEnqdhbbsK/SoktFSyGRVl2Oo4xKSG5Augdy7NgPjgHniCy3xfnAhUvkBBh14XNQALlox3VdvdKRSILEMsePym51dVUrn2Kx6CmiymcqFoua8JNkHwBPyFSOg2m2+Yjjx4/r+gR+JdBxRwKbN2+ePXTo0NFDhw6VAoEAiUBGABgONIx2VqDBfQPc9uBLJdAXYg80v3/d3vYL6Fp7T8EPdLKTWq1WKBgMWs8+++zEP/3TP7232WzGXde1HMfpK+GmaepQzKBGv5QQzo8AgLXEWT/hlxDWb7n4v9+yy5fYb7L6hdl/vDyHP35Y7Rd+KjR/dIAwkoJHZcB1FLSI3PkG8IYVeR2Z8istL9DdHYj95HNSuHtxAHKVHBWCFHR+JsdXoiO5AtIwDL0HAe/ZaDQwMzOjw3MAPIuW5H3ZRyoPiWyy2ax+7wyPUrFwnsXjcX0uFQSvy+pIltVerlwqlQB406+5AQk/D4VCHhRA5TtobYBpmiiVSpVgMBjYtm1b5Be/+MUpAA3DMBoAGgCaSqmWaZotp72VuBsKhZxKpSK3EldYhw/YSB5AL+JP/++6LiuT2F/72teujMfj5Vwu5zYajVi/C27U/5fZaP7wH3/7YbEUTP/vXp/J3/57S1Tgh8tAlwGXn/shLye63+eXENivKCSakUImz+H9ASCZTMKy2tVrZf09+rVSwPzoRD4Xw1Z+pSb7Jp/Nz70wXMfxofLwpyvLPvifRaIfKdThcBj5fF67A35UAUDDfZkbwArDzAfgSkNmGwLQufqynzyXVlqGJHl9VlfmbkmGYehwqgylkqiVHIXjOFhaWsLc3NyauQfofICAZVnW2bNnC9Vq1YhEIp5QYAf+65oArusaRndA1rX+wMYTgfxKQCMChiOOHz8ezWQyyVAoVG80GtHOxO7phyilPJs19BsAoD2ocgsqvxKQ15BWhf/38tk34hLITLpevrJ/MnPcZVFNfu+Hu/I8NikAUsipIOhz06+1bRvJZFK7RWT2JXdA6yaFgRaIvIFEQ81mE8PDw3pjVYk2evEPcowYZmPBDo6RzFfwj5UfKXFs+R5JkjF6Ua1WNbqhD8/7EOrL63FcGeGoVCoYHh7WERPHcXToL51OY2lpCaVSCWNjY56aCUoplEoljaqoQJgzcPbsWUxMTMA0TRw+fNgTZeG4WZalkQTRwfLysmd8ZOsQgYGxsbHhZDIZu+yyy4bPnTtXQWcxkGon15mGYZiWZZkUfpEQtKGMoAvJBFyjBJRShmVZRrlcDjz//POp173udS8fOHDgtlKpNGIOyP/nhJYTqt9x5AAk5O3HA8jmF/h+yoD/+5vkAmjl5d/yHFp4+pIAdNKJdHFkGEuGleRnUgHwXAowAJ2QQmvE7/xhMgA6G066FdJfJzQlhKalq9fruhCH3DxEvhP/ODGZi33gOXwWhhxlkY5ezw60EQ37RTjO9GUZh6cg8zNui1apVHSBUML8crms8x44xsz8c10XuVwO+Xxeh0wlxzA+Po4zZ87ANE0dao3FYnBdF6lUCufOndNFRRiCXV5e9jw7axVId2hhYUEr817zuNlsqkwmU9i+ffulhUJh+dixY+disZhOBUY3FChJQCmn66au9lUAAwhA+b8mAV/zmtdUv/CFL8ycP3/+Nb0ESjYSIesJv+u6evVVp09rjqFC8PuUF/LTr/mFvtffEsZSMPnC+Z0/7s0+S+JI9oXuET93XddTr56w3jRNPdH5Wb1e95Bn0m+noqA7JS01BdR1XW3pTLObbCNzMGT+vMxT8Ge+0fJJxc0x4b3kO5OKggormUyiXC7rBCDLsnR6LjMPmUtSrVZh27bHFVldXdXQnPBfpmcrpTA6OqrDclSq3BC0UqlgZWUF5XIZtVpN76zESMDJkyfhui4ymYxGP0Sscm5Q2cloVj6fR7lcxvDwcM+0YNM0jenp6fFsNrv6+OOPn7Pb2tVGt/K2RuB0AYQSkPU3+wrahXAA8n8db2y1WmY0GlXDw8POwYMHXwPAMk2z5fYp/yUn3noIRW4nLQeO1+nl7/thPX9kIgb/7nUOmxRy/vYLvxRmNhkak/0A1kJTCjTjySyLJdl2CgMFzV/0gr633/+m4FEByEo+9JVplaTf6p+EFDQ55nJSS3RCJcPJL1f8ETnI9yYXMslluKyfl0wmUSwWdVkuqbCkwDDDkFmlzHNg/wuFAoaGhjzjQnRDIeXSaMNos/vDw8M4evSoVipAG9UtLS15cgGq1SoajQaKxSImJydhWRZWVla0guO9OIZyPKrVKjKZjE5M8rfOeNrRaDR2zz33XPPAAw/8dGVlpWTbtnYDlFKG2Z5ghuM4RjQaRalUgtstFw68QgXg6ZP8UUqZqh3qU1/84hdfk8vlJlOp1Lnl5eXLBl1kIwpA+k+cOL0iAL2a38LLJBO/MujnBvQS/F5ugLRifDb/JO/l/0vEkkwm9dpzGf6TxJMkw1gxt16va3abMJ7xflpf9ocWFICGvhQGLnE1TVNPXPIHSinE43FdcHMQ8ScJNObz81mA7oIuv+snc/sBaGFPpVI6xVleh4k7TNRhAREKP8enUqlonoRLzmUo2bIsDwEItI1OLpfzpCJLhMn+lstlTxEbWn4AmJiYwPnz55HP5/WYSKRFRVUqlZDJZPS5fuVrGAYqlUrNcRxlWRYtv4zEEQUY/h9sgAAE1lcAPVN/+eO2UxDVgQMHUq7r2lu2bDm2f//+qxzHMfsRgBz4QY1QkIMnkzIG+fySue6lBPwZZxejAPzIgMLu/6HfrQeyxzHSWhPO+/eS43PRmsvrEnJLBeHP0pOfUcB5z14hUF5PjgMnOoVKKmI/N0OITaXEMQLgGXu5xFYqSJKJ8XhcC4pUbBxL8gJUQPyJRCIYHx+H67oa6QwNDenrcn9DujV8LibwsC4gFRnTeulicUwajYZeGRgKhfQCIstqryMoFAp6bGQtBql8Wq0WFhYWeiKvzvtVqVQqatv27E9/+tOfr6ystDpugIUOEa/aWbimbds6ISgSiaBSqaiN8IAXEgVY4/8b7V6b2Ww2ZJomVldXx2u1WrLzMAMzAAferDNpuSsNsNb/p0aVMFwKTS/B75WX3Y8L2KgCoODxR7oXfoUg/5eWlBaa/rx8Rgm76cO7rqtz3wntKXTyvn4Bl761XO8ux53nySIjbGTjaenk6jsKOyML0teWhKokP5XqljXjc9KfZ8QjmUx6+AZJaMrxofV3HIcQWCePUfjJD/hXG9JdKZfLKBaL+h0ydEgrT5eH57RaLeTzeYyOjuq9FulO5fN5Hanwo1lWFrLt9k7CvE8vjsswDKyurua2bNkydccdd1z6ve997znVjgDodGB0ZFEpZRiGYYRCIaNSqRjGBjTARjkAJf7WP6ZpGvV63d67d+/ysWPHZk+dOrWr86ADIwDrIQA26Tf5n0MKz4VY/15KoFKpeO5lmiaGh4d7Cn8vBCBJOwnJ/fCffQTgyWCTZJr8W/aHE4gprjKRSMbL6TpIFMDxkbn3tPby/Ewmo2Pttm3rxBs2x3Fw8OBB7Q4AwM6dO9ew89LaSQHguLGvFFL2m0LMPHzZbxl5qVQq2qXhtaLRqFaIkUgExWIRiURCIw26AfyeCoCWnpuU8n1ReImGpILzu13lchmLi4uaQ6jX6xgaGvKsfgTaJDFzAbgxCRUFowoSCdBIxGKxqGVZ1rlz5yq1Wg3RaFRbe/r/Av7LuflryQPgb8N1XaMTew09+uij15mm6UYikWKtVhvqdyE/NO7XGLuVFrEXAdjr+v0gPy2A//OXXnoJS0tL+hpTU1OYmJgY6P/zb8MwMDY2hmKxCKANc0mcSRguhZ+TX65zl88kj+1FUDLZh9/JkKr0VamA/G6PhP+SXPvpT3+KZ599Vt/nL/7iLzxbiLuui/379+tMPADYs2ePfh7ei8/DEK50EWT6MS2i3wWgMuHyX441rSTdIfIbJAV5j1wup48JhUI6ksTnlfNI7nsoV/dR8QDQiIfjzfP4GQuZWpaFoaEhxONxnDx5Eh1h1f3nfJb8TqPRwOrqqnZBZDMMw3AcR01MTCRmZmbGQqFQMJ1OR/L5fNFspwKb9Pf5W0QC2AYmBA1SABL2A2tdAMN1XcM0TTz22GPj5XJ5yDTNVqvV6pv+y5ewEQKQ2lVmAPrJI9n6Wf9ewi8nvW3bKBQKnmux+iz70k8RKKX0saVSSUN4rhqT1lxaYjY/YcjmzyaUqEnG0TkhadX93IFEIJzMUjEC8IzJ+fPnPX2bmZnRkLnZbKJYLHqEf2RkBJs2bdKEGQk7Qlz2gf2W5KnMjJSuAp/LtttbmMtoAlfrUQFKhbC6uoqDBw9iaWkJhUIBu3fvxjXXXOPhPEzT1NmRgUB7ey9GP/wRE6m4pKsJQAs/XQI+c6FQ0IqS6y/kQqNqtaoRJwCdQZjL5fSz+OeCaZpGoVBoHD9+fGlubm4sl8strqysGOFw2HRd1zTatQG4XbhGAZ3+KYECeiqBjboAa4RfKWXYtm0opawf//jHmy655JL5+fn5cqPRCJnrJAH1s96+B/cQKEAXEvFlSOjPc+T5veC/RAByssqWTCZ1ddxeXAD/p+8OwFPYhHDUX1lHKgA5gXuNi3wmqTglhJbPLll7P/En3QEqC+n/0jU4ffq0vv+2bdsQjjRoXQAAIABJREFUj8c1RA6Hw5ifn/eM07Zt25BIJFCr1TxVcIhuKDxk3qU7IBOXpDsln1nyEHYncQnwKsFAIIAjR47gv//7vz19Y6GUQKC9mQjJPBJ6xWJRb0LKZdNUYnKDUGn1Zf94Lb5j0zQ1URmJRBCJRJDNZj3hQJ5bq9Xguq7eeYjrCXq1Th+M66+/fttjjz02f/DgwUI8Hrc7xtfoRAWYmQulFHzFQS7aBfALsefvDgFolEol86Mf/eiRv/zLv9y2uLh4xXrCvV4GoBxkWn8/adarSYFZz/eXSsBv/QFgeHjYowD6kX/SL+ekDAaDenszqaT8RCD7Kt2hXseLAfcoAPm8/ozDfnwIj5NLefldJpPxjMGWLVs0Q877JBIJvOMd79DnzczM6KQjojUez3EiX8F3Lxd1yWclqSbfpSRU2RfpErhuu3Dot7/97TXvkFWmSbbF43HNu1CpcI8B13U1GVmpVDRRR55F1vTzczSy/3z+ubk5T6oylQmvQdeIjeXEe8mOUkrZtm0HAgG7XC47l156aWJ5eblE9h8dLo7W33Vdo2OMDKddjn9g65es0+9EDxpoNpvm0NCQ++KLL4ZOnTq1NRQKFV3XTag+RUDlS+8nzBwEFmLgAPa6lvSZgf5ugBR8/vAzwjnZuK000DsPgJ9Ln55W3x+WkkQc0IX9chL1Iv14XYlyJLkmM/DkMeyXX0HIcWCfZOGNY8eOefqwZcsW7f9z/K+88kpcccUVnrwMv0vXa0kulQ6TVGhhpWvTsVz6ueXYsd8yekSIzu23Z2dnsWfPHkxMTCAajWqEwcQi7vVn27aG4iycYprtnXu4BwAVBdBdyESBpVKSZcOJBJiuvLy8jGw2i5GRER02leiM74Y5DNlsdg0ByGYYhmGaJlZWVvKNRsMdGhoKnj9/3jBNkzk4/twco/NuJHHfd1XgxSQCoXMjfqaefPLJyUqlkjRNs4k+0J+tF6nlb3KS+5NPdEcM70q6QcI/yBWQPi3Qtv7MGutH/vn7wetT0KrVKvL5PDKZDBqNBsbGxnT5aApdv+gAhQoAVlZW8PLLL+u4ciAQ0PvgbdmyBclkco2gSHgsr8UqNIcPH9YC89rXvhbbt2+HZVlrEMCmTZt0NVw+9/Hjx3X5KwCYnp7WITb60EeOHPHU6x8dHYVhtLfrPnr0KF588UW4rovp6Wns2rVrTcFPv2KhIjl58iSy2az+se12nf99+/YhGAzinnvuQSKR0GsYaGVVJ9RYKpV0SbBkMolUKqXDdplMxoP4iFCk+ynnm5yLjuPojEJJXI+NjeHcuXO6VJi8Ht0lKhyGLXu1znxqTExMjO3evXv7vffee5jsvyQADcOgS674GbprAS6aBOz7t9Pelsj92c9+ljp16tTY5Zdffmjfvn3bO8RETw5go/6/39L6hV++CL9C2ajwUwH4XYCpqak1iTDrWX/ep1gs4vHHH8eZM2d6Pte2bdtw5513YnR01BMh8Pd/cXERDz/8MF588cW+YxQOh/GmN70Jt956q4a70hJL5fjtb38bDz/8sOf8559/Ho8++ig++MEP4u6778bCwoLn++np6TUo6FOf+pRHYd5///3aj3bddtnsv/mbv9Hf33PPPdi7dy+efvppfPnLX17zDE8++STe//73Y3p6WisRiRCVUjhw4AAee+wxvPTSS33HIpVK6aSoVqullQDQDbfSt19cXMTOnTs16Vkul3Us37ZtHeKksEoESrRCay1RGTMRSYTKUCvRAd0Pzh0qAC466lUirOOu2ABw7Nix8/V6XYXD4UC9XvdYfbTBAugKdJKBBqJt4MJKgnmIwM5DWFu2bKlfeeWVSwsLC9O1Wi3RGfiBOQCDOkTLz8Hkeb3O4QuRQu//vx8PQEi5uLjoueb4+LjHVeAPU0xlZVrW1g8Gg1hcXMTXv/71vsIPAEePHsWXvvQlnDt3DpFIBLFYTC9SYaXaEydO4N/+7d8GCj/Q3iD1oYcewje+8Q1NdPEnHo9jaGgIkUgEjzzyyBrhl+3LX/4yjh49iiNHjujPwuGwjgDweQuFgkf4JyYmMDExgXA4rMeTG2Wyzc7O4le/+lVP4QeAl19+GV/96ld1bD4Wi+kxjUajePTRR/GFL3zBI/yTk5O48cYbEYt1y03kcjl9HIVSIjMqacNo598fO3YMZ8+e1TUByAPQhZKulsxZ4HVlWFOuoaBRqVarWFlZ0StCqXwY9gO6xUwA6AIiveZ5BzGYlmWZtm3bY2Nj4Y5C8gh/53DmBiAUCrUFcR2DezGLgQC0haxer5tjY2P10dHRWj6fH7csq+k4jt3vHOnzDWpKKU8SBV8CB50P1SdsMvBHKgBCQ9nGxsZ6IoBejc9y7NgxPPDAA57vLrnkEuzatQutVguHDx/Gyy+/DKBdO+7BBx/EJz/5Sb2ohP1eWFjAV77yFQ8vceutt2Lnzp245JJLsLq6iueffx4//elPdd7B008/jV27duGOO+7Q12H75je/iW9961ueft122224+eabUalU8Oijj+L48eP4r//6L5w8eVIfc/XVV+sS12wrKyue6+zatUvfj2jGf0wgEMB9992HdDqN3bt3Y2ZmBk8//TR+9rOf6WOOHDmCY8eO4YYbbvDMjyeeeMIzphMTE/jYxz6GnTt36qy9w4cP43Of+xyAtkL8n//5H3z2s5/1xP4ZAeB28kCbdJP5DbZte+oAcp4waYfzRXI7VCpsnJvcbCWZTMJxHCwsLGi+gdwDUYV0B2TVIX9rtVpYXFzMbt26dWrnzp3phx9++FwsFmMY3ug8l9Htisdl/vUkArmuawSDQQXA/MY3vnGt67qBWCyWKRQKE4MutB4H4Ne2vc6XE1NerxcCGIQEekUAiACAtSsC/c2y2lV4Hn/8cc/nH/rQh7Bjxw7NCdxxxx148MEH8cQTTwAAFhcX8eyzz+L222/3+OonTpxAPB7X/vi73/1uvOtd7/KQgbt378att96KT3ziE/p+zz33HH7nd37H04dcLoevfvWrns8+97nP4fWvf72ewG9+85vxqU99Cr/85S89x23fvt2TMOO6ridRCgC2bt2q4+XMyJN5BADw+OOPY3x8HJ/4xCcwMTEBwzCwd+9e3Hffffjud7+rj1teXtawnQrgqaee8lzrT/7kT3DDDTcAgPazb7zxRrzuda/D/v37AbQt6erqKkZGRjyJRwDW5EkYhqEtczKZxOrqqg5XcqwjkQjy+bwny1GiCTm3WN6OfAAzNnkvoguOJ997s9nUrsCApi699NLZn//854s//vGP54PBIP1/Nh0ChJefW3dR0MW4AODNDMPAo48+On7NNde8PDs7e7RUKo1t5EKDXABaXFmTbV0/xgf/5WeDkEC5XF5zrZGREU+4jL/5w5AX3YDnnnsO+Xxen3/77bfjuuuu0zvRhsNhJBIJ3HXXXZ77PPjgg3qi8Octb3kLvvjFL+Lv//7v8ad/+qe45557NARnIZBoNIrrr78el1xyib7WM888o+PbPG7//v2e/Ibf+73fw549e/QzBINBjI2N4Q//8A/XjMHWrVs94T3btj05AgAwNzenx4DHnT171nPML3/5S3zmM5/B7Oysx+26+eabPcdVKhWdtccw389//nPPMddff72G2Bz/QCCAa6+91nOcrLIjKwTJNGhpfU3TRDQa1YQqP3NdVyczcQ76oxMSkSYSCYyOjupoEAXbNE3t4gDdlZi8LqNd/YwMAFiWZTSbzWYul6u89rWvnRoaGgo4jqPJvo7CoksA8XtQRA/AhUcBeHHDsiyjQ/ih2WxaCwsLc47jWP0IwI02DlitVtMad5Dw97uG/LsXMWia5hqfdWJiAvF4fM31/C+H0K9YLOKHP/yh/jwYDOL222/XQiPDc1NTU7jhhhv0xK5Wq6jVarryrOzzzp07cc0116zpO9AlUicmJrRQJpNJHfqin/uNb3zD0+d3v/vdmnFnv4AulJeNyoWTVCm1Jkw4Ozur4T/fk+QRAOC9730vZmdnPUiC+f6yTU5OerL7/NaQAkOSTKb++qMXdOFofeXKPwqajFpQaXJpsVySLfcLlEuZmZ1ItCqvS+VSq9WQTqdx/vx5lEolnSFYqVT0luxUHtyyvZ8L0FEUTdM0Tdu2TckBdA6RJcEvSF4uRgHomzSbTeP2229f+N73vrczk8nMbYThX+8YqVnlZJBcAFu/CEC/v/1KwO+zbtq0yXMem8ziArrFPObn5z3++k033YShoSF9fSY9UeAmJrzeUT6fx9TUlIcHkDH+c+fOIZ/P600sWEGGZaXZdu7c6bF2R44c8WTt7d69G1NTU/rZJAxOpVKIRCJ6kxCOg1yh12w2ceDAAU/fp6amdJ8ty0K5XF6jJO644w5PpIPj50deExMTnpWKqVQKe/bswQ9+8AMAbUH81a9+hTe+8Y06OxRou1KPPPKIvk40GsXU1JSOvcscAwou3wt9binURFgAPALey9/nc5NHkMVCuSZgeXlZowjXdZFIJHSRUb8y6bckuDP+jm3b1hVXXLH5Rz/60c8LhUIrEol4fH/jAjcFZbsoBcABCoVCzokTJ1LHjx/fNDMzc+jMmTO7qtVqciOKoF9TqrvNtST7Lrb1cg+A9sD6Ievk5KR+0TxWhvx4HidSNpv1nL9r1y7PRJYZeiSCZGPlGyo9y2rXo3/22Wfx3e9+Fy+88MKGnvHSSy/V13FdF8vLy57vb7vtNk/CkHw/cocgoF1Bh/46re3S0pJHaKenp3UeO5v/ntdeey1GRkZ6Tmo/n5BOpzVqAtrv+wMf+AD279+v+3bfffchm83ixhtvhOu6OHz4MO677z4Pj/ORj3xEL8tttVqe8tx0H6g8GCKT6/3r9Tri8biuISjXNvC90xjIpKRIJKIjMbTyRBRGJyfBdV3ttrBOI8nKQcR4Z16Ytm0Hjh07dnp+fr4yPj4eyuVyivn/fU/eQLtoBdDptGlZlpqZmVk8efLkdY1GI/5KhB/owkQWfNgIB+BvftjMz+R3lUplTQRgfHy8p7KQ16AAmabZcyJLVlz2gcItG/kGoK1YfvzjH3vi6GybNm3Cjh07MDU1hXQ6jdXVVXzpS1/yfC8F2x/aZOlpmSPAPvqV2PXXX69Zah577tw5zzG7du1akyDlV6bXX3993/E7ceKE5/PZ2VmPogTaCuRv//Zv8ed//ucAgJdeegl/93d/t+aaQDvt933vex9uuOEGncRDIpnCRw6i1Wppv5tpwkA3g5GEZjwe10qCzyq5BBJ4oVBIZximUikd9mPYlLkFci2GVAYyUahf66T1tkzTNLdu3Zo8ePDgktEVtIu3jrhIBdARSlUsFs1KpWL9xm/8xqmf/OQnFgBWIbloLcDnYghmo8K/XnTB33pFAEZGRtZcy39dqQD8Mf9EItG3b0qpNck26XRaP9++ffvWCP9HPvIRvP71r8fll1/ugaD333+/57jJyUkNRQGsuQ95BtnoWvmZ++3bt3vgqOM4awjALVu2aCGjgPkVwGWXXaYFUCpC1hSQfecWZhxXoB0e/MpXvgIAeOtb34pyuYznnntO+/yxWAzbt2/Hddddh7179yIajWrSkz44EZjrurpCj0QZALTl55oFJoq1Wi1ks1lPgRPpMlBZJJNJzfzTVWOWom3bePnll7UryGtJ90Eu4hrUVlZWcvF4PLp58+bhffv2NTto8hUJP/DKOAAjGAyqK664ovTXf/3Xu3K53EwwGCzVarWBW4Jv5NpA189aJzyim5+o65W9Jz+XzD3b8PDwhu7DSeWHbjJzTsJFoJ2Ke/ToUf1/PB5HKpWC67aXsn7605/2XOsf//EfcfPNN+sJI6/1/e9/33MsS2BxYvqFkTF9iab4w9Ak26ZNmzzkq2EYnhwBoO0CEFoz/dV/TDqd1u9OClChUPDwE7t27fLcSymFBx54AJ/97GcBAH/3d3+Hu+66SwvQ6uoqHMfRRBqF13W9qw7J6MvluFJ4GU2QMX+WY6MLOjU1heXlZZTLZa08AoH2/gTxeBwjIyOIxWI6rTefz+siq6FQCGfOnNHX5Xixb+yHdM36tU7qdLpYLGZ/8pOfnFJKqQ4y6Zvjv9F2MQpAAVCO46hQKNR68sknJ0ZGRgqXXnrpLw4dOvQGvIIIANBdLUXmVSqAjboXfsH3C7/rumvY48nJSQ3/BjUKo2VZGB0dxalTp/R33IdPPgt/nnvuOc91du/erSebVAwA8IY3vAHXXnutZ0kqn/3IkSN4/vnnPcePjIzofrdarTWKLJvNarQhn69SqeDBBx/0HDs1NeUR3GazuYbdHx8f90DtZrPpyVwMBAK6tr+fS/EvKd68ebMntXZ+fl4Lfzqdxp133ukhEUdGRnTiDK2m3zJTmTBbk2sHLMtCsViEYRg6g5HEHX19uWBKzgeGprkBKEORhUJBR45kSbB6vY6VlRWPK8W5Q0VHdCQTz3q1zvOrhYWFlc2bN6fq9fryysqKa7d35Opcfo0e2JCwXIgC8Nyh82KNYDDojI+PFyuVStwZsBfgRhtfHIkcffMNuAH9Fu9IweePPwIwMzOzpj5/L7dCJnFMTk56vjtz5gzS6bSeQJz0zWZzTbLQnXfeqZ/Pn/a7efNmXfVWRhGazSb+5V/+xXPs9PS0roJLHzedTnuOOXjwIC699NI1z/Htb397DRJi3XumuZbL5TWJQqOjozqsBrSTjqRff8UVV2iLzXHkjx+dzMzMeFZ7ymjD0tISlpaWMD09vUZ5AV3BJ3FMRUGrSsafSI0QnOf6F5rRpWFortlsIpVK6UIkjO7I9Q88l+8AaCvcTCaDaDSqx9LvMtEtJBnYz4VVSinLsoxMJpPP5XJVy7JUq9VyfcbQEMjO6IzLhpDBRhSAhBn6t2maqlarmTfddNPqz3/+80Iul5sUx/TVPv0y/PzHkKiSWYEbJQJ7CT7RBK2H3xKFw2EsLS15rG2vlxKPxxGNRmEYBi67zFv9/Dvf+Q4uv/xyDA0NaWViWRa+/vWv49ChQ/q4O+64A5OTkzpE5G8/+tGPcNddd3kIp0ajgfvvv39NqO3yyy/XCSeEwv4688888wze9KY3eQTmF7/4Bf75n//Zc1w0GtWbVBBeLywseBKKmP9PgtZ13TWcwyWXXKJX45H4oiJjSrS8Huv1AVhDSn7gAx/ATTfdhMsvv1xvGMrEHa7+o6Xm/KACePDBB7G4uKiV6a233orp6WldvafRaOCRRx7Rz2GaJt7znvdokq7ZbOLgwYMeBbhp0ybs3r1bn8P6hawF0Gw2sbKyotFCJpPxLBlm/6RLRiTQa36bpmk0Gg1XKaWuueaaSw8fPnx4aWmpFo/HDdd1yblpuTQMQ/mE/1VJBV7TOoPkAgjv27fvsomJiZP1ej1RLBbHjVeYDEShlXxAr8HhSxtk7Sn08rNSqbQmFr1v3z7s27dv3b798R//sY7dT0xMYPv27Roinzt3Dvfeey/uvPNOzM7OIpfL4cCBAx4/OxqNYu/evZ46c34kcerUKdx333147Wtfi3Q6jXPnzuGhhx7CgQMH8P73vx//+Z//qY+dnJz0hPFM08TVV1/tud4TTzyBRCKBPXv2AAB+8Ytf4Dvf+Q4+8IEP4IEHHtCE6M6dO7UyoTXzRwC2bdumrT+tmf+YdDqtq97IcKhpmmu4guHhYU9B1quuusrz/enTp9eQkP62Y8cOfOQjH8H4+DgA6LDe/v379ZoJAHjTm96Eer2u77ewsOAJtW7evFmjKM658+fPe3Iutm3bpgWZW4HJoqUs9slKP1wFKBEh0YesNjwAAcCyLDMej0dfeOGFQ88+++xiOBw2O0LvqnZDR/ABn8CvZzgvpCKQ/JyQTDmOg6uuuurMyZMnd9RqNdLgA4V/UKc4ICys6UcM8lw/khgE+akIGo3GwBJM6zVuSsF255134uzZs1qhzM/Pe0J0sqXTaXz4wx/G0NCQZ2/4bdu2Ydu2bR4u4JFHHvEkuQDA2972NmzatMnz2fDwsFYAnEhDQ0O46667PAuBHnroITz00EP6/7179+KWW27Bf/zHf+jPNm3ahHK57Mmb90P26elpvSrQNNvlrfzRkGQyqY+RefMAPAKXTqfX7Dy0detWfPzjH8fnP//5nmPYqx08eBAf//jH8dGPfhQ33ngjgHZeghR+9ovzoVcW4eTkpC5WQmjuD/XGYjHN+LMWYjweRzqdhmVZOHnyJEKhkK6/EI/HPQiWWYey5iWzDXvJhFJK2bZtGIaBfD5f3blz58jhw4ezzWbTFbLQjwxcFzJvNHbmdwOUYRiqk/RgvuMd7zgVDAbrAGC26wH2beuRbEB3oYZMwunlNhCG8bq9kICE/uQV/CnAG220MNyvgIzv+973vjU+tr/Nzc3hwx/+MEZHR1GtVlGtVlGpVPSuNPfccw9mZmb6nv/2t78dd9999xrugqvdyuWyRjaVSgVvectb8LrXva7ntbZv34577rlnTQiQSKTRaOidivwWO5VK6e+4X55fSUSjUVSrVS0gfNalpSUP50A0IX/Onj2LZ555BkCbS9i9ezeuuOIKXaSlX6vX67j//vvhuq52XWTbvHmzXgtAheRXAKOjo9p1o0viRx8jIyM6dp9Op1GpVHTIcXl52VNXkEViS6USlFKeAitEREB3h6VeCsBoN5w5c+Z8pVKpT09PR1utltNB2VoW/dZ/o4T5hboAHt+is5Kq/PnPf/66s2fPbotGo5lSqZRWA0qCracAZEhI5lz7UYD8XyoKKfgM8chKLfQ3r732Wk3qSNJoEBxjrFkSSUBbCO+++25dCmp+fh7Hjh1DIpHAtm3bMDs7i9nZWYTDYZTLZc89Aej014997GN4+umncerUKbz00ksYHx/H3NwcbrnlFszOzqJarSKVSuF3f/d39f1ZzFImq/BZ3vve92Lbtm146aWXcPLkSUxNTeHqq6/GjTfeqAmo973vffqcLVu26I0t+a5mZ2fxrne9S7+/iYkJnWpLqLxp0yaMj49r2EzSjONEDqBWq+Gd73ynFsTp6WntKjCX4DOf+QwWFxcRDofxV3/1V7ruIBN3qtUqyuWyVnjf/OY3tYu1tLSEw4cPY2ZmBoFAAHfffbd+Fi72se12teFKpYLR0VHcdtttANqZgnNzc9qP57Pdeuutel6QX3FdV2dCptNpzR8tLS0hEonozUhqtZreyJQFPyzL0glGfF9cUNWLHzMMA+VyuZFKpRLbtm2b/MIXvvBsq9VyOrwH/X1FV6Azp1StVlN8ZxiABC5WASjXdVU0GnUWFhbic3Nz+b179z7y8MMP//6gBUGcNCyZ3a+5rqvhEX3lXteSguqH++QGpOCzDQ0N6Qow/hLh/gxCf2PqKNBNC+b/LPu1fft2vOENb/CEp1zX1VtH8XgmpchY8E033YQ9e/boCSjz55VSGB4e1ll2vHaxWPRk93F8bNvGddddh+uuu06PB/fHK5fLSKfTmJycRDQa1ZCdKIk+/lVXXaUhK8e3Wq0inU4jl8uhVCrh6quv9igOKkkZweAqxJtuugm2bevS3LJAxpNPPqmzGN/97ndjbGxMp9NyLBhjZxWg3/zN3/RwLIVCARMTE0in0zoVmT67aZooFAo6BDg3N6f9dwB6R2DJyt9yyy16POiySaRJQlgmHlHB1Wo1HSIksRqPx3XuAseV/enjAsCyLMu2bev48ePnlpaWquFw2HAcx4VAAEop5bqu25lTfgVwYSXBjN7ZfB4XgJolk8nYqVSqtri4mGq1WkHLshzXdfsigI0w+bT8g3YGolBJi93L75chKL9w8zi/AgD6ZxZK9NFPEUiEQOvlLyjhTxOmgJJI4vPyOMaNeyEo3lvWMaCPyYnF6xNRKaVQLBZ1/0qlkk50ofvFGD9dMtVJf2WORr1e15EMSbYyhCjHQ0ZFKEgMy7EiryRhz507h3K57Mm5JzdBVt913TX8AxOQaMkp4HKLMPaRc4R5+5VKBUNDQzoTkGPDaAafgYun+CwM9TE5KJfL6UIg0WhUcxFKKb0LlWEYnhWh/aIASikVjUat5eXl+tmzZ7PRaJRRAdcwDJKAmvmX86ZTFZiKomfbSE3AXgSD6sQjcdVVV5Vt2y40m82A7EDPC3ZjlQNu2z2WGVQUdD/s7+UG+IVfJqPIYymUsn6bfyFQPyUgEzqk8FPQ/IpGXo+Tv9d6ATZOLAox+8rnkuPHazJ2TZhLYQfa1oeWn6y0VCaS9abSpYViJpuExs1mE6dOnYJptgugSoVA4ZKr7STZxb6SBZcJN6Ojo7r81/e//30kEgn81m/9ll4zwchErVZDJpPB0aNHPfsBvOENb0AikdAFNsgHUNir1arOMSH3QgXA/gPdmL7cNITQnmPAQihEWkQ/RDWWZWFqagqFQsEzznL+seoVicVeVYFM0zRqtZo6fvz42dnZ2dTy8nL8wIEDi7FYjOE/t2P5lWEYyjRNF+gJ/XuigPWiADxRfkZNozqEn/vYY4+lL7/88tPz8/MvnDhx4pZBYcCNkIB8AAqI9G/7LZuU15ZKAOi98688RkL/9VwAP0cgj5fcBX+TMJLoggIDYA3044TiczO2T1dFrmvn+ZIopcAB3W23gXbWH4WffjcVBeGtHDOpIBgalJV2eS4Vhf8YmU3IDDsAejykEPGcnTt3erYme+CBB/DAAw9g165dGBsb00tsDx8+vCZfYMeOHbjjjju00qIi4rVrtZruB4Wd31FZKqVQKBQQiUQQDodRKpV07QKOpWW1KyiHQiGPe0KLLt8XiVDLsjQnwHcmawTEYjHYtu3ZpkzOh0qlUhsfH0+ePn26eerUqULHhVau67oi7q/Qzs9BtVpVHX5gXWN7MZmA9Dtct5OLfNttt50/efLkJUtLS5fSCva7sd+C9WqEsxxMwv1eJIlUDvIzOZnlZ/0s/0aEn82fLCTPoXBQGOV40DpLS8gtrNlHKjk//LUAAAAgAElEQVRmkfFc7r5DAeKE5aSRaELuNc+xlHvVc8xkfjqFUvr7QHdDS55Lgee1DcPQy1/Zd1nDgWhGog7L6lZZkjB8586d+P3f/3187Wtf8yQf/e///m/fd5FOp7Fnzx7s2LFDCzoFX/aHilNGg2SUiOOplMLq6qreloyKuFQqaYufSCQ0yonFYqhUKp4twlnr8fz583qREVe3+o1PKBTqu4isM59Uo9FohsPhwPz8fCaTyVTj8bhyXdeB4AAcx1GdOeZPAvIn8XnaRhWAR/j5v2m28xF27dpVjEQi9UQisViv1xOtVivc90IbzObjC2R5Y2BtbXZ5LYkspGX3LybqxRH4ff9B/j9/U2ioDKQC8lt1qQAIEemvR6NRTQ5S+Jjx5hdGTlx5T46DfA6JDgB4oKVEK0QKhPHss4yayOw1yQsQ1heLRW1ZpdLl9XlvKl5eSyIFyTts27YNn/zkJ3HmzBmcOXMGlUoF2WwWuVwOoVAIw8PDSCQSGBoaQiqVwtatW/V8kew9FQ2fh/OJ4Uuewx/p82ezWVQqFYyNjWllSoXB90D/niFR13V1SbNqtYqTJ096lAoThMLhsA6Fsh7hyMjIoIIgxvDwcOLw4cMvPv300wud/QsccgDkAbA2JAh0qwb1hd0bTQXmb/njOo6jbNt2nn322fji4mJi06ZNx3O53KZmsxnu5wZwEq1naTnBJYyXEF8Kof960ueSSsDvS1NgJE8wyP+n7y5z9CXhx4Ens+13YwjzCMO5FJQCKPPGK5WKtvic0LJOomyMrMgCFqZp6mv43RsZ5uPY0FcmMpHCbpom4vG49pvlxhn0d0nqUdjYDyoQCgjvQYVDgeW7JlrYtGkTrrrqKsTjcU913nK5rH1x3p9jxnvL8CMrPzP8K/f9k0qWfed7rNVqmJ+fx+TkpCY7mQYeCASQy+UwMjKi90xkRiN5K6MdvvNwITQMkiMJBoOexVy++aaCwaCxvLxcOH369MqePXumnnrqqdVCoeDYtu2i4//TDaDwCxSwrrVdTwFQiNeQgACUbduu4zi46aab8nNzc0/+9m//9o3lcjnVEZ41ws+XzJc0CA1wkhCG9XIdZCRA+ruy+YVbWu5eUQK2fgpAamk/AmD/ZJUfebysE8/nJ9SlH00FZZqmJ+TI55VWmscx5EQLJ/sm8/ETiYSG64TzVGh+ZMCx4RLZXC7n8XlZTINVjlhfj2y6hNXkLqg4ZW6GVKBMmWX/eS1JnlYqFd0PClGtVtOhZY4Xk5SYJMW+SLeHz0slwGejsqnVasjlcqhWqx4Fw3Ah9xbk2POYTCaDeDyOYrHomSMSzfH36OioThDyIwDDMIxms4mlpaVsIBAwC4VCpVqtNi3LUkopVynlomP1IRAAp+uvgwNYgwJc11WWZTnf+c53JpLJZGZmZubQwsLClYMutBEikIPJydIrIUg2KoN+bVBI0P93v+a/v1/46dNSy0t3RU4CCoFEEnItu4wyAO1EIynYdAVILtEiy2gEAJ2AIseTu9DQLWG/KSBAl/AiAuA7IAqh3y/RDZGCVNj0e6n0pNDREhO5EI1Q+TBPg+6G4zg6/ZbPTKtOgk8KIZUbK/OQhKPik64Cn0MqCF6LITxyGFTUXCk5Pz+vlbVSCuVyGbFYTBcgkaFZ6fpwnmzevFmHHf1z2zRNlEqlWiAQsGZnZ5MPPfTQar1eb4ZCIUdYfiIBZZqmcl1XFYtFxXuu1/oqAKOdC+CXBo8CUEopy7JcAFhcXAwbhuE0Go2+/j9ffrPZXFMZtleTedOdPnmuw9bPBZDfbVTw11MA/M0JIouCEOHIRCTZV96PQuRHJ7ymLGRBxTY+Po5MJuOJYwPQCSicyPzcsixUq1Ukk0kUCgVtteV9/f31L1jhuyLBxR10HMdBpVLRlksSbkRtlmXpApulUkmX2AqHw56VglRohmHosGCz2UQ8Hsdll12G48eP68xDjp00DsyiKxQKOrnIMAzk83l9baAbyQCguQIqK6W62YtU2nwuKj1ZdJUcwNLSkn5PJPP4WbVa1UhQ3ltyBsFgELOzsx6uRDa3HX4MxePxyEMPPXRsfn6+FI1Gleu6Tsf31/kAruuqQCCgbNtWQjb6rRHQbSMugP9C2vrT72g0Gvj0pz/93D/8wz+Ejx07drNgI3tmA3LQBjUKGV0BGQXgA0qY3YsX8DepDIC1Qn+hEQB5P/ryFF5aNcavKRR8Dj85yQkm/VP6zFzsw8o0zC5juq1/jTvJRtNsZ74xdk/lQgvERCFCdOmHUxAdx9GWU7ouzA0gggh2ttamoNId4L4Gku3neXKMSEhalqWJtGPHjuncegB66S2FWiZZMUzKcfIXDCEi4Bj7w5Q8hmMvFTtdj1gspnkEGif2m6v/otEoXnzxRQ/ykYhPRq3C4XDPcm3ivsq2bSObzWYWFhbyc3Nz4aWlpSwARynloLMa0DRNZRiGa5qm6jzDxph2XFwqsPxxHMdxg8Ggk8vlovv37798eHh4oVarJcvl8kgfVtOT3DPwZgISS6Fj81s9qQz8rRdh2Evw11MC8nsqKdk/3puTipOXsJpKjb/lZPOz7oTKSiksLi5qf5+KgNeUTLu8D8dE+veMqPhRFZVEOBzWoSsqBWa7kQ9oNBqebc3C4bAuO0br5s+GzGazWplRcCgQRHm07o1GQ6+jlwQghVbG7gFoN4VIgLvtSr6EyozkoxRGjindIL5XPgeVOC01SU66WPV6XS/4qVQqKJfLno1AiTJYKYjKYGhoCGNjYz3hf2cOGJVKpXngwIHjhmE4gUDAdRynZVkW/X/HMAy3EwJUHVdE5wMIObiwVOAebY3vz79N03Rd13WHhoZat99++6/uv//+TdVqtafwc0LwBfbLf9ad64RN6P/6iTXpw7HxoaWw9/OFen2/ngsglY70gWWfpFLidxItUEhpbWWCCs/h6rhkMunJwCN64OSksMrMNQnvOUa0RnJS0iLzmXktAPpYjj9huaxzzww++tgSpVHQJMyWYTmZ5g1AowgqNJbPplByrLgSk7wIhd+y2kt0ucWXfKdUFDJZSfIvUkFIv12+b4nyuLCIkQC6LqZp4vTp0/o9yPvwfXCOOY6DqakpJBKJvsbQcRycPn16fnR0NLZp06boL3/5y4Jt265SyjEMw6ErQCRumqZrdlbjdvyAdaMBGw0DUoPIC5KBdFzXdS3Lcv7oj/7oxMMPP5yJRqOZarU65LpuoNcFJbk08Ma+8Fe1Wu05UL0GcCOuAP8GsOb/Xk2SgNJPlkjCb1nlRJP/S+VBv1iGsPg503fl+ew/BYN/y/Ppg7JPFEAKC48lrJeLcgBoS0VFxsw2suAk1eimUDApQCT4GOWIx+NYWVnRikEqI0YKLMvSqIOltfkMXEADdGsy0D1hZd98Pq/7SEThut31/+Qn/GFQoi2JyviO5DJdWnk552q1GiYmJqBUu+oz3RkqIT4XERvfWTQaxfT0tHal/PO3wx00IpFIKBAI4IUXXjgPoGWapuO28wC4JJg8gJLzrDM3B+YAAK+gKCi6SsB1HEdZltW49957d8zPz18yPDx8tlarXdH3Ah2YF41G1w1TSO0pLa9EArymnFDAhQm3/7teSEDesx+XQDJN9ol/09qyj1QAruvqDDJp3R3HQbFY1EIgLWu5XNYbUnBy+cdKogL6obRUMnLA3ySsZP8JZ5PJJHK5nMfvJjqIRCJauch4erlcRj6f1zwDlaPfLSFfkcvltG/MBUIcQ6m0Wq0WSqWSVoYSgvuTj6RLRmXoj/lTmGU0hEqJSpB9oXBzK3ZGQ4hSE4mETlPmNaWLwXkSCoUwNTXlWePgn4/1er0ZiURCi4uLKy+88MJqMplUjuO0AND/d03TdB3HcS3LUgBUvV4nQd93rss2UAEY3VWBfZOB0M4HcAAE3vOe95yo1+sPf+UrX/loq9UKDHIDJOQa1EgAyonMn14P2Q8NyDbILeh3Dvvdq7+c0LJ/kuiUpJ9USq1Wy8Oky+M5sfm/hOqcxPRp5USX7LWsqhQMBnWBy1Kp5ElY8StKWkLbtnXYkLxDNBpFJBJBKBTSPjATmpgVSJ6AdQrIO0glLpURFyoxCUgiBCocIkbG9uk2EZkA8OzoQ8GSxoD/sx9yEQ8FXeanSMXF98uIgOM4SCQSukAK75nJZDyp05L0liR0OBzWyKFPU6lUKnb06NHz3/rWtw5FIhFXKdUC0FJKtQzDcNDhADrwXymlVKVS8bsAff1/4MJ2B14TBeBvwzDcZrOJycnJSrVaNcfGxs4MDw+f6/dwtE4bUQAcRJkkIq/T7xwpFIO+38gPBZKWQRJX8jMpfJJoknyHPJ4MsiSGgO5qNCIFPgehNic/Y+9MvGF8m8IyPDysLXAymUSxWNTwWVpAoBsac11Xhxbl++Pkt+32DjgSMudyOWSzWb0Kj5WJmPzDzD1CeQqiXLXIZ+SmsDJhjEJPXoRjy+swEYhoSEYc5Byj8pHPRTeU96Qyl+dIGM9xovI1DEMv8VVKYWVlRROHUsHwXXLMkskkJiYm+kbELMsyqtVq49ChQydnZmbCQ0NDcBynaRgGhV4SgK5t26paraoecjEQClyoAlgD/9GBIoFAoJXNZu1sNhsyTbPVarUGlginVl+vmabpYW6BtWvy5Q8/k/dZTyEMar3cDXk/Cekl7JQcgX/Syf8J9xmzZrqw/znl8fyb0JPX8AtBPp/XNelo3c+dO+eBwpJTAKAtO2PdnPxy8Q6tHIWSNfJJBLquq3fdlYqF15MLgyhAcgx5HDPx6MsTEckoUqVS8Yw3F/FIoZM+P+cc35tU8nwPnHPSPeL1uZgL6GYbkqM6c+aMpy9ERryfRKczMzPoCHVfQ7awsLD08ssvryQSCQOAtv4AHLc9mbkegAQg4MsGXG9+X0hNQP6WZKALwDVN01FKqWQy2fj3f//3H91yyy1PiwnfsxPkATbSzE4CCLeQ9gv8hbQLtf5+yy6RgB/ecaL5kYGMpfPZ+SPj71QCPFa6DfIciZ64So2psEQBrFVHToIooVgsotlsahdMLqCRKIVIQPrZ+XxeW/NcLqcX6DA91+lkyQFdspOKgwqGfAEtt1w7wGsDa7eG45JZ+R6IDFzXRbFY1FWTuEcfx75XxIFoRBoVqTikBQe6maTkOWRIFIC+vyRd5dyQ7y4UCmHbtm0evkq2TgZjZXFxMbN169bU4uJiPp/PVy3LctD2/zUK6PAACoBqNBqyFsCG2qviArSf0XVM02wdPHhw6Pjx49PT09MvRiKRghqwT6A/XNP3xqq7lNZPzl2MEriQ5rfcvfolyS32SXIcElLyewo9E4BkiIzfAd7wGL8H2kw4f3NS0l/n5KOPb1mWLhYqfXNOyEajoYWPgkwUwb7TMjIvnvUFpDsi8/QlCcna/STyJJ8hXRGOEZWVdK24Gw+jDrTmRBfZbBbLy8u6D7I4iUR/PF7mEhCyS9TAUl9U0kRERFp8b1RkS0tLnpAnx5a/yfm0Wu2dm7Zu3doz+6/TR1WtVuuJRCKyuLi4euLEiWwwGHRd121BIIFORMA120VA6P8r4f+v29ZVAMba9cX87XEDTNN0ALhTU1PVvXv3HnAcx6hUKolBRKBkYwd20uymqfLcC3EDXo3mh+J+f166BBIBSP7Afz6FlKQXBcqyLMRiMS28MmoQDAb1YhSODa0nxxOAp94ery0hLCc/raFcfMVjKXAUIPmdJDuj0agnQUaSiXLdghw3KgHel4pBjhEF07IsHQ0ZHx/XLgFJQxk5cV1XKzhZ208WP5H9kO+Mn8soCfvKa9HdoaJjkpNc3UhlwnfP8/iuZmZm9Fbi/nnakQvHsiwTQPOpp5466ThOwzAMLfz0/9120Q/Xsiy//085XVcILmxL3f48gGMYhttqtdTo6GjtQx/60LHp6elTIyMjZ30KxNMIoTYirPTvuIbglbgBr1aTfiubhHsy1OVXTtLi08LQ6lLoZMiKUJfpsITCsVhMW2+iBQDaKjOTULLv0h9lXziuSnVXA1JBANDRCtM09d4BHAPTNBGLxRCJRDTE57H0oUmi8R6E2DIXhApRxu95vG3bWinKoiqhUAixWEyvr5D5AkwkArqJTdKY8H/pakgCkf1lGDSZTHqIPRoxHkuLLsPCkjsJh8OIRqO49NJL15CsYv4oy7KsYDAYeOqpp144fvx4JhqNuq7rNgE04U0DdgEoy7J6+f/Aq8gByIv5lYBOC3bbVUqa995771bTNFujo6Nnel+q3QzD8JS0Xq/xZfJl8xq90AD/fqVNTlq/wvFb9l5kn7yGTAFmgUpJMsrIgiwMymswcsDxouWSLDojDrSI8Xhcw3gy6vTTZcSAbD0TeBKJBMLhMNLpNOLxuMdXlusFOOHHxsY0RyNDfENDQ4jH45qglMhFwm8ZruSmm1SCFLCRkRGtcEiwWZ1FR6wbyHBiPB6HYXQTeeTiHx5Dq27btjYucoER0E5gmpubw+zsrB4LIiO6RFwHIZOs5Fyh0rVtGyMjI5ibmxvop1uWZZw5c+bMyZMnlzdt2hRoNpsNtIWf8N8xDMNxHKef/z8w9CfbxSAA/vZwAADcDkmBD37wg0euvvrqw9lsNu20K5P27Ay1Zj9fyNNRARf9gvXrgv1Ab79ffuYnJSnQ/kYBp9XhxOZE5DFS0OX9ZXVbmcfAyrmSUSZs5Wck86hUKLREIXQR+Dy8JydsIpFAKBTC6OiojmGHw2FMTU3pJBcmJvH64XDY4/sD0BVz+GzsB/15SQbG43HPegKllK7UQ8VL5cZdgCRfwblAdMR+0GJT4fC9UFlQuBlNmZycxNTUlFYQ4+PjiMfjOv2XKcuy1r90Afgu6PJs3rwZY2Njfdn/Tv5//dChQy+7rtsIBAKOUqopXACSgI7RXgDk9/83PLeBDSqAHrBijQuAbjTAnZ2drc7MzGTe+MY3Pjw8PHzWdd2+SoDWbr1G2BgOh/XL3Ii1f7WUgiQfe7kfvfrC3zyXE5eTksJORENEwLi2XCEorRatvL9qslQkDMNxYhKS80f2j+w/r8WfYDCoQ35UEhRMx3H02gDX7RYMoaAYhoFUKoXx8XFEo1EtXLLMNxWaHwlwqS8tPRfRrKys6MhBJBLBzMwMCoWCVh7ymZh3QAKVZB0jAiROabVlrgIFmygoFAp5olCSWGw225uBcn7yPXKMiSR43a1bt2p3qt88O378+KlGo1GfmJgInD9/vmBZVksppRFAx/93VTv+7zYaDYU2/Ae6srmhiX+xqcDyRlQEDEk4i4uLZidEYwGAZVmOWltbQLd6va79u36NVkCmt/qhlv/8C9WGg5ofdfAzCp9fqGS//SQTITuJIYaPGO4iGRiJRHQxT0JTCin9ZFl6i9aZMJeKlcIPeJe/8nqEvBSORqOBmZkZVKtVnD9/XnMQw8PDmh+oVCo4d+6cLt7KPpCHUKq9i1Cr1dL1CKQf3mq1tDJhhVygG26TtRNZR09uOMIsR2blcYEOBZeCKSMavdAWAK2YiLKIVLhHgMwBkBug2Latdx8mciEXwvcGdHMAhoaGsHnz5oHCn8lkSsVisRwIBJwXXnjhXKvVqgeDQcb/W+hYf7L/pmm63AQE3hD9r80F6JsQZJpmy3VdZ2JiovZnf/Znh7dv336qY/37NjLFG3ED+IL9ftavGwX4If6g46SLIH/7FYeEhmy0eDLdlVZJFsvgRKU1p+CSAJNIA+iy6fybiksmHMnvlFK6+ActMgWSGX6sxMPFPnKpbrPZxPDwMEqlEvL5vN6qi2Wzm80mRkdHMT4+jpGREW3h5X6CtOylUgnZbFYrCWZNFgoFLCwsIBaL6Wtw3QIXBXHHI5KN4XDYY6WJJvlbjjOJTd6L85Nh0PHxcZ0BKbkQKl/pitAA7NixA+Pj4wPDf6urq/lQKGRlMpnMqVOncsFg0AHg4QAMw2i5rutY7WI8qlqtuujC/w37/8AFKIANuAHSHWgdOXIkdOWVVy6+/e1v/594PL6svGsKPE2pbtGLDfRDh8KkG9CLFHw14L9k8mUqcj9SkL8locd++d0IXkey2qyaQwGTayEkhKdVoyKg5ZSJMpzM7Jdcgy/7wglOdFGr1XRiC68jKxERstPi0zWLRqOIx+Pazwa8FYmVam+QGYvFdDpxuVzWlpZKS6b9ckERQ31AN1pAziCZTCIUCiGfz2skxBJd8Xjcs5iKwi9DjHw2ugwyq5LH2ratcx+4evP8+fMea877ckEV3zmR3fbt2wcaqVKpVI1Go+FqtVr8wQ9+cNy27SaARgf+UwG4bvumrm3b3ALMD/833C4UAbDJTEAdBUAHngBwh4eH66FQqHHkyJFLOpCtgD5+Cf3eQWmRnpurbhWaXiSc/9ry98U2aXF7Xc9v5eV5VAKyr2SF6ePKODmXiIbDYZ3Ky+9k7JjCCLStdyQS0X2Tqbb8XjLo/Jv9Y0ydRBmheq/qvVRwkmGPx+MYGxvT48MaAYZh4OWXX9br6BOJhK6ZVygUNGJJpVJIJpOe5bcySUmuOAS6axNisZh+JhYEYR4Fx0TmUMglzvztzy+Rfj7RAzcl5RgdOXJEb61GJS7fC+/Fa09OTmJmZqZv3ovjOMo0TaPZbNb37dv3wsrKSjEQCDSVUtL6O4ZhtJRSjmmasiQ44BX+DU/2i1EAA92Ajn/ipNPp2pvf/ObFW2+99WcTExNHarVa/90P0H6hG0EBhmF4oOp6KOCVNgqIfLls/oiA/J79lArDf6xUBBKi1+t1RKNRvXAnEAigWCx6ClpwYlKYJbFEwk2OjUwoksQhfV9Z/YfVfUgm0orT12c2nmF0Mx7Hx8cxPDysobVS3YUxhNkynVeSdbSaTBoiA0/BlcSpXPlH8q5YLCKTyehnXlpawvnz5/XW5HwuxvhlWI5IhuNCF8Z1Xc3u5/N55HI5jXhyuZwm/jgHqRQ53nKJr2m2d16Ox+N9/X/HcVqhUCh4+vTp0/v37z8Tj8dl7F9HAYxu/Q3XMAy3XC4rMe844V99FwC4oGhAy3Ecd2VlRX3605/+1TXXXPOLRCJxzrKsgcn/Ml9+vUbrKPr2a0UBMvTW656AV/j9yMT/Pa0ZJzFdGzYubW21WtqayUUzrVZLW0AqASabyPx6oBtC5N/0eWU4jvxCLBZDOBxGpVJBLpdbU9KMx5NVV0rpAiEUAlo+7ndAZUV4D3jLermuq7f7ltmMfFal2lt25fN5ZLNZzYswti9drVQqpZc9h8Nh/TctOlGNRF5SSRIhcP8BVh0iIgPai37kUm35PPI3UUoymcTOnTsHzW0VDAYDy8vLy48++uivRkZGVDAYbLquW0fH+ndIQEe1k380++84jmuIsuD4P3IBAK/wy78Zq2xNTU1Vf/jDHybOnj07Oj4+ftq27UY/Zp4WZqOZgTyHAuBXAOspgwt+WOVN6eVng46X58hjpUKglePkpCLgOFCY+Cwy9Zbnc2up8fFxAN0MNPqrvG6r1UIqlcL09LROoTVNE8lkEtFoVAsiw5BMwSXsB6CVDf1nKpHFxUW9tTejFMPDwwDgsfxci8CcfQCezTz9bgufm4iD23IRKZHwq1QqGBkZ0QJPrmFqagrDw8M6QpJIJHTiD69LREnlKMlZuZAokUggl8tpJMZ3JDMDZSYm5/SOHTt0RKTX/DMMw2i1Wu7BgwePuq7bCIVCrWq1WjUMo4EOAag6NQDc9pqbXuy/vlzfSdmjvRIOwJ8U5CECLctqtVot941vfOPixz/+8f/nOI6q1+vxQQKolNKVZTfS5LV65QX0+tt/3kbvI5NL/Ew/hdhv7TkpeikPTnjZF8JpVtSVqbeO4yAWi2nrSMtJWEzyjjvpkC1nggxLgtdqNU2qAW3UxUVEQDc2zxRi3isQCCAej+uCmxR+Hl+v13VBTCog13WRTCY13KZ1pSJgqrJs/vAux5YoSL4L7jtA35xLiA2jXTmZhKTrupqglK6YaXZLjckwK5WirEYdjUaRyWSwtLQEADoaIOeCrGzM/qdSKVx55ZV9rb9SSlmWhdOnT587dOjQ2Ugk4uRyuaJSqmEYhib/6AIMYP8vKPzHdsEKoI8b4I8CkBBsAXCSyWT1rW996//bunXr/kHCzQkqN7cc1PjSOLHWQwAXqwQowL1eouQHZJSA30nFAXRz52n1peCRdCLhRutDYpCtVqvpmvsAtOAVi0VUq1Vt7Wj1uUzWcRy9zx6ZdKCrePgMtK5AN3JA7oHQm7CY/Vequ2ouFoshGo1idHR0TTai3/+XPrdt27rakIyhU6BSqRRmZ2c198BdfIeHh/UuPTIyQeUYiUQwOjqq+Y6RkRF9f0l+0pIzAYjPS1J2cXFRL7P2VxciIc1zOPe2bNmCdDrd0/p3yEOjUCjUjhw58vLo6Ki9tLSUyWazZcuyGh0CsIWOEnAcxzEMo1/yj/y94fZKXADeUEYEPKHAjt/SWlpaMmq1mgqFQuVIJFK0LGttETRe8AJQANlXpmb28rt7/c/Wy0UYdC+p7XudNyg0yHMIOeVyUn7O52DYjwy8n3/wIwo+t2VZOv5Na8b8f/rTnKSc7Jy49McZwmJEodlsepRNMpnUz0JykJaWHAXdi1AohEKhoAWGiEdaeAq3Hw3xHnyvUoCk0mGmXigUwsjICLLZrK7JZ9vtbbjJRRiGgWQyqclVIhmZzBWJRJBIJDRqAtpKMZ/P63oI3FyU484Qrewj1yNceeWVnsiD//kcx8H8/Pxio9GoZrPZlVOnTq0Gg0Gy/xr+m+0sW8dqL/xx6/W6dL0vmP1nezU4APlD6+8CcGzbbjmO4955553n/+AP/uB/W62Wcl3XwgBNZRjdFV3rCSe/J/nVq2BILzTQa6JtlENgk345rSutwnrKi5NeHke/mQqAVlv6xTxe5vDLkB2hNv1sv1WXrDXgVT50KYiqKJTMfgOgBRvo1iWkmwFAL1Ou1WoYHZ/Avc4AACAASURBVB1do8x4HseczyMzEeXiJiorohpZBo3wndGSWq2m9xJgsVSeQ8XKECTXE3AM+D4CgQCi0agOP9KPLxaLyGazHiRDBUK0wf7KcOsll1zSd90/jVculyueP39+1bbt5uHDh+fr9XrVNE0t/IZhNI1O4k/H+juO46hKpSL3/rtg9p/tohTAADfArwhalmW1Go2GOzo6WvnsZz/7P1dcccWPlVLW2qt2G0MwG0EB0ooQfvUKDfLYfshgvXv0UiKSB/B/pgfHRxqSPGJITcagM5mMFngK1yDFxcknM/4YSeF9OTFlSI3sPQUqEomgVqt5dhpiMoy00AzZsU+swMtUWCoSpheTSec74vOQI2CUgv2VKbemaWpyj4Qnob6spXj69GmcPn1alwePx+NIJpM6ksEkK5KbJB8pvDJkStjPEucccyYYAV3fn+NNQlbOO0ZFbrzxRq14/a2DMJylpaVMMBhUL7300pkTJ06shsPhplKqDi/513Icp2WapmvbtlsqlfzW/4LZf7aLWQsgmz8JoWdWIIBWIpGonT59Omjbdn1qaurg+fPnr3Acp+e+AeQCuBvNRiwqIwHcQLKX4Eh/nf/L79c8nIDY/b6X95H/y3tJQpD/06pLYXddV28qKQtvUoDIVAPtcBe3zaLPzmW3tDgSGQDwMP9EASTxCPtJ0NF6UtC57FXWGWASDtOEZY3BxcVFfS26dTLsJ+s8EmnI7cZ4LfaV7Dr5j0ajoTf+VEohnU5r4aMFZwk0riHg+VQ8JDKZ+yAVmlLtrMVisYh8Pg8AyOfzHoVKElIq29HRUViWhdnZWczNzfVFsh3FUqrVarVsNrv61FNPnbQsqw6g7lcApmk6hmE4tm07zWZT1Wo112hX7Aa88P//nANg6+UGeMjASCRSmZuby0xNTZ2qVCpDzWYzMKjDrut6NmIYeHMBJaPRqCbA+NMvW3A9qO//3L/izG/x/YpAKhCZUuw/h/5xIBBAqVTSyTT+bbwktCUEptXmZOT1qDRkPT6gmzHYgZ/6PMJkpvnSclKIiVQYDycHMDw8jHg8rq09eQg+E0NmVCbMfWBfZcSA+QkUQOm20IenQDFD0nVdXZ6cx5IMZVo10Q6zHNkP3pdjQpcD6OZOkE8g0cq5yTHlgiS6MezT9ddf33e+GoaBarXaLJfL1VAohKeffvrw0tJSPhAIMPZP4W+aptn0kX+0/oBXfv5vEYDR3TOANycCMOFVAK1AINCs1+uBt7zlLeeuueaax9/znvdcUqvVkpVKZeAWYgzxsP7dgL7oic8JRR+VL9RPpPmFV1pbORH4nYRyfrei399+FwHoVgFmnyQ8J/zn5ObzcJIxzEU2n2w5+0YlIvshoXm9XkcikdBpuoyF07r64+5ylSFj+TL/gLkGzN6jL0xXhNadvjphNZ+LOwZT0WezWR0uJEkphY37C7I8GPvGPAhyJ1LIAeh8CCpFABgZGYHjONq606Jz/EzT1CsQXdfVPAeRG69DhMRWKBRwyy23YPPmzX0X/biuq0qlUsWyLBw+fPjIM888czoajTaVUjUAVACMALRc120Fg0EXgHsxdf8GtVcDAfRLC9YKQCnVCoVCjWaziX379sXf8Y53/Piqq676SSwWyxrt/c17X7gDHWVa5aAmS0zR6kvrP4gglMfLiQB0hVnme/tfLP/nZPWHDHtFCMhbcHIqpXRlGyIBChSFR4YRmbjC6zKECEDDeEkSyi21WERkdXVVT2oy7hQs+rtDQ0MaTjP0x+fkDj2qE7ak5fQrXwpsJBJBOp1GKpXSY82FXRw3Rgm49JaWlfeh0gGgi5VwjORCn1qtplcRyk07+X5ljQXekwiSikYppQlZNlYOomJh/2q1GkZGRnDLLbf0Ra4d97bRarVa2Wx25ZFHHnleKVU1DKPWUQAS+kvr79RqNbeT+Qe8CtYfeIUKwBhMBsp6gS2lVMu27ebb3va2+UwmYy4uLk6Fw+HCoPRgwsyNrhQEuuEXMtm9BL+fImCGGJVIL9egV6iRn8tUWX9iUC/FIV0F/sgkIH4fjUZ1fkQ8HtdltmRYT1ohKgf6w6VSyVPMkoqyVqvp1F9aWskTAN2Vd/SrOU4yaUbyFHxnEo1R0VHphEIhFItFrVASiQQSiYQWJKITJh+xBgFTiakEuLHm8vIy8vm8p34h8yLIyjPnge8pkUhgeHgYs7OzmJmZwejoqFYCSink83lPnoJM3ea7ohvBZdG2beOWW27B2NhYT+vfQaluvV5vAnCeeOKJA8eOHVsKh8MN13VraK/8axht5l+nANu27QJwi8Ui8/5fseVne6UkIJufDKQCcNBWMq2OEmiGQqHGZz7zmV+Gw2HjX//1X/+/RqMR7keyAe1BI2SVufKDmmEYevUYLRShtiTk/C4AQ0o8hpNNwnYeK1l1CZslPOQxcgEMBYICIl0TQmgKt6yURKXCZBlaJ2b6MeTGhBbC9Wg0qu9JVjwcDuu8+3Q67amSQ8tIglG6BzIEl8/nPdVupHJlsRI+AzkK02zvYpTJZNbsH5BKpTQ6SSQSWtDocsiwI0OmrKxbLpc9fEelUsHQ0JDnfdE9IhIaHx/H5OSkrugLdNN+5WIfWVRVRikAaIVFInBubg47d+7U6MvfOsc2DcNQx48ff+nxxx8/mkwmW47jEPrXDcOou67b8Fv/RqOhXNftRf69ImXwil2AAShALw7q/NbhDADNu++++6U3v/nNX5ubmztgWVZzkFJzHEenoG6gP/o3QzsUgF4IgH8zfsyXzVASr0Xhkr6f33Xg4hR/2i/QzQ2XKIGWmFacAkVLy0UrJMgmJye11SR734GUHr6BE50Vdcju04rJbDmp6Jj8IisP09Lz2YCue8OcAxYIsSxLVwymTz00NKRJOqBbqot7DHL8mIAzNjaGeDyOVCqFqakppNNpXf1HjplcoMOMwHw+r9cuUJn5lS0LiNAtIDHIManX61hcXNRVkDg25DOkopFGJBQK4fWvf71WSr3mZbPZdJRSqlQqFb73ve/9sl6vly3LqiulqugoAIjiH0qpVifxRwnyz5+G/4raqxUFANZaf4kCGA5sqnZxg8bTTz8dsyyrNjo6Oh+JRHKDsgPpDzIGvV7jBJDCKRM05Gf8OxqNagtLyCktHgAtBJzgPJ6NKaUy/EYLJ2PqTPghRKbwcHLRokQiEUSjUdh2uyT26uqqDsnJVF0qKpk0FAwGdViQiIBKkRaPz0nlwElPyMtxpJAz0co0Tc/GoPyMvrHTWR48MzODSCSid+/158/TJaDPzeeVKIzH0U9nuJDzQB5HC87rEaZLrmFoaAhDQ0Oa4OO7Zdhwfn5eE35835wzfEfkNqiEW60WbrzxRmzfvr1v2M91XdVq/f/tvWuQXNV5LvyutS99m577aEYjDaMLEhALMCAZDsYCLNsEx0ASp+oLxF8gLlcuVamyK3/zJ8mPpFKp/LFzTtlVqVPflxSOncoFX8A4GGPZJsgYBAiQELrOaEbTMz19mb7t61rr/Oj9rFndmhkNHAkGM29VV9/33r17v7fnfd53xbGUUvzyl788duLEiYu9vb1xGIYeYywgIqQAEW9304qk7i+EEKKL+LOxUgC2ekWA0XIaIIgotm07UkpZX/jCF6bz+Tx744039nHOI7bG+gFEpMEYkyd+OTHHh5vMr250HumFmbM6jkO5XE4j1Dj5CKtNph2ALygfqhBEy+OvzQgCeS7RMqsPYb/neTq3xQUPhl2j0dC024GBARJCULVa1Wg+vHY+n9deC3k/lAC/AQrueV4HWm6Cd0gHcPyICIIg0PwMGCd42f7+fu3R0YcAfAEG3Jy0A0OM6Uf5fF4TpaSUum8BqQ++19PToxckNSMJcAlA/zUNFHgLZipEtLxCVblcpnK53FHtwP5MqjIMJlKEnTt30ic+8YmOylG3RFEkOOdsZmbmwjPPPPOmZVl+EARNIvLUct1f5/9J7i8sy1K1Wg0R9RX1/kRXNgIgukw1gNqAIACO6KGHHpr5+c9//j8/+tGPPqsuww4EuITxVesVUEHh4eHxzXwOSDq8JP5gEF+6gT+RtOQiFDfZc0DrEari82ZuDAWB90HUQbQ81x/PTS/IGKNisahHU+OCAwDFGOvgscNA4Peh9o7UAOcVxhGdfN3REzAGRBMmaAqADUM/8F65XKaZmRmtXNgHzi2GbmYyGR2mI+Iyjw8Clh/OMfr0ETEAMMxkMtTT00MTExMd03wBJuKcwzgA9AyCgGZnZ7VHxzGbht1ML2HYe3p66N57711zoU8hhCQi5fu+/6Mf/eilUqlUISIvDMMmY6yD+GN4f+E4jozjWHied1W8P9GVAwFXiwK6AcGYElAwjuOIiOwXX3wxs2fPnrOc83954YUXHvJ9f9WWYeS7Qgg9fWY9gCgUCHVn8yJG2GqG8ya1mKhzVn4mk6FGo0GZTIYGBgY6+PjwFGauCPDMzMF7eno6qKYo38HggHEGz49auhCCRkdHdV0dgJgZDpsAlFLLU4ZRGwfVNYoizRrE9nE+4c1RzoPXBmUYxy2lpJGRkY4IAmExIg2zymEeJ47dTGUAapqGDWmBqYhIV7ASEchAIC319vZqxiD+S7NPBMeDMV+cc5qfn9dThbqHpeL343xgW77v08c//nG67rrrVq35J+dTMMbYsWPH3njxxRfPpVKpoFKpNBhjPhH5SQqgy3+o+zPGRLlcxgrcV9z7E11BA2CIeZBmGsCobQAsIoosy7IYY9auXbuqAwMDpWKxeCCTyVQ458LzvL61dgAaKAZOrCWm5yYiHSKCvALPauby+F4ulyMhhJ6tj4sG3hneDfVts40Z+aPruh0tov39/R1jvxGqm9iBCczh4ociOI6jQ18zrBVCaLKQCTQuLS3p15Djd5N2cAwwREDZzdV8kC7guyaVN5fLked5OsTPZDKaOgyPjmMyMQgzsgLz0VzWi7H2cnAgLwF7qNVqOh3B9lAZMcuXwAJM8NOs1NTrdQ0uF4tFnd/jP0DKBGOF/wlRyN69e+nee+9dM/SH8hcKhbnvfve7LzPGWr7v16WULc55oJLav1IqsiwriqIosixLJHV/pZSSV8v7E13hFOAyFYGO3gBUBMbGxppf/vKX3zh06NBPXNetG7MD1+wYhPVeDyiI3B4XJNHyLAETIFxJcPGYoTEUDl4OoSVKTfBc6FLDRWjO7O/r67sk1IVCYoyUSenF56AY6Es3l+5CbgzvbIJj3Rx2U4GxjzAMO/JmrLuH45ZyedIwttloNCgMQyqXy7p0aKZXyPeR8qArD54bXl2p5WW9MccPx4JzZwJwMN6oApgsyt7eXn0ezH4GdIzCGMCIFotFbbBxLhAdARNBVASeRi6Xo0996lOaQ7Ea8CeEiH3f9w8fPvzSzMzMQvsvbDXYMvEnUEqFnPNQtlf/FZZlCc65rNfrWO7rqnh/oqsTARCt3CTUAQZSOwrgQggrm80Gf/VXf/XfQgj3P/7jP/6fixcv3kjtSUmr7oCxduOPycG+nID1BQUxkfGVto/9wzjACCAUhGJDkaFUCK/T6bSehc95e5088OTxfeSTRNSxJBWigXw+r703uu4cp70cFcgrWJarVCppTw5jhNAUuTr2jfwZ6QlYgiDRoL4Nj9jf36+ZcyAHpVIpCoJA8+WhJFgUAykHfhMYhWbTDer+OC84dyaCb86KNKMeE79A5QOTf2q1GhFRB55hGlOAuOVymSqVijYgMDp4HxGcUssjxsMwpLvuuot27NixZtt6GIaRUopOnjz59rPPPnvCdV2/VqvVlFKtJPzvoP0KIWLbtoXjOKJWq0mZrP7bZQCuqFxpEHC1KMBsFIqN+4gxFlqWFZw9ezadTqebn/nMZ54cGxt7y27PRF9TAHKtBr6sJChXwavhQu0WUwHNXnYg6LhgYHhQU0aDDOr1+K5J60VPOoBEXHR9fX3aCwLngHfHUA0w3NLptE45lFJ6Zj08vVmZcBxHd84RLbffArxDKc6cRWglDTJmey2MFlIF0LQxsswcvgnDYxohpF+Li4u6+gCMAqg7OkDNke849/gtmK5rThLCbzbPM5qncD7BjoyiiBYWFqher+tFSIETQeGxXRgYNEs1m03av38/3XXXXavm/QlgLYQQslwul5566qlf+r5f8zyvFoZhk3PuU7vsFxBRmAB/MUs6/kS73x+5P/ToqsgVNwCGXLZFmNqpQKSUiiYnJ+sf/ehHL8zPz2dc1/X6+/tnOedrNgGgMrC0tLSuCMCUy4X++GPNi5eIOrjwMDwYnQ1Pai5nZebvyL+JiPL5fMcobgBbIMyk02kaHBzs6F9Hfo0UCGEsyoBQVDPMJyLdMovoB7wHM++HkVFK6Vq5lXTtBUGglwhDOZaI9PBN4CRQUJMQhUiDMaYNBSIC7A8eHmVA09CY5TjcAJia1Recc7wP4wXOBQaGRlFE586d01RkGEVsj2i5j8IEEHt6esjzPNq+fTvdd999HeXkbkkU2I/jOPzFL37xyuuvv36Bc97yPK/JOdehPy2TfkKU/WzbVs1mUxLppb6vCOd/NbkqBsCIAlYqC5pGABNPIiKKHnjggemvfOUrz23btu1N3/d7hBA2ay80sta+yPM8ajQa64oCuss5l/ssck1T2c38GiCaeQGB+AJUn4i0Z2u1WvpiRYccjAeWxXJdV1OYTYODEBcKyxjTXqyvr0+PSUd65HmebroBNRrKhO8jooGhMxF/1NM9z9PKjnkLZnkSOAmiFNTXoahSyg7E3cz9uzkHUFhEAzgGouXqDIwqDB4MG8J0xtrtwjDGeC0MQ73MGDpNcT4Q8eG4gb8gtUDK8xu/8RvaeK52/bRaLV8pJc+ePXv2e9/73quWZTV9368rpVpE5FEb+Q+T3D+K4zgG8BdFkfA8byXK71WRqxYBXAYQ7GgXpjYeEIZhqO64446Fv//7v/+3hx566H+PjY0dj6LosqwfKIK5RPN6vrMeAcpszs5DmIu6OF4DyIYLFspvDrcAkIb59gitzX4D9PmXSqUOwgwR6dLZ+Pi49q6c846GKZB3zMVCYLjAoYAxw29D+YxzrqfnIEWAkneTn8DLQPUB+4Ayms9hBMxIA/gJgDvGljsAMecP4B9q9YwxPaMQXAKzvIpjM3EHc3GPs2fP6l4HnDNEH4hGzEoCDC9jjB588EGamJhYc8hHGIZRq9Xy6/X60g9+8INfzM3NLUZR1Ehq/h4lob9SKuBtvn/EGAPpRyZlP7VC3n9VDMHVAgFNWQkQNBmCMRFxpRR3XZc3m03r5MmT9t133/1WpVIZsCxLzc/P743j2FlLaZVqd3Ahx3+nKcFqYubRmISDSgCUFiWser2uG1m2bt2qFRgIOLwKohWEl+jKg2fFDAREBP39/XrhjGazqXGBfD5PjUZDb5toubkG0QVCbjPPHR0dpWq1SuVymfr6+iiKIhofH9eMPHhEeE4oC0AxrOSMfSFfRtQDJcJ3ocCg8xJ1LkQKg4HjhNfFPoC+e55H9XqdxsbGiPN2R59pMBBx4b+CQlcqFeKc0+LiIjWbzUu6FREBIRrD8QEXCYKADh06RL/2a7+mKwcriRBCVSqVupQyeumll1798Y9/fKq3t9eP47hD+cno+pNSxrZtS9u2Ra1WE0nZ76oCf6ZcTQygOxW4pE2YulIBIooymUxw3333zXmeF0VRFA8NDc3kcrmS4zjBSvsw9kVSSt3GuV4Pv47fcMnFCK8KT2BOsmm1WtTX16dX1YExMim6yEXhFRHqYo4ewtrh4WEiIl0Dh7dGPooZ/0SkvSkAMaD4MECWZek0AaU7gKGZTEYbi3w+r8+jSerBMcFbI0cGPdckEJnYAYwKziWME6IjGEwTFARYiN9t0qaRRoHTAMJULpfTvQ8wAHG8PMq71WrR4uJiBynL3JdJ/gFOAjzhjjvuoDvuuGPNcfWcc6rX603P87yZmZnp73znO0dt224JIVqq3ezT4f0ty4riOI4syxKO44g4js1hH92b/0CCgCtJtxFARUBQsgYa5zzMZrP+Y4899vYf//Ef/9iyrDpjTHDO18QCiJbHa1UqFe1tr5Qg/4bAcwGEBKUYYTYGVZgjuRGuV6tVvYY8mmyiKKJms0lDQ0MafU6lUrptFx13WFgTvQHoqjNTEaLlxTz6+/t12ZKI9H7QK28i/UEQ0MLCAtVqNd10BC+PqgVAOnNIBpqTstlsBwMQ+8JzHCPYnENDQ7R7925dowc+YjYiYU6AZVm6i8/sT0DlpL+/v6Nmj2Ou1+sUhqFeKxC9AzBiAAGBixBRR/v0zTffTIcOHVqT7JOkYFGhUFhsNpvVn/70p0enp6cX0um0L6VsElGL2srvd4f+juMIy7I044+uQsffWnLVDcAqgGB3JICqQERJXTSOY/mpT32q8JOf/OR/3XrrrU8T6eadNU8ILrx3Wh5cj5g9BD09PVqxoyjSigwjoJTSjUSoAKBvHcM9AMARkb4w0TFn27Zu9CEi7YHDMOyYRAtCE3JlEJMApoHphkgGpCWEvpi6i5n3JvMNmAqYgRi9jd8KdhzRMivSpOtCzOXEEO4TtdOrUqnUwVxERIR9glyEm23bNDw8TNlslvr6+mh8fFw3PAE4RHRz8eJFnftjsi9ah2HEYDSQzgFTiKKIbrrpJvr1X/91/X+udi3FcaxmZ2fnPc9rHj9+/OThw4ffzuVyvhCiRW3l96it/CFjzAz9hWVZZujfrfxXXd4LDIDYcp8AFF+/Rcs0YUZtg8QTbgALgsAKw9B57LHHfrp9+/byE0888f8uLS2NmUj+KvvTBBWsC/d/I1AYgEbwWLiAiKgDJIRCDQ0NaUUiIiqXyxoPCIJAd84hDIchieNYf7e/v58WFxc1oFWv1zuikVarpXNclBkBrCGlQLkPebZSSkcN8JDdc/OgRFBETOPB9s28HYCeSZohWl6S3AQGzU5JtN0if8f/ihQLaDyAUDuZ2AQc4tprr+1Y8sw0FIuLi1QqlTRjEhEaypRmhAgFR4pWLpfplltuoc9//vMdFZNuUUop27ZZqVRamp2dLfi+Xzl8+PDrQRDU0+l0K/H+Zu4fMMY03Tch/KDZ5z0N/SHr66u9AvIXf/EXOINr3Xc8Tph67KWXXuqvVCpZy7KaSinled6AEMK6nBHAHw3Sz7sVoP4mqm+Gtch/UfuG0UHtu9FodHhweBqEoP39/UREesqOSppiiNrKsWXLFmo0GlSpVPTKNmD2AXwz6+RgOMIYIR0Iw1CDhiJpHTYV2HEcDVCaXs9kWkIREaLjOQyA7/u69GdSZHFuELWY24ZBxBLiECmlHkYK7gIM1MjIiAZFMR2pWq3qBUoLhYJuRTaPGc1g4BrgWoGiLyws0L59++jhhx/umBW4kliWxVqtVnj06NE3W63W0quvvnr8xRdfPJfNZj0pZYM6vb9vWVYohAgZY7HrurFSStRqtW7Q7z0J/SHvGQawQiqwWklQg4JSysh1Xf/RRx89s3fv3unkeTOfzy+4ruuvY5/k+z5Vq9VV+drrPHYd7pu5tMkfB6INjylle8Z/pVKhoaEh2rt3rwaRYEhM5cS2AAYODQ1RHMdUq9U02cdMN1ACRPkNgBZCbxNEM70eSobd8w/gWZFKmJ7bpBCDem2yCUECwmu9vb1ayRBeA0CF8TE79czfDo8PY4AUZ3BwUCP8fX191Gg0aG5uThsBLN1FRHrxU2AfABJhdGD8YJBwTMVikfbt20e/93u/p9OEta4ZKSWdOXPm/OzsbOHs2bPnXnrppbOZTMZD3q+Wh30GSb0/UkoJx3GE4zhilQU+3lN5T1IASFcqQHRprwAzbpxzzqSUjHPOv/SlL52anJz0v/rVr95fr9eHlVKcMSaUUpxo9TXRkFcCfUf56V0cuy4NoQnJ5KMjxxVCUKlU0jV4x3Fo7969Ovwtl8s0MjLS4SULhQJt375de37btnXon06n9fp6WNTSNCLw3Oa6fLjAscSa+ZsxUCSOY42awzsjVAZKju2izg9UHOAgCEZQdqJ2xFIqlfQ2TeNmsvbwWbMZiYi00pnNWiZrM5vNagMopaTZ2VnKZrM0MzOjI61yuaxzfhiZbrYo/jukO61Wi/bv30+PPPKIrgyskfMLx3GsQqFQfOGFF16Pomjp+PHj5+r1+lIqldKhP2PMl1IGnPOAtYk/kW3bseu6cbValV0LfJjynhmC97oKsF6CEADBiHMeKaXCOI7Fpz/96dnvfe97/9/v//7v///pdLqaHP9lV0RBJID13d5NJACiT/fYL4SWURTpcheANPDsT506RWEY6lVjzp8/r2mv2AZm3qdSKapWq9RoNLQnRfsz8AR4bUQHRKQVGGGv2djCGNOr7qLkaDLdkCfDaJmcAvDpu4E9AGUmWxHnGsYCdXk06MCQmJRbIuqYEIRjMj9npivYHwDCpaUlOnfuHM3Pz1OtVtPAH1I2ELNwrOb/AzC12WzS7bffTo888ogeELLaNSKEkFJKWavVGocPH/7l/Pz8/OnTp6fOnj1bcF0X3r8j7yci5P2x4zgiiiJpsP3el9Af8p5hAKYYeADEzP1V13MGUUpZs7OzPb29veGdd9750ptvvjlaqVS2snVoNEJNUHJX6gC83PdZQic183/zfZTVQKKBUfA8T7fOMsZ0OQu4RK1Wo3Q6rUtxnudRpVLpGA02OjpK+XyeqtWqVmhzarBMWmFhINAfgO93tyzDC5vsQOT6yLXNioDJfkQojm2glJjL5TrAOsaYjgC6pziZLcMmw9LEH8weCKRA1WqVlFJUq9Xo+PHjemGRZrOpIwOiZeYjvg9DDW+L8+d5Ht11112XBfwgS0tLDc45HT9+/K1//dd/fSGO4+rMzEwhjuM6Y6xJRE0iaiH0t207jKIohPLbti0WFxclEb0vqH+3vKcpAGSFVKB7jGpMbeWPaLk6YHHOeSaT8YkoNPhSYQAAIABJREFUmJ6eTt15550vjIyMlF555ZVPhGGYvpwdgAKDAbeedQdNASEGFzSUx+QE4HNIC4hIe0LP8/TAS/DrTYAOZUKi5bIfclXk07lcTqPwYAginMeMASLSxJr+/v6O3nccG2YQimRwBvYBUJAxpiMQhOCYF4DjRb5ukmaIlvEHlCRNOjPSJPxXpnc3uxHBbkTFBUYXpchyuawBPWwHxCeAikTU0cmJ6gJYgZxzuv/+++mTn/yk/sxq11AScbXCMAwXFhYufutb3/ppq9Wq1Gq1WrPZXLIsq0XLeX8gpQwsywrjONZUX8dxxNLSki75rcD2e88NwfsSARAR/eVf/mV3JNBdBcA9pyQKUErxbDZLO3bsCNPpdHzmzJn+hYWFkZ6enroQwg2CIKOWx5KtKPDcyHdxgbwTgXLjgsRrMAjm1Np8Pq/Dz/7+fkqlUjq3B6DX19cegIR2YzS6IKxHHgwaMvrnQRZCOIvfVi6XOzriwJgDYAjl6O3tvWToJ7wxynLw+kREfX192osiv4bBQkUCCq6SBimTwWiWA2FkwO7DXD/GmKYa53I53XiD1KlYLFKz2aTFxUUiWl4hGQYCaQTR8ih2M/QHOJvNZunhhx+mgwcP6uNdS/mDIIinp6cv1uv16s9+9rNfPvvss28xxhpCiBpjTCP+6PbjnIdCiEgpFbmuGyfKb4b+3bt5X6KA9yUCgLC1pwkz6sIFGGMxEQkhhLztttuKAwMDxx5//HH29NNP3+s4TjAwMFCsVCojUso1sQ1c2MAELrf2oPk9XLxm2AyvZb5vLkwJ76QSbjoGhUB5kRZgoEdvb29HmQohMUhECOeB5uM9RCUoQ5oDLolIvxYEQUeuayozIgLTC5v9BviN+B5eAy5ilkvNdRbM32JGBDg/ABRhSIlIA6CVSoV836epqamOc4FmLJCAukFZkxmJCKfRaNA111xDn//85+mGG27QxnAl5TeNwunTp6dKbZl78sknj+VyOU8p1VBKNRljXuL5PUP5Q6VU5DhObNT7N0Teb8r7FgFAVsEDum88uVnUTgWsKIrc4eFheffddxfiOPZnZmb6C4XCdimlRURsPZEAEXU0k6yHK4C8NoqWlywzsQCzFIjlqtArwBjTY6fBOEN7bzd5BhezUooGBgb0xQxswfTOYLWhfx5en7HlZcUsy9Jdfvl8nnbv3q1JQADLYADQJYj83SyBmtEC0fLAVJQhzbweAKLJE4jjWA8gMTstBwYGdEqBkWDlcpnOnz9PnufR3NycVlYcK+YcwMiZCk/U2eUH/OCmm26ixx57jK655pqOFuiV/mcppeKcs4WFhdLRo0dPlMvlwvPPP/96oVAoOo7TVEo1aDnn95RSAWMsYIyFQojIcZzYdV1T+Veq97+v8r5GAESX4AG4N6OB7ntBRMJxnFhKqTzPc//oj/7o1b6+Pvrrv/7rbYVCYZsQ4h39LuSSfX19+oJZS1DWQn88LiB4DHhPpZbXsDO70EZGRjqQdSxiiTA5jmPK5XJUqVS0wpvdc1BYhNh4jBAbHhHKgVTFjA4uXrzYodDwoCAZwWDhfDSbzQ5l7qb84jjwGL8VZUkoOkJ7nENUPorFot72mTNnqLe3lyqVCi0sLHScX3j37vUTUcs3gT8YMBjqT3/60/TAAw/o5qfVDH5yDuMk0lPPPPPMkVKpVKzX68U333zzgkH0QbnPk1L6KPcB8bdtW8Ttsd6reX6i99kQvO8GoEtW6xtY7SZzuVw0NTU19O///u8353K5Zjqd9oIgSL2TUl+S41G5XKZ8Pq+bWlYThMug+Jo5Jy5KlNCwCg1aXdEQBLpuuVzWSg0PXq/XNUiJcBwAHPAExhjt2LGDZmZmtKHBIFIAfowxKpVKOrqBcqMZBxURkz2IyKJWq3UoHpQXhgKKZrLskCbAs4N6ayql67pUr9d1SzOoz2hwQp/E1NSUTq3Mer6ZgiDtgUE0bzBItVqNhoaG6IEHHqADBw5onGataE9KSc1m04/jOHrzzTfffPXVV08JIWrT09Nz6XS6pZRqElETYb+U0k88f5Aof4QmnwTxV0qp7oU9iDZAFLDRDABkJXZUx2v4o4lI/uM//uN1s7OzW5vNZrrZbK66rsBagjIh2nixCMVKhgDeBYQR5N5Ey+vHQ7CkGZQim83SwsKCHrJpDqgUQuj9FotF7QW3bdtGjtMeB47Z/KA3A8EHWAjiD3Jtk3aL34IRZugpwGNEC0hhcI7Nkim2YdbpEe7jdTOFQZoCI4s0A007jDE6f/68NpzFYlEbORgaMx0yFRfGBp/DscCQKKVo37599NBDD9HExMSa+T5+nmVZrFAoVGq1Wq3Vai09/vjjPy+Xy4uu67Y8z6tyzmEAWpxzX0rpMcYCznmH8nch/gj9O/a1rgvzKsuGMABdYGDHW8bjjhOWlIjiH/zgBxM///nPb4rjmJdKpdE4ju13YwCS4yAi0v3y8MK4uEyBkpi8ADOURoiK0hcR6QsfHhpsteHhYapWq9obep5HrVZLt8IWi0UaGBjQ+f7IyAiNjo7S/Py8XqYM3X8wBGjdxZgudNnBIJhcCEQuJl/fLP91KzvKfpggjN8GRB9GA+U4xpg2bBcvXiTXdalWq1GhUKBMJqOVHjqCCMcE9szXcA+w0TQMiCCGhobonnvuoYMHD2qjuZbXTyIY1mg0/HPnzs14nlc7cuTIa9PT03O2bTd9329yzpuqPdarZXr+1ZS/1Wp1K//7Dvp1y4YwAOsUrdUJuKNarZbzT//0TwcajUZftVodajabve9W+Tt2ZPAFQHAxPSgR6bq32RmH76qExGIChgDTMBcPABZjy8ufg1PPOaeJiQm9H6UUzc/P0w033EBzc3O6fGiOGMesfdB3zcoGDAfKnsAdzAYmk/4KRQFOAVYfQnCz9m9yD0y+PybsDA4OUqFQ0KspoS+fqG3EkQLhe92GCP+3ia+Yn8fxYkiIlJJuvPFG+tznPke7du3SEdpa+b4QQgZBEGWz2dSrr756/OjRoydzuVx45MiRty3Lqidev0VdOT8AvzWU33T8G075iTZAFYCIyPD+3ai/Rv6pbaxsInKiKHIsy2J/+7d/+9EjR478D9/388ViceflOgTfieBCg6KYXtD8DNFyLzwECpXNZqm3t73OCVBzEzxECG82pqDphYh0/35/f79ucDEX5USobJKAUKJEvg8vjg5EeEeTiQfEH7/RZCkidcHvQwkSvx/bQXOPueQ2JvGgLHr69Gn835rHgHOI7Zvn0lR07A8GAt+DAfU8jwYHB+kzn/kMPfjggzQ2NqbPx+WuiVarFQRBEL311lsn/+u//uulMAyrR44cOdlsNiuWZemcnxLlV+3mHp9zHiZTfeJVlH/DlPtWk40UAZhlP1rhMRERRVHEXNcVL7zwwpZnn332Y2EYZiqVytYoilzWplZeuQkg1DmkAqOnTGzARMW7y4Hbt2+narVKlUpFswFt29Zhc6vVomazSdu3b9fLbpkAIr6zuLhIIyMj5HmeVt56vU6O49Dg4CAFQaAXAYWBQUhORBp8NJFxKD1+g+d5Gh03jVK3MQL+QNTu58cKysViUYONc3Nz5Hke9fT00NzcnCZLIXIhWu4DwPGZx2sqN9HydCMD99Hbq9frlEql6MCBA3TffffRxMSETrXWUnyllHIch1UqldbU1NRsKpWiJ5988r+ff/75M1u2bInr9XrFaref684+nizltU7Pv+GVn2hjGQAor6n4ZL6mlEJ9X33ta187UC6Xx5vNZl+z2RxJ/uwrqvz6ABLPU6/Xyfd9lcvlKJPJsCTcRpjHiJa9FnrL4Xkx2st1XU2Q8X2fFhcXqaenR9fBiUjXzBcXF2nr1q16+i56A5BXF4tFqlarurcAwCHCf4z9wjJjYRjqEWH1ep2iKKItW7bokF0lVGezimDm8ZZl0cLCQkclo1gs6oU4z5w5o9cyXFpa0rwAM00yG21MhcY5xmP0GRBRx7GgcoCy5p49e+iee+6hW265Radb2MZa/6dSivm+H588efLM0tJS9e233z595MiRU7ZttxYWFuqWZXnUZvch5w9ku7MvfBfKv2FlIxmA1UBA/brneTybzYZf/epXP3L8+PHboihylpaWtkkp2RXy/t3b0M9Zey6hDMPQEUJI3/dlNptluVyOK6WoUqlI1W5NJimlIiJWKBQom83S2NiYzs1RMUC/eyaT0YZicHBQ17qJSDPjYBxAPjJBx+npaapUKjQ4OEiMMbpw4QLZtk3XXHONxghQCgvDkE6fPk1bt27VUcuFCxdoeHhY9/UDHMTQ0cnJSVpcXNRzCW3b1msRDA0NUalUojAMdXMNKh4oCZreGykLQEdEGGapEKAjliqDopt8Bt/3aXR0lA4dOkQHDhzQQ1bXOwy2VCrVMplMampqauq73/3uCyMjI/Taa6+djaKomkqlfNu2EfZjhr9vcPuxiEfkuq6wbVtUq9XLKf+GNQRXxWO+U0m8upn/d+f9bhRFKcdxnDNnzvQ++uijf1AqlfbV6/VrGo3Gznezy+TebEhiRn05EkI4RKQymUzV9/0+xpi0LCtIp9NF3/eHiSgYHx//YavVuqler4/UarVRKaWQUgqllIsLAbTk0dFRPTnYnG+fyWQ0sLd37149AxCKMjo6SvV6XRsFDAXFaraYBoR5ASgJWpalB2pg4RCU9lD/7+np0aE7Uhsg86jXo4QHrz4wMKDLbEiFzNzc7OsnWu6ihJKbY7VN/gH4+Cb+YLZXA4sZGBigW2+9le6++24aHx/XRuZyHh9SqVTq5XJ5qdFoVL///e8/X61WK/Pz88VisVi2bdsDyp/U+M0pvqEQIpTtWX6x67qxlFI2Gg1h9PV/oJSf6ANiAJRSru/7qUwmwx555JFPHT169LfDMByqVqs3Syld6vTca3lxxRiTAAsty4qFEHZCfw3S6XSt1WoN9vb2XsxkMrVms9knpbSHh4dPpVKp2sLCws7bb7/9iYWFhb5KpdI/PDx8enBw8Py11157/l/+5V8eWFhYuD+Koh4p5aBSKgewTgghhRA8l8vRwMCARvt37txJMzMzRNTGA/bu3dvRaotVaJFzg6ADcA2vgb4LT6nU8uw9AGam0gGtx75QykQlAAKMADwBhPEmxRbHACaiOeiUiDrSGhgKGAQM88TxQNFx3AA6Pc+j4eFh2r9/P91+++00MTGh04nkf1312kr4B5FlWZYQQjz33HMvplIp+dZbb5361re+9dro6KgIgqAupcT4bozxwtLdgW3bURzHkZQydhwncl1XxHEsSqWSbuv9ICo/0QYwAKtUADoMQLPZdHO5HP/a17624+tf//ofBUGwrVar7QvDcAt1Uoi1F+ecC6UUF0KwXC63FMexI4TI2LbtZ7PZUhiGWd/3B/bs2fPzarU6xBijycnJk1EU8Vqt1pvL5Wqf/exnD7/44ou7tmzZUvzd3/3dY6dOnUqfO3cus2PHjuLBgwfnv/nNb44cOnTowsGDB4tEFP/N3/zNwDe+8Y2DCwsLn43j+FopZZ4xthOKI4SQruuyoaEhZtaw+/r6tEKPjo7qrj00/gATsG2bLl68SLVaTUcTAPQQVgshOtqOTaQe+8O+Ta8NDACoO/Jzs0/AjCwQkSAnR3uxOSYN5Cbs14wYuisqAB1hHDDCu7+/nw4cOEAHDx6krVu3viPFT36DqlarjTiOoxMnTpw8derUdKlUWnj++edPK6VaUsoWYwxcfoT8gWrz+n0iitDSm+T7Mbj9RIRhnigBfaCUn2jjGwArDEPbdV272Wym77nnnj8oFoufiON4uNFo3JxcsEIpxZVSjHMu0+l02fO84Ww2W87n84VWqzWglLL6+vrmxsbGzp84ceLjBw4c+OG2bdsKp06d2r59+/bC9u3bF6+77rqF73znOzf+4R/+4X/v3Lmz8d3vfnfsT//0T0+7rhu+/fbbqZmZGfuTn/xkSUopLly4QJOTk01qT31hS0tLQggRDw4OekTU+rM/+7Phb37zmx9ttVrjnuftE0LczRi7iTFmW5ZF/f39ynVdFUURk1Iys2RoNvtAseGt0QKLCT4g9sBIwBgQLY8ZJyJdB4chABsvOf8dEQK8OwTlSbPqYRobeG8IuANmF+Jq20SJEm3QKqE0c85p27ZtdNttt9Ftt91GY2NjGkMgWlvxk9+kpJTScRzr3Llzs4VCoWhZVvy1r33tv7LZbBAEQW1hYaHCOfeICIqv5/ep9pp9JtiHhTu7u/pA7yX6ACo/0cY2AFwpZXme52SzWf6Vr3xlz1NPPfUHrVbrpmazeSvnPEilUoVWq3Xt1q1bD6dSKa9YLN54zTXXvGRZlkylUn6tVhu67777Dr/++us70ul08MUvfvEXZ8+e7QmCgKdSqfhP/uRPznz961+/Znx8vPHggw/Onj9/Prdly5Ygm82GRBQtLi66nHMxODgYEpEMgkCmUqmYiOIoikQYhiKdTsdWe5UXUa/X5ezsrNy3b1/AGAt+67d+q++5554b9X1/KIqih5RSn7Vte9JxnF6MFovjWE5MTFBvby+v1Wq6fwDKkxgMKpfLVCgUdC6NEWEovUHB0Ibc3aQDJTeNAfZhpgVQdDMSMPN4E9U3/kMd+oOajHkH3a26RNQRAZgtxa7r0uTkJB04cICuv/566uvrW7fHx6Ewxpjv+3Gj0WgKIaKXX375jXK5XHr11VdPv/7667OUsPgcx/GTfB+ju8zlusNkgGdHjb9arcoVuvqIPqDKT7QBDADRihgAJyIrCAIrlUpZb731VvrRRx99sNVqTaTT6Wh2dva3stns3P79+58+ceLEnVu3br0wMjJSvv766xfeeOONHfv27Zv58z//8+N/93d/d8OhQ4fmbr311lq1WrXfeuut9P79++tJs4mze/duL5VKRUREYRgy13VjIqIoipQQQqbTaUFEUgihOOeCtYeQSqWU4O2lywV1TTZWSsm5uTl5+vRpOnjwYJhcLKy3t3fY87xbieijRPRrmUzmlp6enuullM7g4CANDw9TqVSSvu+z0dFRiuOYgatv2+1FQjAODGE+1v+D8iPvh+LCQJjlNuTXptdGeQ1Govs9hOaMMR2dmNEEFJyIdCRCtByGYzsmLRoAn+u6NDIyQnv27KEbb7yRJicnO5Zbx3YuJ1JKlUqlWLVa9c6fPz87NDTU8+STT/70l7/85dlt27axI0eOnLcsC16+leT3HrVn9YdKqYCIwgTpj6WUEab4WMniHR9UpH8t2YgGQEcBUkrOObeDILC//OUv7zh37tzOXbt2VScmJoL5+fkB27bt3/md37lYrVbTc3Nz2S9+8Yuz8/PzOc/zrB07dgREJD3Psz3PY4ODgzERqaQBRxCRTPJyxRhTlmVB0TGrrXsZM0WdCo9783V9i6JIXbx4Uf7bv/0be+WVV+jxxx+PiYgYY32u6251HGc0m83ewDn/RKvV+vjg4OAkvHmCyqtkXXt2+vRpiqKI8vk8lUqljoEZjUZDpw3otW80Gh28fChud9gNUpDpmfEYOAE+h7o/BCCdSRjq9vTd2AM+6zgObdmyhfbs2UM7d+6kiYkJGhgY0MdpGpzLXDeKtTWSyuXykuu69tmzZ6dOnDhxLgzD2lNPPfVGo9GoxXHccl03MEA+7fGT+n7IOY+SkF8wxiLHcYTrunEURbJcLkt16RivD7zyE20sA0B0KQ2YK6UsxphFRKLVauW+8Y1vjOzcuVP85m/+Zn16ejrX09MD5bZarZabzWYlEbE4jlmCTisiUolnVIwxKWU7grMsq3veQPccAvN5t0GQq7yukgtTzs7Oqh/96Ef03HPPsePHj7OjR48yIYQaGhrimUzG8TzPJaL+dDp9HWPsTinl7ePj47t37do13mw2M4wxPf8eCgcmXRAEWlGQ64OtiBq/yaE3kXoi6kgDkLOD1YjoAUoIr20CeGZUAbCw+z1gBGgcGh4epvHxcbr++utp586denCoCRaux9srpZRlWQxcg9nZ2UIQBEGhUCg8/fTTL4+PjztHjhw5PT8/X0mn06FoL9AJj+8TUcgYCxM+f8jba/XFUkqs2KNHeLVaLRPpJ/oVUn6ijWkALjECRGSVy2V7cHCQERELw9BRSlmpVIpRO1XgjDGeDJ9gjDHGOVfJtlVyUa2k4GQ8pxXeX80orPRYvybbk2TUE088Qb/4xS+oXC7TP//zPzPP8zhjjA8PD9txHDtRFNmcc1cI4XLOc7lcbkRKuWt4eHjPwMDADdlsdm+9Xt81PT2dgpIhXIeHNnNuKC68MdHyrEKkBVBQAIzI0YUQeuQ5vgewD4pt1vtNII+IdB0fYF4mk6H+/n7aunUrTU5O0sTEBG3ZskVPQjKVnmh9ip+cW0qlUqxYLNbDMAxt2+ZPPPHEYcZYMDMzU/jJT35yNpfLRbS8GCfCfnNMd6CUijjnIRkov2VZcqWQP7mMPvD5/kqykZiAkG6lY0QkBgcHVRzHlhDCSqVSsVJKSCk5Y0wkhoARtZdrIoPgw1ZfnLQbxHmn76106zAsCb+fffvb39YdcOl0mhlgG7csy2KMuYwxu9VqBUQ0PT8/v/T222+/9cgjj3z8c5/73FCtVsucPXu2Z3Fxkc3NzelhHXEc69FfUbIiMUuaY0AHRoQA44CyHWPL8/sR5kPJuw0FEenwHnRb08BgNkJvby8NDw/T1q1badeuXbRlyxbKZrN6G2blAMe2rgtCKcU5Z3EcK9/3w2q1GszMzMz5vt967bXXTi4sLJTq9frSyy+/PNPT0xNKKT0ywnxD+UOVLNBpWVaklIrjOI4557HrurFt2zKKIrm4uHi5kJ9WeP6BlA1hANjqY8GI2vk1J9IlKKXaqwIx1r6Cum/UtR2itRWa3uF73Z+75Dm8BWOM/uEf/kEtLS0x3l7liFKpFFNtfgLnbfepVz9KyoRus9nkN9100/C99967f2RkhDKZjHXvvfeyVqtFpVKJ6vU6FYtFWlxcpPn5eRJC0OLiIi0sLOiaPGi0CJNNpTYjCRwncm+E+TAYyOMxbyCVSmnvns/naWhoiEZGRqi3t5cGBwcpl8vpVAM5v7kmwHqU3sQNVHt2AatWq/78/Pzi0NBQ37PPPvvfU1NThS1bttj/+Z//+Wo6nY4sywoymUwTbbpQ+kThA6VUSG2EP6J2FSdijIkuoO9XPuTvlg1hAFYQeFPA0R0hd6L4WBWou3HI3Eb345WUdq3PvJvvajLMww8/rHCcsAlmq6tlWSzBOLAqMldKMdd1rd/+7d/+2MDAwJhSyrEsKyulpEwmQ5OTkx3eF1EAOgLRb4DVccGsQ18AqMII2eHZ0e0HTgLWAEylUtTX10fDw8N6mGcmk9GzB8xyIdINDPUkonWBed0SRZEgaq8NNzMzM9/f35+7cOHC7LFjx85YlhX87Gc/O1mr1eqlUqlm27YfhqGv2nTdgJJluClB9ynx+pzzkHMex3EskOsn+b6I41h7fSJN7vmVDPm7ZcMYgFWiABgBvAbhtJweUNd7pqz2562pwJd5b63HyMfxmvl7lr+QGANcY4kBYLZts8XFxfgLX/jC7uuuu+5my7JYLpfrMYE5GJDke2RZFvX09FBvby+Njo52KBs+jxvCb3h63EOJuxfwwM38LG54blKHcUyrDd/oFqD4eB5FUZxKpewgCCLP87xarbZUKpWWTp48Wfnxj398bHBwkJ84ceLi/Px8NZ/PC96e0INJvPDyyPNjKWXIGIssy4qllGFiWGLbtuUqXr+d7C+H/R2Hu64f9QGTDWMAuqTbCOAiwQKi5toBEDP8X2l73dtdl0Kv43l7551rHprH0/FcLbc0d3zGsizWaDTEnj17cocOHTqYTqd7UqlU1nEcxzAUK+36EsOwwrFppTa30U3mMVF9GIzV9m16+HcrjuOwJIqRYRjG6XTaPXPmzHSpVKrk8/nU17/+9Wf6+/sZYyx4/vnnz/X394vEk/v1ej1IQDwztw+IKEoeR5zzmDEWJwi/sJaX51JRFIkVvD7Rr3jI3y0bygCwSxcKIeNxt9K8kyvvcn/oakrOVniv/calCt/9fsfwCvN7+K6BMEvLspTv++JLX/rS/xgZGdnDObdSqVSPcTyr/t53AKataSi6t/VuwvfVxKQfo4qwsLCw1N/fny+VSpVXXnnl5OTk5OBPf/rTY1NTU0XP85qzs7OlM2fOeFEUeYODg7EQIhBCBAmIFyKvJ6KAcx5LKUNqLygbM8YiIYSQUsacc+G6rnQcJxZCyGSFHkVtxZeJ8fvQeH1TNpQBIFpWrFUMAZ6vqphryLtR8rW1Za2draD8xnaJMYZyoXQcR3meF99xxx1Dk5OTNzqOk3Ecp48lpAXLsniiuGsagvXIlVLotbYPTwqcVgiharVakM/n04uLi7U4jiPHcezjx4+fkVIGxWKx3Gq1mk8//fTz1Wq13t/fr06ePFmybTu0LCskolAIEVBb2aH4UfI8UkphJemY2qF/LKWMGWMyofFKzrkZ7us8/8OS668mG84AQLqiAaLVI4KVxPzsmsbi/0bJ36F0HDMUI6nFy3w+z+6///7ryuXy2SAIwh07dtxPRMzzvIpt2xnXdTO2bbMgCITVFoToWtHWMjpX7Ucl+4dXj+NYMsaY67qsUChUM5lMijHGz58/P5vJZJxKpVIJgiB46aWXTibsy+Dw4cNnd+zY4c7NzS0tLS01FxYWkLcHyOMpUX5Klo2nZcWPofgI9TnnQPalZVnS931Rr9eVTKzoh6G8t17ZsAaA6NIwew2DsNY23isFX0t01JKU1RTnXCYXpBRCxIwxMTMzM+u6bv7cuXMX5ufn58bHxz/S39+/s1gszvq+H23dunXn2NjYQLVaDT3P83t7e/Ou67Kkd0HZts0TfoBqVxX1qHLFOWdEy9OKjFKbNiBSSg3K4fla2+Gcs3Q6zVqtllxaWmp9lCDBAAAJjElEQVT19fX1LC0tNarVai2dTtue5wUXL15snDlzZmb79u0DzzzzzIk33njj4v79+4d/9KMfvR0EQTA4OMh8328eO3YsSKVSwrbtmNpeHopuPo4ZY5FSKibD4wshhFIKHl/ati0sy1JxHIuFhQXk+fRhD/dXkg3BBPwVlY6qBWu7HZbNZq2+vj4rCAI7DEPbsiyXc56K4zhVr9f5LbfcMnbLLbfsmJqaip977rn6ww8/fNP+/fsPLC0thdPT00sHDhzYNzIysj0IgrhUKtV27NixbWBgoL9cLteIiDKZTHpgYMCtVqsREal0Ou0mPH7JGKN0Os2TDjzV5iAxCsNQEpF+L4oimWyLNxqNSCml0um0G0WRjOM4dhzHdl2XT01NFSzLYplMJn327NmLQRC0UqmUpZRS3/ve916enJzM+b7vffvb3z45OjrKoygKG42GT0RxJpMRSqlICBFZlhUxxmKlVJSE9zERRYayx0QUK6UixpjA66rd9Ruz9rQmKL4UQshms4k8X6P7tHJFZ6XnHxrZNABXV1aiOLOhoSGLMWaHYehIKW3XdV0hRMp13fTS0pLjum5mZGQk32w2nWKxaF933XXDH/nIR7bX63X25ptvNj/+8Y/vuO22266fmZlZqlar4datWwc+9rGP3Tw7O7tQLBbre/fu3d7b29sbBEE4PT09v2/fvt1KKdZsNltxHMdDQ0MDnHMOYo1lWXYYhlGtVquPj49vqdfrrYWFhVJvb2/WcRzX9/3g9OnTF2688cZdhUKheOrUqZlt27YNlEqlWqVSadRqtdo111wzcPTo0fPHjh0r3HDDDfljx44tzM/P1/P5PHNdVwZBEHLOY9u2hVIqllLCo8em0if3uEVKKcHaq0LHnHMhpYyFEJKIBOdcJIovOedKCCFWUXyiy5dzP5SyaQCuvuAcIwrg+XzeymQyVhiGVhzHDmPMsW3biePYdV03LYRw8Zgxlm42m7ZlWZnx8fFeIYR9/vz5uLe3N/OJT3zimlarRUeOHCndcccdW3fs2DHkum76mWeeOX///fdfu3379pFTp04VwzCMx8bG+m644YZdzzzzzGtbtmzJ7d69eyyOYzp//vy8lFLefPPNu15++eUzPT09diaTcXO5XOaFF154e/fu3YNDQ0P5H/7wh8cHBwcdzrnKZrPuz372s3Pj4+PpwcFB9/vf//65sbExh3MuyuWyp5QS6XRa2rYtpZSRlBJKrBU6CesFdSo8bgjpRTLwBWG+YIxJzrm0bVvati2ISIZhqIIgkK1WSys+LRMyP1RlvXcqmwbg6ko3eYkREbMsi4+MjFhRFNlxHFtxHNucc9u2bVcI4TDGXM55SkrpEJHLOU8ppdwoimzLslzbtp1klqHluq7DGHNKpVI8NjaWnZiY6J2ammouLS3J4eHh9J133rntlVdeKc7MzPh33XXXmOM4VrlcDk6cOFF94IEHdk1NTS29/fbbS+Pj45mJiYn8/Px887XXXlu87bbbBovFYrNQKPjpdJqNjo6mSqWSV6/Xw927d2dnZmbqnudFnHPluq6MoihmjImkw1IkITpmKGB2Qmx6dPM1PGaMScZYnHxPymTQqhnmJ5x9FYahbLVaKokI1GUUn1Z4/qGXTQNwdaWbqMSABWQyGau3t9eKosgSQphGwEkmEruMMZuIHCJyichhjNlKKTt5bBGRpZSyiMiybduOooglo8Bszjlv090ZsyyLK6VYtVqNx8bGMo7jsHK5HCbrBNjZbNYqFAq+67o8m81y3/eF53lxJpNhrusy3/djKaVKpgrLIAiiZEgoiFpxci8MZe5Q6q7X8flYtZtuBG5Jr7YAQGp4e8naA11Vo9GQvu9revg6FJ9Wee1DL5sG4OrLJVGAYQT4CkbAchzHkVLaUkqbiOzEEOCGYakWYwwGAL0EFmOMJ9N9OOfcWq58tQ1BGIZKtRuCUKPXDULJnARlzApQSimZPJZEJFibVShle/x5x1wEhOi0rOj6cfJZQe0QXSTbEklJDp5eKz1ye8uyZAI+qiiKVBLmQ+mlofSQTa//DmTTAFx9uSQKoBWMQBzHXAhhCSEspZRtWZbFOedKKRgCDEaBwtvUHpjCk89x1e6S1BUHWk47iNq9BywhIfHEXXaXVVcCzHCTCXlJsmS8umqPR5OJ0oNPL5NyolZ8vJ+E9yIxLCLZlu6+MwA9SUSqK7dfr7d/t0SxD6VsGoD3Ri5rBPr7+y0hBEM0INsLimBegMUY41JKDEuFonMppZXU8U2lt7r3pXSHMlsmAXSJQYxbaYhKhyFIRI9Pg6Kz5YGZMgHwlJRScs5VQhLSvfaWZcmECanD+TAMle/7CmO3kxs6DjfD/CssmwbgvZGVmpY6jEA6neY9PT3MsiwuhNA3GAJqGwNORAwen9qK3ZFWqK5ZCYnCcBiAdR5vhwFIymnw7GbuD4OgjQKUXUqppJTC2IbinCvk9HgeRZFKwnvT03ccQ5fSr+TdNxX/XcqmAXjvZKXuQNMIEBFpQ+A4DpdSMiEEgyGQUiKMZ0nozzjnetHU7ufGfmAAVjqObkGooMkzzGhgIiIlhFCUsBplIsyg15rKntyrpEVYEpHyPE9xzlUYhmqdSr/SMW6G+VdANg3AeyurGQHq8tgsm80yx3GYbds8WYaLERGTUvIEuGNSSialxPfY8mb0c+Kcc/T0r7D/1UQBIDT583gP2gnDkNCbL1F2xpiK41gli4qqIAguUfjkGJVabkfeVPr3UDYNwHsvK51z0xAQGYaAEqVOp9MslUrxZHgnM41C4vEJxiCZD8DZ8vJY3Y1CrOs59qvM57ip9tAQmSi2Mu47Gmp831fJZ1UQBArPqUupE8Ohl+4y3utW8E2lv8qyaQDeP1nt3GulZ+0mnJXmH2ijkE6nMWZMK3Umk+nYdjst75zSozobqy5pvErmAXY0UiUUW20sOOfk+77yfV8lx0q0QkmOL09oXo/Cr/T6plwl2TQA77+sFhGYyqCBe9aus635fXTs6Q8wxvL5/Dv6r+v1ug71IUknYbdoL20UF7TCU6f331T4DSabBmDjiDkAZSWsAO/hOTNDdPM7K+T771a5OrbRVT00w3jsQ630vRUebyr8BpFNA7BxZaWJSN3lxJXIPCuVHNc9qBPSFWWslJd3P1+Ljbep8BtUNg3AB09WU6a1Uol3+z+vBcKtdgybiv4Bkk0D8KslVyLsfz+2vSmbsimbsimbsimbsimbsimbsimbsimbsimbsimbsilXQ/4PAUvL22UYNNgAAAAASUVORK5CYII="; - private const string _mareLogoNsfw = "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAFzGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjU2IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjU2IgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHRpZmY6SW1hZ2VMZW5ndGg9IjI1NiIKICAgdGlmZjpJbWFnZVdpZHRoPSIyNTYiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjcyLzEiCiAgIHRpZmY6WVJlc29sdXRpb249IjcyLzEiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIw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"; - private const string _mareSupporter = "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"; + private const string _lightlessLogo = "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAFQGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjU2IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjU2IgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHRpZmY6SW1hZ2VMZW5ndGg9IjI1NiIKICAgdGlmZjpJbWFnZVdpZHRoPSIyNTYiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjcyLzEiCiAgIHRpZmY6WVJlc29sdXRpb249IjcyLzEiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIw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"; + private const string _lightlessLogoLoading = "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAFQGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjU2IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjU2IgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHRpZmY6SW1hZ2VMZW5ndGg9IjI1NiIKICAgdGlmZjpJbWFnZVdpZHRoPSIyNTYiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjcyLzEiCiAgIHRpZmY6WVJlc29sdXRpb249IjcyLzEiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIw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"; + private const string _lightlessLogoNsfw = "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAFzGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjU2IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjU2IgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHRpZmY6SW1hZ2VMZW5ndGg9IjI1NiIKICAgdGlmZjpJbWFnZVdpZHRoPSIyNTYiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjcyLzEiCiAgIHRpZmY6WVJlc29sdXRpb249IjcyLzEiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIw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"; + private const string _lightlessSupporter = "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"; private const string _noDescription = "-- User has no description set --"; private const string _nsfw = "Profile not displayed - NSFW"; private readonly ApiController _apiController; - private readonly MareConfigService _mareConfigService; - private readonly ConcurrentDictionary _mareProfiles = new(UserDataComparer.Instance); + private readonly LightlessConfigService _lightlessConfigService; + private readonly ConcurrentDictionary _lightlessProfiles = new(UserDataComparer.Instance); - private readonly MareProfileData _defaultProfileData = new(IsFlagged: false, IsNSFW: false, _mareLogo, string.Empty, _noDescription); - private readonly MareProfileData _loadingProfileData = new(IsFlagged: false, IsNSFW: false, _mareLogoLoading, string.Empty, "Loading Data from server..."); - private readonly MareProfileData _nsfwProfileData = new(IsFlagged: false, IsNSFW: false, _mareLogoNsfw, string.Empty, _nsfw); + private readonly LightlessProfileData _defaultProfileData = new(IsFlagged: false, IsNSFW: false, _lightlessLogo, string.Empty, _noDescription); + private readonly LightlessProfileData _loadingProfileData = new(IsFlagged: false, IsNSFW: false, _lightlessLogoLoading, string.Empty, "Loading Data from server..."); + private readonly LightlessProfileData _nsfwProfileData = new(IsFlagged: false, IsNSFW: false, _lightlessLogoNsfw, string.Empty, _nsfw); - public MareProfileManager(ILogger logger, MareConfigService mareConfigService, - MareMediator mediator, ApiController apiController) : base(logger, mediator) + public LightlessProfileManager(ILogger logger, LightlessConfigService lightlessConfigService, + LightlessMediator mediator, ApiController apiController) : base(logger, mediator) { - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; _apiController = apiController; Mediator.Subscribe(this, (msg) => { if (msg.UserData != null) - _mareProfiles.Remove(msg.UserData, out _); + _lightlessProfiles.Remove(msg.UserData, out _); else - _mareProfiles.Clear(); + _lightlessProfiles.Clear(); }); - Mediator.Subscribe(this, (_) => _mareProfiles.Clear()); + Mediator.Subscribe(this, (_) => _lightlessProfiles.Clear()); } - public MareProfileData GetMareProfile(UserData data) + public LightlessProfileData GetLightlessProfile(UserData data) { - if (!_mareProfiles.TryGetValue(data, out var profile)) + if (!_lightlessProfiles.TryGetValue(data, out var profile)) { - _ = Task.Run(() => GetMareProfileFromService(data)); + _ = Task.Run(() => GetLightlessProfileFromService(data)); return (_loadingProfileData); } return (profile); } - private async Task GetMareProfileFromService(UserData data) + private async Task GetLightlessProfileFromService(UserData data) { try { - _mareProfiles[data] = _loadingProfileData; + _lightlessProfiles[data] = _loadingProfileData; var profile = await _apiController.UserGetProfile(new API.Dto.User.UserDto(data)).ConfigureAwait(false); - MareProfileData profileData = new(profile.Disabled, profile.IsNSFW ?? false, - string.IsNullOrEmpty(profile.ProfilePictureBase64) ? _mareLogo : profile.ProfilePictureBase64, - !string.IsNullOrEmpty(data.Alias) && !string.Equals(data.Alias, data.UID, StringComparison.Ordinal) ? _mareSupporter : string.Empty, + LightlessProfileData profileData = new(profile.Disabled, profile.IsNSFW ?? false, + string.IsNullOrEmpty(profile.ProfilePictureBase64) ? _lightlessLogo : profile.ProfilePictureBase64, + !string.IsNullOrEmpty(data.Alias) && !string.Equals(data.Alias, data.UID, StringComparison.Ordinal) ? _lightlessSupporter : string.Empty, string.IsNullOrEmpty(profile.Description) ? _noDescription : profile.Description); - if (profileData.IsNSFW && !_mareConfigService.Current.ProfilesAllowNsfw && !string.Equals(_apiController.UID, data.UID, StringComparison.Ordinal)) + if (profileData.IsNSFW && !_lightlessConfigService.Current.ProfilesAllowNsfw && !string.Equals(_apiController.UID, data.UID, StringComparison.Ordinal)) { - _mareProfiles[data] = _nsfwProfileData; + _lightlessProfiles[data] = _nsfwProfileData; } else { - _mareProfiles[data] = profileData; + _lightlessProfiles[data] = profileData; } } catch (Exception ex) { // if fails save DefaultProfileData to dict Logger.LogWarning(ex, "Failed to get Profile from service for user {user}", data); - _mareProfiles[data] = _defaultProfileData; + _lightlessProfiles[data] = _defaultProfileData; } } } \ No newline at end of file diff --git a/LightlessSync/Services/Mediator/DisposableMediatorSubscriberBase.cs b/LightlessSync/Services/Mediator/DisposableMediatorSubscriberBase.cs index d3f422d..66a70fc 100644 --- a/LightlessSync/Services/Mediator/DisposableMediatorSubscriberBase.cs +++ b/LightlessSync/Services/Mediator/DisposableMediatorSubscriberBase.cs @@ -4,7 +4,7 @@ namespace LightlessSync.Services.Mediator; public abstract class DisposableMediatorSubscriberBase : MediatorSubscriberBase, IDisposable { - protected DisposableMediatorSubscriberBase(ILogger logger, MareMediator mediator) : base(logger, mediator) + protected DisposableMediatorSubscriberBase(ILogger logger, LightlessMediator mediator) : base(logger, mediator) { } diff --git a/LightlessSync/Services/Mediator/IMediatorSubscriber.cs b/LightlessSync/Services/Mediator/IMediatorSubscriber.cs index b2023af..76d07a1 100644 --- a/LightlessSync/Services/Mediator/IMediatorSubscriber.cs +++ b/LightlessSync/Services/Mediator/IMediatorSubscriber.cs @@ -2,5 +2,5 @@ public interface IMediatorSubscriber { - MareMediator Mediator { get; } + LightlessMediator Mediator { get; } } \ No newline at end of file diff --git a/LightlessSync/Services/Mediator/MareMediator.cs b/LightlessSync/Services/Mediator/MareMediator.cs index c082fe4..52399e2 100644 --- a/LightlessSync/Services/Mediator/MareMediator.cs +++ b/LightlessSync/Services/Mediator/MareMediator.cs @@ -1,4 +1,4 @@ -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System.Collections.Concurrent; @@ -7,23 +7,23 @@ using System.Text; namespace LightlessSync.Services.Mediator; -public sealed class MareMediator : IHostedService +public sealed class LightlessMediator : IHostedService { private readonly object _addRemoveLock = new(); private readonly ConcurrentDictionary _lastErrorTime = []; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly CancellationTokenSource _loopCts = new(); private readonly ConcurrentQueue _messageQueue = new(); private readonly PerformanceCollectorService _performanceCollector; - private readonly MareConfigService _mareConfigService; + private readonly LightlessConfigService _lightlessConfigService; private readonly ConcurrentDictionary> _subscriberDict = []; private bool _processQueue = false; private readonly ConcurrentDictionary _genericExecuteMethods = new(); - public MareMediator(ILogger logger, PerformanceCollectorService performanceCollector, MareConfigService mareConfigService) + public LightlessMediator(ILogger logger, PerformanceCollectorService performanceCollector, LightlessConfigService lightlessConfigService) { _logger = logger; _performanceCollector = performanceCollector; - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; } public void PrintSubscriberInfo() @@ -59,7 +59,7 @@ public sealed class MareMediator : IHostedService public Task StartAsync(CancellationToken cancellationToken) { - _logger.LogInformation("Starting MareMediator"); + _logger.LogInformation("Starting LightlessMediator"); _ = Task.Run(async () => { @@ -83,7 +83,7 @@ public sealed class MareMediator : IHostedService } }); - _logger.LogInformation("Started MareMediator"); + _logger.LogInformation("Started LightlessMediator"); return Task.CompletedTask; } @@ -164,7 +164,7 @@ public sealed class MareMediator : IHostedService { try { - if (_mareConfigService.Current.LogPerformance) + if (_lightlessConfigService.Current.LogPerformance) { var isSameThread = message.KeepThreadContext ? "$" : string.Empty; _performanceCollector.LogPerformance(this, $"{isSameThread}Execute>{message.GetType().Name}+{subscriber.Subscriber.GetType().Name}>{subscriber.Subscriber}", diff --git a/LightlessSync/Services/Mediator/MediatorSubscriberBase.cs b/LightlessSync/Services/Mediator/MediatorSubscriberBase.cs index 3cde1ec..c9cd8ec 100644 --- a/LightlessSync/Services/Mediator/MediatorSubscriberBase.cs +++ b/LightlessSync/Services/Mediator/MediatorSubscriberBase.cs @@ -4,7 +4,7 @@ namespace LightlessSync.Services.Mediator; public abstract class MediatorSubscriberBase : IMediatorSubscriber { - protected MediatorSubscriberBase(ILogger logger, MareMediator mediator) + protected MediatorSubscriberBase(ILogger logger, LightlessMediator mediator) { Logger = logger; @@ -12,7 +12,7 @@ public abstract class MediatorSubscriberBase : IMediatorSubscriber Mediator = mediator; } - public MareMediator Mediator { get; } + public LightlessMediator Mediator { get; } protected ILogger Logger { get; } protected void UnsubscribeAll() diff --git a/LightlessSync/Services/Mediator/Messages.cs b/LightlessSync/Services/Mediator/Messages.cs index 8c6b3f7..f235332 100644 --- a/LightlessSync/Services/Mediator/Messages.cs +++ b/LightlessSync/Services/Mediator/Messages.cs @@ -3,7 +3,7 @@ using LightlessSync.API.Data; using LightlessSync.API.Dto; using LightlessSync.API.Dto.CharaData; using LightlessSync.API.Dto.Group; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.PlayerData.Handlers; using LightlessSync.PlayerData.Pairs; using LightlessSync.Services.Events; diff --git a/LightlessSync/Services/Mediator/WindowMediatorSubscriberBase.cs b/LightlessSync/Services/Mediator/WindowMediatorSubscriberBase.cs index 181fce8..c29192d 100644 --- a/LightlessSync/Services/Mediator/WindowMediatorSubscriberBase.cs +++ b/LightlessSync/Services/Mediator/WindowMediatorSubscriberBase.cs @@ -8,7 +8,7 @@ public abstract class WindowMediatorSubscriberBase : Window, IMediatorSubscriber protected readonly ILogger _logger; private readonly PerformanceCollectorService _performanceCollectorService; - protected WindowMediatorSubscriberBase(ILogger logger, MareMediator mediator, string name, + protected WindowMediatorSubscriberBase(ILogger logger, LightlessMediator mediator, string name, PerformanceCollectorService performanceCollectorService) : base(name) { _logger = logger; @@ -25,7 +25,7 @@ public abstract class WindowMediatorSubscriberBase : Window, IMediatorSubscriber }); } - public MareMediator Mediator { get; } + public LightlessMediator Mediator { get; } public void Dispose() { diff --git a/LightlessSync/Services/NotificationService.cs b/LightlessSync/Services/NotificationService.cs index 83b1176..4ee361b 100644 --- a/LightlessSync/Services/NotificationService.cs +++ b/LightlessSync/Services/NotificationService.cs @@ -1,12 +1,12 @@ using Dalamud.Game.Text.SeStringHandling; using Dalamud.Interface.ImGuiNotification; using Dalamud.Plugin.Services; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.Services.Mediator; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -using NotificationType = LightlessSync.MareConfiguration.Models.NotificationType; +using NotificationType = LightlessSync.LightlessConfiguration.Models.NotificationType; namespace LightlessSync.Services; @@ -15,12 +15,12 @@ public class NotificationService : DisposableMediatorSubscriberBase, IHostedServ private readonly DalamudUtilService _dalamudUtilService; private readonly INotificationManager _notificationManager; private readonly IChatGui _chatGui; - private readonly MareConfigService _configurationService; + private readonly LightlessConfigService _configurationService; - public NotificationService(ILogger logger, MareMediator mediator, + public NotificationService(ILogger logger, LightlessMediator mediator, DalamudUtilService dalamudUtilService, INotificationManager notificationManager, - IChatGui chatGui, MareConfigService configurationService) : base(logger, mediator) + IChatGui chatGui, LightlessConfigService configurationService) : base(logger, mediator) { _dalamudUtilService = dalamudUtilService; _notificationManager = notificationManager; diff --git a/LightlessSync/Services/PerformanceCollectorService.cs b/LightlessSync/Services/PerformanceCollectorService.cs index f3b9da0..877cc1c 100644 --- a/LightlessSync/Services/PerformanceCollectorService.cs +++ b/LightlessSync/Services/PerformanceCollectorService.cs @@ -1,4 +1,4 @@ -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.Utils; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; @@ -12,19 +12,19 @@ public sealed class PerformanceCollectorService : IHostedService { private const string _counterSplit = "=>"; private readonly ILogger _logger; - private readonly MareConfigService _mareConfigService; + private readonly LightlessConfigService _lightlessConfigService; public ConcurrentDictionary> PerformanceCounters { get; } = new(StringComparer.Ordinal); private readonly CancellationTokenSource _periodicLogPruneTaskCts = new(); - public PerformanceCollectorService(ILogger logger, MareConfigService mareConfigService) + public PerformanceCollectorService(ILogger logger, LightlessConfigService lightlessConfigService) { _logger = logger; - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; } - public T LogPerformance(object sender, MareInterpolatedStringHandler counterName, Func func, int maxEntries = 10000) + public T LogPerformance(object sender, LightlessInterpolatedStringHandler counterName, Func func, int maxEntries = 10000) { - if (!_mareConfigService.Current.LogPerformance) return func.Invoke(); + if (!_lightlessConfigService.Current.LogPerformance) return func.Invoke(); string cn = sender.GetType().Name + _counterSplit + counterName.BuildMessage(); @@ -49,9 +49,9 @@ public sealed class PerformanceCollectorService : IHostedService } } - public void LogPerformance(object sender, MareInterpolatedStringHandler counterName, Action act, int maxEntries = 10000) + public void LogPerformance(object sender, LightlessInterpolatedStringHandler counterName, Action act, int maxEntries = 10000) { - if (!_mareConfigService.Current.LogPerformance) { act.Invoke(); return; } + if (!_lightlessConfigService.Current.LogPerformance) { act.Invoke(); return; } var cn = sender.GetType().Name + _counterSplit + counterName.BuildMessage(); @@ -93,7 +93,7 @@ public sealed class PerformanceCollectorService : IHostedService internal void PrintPerformanceStats(int limitBySeconds = 0) { - if (!_mareConfigService.Current.LogPerformance) + if (!_lightlessConfigService.Current.LogPerformance) { _logger.LogWarning("Performance counters are disabled"); } diff --git a/LightlessSync/Services/PlayerPerformanceService.cs b/LightlessSync/Services/PlayerPerformanceService.cs index e9265f7..ef43849 100644 --- a/LightlessSync/Services/PlayerPerformanceService.cs +++ b/LightlessSync/Services/PlayerPerformanceService.cs @@ -1,6 +1,6 @@ using LightlessSync.API.Data; using LightlessSync.FileCache; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.PlayerData.Handlers; using LightlessSync.Services.Events; using LightlessSync.Services.Mediator; @@ -15,11 +15,11 @@ public class PlayerPerformanceService private readonly FileCacheManager _fileCacheManager; private readonly XivDataAnalyzer _xivDataAnalyzer; private readonly ILogger _logger; - private readonly MareMediator _mediator; + private readonly LightlessMediator _mediator; private readonly PlayerPerformanceConfigService _playerPerformanceConfigService; private readonly Dictionary _warnedForPlayers = new(StringComparer.Ordinal); - public PlayerPerformanceService(ILogger logger, MareMediator mediator, + public PlayerPerformanceService(ILogger logger, LightlessMediator mediator, PlayerPerformanceConfigService playerPerformanceConfigService, FileCacheManager fileCacheManager, XivDataAnalyzer xivDataAnalyzer) { @@ -94,7 +94,7 @@ public class PlayerPerformanceService } _mediator.Publish(new NotificationMessage($"{pairHandler.Pair.PlayerName} ({pairHandler.Pair.UserData.AliasOrUID}) exceeds performance threshold(s)", - warningText, MareConfiguration.Models.NotificationType.Warning)); + warningText, LightlessConfiguration.Models.NotificationType.Warning)); } return true; @@ -142,7 +142,7 @@ public class PlayerPerformanceService $"Player {pair.PlayerName} ({pair.UserData.AliasOrUID}) exceeded your configured triangle auto pause threshold (" + $"{triUsage}/{config.TrisAutoPauseThresholdThousands * 1000} triangles)" + $" and has been automatically paused.", - MareConfiguration.Models.NotificationType.Warning)); + LightlessConfiguration.Models.NotificationType.Warning)); _mediator.Publish(new EventMessage(new Event(pair.PlayerName, pair.UserData, nameof(PlayerPerformanceService), EventSeverity.Warning, $"Exceeds triangle threshold: automatically paused ({triUsage}/{config.TrisAutoPauseThresholdThousands * 1000} triangles)"))); @@ -218,7 +218,7 @@ public class PlayerPerformanceService $"Player {pair.PlayerName} ({pair.UserData.AliasOrUID}) exceeded your configured VRAM auto pause threshold (" + $"{UiSharedService.ByteToString(vramUsage, addSuffix: true)}/{config.VRAMSizeAutoPauseThresholdMiB}MiB)" + $" and has been automatically paused.", - MareConfiguration.Models.NotificationType.Warning)); + LightlessConfiguration.Models.NotificationType.Warning)); _mediator.Publish(new PauseMessage(pair.UserData)); diff --git a/LightlessSync/Services/PluginWarningNotificationService.cs b/LightlessSync/Services/PluginWarningNotificationService.cs index c604769..ad1a25b 100644 --- a/LightlessSync/Services/PluginWarningNotificationService.cs +++ b/LightlessSync/Services/PluginWarningNotificationService.cs @@ -1,8 +1,8 @@ using LightlessSync.API.Data; using LightlessSync.API.Data.Comparer; using LightlessSync.Interop.Ipc; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.Services.Mediator; using System.Collections.Concurrent; @@ -12,12 +12,12 @@ public class PluginWarningNotificationService { private readonly ConcurrentDictionary _cachedOptionalPluginWarnings = new(UserDataComparer.Instance); private readonly IpcManager _ipcManager; - private readonly MareConfigService _mareConfigService; - private readonly MareMediator _mediator; + private readonly LightlessConfigService _lightlessConfigService; + private readonly LightlessMediator _mediator; - public PluginWarningNotificationService(MareConfigService mareConfigService, IpcManager ipcManager, MareMediator mediator) + public PluginWarningNotificationService(LightlessConfigService lightlessConfigService, IpcManager ipcManager, LightlessMediator mediator) { - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; _ipcManager = ipcManager; _mediator = mediator; } @@ -28,11 +28,11 @@ public class PluginWarningNotificationService { _cachedOptionalPluginWarnings[user] = warning = new() { - ShownCustomizePlusWarning = _mareConfigService.Current.DisableOptionalPluginWarnings, - ShownHeelsWarning = _mareConfigService.Current.DisableOptionalPluginWarnings, - ShownHonorificWarning = _mareConfigService.Current.DisableOptionalPluginWarnings, - ShownMoodlesWarning = _mareConfigService.Current.DisableOptionalPluginWarnings, - ShowPetNicknamesWarning = _mareConfigService.Current.DisableOptionalPluginWarnings + ShownCustomizePlusWarning = _lightlessConfigService.Current.DisableOptionalPluginWarnings, + ShownHeelsWarning = _lightlessConfigService.Current.DisableOptionalPluginWarnings, + ShownHonorificWarning = _lightlessConfigService.Current.DisableOptionalPluginWarnings, + ShownMoodlesWarning = _lightlessConfigService.Current.DisableOptionalPluginWarnings, + ShowPetNicknamesWarning = _lightlessConfigService.Current.DisableOptionalPluginWarnings }; } diff --git a/LightlessSync/Services/ServerConfiguration/ServerConfigurationManager.cs b/LightlessSync/Services/ServerConfiguration/ServerConfigurationManager.cs index f731fa1..8bff7f9 100644 --- a/LightlessSync/Services/ServerConfiguration/ServerConfigurationManager.cs +++ b/LightlessSync/Services/ServerConfiguration/ServerConfigurationManager.cs @@ -1,7 +1,7 @@ using Dalamud.Utility; using LightlessSync.API.Routes; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.Services.Mediator; using LightlessSync.WebAPI; using Microsoft.AspNetCore.Http.Connections; @@ -18,25 +18,25 @@ public class ServerConfigurationManager { private readonly ServerConfigService _configService; private readonly DalamudUtilService _dalamudUtil; - private readonly MareConfigService _mareConfigService; + private readonly LightlessConfigService _lightlessConfigService; private readonly HttpClient _httpClient; private readonly ILogger _logger; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly NotesConfigService _notesConfig; private readonly ServerTagConfigService _serverTagConfig; public ServerConfigurationManager(ILogger logger, ServerConfigService configService, ServerTagConfigService serverTagConfig, NotesConfigService notesConfig, DalamudUtilService dalamudUtil, - MareConfigService mareConfigService, HttpClient httpClient, MareMediator mareMediator) + LightlessConfigService lightlessConfigService, HttpClient httpClient, LightlessMediator lightlessMediator) { _logger = logger; _configService = configService; _serverTagConfig = serverTagConfig; _notesConfig = notesConfig; _dalamudUtil = dalamudUtil; - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; _httpClient = httpClient; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; EnsureMainExists(); } @@ -298,7 +298,7 @@ public class ServerConfigurationManager { CurrentServerTagStorage().ServerAvailablePairTags.Add(tag); _serverTagConfig.Save(); - _mareMediator.Publish(new RefreshUiMessage()); + _lightlessMediator.Publish(new RefreshUiMessage()); } internal void AddTagForUid(string uid, string tagName) @@ -306,7 +306,7 @@ public class ServerConfigurationManager if (CurrentServerTagStorage().UidServerPairedUserTags.TryGetValue(uid, out var tags)) { tags.Add(tagName); - _mareMediator.Publish(new RefreshUiMessage()); + _lightlessMediator.Publish(new RefreshUiMessage()); } else { @@ -410,7 +410,7 @@ public class ServerConfigurationManager RemoveTagForUid(uid, tag, save: false); } _serverTagConfig.Save(); - _mareMediator.Publish(new RefreshUiMessage()); + _lightlessMediator.Publish(new RefreshUiMessage()); } internal void RemoveTagForUid(string uid, string tagName, bool save = true) @@ -422,7 +422,7 @@ public class ServerConfigurationManager if (save) { _serverTagConfig.Save(); - _mareMediator.Publish(new RefreshUiMessage()); + _lightlessMediator.Publish(new RefreshUiMessage()); } } } @@ -463,7 +463,7 @@ public class ServerConfigurationManager internal void AutoPopulateNoteForUid(string uid, string note) { - if (!_mareConfigService.Current.AutoPopulateEmptyNotesFromCharaName + if (!_lightlessConfigService.Current.AutoPopulateEmptyNotesFromCharaName || GetNoteForUid(uid) != null) return; diff --git a/LightlessSync/Services/UiFactory.cs b/LightlessSync/Services/UiFactory.cs index 9b743f2..aaa7f96 100644 --- a/LightlessSync/Services/UiFactory.cs +++ b/LightlessSync/Services/UiFactory.cs @@ -12,43 +12,43 @@ namespace LightlessSync.Services; public class UiFactory { private readonly ILoggerFactory _loggerFactory; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly ApiController _apiController; private readonly UiSharedService _uiSharedService; private readonly PairManager _pairManager; private readonly ServerConfigurationManager _serverConfigManager; - private readonly MareProfileManager _mareProfileManager; + private readonly LightlessProfileManager _lightlessProfileManager; private readonly PerformanceCollectorService _performanceCollectorService; - public UiFactory(ILoggerFactory loggerFactory, MareMediator mareMediator, ApiController apiController, + public UiFactory(ILoggerFactory loggerFactory, LightlessMediator lightlessMediator, ApiController apiController, UiSharedService uiSharedService, PairManager pairManager, ServerConfigurationManager serverConfigManager, - MareProfileManager mareProfileManager, PerformanceCollectorService performanceCollectorService) + LightlessProfileManager lightlessProfileManager, PerformanceCollectorService performanceCollectorService) { _loggerFactory = loggerFactory; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _apiController = apiController; _uiSharedService = uiSharedService; _pairManager = pairManager; _serverConfigManager = serverConfigManager; - _mareProfileManager = mareProfileManager; + _lightlessProfileManager = lightlessProfileManager; _performanceCollectorService = performanceCollectorService; } public SyncshellAdminUI CreateSyncshellAdminUi(GroupFullInfoDto dto) { - return new SyncshellAdminUI(_loggerFactory.CreateLogger(), _mareMediator, + return new SyncshellAdminUI(_loggerFactory.CreateLogger(), _lightlessMediator, _apiController, _uiSharedService, _pairManager, dto, _performanceCollectorService); } public StandaloneProfileUi CreateStandaloneProfileUi(Pair pair) { - return new StandaloneProfileUi(_loggerFactory.CreateLogger(), _mareMediator, - _uiSharedService, _serverConfigManager, _mareProfileManager, _pairManager, pair, _performanceCollectorService); + return new StandaloneProfileUi(_loggerFactory.CreateLogger(), _lightlessMediator, + _uiSharedService, _serverConfigManager, _lightlessProfileManager, _pairManager, pair, _performanceCollectorService); } public PermissionWindowUI CreatePermissionPopupUi(Pair pair) { return new PermissionWindowUI(_loggerFactory.CreateLogger(), pair, - _mareMediator, _uiSharedService, _apiController, _performanceCollectorService); + _lightlessMediator, _uiSharedService, _apiController, _performanceCollectorService); } } diff --git a/LightlessSync/Services/UiService.cs b/LightlessSync/Services/UiService.cs index 454a6e1..0aceb78 100644 --- a/LightlessSync/Services/UiService.cs +++ b/LightlessSync/Services/UiService.cs @@ -1,7 +1,7 @@ using Dalamud.Interface; using Dalamud.Interface.ImGuiFileDialog; using Dalamud.Interface.Windowing; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.Services.Mediator; using LightlessSync.UI; using LightlessSync.UI.Components.Popup; @@ -15,20 +15,20 @@ public sealed class UiService : DisposableMediatorSubscriberBase private readonly IUiBuilder _uiBuilder; private readonly FileDialogManager _fileDialogManager; private readonly ILogger _logger; - private readonly MareConfigService _mareConfigService; + private readonly LightlessConfigService _lightlessConfigService; private readonly WindowSystem _windowSystem; private readonly UiFactory _uiFactory; public UiService(ILogger logger, IUiBuilder uiBuilder, - MareConfigService mareConfigService, WindowSystem windowSystem, + LightlessConfigService lightlessConfigService, WindowSystem windowSystem, IEnumerable windows, UiFactory uiFactory, FileDialogManager fileDialogManager, - MareMediator mareMediator) : base(logger, mareMediator) + LightlessMediator lightlessMediator) : base(logger, lightlessMediator) { _logger = logger; _logger.LogTrace("Creating {type}", GetType().Name); _uiBuilder = uiBuilder; - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; _windowSystem = windowSystem; _uiFactory = uiFactory; _fileDialogManager = fileDialogManager; @@ -86,7 +86,7 @@ public sealed class UiService : DisposableMediatorSubscriberBase public void ToggleMainUi() { - if (_mareConfigService.Current.HasValidSetup()) + if (_lightlessConfigService.Current.HasValidSetup()) Mediator.Publish(new UiToggleMessage(typeof(CompactUi))); else Mediator.Publish(new UiToggleMessage(typeof(IntroUi))); @@ -94,7 +94,7 @@ public sealed class UiService : DisposableMediatorSubscriberBase public void ToggleUi() { - if (_mareConfigService.Current.HasValidSetup()) + if (_lightlessConfigService.Current.HasValidSetup()) Mediator.Publish(new UiToggleMessage(typeof(SettingsUi))); else Mediator.Publish(new UiToggleMessage(typeof(IntroUi))); diff --git a/LightlessSync/Services/XivDataAnalyzer.cs b/LightlessSync/Services/XivDataAnalyzer.cs index 8378ea1..db721a2 100644 --- a/LightlessSync/Services/XivDataAnalyzer.cs +++ b/LightlessSync/Services/XivDataAnalyzer.cs @@ -5,7 +5,7 @@ using FFXIVClientStructs.Havok.Common.Base.Types; using FFXIVClientStructs.Havok.Common.Serialize.Util; using LightlessSync.FileCache; using LightlessSync.Interop.GameModel; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.PlayerData.Handlers; using Microsoft.Extensions.Logging; using System.Runtime.InteropServices; diff --git a/LightlessSync/UI/CharaDataHubUi.Functions.cs b/LightlessSync/UI/CharaDataHubUi.Functions.cs index d179d4b..e6e0c77 100644 --- a/LightlessSync/UI/CharaDataHubUi.Functions.cs +++ b/LightlessSync/UI/CharaDataHubUi.Functions.cs @@ -1,6 +1,6 @@ using Dalamud.Interface.Utility.Raii; using LightlessSync.API.Dto.CharaData; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.Services.CharaData.Models; using System.Text; diff --git a/LightlessSync/UI/CharaDataHubUi.McdOnline.cs b/LightlessSync/UI/CharaDataHubUi.McdOnline.cs index 643714e..12d2980 100644 --- a/LightlessSync/UI/CharaDataHubUi.McdOnline.cs +++ b/LightlessSync/UI/CharaDataHubUi.McdOnline.cs @@ -560,10 +560,10 @@ internal sealed partial class CharaDataHubUi private void DrawMcdOnline() { - _uiSharedService.BigText("Mare Character Data Online"); + _uiSharedService.BigText("Lightless Character Data Online"); - DrawHelpFoldout("In this tab you can create, view and edit your own Mare Character Data that is stored on the server." + Environment.NewLine + Environment.NewLine - + "Mare Character Data Online functions similar to the previous MCDF standard for exporting your character, except that you do not have to send a file to the other person but solely a code." + Environment.NewLine + Environment.NewLine + DrawHelpFoldout("In this tab you can create, view and edit your own Lightless Character Data that is stored on the server." + Environment.NewLine + Environment.NewLine + + "Lightless Character Data Online functions similar to the previous MCDF standard for exporting your character, except that you do not have to send a file to the other person but solely a code." + Environment.NewLine + Environment.NewLine + "There would be a bit too much to explain here on what you can do here in its entirety, however, all elements in this tab have help texts attached what they are used for. Please review them carefully." + Environment.NewLine + Environment.NewLine + "Be mindful that when you share your Character Data with other people there is a chance that, with the help of unsanctioned 3rd party plugins, your appearance could be stolen irreversibly, just like when using MCDF."); diff --git a/LightlessSync/UI/CharaDataHubUi.NearbyPoses.cs b/LightlessSync/UI/CharaDataHubUi.NearbyPoses.cs index 9824946..ae7ac58 100644 --- a/LightlessSync/UI/CharaDataHubUi.NearbyPoses.cs +++ b/LightlessSync/UI/CharaDataHubUi.NearbyPoses.cs @@ -56,7 +56,7 @@ internal partial class CharaDataHubUi _configService.Current.NearbyDrawWisps = showWisps; _configService.Save(); } - _uiSharedService.DrawHelpText("When enabled, Mare will draw floating wisps where other's poses are in the world."); + _uiSharedService.DrawHelpText("When enabled, Lightless will draw floating wisps where other's poses are in the world."); int poseDetectionDistance = _configService.Current.NearbyDistanceFilter; UiSharedService.ScaledNextItemWidth(100); if (ImGui.SliderInt("Detection Distance", ref poseDetectionDistance, 5, 1000)) @@ -71,7 +71,7 @@ internal partial class CharaDataHubUi _configService.Current.NearbyShowAlways = alwaysShow; _configService.Save(); } - _uiSharedService.DrawHelpText("This will allow Mare to continue the calculation of position of wisps etc. active outside of the 'Poses Nearby' tab." + UiSharedService.TooltipSeparator + _uiSharedService.DrawHelpText("This will allow Lightless to continue the calculation of position of wisps etc. active outside of the 'Poses Nearby' tab." + UiSharedService.TooltipSeparator + "Note: The wisps etc. will disappear during combat and performing."); }); diff --git a/LightlessSync/UI/CharaDataHubUi.cs b/LightlessSync/UI/CharaDataHubUi.cs index 4bce3a5..06c1458 100644 --- a/LightlessSync/UI/CharaDataHubUi.cs +++ b/LightlessSync/UI/CharaDataHubUi.cs @@ -5,8 +5,8 @@ using Dalamud.Interface.ImGuiFileDialog; using Dalamud.Interface.Utility; using Dalamud.Interface.Utility.Raii; using LightlessSync.API.Dto.CharaData; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.PlayerData.Pairs; using LightlessSync.Services; using LightlessSync.Services.CharaData; @@ -74,7 +74,7 @@ internal sealed partial class CharaDataHubUi : WindowMediatorSubscriberBase private (string Id, string? Alias, string AliasOrId, string? Note)[]? _openComboHybridEntries = null; private bool _comboHybridUsedLastFrame = false; - public CharaDataHubUi(ILogger logger, MareMediator mediator, PerformanceCollectorService performanceCollectorService, + public CharaDataHubUi(ILogger logger, LightlessMediator mediator, PerformanceCollectorService performanceCollectorService, CharaDataManager charaDataManager, CharaDataNearbyManager charaDataNearbyManager, CharaDataConfigService configService, UiSharedService uiSharedService, ServerConfigurationManager serverConfigurationManager, DalamudUtilService dalamudUtilService, FileDialogManager fileDialogManager, PairManager pairManager, @@ -92,7 +92,7 @@ internal sealed partial class CharaDataHubUi : WindowMediatorSubscriberBase _fileDialogManager = fileDialogManager; _pairManager = pairManager; _charaDataGposeTogetherManager = charaDataGposeTogetherManager; - Mediator.Subscribe(this, (_) => IsOpen |= _configService.Current.OpenMareHubOnGposeStart); + Mediator.Subscribe(this, (_) => IsOpen |= _configService.Current.OpenLightlessHubOnGposeStart); Mediator.Subscribe(this, (msg) => { IsOpen = true; @@ -863,9 +863,9 @@ internal sealed partial class CharaDataHubUi : WindowMediatorSubscriberBase private void DrawMcdfExport() { - _uiSharedService.BigText("Mare Character Data File Export"); + _uiSharedService.BigText("Lightless Character Data File Export"); - DrawHelpFoldout("This feature allows you to pack your character into a MCDF file and manually send it to other people. MCDF files can officially only be imported during GPose through Mare. " + + DrawHelpFoldout("This feature allows you to pack your character into a MCDF file and manually send it to other people. MCDF files can officially only be imported during GPose through Lightless. " + "Be aware that the possibility exists that people write unofficial custom exporters to extract the containing data."); ImGuiHelpers.ScaledDummy(5); @@ -891,7 +891,7 @@ internal sealed partial class CharaDataHubUi : WindowMediatorSubscriberBase _configService.Current.LastSavedCharaDataLocation = Path.GetDirectoryName(path) ?? string.Empty; _configService.Save(); - _charaDataManager.SaveMareCharaFile(_exportDescription, path); + _charaDataManager.SaveLightlessCharaFile(_exportDescription, path); _exportDescription = string.Empty; }, Directory.Exists(_configService.Current.LastSavedCharaDataLocation) ? _configService.Current.LastSavedCharaDataLocation : null); } @@ -1048,10 +1048,10 @@ internal sealed partial class CharaDataHubUi : WindowMediatorSubscriberBase ImGuiHelpers.ScaledDummy(5); _uiSharedService.BigText("Settings"); ImGuiHelpers.ScaledDummy(5); - bool openInGpose = _configService.Current.OpenMareHubOnGposeStart; + bool openInGpose = _configService.Current.OpenLightlessHubOnGposeStart; if (ImGui.Checkbox("Open Character Data Hub when GPose loads", ref openInGpose)) { - _configService.Current.OpenMareHubOnGposeStart = openInGpose; + _configService.Current.OpenLightlessHubOnGposeStart = openInGpose; _configService.Save(); } _uiSharedService.DrawHelpText("This will automatically open the import menu when loading into Gpose. If unchecked you can open the menu manually with /light gpose"); diff --git a/LightlessSync/UI/CompactUI.cs b/LightlessSync/UI/CompactUI.cs index c1dcc20..fdc744c 100644 --- a/LightlessSync/UI/CompactUI.cs +++ b/LightlessSync/UI/CompactUI.cs @@ -7,7 +7,7 @@ using Dalamud.Utility; using LightlessSync.API.Data.Extensions; using LightlessSync.API.Dto.Group; using LightlessSync.Interop.Ipc; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.PlayerData.Handlers; using LightlessSync.PlayerData.Pairs; using LightlessSync.Services; @@ -31,7 +31,7 @@ namespace LightlessSync.UI; public class CompactUi : WindowMediatorSubscriberBase { private readonly ApiController _apiController; - private readonly MareConfigService _configService; + private readonly LightlessConfigService _configService; private readonly ConcurrentDictionary> _currentDownloads = new(); private readonly DrawEntityFactory _drawEntityFactory; private readonly FileUploadManager _fileTransferManager; @@ -54,8 +54,8 @@ public class CompactUi : WindowMediatorSubscriberBase private bool _wasOpen; private float _windowContentWidth; - public CompactUi(ILogger logger, UiSharedService uiShared, MareConfigService configService, ApiController apiController, PairManager pairManager, - ServerConfigurationManager serverManager, MareMediator mediator, FileUploadManager fileTransferManager, + public CompactUi(ILogger logger, UiSharedService uiShared, LightlessConfigService configService, ApiController apiController, PairManager pairManager, + ServerConfigurationManager serverManager, LightlessMediator mediator, FileUploadManager fileTransferManager, TagHandler tagHandler, DrawEntityFactory drawEntityFactory, SelectTagForPairUi selectTagForPairUi, SelectPairForTagUi selectPairForTagUi, PerformanceCollectorService performanceCollectorService, IpcManager ipcManager) : base(logger, mediator, "###LightlessSyncMainUI", performanceCollectorService) @@ -88,7 +88,7 @@ public class CompactUi : WindowMediatorSubscriberBase ShowTooltip = () => { ImGui.BeginTooltip(); - ImGui.Text("Open Mare Settings"); + ImGui.Text("Open Lightless Settings"); ImGui.EndTooltip(); } }, @@ -103,7 +103,7 @@ public class CompactUi : WindowMediatorSubscriberBase ShowTooltip = () => { ImGui.BeginTooltip(); - ImGui.Text("Open Mare Event Viewer"); + ImGui.Text("Open Lightless Event Viewer"); ImGui.EndTooltip(); } } @@ -169,7 +169,7 @@ public class CompactUi : WindowMediatorSubscriberBase var penumAvailable = _ipcManager.Penumbra.APIAvailable; var glamAvailable = _ipcManager.Glamourer.APIAvailable; - UiSharedService.ColorTextWrapped($"One or more Plugins essential for Mare operation are unavailable. Enable or update following plugins:", ImGuiColors.DalamudRed); + UiSharedService.ColorTextWrapped($"One or more Plugins essential for Lightless operation are unavailable. Enable or update following plugins:", ImGuiColors.DalamudRed); using var indent = ImRaii.PushIndent(10f); if (!penumAvailable) { @@ -578,7 +578,7 @@ public class CompactUi : WindowMediatorSubscriberBase ServerState.MultiChara => "Your Character Configuration has multiple characters configured with same name and world. You will not be able to connect until you fix this issue. Remove the duplicates from the configuration in Settings -> Service Settings -> Character Management and reconnect manually after.", ServerState.OAuthMisconfigured => "OAuth2 is enabled but not fully configured, verify in the Settings -> Service Settings that you have OAuth2 connected and, importantly, a UID assigned to your current character.", ServerState.OAuthLoginTokenStale => "Your OAuth2 login token is stale and cannot be used to renew. Go to the Settings -> Service Settings and unlink then relink your OAuth2 configuration.", - ServerState.NoAutoLogon => "This character has automatic login into Mare disabled. Press the connect button to connect to Mare.", + ServerState.NoAutoLogon => "This character has automatic login into Lightless disabled. Press the connect button to connect to Lightless.", _ => string.Empty }; } diff --git a/LightlessSync/UI/Components/DrawFolderGroup.cs b/LightlessSync/UI/Components/DrawFolderGroup.cs index 0bb3b73..d6e5b04 100644 --- a/LightlessSync/UI/Components/DrawFolderGroup.cs +++ b/LightlessSync/UI/Components/DrawFolderGroup.cs @@ -18,17 +18,17 @@ public class DrawFolderGroup : DrawFolderBase private readonly ApiController _apiController; private readonly GroupFullInfoDto _groupFullInfoDto; private readonly IdDisplayHandler _idDisplayHandler; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; public DrawFolderGroup(string id, GroupFullInfoDto groupFullInfoDto, ApiController apiController, IImmutableList drawPairs, IImmutableList allPairs, TagHandler tagHandler, IdDisplayHandler idDisplayHandler, - MareMediator mareMediator, UiSharedService uiSharedService) : + LightlessMediator lightlessMediator, UiSharedService uiSharedService) : base(id, drawPairs, allPairs, tagHandler, uiSharedService) { _groupFullInfoDto = groupFullInfoDto; _apiController = apiController; _idDisplayHandler = idDisplayHandler; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; } protected override bool RenderIfEmpty => true; @@ -154,7 +154,7 @@ public class DrawFolderGroup : DrawFolderBase if (_uiSharedService.IconTextButton(FontAwesomeIcon.Cog, "Open Admin Panel", menuWidth, true)) { ImGui.CloseCurrentPopup(); - _mareMediator.Publish(new OpenSyncshellAdminPanel(_groupFullInfoDto)); + _lightlessMediator.Publish(new OpenSyncshellAdminPanel(_groupFullInfoDto)); } } } diff --git a/LightlessSync/UI/Components/DrawUserPair.cs b/LightlessSync/UI/Components/DrawUserPair.cs index 3b6c307..eb8bdd3 100644 --- a/LightlessSync/UI/Components/DrawUserPair.cs +++ b/LightlessSync/UI/Components/DrawUserPair.cs @@ -6,7 +6,7 @@ using Dalamud.Interface.Utility.Raii; using LightlessSync.API.Data.Extensions; using LightlessSync.API.Dto.Group; using LightlessSync.API.Dto.User; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.PlayerData.Pairs; using LightlessSync.Services; using LightlessSync.Services.Mediator; @@ -20,7 +20,7 @@ public class DrawUserPair { protected readonly ApiController _apiController; protected readonly IdDisplayHandler _displayHandler; - protected readonly MareMediator _mediator; + protected readonly LightlessMediator _mediator; protected readonly List _syncedGroups; private readonly GroupFullInfoDto? _currentGroup; protected Pair _pair; @@ -36,7 +36,7 @@ public class DrawUserPair public DrawUserPair(string id, Pair entry, List syncedGroups, GroupFullInfoDto? currentGroup, ApiController apiController, IdDisplayHandler uIDDisplayHandler, - MareMediator mareMediator, SelectTagForPairUi selectTagForPairUi, + LightlessMediator lightlessMediator, SelectTagForPairUi selectTagForPairUi, ServerConfigurationManager serverConfigurationManager, UiSharedService uiSharedService, PlayerPerformanceConfigService performanceConfigService, CharaDataManager charaDataManager) @@ -47,7 +47,7 @@ public class DrawUserPair _currentGroup = currentGroup; _apiController = apiController; _displayHandler = uIDDisplayHandler; - _mediator = mareMediator; + _mediator = lightlessMediator; _selectTagForPairUi = selectTagForPairUi; _serverConfigurationManager = serverConfigurationManager; _uiSharedService = uiSharedService; diff --git a/LightlessSync/UI/Components/Popup/CensusPopupHandler.cs b/LightlessSync/UI/Components/Popup/CensusPopupHandler.cs index e2fe03e..800646f 100644 --- a/LightlessSync/UI/Components/Popup/CensusPopupHandler.cs +++ b/LightlessSync/UI/Components/Popup/CensusPopupHandler.cs @@ -26,22 +26,22 @@ public class CensusPopupHandler : IPopupHandler var start = 0f; using (_uiSharedService.UidFont.Push()) { - start = ImGui.GetCursorPosY() - ImGui.CalcTextSize("Mare Census Data").Y; - UiSharedService.TextWrapped("Mare Census Participation"); + start = ImGui.GetCursorPosY() - ImGui.CalcTextSize("Lightless Census Data").Y; + UiSharedService.TextWrapped("Lightless Census Participation"); } ImGuiHelpers.ScaledDummy(5f); - UiSharedService.TextWrapped("If you are seeing this popup you are updating from a Mare version that did not collect census data. Please read the following carefully."); + UiSharedService.TextWrapped("If you are seeing this popup you are updating from a Lightless version that did not collect census data. Please read the following carefully."); ImGui.Separator(); - UiSharedService.TextWrapped("Mare Census is a data collecting service that can be used for statistical purposes. " + - "All data collected through Mare Census is temporary and will be stored associated with your UID on the connected service as long as you are connected. " + + UiSharedService.TextWrapped("Lightless Census is a data collecting service that can be used for statistical purposes. " + + "All data collected through Lightless Census is temporary and will be stored associated with your UID on the connected service as long as you are connected. " + "The data cannot be used for long term tracking of individuals."); - UiSharedService.TextWrapped("If enabled, Mare Census will collect following data:" + Environment.NewLine + UiSharedService.TextWrapped("If enabled, Lightless Census will collect following data:" + Environment.NewLine + "- Currently connected World" + Environment.NewLine + "- Current Gender (reflecting Glamourer changes)" + Environment.NewLine + "- Current Race (reflecting Glamourer changes)" + Environment.NewLine + "- Current Clan (i.e. Seeker of the Sun, Keeper of the Moon, etc., reflecting Glamourer changes)"); UiSharedService.TextWrapped("To consent to collecting census data press the appropriate button below."); - UiSharedService.TextWrapped("This setting can be changed anytime in the Mare Settings."); + UiSharedService.TextWrapped("This setting can be changed anytime in the Lightless Settings."); var width = ImGui.GetWindowContentRegionMax().X - ImGui.GetWindowContentRegionMin().X; var buttonSize = ImGuiHelpers.GetButtonSize("I consent to send my census data"); ImGuiHelpers.ScaledDummy(5f); diff --git a/LightlessSync/UI/Components/Popup/PopupHandler.cs b/LightlessSync/UI/Components/Popup/PopupHandler.cs index c1be5c6..e6b9c4a 100644 --- a/LightlessSync/UI/Components/Popup/PopupHandler.cs +++ b/LightlessSync/UI/Components/Popup/PopupHandler.cs @@ -16,9 +16,9 @@ public class PopupHandler : WindowMediatorSubscriberBase private readonly UiSharedService _uiSharedService; private IPopupHandler? _currentHandler = null; - public PopupHandler(ILogger logger, MareMediator mediator, IEnumerable popupHandlers, + public PopupHandler(ILogger logger, LightlessMediator mediator, IEnumerable popupHandlers, PerformanceCollectorService performanceCollectorService, UiSharedService uiSharedService) - : base(logger, mediator, "MarePopupHandler", performanceCollectorService) + : base(logger, mediator, "LightlessPopupHandler", performanceCollectorService) { Flags = ImGuiWindowFlags.NoBringToFrontOnFocus | ImGuiWindowFlags.NoDecoration diff --git a/LightlessSync/UI/CreateSyncshellUI.cs b/LightlessSync/UI/CreateSyncshellUI.cs index d9b915e..215156b 100644 --- a/LightlessSync/UI/CreateSyncshellUI.cs +++ b/LightlessSync/UI/CreateSyncshellUI.cs @@ -18,9 +18,9 @@ public class CreateSyncshellUI : WindowMediatorSubscriberBase private bool _errorGroupCreate; private GroupJoinDto? _lastCreatedGroup; - public CreateSyncshellUI(ILogger logger, MareMediator mareMediator, ApiController apiController, UiSharedService uiSharedService, + public CreateSyncshellUI(ILogger logger, LightlessMediator lightlessMediator, ApiController apiController, UiSharedService uiSharedService, PerformanceCollectorService performanceCollectorService) - : base(logger, mareMediator, "Create new Syncshell###LightlessSyncCreateSyncshell", performanceCollectorService) + : base(logger, lightlessMediator, "Create new Syncshell###LightlessSyncCreateSyncshell", performanceCollectorService) { _apiController = apiController; _uiSharedService = uiSharedService; @@ -76,7 +76,7 @@ public class CreateSyncshellUI : WindowMediatorSubscriberBase ImGui.AlignTextToFramePadding(); ImGui.TextUnformatted("- VFX"); _uiSharedService.BooleanToColoredIcon(!_apiController.DefaultPermissions!.DisableGroupVFX); - UiSharedService.TextWrapped("(Those preferred permissions can be changed anytime after Syncshell creation, your defaults can be changed anytime in the Mare Settings)"); + UiSharedService.TextWrapped("(Those preferred permissions can be changed anytime after Syncshell creation, your defaults can be changed anytime in the Lightless Settings)"); } else { diff --git a/LightlessSync/UI/DataAnalysisUi.cs b/LightlessSync/UI/DataAnalysisUi.cs index 3a2d9c6..032b3d4 100644 --- a/LightlessSync/UI/DataAnalysisUi.cs +++ b/LightlessSync/UI/DataAnalysisUi.cs @@ -6,7 +6,7 @@ using Dalamud.Interface.Utility.Raii; using LightlessSync.API.Data.Enum; using LightlessSync.FileCache; using LightlessSync.Interop.Ipc; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.Services; using LightlessSync.Services.Mediator; using LightlessSync.Utils; @@ -39,12 +39,12 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase private bool _showModal = false; private CancellationTokenSource _transientRecordCts = new(); - public DataAnalysisUi(ILogger logger, MareMediator mediator, + public DataAnalysisUi(ILogger logger, LightlessMediator mediator, CharacterAnalyzer characterAnalyzer, IpcManager ipcManager, PerformanceCollectorService performanceCollectorService, UiSharedService uiSharedService, PlayerPerformanceConfigService playerPerformanceConfig, TransientResourceManager transientResourceManager, TransientConfigService transientConfigService) - : base(logger, mediator, "Mare Character Data Analysis", performanceCollectorService) + : base(logger, mediator, "Lightless Character Data Analysis", performanceCollectorService) { _characterAnalyzer = characterAnalyzer; _ipcManager = ipcManager; @@ -166,10 +166,10 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase UiSharedService.DrawTree("What is this? (Explanation / Help)", () => { UiSharedService.TextWrapped("This tab allows you to see which transient files are attached to your character."); - UiSharedService.TextWrapped("Transient files are files that cannot be resolved to your character permanently. Mare gathers these files in the background while you execute animations, VFX, sound effects, etc."); - UiSharedService.TextWrapped("When sending your character data to others, Mare will combine the files listed in \"All Jobs\" and the corresponding currently used job."); + UiSharedService.TextWrapped("Transient files are files that cannot be resolved to your character permanently. Lightless gathers these files in the background while you execute animations, VFX, sound effects, etc."); + UiSharedService.TextWrapped("When sending your character data to others, Lightless will combine the files listed in \"All Jobs\" and the corresponding currently used job."); UiSharedService.TextWrapped("The purpose of this tab is primarily informational for you to see which files you are carrying with you. You can remove added game paths, however if you are using the animations etc. again, " - + "Mare will automatically attach these after using them. If you disable associated mods in Penumbra, the associated entries here will also be deleted automatically."); + + "Lightless will automatically attach these after using them. If you disable associated mods in Penumbra, the associated entries here will also be deleted automatically."); }); ImGuiHelpers.ScaledDummy(5); @@ -292,7 +292,7 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase } } UiSharedService.AttachToolTip("Hold CTRL to delete all game paths from the displayed list" - + UiSharedService.TooltipSeparator + "You usually do not need to do this. All animation and VFX data will be automatically handled through Mare."); + + UiSharedService.TooltipSeparator + "You usually do not need to do this. All animation and VFX data will be automatically handled through Lightless."); ImGuiHelpers.ScaledDummy(5); ImGuiHelpers.ScaledDummy(30); ImGui.SameLine(); @@ -366,7 +366,7 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase { UiSharedService.TextWrapped("This tab allows you to attempt to fix mods that do not sync correctly, especially those with modded models and animations." + Environment.NewLine + Environment.NewLine + "To use this, start the recording, execute one or multiple emotes/animations you want to attempt to fix and check if new data appears in the table below." + Environment.NewLine - + "If it doesn't, Mare is not able to catch the data or already has recorded the animation files (check 'Show previously added transient files' to see if not all is already present)." + Environment.NewLine + Environment.NewLine + + "If it doesn't, Lightless is not able to catch the data or already has recorded the animation files (check 'Show previously added transient files' to see if not all is already present)." + Environment.NewLine + Environment.NewLine + "For most animations, vfx, etc. it is enough to just run them once unless they have random variations. Longer animations do not require to play out in their entirety to be captured."); ImGuiHelpers.ScaledDummy(5); UiSharedService.DrawGroupedCenteredColorText("Important Note: If you need to fix an animation that should apply across multiple jobs, you need to repeat this process with at least one additional job, " + @@ -406,7 +406,7 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase ImGuiHelpers.ScaledDummy(5); ImGui.Checkbox("Show previously added transient files in the recording", ref _showAlreadyAddedTransients); - _uiSharedService.DrawHelpText("Use this only if you want to see what was previously already caught by Mare"); + _uiSharedService.DrawHelpText("Use this only if you want to see what was previously already caught by Lightless"); ImGuiHelpers.ScaledDummy(5); using (ImRaii.Disabled(_transientResourceManager.IsTransientRecording || _transientResourceManager.RecordedTransients.All(k => !k.AddTransient) || !_acknowledgeReview)) @@ -476,7 +476,7 @@ public class DataAnalysisUi : WindowMediatorSubscriberBase { UiSharedService.DrawTree("What is this? (Explanation / Help)", () => { - UiSharedService.TextWrapped("This tab shows you all files and their sizes that are currently in use through your character and associated entities in Mare"); + UiSharedService.TextWrapped("This tab shows you all files and their sizes that are currently in use through your character and associated entities in Lightless"); }); if (_cachedAnalysis!.Count == 0) return; diff --git a/LightlessSync/UI/DownloadUi.cs b/LightlessSync/UI/DownloadUi.cs index 39dde73..e3c0493 100644 --- a/LightlessSync/UI/DownloadUi.cs +++ b/LightlessSync/UI/DownloadUi.cs @@ -1,6 +1,6 @@ using Dalamud.Bindings.ImGui; using Dalamud.Interface.Colors; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.PlayerData.Handlers; using LightlessSync.Services; using LightlessSync.Services.Mediator; @@ -14,15 +14,15 @@ namespace LightlessSync.UI; public class DownloadUi : WindowMediatorSubscriberBase { - private readonly MareConfigService _configService; + private readonly LightlessConfigService _configService; private readonly ConcurrentDictionary> _currentDownloads = new(); private readonly DalamudUtilService _dalamudUtilService; private readonly FileUploadManager _fileTransferManager; private readonly UiSharedService _uiShared; private readonly ConcurrentDictionary _uploadingPlayers = new(); - public DownloadUi(ILogger logger, DalamudUtilService dalamudUtilService, MareConfigService configService, - FileUploadManager fileTransferManager, MareMediator mediator, UiSharedService uiShared, PerformanceCollectorService performanceCollectorService) + public DownloadUi(ILogger logger, DalamudUtilService dalamudUtilService, LightlessConfigService configService, + FileUploadManager fileTransferManager, LightlessMediator mediator, UiSharedService uiShared, PerformanceCollectorService performanceCollectorService) : base(logger, mediator, "Lightless Sync Downloads", performanceCollectorService) { _dalamudUtilService = dalamudUtilService; diff --git a/LightlessSync/UI/DrawEntityFactory.cs b/LightlessSync/UI/DrawEntityFactory.cs index 518cf7c..939ab83 100644 --- a/LightlessSync/UI/DrawEntityFactory.cs +++ b/LightlessSync/UI/DrawEntityFactory.cs @@ -1,5 +1,5 @@ using LightlessSync.API.Dto.Group; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.PlayerData.Pairs; using LightlessSync.Services; using LightlessSync.Services.Mediator; @@ -16,7 +16,7 @@ public class DrawEntityFactory { private readonly ILogger _logger; private readonly ApiController _apiController; - private readonly MareMediator _mediator; + private readonly LightlessMediator _mediator; private readonly SelectPairForTagUi _selectPairForTagUi; private readonly ServerConfigurationManager _serverConfigurationManager; private readonly UiSharedService _uiSharedService; @@ -27,7 +27,7 @@ public class DrawEntityFactory private readonly IdDisplayHandler _uidDisplayHandler; public DrawEntityFactory(ILogger logger, ApiController apiController, IdDisplayHandler uidDisplayHandler, - SelectTagForPairUi selectTagForPairUi, MareMediator mediator, + SelectTagForPairUi selectTagForPairUi, LightlessMediator mediator, TagHandler tagHandler, SelectPairForTagUi selectPairForTagUi, ServerConfigurationManager serverConfigurationManager, UiSharedService uiSharedService, PlayerPerformanceConfigService playerPerformanceConfigService, CharaDataManager charaDataManager) diff --git a/LightlessSync/UI/DtrEntry.cs b/LightlessSync/UI/DtrEntry.cs index e441bb7..f83c4c6 100644 --- a/LightlessSync/UI/DtrEntry.cs +++ b/LightlessSync/UI/DtrEntry.cs @@ -2,8 +2,8 @@ using Dalamud.Game.Text.SeStringHandling; using Dalamud.Game.Text.SeStringHandling.Payloads; using Dalamud.Plugin.Services; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Configurations; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Configurations; using LightlessSync.PlayerData.Pairs; using LightlessSync.Services.Mediator; using LightlessSync.WebAPI; @@ -17,24 +17,24 @@ public sealed class DtrEntry : IDisposable, IHostedService { private readonly ApiController _apiController; private readonly CancellationTokenSource _cancellationTokenSource = new(); - private readonly ConfigurationServiceBase _configService; + private readonly ConfigurationServiceBase _configService; private readonly IDtrBar _dtrBar; private readonly Lazy _entry; private readonly ILogger _logger; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly PairManager _pairManager; private Task? _runTask; private string? _text; private string? _tooltip; private Colors _colors; - public DtrEntry(ILogger logger, IDtrBar dtrBar, ConfigurationServiceBase configService, MareMediator mareMediator, PairManager pairManager, ApiController apiController) + public DtrEntry(ILogger logger, IDtrBar dtrBar, ConfigurationServiceBase configService, LightlessMediator lightlessMediator, PairManager pairManager, ApiController apiController) { _logger = logger; _dtrBar = dtrBar; _entry = new(CreateEntry); _configService = configService; - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _pairManager = pairManager; _apiController = apiController; } @@ -89,7 +89,7 @@ public sealed class DtrEntry : IDisposable, IHostedService { _logger.LogTrace("Creating new DtrBar entry"); var entry = _dtrBar.Get("Lightless Sync"); - entry.OnClick = _ => _mareMediator.Publish(new UiToggleMessage(typeof(CompactUi))); + entry.OnClick = _ => _lightlessMediator.Publish(new UiToggleMessage(typeof(CompactUi))); return entry; } diff --git a/LightlessSync/UI/EditProfileUi.cs b/LightlessSync/UI/EditProfileUi.cs index 8085f7a..753c790 100644 --- a/LightlessSync/UI/EditProfileUi.cs +++ b/LightlessSync/UI/EditProfileUi.cs @@ -19,7 +19,7 @@ public class EditProfileUi : WindowMediatorSubscriberBase { private readonly ApiController _apiController; private readonly FileDialogManager _fileDialogManager; - private readonly MareProfileManager _mareProfileManager; + private readonly LightlessProfileManager _lightlessProfileManager; private readonly UiSharedService _uiSharedService; private bool _adjustedForScollBarsLocalProfile = false; private bool _adjustedForScollBarsOnlineProfile = false; @@ -30,9 +30,9 @@ public class EditProfileUi : WindowMediatorSubscriberBase private bool _showFileDialogError = false; private bool _wasOpen; - public EditProfileUi(ILogger logger, MareMediator mediator, + public EditProfileUi(ILogger logger, LightlessMediator mediator, ApiController apiController, UiSharedService uiSharedService, FileDialogManager fileDialogManager, - MareProfileManager mareProfileManager, PerformanceCollectorService performanceCollectorService) + LightlessProfileManager lightlessProfileManager, PerformanceCollectorService performanceCollectorService) : base(logger, mediator, "Lightless Sync Edit Profile###LightlessSyncEditProfileUI", performanceCollectorService) { IsOpen = false; @@ -44,7 +44,7 @@ public class EditProfileUi : WindowMediatorSubscriberBase _apiController = apiController; _uiSharedService = uiSharedService; _fileDialogManager = fileDialogManager; - _mareProfileManager = mareProfileManager; + _lightlessProfileManager = lightlessProfileManager; Mediator.Subscribe(this, (_) => { _wasOpen = IsOpen; IsOpen = false; }); Mediator.Subscribe(this, (_) => IsOpen = _wasOpen); @@ -63,7 +63,7 @@ public class EditProfileUi : WindowMediatorSubscriberBase { _uiSharedService.BigText("Current Profile (as saved on server)"); - var profile = _mareProfileManager.GetMareProfile(new UserData(_apiController.UID)); + var profile = _lightlessProfileManager.GetLightlessProfile(new UserData(_apiController.UID)); if (profile.IsFlagged) { @@ -126,7 +126,7 @@ public class EditProfileUi : WindowMediatorSubscriberBase $"- Other users have the possibility to report your profile for breaking the rules.{Environment.NewLine}" + $"- !!! AVOID: anything as profile image that can be considered highly illegal or obscene (bestiality, anything that could be considered a sexual act with a minor (that includes Lalafells), etc.){Environment.NewLine}" + $"- !!! AVOID: slurs of any kind in the description that can be considered highly offensive{Environment.NewLine}" + - $"- In case of valid reports from other users this can lead to disabling your profile forever or terminating your Mare account indefinitely.{Environment.NewLine}" + + $"- In case of valid reports from other users this can lead to disabling your profile forever or terminating your Lightless account indefinitely.{Environment.NewLine}" + $"- Judgement of your profile validity from reports through staff is not up to debate and the decisions to disable your profile/account permanent.{Environment.NewLine}" + $"- If your profile picture or profile description could be considered NSFW, enable the toggle below."); ImGui.Separator(); diff --git a/LightlessSync/UI/EventViewerUI.cs b/LightlessSync/UI/EventViewerUI.cs index 2253170..89c7083 100644 --- a/LightlessSync/UI/EventViewerUI.cs +++ b/LightlessSync/UI/EventViewerUI.cs @@ -37,7 +37,7 @@ internal class EventViewerUI : WindowMediatorSubscriberBase } } - public EventViewerUI(ILogger logger, MareMediator mediator, + public EventViewerUI(ILogger logger, LightlessMediator mediator, EventAggregator eventAggregator, UiSharedService uiSharedService, PerformanceCollectorService performanceCollectorService) : base(logger, mediator, "Event Viewer", performanceCollectorService) { diff --git a/LightlessSync/UI/Handlers/IdDisplayHandler.cs b/LightlessSync/UI/Handlers/IdDisplayHandler.cs index ed2b6f3..2683489 100644 --- a/LightlessSync/UI/Handlers/IdDisplayHandler.cs +++ b/LightlessSync/UI/Handlers/IdDisplayHandler.cs @@ -2,7 +2,7 @@ using Dalamud.Interface; using Dalamud.Interface.Utility.Raii; using LightlessSync.API.Dto.Group; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.PlayerData.Pairs; using LightlessSync.Services.Mediator; using LightlessSync.Services.ServerConfiguration; @@ -11,8 +11,8 @@ namespace LightlessSync.UI.Handlers; public class IdDisplayHandler { - private readonly MareConfigService _mareConfigService; - private readonly MareMediator _mediator; + private readonly LightlessConfigService _lightlessConfigService; + private readonly LightlessMediator _mediator; private readonly ServerConfigurationManager _serverManager; private readonly Dictionary _showIdForEntry = new(StringComparer.Ordinal); private string _editComment = string.Empty; @@ -22,11 +22,11 @@ public class IdDisplayHandler private bool _popupShown = false; private DateTime? _popupTime; - public IdDisplayHandler(MareMediator mediator, ServerConfigurationManager serverManager, MareConfigService mareConfigService) + public IdDisplayHandler(LightlessMediator mediator, ServerConfigurationManager serverManager, LightlessConfigService lightlessConfigService) { _mediator = mediator; _serverManager = serverManager; - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; } public void DrawGroupText(string id, GroupFullInfoDto group, float textPosX, Func editBoxWidth) @@ -99,12 +99,12 @@ public class IdDisplayHandler { if (!string.Equals(_lastMouseOverUid, id)) { - _popupTime = DateTime.UtcNow.AddSeconds(_mareConfigService.Current.ProfileDelay); + _popupTime = DateTime.UtcNow.AddSeconds(_lightlessConfigService.Current.ProfileDelay); } _lastMouseOverUid = id; - if (_popupTime > DateTime.UtcNow || !_mareConfigService.Current.ProfilesShow) + if (_popupTime > DateTime.UtcNow || !_lightlessConfigService.Current.ProfilesShow) { ImGui.SetTooltip("Left click to switch between UID display and nick" + Environment.NewLine + "Right click to change nick for " + pair.UserData.AliasOrUID + Environment.NewLine @@ -222,11 +222,11 @@ public class IdDisplayHandler playerText = pair.UserData.AliasOrUID; } - if (_mareConfigService.Current.ShowCharacterNameInsteadOfNotesForVisible && pair.IsVisible && !showUidInsteadOfName) + if (_lightlessConfigService.Current.ShowCharacterNameInsteadOfNotesForVisible && pair.IsVisible && !showUidInsteadOfName) { playerText = pair.PlayerName; textIsUid = false; - if (_mareConfigService.Current.PreferNotesOverNamesForVisible) + if (_lightlessConfigService.Current.PreferNotesOverNamesForVisible) { var note = pair.GetNote(); if (note != null) diff --git a/LightlessSync/UI/Handlers/TagHandler.cs b/LightlessSync/UI/Handlers/TagHandler.cs index 5d9122f..f721508 100644 --- a/LightlessSync/UI/Handlers/TagHandler.cs +++ b/LightlessSync/UI/Handlers/TagHandler.cs @@ -4,12 +4,12 @@ namespace LightlessSync.UI.Handlers; public class TagHandler { - public const string CustomAllTag = "Mare_All"; - public const string CustomOfflineTag = "Mare_Offline"; - public const string CustomOfflineSyncshellTag = "Mare_OfflineSyncshell"; - public const string CustomOnlineTag = "Mare_Online"; - public const string CustomUnpairedTag = "Mare_Unpaired"; - public const string CustomVisibleTag = "Mare_Visible"; + public const string CustomAllTag = "Lightless_All"; + public const string CustomOfflineTag = "Lightless_Offline"; + public const string CustomOfflineSyncshellTag = "Lightless_OfflineSyncshell"; + public const string CustomOnlineTag = "Lightless_Online"; + public const string CustomUnpairedTag = "Lightless_Unpaired"; + public const string CustomVisibleTag = "Lightless_Visible"; private readonly ServerConfigurationManager _serverConfigurationManager; public TagHandler(ServerConfigurationManager serverConfigurationManager) diff --git a/LightlessSync/UI/IntroUI.cs b/LightlessSync/UI/IntroUI.cs index e06ba5d..edd3b8a 100644 --- a/LightlessSync/UI/IntroUI.cs +++ b/LightlessSync/UI/IntroUI.cs @@ -5,8 +5,8 @@ using Dalamud.Interface.Utility.Raii; using Dalamud.Utility; using LightlessSync.FileCache; using LightlessSync.Localization; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.Services; using LightlessSync.Services.Mediator; using LightlessSync.Services.ServerConfiguration; @@ -18,7 +18,7 @@ namespace LightlessSync.UI; public partial class IntroUi : WindowMediatorSubscriberBase { - private readonly MareConfigService _configService; + private readonly LightlessConfigService _configService; private readonly CacheMonitor _cacheMonitor; private readonly Dictionary _languages = new(StringComparer.Ordinal) { { "English", "en" }, { "Deutsch", "de" }, { "Français", "fr" } }; private readonly ServerConfigurationManager _serverConfigurationManager; @@ -33,9 +33,9 @@ public partial class IntroUi : WindowMediatorSubscriberBase private string[]? _tosParagraphs; private bool _useLegacyLogin = false; - public IntroUi(ILogger logger, UiSharedService uiShared, MareConfigService configService, - CacheMonitor fileCacheManager, ServerConfigurationManager serverConfigurationManager, MareMediator mareMediator, - PerformanceCollectorService performanceCollectorService, DalamudUtilService dalamudUtilService) : base(logger, mareMediator, "Lightless Sync Setup", performanceCollectorService) + public IntroUi(ILogger logger, UiSharedService uiShared, LightlessConfigService configService, + CacheMonitor fileCacheManager, ServerConfigurationManager serverConfigurationManager, LightlessMediator lightlessMediator, + PerformanceCollectorService performanceCollectorService, DalamudUtilService dalamudUtilService) : base(logger, lightlessMediator, "Lightless Sync Setup", performanceCollectorService) { _uiShared = uiShared; _configService = configService; @@ -196,8 +196,8 @@ public partial class IntroUi : WindowMediatorSubscriberBase _configService.Current.UseCompactor = useFileCompactor; _configService.Save(); } - UiSharedService.ColorTextWrapped("The File Compactor can save a tremendeous amount of space on the hard disk for downloads through Mare. It will incur a minor CPU penalty on download but can speed up " + - "loading of other characters. It is recommended to keep it enabled. You can change this setting later anytime in the Mare settings.", ImGuiColors.DalamudYellow); + UiSharedService.ColorTextWrapped("The File Compactor can save a tremendeous amount of space on the hard disk for downloads through Lightless. It will incur a minor CPU penalty on download but can speed up " + + "loading of other characters. It is recommended to keep it enabled. You can change this setting later anytime in the Lightless settings.", ImGuiColors.DalamudYellow); } } else if (!_uiShared.ApiController.ServerAlive) @@ -207,7 +207,7 @@ public partial class IntroUi : WindowMediatorSubscriberBase ImGui.Separator(); UiSharedService.TextWrapped("To be able to use Lightless Sync you will have to register an account."); UiSharedService.TextWrapped("For the official Lightless Sync Servers the account creation will be handled on the official Lightless Sync Discord. Due to security risks for the server, there is no way to handle this sensibly otherwise."); - UiSharedService.TextWrapped("If you want to register at the main server \"" + WebAPI.ApiController.MainServer + "\" join the Discord and follow the instructions as described in #mare-service."); + UiSharedService.TextWrapped("If you want to register at the main server \"" + WebAPI.ApiController.MainServer + "\" join the Discord and follow the instructions as described in #lightless-service."); if (ImGui.Button("Join the Light Public Syncshells Discord")) { diff --git a/LightlessSync/UI/JoinSyncshellUI.cs b/LightlessSync/UI/JoinSyncshellUI.cs index cc37306..64d34b5 100644 --- a/LightlessSync/UI/JoinSyncshellUI.cs +++ b/LightlessSync/UI/JoinSyncshellUI.cs @@ -24,7 +24,7 @@ internal class JoinSyncshellUI : WindowMediatorSubscriberBase private string _previousPassword = string.Empty; private string _syncshellPassword = string.Empty; - public JoinSyncshellUI(ILogger logger, MareMediator mediator, + public JoinSyncshellUI(ILogger logger, LightlessMediator mediator, UiSharedService uiSharedService, ApiController apiController, PerformanceCollectorService performanceCollectorService) : base(logger, mediator, "Join existing Syncshell###LightlessSyncJoinSyncshell", performanceCollectorService) { diff --git a/LightlessSync/UI/PermissionWindowUI.cs b/LightlessSync/UI/PermissionWindowUI.cs index 11d5ab6..bafcaa0 100644 --- a/LightlessSync/UI/PermissionWindowUI.cs +++ b/LightlessSync/UI/PermissionWindowUI.cs @@ -20,7 +20,7 @@ public class PermissionWindowUI : WindowMediatorSubscriberBase private readonly ApiController _apiController; private UserPermissions _ownPermissions; - public PermissionWindowUI(ILogger logger, Pair pair, MareMediator mediator, UiSharedService uiSharedService, + public PermissionWindowUI(ILogger logger, Pair pair, LightlessMediator mediator, UiSharedService uiSharedService, ApiController apiController, PerformanceCollectorService performanceCollectorService) : base(logger, mediator, "Permissions for " + pair.UserData.AliasOrUID + "###LightlessSyncPermissions" + pair.UserData.UID, performanceCollectorService) { @@ -175,7 +175,7 @@ public class PermissionWindowUI : WindowMediatorSubscriberBase new(StringComparer.Ordinal) )); } - UiSharedService.AttachToolTip("This will set all permissions to your defined default permissions in the Mare Settings"); + UiSharedService.AttachToolTip("This will set all permissions to your defined default permissions in the Lightless Settings"); var ySize = ImGui.GetCursorPosY() + style.FramePadding.Y * ImGuiHelpers.GlobalScale + style.FrameBorderSize; ImGui.SetWindowSize(new(400, ySize)); diff --git a/LightlessSync/UI/PopoutProfileUi.cs b/LightlessSync/UI/PopoutProfileUi.cs index 1785dd5..efad51e 100644 --- a/LightlessSync/UI/PopoutProfileUi.cs +++ b/LightlessSync/UI/PopoutProfileUi.cs @@ -3,7 +3,7 @@ using Dalamud.Interface.Colors; using Dalamud.Interface.Textures.TextureWraps; using Dalamud.Interface.Utility; using LightlessSync.API.Data.Extensions; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.PlayerData.Pairs; using LightlessSync.Services; using LightlessSync.Services.Mediator; @@ -15,7 +15,7 @@ namespace LightlessSync.UI; public class PopoutProfileUi : WindowMediatorSubscriberBase { - private readonly MareProfileManager _mareProfileManager; + private readonly LightlessProfileManager _lightlessProfileManager; private readonly PairManager _pairManager; private readonly ServerConfigurationManager _serverManager; private readonly UiSharedService _uiSharedService; @@ -27,13 +27,13 @@ public class PopoutProfileUi : WindowMediatorSubscriberBase private IDalamudTextureWrap? _supporterTextureWrap; private IDalamudTextureWrap? _textureWrap; - public PopoutProfileUi(ILogger logger, MareMediator mediator, UiSharedService uiBuilder, - ServerConfigurationManager serverManager, MareConfigService mareConfigService, - MareProfileManager mareProfileManager, PairManager pairManager, PerformanceCollectorService performanceCollectorService) : base(logger, mediator, "###LightlessSyncPopoutProfileUI", performanceCollectorService) + public PopoutProfileUi(ILogger logger, LightlessMediator mediator, UiSharedService uiBuilder, + ServerConfigurationManager serverManager, LightlessConfigService lightlessConfigService, + LightlessProfileManager lightlessProfileManager, PairManager pairManager, PerformanceCollectorService performanceCollectorService) : base(logger, mediator, "###LightlessSyncPopoutProfileUI", performanceCollectorService) { _uiSharedService = uiBuilder; _serverManager = serverManager; - _mareProfileManager = mareProfileManager; + _lightlessProfileManager = lightlessProfileManager; _pairManager = pairManager; Flags = ImGuiWindowFlags.NoDecoration; @@ -59,7 +59,7 @@ public class PopoutProfileUi : WindowMediatorSubscriberBase _lastMainSize = msg.Size; } var mainPos = msg.Position == Vector2.Zero ? _lastMainPos : msg.Position; - if (mareConfigService.Current.ProfilePopoutRight) + if (lightlessConfigService.Current.ProfilePopoutRight) { Position = new(mainPos.X + _lastMainSize.X * ImGuiHelpers.GlobalScale, mainPos.Y); } @@ -85,22 +85,22 @@ public class PopoutProfileUi : WindowMediatorSubscriberBase { var spacing = ImGui.GetStyle().ItemSpacing; - var mareProfile = _mareProfileManager.GetMareProfile(_pair.UserData); + var lightlessProfile = _lightlessProfileManager.GetLightlessProfile(_pair.UserData); - if (_textureWrap == null || !mareProfile.ImageData.Value.SequenceEqual(_lastProfilePicture)) + if (_textureWrap == null || !lightlessProfile.ImageData.Value.SequenceEqual(_lastProfilePicture)) { _textureWrap?.Dispose(); - _lastProfilePicture = mareProfile.ImageData.Value; + _lastProfilePicture = lightlessProfile.ImageData.Value; _textureWrap = _uiSharedService.LoadImage(_lastProfilePicture); } - if (_supporterTextureWrap == null || !mareProfile.SupporterImageData.Value.SequenceEqual(_lastSupporterPicture)) + if (_supporterTextureWrap == null || !lightlessProfile.SupporterImageData.Value.SequenceEqual(_lastSupporterPicture)) { _supporterTextureWrap?.Dispose(); _supporterTextureWrap = null; - if (!string.IsNullOrEmpty(mareProfile.Base64SupporterPicture)) + if (!string.IsNullOrEmpty(lightlessProfile.Base64SupporterPicture)) { - _lastSupporterPicture = mareProfile.SupporterImageData.Value; + _lastSupporterPicture = lightlessProfile.SupporterImageData.Value; _supporterTextureWrap = _uiSharedService.LoadImage(_lastSupporterPicture); } } @@ -158,7 +158,7 @@ public class PopoutProfileUi : WindowMediatorSubscriberBase ImGui.Separator(); var font = _uiSharedService.GameFont.Push(); var remaining = ImGui.GetWindowContentRegionMax().Y - ImGui.GetCursorPosY(); - var descText = mareProfile.Description; + var descText = lightlessProfile.Description; var textSize = ImGui.CalcTextSize(descText, wrapWidth: 256f * ImGuiHelpers.GlobalScale); bool trimmed = textSize.Y > remaining; while (textSize.Y > remaining && descText.Contains(' ')) @@ -166,7 +166,7 @@ public class PopoutProfileUi : WindowMediatorSubscriberBase descText = descText[..descText.LastIndexOf(' ')].TrimEnd(); textSize = ImGui.CalcTextSize(descText + $"...{Environment.NewLine}[Open Full Profile for complete description]", wrapWidth: 256f * ImGuiHelpers.GlobalScale); } - UiSharedService.TextWrapped(trimmed ? descText + $"...{Environment.NewLine}[Open Full Profile for complete description]" : mareProfile.Description); + UiSharedService.TextWrapped(trimmed ? descText + $"...{Environment.NewLine}[Open Full Profile for complete description]" : lightlessProfile.Description); font.Dispose(); var padding = ImGui.GetStyle().WindowPadding.X / 2; diff --git a/LightlessSync/UI/SettingsUi.cs b/LightlessSync/UI/SettingsUi.cs index 50ef08b..1775c46 100644 --- a/LightlessSync/UI/SettingsUi.cs +++ b/LightlessSync/UI/SettingsUi.cs @@ -9,8 +9,8 @@ using LightlessSync.API.Data.Comparer; using LightlessSync.API.Routes; using LightlessSync.FileCache; using LightlessSync.Interop.Ipc; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.PlayerData.Handlers; using LightlessSync.PlayerData.Pairs; using LightlessSync.Services; @@ -38,7 +38,7 @@ public class SettingsUi : WindowMediatorSubscriberBase { private readonly ApiController _apiController; private readonly CacheMonitor _cacheMonitor; - private readonly MareConfigService _configService; + private readonly LightlessConfigService _configService; private readonly ConcurrentDictionary> _currentDownloads = new(); private readonly DalamudUtilService _dalamudUtilService; private readonly HttpClient _httpClient; @@ -67,11 +67,11 @@ public class SettingsUi : WindowMediatorSubscriberBase private bool _wasOpen = false; public SettingsUi(ILogger logger, - UiSharedService uiShared, MareConfigService configService, + UiSharedService uiShared, LightlessConfigService configService, PairManager pairManager, ServerConfigurationManager serverConfigurationManager, PlayerPerformanceConfigService playerPerformanceConfigService, - MareMediator mediator, PerformanceCollectorService performanceCollector, + LightlessMediator mediator, PerformanceCollectorService performanceCollector, FileUploadManager fileTransferManager, FileTransferOrchestrator fileTransferOrchestrator, FileCacheManager fileCacheManager, @@ -178,7 +178,7 @@ public class SettingsUi : WindowMediatorSubscriberBase _lastTab = "BlockedTransfers"; UiSharedService.ColorTextWrapped("Files that you attempted to upload or download that were forbidden to be transferred by their creators will appear here. " + "If you see file paths from your drive here, then those files were not allowed to be uploaded. If you see hashes, those files were not allowed to be downloaded. " + - "Ask your paired friend to send you the mod in question through other means, acquire the mod yourself or pester the mod creator to allow it to be sent over Mare.", + "Ask your paired friend to send you the mod in question through other means, acquire the mod yourself or pester the mod creator to allow it to be sent over Lightless.", ImGuiColors.DalamudGrey); if (ImGui.BeginTable("TransfersTable", 2, ImGuiTableFlags.SizingStretchProp)) @@ -634,7 +634,7 @@ public class SettingsUi : WindowMediatorSubscriberBase _uiShared.IconText(FontAwesomeIcon.UserCog); ImGui.SameLine(); UiSharedService.TextWrapped(") -> \"Character Data Hub\"."); - if (_uiShared.IconTextButton(FontAwesomeIcon.Running, "Open Mare Character Data Hub")) + if (_uiShared.IconTextButton(FontAwesomeIcon.Running, "Open Lightless Character Data Hub")) { Mediator.Publish(new UiToggleMessage(typeof(CharaDataHubUi))); } @@ -644,7 +644,7 @@ public class SettingsUi : WindowMediatorSubscriberBase _uiShared.BigText("Storage"); - UiSharedService.TextWrapped("Mare stores downloaded files from paired people permanently. This is to improve loading performance and requiring less downloads. " + + UiSharedService.TextWrapped("Lightless stores downloaded files from paired people permanently. This is to improve loading performance and requiring less downloads. " + "The storage governs itself by clearing data beyond the set storage size. Please set the storage size accordingly. It is not necessary to manually clear the storage."); _uiShared.DrawFileScanState(); @@ -661,25 +661,25 @@ public class SettingsUi : WindowMediatorSubscriberBase } ImGui.AlignTextToFramePadding(); - ImGui.TextUnformatted("Monitoring Mare Storage Folder: " + (_cacheMonitor.MareWatcher?.Path ?? "Not monitoring")); - if (string.IsNullOrEmpty(_cacheMonitor.MareWatcher?.Path)) + ImGui.TextUnformatted("Monitoring Lightless Storage Folder: " + (_cacheMonitor.LightlessWatcher?.Path ?? "Not monitoring")); + if (string.IsNullOrEmpty(_cacheMonitor.LightlessWatcher?.Path)) { ImGui.SameLine(); - using var id = ImRaii.PushId("mareMonitor"); + using var id = ImRaii.PushId("lightlessMonitor"); if (_uiShared.IconTextButton(FontAwesomeIcon.ArrowsToCircle, "Try to reinitialize Monitor")) { - _cacheMonitor.StartMareWatcher(_configService.Current.CacheFolder); + _cacheMonitor.StartLightlessWatcher(_configService.Current.CacheFolder); } } - if (_cacheMonitor.MareWatcher == null || _cacheMonitor.PenumbraWatcher == null) + if (_cacheMonitor.LightlessWatcher == null || _cacheMonitor.PenumbraWatcher == null) { if (_uiShared.IconTextButton(FontAwesomeIcon.Play, "Resume Monitoring")) { - _cacheMonitor.StartMareWatcher(_configService.Current.CacheFolder); + _cacheMonitor.StartLightlessWatcher(_configService.Current.CacheFolder); _cacheMonitor.StartPenumbraWatcher(_ipcManager.Penumbra.ModDirectory); _cacheMonitor.InvokeScan(); } - UiSharedService.AttachToolTip("Attempts to resume monitoring for both Penumbra and Mare Storage. " + UiSharedService.AttachToolTip("Attempts to resume monitoring for both Penumbra and Lightless Storage. " + "Resuming the monitoring will also force a full scan to run." + Environment.NewLine + "If the button remains present after clicking it, consult /xllog for errors"); } @@ -692,8 +692,8 @@ public class SettingsUi : WindowMediatorSubscriberBase _cacheMonitor.StopMonitoring(); } } - UiSharedService.AttachToolTip("Stops the monitoring for both Penumbra and Mare Storage. " - + "Do not stop the monitoring, unless you plan to move the Penumbra and Mare Storage folders, to ensure correct functionality of Mare." + Environment.NewLine + UiSharedService.AttachToolTip("Stops the monitoring for both Penumbra and Lightless Storage. " + + "Do not stop the monitoring, unless you plan to move the Penumbra and Lightless Storage folders, to ensure correct functionality of Lightless." + Environment.NewLine + "If you stop the monitoring to move folders around, resume it after you are finished moving the files." + UiSharedService.TooltipSeparator + "Hold CTRL to enable this button"); } @@ -709,7 +709,7 @@ public class SettingsUi : WindowMediatorSubscriberBase bool isLinux = _dalamudUtilService.IsWine; if (!useFileCompactor && !isLinux) { - UiSharedService.ColorTextWrapped("Hint: To free up space when using Mare consider enabling the File Compactor", ImGuiColors.DalamudYellow); + UiSharedService.ColorTextWrapped("Hint: To free up space when using Lightless consider enabling the File Compactor", ImGuiColors.DalamudYellow); } if (isLinux || !_cacheMonitor.StorageisNTFS) ImGui.BeginDisabled(); if (ImGui.Checkbox("Use file compactor", ref useFileCompactor)) @@ -730,7 +730,7 @@ public class SettingsUi : WindowMediatorSubscriberBase _cacheMonitor.RecalculateFileCacheSize(CancellationToken.None); }); } - UiSharedService.AttachToolTip("This will run compression on all files in your current Mare Storage." + Environment.NewLine + UiSharedService.AttachToolTip("This will run compression on all files in your current Lightless Storage." + Environment.NewLine + "You do not need to run this manually if you keep the file compactor enabled."); ImGui.SameLine(); if (_uiShared.IconTextButton(FontAwesomeIcon.File, "Decompact all files in storage")) @@ -741,7 +741,7 @@ public class SettingsUi : WindowMediatorSubscriberBase _cacheMonitor.RecalculateFileCacheSize(CancellationToken.None); }); } - UiSharedService.AttachToolTip("This will run decompression on all files in your current Mare Storage."); + UiSharedService.AttachToolTip("This will run decompression on all files in your current Lightless Storage."); } else { @@ -755,7 +755,7 @@ public class SettingsUi : WindowMediatorSubscriberBase ImGuiHelpers.ScaledDummy(new Vector2(10, 10)); ImGui.Separator(); - UiSharedService.TextWrapped("File Storage validation can make sure that all files in your local Mare Storage are valid. " + + UiSharedService.TextWrapped("File Storage validation can make sure that all files in your local Lightless Storage are valid. " + "Run the validation before you clear the Storage for no reason. " + Environment.NewLine + "This operation, depending on how many files you have in your storage, can take a while and will be CPU and drive intensive."); using (ImRaii.Disabled(_validationTask != null && !_validationTask.IsCompleted)) @@ -818,7 +818,7 @@ public class SettingsUi : WindowMediatorSubscriberBase } UiSharedService.AttachToolTip("You normally do not need to do this. THIS IS NOT SOMETHING YOU SHOULD BE DOING TO TRY TO FIX SYNC ISSUES." + Environment.NewLine + "This will solely remove all downloaded data from all players and will require you to re-download everything again." + Environment.NewLine - + "Mares storage is self-clearing and will not surpass the limit you have set it to." + Environment.NewLine + + "Lightless storage is self-clearing and will not surpass the limit you have set it to." + Environment.NewLine + "If you still think you need to do this hold CTRL while pressing the button."); if (!_readClearCache) ImGui.EndDisabled(); @@ -905,14 +905,14 @@ public class SettingsUi : WindowMediatorSubscriberBase _configService.Current.EnableRightClickMenus = enableRightClickMenu; _configService.Save(); } - _uiShared.DrawHelpText("This will add Mare related right click menu entries in the game UI on paired players."); + _uiShared.DrawHelpText("This will add Lightless related right click menu entries in the game UI on paired players."); if (ImGui.Checkbox("Display status and visible pair count in Server Info Bar", ref enableDtrEntry)) { _configService.Current.EnableDtrEntry = enableDtrEntry; _configService.Save(); } - _uiShared.DrawHelpText("This will add Mare connection status and visible pair count in the Server Info Bar.\nYou can further configure this through your Dalamud Settings."); + _uiShared.DrawHelpText("This will add Lightless connection status and visible pair count in the Server Info Bar.\nYou can further configure this through your Dalamud Settings."); using (ImRaii.Disabled(!enableDtrEntry)) { @@ -1032,7 +1032,7 @@ public class SettingsUi : WindowMediatorSubscriberBase _configService.Save(); } - if (ImGui.Checkbox("Show Mare Profiles on Hover", ref showProfiles)) + if (ImGui.Checkbox("Show Lightless Profiles on Hover", ref showProfiles)) { Mediator.Publish(new ClearProfileDataMessage()); _configService.Current.ProfilesShow = showProfiles; @@ -1149,14 +1149,14 @@ public class SettingsUi : WindowMediatorSubscriberBase _playerPerformanceConfigService.Current.ShowPerformanceIndicator = showPerformanceIndicator; _playerPerformanceConfigService.Save(); } - _uiShared.DrawHelpText("Will show a performance indicator when players exceed defined thresholds in Mares UI." + Environment.NewLine + "Will use warning thresholds."); + _uiShared.DrawHelpText("Will show a performance indicator when players exceed defined thresholds in Lightless UI." + Environment.NewLine + "Will use warning thresholds."); bool warnOnExceedingThresholds = _playerPerformanceConfigService.Current.WarnOnExceedingThresholds; if (ImGui.Checkbox("Warn on loading in players exceeding performance thresholds", ref warnOnExceedingThresholds)) { _playerPerformanceConfigService.Current.WarnOnExceedingThresholds = warnOnExceedingThresholds; _playerPerformanceConfigService.Save(); } - _uiShared.DrawHelpText("Mare will print a warning in chat once per session of meeting those people. Will not warn on players with preferred permissions."); + _uiShared.DrawHelpText("Lightless will print a warning in chat once per session of meeting those people. Will not warn on players with preferred permissions."); using (ImRaii.Disabled(!warnOnExceedingThresholds && !showPerformanceIndicator)) { using var indent = ImRaii.PushIndent(); @@ -1166,7 +1166,7 @@ public class SettingsUi : WindowMediatorSubscriberBase _playerPerformanceConfigService.Current.WarnOnPreferredPermissionsExceedingThresholds = warnOnPref; _playerPerformanceConfigService.Save(); } - _uiShared.DrawHelpText("Mare will also print warnings and show performance indicator for players where you enabled preferred permissions. If warning in general is disabled, this will not produce any warnings."); + _uiShared.DrawHelpText("Lightless will also print warnings and show performance indicator for players where you enabled preferred permissions. If warning in general is disabled, this will not produce any warnings."); } using (ImRaii.Disabled(!showPerformanceIndicator && !warnOnExceedingThresholds)) { @@ -1409,7 +1409,7 @@ public class SettingsUi : WindowMediatorSubscriberBase { if (selectedServer.SecretKeys.Any() || useOauth) { - UiSharedService.ColorTextWrapped("Characters listed here will automatically connect to the selected Mare service with the settings as provided below." + + UiSharedService.ColorTextWrapped("Characters listed here will automatically connect to the selected Lightless service with the settings as provided below." + " Make sure to enter the character names correctly or use the 'Add current character' button at the bottom.", ImGuiColors.DalamudYellow); int i = 0; _uiShared.DrawUpdateOAuthUIDsButton(selectedServer); @@ -1582,12 +1582,12 @@ public class SettingsUi : WindowMediatorSubscriberBase _uiShared.DrawUIDComboForAuthentication(i, item, selectedServer.ServerUri, _logger); } bool isAutoLogin = item.AutoLogin; - if (ImGui.Checkbox("Automatically login to Mare", ref isAutoLogin)) + if (ImGui.Checkbox("Automatically login to Lightless", ref isAutoLogin)) { item.AutoLogin = isAutoLogin; _serverConfigurationManager.Save(); } - _uiShared.DrawHelpText("When enabled and logging into this character in XIV, Mare will automatically connect to the current service."); + _uiShared.DrawHelpText("When enabled and logging into this character in XIV, Lightless will automatically connect to the current service."); if (_uiShared.IconTextButton(FontAwesomeIcon.Trash, "Delete Character") && UiSharedService.CtrlPressed()) _serverConfigurationManager.RemoveCharacterFromServer(idx, item); UiSharedService.AttachToolTip("Hold CTRL to delete this entry."); @@ -1719,7 +1719,7 @@ public class SettingsUi : WindowMediatorSubscriberBase selectedServer.ForceWebSockets = forceWebSockets; _serverConfigurationManager.Save(); } - _uiShared.DrawHelpText("On wine, Mare will automatically fall back to ServerSentEvents/LongPolling, even if WebSockets is selected. " + _uiShared.DrawHelpText("On wine, Lightless will automatically fall back to ServerSentEvents/LongPolling, even if WebSockets is selected. " + "WebSockets are known to crash XIV entirely on wine 8.5 shipped with Dalamud. " + "Only enable this if you are not running wine 8.5." + Environment.NewLine + "Note: If the issue gets resolved at some point this option will be removed."); diff --git a/LightlessSync/UI/StandaloneProfileUi.cs b/LightlessSync/UI/StandaloneProfileUi.cs index e873eb0..24b3d9f 100644 --- a/LightlessSync/UI/StandaloneProfileUi.cs +++ b/LightlessSync/UI/StandaloneProfileUi.cs @@ -14,7 +14,7 @@ namespace LightlessSync.UI; public class StandaloneProfileUi : WindowMediatorSubscriberBase { - private readonly MareProfileManager _mareProfileManager; + private readonly LightlessProfileManager _lightlessProfileManager; private readonly PairManager _pairManager; private readonly ServerConfigurationManager _serverManager; private readonly UiSharedService _uiSharedService; @@ -24,14 +24,14 @@ public class StandaloneProfileUi : WindowMediatorSubscriberBase private IDalamudTextureWrap? _supporterTextureWrap; private IDalamudTextureWrap? _textureWrap; - public StandaloneProfileUi(ILogger logger, MareMediator mediator, UiSharedService uiBuilder, - ServerConfigurationManager serverManager, MareProfileManager mareProfileManager, PairManager pairManager, Pair pair, + public StandaloneProfileUi(ILogger logger, LightlessMediator mediator, UiSharedService uiBuilder, + ServerConfigurationManager serverManager, LightlessProfileManager lightlessProfileManager, PairManager pairManager, Pair pair, PerformanceCollectorService performanceCollector) - : base(logger, mediator, "Mare Profile of " + pair.UserData.AliasOrUID + "##LightlessSyncStandaloneProfileUI" + pair.UserData.AliasOrUID, performanceCollector) + : base(logger, mediator, "Lightless Profile of " + pair.UserData.AliasOrUID + "##LightlessSyncStandaloneProfileUI" + pair.UserData.AliasOrUID, performanceCollector) { _uiSharedService = uiBuilder; _serverManager = serverManager; - _mareProfileManager = mareProfileManager; + _lightlessProfileManager = lightlessProfileManager; Pair = pair; _pairManager = pairManager; Flags = ImGuiWindowFlags.NoResize | ImGuiWindowFlags.AlwaysAutoResize; @@ -51,22 +51,22 @@ public class StandaloneProfileUi : WindowMediatorSubscriberBase { var spacing = ImGui.GetStyle().ItemSpacing; - var mareProfile = _mareProfileManager.GetMareProfile(Pair.UserData); + var lightlessProfile = _lightlessProfileManager.GetLightlessProfile(Pair.UserData); - if (_textureWrap == null || !mareProfile.ImageData.Value.SequenceEqual(_lastProfilePicture)) + if (_textureWrap == null || !lightlessProfile.ImageData.Value.SequenceEqual(_lastProfilePicture)) { _textureWrap?.Dispose(); - _lastProfilePicture = mareProfile.ImageData.Value; + _lastProfilePicture = lightlessProfile.ImageData.Value; _textureWrap = _uiSharedService.LoadImage(_lastProfilePicture); } - if (_supporterTextureWrap == null || !mareProfile.SupporterImageData.Value.SequenceEqual(_lastSupporterPicture)) + if (_supporterTextureWrap == null || !lightlessProfile.SupporterImageData.Value.SequenceEqual(_lastSupporterPicture)) { _supporterTextureWrap?.Dispose(); _supporterTextureWrap = null; - if (!string.IsNullOrEmpty(mareProfile.Base64SupporterPicture)) + if (!string.IsNullOrEmpty(lightlessProfile.Base64SupporterPicture)) { - _lastSupporterPicture = mareProfile.SupporterImageData.Value; + _lastSupporterPicture = lightlessProfile.SupporterImageData.Value; _supporterTextureWrap = _uiSharedService.LoadImage(_lastSupporterPicture); } } @@ -86,7 +86,7 @@ public class StandaloneProfileUi : WindowMediatorSubscriberBase ImGuiHelpers.ScaledDummy(new Vector2(256, 256 + spacing.Y)); var postDummy = ImGui.GetCursorPosY(); ImGui.SameLine(); - var descriptionTextSize = ImGui.CalcTextSize(mareProfile.Description, wrapWidth: 256f); + var descriptionTextSize = ImGui.CalcTextSize(lightlessProfile.Description, wrapWidth: 256f); var descriptionChildHeight = rectMax.Y - pos.Y - rectMin.Y - spacing.Y * 2; if (descriptionTextSize.Y > descriptionChildHeight && !_adjustedForScrollBars) { @@ -107,7 +107,7 @@ public class StandaloneProfileUi : WindowMediatorSubscriberBase if (ImGui.BeginChildFrame(1000, childFrame)) { using var _ = _uiSharedService.GameFont.Push(); - ImGui.TextWrapped(mareProfile.Description); + ImGui.TextWrapped(lightlessProfile.Description); } ImGui.EndChildFrame(); diff --git a/LightlessSync/UI/SyncshellAdminUI.cs b/LightlessSync/UI/SyncshellAdminUI.cs index b10c93d..b3c70d2 100644 --- a/LightlessSync/UI/SyncshellAdminUI.cs +++ b/LightlessSync/UI/SyncshellAdminUI.cs @@ -31,7 +31,7 @@ public class SyncshellAdminUI : WindowMediatorSubscriberBase private Task? _pruneTask; private int _pruneDays = 14; - public SyncshellAdminUI(ILogger logger, MareMediator mediator, ApiController apiController, + public SyncshellAdminUI(ILogger logger, LightlessMediator mediator, ApiController apiController, UiSharedService uiSharedService, PairManager pairManager, GroupFullInfoDto groupFullInfo, PerformanceCollectorService performanceCollectorService) : base(logger, mediator, "Syncshell Admin Panel (" + groupFullInfo.GroupAliasOrGID + ")", performanceCollectorService) { @@ -259,7 +259,7 @@ public class SyncshellAdminUI : WindowMediatorSubscriberBase _pruneTestTask = _apiController.GroupPrune(new(GroupFullInfo.Group), _pruneDays, execute: false); _pruneTask = null; } - UiSharedService.AttachToolTip($"This will start the prune process for this Syncshell of inactive Mare users that have not logged in in the past {_pruneDays} days." + UiSharedService.AttachToolTip($"This will start the prune process for this Syncshell of inactive Lightless users that have not logged in in the past {_pruneDays} days." + Environment.NewLine + "You will be able to review the amount of inactive users before executing the prune." + UiSharedService.TooltipSeparator + "Note: this check excludes pinned users and moderators of this Syncshell."); ImGui.SameLine(); @@ -285,7 +285,7 @@ public class SyncshellAdminUI : WindowMediatorSubscriberBase else { ImGui.AlignTextToFramePadding(); - UiSharedService.TextWrapped($"Found {_pruneTestTask.Result} user(s) that have not logged into Mare in the past {_pruneDays} days."); + UiSharedService.TextWrapped($"Found {_pruneTestTask.Result} user(s) that have not logged into Lightless in the past {_pruneDays} days."); if (_pruneTestTask.Result > 0) { using (ImRaii.Disabled(!UiSharedService.CtrlPressed())) diff --git a/LightlessSync/UI/TopTabMenu.cs b/LightlessSync/UI/TopTabMenu.cs index b627194..f5269a7 100644 --- a/LightlessSync/UI/TopTabMenu.cs +++ b/LightlessSync/UI/TopTabMenu.cs @@ -16,7 +16,7 @@ public class TopTabMenu { private readonly ApiController _apiController; - private readonly MareMediator _mareMediator; + private readonly LightlessMediator _lightlessMediator; private readonly PairManager _pairManager; private readonly UiSharedService _uiSharedService; @@ -26,9 +26,9 @@ public class TopTabMenu private string _pairToAdd = string.Empty; private SelectedTab _selectedTab = SelectedTab.None; - public TopTabMenu(MareMediator mareMediator, ApiController apiController, PairManager pairManager, UiSharedService uiSharedService) + public TopTabMenu(LightlessMediator lightlessMediator, ApiController apiController, PairManager pairManager, UiSharedService uiSharedService) { - _mareMediator = mareMediator; + _lightlessMediator = lightlessMediator; _apiController = apiController; _pairManager = pairManager; _uiSharedService = uiSharedService; @@ -50,7 +50,7 @@ public class TopTabMenu { if (!string.Equals(_filter, value, StringComparison.OrdinalIgnoreCase)) { - _mareMediator.Publish(new RefreshUiMessage()); + _lightlessMediator.Publish(new RefreshUiMessage()); } _filter = value; @@ -469,7 +469,7 @@ public class TopTabMenu { if (_uiSharedService.IconTextButton(FontAwesomeIcon.Plus, "Create new Syncshell", buttonX)) { - _mareMediator.Publish(new UiToggleMessage(typeof(CreateSyncshellUI))); + _lightlessMediator.Publish(new UiToggleMessage(typeof(CreateSyncshellUI))); } ImGui.SameLine(); } @@ -478,7 +478,7 @@ public class TopTabMenu { if (_uiSharedService.IconTextButton(FontAwesomeIcon.Users, "Join existing Syncshell", buttonX)) { - _mareMediator.Publish(new UiToggleMessage(typeof(JoinSyncshellUI))); + _lightlessMediator.Publish(new UiToggleMessage(typeof(JoinSyncshellUI))); } } } @@ -486,20 +486,20 @@ public class TopTabMenu private void DrawUserConfig(float availableWidth, float spacingX) { var buttonX = (availableWidth - spacingX) / 2f; - if (_uiSharedService.IconTextButton(FontAwesomeIcon.UserCircle, "Edit Mare Profile", buttonX)) + if (_uiSharedService.IconTextButton(FontAwesomeIcon.UserCircle, "Edit Lightless Profile", buttonX)) { - _mareMediator.Publish(new UiToggleMessage(typeof(EditProfileUi))); + _lightlessMediator.Publish(new UiToggleMessage(typeof(EditProfileUi))); } - UiSharedService.AttachToolTip("Edit your Mare Profile"); + UiSharedService.AttachToolTip("Edit your Lightless Profile"); ImGui.SameLine(); if (_uiSharedService.IconTextButton(FontAwesomeIcon.PersonCircleQuestion, "Chara Data Analysis", buttonX)) { - _mareMediator.Publish(new UiToggleMessage(typeof(DataAnalysisUi))); + _lightlessMediator.Publish(new UiToggleMessage(typeof(DataAnalysisUi))); } UiSharedService.AttachToolTip("View and analyze your generated character data"); if (_uiSharedService.IconTextButton(FontAwesomeIcon.Running, "Character Data Hub", availableWidth)) { - _mareMediator.Publish(new UiToggleMessage(typeof(CharaDataHubUi))); + _lightlessMediator.Publish(new UiToggleMessage(typeof(CharaDataHubUi))); } } diff --git a/LightlessSync/UI/UISharedService.cs b/LightlessSync/UI/UISharedService.cs index a7262fe..d0d2398 100644 --- a/LightlessSync/UI/UISharedService.cs +++ b/LightlessSync/UI/UISharedService.cs @@ -13,8 +13,8 @@ using Dalamud.Utility; using LightlessSync.FileCache; using LightlessSync.Interop.Ipc; using LightlessSync.Localization; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.PlayerData.Pairs; using LightlessSync.Services; using LightlessSync.Services.Mediator; @@ -39,11 +39,11 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase ImGuiWindowFlags.NoScrollWithMouse; public readonly FileDialogManager FileDialogManager; - private const string _notesEnd = "##MARE_SYNCHRONOS_USER_NOTES_END##"; - private const string _notesStart = "##MARE_SYNCHRONOS_USER_NOTES_START##"; + private const string _notesEnd = "##LIGHTLESS_SYNC_USER_NOTES_END##"; + private const string _notesStart = "##LIGHTLESS_SYNC_USER_NOTES_START##"; private readonly ApiController _apiController; private readonly CacheMonitor _cacheMonitor; - private readonly MareConfigService _configService; + private readonly LightlessConfigService _configService; private readonly DalamudUtilService _dalamudUtil; private readonly IpcManager _ipcManager; private readonly Dalamud.Localization _localization; @@ -75,10 +75,10 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase private int _serverSelectionIndex = -1; public UiSharedService(ILogger logger, IpcManager ipcManager, ApiController apiController, CacheMonitor cacheMonitor, FileDialogManager fileDialogManager, - MareConfigService configService, DalamudUtilService dalamudUtil, IDalamudPluginInterface pluginInterface, + LightlessConfigService configService, DalamudUtilService dalamudUtil, IDalamudPluginInterface pluginInterface, ITextureProvider textureProvider, Dalamud.Localization localization, - ServerConfigurationManager serverManager, TokenProvider tokenProvider, MareMediator mediator) : base(logger, mediator) + ServerConfigurationManager serverManager, TokenProvider tokenProvider, LightlessMediator mediator) : base(logger, mediator) { _ipcManager = ipcManager; _apiController = apiController; @@ -453,12 +453,12 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase public void DrawCacheDirectorySetting() { - ColorTextWrapped("Note: The storage folder should be somewhere close to root (i.e. C:\\MareStorage) in a new empty folder. DO NOT point this to your game folder. DO NOT point this to your Penumbra folder.", ImGuiColors.DalamudYellow); + ColorTextWrapped("Note: The storage folder should be somewhere close to root (i.e. C:\\LightlessStorage) in a new empty folder. DO NOT point this to your game folder. DO NOT point this to your Penumbra folder.", ImGuiColors.DalamudYellow); var cacheDirectory = _configService.Current.CacheFolder; ImGui.InputText("Storage Folder##cache", ref cacheDirectory, 255, ImGuiInputTextFlags.ReadOnly); ImGui.SameLine(); - using (ImRaii.Disabled(_cacheMonitor.MareWatcher != null)) + using (ImRaii.Disabled(_cacheMonitor.LightlessWatcher != null)) { if (IconButton(FontAwesomeIcon.Folder)) { @@ -484,7 +484,7 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase if (dirs.Any()) { _cacheDirectoryHasOtherFilesThanCache = true; - Logger.LogWarning("Found folders in {path} not belonging to Mare: {dirs}", path, string.Join(", ", dirs)); + Logger.LogWarning("Found folders in {path} not belonging to Lightless: {dirs}", path, string.Join(", ", dirs)); } _isDirectoryWritable = IsDirectoryWritable(path); @@ -500,13 +500,13 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase { _configService.Current.CacheFolder = path; _configService.Save(); - _cacheMonitor.StartMareWatcher(path); + _cacheMonitor.StartLightlessWatcher(path); _cacheMonitor.InvokeScan(); } }, _dalamudUtil.IsWine ? @"Z:\" : @"C:\"); } } - if (_cacheMonitor.MareWatcher != null) + if (_cacheMonitor.LightlessWatcher != null) { AttachToolTip("Stop the Monitoring before changing the Storage folder. As long as monitoring is active, you cannot change the Storage folder location."); } @@ -525,7 +525,7 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase } else if (_cacheDirectoryHasOtherFilesThanCache) { - ColorTextWrapped("Your selected directory has files or directories inside that are not Mare related. Use an empty directory or a previous Mare storage directory only.", ImGuiColors.DalamudRed); + ColorTextWrapped("Your selected directory has files or directories inside that are not Lightless related. Use an empty directory or a previous Lightless storage directory only.", ImGuiColors.DalamudRed); } else if (!_cacheDirectoryIsValidPath) { @@ -539,7 +539,7 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase _configService.Current.MaxLocalCacheInGiB = maxCacheSize; _configService.Save(); } - DrawHelpText("The storage is automatically governed by Mare. It will clear itself automatically once it reaches the set capacity by removing the oldest unused files. You typically do not need to clear it yourself."); + DrawHelpText("The storage is automatically governed by Lightless. It will clear itself automatically once it reaches the set capacity by removing the oldest unused files. You typically do not need to clear it yourself."); } public T? DrawCombo(string comboName, IEnumerable comboItems, Func toName, diff --git a/LightlessSync/Utils/MareInterpolatedStringHandler.cs b/LightlessSync/Utils/MareInterpolatedStringHandler.cs index db8dd08..6fb9986 100644 --- a/LightlessSync/Utils/MareInterpolatedStringHandler.cs +++ b/LightlessSync/Utils/MareInterpolatedStringHandler.cs @@ -4,11 +4,11 @@ using System.Text; namespace LightlessSync.Utils; [InterpolatedStringHandler] -public readonly ref struct MareInterpolatedStringHandler +public readonly ref struct LightlessInterpolatedStringHandler { readonly StringBuilder _logMessageStringbuilder; - public MareInterpolatedStringHandler(int literalLength, int formattedCount) + public LightlessInterpolatedStringHandler(int literalLength, int formattedCount) { _logMessageStringbuilder = new StringBuilder(literalLength); } diff --git a/LightlessSync/WebAPI/Files/FileDownloadManager.cs b/LightlessSync/WebAPI/Files/FileDownloadManager.cs index 2dc38a4..6932384 100644 --- a/LightlessSync/WebAPI/Files/FileDownloadManager.cs +++ b/LightlessSync/WebAPI/Files/FileDownloadManager.cs @@ -21,7 +21,7 @@ public partial class FileDownloadManager : DisposableMediatorSubscriberBase private readonly FileTransferOrchestrator _orchestrator; private readonly List _activeDownloadStreams; - public FileDownloadManager(ILogger logger, MareMediator mediator, + public FileDownloadManager(ILogger logger, LightlessMediator mediator, FileTransferOrchestrator orchestrator, FileCacheManager fileCacheManager, FileCompactor fileCompactor) : base(logger, mediator) { diff --git a/LightlessSync/WebAPI/Files/FileTransferOrchestrator.cs b/LightlessSync/WebAPI/Files/FileTransferOrchestrator.cs index 0164c86..690ea79 100644 --- a/LightlessSync/WebAPI/Files/FileTransferOrchestrator.cs +++ b/LightlessSync/WebAPI/Files/FileTransferOrchestrator.cs @@ -1,4 +1,4 @@ -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.Services.Mediator; using LightlessSync.WebAPI.Files.Models; using LightlessSync.WebAPI.SignalR; @@ -14,23 +14,23 @@ public class FileTransferOrchestrator : DisposableMediatorSubscriberBase { private readonly ConcurrentDictionary _downloadReady = new(); private readonly HttpClient _httpClient; - private readonly MareConfigService _mareConfig; + private readonly LightlessConfigService _lightlessConfig; private readonly object _semaphoreModificationLock = new(); private readonly TokenProvider _tokenProvider; private int _availableDownloadSlots; private SemaphoreSlim _downloadSemaphore; private int CurrentlyUsedDownloadSlots => _availableDownloadSlots - _downloadSemaphore.CurrentCount; - public FileTransferOrchestrator(ILogger logger, MareConfigService mareConfig, - MareMediator mediator, TokenProvider tokenProvider, HttpClient httpClient) : base(logger, mediator) + public FileTransferOrchestrator(ILogger logger, LightlessConfigService lightlessConfig, + LightlessMediator mediator, TokenProvider tokenProvider, HttpClient httpClient) : base(logger, mediator) { - _mareConfig = mareConfig; + _lightlessConfig = lightlessConfig; _tokenProvider = tokenProvider; _httpClient = httpClient; var ver = Assembly.GetExecutingAssembly().GetName().Version; _httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("LightlessSync", ver!.Major + "." + ver!.Minor + "." + ver!.Build)); - _availableDownloadSlots = mareConfig.Current.ParallelDownloads; + _availableDownloadSlots = lightlessConfig.Current.ParallelDownloads; _downloadSemaphore = new(_availableDownloadSlots, _availableDownloadSlots); Mediator.Subscribe(this, (msg) => @@ -108,9 +108,9 @@ public class FileTransferOrchestrator : DisposableMediatorSubscriberBase { lock (_semaphoreModificationLock) { - if (_availableDownloadSlots != _mareConfig.Current.ParallelDownloads && _availableDownloadSlots == _downloadSemaphore.CurrentCount) + if (_availableDownloadSlots != _lightlessConfig.Current.ParallelDownloads && _availableDownloadSlots == _downloadSemaphore.CurrentCount) { - _availableDownloadSlots = _mareConfig.Current.ParallelDownloads; + _availableDownloadSlots = _lightlessConfig.Current.ParallelDownloads; _downloadSemaphore = new(_availableDownloadSlots, _availableDownloadSlots); } } @@ -121,13 +121,13 @@ public class FileTransferOrchestrator : DisposableMediatorSubscriberBase public long DownloadLimitPerSlot() { - var limit = _mareConfig.Current.DownloadSpeedLimitInBytes; + var limit = _lightlessConfig.Current.DownloadSpeedLimitInBytes; if (limit <= 0) return 0; - limit = _mareConfig.Current.DownloadSpeedType switch + limit = _lightlessConfig.Current.DownloadSpeedType switch { - MareConfiguration.Models.DownloadSpeeds.Bps => limit, - MareConfiguration.Models.DownloadSpeeds.KBps => limit * 1024, - MareConfiguration.Models.DownloadSpeeds.MBps => limit * 1024 * 1024, + LightlessConfiguration.Models.DownloadSpeeds.Bps => limit, + LightlessConfiguration.Models.DownloadSpeeds.KBps => limit * 1024, + LightlessConfiguration.Models.DownloadSpeeds.MBps => limit * 1024 * 1024, _ => limit, }; var currentUsedDlSlots = CurrentlyUsedDownloadSlots; diff --git a/LightlessSync/WebAPI/Files/FileUploadManager.cs b/LightlessSync/WebAPI/Files/FileUploadManager.cs index 5ddc336..3a78991 100644 --- a/LightlessSync/WebAPI/Files/FileUploadManager.cs +++ b/LightlessSync/WebAPI/Files/FileUploadManager.cs @@ -2,7 +2,7 @@ using LightlessSync.API.Dto.Files; using LightlessSync.API.Routes; using LightlessSync.FileCache; -using LightlessSync.MareConfiguration; +using LightlessSync.LightlessConfiguration; using LightlessSync.Services.Mediator; using LightlessSync.Services.ServerConfiguration; using LightlessSync.UI; @@ -16,19 +16,19 @@ namespace LightlessSync.WebAPI.Files; public sealed class FileUploadManager : DisposableMediatorSubscriberBase { private readonly FileCacheManager _fileDbManager; - private readonly MareConfigService _mareConfigService; + private readonly LightlessConfigService _lightlessConfigService; private readonly FileTransferOrchestrator _orchestrator; private readonly ServerConfigurationManager _serverManager; private readonly Dictionary _verifiedUploadedHashes = new(StringComparer.Ordinal); private CancellationTokenSource? _uploadCancellationTokenSource = new(); - public FileUploadManager(ILogger logger, MareMediator mediator, - MareConfigService mareConfigService, + public FileUploadManager(ILogger logger, LightlessMediator mediator, + LightlessConfigService lightlessConfigService, FileTransferOrchestrator orchestrator, FileCacheManager fileDbManager, ServerConfigurationManager serverManager) : base(logger, mediator) { - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; _orchestrator = orchestrator; _fileDbManager = fileDbManager; _serverManager = serverManager; @@ -181,12 +181,12 @@ public sealed class FileUploadManager : DisposableMediatorSubscriberBase try { - await UploadFileStream(compressedFile, fileHash, _mareConfigService.Current.UseAlternativeFileUpload, postProgress, uploadToken).ConfigureAwait(false); + await UploadFileStream(compressedFile, fileHash, _lightlessConfigService.Current.UseAlternativeFileUpload, postProgress, uploadToken).ConfigureAwait(false); _verifiedUploadedHashes[fileHash] = DateTime.UtcNow; } catch (Exception ex) { - if (!_mareConfigService.Current.UseAlternativeFileUpload && ex is not OperationCanceledException) + if (!_lightlessConfigService.Current.UseAlternativeFileUpload && ex is not OperationCanceledException) { Logger.LogWarning(ex, "[{hash}] Error during file upload, trying alternative file upload", fileHash); await UploadFileStream(compressedFile, fileHash, munged: true, postProgress, uploadToken).ConfigureAwait(false); diff --git a/LightlessSync/WebAPI/SignalR/ApIController.Functions.Users.cs b/LightlessSync/WebAPI/SignalR/ApIController.Functions.Users.cs index f698e6c..5f860bf 100644 --- a/LightlessSync/WebAPI/SignalR/ApIController.Functions.Users.cs +++ b/LightlessSync/WebAPI/SignalR/ApIController.Functions.Users.cs @@ -31,37 +31,37 @@ public partial class ApiController public async Task UserAddPair(UserDto user) { if (!IsConnected) return; - await _mareHub!.SendAsync(nameof(UserAddPair), user).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(UserAddPair), user).ConfigureAwait(false); } public async Task UserDelete() { CheckConnection(); - await _mareHub!.SendAsync(nameof(UserDelete)).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(UserDelete)).ConfigureAwait(false); await CreateConnectionsAsync().ConfigureAwait(false); } public async Task> UserGetOnlinePairs(CensusDataDto? censusDataDto) { - return await _mareHub!.InvokeAsync>(nameof(UserGetOnlinePairs), censusDataDto).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync>(nameof(UserGetOnlinePairs), censusDataDto).ConfigureAwait(false); } public async Task> UserGetPairedClients() { - return await _mareHub!.InvokeAsync>(nameof(UserGetPairedClients)).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync>(nameof(UserGetPairedClients)).ConfigureAwait(false); } public async Task UserGetProfile(UserDto dto) { if (!IsConnected) return new UserProfileDto(dto.User, Disabled: false, IsNSFW: null, ProfilePictureBase64: null, Description: null); - return await _mareHub!.InvokeAsync(nameof(UserGetProfile), dto).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(UserGetProfile), dto).ConfigureAwait(false); } public async Task UserPushData(UserCharaDataMessageDto dto) { try { - await _mareHub!.InvokeAsync(nameof(UserPushData), dto).ConfigureAwait(false); + await _lightlessHub!.InvokeAsync(nameof(UserPushData), dto).ConfigureAwait(false); } catch (Exception ex) { @@ -75,7 +75,7 @@ public partial class ApiController try { - await _mareHub!.InvokeAsync(nameof(SetBulkPermissions), dto).ConfigureAwait(false); + await _lightlessHub!.InvokeAsync(nameof(SetBulkPermissions), dto).ConfigureAwait(false); } catch (Exception ex) { @@ -86,7 +86,7 @@ public partial class ApiController public async Task UserRemovePair(UserDto userDto) { if (!IsConnected) return; - await _mareHub!.SendAsync(nameof(UserRemovePair), userDto).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(UserRemovePair), userDto).ConfigureAwait(false); } public async Task UserSetPairPermissions(UserPermissionsDto userPermissions) @@ -100,13 +100,13 @@ public partial class ApiController public async Task UserSetProfile(UserProfileDto userDescription) { if (!IsConnected) return; - await _mareHub!.InvokeAsync(nameof(UserSetProfile), userDescription).ConfigureAwait(false); + await _lightlessHub!.InvokeAsync(nameof(UserSetProfile), userDescription).ConfigureAwait(false); } public async Task UserUpdateDefaultPermissions(DefaultPermissionsDto defaultPermissionsDto) { CheckConnection(); - await _mareHub!.InvokeAsync(nameof(UserUpdateDefaultPermissions), defaultPermissionsDto).ConfigureAwait(false); + await _lightlessHub!.InvokeAsync(nameof(UserUpdateDefaultPermissions), defaultPermissionsDto).ConfigureAwait(false); } private async Task PushCharacterDataInternal(CharacterData character, List visibleCharacters) diff --git a/LightlessSync/WebAPI/SignalR/ApiController.Functions.Callbacks.cs b/LightlessSync/WebAPI/SignalR/ApiController.Functions.Callbacks.cs index 66f97ed..3454759 100644 --- a/LightlessSync/WebAPI/SignalR/ApiController.Functions.Callbacks.cs +++ b/LightlessSync/WebAPI/SignalR/ApiController.Functions.Callbacks.cs @@ -4,7 +4,7 @@ using LightlessSync.API.Dto; using LightlessSync.API.Dto.CharaData; using LightlessSync.API.Dto.Group; using LightlessSync.API.Dto.User; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.Services.Mediator; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Extensions.Logging; @@ -227,163 +227,163 @@ public partial class ApiController public void OnDownloadReady(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_DownloadReady), act); + _lightlessHub!.On(nameof(Client_DownloadReady), act); } public void OnGroupChangePermissions(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GroupChangePermissions), act); + _lightlessHub!.On(nameof(Client_GroupChangePermissions), act); } public void OnGroupChangeUserPairPermissions(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GroupChangeUserPairPermissions), act); + _lightlessHub!.On(nameof(Client_GroupChangeUserPairPermissions), act); } public void OnGroupDelete(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GroupDelete), act); + _lightlessHub!.On(nameof(Client_GroupDelete), act); } public void OnGroupPairChangeUserInfo(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GroupPairChangeUserInfo), act); + _lightlessHub!.On(nameof(Client_GroupPairChangeUserInfo), act); } public void OnGroupPairJoined(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GroupPairJoined), act); + _lightlessHub!.On(nameof(Client_GroupPairJoined), act); } public void OnGroupPairLeft(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GroupPairLeft), act); + _lightlessHub!.On(nameof(Client_GroupPairLeft), act); } public void OnGroupSendFullInfo(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GroupSendFullInfo), act); + _lightlessHub!.On(nameof(Client_GroupSendFullInfo), act); } public void OnGroupSendInfo(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GroupSendInfo), act); + _lightlessHub!.On(nameof(Client_GroupSendInfo), act); } public void OnReceiveServerMessage(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_ReceiveServerMessage), act); + _lightlessHub!.On(nameof(Client_ReceiveServerMessage), act); } public void OnUpdateSystemInfo(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_UpdateSystemInfo), act); + _lightlessHub!.On(nameof(Client_UpdateSystemInfo), act); } public void OnUpdateUserIndividualPairStatusDto(Action action) { if (_initialized) return; - _mareHub!.On(nameof(Client_UpdateUserIndividualPairStatusDto), action); + _lightlessHub!.On(nameof(Client_UpdateUserIndividualPairStatusDto), action); } public void OnUserAddClientPair(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_UserAddClientPair), act); + _lightlessHub!.On(nameof(Client_UserAddClientPair), act); } public void OnUserDefaultPermissionUpdate(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_UserUpdateDefaultPermissions), act); + _lightlessHub!.On(nameof(Client_UserUpdateDefaultPermissions), act); } public void OnUserReceiveCharacterData(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_UserReceiveCharacterData), act); + _lightlessHub!.On(nameof(Client_UserReceiveCharacterData), act); } public void OnUserReceiveUploadStatus(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_UserReceiveUploadStatus), act); + _lightlessHub!.On(nameof(Client_UserReceiveUploadStatus), act); } public void OnUserRemoveClientPair(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_UserRemoveClientPair), act); + _lightlessHub!.On(nameof(Client_UserRemoveClientPair), act); } public void OnUserSendOffline(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_UserSendOffline), act); + _lightlessHub!.On(nameof(Client_UserSendOffline), act); } public void OnUserSendOnline(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_UserSendOnline), act); + _lightlessHub!.On(nameof(Client_UserSendOnline), act); } public void OnUserUpdateOtherPairPermissions(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_UserUpdateOtherPairPermissions), act); + _lightlessHub!.On(nameof(Client_UserUpdateOtherPairPermissions), act); } public void OnUserUpdateProfile(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_UserUpdateProfile), act); + _lightlessHub!.On(nameof(Client_UserUpdateProfile), act); } public void OnUserUpdateSelfPairPermissions(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_UserUpdateSelfPairPermissions), act); + _lightlessHub!.On(nameof(Client_UserUpdateSelfPairPermissions), act); } public void OnGposeLobbyJoin(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GposeLobbyJoin), act); + _lightlessHub!.On(nameof(Client_GposeLobbyJoin), act); } public void OnGposeLobbyLeave(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GposeLobbyLeave), act); + _lightlessHub!.On(nameof(Client_GposeLobbyLeave), act); } public void OnGposeLobbyPushCharacterData(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GposeLobbyPushCharacterData), act); + _lightlessHub!.On(nameof(Client_GposeLobbyPushCharacterData), act); } public void OnGposeLobbyPushPoseData(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GposeLobbyPushPoseData), act); + _lightlessHub!.On(nameof(Client_GposeLobbyPushPoseData), act); } public void OnGposeLobbyPushWorldData(Action act) { if (_initialized) return; - _mareHub!.On(nameof(Client_GposeLobbyPushWorldData), act); + _lightlessHub!.On(nameof(Client_GposeLobbyPushWorldData), act); } private void ExecuteSafely(Action act) diff --git a/LightlessSync/WebAPI/SignalR/ApiController.Functions.CharaData.cs b/LightlessSync/WebAPI/SignalR/ApiController.Functions.CharaData.cs index 8731cb0..092ce62 100644 --- a/LightlessSync/WebAPI/SignalR/ApiController.Functions.CharaData.cs +++ b/LightlessSync/WebAPI/SignalR/ApiController.Functions.CharaData.cs @@ -14,7 +14,7 @@ public partial class ApiController try { Logger.LogDebug("Creating new Character Data"); - return await _mareHub!.InvokeAsync(nameof(CharaDataCreate)).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(CharaDataCreate)).ConfigureAwait(false); } catch (Exception ex) { @@ -30,7 +30,7 @@ public partial class ApiController try { Logger.LogDebug("Updating chara data for {id}", updateDto.Id); - return await _mareHub!.InvokeAsync(nameof(CharaDataUpdate), updateDto).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(CharaDataUpdate), updateDto).ConfigureAwait(false); } catch (Exception ex) { @@ -46,7 +46,7 @@ public partial class ApiController try { Logger.LogDebug("Deleting chara data for {id}", id); - return await _mareHub!.InvokeAsync(nameof(CharaDataDelete), id).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(CharaDataDelete), id).ConfigureAwait(false); } catch (Exception ex) { @@ -62,7 +62,7 @@ public partial class ApiController try { Logger.LogDebug("Getting metainfo for chara data {id}", id); - return await _mareHub!.InvokeAsync(nameof(CharaDataGetMetainfo), id).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(CharaDataGetMetainfo), id).ConfigureAwait(false); } catch (Exception ex) { @@ -78,7 +78,7 @@ public partial class ApiController try { Logger.LogDebug("Attempting to restore chara data {id}", id); - return await _mareHub!.InvokeAsync(nameof(CharaDataAttemptRestore), id).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(CharaDataAttemptRestore), id).ConfigureAwait(false); } catch (Exception ex) { @@ -94,7 +94,7 @@ public partial class ApiController try { Logger.LogDebug("Getting all own chara data"); - return await _mareHub!.InvokeAsync>(nameof(CharaDataGetOwn)).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync>(nameof(CharaDataGetOwn)).ConfigureAwait(false); } catch (Exception ex) { @@ -110,7 +110,7 @@ public partial class ApiController try { Logger.LogDebug("Getting all own chara data"); - return await _mareHub!.InvokeAsync>(nameof(CharaDataGetShared)).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync>(nameof(CharaDataGetShared)).ConfigureAwait(false); } catch (Exception ex) { @@ -126,7 +126,7 @@ public partial class ApiController try { Logger.LogDebug("Getting download chara data for {id}", id); - return await _mareHub!.InvokeAsync(nameof(CharaDataDownload), id).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(CharaDataDownload), id).ConfigureAwait(false); } catch (Exception ex) { @@ -142,7 +142,7 @@ public partial class ApiController try { Logger.LogDebug("Creating GPose Lobby"); - return await _mareHub!.InvokeAsync(nameof(GposeLobbyCreate)).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(GposeLobbyCreate)).ConfigureAwait(false); } catch (Exception ex) { @@ -158,7 +158,7 @@ public partial class ApiController try { Logger.LogDebug("Leaving current GPose Lobby"); - return await _mareHub!.InvokeAsync(nameof(GposeLobbyLeave)).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(GposeLobbyLeave)).ConfigureAwait(false); } catch (Exception ex) { @@ -174,7 +174,7 @@ public partial class ApiController try { Logger.LogDebug("Joining GPose Lobby {id}", lobbyId); - return await _mareHub!.InvokeAsync>(nameof(GposeLobbyJoin), lobbyId).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync>(nameof(GposeLobbyJoin), lobbyId).ConfigureAwait(false); } catch (Exception ex) { @@ -190,7 +190,7 @@ public partial class ApiController try { Logger.LogDebug("Sending Chara Data to GPose Lobby"); - await _mareHub!.InvokeAsync(nameof(GposeLobbyPushCharacterData), charaDownloadDto).ConfigureAwait(false); + await _lightlessHub!.InvokeAsync(nameof(GposeLobbyPushCharacterData), charaDownloadDto).ConfigureAwait(false); } catch (Exception ex) { @@ -205,7 +205,7 @@ public partial class ApiController try { Logger.LogDebug("Sending Pose Data to GPose Lobby"); - await _mareHub!.InvokeAsync(nameof(GposeLobbyPushPoseData), poseData).ConfigureAwait(false); + await _lightlessHub!.InvokeAsync(nameof(GposeLobbyPushPoseData), poseData).ConfigureAwait(false); } catch (Exception ex) { @@ -219,7 +219,7 @@ public partial class ApiController try { - await _mareHub!.InvokeAsync(nameof(GposeLobbyPushWorldData), worldData).ConfigureAwait(false); + await _lightlessHub!.InvokeAsync(nameof(GposeLobbyPushWorldData), worldData).ConfigureAwait(false); } catch (Exception ex) { diff --git a/LightlessSync/WebAPI/SignalR/ApiController.Functions.Groups.cs b/LightlessSync/WebAPI/SignalR/ApiController.Functions.Groups.cs index 9017287..6b7c785 100644 --- a/LightlessSync/WebAPI/SignalR/ApiController.Functions.Groups.cs +++ b/LightlessSync/WebAPI/SignalR/ApiController.Functions.Groups.cs @@ -9,13 +9,13 @@ public partial class ApiController public async Task GroupBanUser(GroupPairDto dto, string reason) { CheckConnection(); - await _mareHub!.SendAsync(nameof(GroupBanUser), dto, reason).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(GroupBanUser), dto, reason).ConfigureAwait(false); } public async Task GroupChangeGroupPermissionState(GroupPermissionDto dto) { CheckConnection(); - await _mareHub!.SendAsync(nameof(GroupChangeGroupPermissionState), dto).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(GroupChangeGroupPermissionState), dto).ConfigureAwait(false); } public async Task GroupChangeIndividualPermissionState(GroupPairUserPermissionDto dto) @@ -30,91 +30,91 @@ public partial class ApiController public async Task GroupChangeOwnership(GroupPairDto groupPair) { CheckConnection(); - await _mareHub!.SendAsync(nameof(GroupChangeOwnership), groupPair).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(GroupChangeOwnership), groupPair).ConfigureAwait(false); } public async Task GroupChangePassword(GroupPasswordDto groupPassword) { CheckConnection(); - return await _mareHub!.InvokeAsync(nameof(GroupChangePassword), groupPassword).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(GroupChangePassword), groupPassword).ConfigureAwait(false); } public async Task GroupClear(GroupDto group) { CheckConnection(); - await _mareHub!.SendAsync(nameof(GroupClear), group).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(GroupClear), group).ConfigureAwait(false); } public async Task GroupCreate() { CheckConnection(); - return await _mareHub!.InvokeAsync(nameof(GroupCreate)).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(GroupCreate)).ConfigureAwait(false); } public async Task> GroupCreateTempInvite(GroupDto group, int amount) { CheckConnection(); - return await _mareHub!.InvokeAsync>(nameof(GroupCreateTempInvite), group, amount).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync>(nameof(GroupCreateTempInvite), group, amount).ConfigureAwait(false); } public async Task GroupDelete(GroupDto group) { CheckConnection(); - await _mareHub!.SendAsync(nameof(GroupDelete), group).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(GroupDelete), group).ConfigureAwait(false); } public async Task> GroupGetBannedUsers(GroupDto group) { CheckConnection(); - return await _mareHub!.InvokeAsync>(nameof(GroupGetBannedUsers), group).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync>(nameof(GroupGetBannedUsers), group).ConfigureAwait(false); } public async Task GroupJoin(GroupPasswordDto passwordedGroup) { CheckConnection(); - return await _mareHub!.InvokeAsync(nameof(GroupJoin), passwordedGroup).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(GroupJoin), passwordedGroup).ConfigureAwait(false); } public async Task GroupJoinFinalize(GroupJoinDto passwordedGroup) { CheckConnection(); - return await _mareHub!.InvokeAsync(nameof(GroupJoinFinalize), passwordedGroup).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(GroupJoinFinalize), passwordedGroup).ConfigureAwait(false); } public async Task GroupLeave(GroupDto group) { CheckConnection(); - await _mareHub!.SendAsync(nameof(GroupLeave), group).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(GroupLeave), group).ConfigureAwait(false); } public async Task GroupRemoveUser(GroupPairDto groupPair) { CheckConnection(); - await _mareHub!.SendAsync(nameof(GroupRemoveUser), groupPair).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(GroupRemoveUser), groupPair).ConfigureAwait(false); } public async Task GroupSetUserInfo(GroupPairUserInfoDto groupPair) { CheckConnection(); - await _mareHub!.SendAsync(nameof(GroupSetUserInfo), groupPair).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(GroupSetUserInfo), groupPair).ConfigureAwait(false); } public async Task GroupPrune(GroupDto group, int days, bool execute) { CheckConnection(); - return await _mareHub!.InvokeAsync(nameof(GroupPrune), group, days, execute).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(GroupPrune), group, days, execute).ConfigureAwait(false); } public async Task> GroupsGetAll() { CheckConnection(); - return await _mareHub!.InvokeAsync>(nameof(GroupsGetAll)).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync>(nameof(GroupsGetAll)).ConfigureAwait(false); } public async Task GroupUnbanUser(GroupPairDto groupPair) { CheckConnection(); - await _mareHub!.SendAsync(nameof(GroupUnbanUser), groupPair).ConfigureAwait(false); + await _lightlessHub!.SendAsync(nameof(GroupUnbanUser), groupPair).ConfigureAwait(false); } private void CheckConnection() diff --git a/LightlessSync/WebAPI/SignalR/ApiController.cs b/LightlessSync/WebAPI/SignalR/ApiController.cs index a5dfbff..8f569a6 100644 --- a/LightlessSync/WebAPI/SignalR/ApiController.cs +++ b/LightlessSync/WebAPI/SignalR/ApiController.cs @@ -4,8 +4,8 @@ using LightlessSync.API.Data.Extensions; using LightlessSync.API.Dto; using LightlessSync.API.Dto.User; using LightlessSync.API.SignalR; -using LightlessSync.MareConfiguration; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.PlayerData.Pairs; using LightlessSync.Services; using LightlessSync.Services.Mediator; @@ -29,34 +29,34 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL private readonly PairManager _pairManager; private readonly ServerConfigurationManager _serverManager; private readonly TokenProvider _tokenProvider; - private readonly MareConfigService _mareConfigService; + private readonly LightlessConfigService _lightlessConfigService; private CancellationTokenSource _connectionCancellationTokenSource; private ConnectionDto? _connectionDto; private bool _doNotNotifyOnNextInfo = false; private CancellationTokenSource? _healthCheckTokenSource = new(); private bool _initialized; private string? _lastUsedToken; - private HubConnection? _mareHub; + private HubConnection? _lightlessHub; private ServerState _serverState; private CensusUpdateMessage? _lastCensus; public ApiController(ILogger logger, HubFactory hubFactory, DalamudUtilService dalamudUtil, - PairManager pairManager, ServerConfigurationManager serverManager, MareMediator mediator, - TokenProvider tokenProvider, MareConfigService mareConfigService) : base(logger, mediator) + PairManager pairManager, ServerConfigurationManager serverManager, LightlessMediator mediator, + TokenProvider tokenProvider, LightlessConfigService lightlessConfigService) : base(logger, mediator) { _hubFactory = hubFactory; _dalamudUtil = dalamudUtil; _pairManager = pairManager; _serverManager = serverManager; _tokenProvider = tokenProvider; - _mareConfigService = mareConfigService; + _lightlessConfigService = lightlessConfigService; _connectionCancellationTokenSource = new CancellationTokenSource(); Mediator.Subscribe(this, (_) => DalamudUtilOnLogIn()); Mediator.Subscribe(this, (_) => DalamudUtilOnLogOut()); - Mediator.Subscribe(this, (msg) => MareHubOnClosed(msg.Exception)); - Mediator.Subscribe(this, (msg) => _ = MareHubOnReconnectedAsync()); - Mediator.Subscribe(this, (msg) => MareHubOnReconnecting(msg.Exception)); + Mediator.Subscribe(this, (msg) => LightlessHubOnClosed(msg.Exception)); + Mediator.Subscribe(this, (msg) => _ = LightlessHubOnReconnectedAsync()); + Mediator.Subscribe(this, (msg) => LightlessHubOnReconnecting(msg.Exception)); Mediator.Subscribe(this, (msg) => _ = CyclePauseAsync(msg.UserData)); Mediator.Subscribe(this, (msg) => _lastCensus = msg); Mediator.Subscribe(this, (msg) => _ = PauseAsync(msg.UserData)); @@ -102,7 +102,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL public async Task CheckClientHealth() { - return await _mareHub!.InvokeAsync(nameof(CheckClientHealth)).ConfigureAwait(false); + return await _lightlessHub!.InvokeAsync(nameof(CheckClientHealth)).ConfigureAwait(false); } public async Task CreateConnectionsAsync() @@ -134,7 +134,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL { Logger.LogWarning("Multiple secret keys for current character"); _connectionDto = null; - Mediator.Publish(new NotificationMessage("Multiple Identical Characters detected", "Your Service configuration has multiple characters with the same name and world set up. Delete the duplicates in the character management to be able to connect to Mare.", + Mediator.Publish(new NotificationMessage("Multiple Identical Characters detected", "Your Service configuration has multiple characters with the same name and world set up. Delete the duplicates in the character management to be able to connect to Lightless.", NotificationType.Error)); await StopConnectionAsync(ServerState.MultiChara).ConfigureAwait(false); _connectionCancellationTokenSource?.Cancel(); @@ -157,7 +157,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL { Logger.LogWarning("Multiple secret keys for current character"); _connectionDto = null; - Mediator.Publish(new NotificationMessage("Multiple Identical Characters detected", "Your Service configuration has multiple characters with the same name and world set up. Delete the duplicates in the character management to be able to connect to Mare.", + Mediator.Publish(new NotificationMessage("Multiple Identical Characters detected", "Your Service configuration has multiple characters with the same name and world set up. Delete the duplicates in the character management to be able to connect to Lightless.", NotificationType.Error)); await StopConnectionAsync(ServerState.MultiChara).ConfigureAwait(false); _connectionCancellationTokenSource?.Cancel(); @@ -222,10 +222,10 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL if (token.IsCancellationRequested) break; - _mareHub = _hubFactory.GetOrCreate(token); + _lightlessHub = _hubFactory.GetOrCreate(token); InitializeApiHooks(); - await _mareHub.StartAsync(token).ConfigureAwait(false); + await _lightlessHub.StartAsync(token).ConfigureAwait(false); _connectionDto = await GetConnectionDto().ConfigureAwait(false); @@ -259,7 +259,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL if (_dalamudUtil.HasModifiedGameFiles) { Logger.LogError("Detected modified game files on connection"); - if (!_mareConfigService.Current.DebugStopWhining) + if (!_lightlessConfigService.Current.DebugStopWhining) Mediator.Publish(new NotificationMessage("Modified Game Files detected", "Dalamud is reporting your FFXIV installation has modified game files. Any mods installed through TexTools will produce this message. " + "Lightless Sync, Penumbra, and some other plugins assume your FFXIV installation is unmodified in order to work. " + @@ -272,11 +272,11 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL { _naggedAboutLod = true; Logger.LogWarning("Model LOD is enabled during connection"); - if (!_mareConfigService.Current.DebugStopWhining) + if (!_lightlessConfigService.Current.DebugStopWhining) { Mediator.Publish(new NotificationMessage("Model LOD is enabled", "You have \"Use low-detail models on distant objects (LOD)\" enabled. Having model LOD enabled is known to be a reason to cause " + - "random crashes when loading in or rendering modded pairs. Disabling LOD has a very low performance impact. Disable LOD while using Mare: " + + "random crashes when loading in or rendering modded pairs. Disabling LOD has a very low performance impact. Disable LOD while using Lightless: " + "Go to XIV Menu -> System Configuration -> Graphics Settings and disable the model LOD option.", NotificationType.Warning, TimeSpan.FromSeconds(15))); } } @@ -361,7 +361,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL public async Task GetConnectionDtoAsync(bool publishConnected) { - var dto = await _mareHub!.InvokeAsync(nameof(GetConnectionDto)).ConfigureAwait(false); + var dto = await _lightlessHub!.InvokeAsync(nameof(GetConnectionDto)).ConfigureAwait(false); if (publishConnected) Mediator.Publish(new ConnectedMessage(dto)); return dto; } @@ -377,7 +377,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL private async Task ClientHealthCheckAsync(CancellationToken ct) { - while (!ct.IsCancellationRequested && _mareHub != null) + while (!ct.IsCancellationRequested && _lightlessHub != null) { await Task.Delay(TimeSpan.FromSeconds(30), ct).ConfigureAwait(false); Logger.LogDebug("Checking Client Health State"); @@ -415,7 +415,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL private void InitializeApiHooks() { - if (_mareHub == null) return; + if (_lightlessHub == null) return; Logger.LogDebug("Initializing data"); OnDownloadReady((guid) => _ = Client_DownloadReady(guid)); @@ -489,7 +489,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL } } - private void MareHubOnClosed(Exception? arg) + private void LightlessHubOnClosed(Exception? arg) { _healthCheckTokenSource?.Cancel(); Mediator.Publish(new DisconnectedMessage()); @@ -504,7 +504,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL } } - private async Task MareHubOnReconnectedAsync() + private async Task LightlessHubOnReconnectedAsync() { ServerState = ServerState.Reconnecting; try @@ -528,7 +528,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL } } - private void MareHubOnReconnecting(Exception? arg) + private void LightlessHubOnReconnecting(Exception? arg) { _doNotNotifyOnNextInfo = true; _healthCheckTokenSource?.Cancel(); @@ -578,7 +578,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL Logger.LogInformation("Stopping existing connection"); await _hubFactory.DisposeHubAsync().ConfigureAwait(false); - if (_mareHub is not null) + if (_lightlessHub is not null) { Mediator.Publish(new EventMessage(new Services.Events.Event(nameof(ApiController), Services.Events.EventSeverity.Informational, $"Stopping existing connection to {_serverManager.CurrentServer.ServerName}"))); @@ -586,7 +586,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IL _initialized = false; _healthCheckTokenSource?.Cancel(); Mediator.Publish(new DisconnectedMessage()); - _mareHub = null; + _lightlessHub = null; _connectionDto = null; } diff --git a/LightlessSync/WebAPI/SignalR/HubFactory.cs b/LightlessSync/WebAPI/SignalR/HubFactory.cs index bd7d035..ef9f919 100644 --- a/LightlessSync/WebAPI/SignalR/HubFactory.cs +++ b/LightlessSync/WebAPI/SignalR/HubFactory.cs @@ -21,7 +21,7 @@ public class HubFactory : MediatorSubscriberBase private bool _isDisposed = false; private readonly bool _isWine = false; - public HubFactory(ILogger logger, MareMediator mediator, + public HubFactory(ILogger logger, LightlessMediator mediator, ServerConfigurationManager serverConfigurationManager, TokenProvider tokenProvider, ILoggerProvider pluginLog, DalamudUtilService dalamudUtilService) : base(logger, mediator) diff --git a/LightlessSync/WebAPI/SignalR/TokenProvider.cs b/LightlessSync/WebAPI/SignalR/TokenProvider.cs index cc4ee60..fa23363 100644 --- a/LightlessSync/WebAPI/SignalR/TokenProvider.cs +++ b/LightlessSync/WebAPI/SignalR/TokenProvider.cs @@ -1,5 +1,5 @@ using LightlessSync.API.Routes; -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.Services; using LightlessSync.Services.Mediator; using LightlessSync.Services.ServerConfiguration; @@ -20,13 +20,13 @@ public sealed class TokenProvider : IDisposable, IMediatorSubscriber private readonly ServerConfigurationManager _serverManager; private readonly ConcurrentDictionary _tokenCache = new(); - public TokenProvider(ILogger logger, ServerConfigurationManager serverManager, DalamudUtilService dalamudUtil, MareMediator mareMediator, HttpClient httpClient) + public TokenProvider(ILogger logger, ServerConfigurationManager serverManager, DalamudUtilService dalamudUtil, LightlessMediator lightlessMediator, HttpClient httpClient) { _logger = logger; _serverManager = serverManager; _dalamudUtil = dalamudUtil; var ver = Assembly.GetExecutingAssembly().GetName().Version; - Mediator = mareMediator; + Mediator = lightlessMediator; _httpClient = httpClient; Mediator.Subscribe(this, (_) => { @@ -40,7 +40,7 @@ public sealed class TokenProvider : IDisposable, IMediatorSubscriber }); } - public MareMediator Mediator { get; } + public LightlessMediator Mediator { get; } private JwtIdentifier? _lastJwtIdentifier; @@ -115,10 +115,10 @@ public sealed class TokenProvider : IDisposable, IMediatorSubscriber if (ex.StatusCode == System.Net.HttpStatusCode.Unauthorized) { if (isRenewal) - Mediator.Publish(new NotificationMessage("Error refreshing token", "Your authentication token could not be renewed. Try reconnecting to Mare manually.", + Mediator.Publish(new NotificationMessage("Error refreshing token", "Your authentication token could not be renewed. Try reconnecting to Lightless manually.", NotificationType.Error)); else - Mediator.Publish(new NotificationMessage("Error generating token", "Your authentication token could not be generated. Check Mares Main UI (/light in chat) to see the error message.", + Mediator.Publish(new NotificationMessage("Error generating token", "Your authentication token could not be generated. Check Lightless Main UI (/light in chat) to see the error message.", NotificationType.Error)); Mediator.Publish(new DisconnectedMessage()); throw new LightlessAuthFailureException(response); @@ -139,7 +139,7 @@ public sealed class TokenProvider : IDisposable, IMediatorSubscriber { _tokenCache.TryRemove(identifier, out _); Mediator.Publish(new NotificationMessage("Invalid system clock", "The clock of your computer is invalid. " + - "Mare will not function properly if the time zone is not set correctly. " + + "Lightless will not function properly if the time zone is not set correctly. " + "Please set your computers time zone correctly and keep your clock synchronized with the internet.", NotificationType.Error)); throw new InvalidOperationException($"JwtToken is behind DateTime.UtcNow, DateTime.UtcNow is possibly wrong. DateTime.UtcNow is {DateTime.UtcNow}, JwtToken.ValidTo is {jwtToken.ValidTo}"); diff --git a/LightlessSync/WebAPI/SignalR/Utils/ForeverRetryPolicy.cs b/LightlessSync/WebAPI/SignalR/Utils/ForeverRetryPolicy.cs index 0f97046..21bee7c 100644 --- a/LightlessSync/WebAPI/SignalR/Utils/ForeverRetryPolicy.cs +++ b/LightlessSync/WebAPI/SignalR/Utils/ForeverRetryPolicy.cs @@ -1,4 +1,4 @@ -using LightlessSync.MareConfiguration.Models; +using LightlessSync.LightlessConfiguration.Models; using LightlessSync.Services.Mediator; using Microsoft.AspNetCore.SignalR.Client; @@ -6,10 +6,10 @@ namespace LightlessSync.WebAPI.SignalR.Utils; public class ForeverRetryPolicy : IRetryPolicy { - private readonly MareMediator _mediator; + private readonly LightlessMediator _mediator; private bool _sentDisconnected = false; - public ForeverRetryPolicy(MareMediator mediator) + public ForeverRetryPolicy(LightlessMediator mediator) { _mediator = mediator; }